diff --git a/API-CHANGES-0.10.md b/API-CHANGES-0.10.md
new file mode 100644
--- /dev/null
+++ b/API-CHANGES-0.10.md
@@ -0,0 +1,4970 @@
+# jsaddle-dom / ghcjs-dom 0.10 API changes
+
+Generated by `dom-gen apidiff` from the 0.9.9.3 baseline. Inputs: webref and browser-compat-data as pinned in `dom-gen/inputs.nix`.
+
+## Removed JavaScript members
+
+Members of the old bindings that the new ones do not bind, by interface.
+*not in specs*: no current specification defines it (often WebKit-only or
+removed from the web platform). *support*: it is in a specification but
+ships in fewer than two engines (the engines listed have it).
+
+| | interfaces | members |
+|---|---:|---:|
+| interface not in specs | 158 | 796 |
+| interface filtered by support | 0 | 0 |
+| member not in specs | | 375 |
+| member filtered by support | | 2 |
+
+### Interfaces renamed
+
+* `ANGLEInstancedArrays` → `ANGLE_instanced_arrays`
+* `EXTBlendMinMax` → `EXT_blend_minmax`
+* `EXTTextureFilterAnisotropic` → `EXT_texture_filter_anisotropic`
+* `EXTsRGB` → `EXT_sRGB`
+* `OESStandardDerivatives` → `OES_standard_derivatives`
+* `OESTextureHalfFloat` → `OES_texture_half_float`
+* `OESVertexArrayObject` → `OES_vertex_array_object`
+* `WebGLCompressedTexturePVRTC` → `WEBGL_compressed_texture_pvrtc`
+* `WebGLCompressedTextureS3TC` → `WEBGL_compressed_texture_s3tc`
+* `WebGLDebugRendererInfo` → `WEBGL_debug_renderer_info`
+* `WebGLDebugShaders` → `WEBGL_debug_shaders`
+* `WebGLDepthTexture` → `WEBGL_depth_texture`
+* `WebGLDrawBuffers` → `WEBGL_draw_buffers`
+* `WebGLLoseContext` → `WEBGL_lose_context`
+
+### Interfaces not in current specs
+
+`ApplePayError`, `ApplePayPaymentAuthorizedEvent`, `ApplePayPaymentMethodSelectedEvent`, `ApplePaySession`, `ApplePayShippingContactSelectedEvent`, `ApplePayShippingMethodSelectedEvent`, `ApplePayValidateMerchantEvent`, `ApplicationCache`, `AudioBufferCallback`, `AutocompleteErrorEvent`, `BasicCredential`, `BeforeLoadEvent`, `CSSFontFaceLoadEvent`, `CSSPrimitiveValue`, `CSSValue`, `CSSValueList`, `CommandLineAPIHost`, `Coordinates`, `Counter`, `DOMError`, `DOMNamedFlowCollection`, `Database`, `DatabaseCallback`, `DeviceProximityEvent`, `DocumentAndElementEventHandlers`, `FileError`, `FileException`, `Geoposition`, `GlobalCrypto`, `GlobalPerformance`, `HTMLAppletElement`, `HTMLAttachmentElement`, `HTMLDocument`, `HTMLKeygenElement`, `InspectorFrontendHost`, `MediaController`, `MediaControlsHost`, `MediaQueryListListener`, `MediaRemoteControls`, `MediaStreamEvent`, `MutationEvent`, `NavigatorUserMediaError`, `NavigatorUserMediaErrorCallback`, `NavigatorUserMediaSuccessCallback`, `OverconstrainedErrorEvent`, `OverflowEvent`, `PositionError`, `QuickTimePluginReplacement`, `RGBColor`, `RTCIceCandidateEvent`, `ReadableStreamSource`, `Rect`, `RequestAnimationFrameCallback`, `SQLError`, `SQLException`, `SQLResultSet`, `SQLResultSetRowList`, `SQLStatementCallback`, `SQLStatementErrorCallback`, `SQLTransaction`, `SQLTransactionCallback`, `SQLTransactionErrorCallback`, `SVGAltGlyphElement`, `SVGCursorElement`, `SVGException`, `SVGExternalResourcesRequired`, `SVGGlyphRefElement`, `SVGMatrix`, `SVGPathSeg`, `SVGPathSegArcAbs`, `SVGPathSegArcRel`, `SVGPathSegCurvetoCubicAbs`, `SVGPathSegCurvetoCubicRel`, `SVGPathSegCurvetoCubicSmoothAbs`, `SVGPathSegCurvetoCubicSmoothRel`, `SVGPathSegCurvetoQuadraticAbs`, `SVGPathSegCurvetoQuadraticRel`, `SVGPathSegCurvetoQuadraticSmoothAbs`, `SVGPathSegCurvetoQuadraticSmoothRel`, `SVGPathSegLinetoAbs`, `SVGPathSegLinetoHorizontalAbs`, `SVGPathSegLinetoHorizontalRel`, `SVGPathSegLinetoRel`, `SVGPathSegLinetoVerticalAbs`, `SVGPathSegLinetoVerticalRel`, `SVGPathSegList`, `SVGPathSegMovetoAbs`, `SVGPathSegMovetoRel`, `SVGPoint`, `SVGRect`, `SVGRenderingIntent`, `SVGViewSpec`, `SVGZoomAndPan`, `SVGZoomEvent`, `SiteBoundCredential`, `Slotable`, `StorageErrorCallback`, `StorageInfo`, `StorageQuota`, `StorageQuotaCallback`, `StorageUsageCallback`, `StringCallback`, `StyleMedia`, `UserMessageHandler`, `VTTRegionList`, `VoidCallback`, `WebGLCompressedTextureATC`, `WebGPUBuffer`, `WebGPUCommandBuffer`, `WebGPUCommandQueue`, `WebGPUComputeCommandEncoder`, `WebGPUDepthStencilDescriptor`, `WebGPUDepthStencilState`, `WebGPUDrawable`, `WebGPUFunction`, `WebGPULibrary`, `WebGPURenderCommandEncoder`, `WebGPURenderPassAttachmentDescriptor`, `WebGPURenderPassColorAttachmentDescriptor`, `WebGPURenderPassDepthAttachmentDescriptor`, `WebGPURenderPassDescriptor`, `WebGPURenderPipelineColorAttachmentDescriptor`, `WebGPURenderPipelineDescriptor`, `WebGPURenderPipelineState`, `WebGPURenderingContext`, `WebGPUTexture`, `WebGPUTextureDescriptor`, `WebKitAnimationEvent`, `WebKitCSSMatrix`, `WebKitCSSRegionRule`, `WebKitCSSViewportRule`, `WebKitMediaKeyError`, `WebKitMediaKeyMessageEvent`, `WebKitMediaKeyNeededEvent`, `WebKitMediaKeySession`, `WebKitMediaKeys`, `WebKitNamedFlow`, `WebKitNamespace`, `WebKitPlaybackTargetAvailabilityEvent`, `WebKitPoint`, `WebKitSubtleCrypto`, `WebKitTransitionEvent`, `XMLHttpRequestProgressEvent`, `XPathException`
+
+### Interfaces filtered by browser support
+
+
+### Members removed from interfaces that remain
+
+* `AudioBuffer`: `gain`
+* `AudioBufferSourceNode`: `FINISHED_STATE`, `PLAYING_STATE`, `SCHEDULED_STATE`, `UNSCHEDULED_STATE`, `gain`, `playbackState`
+* `AudioContext`: `activeSourceCount`, `startRendering`
+* `AudioListener`: `dopplerFactor`, `setVelocity`, `speedOfSound`
+* `AudioParam`: `name`, `units`
+* `AudioTrackList`: `item`
+* `CSSKeyframesRule`: `get`, `insertRule`
+* `CSSRule`: `UNKNOWN_RULE`, `WEBKIT_KEYFRAMES_RULE`, `WEBKIT_KEYFRAME_RULE`, `WEBKIT_REGION_RULE`, `WEBKIT_VIEWPORT_RULE`
+* `CSSStyleDeclaration`: `getPropertyCSSValue`, `getPropertyShorthand`, `isPropertyImplicit`
+* `CanvasRenderingContext2D`: `clearShadow`, `commit`, `drawImageFromRect`, `setAlpha`, `setCompositeOperation`, `setFillColor`, `setLineCap`, `setLineJoin`, `setLineWidth`, `setMiterLimit`, `setShadow`, `setStrokeColor`, `webkitBackingStorePixelRatio`, `webkitGetImageDataHD`, `webkitImageSmoothingEnabled`, `webkitLineDash`, `webkitLineDashOffset`, `webkitPutImageDataHD`
+* `Crypto`: `webkitSubtle`
+* `DOMException`: `toString`
+* `DataCue`: `data`
+* `DataTransferItemList`: `item`
+* `DeviceMotionEvent`: `initDeviceMotionEvent`
+* `DeviceOrientationEvent`: `initDeviceOrientationEvent`
+* `Document`: `caretRangeFromPoint`, `createTouch`, `createTouchList`, `getCSSCanvasContext`, `getOverrideStyle`, `onwebkitfullscreenchange`, `onwebkitfullscreenerror`, `origin`, `preferredStylesheetSet`, `selectedStylesheetSet`, `webkitCancelFullScreen`, `webkitCurrentFullScreenElement`, `webkitExitFullscreen`, `webkitFullScreenKeyboardInputAllowed`, `webkitFullscreenElement`, `webkitFullscreenEnabled`, `webkitGetNamedFlows`, `webkitIsFullScreen`, `xmlEncoding`, `xmlStandalone`, `xmlVersion`
+* `DocumentOrShadowRoot`: `elementFromPoint`
+* `Element`: `onbeforeload`, `ongesturechange`, `ongestureend`, `ongesturestart`, `onwebkitanimationend`, `onwebkitanimationiteration`, `onwebkitanimationstart`, `onwebkitcurrentplaybacktargetiswirelesschanged`, `onwebkitfullscreenchange`, `onwebkitfullscreenerror`, `onwebkitneedkey`, `onwebkitplaybacktargetavailabilitychanged`, `onwebkitpresentationmodechanged`, `onwebkittransitionend`, `scrollIntoViewIfNeeded`, `webkitGetRegionFlowRanges`, `webkitRegionOverset`, `webkitRequestFullScreen`, `webkitRequestFullscreen`
+* `FontFace`: `variant`
+* `FontFaceSet`: `has`, `size`
+* `GlobalEventHandlers`: `onautocomplete`, `onautocompleteerror`, `onmousewheel`, `onsearch`, `ontouchforcechange`, `onwebkitmouseforcechanged`, `onwebkitmouseforcedown`, `onwebkitmouseforceup`, `onwebkitmouseforcewillbegin`, `onwebkitwillrevealbottom`, `onwebkitwillrevealleft`, `onwebkitwillrevealright`, `onwebkitwillrevealtop`
+* `HTMLBodyElement`: `onwebkitmouseforcechanged`, `onwebkitmouseforcedown`, `onwebkitmouseforceup`, `onwebkitmouseforcewillbegin`, `onwebkitwillrevealbottom`, `onwebkitwillrevealleft`, `onwebkitwillrevealright`, `onwebkitwillrevealtop`
+* `HTMLElement`: `webkitdropzone`
+* `HTMLFormControlsCollection`: `get`
+* `HTMLFormElement`: `get`, `requestAutocomplete`
+* `HTMLFrameElement`: `getSVGDocument`, `height`, `location`, `width`
+* `HTMLFrameSetElement`: `onwebkitwillrevealbottom`, `onwebkitwillrevealleft`, `onwebkitwillrevealright`, `onwebkitwillrevealtop`
+* `HTMLHeadElement`: `profile`
+* `HTMLHtmlElement`: `manifest`
+* `HTMLHyperlinkElementUtils`: `hash`, `host`, `hostname`, `origin`, `password`, `pathname`, `port`, `protocol`, `search`, `username`
+* `HTMLInputElement`: `capture` (support: none), `incremental`
+* `HTMLMediaElement`: `controller`, `getVideoPlaybackQuality`, `kind`, `mediaGroup`, `session`, `webkitAudioDecodedByteCount`, `webkitClosedCaptionsVisible`, `webkitCurrentPlaybackTargetIsWireless`, `webkitHasClosedCaptions`, `webkitKeys`, `webkitPreservesPitch`, `webkitSetMediaKeys`, `webkitShowPlaybackTargetPicker`, `webkitVideoDecodedByteCount`
+* `HTMLPreElement`: `wrap`
+* `HTMLVideoElement`: `webkitDecodedFrameCount`, `webkitDisplayingFullscreen`, `webkitDroppedFrameCount`, `webkitEnterFullScreen`, `webkitEnterFullscreen`, `webkitExitFullScreen`, `webkitExitFullscreen`, `webkitPresentationMode`, `webkitSetPresentationMode`, `webkitSupportsFullscreen`, `webkitSupportsPresentationMode`, `webkitWirelessVideoPlaybackDisabled`
+* `HashChangeEvent`: `initHashChangeEvent`
+* `KeyboardEvent`: `altGraphKey`, `keyIdentifier`, `keyLocation`
+* `MediaDeviceInfo`: `constructor`
+* `MediaSession`: `constructor`, `controls`, `deactivate`, `kind`, `setMetadata`
+* `MediaStream`: `onactive`, `oninactive`
+* `MediaStreamTrack`: `onoverconstrained`
+* `MouseEvent`: `WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN`, `WEBKIT_FORCE_AT_MOUSE_DOWN`, `dataTransfer`, `fromElement`, `toElement`, `webkitForce`
+* `Navigator`: `getStorageUpdates`, `getUserMedia`, `isProtocolHandlerRegistered`, `webkitPersistentStorage`, `webkitTemporaryStorage`
+* `Notification`: `ondisplay`, `show`
+* `OscillatorNode`: `FINISHED_STATE`, `PLAYING_STATE`, `SCHEDULED_STATE`, `UNSCHEDULED_STATE`, `playbackState`
+* `PannerNode`: `setVelocity`
+* `PasswordCredential`: `additionalData`, `idName`, `passwordName`
+* `RTCDTMFSender`: `duration`, `interToneGap`, `track`
+* `RTCPeerConnection`: `addStream`, `getLocalStreams`, `getRemoteStreams`, `getStreamById`, `onaddstream`, `removeStream`
+* `RTCRtpTransceiver`: `setDirection`, `stopped`
+* `RadioNodeList`: `get`
+* `Range`: `NODE_AFTER`, `NODE_BEFORE`, `NODE_BEFORE_AND_AFTER`, `NODE_INSIDE`, `compareNode`, `expand`, `toString`
+* `ReadableByteStreamController`: `constructor`
+* `ReadableStreamBYOBRequest`: `constructor`
+* `ReadableStreamDefaultController`: `constructor`
+* `Request`: `type`
+* `SVGElement`: `getPresentationAttribute`, `xmllang`, `xmlspace`
+* `SVGFEMorphologyElement`: `setRadius`
+* `SVGFilterElement`: `filterResX`, `filterResY`, `setFilterRes`
+* `SVGGraphicsElement`: `farthestViewportElement`, `getTransformToElement`, `nearestViewportElement`
+* `SVGPathElement`: `animatedNormalizedPathSegList`, `animatedPathSegList`, `createSVGPathSegArcAbs`, `createSVGPathSegArcRel`, `createSVGPathSegClosePath`, `createSVGPathSegCurvetoCubicAbs`, `createSVGPathSegCurvetoCubicRel`, `createSVGPathSegCurvetoCubicSmoothAbs`, `createSVGPathSegCurvetoCubicSmoothRel`, `createSVGPathSegCurvetoQuadraticAbs`, `createSVGPathSegCurvetoQuadraticRel`, `createSVGPathSegCurvetoQuadraticSmoothAbs`, `createSVGPathSegCurvetoQuadraticSmoothRel`, `createSVGPathSegLinetoAbs`, `createSVGPathSegLinetoHorizontalAbs`, `createSVGPathSegLinetoHorizontalRel`, `createSVGPathSegLinetoRel`, `createSVGPathSegLinetoVerticalAbs`, `createSVGPathSegLinetoVerticalRel`, `createSVGPathSegMovetoAbs`, `createSVGPathSegMovetoRel`, `getPathSegAtLength`, `normalizedPathSegList`, `pathSegList`
+* `SVGSVGElement`: `contentScriptType`, `contentStyleType`, `currentView`, `pixelUnitToMillimeterX`, `pixelUnitToMillimeterY`, `screenPixelToMillimeterX`, `screenPixelToMillimeterY`, `useCurrentView`, `viewport`
+* `SVGTests`: `hasExtension`, `requiredFeatures`
+* `SVGViewElement`: `viewTarget`
+* `Screen`: `availLeft`, `availTop`
+* `Selection`: `baseNode`, `baseOffset`, `extentNode`, `extentOffset`, `toString`
+* `SourceBufferList`: `item`
+* `TextTrack`: `addRegion`, `regions`, `removeRegion`
+* `TextTrackCueList`: `item`
+* `TextTrackList`: `item`
+* `Touch`: `webkitForce`, `webkitRadiusX`, `webkitRadiusY`, `webkitRotationAngle`
+* `TouchEvent`: `initTouchEvent`
+* `UIEvent`: `layerX`, `layerY`, `pageX`, `pageY`
+* `URLSearchParams`: `toString`
+* `VTTCue`: `regionId`
+* `VTTRegion`: `height`, `track`
+* `VideoPlaybackQuality`: `totalFrameDelay`
+* `VideoTrackList`: `item`
+* `WebGL2RenderingContext`: `BLUE`, `COMPRESSED_R11_EAC`, `COMPRESSED_RG11_EAC`, `COMPRESSED_RGB8_ETC2`, `COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2`, `COMPRESSED_RGBA8_ETC2_EAC`, `COMPRESSED_SIGNED_R11_EAC`, `COMPRESSED_SIGNED_RG11_EAC`, `COMPRESSED_SRGB8_ALPHA8_ETC2_EAC`, `COMPRESSED_SRGB8_ETC2`, `COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2`, `GREEN`, `NUM_SAMPLE_COUNTS`, `PRIMITIVE_RESTART_FIXED_INDEX`, `TEXTURE_SWIZZLE_A`, `TEXTURE_SWIZZLE_B`, `TEXTURE_SWIZZLE_G`, `TEXTURE_SWIZZLE_R`, `VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE`
+* `WebGLRenderingContextBase`: `STENCIL_INDEX`, `bufferData`, `bufferSubData`, `compressedTexImage2D`, `compressedTexSubImage2D`, `readPixels`, `releaseShaderCompiler`, `texImage2D`, `texSubImage2D`, `uniform1fv`, `uniform1iv`, `uniform2fv`, `uniform2iv`, `uniform3fv`, `uniform3iv`, `uniform4fv`, `uniform4iv`, `uniformMatrix2fv`, `uniformMatrix3fv`, `uniformMatrix4fv`
+* `WheelEvent`: `initWebKitWheelEvent`, `webkitDirectionInvertedFromDevice`, `wheelDelta`, `wheelDeltaX`, `wheelDeltaY`
+* `Window`: `applicationCache`, `collectMatchingElementsInFlatTree`, `decodeURI`, `decodeURIComponent`, `defaultStatus`, `defaultstatus`, `encodeURI`, `encodeURIComponent`, `find`, `getMatchedCSSRules`, `matchingElementInFlatTree`, `offscreenBuffering`, `ongesturechange`, `ongestureend`, `ongesturestart`, `onwebkitdeviceproximity`, `openDatabase`, `orientation` (support: none), `showModalDialog`, `styleMedia`, `webkitCancelAnimationFrame`, `webkitCancelRequestAnimationFrame`, `webkitConvertPointFromNodeToPage`, `webkitConvertPointFromPageToNode`, `webkitIndexedDB`, `webkitRequestAnimationFrame`, `webkitStorageInfo`
+* `WorkerGlobalScope`: `close`
+* `WorkerNavigator`: `webkitPersistentStorage`, `webkitTemporaryStorage`
+* `WritableStream`: `closed`, `ready`, `state`, `write`
+
+## Haskell API
+
+| | names |
+|---|---:|
+| removed | 2743 |
+| moved to another module | 831 |
+| type changed | 1266 |
+| added | 13386 |
+
+### Type changes (same module and name)
+
+<details><summary>1266 changes</summary>
+
+* `JSDOM.Types.IntersectionObserverCallback`
+  * old: `IntersectionObserverCallback :: Callback (JSVal -> JSVal -> IO ()) -> IntersectionObserverCallback`
+  * new: `IntersectionObserverCallback :: Callback (JSVal -> IO ()) -> IntersectionObserverCallback`
+* `JSDOM.Types.IsAddEventListenerOptionsOrBool (type)`
+  * old: `class (FromJSVal o, ToJSVal o, PToJSVal o) => IsAddEventListenerOptionsOrBool o`
+  * new: `class ToJSVal o => IsAddEventListenerOptionsOrBool o`
+* `JSDOM.Types.IsBlobPart (type)`
+  * old: `class (FromJSVal o, ToJSVal o) => IsBlobPart o`
+  * new: `class ToJSVal o => IsBlobPart o`
+* `JSDOM.Types.IsBodyInit (type)`
+  * old: `class (FromJSVal o, ToJSVal o) => IsBodyInit o`
+  * new: `class ToJSVal o => IsBodyInit o`
+* `JSDOM.Types.IsBufferSource (type)`
+  * old: `class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsBufferSource o`
+  * new: `class ToJSVal o => IsBufferSource o`
+* `JSDOM.Types.IsCanvasImageSource (type)`
+  * old: `class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsCanvasImageSource o`
+  * new: `class ToJSVal o => IsCanvasImageSource o`
+* `JSDOM.Types.IsCharacterData (type)`
+  * old: `class (IsNode o, IsEventTarget o, IsNonDocumentTypeChildNode o, IsChildNode o, IsGObject o) => IsCharacterData o`
+  * new: `class (IsNode o, IsChildNode o, IsNonDocumentTypeChildNode o, IsGObject o) => IsCharacterData o`
+* `JSDOM.CharacterData.IsCharacterData (type)`
+  * old: `class (IsNode o, IsEventTarget o, IsNonDocumentTypeChildNode o, IsChildNode o, IsGObject o) => IsCharacterData o`
+  * new: `class (IsNode o, IsChildNode o, IsNonDocumentTypeChildNode o, IsGObject o) => IsCharacterData o`
+* `JSDOM.Types.IsDocument (type)`
+  * old: `class (IsNode o, IsEventTarget o, IsGlobalEventHandlers o, IsDocumentOrShadowRoot o, IsNonElementParentNode o, IsParentNode o, IsDocumentAndElementEventHandlers o, IsGObject o) => IsDocument o`
+  * new: `class (IsNode o, IsARIANotifyMixin o, IsDocumentOrShadowRoot o, IsFontFaceSource o, IsGlobalEventHandlers o, IsNonElementParentNode o, IsParentNode o, IsXPathEvaluatorBase o, IsGObject o) => IsDocument o`
+* `JSDOM.Document.IsDocument (type)`
+  * old: `class (IsNode o, IsEventTarget o, IsGlobalEventHandlers o, IsDocumentOrShadowRoot o, IsNonElementParentNode o, IsParentNode o, IsDocumentAndElementEventHandlers o, IsGObject o) => IsDocument o`
+  * new: `class (IsNode o, IsARIANotifyMixin o, IsDocumentOrShadowRoot o, IsFontFaceSource o, IsGlobalEventHandlers o, IsNonElementParentNode o, IsParentNode o, IsXPathEvaluatorBase o, IsGObject o) => IsDocument o`
+* `JSDOM.Types.IsDocumentFragment (type)`
+  * old: `class (IsNode o, IsEventTarget o, IsNonElementParentNode o, IsParentNode o, IsGObject o) => IsDocumentFragment o`
+  * new: `class (IsNode o, IsNonElementParentNode o, IsParentNode o, IsGObject o) => IsDocumentFragment o`
+* `JSDOM.DocumentFragment.IsDocumentFragment (type)`
+  * old: `class (IsNode o, IsEventTarget o, IsNonElementParentNode o, IsParentNode o, IsGObject o) => IsDocumentFragment o`
+  * new: `class (IsNode o, IsNonElementParentNode o, IsParentNode o, IsGObject o) => IsDocumentFragment o`
+* `JSDOM.Types.IsElement (type)`
+  * old: `class (IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGObject o) => IsElement o`
+  * new: `class (IsNode o, IsARIAMixin o, IsARIANotifyMixin o, IsAnimatable o, IsChildNode o, IsNonDocumentTypeChildNode o, IsParentNode o, IsSlottable o, IsGObject o) => IsElement o`
+* `JSDOM.Element.IsElement (type)`
+  * old: `class (IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGObject o) => IsElement o`
+  * new: `class (IsNode o, IsARIAMixin o, IsARIANotifyMixin o, IsAnimatable o, IsChildNode o, IsNonDocumentTypeChildNode o, IsParentNode o, IsSlottable o, IsGObject o) => IsElement o`
+* `JSDOM.Types.IsEventListenerOptionsOrBool (type)`
+  * old: `class (FromJSVal o, ToJSVal o, PToJSVal o) => IsEventListenerOptionsOrBool o`
+  * new: `class ToJSVal o => IsEventListenerOptionsOrBool o`
+* `JSDOM.Types.IsEventModifierInit (type)`
+  * old: `class (IsUIEventInit o, IsEventInit o, IsGObject o) => IsEventModifierInit o`
+  * new: `class (IsUIEventInit o, IsGObject o) => IsEventModifierInit o`
+* `JSDOM.Types.IsFloat32List (type)`
+  * old: `class (FromJSVal o, ToJSVal o) => IsFloat32List o`
+  * new: `class ToJSVal o => IsFloat32List o`
+* `JSDOM.Types.IsHTMLCollectionOrElement (type)`
+  * old: `class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsHTMLCollectionOrElement o`
+  * new: `class ToJSVal o => IsHTMLCollectionOrElement o`
+* `JSDOM.Types.IsHTMLElement (type)`
+  * old: `class (IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsGObject o) => IsHTMLElement o`
+  * new: `class (IsElement o, IsElementCSSInlineStyle o, IsElementContentEditable o, IsGlobalEventHandlers o, IsHTMLOrSVGOrMathMLElement o, IsGObject o) => IsHTMLElement o`
+* `JSDOM.HTMLElement.IsHTMLElement (type)`
+  * old: `class (IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsGObject o) => IsHTMLElement o`
+  * new: `class (IsElement o, IsElementCSSInlineStyle o, IsElementContentEditable o, IsGlobalEventHandlers o, IsHTMLOrSVGOrMathMLElement o, IsGObject o) => IsHTMLElement o`
+* `JSDOM.Types.IsHTMLMediaElement (type)`
+  * old: `class (IsHTMLElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsGObject o) => IsHTMLMediaElement o`
+  * new: `class (IsHTMLElement o, IsGObject o) => IsHTMLMediaElement o`
+* `JSDOM.HTMLMediaElement.IsHTMLMediaElement (type)`
+  * old: `class (IsHTMLElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsGObject o) => IsHTMLMediaElement o`
+  * new: `class (IsHTMLElement o, IsGObject o) => IsHTMLMediaElement o`
+* `JSDOM.Types.IsInt32List (type)`
+  * old: `class (FromJSVal o, ToJSVal o) => IsInt32List o`
+  * new: `class ToJSVal o => IsInt32List o`
+* `JSDOM.Types.IsMediaProvider (type)`
+  * old: `class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsMediaProvider o`
+  * new: `class ToJSVal o => IsMediaProvider o`
+* `JSDOM.Types.IsMessageEventSource (type)`
+  * old: `class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsMessageEventSource o`
+  * new: `class ToJSVal o => IsMessageEventSource o`
+* `JSDOM.Types.IsMouseEvent (type)`
+  * old: `class (IsUIEvent o, IsEvent o, IsGObject o) => IsMouseEvent o`
+  * new: `class (IsUIEvent o, IsGObject o) => IsMouseEvent o`
+* `JSDOM.MouseEvent.IsMouseEvent (type)`
+  * old: `class (IsUIEvent o, IsEvent o, IsGObject o) => IsMouseEvent o`
+  * new: `class (IsUIEvent o, IsGObject o) => IsMouseEvent o`
+* `JSDOM.Types.IsMouseEventInit (type)`
+  * old: `class (IsEventModifierInit o, IsUIEventInit o, IsEventInit o, IsGObject o) => IsMouseEventInit o`
+  * new: `class (IsEventModifierInit o, IsGObject o) => IsMouseEventInit o`
+* `JSDOM.Types.IsNodeOrString (type)`
+  * old: `class (FromJSVal o, ToJSVal o) => IsNodeOrString o`
+  * new: `class ToJSVal o => IsNodeOrString o`
+* `JSDOM.Types.IsRadioNodeListOrElement (type)`
+  * old: `class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsRadioNodeListOrElement o`
+  * new: `class ToJSVal o => IsRadioNodeListOrElement o`
+* `JSDOM.Types.IsRenderingContext (type)`
+  * old: `class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsRenderingContext o`
+  * new: `class ToJSVal o => IsRenderingContext o`
+* `JSDOM.Types.IsSVGAnimationElement (type)`
+  * old: `class (IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsSVGTests o, IsSVGExternalResourcesRequired o, IsGObject o) => IsSVGAnimationElement o`
+  * new: `class (IsSVGElement o, IsSVGTests o, IsGObject o) => IsSVGAnimationElement o`
+* `JSDOM.SVGAnimationElement.IsSVGAnimationElement (type)`
+  * old: `class (IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsSVGTests o, IsSVGExternalResourcesRequired o, IsGObject o) => IsSVGAnimationElement o`
+  * new: `class (IsSVGElement o, IsSVGTests o, IsGObject o) => IsSVGAnimationElement o`
+* `JSDOM.Types.IsSVGComponentTransferFunctionElement (type)`
+  * old: `class (IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsGObject o) => IsSVGComponentTransferFunctionElement o`
+  * new: `class (IsSVGElement o, IsGObject o) => IsSVGComponentTransferFunctionElement o`
+* `JSDOM.SVGComponentTransferFunctionElement.IsSVGComponentTransferFunctionElement (type)`
+  * old: `class (IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsGObject o) => IsSVGComponentTransferFunctionElement o`
+  * new: `class (IsSVGElement o, IsGObject o) => IsSVGComponentTransferFunctionElement o`
+* `JSDOM.Types.IsSVGElement (type)`
+  * old: `class (IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsGObject o) => IsSVGElement o`
+  * new: `class (IsElement o, IsElementCSSInlineStyle o, IsGlobalEventHandlers o, IsHTMLOrSVGOrMathMLElement o, IsGObject o) => IsSVGElement o`
+* `JSDOM.SVGElement.IsSVGElement (type)`
+  * old: `class (IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsGObject o) => IsSVGElement o`
+  * new: `class (IsElement o, IsElementCSSInlineStyle o, IsGlobalEventHandlers o, IsHTMLOrSVGOrMathMLElement o, IsGObject o) => IsSVGElement o`
+* `JSDOM.Types.IsSVGGradientElement (type)`
+  * old: `class (IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsSVGURIReference o, IsSVGExternalResourcesRequired o, IsGObject o) => IsSVGGradientElement o`
+  * new: `class (IsSVGElement o, IsSVGURIReference o, IsGObject o) => IsSVGGradientElement o`
+* `JSDOM.SVGGradientElement.IsSVGGradientElement (type)`
+  * old: `class (IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsSVGURIReference o, IsSVGExternalResourcesRequired o, IsGObject o) => IsSVGGradientElement o`
+  * new: `class (IsSVGElement o, IsSVGURIReference o, IsGObject o) => IsSVGGradientElement o`
+* `JSDOM.Types.IsSVGGraphicsElement (type)`
+  * old: `class (IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsSVGTests o, IsGObject o) => IsSVGGraphicsElement o`
+  * new: `class (IsSVGElement o, IsSVGTests o, IsGObject o) => IsSVGGraphicsElement o`
+* `JSDOM.SVGGraphicsElement.IsSVGGraphicsElement (type)`
+  * old: `class (IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsSVGTests o, IsGObject o) => IsSVGGraphicsElement o`
+  * new: `class (IsSVGElement o, IsSVGTests o, IsGObject o) => IsSVGGraphicsElement o`
+* `JSDOM.Types.IsSVGTextContentElement (type)`
+  * old: `class (IsSVGGraphicsElement o, IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsSVGTests o, IsSVGExternalResourcesRequired o, IsGObject o) => IsSVGTextContentElement o`
+  * new: `class (IsSVGGraphicsElement o, IsGObject o) => IsSVGTextContentElement o`
+* `JSDOM.SVGTextContentElement.IsSVGTextContentElement (type)`
+  * old: `class (IsSVGGraphicsElement o, IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsSVGTests o, IsSVGExternalResourcesRequired o, IsGObject o) => IsSVGTextContentElement o`
+  * new: `class (IsSVGGraphicsElement o, IsGObject o) => IsSVGTextContentElement o`
+* `JSDOM.Types.IsSVGTextPositioningElement (type)`
+  * old: `class (IsSVGTextContentElement o, IsSVGGraphicsElement o, IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsSVGTests o, IsSVGExternalResourcesRequired o, IsGObject o) => IsSVGTextPositioningElement o`
+  * new: `class (IsSVGTextContentElement o, IsGObject o) => IsSVGTextPositioningElement o`
+* `JSDOM.SVGTextPositioningElement.IsSVGTextPositioningElement (type)`
+  * old: `class (IsSVGTextContentElement o, IsSVGGraphicsElement o, IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsSVGTests o, IsSVGExternalResourcesRequired o, IsGObject o) => IsSVGTextPositioningElement o`
+  * new: `class (IsSVGTextContentElement o, IsGObject o) => IsSVGTextPositioningElement o`
+* `JSDOM.Types.IsStringOrArrayBuffer (type)`
+  * old: `class (FromJSVal o, ToJSVal o) => IsStringOrArrayBuffer o`
+  * new: `class ToJSVal o => IsStringOrArrayBuffer o`
+* `JSDOM.Types.IsTexImageSource (type)`
+  * old: `class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsTexImageSource o`
+  * new: `class ToJSVal o => IsTexImageSource o`
+* `JSDOM.Types.IsText (type)`
+  * old: `class (IsCharacterData o, IsNode o, IsEventTarget o, IsNonDocumentTypeChildNode o, IsChildNode o, IsSlotable o, IsGObject o) => IsText o`
+  * new: `class (IsCharacterData o, IsSlottable o, IsGObject o) => IsText o`
+* `JSDOM.Text.IsText (type)`
+  * old: `class (IsCharacterData o, IsNode o, IsEventTarget o, IsNonDocumentTypeChildNode o, IsChildNode o, IsSlotable o, IsGObject o) => IsText o`
+  * new: `class (IsCharacterData o, IsSlottable o, IsGObject o) => IsText o`
+* `JSDOM.Types.IsWorkerGlobalScope (type)`
+  * old: `class (IsEventTarget o, IsWindowOrWorkerGlobalScope o, IsGlobalPerformance o, IsGlobalCrypto o, IsGObject o) => IsWorkerGlobalScope o`
+  * new: `class (IsEventTarget o, IsFontFaceSource o, IsWindowOrWorkerGlobalScope o, IsGObject o) => IsWorkerGlobalScope o`
+* `JSDOM.WorkerGlobalScope.IsWorkerGlobalScope (type)`
+  * old: `class (IsEventTarget o, IsWindowOrWorkerGlobalScope o, IsGlobalPerformance o, IsGlobalCrypto o, IsGObject o) => IsWorkerGlobalScope o`
+  * new: `class (IsEventTarget o, IsFontFaceSource o, IsWindowOrWorkerGlobalScope o, IsGObject o) => IsWorkerGlobalScope o`
+* `JSDOM.Types.MutationCallback`
+  * old: `MutationCallback :: JSVal -> MutationCallback`
+  * new: `MutationCallback :: Callback (JSVal -> IO ()) -> MutationCallback`
+* `JSDOM.Types.NotificationPermissionCallback`
+  * old: `NotificationPermissionCallback :: Callback (JSVal -> IO ()) -> NotificationPermissionCallback permissions`
+  * new: `NotificationPermissionCallback :: Callback (JSVal -> IO ()) -> NotificationPermissionCallback`
+* `JSDOM.Types.NotificationPermissionCallback (type)`
+  * old: `newtype NotificationPermissionCallback permissions`
+  * new: `newtype NotificationPermissionCallback`
+* `JSDOM.NotificationPermissionCallback.NotificationPermissionCallback (type)`
+  * old: `data NotificationPermissionCallback permissions`
+  * new: `data NotificationPermissionCallback`
+* `JSDOM.Types.PerformanceObserverCallback`
+  * old: `PerformanceObserverCallback :: Callback (JSVal -> JSVal -> IO ()) -> PerformanceObserverCallback`
+  * new: `PerformanceObserverCallback :: Callback (JSVal -> IO ()) -> PerformanceObserverCallback`
+* `JSDOM.Types.XPathNSResolver`
+  * old: `XPathNSResolver :: JSVal -> XPathNSResolver`
+  * new: `XPathNSResolver :: Callback (JSVal -> IO ()) -> XPathNSResolver`
+* `JSDOM.XPathNSResolver.XPathNSResolver (type)`
+  * old: `newtype XPathNSResolver`
+  * new: `data XPathNSResolver`
+* `JSDOM.WritableStream.abort`
+  * old: `abort :: (MonadDOM m, ToJSVal reason) => WritableStream -> Maybe reason -> m JSVal`
+  * new: `abort :: (MonadDOM m, IsWritableStream self) => self -> JSVal -> m ()`
+* `JSDOM.GlobalEventHandlers.abort`
+  * old: `abort :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self UIEvent`
+  * new: `abort :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event`
+* `JSDOM.XMLHttpRequestEventTarget.abortEvent`
+  * old: `abortEvent :: (IsXMLHttpRequestEventTarget self, IsEventTarget self) => EventName self XMLHttpRequestProgressEvent`
+  * new: `abortEvent :: (IsXMLHttpRequestEventTarget self, IsEventTarget self) => EventName self ProgressEvent`
+* `JSDOM.SourceBuffer.abortEvent`
+  * old: `abortEvent :: EventName SourceBuffer UIEvent`
+  * new: `abortEvent :: EventName SourceBuffer Event`
+* `JSDOM.FileReader.abortEvent`
+  * old: `abortEvent :: EventName FileReader UIEvent`
+  * new: `abortEvent :: EventName FileReader ProgressEvent`
+* `JSDOM.WebGLRenderingContextBase.activeTexture`
+  * old: `activeTexture :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> m ()`
+  * new: `activeTexture :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()`
+* `JSDOM.IDBObjectStore.add`
+  * old: `add :: (MonadDOM m, ToJSVal value, ToJSVal key) => IDBObjectStore -> value -> Maybe key -> m IDBRequest`
+  * new: `add :: MonadDOM m => IDBObjectStore -> JSVal -> JSVal -> m IDBRequest`
+* `JSDOM.DataTransferItemList.add`
+  * old: `add :: (MonadDOM m, ToJSString data', ToJSString type') => DataTransferItemList -> Maybe data' -> Maybe type' -> m ()`
+  * new: `add :: (MonadDOM m, ToJSString data', ToJSString type') => DataTransferItemList -> data' -> type' -> m (Maybe DataTransferItem)`
+* `JSDOM.CanvasGradient.addColorStop`
+  * old: `addColorStop :: (MonadDOM m, ToJSString color) => CanvasGradient -> Float -> color -> m ()`
+  * new: `addColorStop :: (MonadDOM m, ToJSString color) => CanvasGradient -> Double -> color -> m ()`
+* `JSDOM.EventTarget.addEventListener`
+  * old: `addEventListener :: (MonadDOM m, IsEventTarget self, ToJSString type', IsAddEventListenerOptionsOrBool options) => self -> type' -> Maybe EventListener -> options -> m ()`
+  * new: `addEventListener :: (MonadDOM m, IsEventTarget self, ToJSString type', IsAddEventListenerOptionsOrBool options) => self -> type' -> Maybe EventListener -> Maybe options -> m ()`
+* `JSDOM.DataTransferItemList.addFile`
+  * old: `addFile :: MonadDOM m => DataTransferItemList -> Maybe File -> m ()`
+  * new: `addFile :: MonadDOM m => DataTransferItemList -> File -> m (Maybe DataTransferItem)`
+* `JSDOM.RTCPeerConnection.addIceCandidate`
+  * old: `addIceCandidate :: (MonadDOM m, IsRTCIceCandidateOrInit candidate) => RTCPeerConnection -> candidate -> m ()`
+  * new: `addIceCandidate :: (MonadDOM m, IsRTCIceCandidateInit candidate) => RTCPeerConnection -> Maybe candidate -> m ()`
+* `JSDOM.MediaQueryList.addListener`
+  * old: `addListener :: MonadDOM m => MediaQueryList -> Maybe MediaQueryListListener -> m ()`
+  * new: `addListener :: MonadDOM m => MediaQueryList -> Maybe EventListener -> m ()`
+* `JSDOM.Path2D.addPath`
+  * old: `addPath :: MonadDOM m => Path2D -> Maybe Path2D -> m ()`
+  * new: `addPath :: MonadDOM m => Path2D -> Path2D -> m ()`
+* `JSDOM.HTMLMediaElement.addTextTrack`
+  * old: `addTextTrack :: (MonadDOM m, IsHTMLMediaElement self, ToJSString kind, ToJSString label, ToJSString language) => self -> kind -> Maybe label -> Maybe language -> m TextTrack`
+  * new: `addTextTrack :: (MonadDOM m, IsHTMLMediaElement self, ToJSString label, ToJSString language) => self -> TextTrackKind -> Maybe label -> Maybe language -> m TextTrack`
+* `JSDOM.HTMLMediaElement.addTextTrack_`
+  * old: `addTextTrack_ :: (MonadDOM m, IsHTMLMediaElement self, ToJSString kind, ToJSString label, ToJSString language) => self -> kind -> Maybe label -> Maybe language -> m ()`
+  * new: `addTextTrack_ :: (MonadDOM m, IsHTMLMediaElement self, ToJSString label, ToJSString language) => self -> TextTrackKind -> Maybe label -> Maybe language -> m ()`
+* `JSDOM.VideoTrackList.addTrack`
+  * old: `addTrack :: EventName VideoTrackList Event`
+  * new: `addTrack :: EventName VideoTrackList TrackEvent`
+* `JSDOM.TextTrackList.addTrack`
+  * old: `addTrack :: EventName TextTrackList Event`
+  * new: `addTrack :: EventName TextTrackList TrackEvent`
+* `JSDOM.AudioTrackList.addTrack`
+  * old: `addTrack :: EventName AudioTrackList Event`
+  * new: `addTrack :: EventName AudioTrackList TrackEvent`
+* `JSDOM.MediaStream.addTrackEvent`
+  * old: `addTrackEvent :: EventName MediaStream Event`
+  * new: `addTrackEvent :: EventName MediaStream MediaStreamTrackEvent`
+* `JSDOM.IDBObjectStore.add_`
+  * old: `add_ :: (MonadDOM m, ToJSVal value, ToJSVal key) => IDBObjectStore -> value -> Maybe key -> m ()`
+  * new: `add_ :: MonadDOM m => IDBObjectStore -> JSVal -> JSVal -> m ()`
+* `JSDOM.SourceBufferList.addsourcebuffer`
+  * old: `addsourcebuffer :: EventName SourceBufferList onaddsourcebuffer`
+  * new: `addsourcebuffer :: EventName SourceBufferList Event`
+* `JSDOM.FormData.appendBlob`
+  * old: `appendBlob :: (MonadDOM m, ToJSString name, IsBlob value, ToJSString filename) => FormData -> name -> value -> Maybe filename -> m ()`
+  * new: `appendBlob :: (MonadDOM m, ToJSString name, IsBlob blobValue, ToJSString filename) => FormData -> name -> blobValue -> Maybe filename -> m ()`
+* `JSDOM.FormData.appendBlob`
+  * old: `appendBlob :: (MonadDOM m, ToJSString name, IsBlob value, ToJSString filename) => FormData -> name -> value -> Maybe filename -> m ()`
+  * new: `appendBlob :: (MonadDOM m, ToJSString name, IsBlob blobValue, ToJSString filename) => FormData -> name -> blobValue -> Maybe filename -> m ()`
+* `JSDOM.SVGStringList.appendItem`
+  * old: `appendItem :: (MonadDOM m, ToJSString item, FromJSString result) => SVGStringList -> item -> m result`
+  * new: `appendItem :: (MonadDOM m, ToJSString newItem, FromJSString result) => SVGStringList -> newItem -> m result`
+* `JSDOM.SVGPointList.appendItem`
+  * old: `appendItem :: MonadDOM m => SVGPointList -> SVGPoint -> m SVGPoint`
+  * new: `appendItem :: MonadDOM m => SVGPointList -> DOMPoint -> m DOMPoint`
+* `JSDOM.SVGStringList.appendItem_`
+  * old: `appendItem_ :: (MonadDOM m, ToJSString item) => SVGStringList -> item -> m ()`
+  * new: `appendItem_ :: (MonadDOM m, ToJSString newItem) => SVGStringList -> newItem -> m ()`
+* `JSDOM.SVGPointList.appendItem_`
+  * old: `appendItem_ :: MonadDOM m => SVGPointList -> SVGPoint -> m ()`
+  * new: `appendItem_ :: MonadDOM m => SVGPointList -> DOMPoint -> m ()`
+* `JSDOM.MediaList.appendMedium`
+  * old: `appendMedium :: (MonadDOM m, ToJSString newMedium) => MediaList -> newMedium -> m ()`
+  * new: `appendMedium :: (MonadDOM m, ToJSString medium) => MediaList -> medium -> m ()`
+* `JSDOM.CanvasPath.arc`
+  * old: `arc :: (MonadDOM m, IsCanvasPath self) => self -> Double -> Double -> Double -> Double -> Double -> Bool -> m ()`
+  * new: `arc :: (MonadDOM m, IsCanvasPath self) => self -> Double -> Double -> Double -> Double -> Double -> Maybe Bool -> m ()`
+* `JSDOM.WindowOrWorkerGlobalScope.atob`
+  * old: `atob :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSString string, FromJSString result) => self -> string -> m result`
+  * new: `atob :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSString data', FromJSString result) => self -> data' -> m result`
+* `JSDOM.WindowOrWorkerGlobalScope.atob_`
+  * old: `atob_ :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSString string) => self -> string -> m ()`
+  * new: `atob_ :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSString data') => self -> data' -> m ()`
+* `JSDOM.WebGLRenderingContextBase.attachShader`
+  * old: `attachShader :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> Maybe WebGLShader -> m ()`
+  * new: `attachShader :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> WebGLShader -> m ()`
+* `JSDOM.SVGAnimationElement.beginElementAt`
+  * old: `beginElementAt :: (MonadDOM m, IsSVGAnimationElement self) => self -> Maybe Float -> m ()`
+  * new: `beginElementAt :: (MonadDOM m, IsSVGAnimationElement self) => self -> Float -> m ()`
+* `JSDOM.WebGLRenderingContextBase.bindAttribLocation`
+  * old: `bindAttribLocation :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> Maybe WebGLProgram -> GLuint -> name -> m ()`
+  * new: `bindAttribLocation :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> WebGLProgram -> Word -> name -> m ()`
+* `JSDOM.WebGLRenderingContextBase.bindBuffer`
+  * old: `bindBuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> Maybe WebGLBuffer -> m ()`
+  * new: `bindBuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Maybe WebGLBuffer -> m ()`
+* `JSDOM.WebGLRenderingContextBase.bindFramebuffer`
+  * old: `bindFramebuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> Maybe WebGLFramebuffer -> m ()`
+  * new: `bindFramebuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Maybe WebGLFramebuffer -> m ()`
+* `JSDOM.WebGLRenderingContextBase.bindRenderbuffer`
+  * old: `bindRenderbuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> Maybe WebGLRenderbuffer -> m ()`
+  * new: `bindRenderbuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Maybe WebGLRenderbuffer -> m ()`
+* `JSDOM.WebGLRenderingContextBase.bindTexture`
+  * old: `bindTexture :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> Maybe WebGLTexture -> m ()`
+  * new: `bindTexture :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Maybe WebGLTexture -> m ()`
+* `JSDOM.WebGLRenderingContextBase.blendColor`
+  * old: `blendColor :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLclampf -> GLclampf -> GLclampf -> GLclampf -> m ()`
+  * new: `blendColor :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Float -> Float -> Float -> Float -> m ()`
+* `JSDOM.WebGLRenderingContextBase.blendEquation`
+  * old: `blendEquation :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> m ()`
+  * new: `blendEquation :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()`
+* `JSDOM.WebGLRenderingContextBase.blendEquationSeparate`
+  * old: `blendEquationSeparate :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> m ()`
+  * new: `blendEquationSeparate :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()`
+* `JSDOM.WebGLRenderingContextBase.blendFunc`
+  * old: `blendFunc :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> m ()`
+  * new: `blendFunc :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()`
+* `JSDOM.WebGLRenderingContextBase.blendFuncSeparate`
+  * old: `blendFuncSeparate :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> GLenum -> GLenum -> m ()`
+  * new: `blendFuncSeparate :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Word -> Word -> m ()`
+* `JSDOM.IDBKeyRange.bound`
+  * old: `bound :: (MonadDOM m, ToJSVal lower, ToJSVal upper) => lower -> upper -> Bool -> Bool -> m IDBKeyRange`
+  * new: `bound :: MonadDOM m => JSVal -> JSVal -> Maybe Bool -> Maybe Bool -> m IDBKeyRange`
+* `JSDOM.IDBKeyRange.bound_`
+  * old: `bound_ :: (MonadDOM m, ToJSVal lower, ToJSVal upper) => lower -> upper -> Bool -> Bool -> m ()`
+  * new: `bound_ :: MonadDOM m => JSVal -> JSVal -> Maybe Bool -> Maybe Bool -> m ()`
+* `JSDOM.SpeechSynthesisUtterance.boundary`
+  * old: `boundary :: EventName SpeechSynthesisUtterance Event`
+  * new: `boundary :: EventName SpeechSynthesisUtterance SpeechSynthesisEvent`
+* `JSDOM.WindowOrWorkerGlobalScope.btoa`
+  * old: `btoa :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSString string, FromJSString result) => self -> string -> m result`
+  * new: `btoa :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSString data', FromJSString result) => self -> data' -> m result`
+* `JSDOM.WindowOrWorkerGlobalScope.btoa_`
+  * old: `btoa_ :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSString string) => self -> string -> m ()`
+  * new: `btoa_ :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSString data') => self -> data' -> m ()`
+* `JSDOM.RTCDataChannel.bufferedamountlow`
+  * old: `bufferedamountlow :: EventName RTCDataChannel onbufferedamountlow`
+  * new: `bufferedamountlow :: EventName RTCDataChannel Event`
+* `JSDOM.Notification.cLoseEvent`
+  * old: `cLoseEvent :: EventName Notification CloseEvent`
+  * new: `cLoseEvent :: EventName Notification Event`
+* `JSDOM.HTMLMediaElement.canPlayType`
+  * old: `canPlayType :: (MonadDOM m, IsHTMLMediaElement self, ToJSString type', FromJSString result) => self -> type' -> m result`
+  * new: `canPlayType :: (MonadDOM m, IsHTMLMediaElement self, ToJSString type') => self -> type' -> m CanPlayTypeResult`
+* `JSDOM.ReadableStream.cancel`
+  * old: `cancel :: (MonadDOM m, ToJSVal reason) => ReadableStream -> Maybe reason -> m JSVal`
+  * new: `cancel :: (MonadDOM m, IsReadableStream self) => self -> JSVal -> m ()`
+* `JSDOM.AudioParam.cancelScheduledValues`
+  * old: `cancelScheduledValues :: MonadDOM m => AudioParam -> Float -> m ()`
+  * new: `cancelScheduledValues :: MonadDOM m => AudioParam -> Double -> m AudioParam`
+* `JSDOM.SVGSVGElement.checkEnclosure`
+  * old: `checkEnclosure :: (MonadDOM m, IsSVGElement element) => SVGSVGElement -> Maybe element -> SVGRect -> m Bool`
+  * new: `checkEnclosure :: (MonadDOM m, IsSVGElement element) => SVGSVGElement -> element -> DOMRect -> m Bool`
+* `JSDOM.SVGSVGElement.checkEnclosure_`
+  * old: `checkEnclosure_ :: (MonadDOM m, IsSVGElement element) => SVGSVGElement -> Maybe element -> SVGRect -> m ()`
+  * new: `checkEnclosure_ :: (MonadDOM m, IsSVGElement element) => SVGSVGElement -> element -> DOMRect -> m ()`
+* `JSDOM.WebGLRenderingContextBase.checkFramebufferStatus`
+  * old: `checkFramebufferStatus :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> m GLenum`
+  * new: `checkFramebufferStatus :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m Word`
+* `JSDOM.WebGLRenderingContextBase.checkFramebufferStatus_`
+  * old: `checkFramebufferStatus_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> m ()`
+  * new: `checkFramebufferStatus_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()`
+* `JSDOM.SVGSVGElement.checkIntersection`
+  * old: `checkIntersection :: (MonadDOM m, IsSVGElement element) => SVGSVGElement -> Maybe element -> SVGRect -> m Bool`
+  * new: `checkIntersection :: (MonadDOM m, IsSVGElement element) => SVGSVGElement -> element -> DOMRect -> m Bool`
+* `JSDOM.SVGSVGElement.checkIntersection_`
+  * old: `checkIntersection_ :: (MonadDOM m, IsSVGElement element) => SVGSVGElement -> Maybe element -> SVGRect -> m ()`
+  * new: `checkIntersection_ :: (MonadDOM m, IsSVGElement element) => SVGSVGElement -> element -> DOMRect -> m ()`
+* `JSDOM.WebGLRenderingContextBase.clear`
+  * old: `clear :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLbitfield -> m ()`
+  * new: `clear :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()`
+* `JSDOM.WebGLRenderingContextBase.clearColor`
+  * old: `clearColor :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLclampf -> GLclampf -> GLclampf -> GLclampf -> m ()`
+  * new: `clearColor :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Float -> Float -> Float -> Float -> m ()`
+* `JSDOM.WebGLRenderingContextBase.clearDepth`
+  * old: `clearDepth :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLclampf -> m ()`
+  * new: `clearDepth :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Float -> m ()`
+* `JSDOM.WebGLRenderingContextBase.clearStencil`
+  * old: `clearStencil :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLint -> m ()`
+  * new: `clearStencil :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Int -> m ()`
+* `JSDOM.Notification.click`
+  * old: `click :: EventName Notification MouseEvent`
+  * new: `click :: EventName Notification Event`
+* `JSDOM.GlobalEventHandlers.click`
+  * old: `click :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self MouseEvent`
+  * new: `click :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self PointerEvent`
+* `JSDOM.Node.cloneNode`
+  * old: `cloneNode :: (MonadDOM m, IsNode self) => self -> Bool -> m Node`
+  * new: `cloneNode :: (MonadDOM m, IsNode self) => self -> Maybe Bool -> m Node`
+* `JSDOM.Node.cloneNode_`
+  * old: `cloneNode_ :: (MonadDOM m, IsNode self) => self -> Bool -> m ()`
+  * new: `cloneNode_ :: (MonadDOM m, IsNode self) => self -> Maybe Bool -> m ()`
+* `JSDOM.WritableStream.close`
+  * old: `close :: MonadDOM m => WritableStream -> m JSVal`
+  * new: `close :: (MonadDOM m, IsWritableStream self) => self -> m ()`
+* `JSDOM.AudioContext.close`
+  * old: `close :: (MonadDOM m, IsAudioContext self) => self -> m ()`
+  * new: `close :: MonadDOM m => AudioContext -> m ()`
+* `JSDOM.AudioContext.close`
+  * old: `close :: (MonadDOM m, IsAudioContext self) => self -> m ()`
+  * new: `close :: MonadDOM m => AudioContext -> m ()`
+* `JSDOM.RTCDataChannel.closeEvent`
+  * old: `closeEvent :: EventName RTCDataChannel CloseEvent`
+  * new: `closeEvent :: EventName RTCDataChannel Event`
+* `JSDOM.IDBDatabase.closeEvent`
+  * old: `closeEvent :: EventName IDBDatabase CloseEvent`
+  * new: `closeEvent :: EventName IDBDatabase Event`
+* `JSDOM.IDBFactory.cmp`
+  * old: `cmp :: (MonadDOM m, ToJSVal first, ToJSVal second) => IDBFactory -> first -> second -> m Int`
+  * new: `cmp :: MonadDOM m => IDBFactory -> JSVal -> JSVal -> m Int`
+* `JSDOM.IDBFactory.cmp_`
+  * old: `cmp_ :: (MonadDOM m, ToJSVal first, ToJSVal second) => IDBFactory -> first -> second -> m ()`
+  * new: `cmp_ :: MonadDOM m => IDBFactory -> JSVal -> JSVal -> m ()`
+* `JSDOM.Range.collapse`
+  * old: `collapse :: MonadDOM m => Range -> Bool -> m ()`
+  * new: `collapse :: MonadDOM m => Range -> Maybe Bool -> m ()`
+* `JSDOM.WebGLRenderingContextBase.colorMask`
+  * old: `colorMask :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> m ()`
+  * new: `colorMask :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Bool -> Bool -> Bool -> Bool -> m ()`
+* `JSDOM.WebGLRenderingContextBase.compileShader`
+  * old: `compileShader :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLShader -> m ()`
+  * new: `compileShader :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLShader -> m ()`
+* `JSDOM.AudioNode.connect`
+  * old: `connect :: (MonadDOM m, IsAudioNode self, IsAudioNode destination) => self -> destination -> Maybe Word -> Maybe Word -> m ()`
+  * new: `connect :: (MonadDOM m, IsAudioNode self, IsAudioNode destinationNode) => self -> destinationNode -> Maybe Word -> Maybe Word -> m AudioNode`
+* `JSDOM.RTCPeerConnection.connectionstatechange`
+  * old: `connectionstatechange :: EventName RTCPeerConnection onconnectionstatechange`
+  * new: `connectionstatechange :: EventName RTCPeerConnection Event`
+* `JSDOM.SVGTransformList.consolidate`
+  * old: `consolidate :: MonadDOM m => SVGTransformList -> m SVGTransform`
+  * new: `consolidate :: MonadDOM m => SVGTransformList -> m (Maybe SVGTransform)`
+* `JSDOM.Selection.containsNode`
+  * old: `containsNode :: (MonadDOM m, IsNode node) => Selection -> node -> Bool -> m Bool`
+  * new: `containsNode :: (MonadDOM m, IsNode node) => Selection -> node -> Maybe Bool -> m Bool`
+* `JSDOM.Selection.containsNode_`
+  * old: `containsNode_ :: (MonadDOM m, IsNode node) => Selection -> node -> Bool -> m ()`
+  * new: `containsNode_ :: (MonadDOM m, IsNode node) => Selection -> node -> Maybe Bool -> m ()`
+* `JSDOM.GlobalEventHandlers.contextMenu`
+  * old: `contextMenu :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self MouseEvent`
+  * new: `contextMenu :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self PointerEvent`
+* `JSDOM.IDBCursor.continue`
+  * old: `continue :: (MonadDOM m, IsIDBCursor self, ToJSVal key) => self -> Maybe key -> m ()`
+  * new: `continue :: (MonadDOM m, IsIDBCursor self) => self -> JSVal -> m ()`
+* `JSDOM.IDBCursor.continuePrimaryKey`
+  * old: `continuePrimaryKey :: (MonadDOM m, IsIDBCursor self, ToJSVal key, ToJSVal primaryKey) => self -> key -> primaryKey -> m ()`
+  * new: `continuePrimaryKey :: (MonadDOM m, IsIDBCursor self) => self -> JSVal -> JSVal -> m ()`
+* `JSDOM.WebGLRenderingContextBase.copyTexImage2D`
+  * old: `copyTexImage2D :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> m ()`
+  * new: `copyTexImage2D :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Int -> Word -> Int -> Int -> Int -> Int -> Int -> m ()`
+* `JSDOM.WebGLRenderingContextBase.copyTexSubImage2D`
+  * old: `copyTexSubImage2D :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()`
+  * new: `copyTexSubImage2D :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Int -> Int -> Int -> Int -> Int -> Int -> Int -> m ()`
+* `JSDOM.IDBObjectStore.count`
+  * old: `count :: (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> m IDBRequest`
+  * new: `count :: MonadDOM m => IDBObjectStore -> JSVal -> m IDBRequest`
+* `JSDOM.IDBIndex.count`
+  * old: `count :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> m IDBRequest`
+  * new: `count :: MonadDOM m => IDBIndex -> JSVal -> m IDBRequest`
+* `JSDOM.IDBObjectStore.count_`
+  * old: `count_ :: (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> m ()`
+  * new: `count_ :: MonadDOM m => IDBObjectStore -> JSVal -> m ()`
+* `JSDOM.IDBIndex.count_`
+  * old: `count_ :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> m ()`
+  * new: `count_ :: MonadDOM m => IDBIndex -> JSVal -> m ()`
+* `JSDOM.Document.createAttributeNS`
+  * old: `createAttributeNS :: (MonadDOM m, IsDocument self, ToJSString namespaceURI, ToJSString qualifiedName) => self -> Maybe namespaceURI -> qualifiedName -> m Attr`
+  * new: `createAttributeNS :: (MonadDOM m, IsDocument self, ToJSString namespace, ToJSString qualifiedName) => self -> Maybe namespace -> qualifiedName -> m Attr`
+* `JSDOM.Document.createAttributeNS_`
+  * old: `createAttributeNS_ :: (MonadDOM m, IsDocument self, ToJSString namespaceURI, ToJSString qualifiedName) => self -> Maybe namespaceURI -> qualifiedName -> m ()`
+  * new: `createAttributeNS_ :: (MonadDOM m, IsDocument self, ToJSString namespace, ToJSString qualifiedName) => self -> Maybe namespace -> qualifiedName -> m ()`
+* `JSDOM.HTMLTableElement.createCaption`
+  * old: `createCaption :: MonadDOM m => HTMLTableElement -> m HTMLElement`
+  * new: `createCaption :: MonadDOM m => HTMLTableElement -> m HTMLTableCaptionElement`
+* `JSDOM.Range.createContextualFragment`
+  * old: `createContextualFragment :: (MonadDOM m, ToJSString fragment) => Range -> fragment -> m DocumentFragment`
+  * new: `createContextualFragment :: (MonadDOM m, IsTrustedHTMLOrString string) => Range -> string -> m DocumentFragment`
+* `JSDOM.Range.createContextualFragment_`
+  * old: `createContextualFragment_ :: (MonadDOM m, ToJSString fragment) => Range -> fragment -> m ()`
+  * new: `createContextualFragment_ :: (MonadDOM m, IsTrustedHTMLOrString string) => Range -> string -> m ()`
+* `JSDOM.DOMImplementation.createDocument`
+  * old: `createDocument :: (MonadDOM m, ToJSString namespaceURI, ToJSString qualifiedName) => DOMImplementation -> Maybe namespaceURI -> qualifiedName -> Maybe DocumentType -> m XMLDocument`
+  * new: `createDocument :: (MonadDOM m, ToJSString namespace, ToJSString qualifiedName) => DOMImplementation -> Maybe namespace -> qualifiedName -> Maybe DocumentType -> m XMLDocument`
+* `JSDOM.DOMImplementation.createDocumentType`
+  * old: `createDocumentType :: (MonadDOM m, ToJSString qualifiedName, ToJSString publicId, ToJSString systemId) => DOMImplementation -> qualifiedName -> publicId -> systemId -> m DocumentType`
+  * new: `createDocumentType :: (MonadDOM m, ToJSString name, ToJSString publicId, ToJSString systemId) => DOMImplementation -> name -> publicId -> systemId -> m DocumentType`
+* `JSDOM.DOMImplementation.createDocumentType_`
+  * old: `createDocumentType_ :: (MonadDOM m, ToJSString qualifiedName, ToJSString publicId, ToJSString systemId) => DOMImplementation -> qualifiedName -> publicId -> systemId -> m ()`
+  * new: `createDocumentType_ :: (MonadDOM m, ToJSString name, ToJSString publicId, ToJSString systemId) => DOMImplementation -> name -> publicId -> systemId -> m ()`
+* `JSDOM.DOMImplementation.createDocument_`
+  * old: `createDocument_ :: (MonadDOM m, ToJSString namespaceURI, ToJSString qualifiedName) => DOMImplementation -> Maybe namespaceURI -> qualifiedName -> Maybe DocumentType -> m ()`
+  * new: `createDocument_ :: (MonadDOM m, ToJSString namespace, ToJSString qualifiedName) => DOMImplementation -> Maybe namespace -> qualifiedName -> Maybe DocumentType -> m ()`
+* `JSDOM.Document.createElementNS`
+  * old: `createElementNS :: (MonadDOM m, IsDocument self, ToJSString namespaceURI, ToJSString qualifiedName) => self -> Maybe namespaceURI -> qualifiedName -> m Element`
+  * new: `createElementNS :: (MonadDOM m, IsDocument self, ToJSString namespace, ToJSString qualifiedName) => self -> Maybe namespace -> qualifiedName -> m Element`
+* `JSDOM.Document.createElementNS_`
+  * old: `createElementNS_ :: (MonadDOM m, IsDocument self, ToJSString namespaceURI, ToJSString qualifiedName) => self -> Maybe namespaceURI -> qualifiedName -> m ()`
+  * new: `createElementNS_ :: (MonadDOM m, IsDocument self, ToJSString namespace, ToJSString qualifiedName) => self -> Maybe namespace -> qualifiedName -> m ()`
+* `JSDOM.Document.createEvent`
+  * old: `createEvent :: (MonadDOM m, IsDocument self, ToJSString type') => self -> type' -> m Event`
+  * new: `createEvent :: (MonadDOM m, IsDocument self, ToJSString interface) => self -> interface -> m Event`
+* `JSDOM.Document.createEvent_`
+  * old: `createEvent_ :: (MonadDOM m, IsDocument self, ToJSString type') => self -> type' -> m ()`
+  * new: `createEvent_ :: (MonadDOM m, IsDocument self, ToJSString interface) => self -> interface -> m ()`
+* `JSDOM.DOMImplementation.createHTMLDocument`
+  * old: `createHTMLDocument :: (MonadDOM m, ToJSString title) => DOMImplementation -> Maybe title -> m HTMLDocument`
+  * new: `createHTMLDocument :: (MonadDOM m, ToJSString title) => DOMImplementation -> Maybe title -> m Document`
+* `JSDOM.IDBObjectStore.createIndex`
+  * old: `createIndex :: (MonadDOM m, ToJSString name, IsStringOrStrings keyPath) => IDBObjectStore -> name -> keyPath -> Maybe IDBIndexParameters -> m IDBIndex`
+  * new: `createIndex :: (MonadDOM m, ToJSString name, IsStringOrSequenceString keyPath) => IDBObjectStore -> name -> keyPath -> Maybe IDBIndexParameters -> m IDBIndex`
+* `JSDOM.IDBObjectStore.createIndex_`
+  * old: `createIndex_ :: (MonadDOM m, ToJSString name, IsStringOrStrings keyPath) => IDBObjectStore -> name -> keyPath -> Maybe IDBIndexParameters -> m ()`
+  * new: `createIndex_ :: (MonadDOM m, ToJSString name, IsStringOrSequenceString keyPath) => IDBObjectStore -> name -> keyPath -> Maybe IDBIndexParameters -> m ()`
+* `JSDOM.AudioContext.createMediaElementSource`
+  * old: `createMediaElementSource :: (MonadDOM m, IsAudioContext self, IsHTMLMediaElement mediaElement) => self -> mediaElement -> m MediaElementAudioSourceNode`
+  * new: `createMediaElementSource :: (MonadDOM m, IsHTMLMediaElement mediaElement) => AudioContext -> mediaElement -> m MediaElementAudioSourceNode`
+* `JSDOM.AudioContext.createMediaElementSource`
+  * old: `createMediaElementSource :: (MonadDOM m, IsAudioContext self, IsHTMLMediaElement mediaElement) => self -> mediaElement -> m MediaElementAudioSourceNode`
+  * new: `createMediaElementSource :: (MonadDOM m, IsHTMLMediaElement mediaElement) => AudioContext -> mediaElement -> m MediaElementAudioSourceNode`
+* `JSDOM.AudioContext.createMediaElementSource_`
+  * old: `createMediaElementSource_ :: (MonadDOM m, IsAudioContext self, IsHTMLMediaElement mediaElement) => self -> mediaElement -> m ()`
+  * new: `createMediaElementSource_ :: (MonadDOM m, IsHTMLMediaElement mediaElement) => AudioContext -> mediaElement -> m ()`
+* `JSDOM.AudioContext.createMediaElementSource_`
+  * old: `createMediaElementSource_ :: (MonadDOM m, IsAudioContext self, IsHTMLMediaElement mediaElement) => self -> mediaElement -> m ()`
+  * new: `createMediaElementSource_ :: (MonadDOM m, IsHTMLMediaElement mediaElement) => AudioContext -> mediaElement -> m ()`
+* `JSDOM.AudioContext.createMediaStreamDestination`
+  * old: `createMediaStreamDestination :: (MonadDOM m, IsAudioContext self) => self -> m MediaStreamAudioDestinationNode`
+  * new: `createMediaStreamDestination :: MonadDOM m => AudioContext -> m MediaStreamAudioDestinationNode`
+* `JSDOM.AudioContext.createMediaStreamDestination`
+  * old: `createMediaStreamDestination :: (MonadDOM m, IsAudioContext self) => self -> m MediaStreamAudioDestinationNode`
+  * new: `createMediaStreamDestination :: MonadDOM m => AudioContext -> m MediaStreamAudioDestinationNode`
+* `JSDOM.AudioContext.createMediaStreamDestination_`
+  * old: `createMediaStreamDestination_ :: (MonadDOM m, IsAudioContext self) => self -> m ()`
+  * new: `createMediaStreamDestination_ :: MonadDOM m => AudioContext -> m ()`
+* `JSDOM.AudioContext.createMediaStreamDestination_`
+  * old: `createMediaStreamDestination_ :: (MonadDOM m, IsAudioContext self) => self -> m ()`
+  * new: `createMediaStreamDestination_ :: MonadDOM m => AudioContext -> m ()`
+* `JSDOM.AudioContext.createMediaStreamSource`
+  * old: `createMediaStreamSource :: (MonadDOM m, IsAudioContext self) => self -> MediaStream -> m MediaStreamAudioSourceNode`
+  * new: `createMediaStreamSource :: MonadDOM m => AudioContext -> MediaStream -> m MediaStreamAudioSourceNode`
+* `JSDOM.AudioContext.createMediaStreamSource`
+  * old: `createMediaStreamSource :: (MonadDOM m, IsAudioContext self) => self -> MediaStream -> m MediaStreamAudioSourceNode`
+  * new: `createMediaStreamSource :: MonadDOM m => AudioContext -> MediaStream -> m MediaStreamAudioSourceNode`
+* `JSDOM.AudioContext.createMediaStreamSource_`
+  * old: `createMediaStreamSource_ :: (MonadDOM m, IsAudioContext self) => self -> MediaStream -> m ()`
+  * new: `createMediaStreamSource_ :: MonadDOM m => AudioContext -> MediaStream -> m ()`
+* `JSDOM.AudioContext.createMediaStreamSource_`
+  * old: `createMediaStreamSource_ :: (MonadDOM m, IsAudioContext self) => self -> MediaStream -> m ()`
+  * new: `createMediaStreamSource_ :: MonadDOM m => AudioContext -> MediaStream -> m ()`
+* `JSDOM.URL.createObjectURL`
+  * old: `createObjectURL :: (MonadDOM m, IsBlob blob, FromJSString result) => blob -> m result`
+  * new: `createObjectURL :: (MonadDOM m, IsBlobOrMediaSource obj, FromJSString result) => obj -> m result`
+* `JSDOM.URL.createObjectURL_`
+  * old: `createObjectURL_ :: (MonadDOM m, IsBlob blob) => blob -> m ()`
+  * new: `createObjectURL_ :: (MonadDOM m, IsBlobOrMediaSource obj) => obj -> m ()`
+* `JSDOM.SVGSVGElement.createSVGMatrix`
+  * old: `createSVGMatrix :: MonadDOM m => SVGSVGElement -> m SVGMatrix`
+  * new: `createSVGMatrix :: MonadDOM m => SVGSVGElement -> m DOMMatrix`
+* `JSDOM.SVGSVGElement.createSVGPoint`
+  * old: `createSVGPoint :: MonadDOM m => SVGSVGElement -> m SVGPoint`
+  * new: `createSVGPoint :: MonadDOM m => SVGSVGElement -> m DOMPoint`
+* `JSDOM.SVGSVGElement.createSVGRect`
+  * old: `createSVGRect :: MonadDOM m => SVGSVGElement -> m SVGRect`
+  * new: `createSVGRect :: MonadDOM m => SVGSVGElement -> m DOMRect`
+* `JSDOM.SVGTransformList.createSVGTransformFromMatrix`
+  * old: `createSVGTransformFromMatrix :: MonadDOM m => SVGTransformList -> SVGMatrix -> m SVGTransform`
+  * new: `createSVGTransformFromMatrix :: (MonadDOM m, IsDOMMatrix2DInit matrix) => SVGTransformList -> Maybe matrix -> m SVGTransform`
+* `JSDOM.SVGSVGElement.createSVGTransformFromMatrix`
+  * old: `createSVGTransformFromMatrix :: MonadDOM m => SVGSVGElement -> SVGMatrix -> m SVGTransform`
+  * new: `createSVGTransformFromMatrix :: (MonadDOM m, IsDOMMatrix2DInit matrix) => SVGSVGElement -> Maybe matrix -> m SVGTransform`
+* `JSDOM.SVGTransformList.createSVGTransformFromMatrix_`
+  * old: `createSVGTransformFromMatrix_ :: MonadDOM m => SVGTransformList -> SVGMatrix -> m ()`
+  * new: `createSVGTransformFromMatrix_ :: (MonadDOM m, IsDOMMatrix2DInit matrix) => SVGTransformList -> Maybe matrix -> m ()`
+* `JSDOM.SVGSVGElement.createSVGTransformFromMatrix_`
+  * old: `createSVGTransformFromMatrix_ :: MonadDOM m => SVGSVGElement -> SVGMatrix -> m ()`
+  * new: `createSVGTransformFromMatrix_ :: (MonadDOM m, IsDOMMatrix2DInit matrix) => SVGSVGElement -> Maybe matrix -> m ()`
+* `JSDOM.WebGLRenderingContextBase.createShader`
+  * old: `createShader :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> m WebGLShader`
+  * new: `createShader :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m (Maybe WebGLShader)`
+* `JSDOM.WebGLRenderingContextBase.createShader_`
+  * old: `createShader_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> m ()`
+  * new: `createShader_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()`
+* `JSDOM.HTMLTableElement.createTBody`
+  * old: `createTBody :: MonadDOM m => HTMLTableElement -> m HTMLElement`
+  * new: `createTBody :: MonadDOM m => HTMLTableElement -> m HTMLTableSectionElement`
+* `JSDOM.HTMLTableElement.createTFoot`
+  * old: `createTFoot :: MonadDOM m => HTMLTableElement -> m HTMLElement`
+  * new: `createTFoot :: MonadDOM m => HTMLTableElement -> m HTMLTableSectionElement`
+* `JSDOM.HTMLTableElement.createTHead`
+  * old: `createTHead :: MonadDOM m => HTMLTableElement -> m HTMLElement`
+  * new: `createTHead :: MonadDOM m => HTMLTableElement -> m HTMLTableSectionElement`
+* `JSDOM.WebGLRenderingContextBase.cullFace`
+  * old: `cullFace :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> m ()`
+  * new: `cullFace :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()`
+* `JSDOM.RTCPeerConnection.dataChannel`
+  * old: `dataChannel :: EventName RTCPeerConnection Event`
+  * new: `dataChannel :: EventName RTCPeerConnection RTCDataChannelEvent`
+* `JSDOM.TextDecoder.decode`
+  * old: `decode :: (MonadDOM m, IsBufferSource input, FromJSString result) => TextDecoder -> Maybe input -> Maybe TextDecodeOptions -> m result`
+  * new: `decode :: (MonadDOM m, IsAllowSharedBufferSource input, FromJSString result) => TextDecoder -> Maybe input -> Maybe TextDecodeOptions -> m result`
+* `JSDOM.TextDecoder.decode_`
+  * old: `decode_ :: (MonadDOM m, IsBufferSource input) => TextDecoder -> Maybe input -> Maybe TextDecodeOptions -> m ()`
+  * new: `decode_ :: (MonadDOM m, IsAllowSharedBufferSource input) => TextDecoder -> Maybe input -> Maybe TextDecodeOptions -> m ()`
+* `JSDOM.SubtleCrypto.decrypt`
+  * old: `decrypt :: (MonadDOM m, ToJSString algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal`
+  * new: `decrypt :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ArrayBuffer`
+* `JSDOM.SubtleCrypto.decrypt_`
+  * old: `decrypt_ :: (MonadDOM m, ToJSString algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()`
+  * new: `decrypt_ :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()`
+* `JSDOM.CustomElementRegistry.define`
+  * old: `define :: (MonadDOM m, ToJSString name, IsFunction constructor) => CustomElementRegistry -> name -> constructor -> m ()`
+  * new: `define :: (MonadDOM m, ToJSString name) => CustomElementRegistry -> name -> CustomElementConstructor -> m ()`
+* `JSDOM.IDBObjectStore.delete`
+  * old: `delete :: (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> m IDBRequest`
+  * new: `delete :: MonadDOM m => IDBObjectStore -> JSVal -> m IDBRequest`
+* `JSDOM.MediaList.deleteMedium`
+  * old: `deleteMedium :: (MonadDOM m, ToJSString oldMedium) => MediaList -> oldMedium -> m ()`
+  * new: `deleteMedium :: (MonadDOM m, ToJSString medium) => MediaList -> medium -> m ()`
+* `JSDOM.CSSKeyframesRule.deleteRule`
+  * old: `deleteRule :: (MonadDOM m, ToJSString key) => CSSKeyframesRule -> key -> m ()`
+  * new: `deleteRule :: (MonadDOM m, ToJSString select) => CSSKeyframesRule -> select -> m ()`
+* `JSDOM.IDBObjectStore.delete_`
+  * old: `delete_ :: (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> m ()`
+  * new: `delete_ :: MonadDOM m => IDBObjectStore -> JSVal -> m ()`
+* `JSDOM.WebGLRenderingContextBase.depthFunc`
+  * old: `depthFunc :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> m ()`
+  * new: `depthFunc :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()`
+* `JSDOM.WebGLRenderingContextBase.depthMask`
+  * old: `depthMask :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLboolean -> m ()`
+  * new: `depthMask :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Bool -> m ()`
+* `JSDOM.WebGLRenderingContextBase.depthRange`
+  * old: `depthRange :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLclampf -> GLclampf -> m ()`
+  * new: `depthRange :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Float -> Float -> m ()`
+* `JSDOM.SubtleCrypto.deriveBits`
+  * old: `deriveBits :: (MonadDOM m, ToJSString algorithm) => SubtleCrypto -> algorithm -> CryptoKey -> Word -> m ArrayBuffer`
+  * new: `deriveBits :: (MonadDOM m, IsAlgorithmIdentifier algorithm) => SubtleCrypto -> algorithm -> CryptoKey -> Maybe Word -> m ArrayBuffer`
+* `JSDOM.SubtleCrypto.deriveBits_`
+  * old: `deriveBits_ :: (MonadDOM m, ToJSString algorithm) => SubtleCrypto -> algorithm -> CryptoKey -> Word -> m ()`
+  * new: `deriveBits_ :: (MonadDOM m, IsAlgorithmIdentifier algorithm) => SubtleCrypto -> algorithm -> CryptoKey -> Maybe Word -> m ()`
+* `JSDOM.SubtleCrypto.deriveKey`
+  * old: `deriveKey :: (MonadDOM m, ToJSString algorithm, ToJSString derivedKeyType) => SubtleCrypto -> algorithm -> CryptoKey -> derivedKeyType -> Bool -> [CryptoKeyUsage] -> m JSVal`
+  * new: `deriveKey :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsAlgorithmIdentifier derivedKeyType) => SubtleCrypto -> algorithm -> CryptoKey -> derivedKeyType -> Bool -> [KeyUsage] -> m CryptoKey`
+* `JSDOM.SubtleCrypto.deriveKey_`
+  * old: `deriveKey_ :: (MonadDOM m, ToJSString algorithm, ToJSString derivedKeyType) => SubtleCrypto -> algorithm -> CryptoKey -> derivedKeyType -> Bool -> [CryptoKeyUsage] -> m ()`
+  * new: `deriveKey_ :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsAlgorithmIdentifier derivedKeyType) => SubtleCrypto -> algorithm -> CryptoKey -> derivedKeyType -> Bool -> [KeyUsage] -> m ()`
+* `JSDOM.WebGLRenderingContextBase.detachShader`
+  * old: `detachShader :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> Maybe WebGLShader -> m ()`
+  * new: `detachShader :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> WebGLShader -> m ()`
+* `JSDOM.MediaDevices.devicechange`
+  * old: `devicechange :: EventName MediaDevices ondevicechange`
+  * new: `devicechange :: EventName MediaDevices DeviceChangeEvent`
+* `JSDOM.SubtleCrypto.digest`
+  * old: `digest :: (MonadDOM m, ToJSString algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> data' -> m JSVal`
+  * new: `digest :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> data' -> m ArrayBuffer`
+* `JSDOM.SubtleCrypto.digest_`
+  * old: `digest_ :: (MonadDOM m, ToJSString algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> data' -> m ()`
+  * new: `digest_ :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> data' -> m ()`
+* `JSDOM.WebGLRenderingContextBase.disable`
+  * old: `disable :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> m ()`
+  * new: `disable :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()`
+* `JSDOM.WebGLRenderingContextBase.disableVertexAttribArray`
+  * old: `disableVertexAttribArray :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLuint -> m ()`
+  * new: `disableVertexAttribArray :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()`
+* `JSDOM.AudioNode.disconnect`
+  * old: `disconnect :: (MonadDOM m, IsAudioNode self) => self -> Maybe Word -> m ()`
+  * new: `disconnect :: (MonadDOM m, IsAudioNode self) => self -> Word -> m ()`
+* `JSDOM.GlobalEventHandlers.drag`
+  * old: `drag :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self MouseEvent`
+  * new: `drag :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self DragEvent`
+* `JSDOM.GlobalEventHandlers.dragEnd`
+  * old: `dragEnd :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self MouseEvent`
+  * new: `dragEnd :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self DragEvent`
+* `JSDOM.GlobalEventHandlers.dragEnter`
+  * old: `dragEnter :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self MouseEvent`
+  * new: `dragEnter :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self DragEvent`
+* `JSDOM.GlobalEventHandlers.dragLeave`
+  * old: `dragLeave :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self MouseEvent`
+  * new: `dragLeave :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self DragEvent`
+* `JSDOM.GlobalEventHandlers.dragOver`
+  * old: `dragOver :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self MouseEvent`
+  * new: `dragOver :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self DragEvent`
+* `JSDOM.GlobalEventHandlers.dragStart`
+  * old: `dragStart :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self MouseEvent`
+  * new: `dragStart :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self DragEvent`
+* `JSDOM.WebGLRenderingContextBase.drawArrays`
+  * old: `drawArrays :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLint -> GLsizei -> m ()`
+  * new: `drawArrays :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Int -> Int -> m ()`
+* `JSDOM.WebGLRenderingContextBase.drawElements`
+  * old: `drawElements :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLsizei -> GLenum -> GLintptr -> m ()`
+  * new: `drawElements :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Int -> Word -> Int53 -> m ()`
+* `JSDOM.GlobalEventHandlers.drop`
+  * old: `drop :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self MouseEvent`
+  * new: `drop :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self DragEvent`
+* `JSDOM.CanvasPath.ellipse`
+  * old: `ellipse :: (MonadDOM m, IsCanvasPath self) => self -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Bool -> m ()`
+  * new: `ellipse :: (MonadDOM m, IsCanvasPath self) => self -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> Maybe Bool -> m ()`
+* `JSDOM.WebGLRenderingContextBase.enable`
+  * old: `enable :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> m ()`
+  * new: `enable :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()`
+* `JSDOM.WebGLRenderingContextBase.enableVertexAttribArray`
+  * old: `enableVertexAttribArray :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLuint -> m ()`
+  * new: `enableVertexAttribArray :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()`
+* `JSDOM.SubtleCrypto.encrypt`
+  * old: `encrypt :: (MonadDOM m, ToJSString algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal`
+  * new: `encrypt :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ArrayBuffer`
+* `JSDOM.SubtleCrypto.encrypt_`
+  * old: `encrypt_ :: (MonadDOM m, ToJSString algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()`
+  * new: `encrypt_ :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()`
+* `JSDOM.HTMLMediaElement.encrypted`
+  * old: `encrypted :: (IsHTMLMediaElement self, IsEventTarget self) => EventName self onencrypted`
+  * new: `encrypted :: (IsHTMLMediaElement self, IsEventTarget self) => EventName self MediaEncryptedEvent`
+* `JSDOM.SpeechSynthesisUtterance.end`
+  * old: `end :: EventName SpeechSynthesisUtterance Event`
+  * new: `end :: EventName SpeechSynthesisUtterance SpeechSynthesisEvent`
+* `JSDOM.SVGAnimationElement.endElementAt`
+  * old: `endElementAt :: (MonadDOM m, IsSVGAnimationElement self) => self -> Maybe Float -> m ()`
+  * new: `endElementAt :: (MonadDOM m, IsSVGAnimationElement self) => self -> Float -> m ()`
+* `JSDOM.ReadableStreamDefaultController.enqueue`
+  * old: `enqueue :: (MonadDOM m, ToJSVal chunk) => ReadableStreamDefaultController -> Maybe chunk -> m ()`
+  * new: `enqueue :: MonadDOM m => ReadableStreamDefaultController -> JSVal -> m ()`
+* `JSDOM.ReadableByteStreamController.enqueue`
+  * old: `enqueue :: (MonadDOM m, ToJSVal chunk) => ReadableByteStreamController -> Maybe chunk -> m ()`
+  * new: `enqueue :: (MonadDOM m, IsArrayBufferView chunk) => ReadableByteStreamController -> chunk -> m ()`
+* `JSDOM.XMLHttpRequestEventTarget.error`
+  * old: `error :: (IsXMLHttpRequestEventTarget self, IsEventTarget self) => EventName self XMLHttpRequestProgressEvent`
+  * new: `error :: (IsXMLHttpRequestEventTarget self, IsEventTarget self) => EventName self ProgressEvent`
+* `JSDOM.WorkerGlobalScope.error`
+  * old: `error :: (IsWorkerGlobalScope self, IsEventTarget self) => EventName self UIEvent`
+  * new: `error :: (IsWorkerGlobalScope self, IsEventTarget self) => EventName self Event`
+* `JSDOM.WebSocket.error`
+  * old: `error :: EventName WebSocket UIEvent`
+  * new: `error :: EventName WebSocket Event`
+* `JSDOM.SpeechSynthesisUtterance.error`
+  * old: `error :: EventName SpeechSynthesisUtterance UIEvent`
+  * new: `error :: EventName SpeechSynthesisUtterance SpeechSynthesisErrorEvent`
+* `JSDOM.SourceBuffer.error`
+  * old: `error :: EventName SourceBuffer UIEvent`
+  * new: `error :: EventName SourceBuffer Event`
+* `JSDOM.ReadableStreamDefaultController.error`
+  * old: `error :: (MonadDOM m, ToJSVal error) => ReadableStreamDefaultController -> Maybe error -> m ()`
+  * new: `error :: MonadDOM m => ReadableStreamDefaultController -> JSVal -> m ()`
+* `JSDOM.ReadableByteStreamController.error`
+  * old: `error :: (MonadDOM m, ToJSVal error) => ReadableByteStreamController -> Maybe error -> m ()`
+  * new: `error :: MonadDOM m => ReadableByteStreamController -> JSVal -> m ()`
+* `JSDOM.RTCDataChannel.error`
+  * old: `error :: EventName RTCDataChannel UIEvent`
+  * new: `error :: EventName RTCDataChannel RTCErrorEvent`
+* `JSDOM.Notification.error`
+  * old: `error :: EventName Notification UIEvent`
+  * new: `error :: EventName Notification Event`
+* `JSDOM.GlobalEventHandlers.error`
+  * old: `error :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self UIEvent`
+  * new: `error :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event`
+* `JSDOM.FileReader.error`
+  * old: `error :: EventName FileReader UIEvent`
+  * new: `error :: EventName FileReader ProgressEvent`
+* `JSDOM.EventSource.error`
+  * old: `error :: EventName EventSource UIEvent`
+  * new: `error :: EventName EventSource Event`
+* `JSDOM.AbstractWorker.error`
+  * old: `error :: (IsAbstractWorker self, IsEventTarget self) => EventName self UIEvent`
+  * new: `error :: (IsAbstractWorker self, IsEventTarget self) => EventName self Event`
+* `JSDOM.XPathExpression.evaluate`
+  * old: `evaluate :: (MonadDOM m, IsNode contextNode) => XPathExpression -> Maybe contextNode -> Maybe Word -> Maybe XPathResult -> m XPathResult`
+  * new: `evaluate :: (MonadDOM m, IsNode contextNode) => XPathExpression -> contextNode -> Maybe Word -> Maybe XPathResult -> m XPathResult`
+* `JSDOM.XPathExpression.evaluate_`
+  * old: `evaluate_ :: (MonadDOM m, IsNode contextNode) => XPathExpression -> Maybe contextNode -> Maybe Word -> Maybe XPathResult -> m ()`
+  * new: `evaluate_ :: (MonadDOM m, IsNode contextNode) => XPathExpression -> contextNode -> Maybe Word -> Maybe XPathResult -> m ()`
+* `JSDOM.Document.execCommand`
+  * old: `execCommand :: (MonadDOM m, IsDocument self, ToJSString commandId, ToJSString value) => self -> commandId -> Bool -> Maybe value -> m Bool`
+  * new: `execCommand :: (MonadDOM m, IsDocument self, ToJSString commandId, ToJSString value) => self -> commandId -> Maybe Bool -> Maybe value -> m Bool`
+* `JSDOM.Document.execCommand_`
+  * old: `execCommand_ :: (MonadDOM m, IsDocument self, ToJSString commandId, ToJSString value) => self -> commandId -> Bool -> Maybe value -> m ()`
+  * new: `execCommand_ :: (MonadDOM m, IsDocument self, ToJSString commandId, ToJSString value) => self -> commandId -> Maybe Bool -> Maybe value -> m ()`
+* `JSDOM.AudioParam.exponentialRampToValueAtTime`
+  * old: `exponentialRampToValueAtTime :: MonadDOM m => AudioParam -> Float -> Float -> m ()`
+  * new: `exponentialRampToValueAtTime :: MonadDOM m => AudioParam -> Float -> Double -> m AudioParam`
+* `JSDOM.SubtleCrypto.exportKey`
+  * old: `exportKey :: (MonadDOM m, ToJSString format) => SubtleCrypto -> format -> CryptoKey -> m JSVal`
+  * new: `exportKey :: MonadDOM m => SubtleCrypto -> KeyFormat -> CryptoKey -> m ArrayBufferOrJsonWebKey`
+* `JSDOM.SubtleCrypto.exportKey_`
+  * old: `exportKey_ :: (MonadDOM m, ToJSString format) => SubtleCrypto -> format -> CryptoKey -> m ()`
+  * new: `exportKey_ :: MonadDOM m => SubtleCrypto -> KeyFormat -> CryptoKey -> m ()`
+* `JSDOM.CSSKeyframesRule.findRule`
+  * old: `findRule :: (MonadDOM m, ToJSString key) => CSSKeyframesRule -> key -> m (Maybe CSSKeyframeRule)`
+  * new: `findRule :: (MonadDOM m, ToJSString select) => CSSKeyframesRule -> select -> m (Maybe CSSKeyframeRule)`
+* `JSDOM.CSSKeyframesRule.findRuleUnchecked`
+  * old: `findRuleUnchecked :: (MonadDOM m, ToJSString key) => CSSKeyframesRule -> key -> m CSSKeyframeRule`
+  * new: `findRuleUnchecked :: (MonadDOM m, ToJSString select) => CSSKeyframesRule -> select -> m CSSKeyframeRule`
+* `JSDOM.CSSKeyframesRule.findRuleUnsafe`
+  * old: `findRuleUnsafe :: (MonadDOM m, ToJSString key, HasCallStack) => CSSKeyframesRule -> key -> m CSSKeyframeRule`
+  * new: `findRuleUnsafe :: (MonadDOM m, ToJSString select, HasCallStack) => CSSKeyframesRule -> select -> m CSSKeyframeRule`
+* `JSDOM.CSSKeyframesRule.findRule_`
+  * old: `findRule_ :: (MonadDOM m, ToJSString key) => CSSKeyframesRule -> key -> m ()`
+  * new: `findRule_ :: (MonadDOM m, ToJSString select) => CSSKeyframesRule -> select -> m ()`
+* `JSDOM.Element.focusin`
+  * old: `focusin :: (IsElement self, IsEventTarget self) => EventName self onfocusin`
+  * new: `focusin :: (IsElement self, IsEventTarget self) => EventName self FocusEvent`
+* `JSDOM.Element.focusout`
+  * old: `focusout :: (IsElement self, IsEventTarget self) => EventName self onfocusout`
+  * new: `focusout :: (IsElement self, IsEventTarget self) => EventName self FocusEvent`
+* `JSDOM.WebGLRenderingContextBase.framebufferRenderbuffer`
+  * old: `framebufferRenderbuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> GLenum -> Maybe WebGLRenderbuffer -> m ()`
+  * new: `framebufferRenderbuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Word -> Maybe WebGLRenderbuffer -> m ()`
+* `JSDOM.WebGLRenderingContextBase.framebufferTexture2D`
+  * old: `framebufferTexture2D :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> GLenum -> Maybe WebGLTexture -> GLint -> m ()`
+  * new: `framebufferTexture2D :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Word -> Maybe WebGLTexture -> Int -> m ()`
+* `JSDOM.WebGLRenderingContextBase.frontFace`
+  * old: `frontFace :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> m ()`
+  * new: `frontFace :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()`
+* `JSDOM.SubtleCrypto.generateKey`
+  * old: `generateKey :: (MonadDOM m, ToJSString algorithm) => SubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m JSVal`
+  * new: `generateKey :: (MonadDOM m, IsAlgorithmIdentifier algorithm) => SubtleCrypto -> algorithm -> Bool -> [KeyUsage] -> m CryptoKeyOrCryptoKeyPair`
+* `JSDOM.SubtleCrypto.generateKey_`
+  * old: `generateKey_ :: (MonadDOM m, ToJSString algorithm) => SubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m ()`
+  * new: `generateKey_ :: (MonadDOM m, IsAlgorithmIdentifier algorithm) => SubtleCrypto -> algorithm -> Bool -> [KeyUsage] -> m ()`
+* `JSDOM.WebGLRenderingContextBase.generateMipmap`
+  * old: `generateMipmap :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> m ()`
+  * new: `generateMipmap :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()`
+* `JSDOM.MediaKeyStatusMap.get`
+  * old: `get :: (MonadDOM m, IsBufferSource keyId) => MediaKeyStatusMap -> keyId -> m JSVal`
+  * new: `get :: (MonadDOM m, IsBufferSource keyId) => MediaKeyStatusMap -> keyId -> m MediaKeyStatusOrUndefined`
+* `JSDOM.IDBObjectStore.get`
+  * old: `get :: (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> m IDBRequest`
+  * new: `get :: MonadDOM m => IDBObjectStore -> JSVal -> m IDBRequest`
+* `JSDOM.IDBIndex.get`
+  * old: `get :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> m IDBRequest`
+  * new: `get :: MonadDOM m => IDBIndex -> JSVal -> m IDBRequest`
+* `JSDOM.CustomElementRegistry.get`
+  * old: `get :: (MonadDOM m, ToJSString name) => CustomElementRegistry -> name -> m JSVal`
+  * new: `get :: (MonadDOM m, ToJSString name) => CustomElementRegistry -> name -> m CustomElementConstructorOrUndefined`
+* `JSDOM.DeviceOrientationEvent.getAbsolute`
+  * old: `getAbsolute :: MonadDOM m => DeviceOrientationEvent -> m (Maybe Bool)`
+  * new: `getAbsolute :: MonadDOM m => DeviceOrientationEvent -> m Bool`
+* `JSDOM.DeviceMotionEvent.getAcceleration`
+  * old: `getAcceleration :: MonadDOM m => DeviceMotionEvent -> m (Maybe Acceleration)`
+  * new: `getAcceleration :: MonadDOM m => DeviceMotionEvent -> m (Maybe DeviceMotionEventAcceleration)`
+* `JSDOM.DeviceMotionEvent.getAccelerationIncludingGravity`
+  * old: `getAccelerationIncludingGravity :: MonadDOM m => DeviceMotionEvent -> m (Maybe Acceleration)`
+  * new: `getAccelerationIncludingGravity :: MonadDOM m => DeviceMotionEvent -> m (Maybe DeviceMotionEventAcceleration)`
+* `JSDOM.DeviceMotionEvent.getAccelerationIncludingGravityUnchecked`
+  * old: `getAccelerationIncludingGravityUnchecked :: MonadDOM m => DeviceMotionEvent -> m Acceleration`
+  * new: `getAccelerationIncludingGravityUnchecked :: MonadDOM m => DeviceMotionEvent -> m DeviceMotionEventAcceleration`
+* `JSDOM.DeviceMotionEvent.getAccelerationIncludingGravityUnsafe`
+  * old: `getAccelerationIncludingGravityUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEvent -> m Acceleration`
+  * new: `getAccelerationIncludingGravityUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEvent -> m DeviceMotionEventAcceleration`
+* `JSDOM.DeviceMotionEvent.getAccelerationUnchecked`
+  * old: `getAccelerationUnchecked :: MonadDOM m => DeviceMotionEvent -> m Acceleration`
+  * new: `getAccelerationUnchecked :: MonadDOM m => DeviceMotionEvent -> m DeviceMotionEventAcceleration`
+* `JSDOM.DeviceMotionEvent.getAccelerationUnsafe`
+  * old: `getAccelerationUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEvent -> m Acceleration`
+  * new: `getAccelerationUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEvent -> m DeviceMotionEventAcceleration`
+* `JSDOM.WebGLRenderingContextBase.getActiveAttrib`
+  * old: `getActiveAttrib :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> GLuint -> m WebGLActiveInfo`
+  * new: `getActiveAttrib :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> Word -> m (Maybe WebGLActiveInfo)`
+* `JSDOM.WebGLRenderingContextBase.getActiveAttrib_`
+  * old: `getActiveAttrib_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> GLuint -> m ()`
+  * new: `getActiveAttrib_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> Word -> m ()`
+* `JSDOM.WebGLRenderingContextBase.getActiveUniform`
+  * old: `getActiveUniform :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> GLuint -> m WebGLActiveInfo`
+  * new: `getActiveUniform :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> Word -> m (Maybe WebGLActiveInfo)`
+* `JSDOM.WebGLRenderingContextBase.getActiveUniform_`
+  * old: `getActiveUniform_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> GLuint -> m ()`
+  * new: `getActiveUniform_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> Word -> m ()`
+* `JSDOM.VTTCue.getAlign`
+  * old: `getAlign :: (MonadDOM m, FromJSString result) => VTTCue -> m result`
+  * new: `getAlign :: MonadDOM m => VTTCue -> m AlignSetting`
+* `JSDOM.IDBObjectStore.getAll`
+  * old: `getAll :: (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> Maybe Word -> m IDBRequest`
+  * new: `getAll :: MonadDOM m => IDBObjectStore -> JSVal -> Maybe Word -> m IDBRequest`
+* `JSDOM.IDBIndex.getAll`
+  * old: `getAll :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> Maybe Word -> m IDBRequest`
+  * new: `getAll :: MonadDOM m => IDBIndex -> JSVal -> Maybe Word -> m IDBRequest`
+* `JSDOM.IDBObjectStore.getAllKeys`
+  * old: `getAllKeys :: (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> Maybe Word -> m IDBRequest`
+  * new: `getAllKeys :: MonadDOM m => IDBObjectStore -> JSVal -> Maybe Word -> m IDBRequest`
+* `JSDOM.IDBIndex.getAllKeys`
+  * old: `getAllKeys :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> Maybe Word -> m IDBRequest`
+  * new: `getAllKeys :: MonadDOM m => IDBIndex -> JSVal -> Maybe Word -> m IDBRequest`
+* `JSDOM.IDBObjectStore.getAllKeys_`
+  * old: `getAllKeys_ :: (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> Maybe Word -> m ()`
+  * new: `getAllKeys_ :: MonadDOM m => IDBObjectStore -> JSVal -> Maybe Word -> m ()`
+* `JSDOM.IDBIndex.getAllKeys_`
+  * old: `getAllKeys_ :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> Maybe Word -> m ()`
+  * new: `getAllKeys_ :: MonadDOM m => IDBIndex -> JSVal -> Maybe Word -> m ()`
+* `JSDOM.IDBObjectStore.getAll_`
+  * old: `getAll_ :: (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> Maybe Word -> m ()`
+  * new: `getAll_ :: MonadDOM m => IDBObjectStore -> JSVal -> Maybe Word -> m ()`
+* `JSDOM.IDBIndex.getAll_`
+  * old: `getAll_ :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> Maybe Word -> m ()`
+  * new: `getAll_ :: MonadDOM m => IDBIndex -> JSVal -> Maybe Word -> m ()`
+* `JSDOM.SVGAnimatedRect.getAnimVal`
+  * old: `getAnimVal :: MonadDOM m => SVGAnimatedRect -> m SVGRect`
+  * new: `getAnimVal :: MonadDOM m => SVGAnimatedRect -> m DOMRect`
+* `JSDOM.DataTransferItem.getAsFile`
+  * old: `getAsFile :: MonadDOM m => DataTransferItem -> m (Maybe Blob)`
+  * new: `getAsFile :: MonadDOM m => DataTransferItem -> m (Maybe File)`
+* `JSDOM.DataTransferItem.getAsFileUnchecked`
+  * old: `getAsFileUnchecked :: MonadDOM m => DataTransferItem -> m Blob`
+  * new: `getAsFileUnchecked :: MonadDOM m => DataTransferItem -> m File`
+* `JSDOM.DataTransferItem.getAsFileUnsafe`
+  * old: `getAsFileUnsafe :: (MonadDOM m, HasCallStack) => DataTransferItem -> m Blob`
+  * new: `getAsFileUnsafe :: (MonadDOM m, HasCallStack) => DataTransferItem -> m File`
+* `JSDOM.DataTransferItem.getAsString`
+  * old: `getAsString :: (MonadDOM m, ToJSString callback) => DataTransferItem -> Maybe (StringCallback callback) -> m ()`
+  * new: `getAsString :: MonadDOM m => DataTransferItem -> Maybe FunctionStringCallback -> m ()`
+* `JSDOM.WebGLRenderingContextBase.getAttachedShaders`
+  * old: `getAttachedShaders :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> m (Maybe [WebGLShader])`
+  * new: `getAttachedShaders :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> m (Maybe [WebGLShader])`
+* `JSDOM.WebGLRenderingContextBase.getAttachedShaders_`
+  * old: `getAttachedShaders_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> m ()`
+  * new: `getAttachedShaders_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> m ()`
+* `JSDOM.WebGLRenderingContextBase.getAttribLocation`
+  * old: `getAttribLocation :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> Maybe WebGLProgram -> name -> m GLint`
+  * new: `getAttribLocation :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> WebGLProgram -> name -> m Int`
+* `JSDOM.WebGLRenderingContextBase.getAttribLocation_`
+  * old: `getAttribLocation_ :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> Maybe WebGLProgram -> name -> m ()`
+  * new: `getAttribLocation_ :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> WebGLProgram -> name -> m ()`
+* `JSDOM.Element.getAttributeNS`
+  * old: `getAttributeNS :: (MonadDOM m, IsElement self, ToJSString namespaceURI, ToJSString localName, FromJSString result) => self -> Maybe namespaceURI -> localName -> m (Maybe result)`
+  * new: `getAttributeNS :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName, FromJSString result) => self -> Maybe namespace -> localName -> m (Maybe result)`
+* `JSDOM.Element.getAttributeNSUnchecked`
+  * old: `getAttributeNSUnchecked :: (MonadDOM m, IsElement self, ToJSString namespaceURI, ToJSString localName, FromJSString result) => self -> Maybe namespaceURI -> localName -> m result`
+  * new: `getAttributeNSUnchecked :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName, FromJSString result) => self -> Maybe namespace -> localName -> m result`
+* `JSDOM.Element.getAttributeNSUnsafe`
+  * old: `getAttributeNSUnsafe :: (MonadDOM m, IsElement self, ToJSString namespaceURI, ToJSString localName, HasCallStack, FromJSString result) => self -> Maybe namespaceURI -> localName -> m result`
+  * new: `getAttributeNSUnsafe :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName, HasCallStack, FromJSString result) => self -> Maybe namespace -> localName -> m result`
+* `JSDOM.Element.getAttributeNS_`
+  * old: `getAttributeNS_ :: (MonadDOM m, IsElement self, ToJSString namespaceURI, ToJSString localName) => self -> Maybe namespaceURI -> localName -> m ()`
+  * new: `getAttributeNS_ :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m ()`
+* `JSDOM.Element.getAttributeNodeNS`
+  * old: `getAttributeNodeNS :: (MonadDOM m, IsElement self, ToJSString namespaceURI, ToJSString localName) => self -> Maybe namespaceURI -> localName -> m (Maybe Attr)`
+  * new: `getAttributeNodeNS :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m (Maybe Attr)`
+* `JSDOM.Element.getAttributeNodeNSUnchecked`
+  * old: `getAttributeNodeNSUnchecked :: (MonadDOM m, IsElement self, ToJSString namespaceURI, ToJSString localName) => self -> Maybe namespaceURI -> localName -> m Attr`
+  * new: `getAttributeNodeNSUnchecked :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m Attr`
+* `JSDOM.Element.getAttributeNodeNSUnsafe`
+  * old: `getAttributeNodeNSUnsafe :: (MonadDOM m, IsElement self, ToJSString namespaceURI, ToJSString localName, HasCallStack) => self -> Maybe namespaceURI -> localName -> m Attr`
+  * new: `getAttributeNodeNSUnsafe :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName, HasCallStack) => self -> Maybe namespace -> localName -> m Attr`
+* `JSDOM.Element.getAttributeNodeNS_`
+  * old: `getAttributeNodeNS_ :: (MonadDOM m, IsElement self, ToJSString namespaceURI, ToJSString localName) => self -> Maybe namespaceURI -> localName -> m ()`
+  * new: `getAttributeNodeNS_ :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m ()`
+* `JSDOM.Screen.getAvailHeight`
+  * old: `getAvailHeight :: MonadDOM m => Screen -> m Word`
+  * new: `getAvailHeight :: (MonadDOM m, IsScreen self) => self -> m Int`
+* `JSDOM.Screen.getAvailWidth`
+  * old: `getAvailWidth :: MonadDOM m => Screen -> m Word`
+  * new: `getAvailWidth :: (MonadDOM m, IsScreen self) => self -> m Int`
+* `JSDOM.SVGGraphicsElement.getBBox`
+  * old: `getBBox :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m SVGRect`
+  * new: `getBBox :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m DOMRect`
+* `JSDOM.SVGAnimatedString.getBaseVal`
+  * old: `getBaseVal :: (MonadDOM m, FromJSString result) => SVGAnimatedString -> m result`
+  * new: `getBaseVal :: MonadDOM m => SVGAnimatedString -> m TrustedScriptURLOrString`
+* `JSDOM.SVGAnimatedRect.getBaseVal`
+  * old: `getBaseVal :: MonadDOM m => SVGAnimatedRect -> m SVGRect`
+  * new: `getBaseVal :: MonadDOM m => SVGAnimatedRect -> m DOMRect`
+* `JSDOM.WebSocket.getBinaryType`
+  * old: `getBinaryType :: (MonadDOM m, FromJSString result) => WebSocket -> m result`
+  * new: `getBinaryType :: MonadDOM m => WebSocket -> m BinaryType`
+* `JSDOM.RTCDataChannel.getBinaryType`
+  * old: `getBinaryType :: (MonadDOM m, FromJSString result) => RTCDataChannel -> m result`
+  * new: `getBinaryType :: MonadDOM m => RTCDataChannel -> m BinaryType`
+* `JSDOM.WebGLRenderingContextBase.getBufferParameter`
+  * old: `getBufferParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> m JSVal`
+  * new: `getBufferParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m JSVal`
+* `JSDOM.WebGLRenderingContextBase.getBufferParameter_`
+  * old: `getBufferParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> m ()`
+  * new: `getBufferParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()`
+* `JSDOM.WebSocket.getBufferedAmount`
+  * old: `getBufferedAmount :: MonadDOM m => WebSocket -> m Word`
+  * new: `getBufferedAmount :: MonadDOM m => WebSocket -> m Word53`
+* `JSDOM.MouseEvent.getButton`
+  * old: `getButton :: (MonadDOM m, IsMouseEvent self) => self -> m Word`
+  * new: `getButton :: (MonadDOM m, IsMouseEvent self) => self -> m Int`
+* `JSDOM.ReadableByteStreamController.getByobRequest`
+  * old: `getByobRequest :: MonadDOM m => ReadableByteStreamController -> m ReadableStreamBYOBRequest`
+  * new: `getByobRequest :: MonadDOM m => ReadableByteStreamController -> m (Maybe ReadableStreamBYOBRequest)`
+* `JSDOM.AnalyserNode.getByteFrequencyData`
+  * old: `getByteFrequencyData :: (MonadDOM m, IsUint8Array array) => AnalyserNode -> Maybe array -> m ()`
+  * new: `getByteFrequencyData :: (MonadDOM m, IsUint8Array array) => AnalyserNode -> array -> m ()`
+* `JSDOM.AnalyserNode.getByteTimeDomainData`
+  * old: `getByteTimeDomainData :: (MonadDOM m, IsUint8Array array) => AnalyserNode -> Maybe array -> m ()`
+  * new: `getByteTimeDomainData :: (MonadDOM m, IsUint8Array array) => AnalyserNode -> array -> m ()`
+* `JSDOM.SVGGraphicsElement.getCTM`
+  * old: `getCTM :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m SVGMatrix`
+  * new: `getCTM :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m (Maybe DOMMatrix)`
+* `JSDOM.WebGLRenderingContextBase.getCanvas`
+  * old: `getCanvas :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m HTMLCanvasElement`
+  * new: `getCanvas :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m HTMLCanvasElementOrOffscreenCanvas`
+* `JSDOM.AudioNode.getChannelCountMode`
+  * old: `getChannelCountMode :: (MonadDOM m, IsAudioNode self, FromJSString result) => self -> m result`
+  * new: `getChannelCountMode :: (MonadDOM m, IsAudioNode self) => self -> m ChannelCountMode`
+* `JSDOM.AudioNode.getChannelInterpretation`
+  * old: `getChannelInterpretation :: (MonadDOM m, IsAudioNode self, FromJSString result) => self -> m result`
+  * new: `getChannelInterpretation :: (MonadDOM m, IsAudioNode self) => self -> m ChannelInterpretation`
+* `JSDOM.SpeechSynthesisEvent.getCharIndex`
+  * old: `getCharIndex :: MonadDOM m => SpeechSynthesisEvent -> m Word`
+  * new: `getCharIndex :: (MonadDOM m, IsSpeechSynthesisEvent self) => self -> m Word`
+* `JSDOM.SVGTextContentElement.getCharNumAtPosition`
+  * old: `getCharNumAtPosition :: (MonadDOM m, IsSVGTextContentElement self) => self -> SVGPoint -> m Int`
+  * new: `getCharNumAtPosition :: (MonadDOM m, IsSVGTextContentElement self) => self -> Maybe DOMPointInit -> m Int`
+* `JSDOM.SVGTextContentElement.getCharNumAtPosition_`
+  * old: `getCharNumAtPosition_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> SVGPoint -> m ()`
+  * new: `getCharNumAtPosition_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> Maybe DOMPointInit -> m ()`
+* `JSDOM.Element.getClientHeight`
+  * old: `getClientHeight :: (MonadDOM m, IsElement self) => self -> m Double`
+  * new: `getClientHeight :: (MonadDOM m, IsElement self) => self -> m Int`
+* `JSDOM.Element.getClientLeft`
+  * old: `getClientLeft :: (MonadDOM m, IsElement self) => self -> m Double`
+  * new: `getClientLeft :: (MonadDOM m, IsElement self) => self -> m Int`
+* `JSDOM.Range.getClientRects`
+  * old: `getClientRects :: MonadDOM m => Range -> m [DOMRect]`
+  * new: `getClientRects :: MonadDOM m => Range -> m DOMRectList`
+* `JSDOM.Element.getClientRects`
+  * old: `getClientRects :: (MonadDOM m, IsElement self) => self -> m [DOMRect]`
+  * new: `getClientRects :: (MonadDOM m, IsElement self) => self -> m DOMRectList`
+* `JSDOM.Element.getClientTop`
+  * old: `getClientTop :: (MonadDOM m, IsElement self) => self -> m Double`
+  * new: `getClientTop :: (MonadDOM m, IsElement self) => self -> m Int`
+* `JSDOM.Element.getClientWidth`
+  * old: `getClientWidth :: (MonadDOM m, IsElement self) => self -> m Double`
+  * new: `getClientWidth :: (MonadDOM m, IsElement self) => self -> m Int`
+* `JSDOM.Touch.getClientX`
+  * old: `getClientX :: MonadDOM m => Touch -> m Int`
+  * new: `getClientX :: MonadDOM m => Touch -> m Double`
+* `JSDOM.Touch.getClientY`
+  * old: `getClientY :: MonadDOM m => Touch -> m Int`
+  * new: `getClientY :: MonadDOM m => Touch -> m Double`
+* `JSDOM.MediaKeySession.getClosed`
+  * old: `getClosed :: MonadDOM m => MediaKeySession -> m ()`
+  * new: `getClosed :: MonadDOM m => MediaKeySession -> m MediaKeySessionClosedReason`
+* `JSDOM.DOMException.getCode`
+  * old: `getCode :: MonadDOM m => DOMException -> m Word`
+  * new: `getCode :: (MonadDOM m, IsDOMException self) => self -> m Word`
+* `JSDOM.Screen.getColorDepth`
+  * old: `getColorDepth :: MonadDOM m => Screen -> m Word`
+  * new: `getColorDepth :: (MonadDOM m, IsScreen self) => self -> m Word`
+* `JSDOM.SecurityPolicyViolationEvent.getColumnNumber`
+  * old: `getColumnNumber :: MonadDOM m => SecurityPolicyViolationEvent -> m Int`
+  * new: `getColumnNumber :: MonadDOM m => SecurityPolicyViolationEvent -> m Word`
+* `JSDOM.Window.getComputedStyle`
+  * old: `getComputedStyle :: (MonadDOM m, IsElement element, ToJSString pseudoElement) => Window -> element -> Maybe pseudoElement -> m CSSStyleDeclaration`
+  * new: `getComputedStyle :: (MonadDOM m, IsElement elt, ToJSString pseudoElt) => Window -> elt -> Maybe pseudoElt -> m CSSStyleProperties`
+* `JSDOM.Window.getComputedStyle`
+  * old: `getComputedStyle :: (MonadDOM m, IsElement element, ToJSString pseudoElement) => Window -> element -> Maybe pseudoElement -> m CSSStyleDeclaration`
+  * new: `getComputedStyle :: (MonadDOM m, IsElement elt, ToJSString pseudoElt) => Window -> elt -> Maybe pseudoElt -> m CSSStyleProperties`
+* `JSDOM.Window.getComputedStyle_`
+  * old: `getComputedStyle_ :: (MonadDOM m, IsElement element, ToJSString pseudoElement) => Window -> element -> Maybe pseudoElement -> m ()`
+  * new: `getComputedStyle_ :: (MonadDOM m, IsElement elt, ToJSString pseudoElt) => Window -> elt -> Maybe pseudoElt -> m ()`
+* `JSDOM.Window.getComputedStyle_`
+  * old: `getComputedStyle_ :: (MonadDOM m, IsElement element, ToJSString pseudoElement) => Window -> element -> Maybe pseudoElement -> m ()`
+  * new: `getComputedStyle_ :: (MonadDOM m, IsElement elt, ToJSString pseudoElt) => Window -> elt -> Maybe pseudoElt -> m ()`
+* `JSDOM.PerformanceTiming.getConnectEnd`
+  * old: `getConnectEnd :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getConnectEnd :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceResourceTiming.getConnectEnd`
+  * old: `getConnectEnd :: MonadDOM m => PerformanceResourceTiming -> m DOMHighResTimeStamp`
+  * new: `getConnectEnd :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double`
+* `JSDOM.PerformanceTiming.getConnectStart`
+  * old: `getConnectStart :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getConnectStart :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceResourceTiming.getConnectStart`
+  * old: `getConnectStart :: MonadDOM m => PerformanceResourceTiming -> m DOMHighResTimeStamp`
+  * new: `getConnectStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double`
+* `JSDOM.HTMLObjectElement.getContentDocument`
+  * old: `getContentDocument :: MonadDOM m => HTMLObjectElement -> m Document`
+  * new: `getContentDocument :: MonadDOM m => HTMLObjectElement -> m (Maybe Document)`
+* `JSDOM.HTMLIFrameElement.getContentDocument`
+  * old: `getContentDocument :: MonadDOM m => HTMLIFrameElement -> m Document`
+  * new: `getContentDocument :: MonadDOM m => HTMLIFrameElement -> m (Maybe Document)`
+* `JSDOM.HTMLFrameElement.getContentDocument`
+  * old: `getContentDocument :: MonadDOM m => HTMLFrameElement -> m Document`
+  * new: `getContentDocument :: MonadDOM m => HTMLFrameElement -> m (Maybe Document)`
+* `JSDOM.HTMLIFrameElement.getContentWindow`
+  * old: `getContentWindow :: MonadDOM m => HTMLIFrameElement -> m Window`
+  * new: `getContentWindow :: MonadDOM m => HTMLIFrameElement -> m (Maybe Window)`
+* `JSDOM.HTMLFrameElement.getContentWindow`
+  * old: `getContentWindow :: MonadDOM m => HTMLFrameElement -> m Window`
+  * new: `getContentWindow :: MonadDOM m => HTMLFrameElement -> m (Maybe Window)`
+* `JSDOM.HTMLCanvasElement.getContext`
+  * old: `getContext :: (MonadDOM m, ToJSString contextId, ToJSVal arguments) => HTMLCanvasElement -> contextId -> [arguments] -> m (Maybe RenderingContext)`
+  * new: `getContext :: (MonadDOM m, ToJSString contextId) => HTMLCanvasElement -> contextId -> JSVal -> m (Maybe RenderingContext)`
+* `JSDOM.AudioNode.getContext`
+  * old: `getContext :: (MonadDOM m, IsAudioNode self) => self -> m AudioContext`
+  * new: `getContext :: (MonadDOM m, IsAudioNode self) => self -> m BaseAudioContext`
+* `JSDOM.HTMLCanvasElement.getContextUnchecked`
+  * old: `getContextUnchecked :: (MonadDOM m, ToJSString contextId, ToJSVal arguments) => HTMLCanvasElement -> contextId -> [arguments] -> m RenderingContext`
+  * new: `getContextUnchecked :: (MonadDOM m, ToJSString contextId) => HTMLCanvasElement -> contextId -> JSVal -> m RenderingContext`
+* `JSDOM.HTMLCanvasElement.getContextUnsafe`
+  * old: `getContextUnsafe :: (MonadDOM m, ToJSString contextId, ToJSVal arguments, HasCallStack) => HTMLCanvasElement -> contextId -> [arguments] -> m RenderingContext`
+  * new: `getContextUnsafe :: (MonadDOM m, ToJSString contextId, HasCallStack) => HTMLCanvasElement -> contextId -> JSVal -> m RenderingContext`
+* `JSDOM.HTMLCanvasElement.getContext_`
+  * old: `getContext_ :: (MonadDOM m, ToJSString contextId, ToJSVal arguments) => HTMLCanvasElement -> contextId -> [arguments] -> m ()`
+  * new: `getContext_ :: (MonadDOM m, ToJSString contextId) => HTMLCanvasElement -> contextId -> JSVal -> m ()`
+* `JSDOM.HTMLLabelElement.getControl`
+  * old: `getControl :: MonadDOM m => HTMLLabelElement -> m HTMLElement`
+  * new: `getControl :: MonadDOM m => HTMLLabelElement -> m (Maybe HTMLElement)`
+* `JSDOM.CSSStyleDeclaration.getCssText`
+  * old: `getCssText :: (MonadDOM m, FromJSString result) => CSSStyleDeclaration -> m result`
+  * new: `getCssText :: (MonadDOM m, IsCSSStyleDeclaration self, FromJSString result) => self -> m result`
+* `JSDOM.CSSRule.getCssText`
+  * old: `getCssText :: (MonadDOM m, IsCSSRule self, FromJSString result) => self -> m (Maybe result)`
+  * new: `getCssText :: (MonadDOM m, IsCSSRule self, FromJSString result) => self -> m result`
+* `JSDOM.TextTrackCueList.getCueById`
+  * old: `getCueById :: (MonadDOM m, ToJSString id) => TextTrackCueList -> id -> m TextTrackCue`
+  * new: `getCueById :: (MonadDOM m, ToJSString id) => TextTrackCueList -> id -> m (Maybe TextTrackCue)`
+* `JSDOM.Geolocation.getCurrentPosition`
+  * old: `getCurrentPosition :: MonadDOM m => Geolocation -> Maybe PositionOptions -> m Geoposition`
+  * new: `getCurrentPosition :: MonadDOM m => Geolocation -> PositionCallback -> Maybe PositionErrorCallback -> Maybe PositionOptions -> m ()`
+* `JSDOM.Geolocation.getCurrentPosition'`
+  * old: `getCurrentPosition' :: MonadDOM m => Geolocation -> Maybe PositionOptions -> m (Either PositionError Geoposition)`
+  * new: `getCurrentPosition' :: MonadDOM m => Geolocation -> Maybe PositionOptions -> m (Either GeolocationPositionError GeolocationPosition)`
+* `JSDOM.Document.getCurrentScript`
+  * old: `getCurrentScript :: (MonadDOM m, IsDocument self) => self -> m (Maybe HTMLScriptElement)`
+  * new: `getCurrentScript :: (MonadDOM m, IsDocument self) => self -> m (Maybe HTMLOrSVGScriptElement)`
+* `JSDOM.Document.getCurrentScriptUnchecked`
+  * old: `getCurrentScriptUnchecked :: (MonadDOM m, IsDocument self) => self -> m HTMLScriptElement`
+  * new: `getCurrentScriptUnchecked :: (MonadDOM m, IsDocument self) => self -> m HTMLOrSVGScriptElement`
+* `JSDOM.Document.getCurrentScriptUnsafe`
+  * old: `getCurrentScriptUnsafe :: (MonadDOM m, IsDocument self, HasCallStack) => self -> m HTMLScriptElement`
+  * new: `getCurrentScriptUnsafe :: (MonadDOM m, IsDocument self, HasCallStack) => self -> m HTMLOrSVGScriptElement`
+* `JSDOM.SVGSVGElement.getCurrentTranslate`
+  * old: `getCurrentTranslate :: MonadDOM m => SVGSVGElement -> m SVGPoint`
+  * new: `getCurrentTranslate :: MonadDOM m => SVGSVGElement -> m DOMPoint`
+* `JSDOM.WaveShaperNode.getCurve`
+  * old: `getCurve :: MonadDOM m => WaveShaperNode -> m Float32Array`
+  * new: `getCurve :: MonadDOM m => WaveShaperNode -> m (Maybe Float32Array)`
+* `JSDOM.ImageData.getData`
+  * old: `getData :: MonadDOM m => ImageData -> m Uint8ClampedArray`
+  * new: `getData :: MonadDOM m => ImageData -> m ImageDataArray`
+* `JSDOM.ReadableStreamDefaultController.getDesiredSize`
+  * old: `getDesiredSize :: MonadDOM m => ReadableStreamDefaultController -> m Double`
+  * new: `getDesiredSize :: MonadDOM m => ReadableStreamDefaultController -> m (Maybe Double)`
+* `JSDOM.ReadableByteStreamController.getDesiredSize`
+  * old: `getDesiredSize :: MonadDOM m => ReadableByteStreamController -> m Double`
+  * new: `getDesiredSize :: MonadDOM m => ReadableByteStreamController -> m (Maybe Double)`
+* `JSDOM.MediaDeviceInfo.getDeviceId`
+  * old: `getDeviceId :: (MonadDOM m, FromJSString result) => MediaDeviceInfo -> m result`
+  * new: `getDeviceId :: (MonadDOM m, IsMediaDeviceInfo self, FromJSString result) => self -> m result`
+* `JSDOM.PerformanceTiming.getDomComplete`
+  * old: `getDomComplete :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getDomComplete :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceTiming.getDomContentLoadedEventEnd`
+  * old: `getDomContentLoadedEventEnd :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getDomContentLoadedEventEnd :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceTiming.getDomContentLoadedEventStart`
+  * old: `getDomContentLoadedEventStart :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getDomContentLoadedEventStart :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceTiming.getDomInteractive`
+  * old: `getDomInteractive :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getDomInteractive :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceTiming.getDomLoading`
+  * old: `getDomLoading :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getDomLoading :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceTiming.getDomainLookupEnd`
+  * old: `getDomainLookupEnd :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getDomainLookupEnd :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceResourceTiming.getDomainLookupEnd`
+  * old: `getDomainLookupEnd :: MonadDOM m => PerformanceResourceTiming -> m DOMHighResTimeStamp`
+  * new: `getDomainLookupEnd :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double`
+* `JSDOM.PerformanceTiming.getDomainLookupStart`
+  * old: `getDomainLookupStart :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getDomainLookupStart :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceResourceTiming.getDomainLookupStart`
+  * old: `getDomainLookupStart :: MonadDOM m => PerformanceResourceTiming -> m DOMHighResTimeStamp`
+  * new: `getDomainLookupStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double`
+* `JSDOM.WebGLRenderingContextBase.getDrawingBufferHeight`
+  * old: `getDrawingBufferHeight :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m GLsizei`
+  * new: `getDrawingBufferHeight :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m Int`
+* `JSDOM.WebGLRenderingContextBase.getDrawingBufferWidth`
+  * old: `getDrawingBufferWidth :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m GLsizei`
+  * new: `getDrawingBufferWidth :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m Int`
+* `JSDOM.PerformanceEntry.getDuration`
+  * old: `getDuration :: (MonadDOM m, IsPerformanceEntry self) => self -> m DOMHighResTimeStamp`
+  * new: `getDuration :: (MonadDOM m, IsPerformanceEntry self) => self -> m Double`
+* `JSDOM.AudioBuffer.getDuration`
+  * old: `getDuration :: MonadDOM m => AudioBuffer -> m Float`
+  * new: `getDuration :: MonadDOM m => AudioBuffer -> m Double`
+* `JSDOM.Animation.getEffect`
+  * old: `getEffect :: MonadDOM m => Animation -> m (Maybe AnimationEffect)`
+  * new: `getEffect :: (MonadDOM m, IsAnimation self) => self -> m (Maybe AnimationEffect)`
+* `JSDOM.Animation.getEffectUnchecked`
+  * old: `getEffectUnchecked :: MonadDOM m => Animation -> m AnimationEffect`
+  * new: `getEffectUnchecked :: (MonadDOM m, IsAnimation self) => self -> m AnimationEffect`
+* `JSDOM.Animation.getEffectUnsafe`
+  * old: `getEffectUnsafe :: (MonadDOM m, HasCallStack) => Animation -> m AnimationEffect`
+  * new: `getEffectUnsafe :: (MonadDOM m, IsAnimation self, HasCallStack) => self -> m AnimationEffect`
+* `JSDOM.SpeechSynthesisEvent.getElapsedTime`
+  * old: `getElapsedTime :: MonadDOM m => SpeechSynthesisEvent -> m Float`
+  * new: `getElapsedTime :: (MonadDOM m, IsSpeechSynthesisEvent self) => self -> m Float`
+* `JSDOM.SVGSVGElement.getElementById`
+  * old: `getElementById :: (MonadDOM m, ToJSString elementId) => SVGSVGElement -> elementId -> m Element`
+  * new: `getElementById :: (MonadDOM m, ToJSString elementId) => SVGSVGElement -> elementId -> m (Maybe Element)`
+* `JSDOM.HTMLFieldSetElement.getElements`
+  * old: `getElements :: MonadDOM m => HTMLFieldSetElement -> m HTMLFormControlsCollection`
+  * new: `getElements :: MonadDOM m => HTMLFieldSetElement -> m HTMLCollection`
+* `JSDOM.Element.getElementsByClassName`
+  * old: `getElementsByClassName :: (MonadDOM m, IsElement self, ToJSString name) => self -> name -> m HTMLCollection`
+  * new: `getElementsByClassName :: (MonadDOM m, IsElement self, ToJSString classNames) => self -> classNames -> m HTMLCollection`
+* `JSDOM.Element.getElementsByClassName_`
+  * old: `getElementsByClassName_ :: (MonadDOM m, IsElement self, ToJSString name) => self -> name -> m ()`
+  * new: `getElementsByClassName_ :: (MonadDOM m, IsElement self, ToJSString classNames) => self -> classNames -> m ()`
+* `JSDOM.Element.getElementsByTagNameNS`
+  * old: `getElementsByTagNameNS :: (MonadDOM m, IsElement self, ToJSString namespaceURI, ToJSString localName) => self -> Maybe namespaceURI -> localName -> m HTMLCollection`
+  * new: `getElementsByTagNameNS :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m HTMLCollection`
+* `JSDOM.Document.getElementsByTagNameNS`
+  * old: `getElementsByTagNameNS :: (MonadDOM m, IsDocument self, ToJSString namespaceURI, ToJSString localName) => self -> Maybe namespaceURI -> localName -> m HTMLCollection`
+  * new: `getElementsByTagNameNS :: (MonadDOM m, IsDocument self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m HTMLCollection`
+* `JSDOM.Element.getElementsByTagNameNS_`
+  * old: `getElementsByTagNameNS_ :: (MonadDOM m, IsElement self, ToJSString namespaceURI, ToJSString localName) => self -> Maybe namespaceURI -> localName -> m ()`
+  * new: `getElementsByTagNameNS_ :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m ()`
+* `JSDOM.Document.getElementsByTagNameNS_`
+  * old: `getElementsByTagNameNS_ :: (MonadDOM m, IsDocument self, ToJSString namespaceURI, ToJSString localName) => self -> Maybe namespaceURI -> localName -> m ()`
+  * new: `getElementsByTagNameNS_ :: (MonadDOM m, IsDocument self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m ()`
+* `JSDOM.SVGSVGElement.getEnclosureList`
+  * old: `getEnclosureList :: (MonadDOM m, IsSVGElement referenceElement) => SVGSVGElement -> SVGRect -> Maybe referenceElement -> m NodeList`
+  * new: `getEnclosureList :: (MonadDOM m, IsSVGElement referenceElement) => SVGSVGElement -> DOMRect -> Maybe referenceElement -> m NodeList`
+* `JSDOM.SVGSVGElement.getEnclosureList_`
+  * old: `getEnclosureList_ :: (MonadDOM m, IsSVGElement referenceElement) => SVGSVGElement -> SVGRect -> Maybe referenceElement -> m ()`
+  * new: `getEnclosureList_ :: (MonadDOM m, IsSVGElement referenceElement) => SVGSVGElement -> DOMRect -> Maybe referenceElement -> m ()`
+* `JSDOM.SVGTextContentElement.getEndPositionOfChar`
+  * old: `getEndPositionOfChar :: (MonadDOM m, IsSVGTextContentElement self) => self -> Maybe Word -> m SVGPoint`
+  * new: `getEndPositionOfChar :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> m DOMPoint`
+* `JSDOM.SVGTextContentElement.getEndPositionOfChar_`
+  * old: `getEndPositionOfChar_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> Maybe Word -> m ()`
+  * new: `getEndPositionOfChar_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> m ()`
+* `JSDOM.PerformanceObserverEntryList.getEntries`
+  * old: `getEntries :: MonadDOM m => PerformanceObserverEntryList -> m PerformanceEntryList`
+  * new: `getEntries :: MonadDOM m => PerformanceObserverEntryList -> m [PerformanceEntry]`
+* `JSDOM.Performance.getEntries`
+  * old: `getEntries :: MonadDOM m => Performance -> m PerformanceEntryList`
+  * new: `getEntries :: MonadDOM m => Performance -> m [PerformanceEntry]`
+* `JSDOM.PerformanceObserverEntryList.getEntriesByName`
+  * old: `getEntriesByName :: (MonadDOM m, ToJSString name, ToJSString type') => PerformanceObserverEntryList -> name -> Maybe type' -> m PerformanceEntryList`
+  * new: `getEntriesByName :: (MonadDOM m, ToJSString name, ToJSString type') => PerformanceObserverEntryList -> name -> Maybe type' -> m [PerformanceEntry]`
+* `JSDOM.Performance.getEntriesByName`
+  * old: `getEntriesByName :: (MonadDOM m, ToJSString name, ToJSString entryType) => Performance -> name -> Maybe entryType -> m PerformanceEntryList`
+  * new: `getEntriesByName :: (MonadDOM m, ToJSString name, ToJSString type') => Performance -> name -> Maybe type' -> m [PerformanceEntry]`
+* `JSDOM.Performance.getEntriesByName_`
+  * old: `getEntriesByName_ :: (MonadDOM m, ToJSString name, ToJSString entryType) => Performance -> name -> Maybe entryType -> m ()`
+  * new: `getEntriesByName_ :: (MonadDOM m, ToJSString name, ToJSString type') => Performance -> name -> Maybe type' -> m ()`
+* `JSDOM.PerformanceObserverEntryList.getEntriesByType`
+  * old: `getEntriesByType :: (MonadDOM m, ToJSString type') => PerformanceObserverEntryList -> type' -> m PerformanceEntryList`
+  * new: `getEntriesByType :: (MonadDOM m, ToJSString type') => PerformanceObserverEntryList -> type' -> m [PerformanceEntry]`
+* `JSDOM.Performance.getEntriesByType`
+  * old: `getEntriesByType :: (MonadDOM m, ToJSString entryType) => Performance -> entryType -> m PerformanceEntryList`
+  * new: `getEntriesByType :: (MonadDOM m, ToJSString type') => Performance -> type' -> m [PerformanceEntry]`
+* `JSDOM.Performance.getEntriesByType_`
+  * old: `getEntriesByType_ :: (MonadDOM m, ToJSString entryType) => Performance -> entryType -> m ()`
+  * new: `getEntriesByType_ :: (MonadDOM m, ToJSString type') => Performance -> type' -> m ()`
+* `JSDOM.WebGLRenderingContextBase.getError`
+  * old: `getError :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m GLenum`
+  * new: `getError :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m Word`
+* `JSDOM.IDBTransaction.getError`
+  * old: `getError :: MonadDOM m => IDBTransaction -> m DOMError`
+  * new: `getError :: MonadDOM m => IDBTransaction -> m (Maybe DOMException)`
+* `JSDOM.IDBRequest.getError`
+  * old: `getError :: (MonadDOM m, IsIDBRequest self) => self -> m (Maybe DOMError)`
+  * new: `getError :: (MonadDOM m, IsIDBRequest self) => self -> m (Maybe DOMException)`
+* `JSDOM.HTMLMediaElement.getError`
+  * old: `getError :: (MonadDOM m, IsHTMLMediaElement self) => self -> m MediaError`
+  * new: `getError :: (MonadDOM m, IsHTMLMediaElement self) => self -> m (Maybe MediaError)`
+* `JSDOM.FileReader.getError`
+  * old: `getError :: MonadDOM m => FileReader -> m FileError`
+  * new: `getError :: MonadDOM m => FileReader -> m (Maybe DOMException)`
+* `JSDOM.IDBRequest.getErrorUnchecked`
+  * old: `getErrorUnchecked :: (MonadDOM m, IsIDBRequest self) => self -> m DOMError`
+  * new: `getErrorUnchecked :: (MonadDOM m, IsIDBRequest self) => self -> m DOMException`
+* `JSDOM.IDBRequest.getErrorUnsafe`
+  * old: `getErrorUnsafe :: (MonadDOM m, IsIDBRequest self, HasCallStack) => self -> m DOMError`
+  * new: `getErrorUnsafe :: (MonadDOM m, IsIDBRequest self, HasCallStack) => self -> m DOMException`
+* `JSDOM.Window.getEvent`
+  * old: `getEvent :: MonadDOM m => Window -> m Event`
+  * new: `getEvent :: MonadDOM m => Window -> m EventOrUndefined`
+* `JSDOM.Window.getEvent`
+  * old: `getEvent :: MonadDOM m => Window -> m Event`
+  * new: `getEvent :: MonadDOM m => Window -> m EventOrUndefined`
+* `JSDOM.WebSocket.getExtensions`
+  * old: `getExtensions :: (MonadDOM m, FromJSString result) => WebSocket -> m (Maybe result)`
+  * new: `getExtensions :: (MonadDOM m, FromJSString result) => WebSocket -> m result`
+* `JSDOM.SVGTextContentElement.getExtentOfChar`
+  * old: `getExtentOfChar :: (MonadDOM m, IsSVGTextContentElement self) => self -> Maybe Word -> m SVGRect`
+  * new: `getExtentOfChar :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> m DOMRect`
+* `JSDOM.SVGTextContentElement.getExtentOfChar_`
+  * old: `getExtentOfChar_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> Maybe Word -> m ()`
+  * new: `getExtentOfChar_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> m ()`
+* `JSDOM.PerformanceTiming.getFetchStart`
+  * old: `getFetchStart :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getFetchStart :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceResourceTiming.getFetchStart`
+  * old: `getFetchStart :: MonadDOM m => PerformanceResourceTiming -> m DOMHighResTimeStamp`
+  * new: `getFetchStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double`
+* `JSDOM.AnalyserNode.getFloatFrequencyData`
+  * old: `getFloatFrequencyData :: (MonadDOM m, IsFloat32Array array) => AnalyserNode -> Maybe array -> m ()`
+  * new: `getFloatFrequencyData :: (MonadDOM m, IsFloat32Array array) => AnalyserNode -> array -> m ()`
+* `JSDOM.HTMLTextAreaElement.getForm`
+  * old: `getForm :: MonadDOM m => HTMLTextAreaElement -> m HTMLFormElement`
+  * new: `getForm :: MonadDOM m => HTMLTextAreaElement -> m (Maybe HTMLFormElement)`
+* `JSDOM.HTMLOutputElement.getForm`
+  * old: `getForm :: MonadDOM m => HTMLOutputElement -> m HTMLFormElement`
+  * new: `getForm :: MonadDOM m => HTMLOutputElement -> m (Maybe HTMLFormElement)`
+* `JSDOM.HTMLOptionElement.getForm`
+  * old: `getForm :: MonadDOM m => HTMLOptionElement -> m HTMLFormElement`
+  * new: `getForm :: MonadDOM m => HTMLOptionElement -> m (Maybe HTMLFormElement)`
+* `JSDOM.HTMLObjectElement.getForm`
+  * old: `getForm :: MonadDOM m => HTMLObjectElement -> m HTMLFormElement`
+  * new: `getForm :: MonadDOM m => HTMLObjectElement -> m (Maybe HTMLFormElement)`
+* `JSDOM.HTMLLegendElement.getForm`
+  * old: `getForm :: MonadDOM m => HTMLLegendElement -> m HTMLFormElement`
+  * new: `getForm :: MonadDOM m => HTMLLegendElement -> m (Maybe HTMLFormElement)`
+* `JSDOM.HTMLLabelElement.getForm`
+  * old: `getForm :: MonadDOM m => HTMLLabelElement -> m HTMLFormElement`
+  * new: `getForm :: MonadDOM m => HTMLLabelElement -> m (Maybe HTMLFormElement)`
+* `JSDOM.HTMLInputElement.getForm`
+  * old: `getForm :: MonadDOM m => HTMLInputElement -> m HTMLFormElement`
+  * new: `getForm :: MonadDOM m => HTMLInputElement -> m (Maybe HTMLFormElement)`
+* `JSDOM.HTMLFieldSetElement.getForm`
+  * old: `getForm :: MonadDOM m => HTMLFieldSetElement -> m HTMLFormElement`
+  * new: `getForm :: MonadDOM m => HTMLFieldSetElement -> m (Maybe HTMLFormElement)`
+* `JSDOM.HTMLButtonElement.getForm`
+  * old: `getForm :: MonadDOM m => HTMLButtonElement -> m HTMLFormElement`
+  * new: `getForm :: MonadDOM m => HTMLButtonElement -> m (Maybe HTMLFormElement)`
+* `JSDOM.WebGLRenderingContextBase.getFramebufferAttachmentParameter`
+  * old: `getFramebufferAttachmentParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> GLenum -> m JSVal`
+  * new: `getFramebufferAttachmentParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Word -> m JSVal`
+* `JSDOM.WebGLRenderingContextBase.getFramebufferAttachmentParameter_`
+  * old: `getFramebufferAttachmentParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> GLenum -> m ()`
+  * new: `getFramebufferAttachmentParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Word -> m ()`
+* `JSDOM.BiquadFilterNode.getFrequencyResponse`
+  * old: `getFrequencyResponse :: (MonadDOM m, IsFloat32Array frequencyHz, IsFloat32Array magResponse, IsFloat32Array phaseResponse) => BiquadFilterNode -> Maybe frequencyHz -> Maybe magResponse -> Maybe phaseResponse -> m ()`
+  * new: `getFrequencyResponse :: (MonadDOM m, IsFloat32Array frequencyHz, IsFloat32Array magResponse, IsFloat32Array phaseResponse) => BiquadFilterNode -> frequencyHz -> magResponse -> phaseResponse -> m ()`
+* `JSDOM.GamepadEvent.getGamepad`
+  * old: `getGamepad :: MonadDOM m => GamepadEvent -> m (Maybe Gamepad)`
+  * new: `getGamepad :: MonadDOM m => GamepadEvent -> m Gamepad`
+* `JSDOM.Navigator.getGamepads`
+  * old: `getGamepads :: MonadDOM m => Navigator -> m [Gamepad]`
+  * new: `getGamepads :: MonadDOM m => Navigator -> m [Maybe Gamepad]`
+* `JSDOM.Navigator.getGamepads`
+  * old: `getGamepads :: MonadDOM m => Navigator -> m [Gamepad]`
+  * new: `getGamepads :: MonadDOM m => Navigator -> m [Maybe Gamepad]`
+* `JSDOM.RTCIceTransport.getGatheringState`
+  * old: `getGatheringState :: MonadDOM m => RTCIceTransport -> m RTCIceGatheringState`
+  * new: `getGatheringState :: MonadDOM m => RTCIceTransport -> m RTCIceGathererState`
+* `JSDOM.MediaDeviceInfo.getGroupId`
+  * old: `getGroupId :: (MonadDOM m, FromJSString result) => MediaDeviceInfo -> m result`
+  * new: `getGroupId :: (MonadDOM m, IsMediaDeviceInfo self, FromJSString result) => self -> m result`
+* `JSDOM.NavigatorConcurrentHardware.getHardwareConcurrency`
+  * old: `getHardwareConcurrency :: (MonadDOM m, IsNavigatorConcurrentHardware self) => self -> m Word64`
+  * new: `getHardwareConcurrency :: (MonadDOM m, IsNavigatorConcurrentHardware self) => self -> m Word53`
+* `JSDOM.Screen.getHeight`
+  * old: `getHeight :: MonadDOM m => Screen -> m Word`
+  * new: `getHeight :: (MonadDOM m, IsScreen self) => self -> m Int`
+* `JSDOM.HTMLElement.getHidden`
+  * old: `getHidden :: (MonadDOM m, IsHTMLElement self) => self -> m Bool`
+  * new: `getHidden :: (MonadDOM m, IsHTMLElement self) => self -> m (Maybe BoolOrDoubleOrString)`
+* `JSDOM.CSSImportRule.getHref`
+  * old: `getHref :: (MonadDOM m, FromJSString result) => CSSImportRule -> m (Maybe result)`
+  * new: `getHref :: (MonadDOM m, FromJSString result) => CSSImportRule -> m result`
+* `JSDOM.Touch.getIdentifier`
+  * old: `getIdentifier :: MonadDOM m => Touch -> m Word`
+  * new: `getIdentifier :: MonadDOM m => Touch -> m Int`
+* `JSDOM.Gamepad.getIndex`
+  * old: `getIndex :: MonadDOM m => Gamepad -> m Word`
+  * new: `getIndex :: MonadDOM m => Gamepad -> m Int`
+* `JSDOM.PerformanceResourceTiming.getInitiatorType`
+  * old: `getInitiatorType :: (MonadDOM m, FromJSString result) => PerformanceResourceTiming -> m result`
+  * new: `getInitiatorType :: (MonadDOM m, IsPerformanceResourceTiming self, FromJSString result) => self -> m result`
+* `JSDOM.ShadowRoot.getInnerHTML`
+  * old: `getInnerHTML :: (MonadDOM m, FromJSString result) => ShadowRoot -> m result`
+  * new: `getInnerHTML :: MonadDOM m => ShadowRoot -> m TrustedHTMLOrString`
+* `JSDOM.Element.getInnerHTML`
+  * old: `getInnerHTML :: (MonadDOM m, IsElement self, FromJSString result) => self -> m result`
+  * new: `getInnerHTML :: (MonadDOM m, IsElement self) => self -> m TrustedHTMLOrString`
+* `JSDOM.SVGSVGElement.getIntersectionList`
+  * old: `getIntersectionList :: (MonadDOM m, IsSVGElement referenceElement) => SVGSVGElement -> SVGRect -> Maybe referenceElement -> m NodeList`
+  * new: `getIntersectionList :: (MonadDOM m, IsSVGElement referenceElement) => SVGSVGElement -> DOMRect -> Maybe referenceElement -> m NodeList`
+* `JSDOM.SVGSVGElement.getIntersectionList_`
+  * old: `getIntersectionList_ :: (MonadDOM m, IsSVGElement referenceElement) => SVGSVGElement -> SVGRect -> Maybe referenceElement -> m ()`
+  * new: `getIntersectionList_ :: (MonadDOM m, IsSVGElement referenceElement) => SVGSVGElement -> DOMRect -> Maybe referenceElement -> m ()`
+* `JSDOM.DeviceMotionEvent.getInterval`
+  * old: `getInterval :: MonadDOM m => DeviceMotionEvent -> m (Maybe Double)`
+  * new: `getInterval :: MonadDOM m => DeviceMotionEvent -> m Double`
+* `JSDOM.SVGPointList.getItem`
+  * old: `getItem :: MonadDOM m => SVGPointList -> Word -> m SVGPoint`
+  * new: `getItem :: MonadDOM m => SVGPointList -> Word -> m DOMPoint`
+* `JSDOM.IDBObjectStore.getKey`
+  * old: `getKey :: (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> m IDBRequest`
+  * new: `getKey :: MonadDOM m => IDBObjectStore -> JSVal -> m IDBRequest`
+* `JSDOM.IDBIndex.getKey`
+  * old: `getKey :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> m IDBRequest`
+  * new: `getKey :: MonadDOM m => IDBIndex -> JSVal -> m IDBRequest`
+* `JSDOM.IDBObjectStore.getKeyPath`
+  * old: `getKeyPath :: MonadDOM m => IDBObjectStore -> m (Maybe IDBKeyPath)`
+  * new: `getKeyPath :: MonadDOM m => IDBObjectStore -> m JSVal`
+* `JSDOM.IDBIndex.getKeyPath`
+  * old: `getKeyPath :: MonadDOM m => IDBIndex -> m (Maybe IDBKeyPath)`
+  * new: `getKeyPath :: MonadDOM m => IDBIndex -> m JSVal`
+* `JSDOM.IDBObjectStore.getKey_`
+  * old: `getKey_ :: (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> m ()`
+  * new: `getKey_ :: MonadDOM m => IDBObjectStore -> JSVal -> m ()`
+* `JSDOM.IDBIndex.getKey_`
+  * old: `getKey_ :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> m ()`
+  * new: `getKey_ :: MonadDOM m => IDBIndex -> JSVal -> m ()`
+* `JSDOM.MediaDeviceInfo.getKind`
+  * old: `getKind :: MonadDOM m => MediaDeviceInfo -> m MediaDeviceKind`
+  * new: `getKind :: (MonadDOM m, IsMediaDeviceInfo self) => self -> m MediaDeviceKind`
+* `JSDOM.MediaDeviceInfo.getLabel`
+  * old: `getLabel :: (MonadDOM m, FromJSString result) => MediaDeviceInfo -> m result`
+  * new: `getLabel :: (MonadDOM m, IsMediaDeviceInfo self, FromJSString result) => self -> m result`
+* `JSDOM.HTMLInputElement.getLabels`
+  * old: `getLabels :: MonadDOM m => HTMLInputElement -> m NodeList`
+  * new: `getLabels :: MonadDOM m => HTMLInputElement -> m (Maybe NodeList)`
+* `JSDOM.File.getLastModified`
+  * old: `getLastModified :: MonadDOM m => File -> m Int64`
+  * new: `getLastModified :: MonadDOM m => File -> m Int53`
+* `JSDOM.DataTransferItemList.getLength`
+  * old: `getLength :: MonadDOM m => DataTransferItemList -> m Int`
+  * new: `getLength :: MonadDOM m => DataTransferItemList -> m Word`
+* `JSDOM.CSSStyleDeclaration.getLength`
+  * old: `getLength :: MonadDOM m => CSSStyleDeclaration -> m Word`
+  * new: `getLength :: (MonadDOM m, IsCSSStyleDeclaration self) => self -> m Word`
+* `JSDOM.AudioBuffer.getLength`
+  * old: `getLength :: MonadDOM m => AudioBuffer -> m Int`
+  * new: `getLength :: MonadDOM m => AudioBuffer -> m Word`
+* `JSDOM.ProgressEvent.getLengthComputable`
+  * old: `getLengthComputable :: (MonadDOM m, IsProgressEvent self) => self -> m Bool`
+  * new: `getLengthComputable :: MonadDOM m => ProgressEvent -> m Bool`
+* `JSDOM.VTTCue.getLine`
+  * old: `getLine :: MonadDOM m => VTTCue -> m Double`
+  * new: `getLine :: MonadDOM m => VTTCue -> m LineAndPositionSetting`
+* `JSDOM.SecurityPolicyViolationEvent.getLineNumber`
+  * old: `getLineNumber :: MonadDOM m => SecurityPolicyViolationEvent -> m Int`
+  * new: `getLineNumber :: MonadDOM m => SecurityPolicyViolationEvent -> m Word`
+* `JSDOM.HTMLInputElement.getList`
+  * old: `getList :: MonadDOM m => HTMLInputElement -> m HTMLElement`
+  * new: `getList :: MonadDOM m => HTMLInputElement -> m (Maybe HTMLDataListElement)`
+* `JSDOM.PerformanceTiming.getLoadEventEnd`
+  * old: `getLoadEventEnd :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getLoadEventEnd :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceTiming.getLoadEventStart`
+  * old: `getLoadEventStart :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getLoadEventStart :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.ProgressEvent.getLoaded`
+  * old: `getLoaded :: (MonadDOM m, IsProgressEvent self) => self -> m Word64`
+  * new: `getLoaded :: MonadDOM m => ProgressEvent -> m Double`
+* `JSDOM.ReadableStream.getLocked`
+  * old: `getLocked :: MonadDOM m => ReadableStream -> m Bool`
+  * new: `getLocked :: (MonadDOM m, IsReadableStream self) => self -> m Bool`
+* `JSDOM.Gamepad.getMapping`
+  * old: `getMapping :: (MonadDOM m, FromJSString result) => Gamepad -> m result`
+  * new: `getMapping :: MonadDOM m => Gamepad -> m GamepadMappingType`
+* `JSDOM.SVGTransform.getMatrix`
+  * old: `getMatrix :: MonadDOM m => SVGTransform -> m SVGMatrix`
+  * new: `getMatrix :: MonadDOM m => SVGTransform -> m DOMMatrix`
+* `JSDOM.HTMLMediaElement.getMediaKeys`
+  * old: `getMediaKeys :: (MonadDOM m, IsHTMLMediaElement self) => self -> m MediaKeys`
+  * new: `getMediaKeys :: (MonadDOM m, IsHTMLMediaElement self) => self -> m (Maybe MediaKeys)`
+* `JSDOM.DOMException.getMessage`
+  * old: `getMessage :: (MonadDOM m, FromJSString result) => DOMException -> m result`
+  * new: `getMessage :: (MonadDOM m, IsDOMException self, FromJSString result) => self -> m result`
+* `JSDOM.MouseEvent.getMovementX`
+  * old: `getMovementX :: (MonadDOM m, IsMouseEvent self) => self -> m Int`
+  * new: `getMovementX :: (MonadDOM m, IsMouseEvent self) => self -> m Double`
+* `JSDOM.MouseEvent.getMovementY`
+  * old: `getMovementY :: (MonadDOM m, IsMouseEvent self) => self -> m Int`
+  * new: `getMovementY :: (MonadDOM m, IsMouseEvent self) => self -> m Double`
+* `JSDOM.SpeechSynthesisEvent.getName`
+  * old: `getName :: (MonadDOM m, FromJSString result) => SpeechSynthesisEvent -> m result`
+  * new: `getName :: (MonadDOM m, IsSpeechSynthesisEvent self, FromJSString result) => self -> m result`
+* `JSDOM.DOMException.getName`
+  * old: `getName :: (MonadDOM m, FromJSString result) => DOMException -> m result`
+  * new: `getName :: (MonadDOM m, IsDOMException self, FromJSString result) => self -> m result`
+* `JSDOM.NamedNodeMap.getNamedItemNS`
+  * old: `getNamedItemNS :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName) => NamedNodeMap -> Maybe namespaceURI -> localName -> m (Maybe Attr)`
+  * new: `getNamedItemNS :: (MonadDOM m, ToJSString namespace, ToJSString localName) => NamedNodeMap -> Maybe namespace -> localName -> m (Maybe Attr)`
+* `JSDOM.NamedNodeMap.getNamedItemNSUnchecked`
+  * old: `getNamedItemNSUnchecked :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName) => NamedNodeMap -> Maybe namespaceURI -> localName -> m Attr`
+  * new: `getNamedItemNSUnchecked :: (MonadDOM m, ToJSString namespace, ToJSString localName) => NamedNodeMap -> Maybe namespace -> localName -> m Attr`
+* `JSDOM.NamedNodeMap.getNamedItemNSUnsafe`
+  * old: `getNamedItemNSUnsafe :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName, HasCallStack) => NamedNodeMap -> Maybe namespaceURI -> localName -> m Attr`
+  * new: `getNamedItemNSUnsafe :: (MonadDOM m, ToJSString namespace, ToJSString localName, HasCallStack) => NamedNodeMap -> Maybe namespace -> localName -> m Attr`
+* `JSDOM.NamedNodeMap.getNamedItemNS_`
+  * old: `getNamedItemNS_ :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName) => NamedNodeMap -> Maybe namespaceURI -> localName -> m ()`
+  * new: `getNamedItemNS_ :: (MonadDOM m, ToJSString namespace, ToJSString localName) => NamedNodeMap -> Maybe namespace -> localName -> m ()`
+* `JSDOM.HTMLImageElement.getNaturalHeight`
+  * old: `getNaturalHeight :: MonadDOM m => HTMLImageElement -> m Int`
+  * new: `getNaturalHeight :: MonadDOM m => HTMLImageElement -> m Word`
+* `JSDOM.HTMLImageElement.getNaturalWidth`
+  * old: `getNaturalWidth :: MonadDOM m => HTMLImageElement -> m Int`
+  * new: `getNaturalWidth :: MonadDOM m => HTMLImageElement -> m Word`
+* `JSDOM.PerformanceTiming.getNavigationStart`
+  * old: `getNavigationStart :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getNavigationStart :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.IDBVersionChangeEvent.getNewVersion`
+  * old: `getNewVersion :: MonadDOM m => IDBVersionChangeEvent -> m (Maybe Word64)`
+  * new: `getNewVersion :: MonadDOM m => IDBVersionChangeEvent -> m (Maybe Word53)`
+* `JSDOM.IDBVersionChangeEvent.getNewVersionUnchecked`
+  * old: `getNewVersionUnchecked :: MonadDOM m => IDBVersionChangeEvent -> m Word64`
+  * new: `getNewVersionUnchecked :: MonadDOM m => IDBVersionChangeEvent -> m Word53`
+* `JSDOM.IDBVersionChangeEvent.getNewVersionUnsafe`
+  * old: `getNewVersionUnsafe :: (MonadDOM m, HasCallStack) => IDBVersionChangeEvent -> m Word64`
+  * new: `getNewVersionUnsafe :: (MonadDOM m, HasCallStack) => IDBVersionChangeEvent -> m Word53`
+* `JSDOM.PerformanceResourceTiming.getNextHopProtocol`
+  * old: `getNextHopProtocol :: (MonadDOM m, FromJSString result) => PerformanceResourceTiming -> m result`
+  * new: `getNextHopProtocol :: (MonadDOM m, IsPerformanceResourceTiming self, FromJSString result) => self -> m result`
+* `JSDOM.HTMLElement.getOffsetHeight`
+  * old: `getOffsetHeight :: (MonadDOM m, IsHTMLElement self) => self -> m Double`
+  * new: `getOffsetHeight :: (MonadDOM m, IsHTMLElement self) => self -> m Int`
+* `JSDOM.HTMLElement.getOffsetLeft`
+  * old: `getOffsetLeft :: (MonadDOM m, IsHTMLElement self) => self -> m Double`
+  * new: `getOffsetLeft :: (MonadDOM m, IsHTMLElement self) => self -> m Int`
+* `JSDOM.HTMLElement.getOffsetTop`
+  * old: `getOffsetTop :: (MonadDOM m, IsHTMLElement self) => self -> m Double`
+  * new: `getOffsetTop :: (MonadDOM m, IsHTMLElement self) => self -> m Int`
+* `JSDOM.HTMLElement.getOffsetWidth`
+  * old: `getOffsetWidth :: (MonadDOM m, IsHTMLElement self) => self -> m Double`
+  * new: `getOffsetWidth :: (MonadDOM m, IsHTMLElement self) => self -> m Int`
+* `JSDOM.MouseEvent.getOffsetX`
+  * old: `getOffsetX :: (MonadDOM m, IsMouseEvent self) => self -> m Int`
+  * new: `getOffsetX :: (MonadDOM m, IsMouseEvent self) => self -> m Double`
+* `JSDOM.MouseEvent.getOffsetY`
+  * old: `getOffsetY :: (MonadDOM m, IsMouseEvent self) => self -> m Int`
+  * new: `getOffsetY :: (MonadDOM m, IsMouseEvent self) => self -> m Double`
+* `JSDOM.IDBVersionChangeEvent.getOldVersion`
+  * old: `getOldVersion :: MonadDOM m => IDBVersionChangeEvent -> m Word64`
+  * new: `getOldVersion :: MonadDOM m => IDBVersionChangeEvent -> m Word53`
+* `JSDOM.Window.getOpener`
+  * old: `getOpener :: MonadDOM m => Window -> m (Maybe Window)`
+  * new: `getOpener :: MonadDOM m => Window -> m JSVal`
+* `JSDOM.Window.getOpener`
+  * old: `getOpener :: MonadDOM m => Window -> m (Maybe Window)`
+  * new: `getOpener :: MonadDOM m => Window -> m JSVal`
+* `JSDOM.Element.getOuterHTML`
+  * old: `getOuterHTML :: (MonadDOM m, IsElement self, FromJSString result) => self -> m result`
+  * new: `getOuterHTML :: (MonadDOM m, IsElement self) => self -> m TrustedHTMLOrString`
+* `JSDOM.StyleSheet.getOwnerNode`
+  * old: `getOwnerNode :: (MonadDOM m, IsStyleSheet self) => self -> m Node`
+  * new: `getOwnerNode :: (MonadDOM m, IsStyleSheet self) => self -> m (Maybe ElementOrProcessingInstruction)`
+* `JSDOM.CSSStyleSheet.getOwnerRule`
+  * old: `getOwnerRule :: MonadDOM m => CSSStyleSheet -> m CSSRule`
+  * new: `getOwnerRule :: MonadDOM m => CSSStyleSheet -> m (Maybe CSSRule)`
+* `JSDOM.SVGElement.getOwnerSVGElement`
+  * old: `getOwnerSVGElement :: (MonadDOM m, IsSVGElement self) => self -> m SVGSVGElement`
+  * new: `getOwnerSVGElement :: (MonadDOM m, IsSVGElement self) => self -> m (Maybe SVGSVGElement)`
+* `JSDOM.Touch.getPageX`
+  * old: `getPageX :: MonadDOM m => Touch -> m Int`
+  * new: `getPageX :: MonadDOM m => Touch -> m Double`
+* `JSDOM.Touch.getPageY`
+  * old: `getPageY :: MonadDOM m => Touch -> m Int`
+  * new: `getPageY :: MonadDOM m => Touch -> m Double`
+* `JSDOM.XSLTProcessor.getParameter`
+  * old: `getParameter :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName, FromJSString result) => XSLTProcessor -> Maybe namespaceURI -> Maybe localName -> m (Maybe result)`
+  * new: `getParameter :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName) => XSLTProcessor -> namespaceURI -> localName -> m JSVal`
+* `JSDOM.WebGLRenderingContextBase.getParameter`
+  * old: `getParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> m JSVal`
+  * new: `getParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m JSVal`
+* `JSDOM.XSLTProcessor.getParameter_`
+  * old: `getParameter_ :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName) => XSLTProcessor -> Maybe namespaceURI -> Maybe localName -> m ()`
+  * new: `getParameter_ :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName) => XSLTProcessor -> namespaceURI -> localName -> m ()`
+* `JSDOM.WebGLRenderingContextBase.getParameter_`
+  * old: `getParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> m ()`
+  * new: `getParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()`
+* `JSDOM.RTCRtpSender.getParameters`
+  * old: `getParameters :: MonadDOM m => RTCRtpSender -> m RTCRtpParameters`
+  * new: `getParameters :: MonadDOM m => RTCRtpSender -> m RTCRtpSendParameters`
+* `JSDOM.RTCRtpReceiver.getParameters`
+  * old: `getParameters :: MonadDOM m => RTCRtpReceiver -> m RTCRtpParameters`
+  * new: `getParameters :: MonadDOM m => RTCRtpReceiver -> m RTCRtpReceiveParameters`
+* `JSDOM.CSSStyleDeclaration.getParentRule`
+  * old: `getParentRule :: MonadDOM m => CSSStyleDeclaration -> m (Maybe CSSRule)`
+  * new: `getParentRule :: (MonadDOM m, IsCSSStyleDeclaration self) => self -> m (Maybe CSSRule)`
+* `JSDOM.CSSStyleDeclaration.getParentRuleUnchecked`
+  * old: `getParentRuleUnchecked :: MonadDOM m => CSSStyleDeclaration -> m CSSRule`
+  * new: `getParentRuleUnchecked :: (MonadDOM m, IsCSSStyleDeclaration self) => self -> m CSSRule`
+* `JSDOM.CSSStyleDeclaration.getParentRuleUnsafe`
+  * old: `getParentRuleUnsafe :: (MonadDOM m, HasCallStack) => CSSStyleDeclaration -> m CSSRule`
+  * new: `getParentRuleUnsafe :: (MonadDOM m, IsCSSStyleDeclaration self, HasCallStack) => self -> m CSSRule`
+* `JSDOM.StyleSheet.getParentStyleSheet`
+  * old: `getParentStyleSheet :: (MonadDOM m, IsStyleSheet self) => self -> m StyleSheet`
+  * new: `getParentStyleSheet :: (MonadDOM m, IsStyleSheet self) => self -> m (Maybe CSSStyleSheet)`
+* `JSDOM.Screen.getPixelDepth`
+  * old: `getPixelDepth :: MonadDOM m => Screen -> m Word`
+  * new: `getPixelDepth :: (MonadDOM m, IsScreen self) => self -> m Word`
+* `JSDOM.SVGPathElement.getPointAtLength`
+  * old: `getPointAtLength :: MonadDOM m => SVGPathElement -> Maybe Float -> m SVGPoint`
+  * new: `getPointAtLength :: MonadDOM m => SVGPathElement -> Float -> m DOMPoint`
+* `JSDOM.SVGPathElement.getPointAtLength_`
+  * old: `getPointAtLength_ :: MonadDOM m => SVGPathElement -> Maybe Float -> m ()`
+  * new: `getPointAtLength_ :: MonadDOM m => SVGPathElement -> Float -> m ()`
+* `JSDOM.VTTCue.getPosition`
+  * old: `getPosition :: MonadDOM m => VTTCue -> m Double`
+  * new: `getPosition :: MonadDOM m => VTTCue -> m LineAndPositionSetting`
+* `JSDOM.WebGLRenderingContextBase.getProgramInfoLog`
+  * old: `getProgramInfoLog :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> Maybe WebGLProgram -> m (Maybe result)`
+  * new: `getProgramInfoLog :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> WebGLProgram -> m (Maybe result)`
+* `JSDOM.WebGLRenderingContextBase.getProgramInfoLogUnchecked`
+  * old: `getProgramInfoLogUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> Maybe WebGLProgram -> m result`
+  * new: `getProgramInfoLogUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> WebGLProgram -> m result`
+* `JSDOM.WebGLRenderingContextBase.getProgramInfoLogUnsafe`
+  * old: `getProgramInfoLogUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack, FromJSString result) => self -> Maybe WebGLProgram -> m result`
+  * new: `getProgramInfoLogUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack, FromJSString result) => self -> WebGLProgram -> m result`
+* `JSDOM.WebGLRenderingContextBase.getProgramInfoLog_`
+  * old: `getProgramInfoLog_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> m ()`
+  * new: `getProgramInfoLog_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> m ()`
+* `JSDOM.WebGLRenderingContextBase.getProgramParameter`
+  * old: `getProgramParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> GLenum -> m JSVal`
+  * new: `getProgramParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> Word -> m JSVal`
+* `JSDOM.WebGLRenderingContextBase.getProgramParameter_`
+  * old: `getProgramParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> GLenum -> m ()`
+  * new: `getProgramParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> Word -> m ()`
+* `JSDOM.PromiseRejectionEvent.getPromise`
+  * old: `getPromise :: MonadDOM m => PromiseRejectionEvent -> m JSVal`
+  * new: `getPromise :: MonadDOM m => PromiseRejectionEvent -> m GObject`
+* `JSDOM.CSSStyleDeclaration.getPropertyPriority`
+  * old: `getPropertyPriority :: (MonadDOM m, ToJSString propertyName, FromJSString result) => CSSStyleDeclaration -> propertyName -> m (Maybe result)`
+  * new: `getPropertyPriority :: (MonadDOM m, IsCSSStyleDeclaration self, ToJSString property, FromJSString result) => self -> property -> m result`
+* `JSDOM.CSSStyleDeclaration.getPropertyPriority_`
+  * old: `getPropertyPriority_ :: (MonadDOM m, ToJSString propertyName) => CSSStyleDeclaration -> propertyName -> m ()`
+  * new: `getPropertyPriority_ :: (MonadDOM m, IsCSSStyleDeclaration self, ToJSString property) => self -> property -> m ()`
+* `JSDOM.CSSStyleDeclaration.getPropertyValue`
+  * old: `getPropertyValue :: (MonadDOM m, ToJSString propertyName, FromJSString result) => CSSStyleDeclaration -> propertyName -> m result`
+  * new: `getPropertyValue :: (MonadDOM m, IsCSSStyleDeclaration self, ToJSString property, FromJSString result) => self -> property -> m result`
+* `JSDOM.CSSStyleDeclaration.getPropertyValue_`
+  * old: `getPropertyValue_ :: (MonadDOM m, ToJSString propertyName) => CSSStyleDeclaration -> propertyName -> m ()`
+  * new: `getPropertyValue_ :: (MonadDOM m, IsCSSStyleDeclaration self, ToJSString property) => self -> property -> m ()`
+* `JSDOM.WebSocket.getProtocol`
+  * old: `getProtocol :: (MonadDOM m, FromJSString result) => WebSocket -> m (Maybe result)`
+  * new: `getProtocol :: (MonadDOM m, FromJSString result) => WebSocket -> m result`
+* `JSDOM.ReadableStream.getReader`
+  * old: `getReader :: (MonadDOM m, ToJSVal options) => ReadableStream -> Maybe options -> m GObject`
+  * new: `getReader :: (MonadDOM m, IsReadableStream self) => self -> Maybe ReadableStreamGetReaderOptions -> m ReadableStreamReader`
+* `JSDOM.ReadableStream.getReader_`
+  * old: `getReader_ :: (MonadDOM m, ToJSVal options) => ReadableStream -> Maybe options -> m ()`
+  * new: `getReader_ :: (MonadDOM m, IsReadableStream self) => self -> Maybe ReadableStreamGetReaderOptions -> m ()`
+* `JSDOM.PerformanceTiming.getRedirectEnd`
+  * old: `getRedirectEnd :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getRedirectEnd :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceResourceTiming.getRedirectEnd`
+  * old: `getRedirectEnd :: MonadDOM m => PerformanceResourceTiming -> m DOMHighResTimeStamp`
+  * new: `getRedirectEnd :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double`
+* `JSDOM.PerformanceTiming.getRedirectStart`
+  * old: `getRedirectStart :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getRedirectStart :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceResourceTiming.getRedirectStart`
+  * old: `getRedirectStart :: MonadDOM m => PerformanceResourceTiming -> m DOMHighResTimeStamp`
+  * new: `getRedirectStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double`
+* `JSDOM.DynamicsCompressorNode.getReduction`
+  * old: `getReduction :: MonadDOM m => DynamicsCompressorNode -> m AudioParam`
+  * new: `getReduction :: MonadDOM m => DynamicsCompressorNode -> m Float`
+* `JSDOM.WebGLRenderingContextBase.getRenderbufferParameter`
+  * old: `getRenderbufferParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> m JSVal`
+  * new: `getRenderbufferParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m JSVal`
+* `JSDOM.WebGLRenderingContextBase.getRenderbufferParameter_`
+  * old: `getRenderbufferParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> m ()`
+  * new: `getRenderbufferParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()`
+* `JSDOM.PerformanceTiming.getRequestStart`
+  * old: `getRequestStart :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getRequestStart :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceResourceTiming.getRequestStart`
+  * old: `getRequestStart :: MonadDOM m => PerformanceResourceTiming -> m DOMHighResTimeStamp`
+  * new: `getRequestStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double`
+* `JSDOM.PerformanceTiming.getResponseEnd`
+  * old: `getResponseEnd :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getResponseEnd :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceResourceTiming.getResponseEnd`
+  * old: `getResponseEnd :: MonadDOM m => PerformanceResourceTiming -> m DOMHighResTimeStamp`
+  * new: `getResponseEnd :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double`
+* `JSDOM.PerformanceTiming.getResponseStart`
+  * old: `getResponseStart :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getResponseStart :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceResourceTiming.getResponseStart`
+  * old: `getResponseStart :: MonadDOM m => PerformanceResourceTiming -> m DOMHighResTimeStamp`
+  * new: `getResponseStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double`
+* `JSDOM.XMLHttpRequest.getResponseText`
+  * old: `getResponseText :: (MonadDOM m, FromJSString result) => XMLHttpRequest -> m (Maybe result)`
+  * new: `getResponseText :: (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result`
+* `JSDOM.XMLHttpRequest.getResponseText`
+  * old: `getResponseText :: (MonadDOM m, FromJSString result) => XMLHttpRequest -> m (Maybe result)`
+  * new: `getResponseText :: (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result`
+* `JSDOM.IDBRequest.getResult`
+  * old: `getResult :: (MonadDOM m, IsIDBRequest self) => self -> m (Maybe IDBRequestResult)`
+  * new: `getResult :: (MonadDOM m, IsIDBRequest self) => self -> m JSVal`
+* `JSDOM.IntersectionObserver.getRoot`
+  * old: `getRoot :: MonadDOM m => IntersectionObserver -> m (Maybe Element)`
+  * new: `getRoot :: MonadDOM m => IntersectionObserver -> m (Maybe ElementOrDocument)`
+* `JSDOM.IntersectionObserverEntry.getRootBounds`
+  * old: `getRootBounds :: MonadDOM m => IntersectionObserverEntry -> m DOMRectReadOnly`
+  * new: `getRootBounds :: MonadDOM m => IntersectionObserverEntry -> m (Maybe DOMRectReadOnly)`
+* `JSDOM.IntersectionObserver.getRootUnchecked`
+  * old: `getRootUnchecked :: MonadDOM m => IntersectionObserver -> m Element`
+  * new: `getRootUnchecked :: MonadDOM m => IntersectionObserver -> m ElementOrDocument`
+* `JSDOM.IntersectionObserver.getRootUnsafe`
+  * old: `getRootUnsafe :: (MonadDOM m, HasCallStack) => IntersectionObserver -> m Element`
+  * new: `getRootUnsafe :: (MonadDOM m, HasCallStack) => IntersectionObserver -> m ElementOrDocument`
+* `JSDOM.SVGTextContentElement.getRotationOfChar`
+  * old: `getRotationOfChar :: (MonadDOM m, IsSVGTextContentElement self) => self -> Maybe Word -> m Float`
+  * new: `getRotationOfChar :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> m Float`
+* `JSDOM.SVGTextContentElement.getRotationOfChar_`
+  * old: `getRotationOfChar_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> Maybe Word -> m ()`
+  * new: `getRotationOfChar_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> m ()`
+* `JSDOM.DeviceMotionEvent.getRotationRate`
+  * old: `getRotationRate :: MonadDOM m => DeviceMotionEvent -> m (Maybe RotationRate)`
+  * new: `getRotationRate :: MonadDOM m => DeviceMotionEvent -> m (Maybe DeviceMotionEventRotationRate)`
+* `JSDOM.DeviceMotionEvent.getRotationRateUnchecked`
+  * old: `getRotationRateUnchecked :: MonadDOM m => DeviceMotionEvent -> m RotationRate`
+  * new: `getRotationRateUnchecked :: MonadDOM m => DeviceMotionEvent -> m DeviceMotionEventRotationRate`
+* `JSDOM.DeviceMotionEvent.getRotationRateUnsafe`
+  * old: `getRotationRateUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEvent -> m RotationRate`
+  * new: `getRotationRateUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEvent -> m DeviceMotionEventRotationRate`
+* `JSDOM.HTMLObjectElement.getSVGDocument`
+  * old: `getSVGDocument :: MonadDOM m => HTMLObjectElement -> m Document`
+  * new: `getSVGDocument :: MonadDOM m => HTMLObjectElement -> m (Maybe Document)`
+* `JSDOM.HTMLIFrameElement.getSVGDocument`
+  * old: `getSVGDocument :: MonadDOM m => HTMLIFrameElement -> m Document`
+  * new: `getSVGDocument :: MonadDOM m => HTMLIFrameElement -> m (Maybe Document)`
+* `JSDOM.HTMLEmbedElement.getSVGDocument`
+  * old: `getSVGDocument :: MonadDOM m => HTMLEmbedElement -> m Document`
+  * new: `getSVGDocument :: MonadDOM m => HTMLEmbedElement -> m (Maybe Document)`
+* `JSDOM.SVGGraphicsElement.getScreenCTM`
+  * old: `getScreenCTM :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m SVGMatrix`
+  * new: `getScreenCTM :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m (Maybe DOMMatrix)`
+* `JSDOM.Touch.getScreenX`
+  * old: `getScreenX :: MonadDOM m => Touch -> m Int`
+  * new: `getScreenX :: MonadDOM m => Touch -> m Double`
+* `JSDOM.Touch.getScreenY`
+  * old: `getScreenY :: MonadDOM m => Touch -> m Int`
+  * new: `getScreenY :: MonadDOM m => Touch -> m Double`
+* `JSDOM.VTTRegion.getScroll`
+  * old: `getScroll :: (MonadDOM m, FromJSString result) => VTTRegion -> m result`
+  * new: `getScroll :: MonadDOM m => VTTRegion -> m ScrollSetting`
+* `JSDOM.Element.getScrollLeft`
+  * old: `getScrollLeft :: (MonadDOM m, IsElement self) => self -> m Int`
+  * new: `getScrollLeft :: (MonadDOM m, IsElement self) => self -> m Double`
+* `JSDOM.Element.getScrollTop`
+  * old: `getScrollTop :: (MonadDOM m, IsElement self) => self -> m Int`
+  * new: `getScrollTop :: (MonadDOM m, IsElement self) => self -> m Double`
+* `JSDOM.PerformanceTiming.getSecureConnectionStart`
+  * old: `getSecureConnectionStart :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getSecureConnectionStart :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceResourceTiming.getSecureConnectionStart`
+  * old: `getSecureConnectionStart :: MonadDOM m => PerformanceResourceTiming -> m DOMHighResTimeStamp`
+  * new: `getSecureConnectionStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double`
+* `JSDOM.HTMLInputElement.getSelectionDirection`
+  * old: `getSelectionDirection :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result`
+  * new: `getSelectionDirection :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m (Maybe result)`
+* `JSDOM.HTMLTextAreaElement.getSelectionEnd`
+  * old: `getSelectionEnd :: MonadDOM m => HTMLTextAreaElement -> m Int`
+  * new: `getSelectionEnd :: MonadDOM m => HTMLTextAreaElement -> m Word`
+* `JSDOM.HTMLInputElement.getSelectionEnd`
+  * old: `getSelectionEnd :: MonadDOM m => HTMLInputElement -> m Int`
+  * new: `getSelectionEnd :: MonadDOM m => HTMLInputElement -> m (Maybe Word)`
+* `JSDOM.HTMLTextAreaElement.getSelectionStart`
+  * old: `getSelectionStart :: MonadDOM m => HTMLTextAreaElement -> m Int`
+  * new: `getSelectionStart :: MonadDOM m => HTMLTextAreaElement -> m Word`
+* `JSDOM.HTMLInputElement.getSelectionStart`
+  * old: `getSelectionStart :: MonadDOM m => HTMLInputElement -> m Int`
+  * new: `getSelectionStart :: MonadDOM m => HTMLInputElement -> m (Maybe Word)`
+* `JSDOM.CSSStyleRule.getSelectorText`
+  * old: `getSelectorText :: (MonadDOM m, FromJSString result) => CSSStyleRule -> m (Maybe result)`
+  * new: `getSelectorText :: (MonadDOM m, FromJSString result) => CSSStyleRule -> m result`
+* `JSDOM.CSSPageRule.getSelectorText`
+  * old: `getSelectorText :: (MonadDOM m, FromJSString result) => CSSPageRule -> m (Maybe result)`
+  * new: `getSelectorText :: (MonadDOM m, FromJSString result) => CSSPageRule -> m result`
+* `JSDOM.WebGLRenderingContextBase.getShaderInfoLog`
+  * old: `getShaderInfoLog :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> Maybe WebGLShader -> m (Maybe result)`
+  * new: `getShaderInfoLog :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> WebGLShader -> m (Maybe result)`
+* `JSDOM.WebGLRenderingContextBase.getShaderInfoLogUnchecked`
+  * old: `getShaderInfoLogUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> Maybe WebGLShader -> m result`
+  * new: `getShaderInfoLogUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> WebGLShader -> m result`
+* `JSDOM.WebGLRenderingContextBase.getShaderInfoLogUnsafe`
+  * old: `getShaderInfoLogUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack, FromJSString result) => self -> Maybe WebGLShader -> m result`
+  * new: `getShaderInfoLogUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack, FromJSString result) => self -> WebGLShader -> m result`
+* `JSDOM.WebGLRenderingContextBase.getShaderInfoLog_`
+  * old: `getShaderInfoLog_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLShader -> m ()`
+  * new: `getShaderInfoLog_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLShader -> m ()`
+* `JSDOM.WebGLRenderingContextBase.getShaderParameter`
+  * old: `getShaderParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLShader -> GLenum -> m JSVal`
+  * new: `getShaderParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLShader -> Word -> m JSVal`
+* `JSDOM.WebGLRenderingContextBase.getShaderParameter_`
+  * old: `getShaderParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLShader -> GLenum -> m ()`
+  * new: `getShaderParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLShader -> Word -> m ()`
+* `JSDOM.WebGLRenderingContextBase.getShaderPrecisionFormat`
+  * old: `getShaderPrecisionFormat :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> m WebGLShaderPrecisionFormat`
+  * new: `getShaderPrecisionFormat :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m (Maybe WebGLShaderPrecisionFormat)`
+* `JSDOM.WebGLRenderingContextBase.getShaderPrecisionFormat_`
+  * old: `getShaderPrecisionFormat_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> m ()`
+  * new: `getShaderPrecisionFormat_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()`
+* `JSDOM.WebGLRenderingContextBase.getShaderSource`
+  * old: `getShaderSource :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> Maybe WebGLShader -> m (Maybe result)`
+  * new: `getShaderSource :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> WebGLShader -> m (Maybe result)`
+* `JSDOM.WebGLRenderingContextBase.getShaderSourceUnchecked`
+  * old: `getShaderSourceUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> Maybe WebGLShader -> m result`
+  * new: `getShaderSourceUnchecked :: (MonadDOM m, IsWebGLRenderingContextBase self, FromJSString result) => self -> WebGLShader -> m result`
+* `JSDOM.WebGLRenderingContextBase.getShaderSourceUnsafe`
+  * old: `getShaderSourceUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack, FromJSString result) => self -> Maybe WebGLShader -> m result`
+  * new: `getShaderSourceUnsafe :: (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack, FromJSString result) => self -> WebGLShader -> m result`
+* `JSDOM.WebGLRenderingContextBase.getShaderSource_`
+  * old: `getShaderSource_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLShader -> m ()`
+  * new: `getShaderSource_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLShader -> m ()`
+* `JSDOM.XPathResult.getSingleNodeValue`
+  * old: `getSingleNodeValue :: MonadDOM m => XPathResult -> m Node`
+  * new: `getSingleNodeValue :: MonadDOM m => XPathResult -> m (Maybe Node)`
+* `JSDOM.Blob.getSize`
+  * old: `getSize :: (MonadDOM m, IsBlob self) => self -> m Word64`
+  * new: `getSize :: (MonadDOM m, IsBlob self) => self -> m Word53`
+* `JSDOM.MessageEvent.getSource`
+  * old: `getSource :: MonadDOM m => MessageEvent -> m (Maybe EventTarget)`
+  * new: `getSource :: MonadDOM m => MessageEvent -> m (Maybe MessageEventSource)`
+* `JSDOM.IDBRequest.getSource`
+  * old: `getSource :: (MonadDOM m, IsIDBRequest self) => self -> m (Maybe IDBRequestSource)`
+  * new: `getSource :: (MonadDOM m, IsIDBRequest self) => self -> m (Maybe IDBObjectStoreOrIDBIndexOrIDBCursor)`
+* `JSDOM.IDBCursor.getSource`
+  * old: `getSource :: (MonadDOM m, IsIDBCursor self) => self -> m IDBCursorSource`
+  * new: `getSource :: (MonadDOM m, IsIDBCursor self) => self -> m IDBObjectStoreOrIDBIndex`
+* `JSDOM.VideoTrack.getSourceBuffer`
+  * old: `getSourceBuffer :: MonadDOM m => VideoTrack -> m SourceBuffer`
+  * new: `getSourceBuffer :: MonadDOM m => VideoTrack -> m (Maybe SourceBuffer)`
+* `JSDOM.TextTrack.getSourceBuffer`
+  * old: `getSourceBuffer :: MonadDOM m => TextTrack -> m SourceBuffer`
+  * new: `getSourceBuffer :: MonadDOM m => TextTrack -> m (Maybe SourceBuffer)`
+* `JSDOM.AudioTrack.getSourceBuffer`
+  * old: `getSourceBuffer :: MonadDOM m => AudioTrack -> m SourceBuffer`
+  * new: `getSourceBuffer :: MonadDOM m => AudioTrack -> m (Maybe SourceBuffer)`
+* `JSDOM.MessageEvent.getSourceUnchecked`
+  * old: `getSourceUnchecked :: MonadDOM m => MessageEvent -> m EventTarget`
+  * new: `getSourceUnchecked :: MonadDOM m => MessageEvent -> m MessageEventSource`
+* `JSDOM.IDBRequest.getSourceUnchecked`
+  * old: `getSourceUnchecked :: (MonadDOM m, IsIDBRequest self) => self -> m IDBRequestSource`
+  * new: `getSourceUnchecked :: (MonadDOM m, IsIDBRequest self) => self -> m IDBObjectStoreOrIDBIndexOrIDBCursor`
+* `JSDOM.MessageEvent.getSourceUnsafe`
+  * old: `getSourceUnsafe :: (MonadDOM m, HasCallStack) => MessageEvent -> m EventTarget`
+  * new: `getSourceUnsafe :: (MonadDOM m, HasCallStack) => MessageEvent -> m MessageEventSource`
+* `JSDOM.IDBRequest.getSourceUnsafe`
+  * old: `getSourceUnsafe :: (MonadDOM m, IsIDBRequest self, HasCallStack) => self -> m IDBRequestSource`
+  * new: `getSourceUnsafe :: (MonadDOM m, IsIDBRequest self, HasCallStack) => self -> m IDBObjectStoreOrIDBIndexOrIDBCursor`
+* `JSDOM.HTMLScriptElement.getSrc`
+  * old: `getSrc :: (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result`
+  * new: `getSrc :: MonadDOM m => HTMLScriptElement -> m TrustedScriptURLOrString`
+* `JSDOM.Event.getSrcElement`
+  * old: `getSrcElement :: (MonadDOM m, IsEvent self) => self -> m EventTarget`
+  * new: `getSrcElement :: (MonadDOM m, IsEvent self) => self -> m (Maybe EventTarget)`
+* `JSDOM.HTMLIFrameElement.getSrcdoc`
+  * old: `getSrcdoc :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result`
+  * new: `getSrcdoc :: MonadDOM m => HTMLIFrameElement -> m TrustedHTMLOrString`
+* `JSDOM.HTMLMediaElement.getStartDate`
+  * old: `getStartDate :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Date`
+  * new: `getStartDate :: (MonadDOM m, IsHTMLMediaElement self) => self -> m GObject`
+* `JSDOM.SVGTextContentElement.getStartPositionOfChar`
+  * old: `getStartPositionOfChar :: (MonadDOM m, IsSVGTextContentElement self) => self -> Maybe Word -> m SVGPoint`
+  * new: `getStartPositionOfChar :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> m DOMPoint`
+* `JSDOM.SVGTextContentElement.getStartPositionOfChar_`
+  * old: `getStartPositionOfChar_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> Maybe Word -> m ()`
+  * new: `getStartPositionOfChar_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> m ()`
+* `JSDOM.PerformanceEntry.getStartTime`
+  * old: `getStartTime :: (MonadDOM m, IsPerformanceEntry self) => self -> m DOMHighResTimeStamp`
+  * new: `getStartTime :: (MonadDOM m, IsPerformanceEntry self) => self -> m Double`
+* `JSDOM.History.getState`
+  * old: `getState :: MonadDOM m => History -> m SerializedScriptValue`
+  * new: `getState :: MonadDOM m => History -> m JSVal`
+* `JSDOM.ElementCSSInlineStyle.getStyle`
+  * old: `getStyle :: (MonadDOM m, IsElementCSSInlineStyle self) => self -> m CSSStyleDeclaration`
+  * new: `getStyle :: (MonadDOM m, IsElementCSSInlineStyle self) => self -> m CSSStyleProperties`
+* `JSDOM.CSSStyleRule.getStyle`
+  * old: `getStyle :: MonadDOM m => CSSStyleRule -> m CSSStyleDeclaration`
+  * new: `getStyle :: MonadDOM m => CSSStyleRule -> m CSSStyleProperties`
+* `JSDOM.CSSPageRule.getStyle`
+  * old: `getStyle :: MonadDOM m => CSSPageRule -> m CSSStyleDeclaration`
+  * new: `getStyle :: MonadDOM m => CSSPageRule -> m CSSPageDescriptors`
+* `JSDOM.CSSKeyframeRule.getStyle`
+  * old: `getStyle :: MonadDOM m => CSSKeyframeRule -> m CSSStyleDeclaration`
+  * new: `getStyle :: MonadDOM m => CSSKeyframeRule -> m CSSStyleProperties`
+* `JSDOM.CSSFontFaceRule.getStyle`
+  * old: `getStyle :: MonadDOM m => CSSFontFaceRule -> m CSSStyleDeclaration`
+  * new: `getStyle :: MonadDOM m => CSSFontFaceRule -> m CSSFontFaceDescriptors`
+* `JSDOM.CSSImportRule.getStyleSheet`
+  * old: `getStyleSheet :: MonadDOM m => CSSImportRule -> m CSSStyleSheet`
+  * new: `getStyleSheet :: MonadDOM m => CSSImportRule -> m (Maybe CSSStyleSheet)`
+* `JSDOM.SVGTextContentElement.getSubStringLength`
+  * old: `getSubStringLength :: (MonadDOM m, IsSVGTextContentElement self) => self -> Maybe Word -> Maybe Word -> m Float`
+  * new: `getSubStringLength :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> Word -> m Float`
+* `JSDOM.SVGTextContentElement.getSubStringLength_`
+  * old: `getSubStringLength_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> Maybe Word -> Maybe Word -> m ()`
+  * new: `getSubStringLength_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> Word -> m ()`
+* `JSDOM.SVGAnimationElement.getTargetElement`
+  * old: `getTargetElement :: (MonadDOM m, IsSVGAnimationElement self) => self -> m SVGElement`
+  * new: `getTargetElement :: (MonadDOM m, IsSVGAnimationElement self) => self -> m (Maybe SVGElement)`
+* `JSDOM.WebGLRenderingContextBase.getTexParameter`
+  * old: `getTexParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> m JSVal`
+  * new: `getTexParameter :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m JSVal`
+* `JSDOM.WebGLRenderingContextBase.getTexParameter_`
+  * old: `getTexParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> m ()`
+  * new: `getTexParameter_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()`
+* `JSDOM.HTMLScriptElement.getText`
+  * old: `getText :: (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result`
+  * new: `getText :: MonadDOM m => HTMLScriptElement -> m TrustedScriptOrString`
+* `JSDOM.IntersectionObserverEntry.getTime`
+  * old: `getTime :: MonadDOM m => IntersectionObserverEntry -> m DOMHighResTimeStamp`
+  * new: `getTime :: MonadDOM m => IntersectionObserverEntry -> m Double`
+* `JSDOM.Event.getTimeStamp`
+  * old: `getTimeStamp :: (MonadDOM m, IsEvent self) => self -> m Word`
+  * new: `getTimeStamp :: (MonadDOM m, IsEvent self) => self -> m Double`
+* `JSDOM.Animation.getTimeline`
+  * old: `getTimeline :: MonadDOM m => Animation -> m (Maybe AnimationTimeline)`
+  * new: `getTimeline :: (MonadDOM m, IsAnimation self) => self -> m (Maybe AnimationTimeline)`
+* `JSDOM.Animation.getTimelineUnchecked`
+  * old: `getTimelineUnchecked :: MonadDOM m => Animation -> m AnimationTimeline`
+  * new: `getTimelineUnchecked :: (MonadDOM m, IsAnimation self) => self -> m AnimationTimeline`
+* `JSDOM.Animation.getTimelineUnsafe`
+  * old: `getTimelineUnsafe :: (MonadDOM m, HasCallStack) => Animation -> m AnimationTimeline`
+  * new: `getTimelineUnsafe :: (MonadDOM m, IsAnimation self, HasCallStack) => self -> m AnimationTimeline`
+* `JSDOM.ProgressEvent.getTotal`
+  * old: `getTotal :: (MonadDOM m, IsProgressEvent self) => self -> m Word64`
+  * new: `getTotal :: MonadDOM m => ProgressEvent -> m Double`
+* `JSDOM.TrackEvent.getTrack`
+  * old: `getTrack :: MonadDOM m => TrackEvent -> m (Maybe Track)`
+  * new: `getTrack :: MonadDOM m => TrackEvent -> m (Maybe VideoTrackOrAudioTrackOrTextTrack)`
+* `JSDOM.TextTrackCue.getTrack`
+  * old: `getTrack :: (MonadDOM m, IsTextTrackCue self) => self -> m TextTrack`
+  * new: `getTrack :: (MonadDOM m, IsTextTrackCue self) => self -> m (Maybe TextTrack)`
+* `JSDOM.VideoTrackList.getTrackById`
+  * old: `getTrackById :: (MonadDOM m, ToJSString id) => VideoTrackList -> id -> m VideoTrack`
+  * new: `getTrackById :: (MonadDOM m, ToJSString id) => VideoTrackList -> id -> m (Maybe VideoTrack)`
+* `JSDOM.TextTrackList.getTrackById`
+  * old: `getTrackById :: (MonadDOM m, ToJSString id) => TextTrackList -> id -> m TextTrack`
+  * new: `getTrackById :: (MonadDOM m, ToJSString id) => TextTrackList -> id -> m (Maybe TextTrack)`
+* `JSDOM.MediaStream.getTrackById`
+  * old: `getTrackById :: (MonadDOM m, ToJSString trackId) => MediaStream -> trackId -> m MediaStreamTrack`
+  * new: `getTrackById :: (MonadDOM m, ToJSString trackId) => MediaStream -> trackId -> m (Maybe MediaStreamTrack)`
+* `JSDOM.AudioTrackList.getTrackById`
+  * old: `getTrackById :: (MonadDOM m, ToJSString id) => AudioTrackList -> id -> m AudioTrack`
+  * new: `getTrackById :: (MonadDOM m, ToJSString id) => AudioTrackList -> id -> m (Maybe AudioTrack)`
+* `JSDOM.TrackEvent.getTrackUnchecked`
+  * old: `getTrackUnchecked :: MonadDOM m => TrackEvent -> m Track`
+  * new: `getTrackUnchecked :: MonadDOM m => TrackEvent -> m VideoTrackOrAudioTrackOrTextTrack`
+* `JSDOM.TrackEvent.getTrackUnsafe`
+  * old: `getTrackUnsafe :: (MonadDOM m, HasCallStack) => TrackEvent -> m Track`
+  * new: `getTrackUnsafe :: (MonadDOM m, HasCallStack) => TrackEvent -> m VideoTrackOrAudioTrackOrTextTrack`
+* `JSDOM.IDBRequest.getTransaction`
+  * old: `getTransaction :: (MonadDOM m, IsIDBRequest self) => self -> m IDBTransaction`
+  * new: `getTransaction :: (MonadDOM m, IsIDBRequest self) => self -> m (Maybe IDBTransaction)`
+* `JSDOM.StyleSheet.getType`
+  * old: `getType :: (MonadDOM m, IsStyleSheet self, FromJSString result) => self -> m (Maybe result)`
+  * new: `getType :: (MonadDOM m, IsStyleSheet self, FromJSString result) => self -> m result`
+* `JSDOM.WebGLRenderingContextBase.getUniform`
+  * old: `getUniform :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> Maybe WebGLUniformLocation -> m JSVal`
+  * new: `getUniform :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> WebGLUniformLocation -> m JSVal`
+* `JSDOM.WebGLRenderingContextBase.getUniformLocation`
+  * old: `getUniformLocation :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> Maybe WebGLProgram -> name -> m WebGLUniformLocation`
+  * new: `getUniformLocation :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> WebGLProgram -> name -> m (Maybe WebGLUniformLocation)`
+* `JSDOM.WebGLRenderingContextBase.getUniformLocation_`
+  * old: `getUniformLocation_ :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> Maybe WebGLProgram -> name -> m ()`
+  * new: `getUniformLocation_ :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) => self -> WebGLProgram -> name -> m ()`
+* `JSDOM.WebGLRenderingContextBase.getUniform_`
+  * old: `getUniform_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> Maybe WebGLUniformLocation -> m ()`
+  * new: `getUniform_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> WebGLUniformLocation -> m ()`
+* `JSDOM.PerformanceTiming.getUnloadEventEnd`
+  * old: `getUnloadEventEnd :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getUnloadEventEnd :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.PerformanceTiming.getUnloadEventStart`
+  * old: `getUnloadEventStart :: MonadDOM m => PerformanceTiming -> m Word64`
+  * new: `getUnloadEventStart :: MonadDOM m => PerformanceTiming -> m Word53`
+* `JSDOM.CryptoKey.getUsages`
+  * old: `getUsages :: MonadDOM m => CryptoKey -> m [CryptoKeyUsage]`
+  * new: `getUsages :: MonadDOM m => CryptoKey -> m GObject`
+* `JSDOM.HTMLInputElement.getValueAsDate`
+  * old: `getValueAsDate :: MonadDOM m => HTMLInputElement -> m (Maybe Date)`
+  * new: `getValueAsDate :: MonadDOM m => HTMLInputElement -> m (Maybe GObject)`
+* `JSDOM.HTMLInputElement.getValueAsDateUnchecked`
+  * old: `getValueAsDateUnchecked :: MonadDOM m => HTMLInputElement -> m Date`
+  * new: `getValueAsDateUnchecked :: MonadDOM m => HTMLInputElement -> m GObject`
+* `JSDOM.HTMLInputElement.getValueAsDateUnsafe`
+  * old: `getValueAsDateUnsafe :: (MonadDOM m, HasCallStack) => HTMLInputElement -> m Date`
+  * new: `getValueAsDateUnsafe :: (MonadDOM m, HasCallStack) => HTMLInputElement -> m GObject`
+* `JSDOM.IDBDatabase.getVersion`
+  * old: `getVersion :: MonadDOM m => IDBDatabase -> m Word64`
+  * new: `getVersion :: MonadDOM m => IDBDatabase -> m Word53`
+* `JSDOM.WebGLRenderingContextBase.getVertexAttrib`
+  * old: `getVertexAttrib :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLuint -> GLenum -> m JSVal`
+  * new: `getVertexAttrib :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m JSVal`
+* `JSDOM.WebGLRenderingContextBase.getVertexAttribOffset`
+  * old: `getVertexAttribOffset :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLuint -> GLenum -> m GLsizeiptr`
+  * new: `getVertexAttribOffset :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m Int53`
+* `JSDOM.WebGLRenderingContextBase.getVertexAttribOffset_`
+  * old: `getVertexAttribOffset_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLuint -> GLenum -> m ()`
+  * new: `getVertexAttribOffset_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()`
+* `JSDOM.WebGLRenderingContextBase.getVertexAttrib_`
+  * old: `getVertexAttrib_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLuint -> GLenum -> m ()`
+  * new: `getVertexAttrib_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()`
+* `JSDOM.VTTCue.getVertical`
+  * old: `getVertical :: (MonadDOM m, FromJSString result) => VTTCue -> m result`
+  * new: `getVertical :: MonadDOM m => VTTCue -> m DirectionSetting`
+* `JSDOM.UIEvent.getView`
+  * old: `getView :: (MonadDOM m, IsUIEvent self) => self -> m Window`
+  * new: `getView :: (MonadDOM m, IsUIEvent self) => self -> m (Maybe Window)`
+* `JSDOM.ReadableStreamBYOBRequest.getView`
+  * old: `getView :: MonadDOM m => ReadableStreamBYOBRequest -> m RawTypedArray`
+  * new: `getView :: MonadDOM m => ReadableStreamBYOBRequest -> m (Maybe Uint8Array)`
+* `JSDOM.SVGElement.getViewportElement`
+  * old: `getViewportElement :: (MonadDOM m, IsSVGElement self) => self -> m SVGElement`
+  * new: `getViewportElement :: (MonadDOM m, IsSVGElement self) => self -> m (Maybe SVGElement)`
+* `JSDOM.Document.getVisibilityState`
+  * old: `getVisibilityState :: (MonadDOM m, IsDocument self) => self -> m VisibilityState`
+  * new: `getVisibilityState :: (MonadDOM m, IsDocument self) => self -> m DocumentVisibilityState`
+* `JSDOM.UIEvent.getWhich`
+  * old: `getWhich :: (MonadDOM m, IsUIEvent self) => self -> m Int`
+  * new: `getWhich :: (MonadDOM m, IsUIEvent self) => self -> m Word`
+* `JSDOM.TextMetrics.getWidth`
+  * old: `getWidth :: MonadDOM m => TextMetrics -> m Float`
+  * new: `getWidth :: MonadDOM m => TextMetrics -> m Double`
+* `JSDOM.Screen.getWidth`
+  * old: `getWidth :: MonadDOM m => Screen -> m Word`
+  * new: `getWidth :: (MonadDOM m, IsScreen self) => self -> m Int`
+* `JSDOM.PerformanceResourceTiming.getWorkerStart`
+  * old: `getWorkerStart :: MonadDOM m => PerformanceResourceTiming -> m DOMHighResTimeStamp`
+  * new: `getWorkerStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double`
+* `JSDOM.MouseEvent.getX`
+  * old: `getX :: (MonadDOM m, IsMouseEvent self) => self -> m Int`
+  * new: `getX :: (MonadDOM m, IsMouseEvent self) => self -> m Double`
+* `JSDOM.MouseEvent.getY`
+  * old: `getY :: (MonadDOM m, IsMouseEvent self) => self -> m Int`
+  * new: `getY :: (MonadDOM m, IsMouseEvent self) => self -> m Double`
+* `JSDOM.IDBObjectStore.get_`
+  * old: `get_ :: (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> m ()`
+  * new: `get_ :: MonadDOM m => IDBObjectStore -> JSVal -> m ()`
+* `JSDOM.IDBIndex.get_`
+  * old: `get_ :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> m ()`
+  * new: `get_ :: MonadDOM m => IDBIndex -> JSVal -> m ()`
+* `JSDOM.Element.hasAttributeNS`
+  * old: `hasAttributeNS :: (MonadDOM m, IsElement self, ToJSString namespaceURI, ToJSString localName) => self -> Maybe namespaceURI -> localName -> m Bool`
+  * new: `hasAttributeNS :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m Bool`
+* `JSDOM.Element.hasAttributeNS_`
+  * old: `hasAttributeNS_ :: (MonadDOM m, IsElement self, ToJSString namespaceURI, ToJSString localName) => self -> Maybe namespaceURI -> localName -> m ()`
+  * new: `hasAttributeNS_ :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m ()`
+* `JSDOM.WebGLRenderingContextBase.hint`
+  * old: `hint :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> m ()`
+  * new: `hint :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()`
+* `JSDOM.RTCPeerConnection.iceCandidate`
+  * old: `iceCandidate :: EventName RTCPeerConnection RTCIceCandidateEvent`
+  * new: `iceCandidate :: EventName RTCPeerConnection RTCPeerConnectionIceEvent`
+* `JSDOM.RTCPeerConnection.icegatheringstatechange`
+  * old: `icegatheringstatechange :: EventName RTCPeerConnection onicegatheringstatechange`
+  * new: `icegatheringstatechange :: EventName RTCPeerConnection Event`
+* `JSDOM.SubtleCrypto.importKey`
+  * old: `importKey :: (MonadDOM m, ToJSString format, IsKeyData keyData, ToJSString algorithm) => SubtleCrypto -> format -> keyData -> algorithm -> Bool -> [CryptoKeyUsage] -> m CryptoKey`
+  * new: `importKey :: (MonadDOM m, IsBufferSourceOrJsonWebKey keyData, IsAlgorithmIdentifier algorithm) => SubtleCrypto -> KeyFormat -> keyData -> algorithm -> Bool -> [KeyUsage] -> m CryptoKey`
+* `JSDOM.SubtleCrypto.importKey_`
+  * old: `importKey_ :: (MonadDOM m, ToJSString format, IsKeyData keyData, ToJSString algorithm) => SubtleCrypto -> format -> keyData -> algorithm -> Bool -> [CryptoKeyUsage] -> m ()`
+  * new: `importKey_ :: (MonadDOM m, IsBufferSourceOrJsonWebKey keyData, IsAlgorithmIdentifier algorithm) => SubtleCrypto -> KeyFormat -> keyData -> algorithm -> Bool -> [KeyUsage] -> m ()`
+* `JSDOM.Document.importNode`
+  * old: `importNode :: (MonadDOM m, IsDocument self, IsNode node) => self -> node -> Bool -> m Node`
+  * new: `importNode :: (MonadDOM m, IsDocument self, IsNode node, IsBoolOrImportNodeOptions options) => self -> node -> Maybe options -> m Node`
+* `JSDOM.Document.importNode_`
+  * old: `importNode_ :: (MonadDOM m, IsDocument self, IsNode node) => self -> node -> Bool -> m ()`
+  * new: `importNode_ :: (MonadDOM m, IsDocument self, IsNode node, IsBoolOrImportNodeOptions options) => self -> node -> Maybe options -> m ()`
+* `JSDOM.WorkerGlobalScope.importScripts`
+  * old: `importScripts :: (MonadDOM m, IsWorkerGlobalScope self, ToJSString urls) => self -> [urls] -> m ()`
+  * new: `importScripts :: (MonadDOM m, IsWorkerGlobalScope self, IsTrustedScriptURLOrString urls) => self -> [urls] -> m ()`
+* `JSDOM.XSLTProcessor.importStylesheet`
+  * old: `importStylesheet :: (MonadDOM m, IsNode stylesheet) => XSLTProcessor -> Maybe stylesheet -> m ()`
+  * new: `importStylesheet :: (MonadDOM m, IsNode style) => XSLTProcessor -> style -> m ()`
+* `JSDOM.IDBKeyRange.includes`
+  * old: `includes :: (MonadDOM m, ToJSVal key) => IDBKeyRange -> key -> m Bool`
+  * new: `includes :: MonadDOM m => IDBKeyRange -> JSVal -> m Bool`
+* `JSDOM.IDBKeyRange.includes_`
+  * old: `includes_ :: (MonadDOM m, ToJSVal key) => IDBKeyRange -> key -> m ()`
+  * new: `includes_ :: MonadDOM m => IDBKeyRange -> JSVal -> m ()`
+* `JSDOM.CompositionEvent.initCompositionEvent`
+  * old: `initCompositionEvent :: (MonadDOM m, ToJSString typeArg, ToJSString dataArg) => CompositionEvent -> Maybe typeArg -> Bool -> Bool -> Maybe Window -> Maybe dataArg -> m ()`
+  * new: `initCompositionEvent :: (MonadDOM m, ToJSString typeArg, ToJSString dataArg) => CompositionEvent -> typeArg -> Maybe Bool -> Maybe Bool -> Maybe Window -> Maybe dataArg -> m ()`
+* `JSDOM.CustomEvent.initCustomEvent`
+  * old: `initCustomEvent :: (MonadDOM m, ToJSString type', ToJSVal detail) => CustomEvent -> type' -> Bool -> Bool -> Maybe detail -> m ()`
+  * new: `initCustomEvent :: (MonadDOM m, ToJSString type') => CustomEvent -> type' -> Maybe Bool -> Maybe Bool -> JSVal -> m ()`
+* `JSDOM.Event.initEvent`
+  * old: `initEvent :: (MonadDOM m, IsEvent self, ToJSString type') => self -> type' -> Bool -> Bool -> m ()`
+  * new: `initEvent :: (MonadDOM m, IsEvent self, ToJSString type') => self -> type' -> Maybe Bool -> Maybe Bool -> m ()`
+* `JSDOM.KeyboardEvent.initKeyboardEvent`
+  * old: `initKeyboardEvent :: (MonadDOM m, ToJSString type', ToJSString keyIdentifier) => KeyboardEvent -> Maybe type' -> Bool -> Bool -> Maybe Window -> Maybe keyIdentifier -> Maybe Word -> Bool -> Bool -> Bool -> Bool -> Bool -> m ()`
+  * new: `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 ()`
+* `JSDOM.MessageEvent.initMessageEvent`
+  * old: `initMessageEvent :: (MonadDOM 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 ()`
+  * new: `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 ()`
+* `JSDOM.MouseEvent.initMouseEvent`
+  * old: `initMouseEvent :: (MonadDOM 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 ()`
+  * new: `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 ()`
+* `JSDOM.StorageEvent.initStorageEvent`
+  * old: `initStorageEvent :: (MonadDOM 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 ()`
+  * new: `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 ()`
+* `JSDOM.TextEvent.initTextEvent`
+  * old: `initTextEvent :: (MonadDOM m, ToJSString typeArg, ToJSString dataArg) => TextEvent -> Maybe typeArg -> Bool -> Bool -> Maybe Window -> Maybe dataArg -> m ()`
+  * new: `initTextEvent :: (MonadDOM m, ToJSString type', ToJSString data') => TextEvent -> type' -> Maybe Bool -> Maybe Bool -> Maybe Window -> Maybe data' -> m ()`
+* `JSDOM.UIEvent.initUIEvent`
+  * old: `initUIEvent :: (MonadDOM m, IsUIEvent self, ToJSString type') => self -> Maybe type' -> Bool -> Bool -> Maybe Window -> Maybe Int -> m ()`
+  * new: `initUIEvent :: (MonadDOM m, IsUIEvent self, ToJSString typeArg) => self -> typeArg -> Maybe Bool -> Maybe Bool -> Maybe Window -> Maybe Int -> m ()`
+* `JSDOM.SVGStringList.initialize`
+  * old: `initialize :: (MonadDOM m, ToJSString item, FromJSString result) => SVGStringList -> item -> m result`
+  * new: `initialize :: (MonadDOM m, ToJSString newItem, FromJSString result) => SVGStringList -> newItem -> m result`
+* `JSDOM.SVGPointList.initialize`
+  * old: `initialize :: MonadDOM m => SVGPointList -> SVGPoint -> m SVGPoint`
+  * new: `initialize :: MonadDOM m => SVGPointList -> DOMPoint -> m DOMPoint`
+* `JSDOM.SVGStringList.initialize_`
+  * old: `initialize_ :: (MonadDOM m, ToJSString item) => SVGStringList -> item -> m ()`
+  * new: `initialize_ :: (MonadDOM m, ToJSString newItem) => SVGStringList -> newItem -> m ()`
+* `JSDOM.SVGPointList.initialize_`
+  * old: `initialize_ :: MonadDOM m => SVGPointList -> SVGPoint -> m ()`
+  * new: `initialize_ :: MonadDOM m => SVGPointList -> DOMPoint -> m ()`
+* `JSDOM.GlobalEventHandlers.input`
+  * old: `input :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event`
+  * new: `input :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self InputEvent`
+* `JSDOM.Element.insertAdjacentHTML`
+  * old: `insertAdjacentHTML :: (MonadDOM m, IsElement self, ToJSString position, ToJSString text) => self -> position -> text -> m ()`
+  * new: `insertAdjacentHTML :: (MonadDOM m, IsElement self, ToJSString position, IsTrustedHTMLOrString string) => self -> position -> string -> m ()`
+* `JSDOM.HTMLTableRowElement.insertCell`
+  * old: `insertCell :: MonadDOM m => HTMLTableRowElement -> Maybe Int -> m HTMLElement`
+  * new: `insertCell :: MonadDOM m => HTMLTableRowElement -> Maybe Int -> m HTMLTableCellElement`
+* `JSDOM.RTCDTMFSender.insertDTMF`
+  * old: `insertDTMF :: (MonadDOM m, ToJSString tones) => RTCDTMFSender -> tones -> Maybe Int -> Maybe Int -> m ()`
+  * new: `insertDTMF :: (MonadDOM m, ToJSString tones) => RTCDTMFSender -> tones -> Maybe Word -> Maybe Word -> m ()`
+* `JSDOM.SVGStringList.insertItemBefore`
+  * old: `insertItemBefore :: (MonadDOM m, ToJSString item, FromJSString result) => SVGStringList -> item -> Word -> m result`
+  * new: `insertItemBefore :: (MonadDOM m, ToJSString newItem, FromJSString result) => SVGStringList -> newItem -> Word -> m result`
+* `JSDOM.SVGPointList.insertItemBefore`
+  * old: `insertItemBefore :: MonadDOM m => SVGPointList -> SVGPoint -> Word -> m SVGPoint`
+  * new: `insertItemBefore :: MonadDOM m => SVGPointList -> DOMPoint -> Word -> m DOMPoint`
+* `JSDOM.SVGStringList.insertItemBefore_`
+  * old: `insertItemBefore_ :: (MonadDOM m, ToJSString item) => SVGStringList -> item -> Word -> m ()`
+  * new: `insertItemBefore_ :: (MonadDOM m, ToJSString newItem) => SVGStringList -> newItem -> Word -> m ()`
+* `JSDOM.SVGPointList.insertItemBefore_`
+  * old: `insertItemBefore_ :: MonadDOM m => SVGPointList -> SVGPoint -> Word -> m ()`
+  * new: `insertItemBefore_ :: MonadDOM m => SVGPointList -> DOMPoint -> Word -> m ()`
+* `JSDOM.HTMLTableSectionElement.insertRow`
+  * old: `insertRow :: MonadDOM m => HTMLTableSectionElement -> Maybe Int -> m HTMLElement`
+  * new: `insertRow :: MonadDOM m => HTMLTableSectionElement -> Maybe Int -> m HTMLTableRowElement`
+* `JSDOM.HTMLTableElement.insertRow`
+  * old: `insertRow :: MonadDOM m => HTMLTableElement -> Maybe Int -> m HTMLElement`
+  * new: `insertRow :: MonadDOM m => HTMLTableElement -> Maybe Int -> m HTMLTableRowElement`
+* `JSDOM.WebGLRenderingContextBase.isBuffer`
+  * old: `isBuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLBuffer -> m GLboolean`
+  * new: `isBuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLBuffer -> m Bool`
+* `JSDOM.WebGLRenderingContextBase.isContextLost`
+  * old: `isContextLost :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m GLboolean`
+  * new: `isContextLost :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m Bool`
+* `JSDOM.Node.isDefaultNamespace`
+  * old: `isDefaultNamespace :: (MonadDOM m, IsNode self, ToJSString namespaceURI) => self -> Maybe namespaceURI -> m Bool`
+  * new: `isDefaultNamespace :: (MonadDOM m, IsNode self, ToJSString namespace) => self -> Maybe namespace -> m Bool`
+* `JSDOM.Node.isDefaultNamespace_`
+  * old: `isDefaultNamespace_ :: (MonadDOM m, IsNode self, ToJSString namespaceURI) => self -> Maybe namespaceURI -> m ()`
+  * new: `isDefaultNamespace_ :: (MonadDOM m, IsNode self, ToJSString namespace) => self -> Maybe namespace -> m ()`
+* `JSDOM.WebGLRenderingContextBase.isEnabled`
+  * old: `isEnabled :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> m GLboolean`
+  * new: `isEnabled :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m Bool`
+* `JSDOM.WebGLRenderingContextBase.isEnabled_`
+  * old: `isEnabled_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> m ()`
+  * new: `isEnabled_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()`
+* `JSDOM.Node.isEqualNode`
+  * old: `isEqualNode :: (MonadDOM m, IsNode self, IsNode other) => self -> Maybe other -> m Bool`
+  * new: `isEqualNode :: (MonadDOM m, IsNode self, IsNode otherNode) => self -> Maybe otherNode -> m Bool`
+* `JSDOM.Node.isEqualNode_`
+  * old: `isEqualNode_ :: (MonadDOM m, IsNode self, IsNode other) => self -> Maybe other -> m ()`
+  * new: `isEqualNode_ :: (MonadDOM m, IsNode self, IsNode otherNode) => self -> Maybe otherNode -> m ()`
+* `JSDOM.WebGLRenderingContextBase.isFramebuffer`
+  * old: `isFramebuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLFramebuffer -> m GLboolean`
+  * new: `isFramebuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLFramebuffer -> m Bool`
+* `JSDOM.WebGLRenderingContextBase.isProgram`
+  * old: `isProgram :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> m GLboolean`
+  * new: `isProgram :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> m Bool`
+* `JSDOM.WebGLRenderingContextBase.isRenderbuffer`
+  * old: `isRenderbuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLRenderbuffer -> m GLboolean`
+  * new: `isRenderbuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLRenderbuffer -> m Bool`
+* `JSDOM.Node.isSameNode`
+  * old: `isSameNode :: (MonadDOM m, IsNode self, IsNode other) => self -> Maybe other -> m Bool`
+  * new: `isSameNode :: (MonadDOM m, IsNode self, IsNode otherNode) => self -> Maybe otherNode -> m Bool`
+* `JSDOM.Node.isSameNode_`
+  * old: `isSameNode_ :: (MonadDOM m, IsNode self, IsNode other) => self -> Maybe other -> m ()`
+  * new: `isSameNode_ :: (MonadDOM m, IsNode self, IsNode otherNode) => self -> Maybe otherNode -> m ()`
+* `JSDOM.WebGLRenderingContextBase.isShader`
+  * old: `isShader :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLShader -> m GLboolean`
+  * new: `isShader :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLShader -> m Bool`
+* `JSDOM.WebGLRenderingContextBase.isTexture`
+  * old: `isTexture :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLTexture -> m GLboolean`
+  * new: `isTexture :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLTexture -> m Bool`
+* `JSDOM.TouchList.item`
+  * old: `item :: MonadDOM m => TouchList -> Word -> m Touch`
+  * new: `item :: MonadDOM m => TouchList -> Word -> m (Maybe Touch)`
+* `JSDOM.StyleSheetList.item`
+  * old: `item :: MonadDOM m => StyleSheetList -> Word -> m (Maybe StyleSheet)`
+  * new: `item :: MonadDOM m => StyleSheetList -> Word -> m (Maybe CSSStyleSheet)`
+* `JSDOM.HTMLAllCollection.item`
+  * old: `item :: MonadDOM m => HTMLAllCollection -> Word -> m (Maybe Element)`
+  * new: `item :: (MonadDOM m, ToJSString nameOrIndex) => HTMLAllCollection -> Maybe nameOrIndex -> m (Maybe HTMLCollectionOrElement)`
+* `JSDOM.CSSStyleDeclaration.item`
+  * old: `item :: (MonadDOM m, FromJSString result) => CSSStyleDeclaration -> Word -> m result`
+  * new: `item :: (MonadDOM m, IsCSSStyleDeclaration self, FromJSString result) => self -> Word -> m result`
+* `JSDOM.CSSRuleList.item`
+  * old: `item :: MonadDOM m => CSSRuleList -> Word -> m CSSRule`
+  * new: `item :: MonadDOM m => CSSRuleList -> Word -> m (Maybe CSSRule)`
+* `JSDOM.StyleSheetList.itemUnchecked`
+  * old: `itemUnchecked :: MonadDOM m => StyleSheetList -> Word -> m StyleSheet`
+  * new: `itemUnchecked :: MonadDOM m => StyleSheetList -> Word -> m CSSStyleSheet`
+* `JSDOM.HTMLAllCollection.itemUnchecked`
+  * old: `itemUnchecked :: MonadDOM m => HTMLAllCollection -> Word -> m Element`
+  * new: `itemUnchecked :: (MonadDOM m, ToJSString nameOrIndex) => HTMLAllCollection -> Maybe nameOrIndex -> m HTMLCollectionOrElement`
+* `JSDOM.StyleSheetList.itemUnsafe`
+  * old: `itemUnsafe :: (MonadDOM m, HasCallStack) => StyleSheetList -> Word -> m StyleSheet`
+  * new: `itemUnsafe :: (MonadDOM m, HasCallStack) => StyleSheetList -> Word -> m CSSStyleSheet`
+* `JSDOM.HTMLAllCollection.itemUnsafe`
+  * old: `itemUnsafe :: (MonadDOM m, HasCallStack) => HTMLAllCollection -> Word -> m Element`
+  * new: `itemUnsafe :: (MonadDOM m, ToJSString nameOrIndex, HasCallStack) => HTMLAllCollection -> Maybe nameOrIndex -> m HTMLCollectionOrElement`
+* `JSDOM.HTMLAllCollection.item_`
+  * old: `item_ :: MonadDOM m => HTMLAllCollection -> Word -> m ()`
+  * new: `item_ :: (MonadDOM m, ToJSString nameOrIndex) => HTMLAllCollection -> Maybe nameOrIndex -> m ()`
+* `JSDOM.CSSStyleDeclaration.item_`
+  * old: `item_ :: MonadDOM m => CSSStyleDeclaration -> Word -> m ()`
+  * new: `item_ :: (MonadDOM m, IsCSSStyleDeclaration self) => self -> Word -> m ()`
+* `JSDOM.XPathResult.iterateNext`
+  * old: `iterateNext :: MonadDOM m => XPathResult -> m Node`
+  * new: `iterateNext :: MonadDOM m => XPathResult -> m (Maybe Node)`
+* `JSDOM.Enums.js_AppendModeSegments`
+  * old: `js_AppendModeSegments :: String`
+  * new: `js_AppendModeSegments :: JSString`
+* `JSDOM.Enums.js_AppendModeSequence`
+  * old: `js_AppendModeSequence :: String`
+  * new: `js_AppendModeSequence :: JSString`
+* `JSDOM.Enums.js_AudioContextStateClosed`
+  * old: `js_AudioContextStateClosed :: String`
+  * new: `js_AudioContextStateClosed :: JSString`
+* `JSDOM.Enums.js_AudioContextStateInterrupted`
+  * old: `js_AudioContextStateInterrupted :: String`
+  * new: `js_AudioContextStateInterrupted :: JSString`
+* `JSDOM.Enums.js_AudioContextStateRunning`
+  * old: `js_AudioContextStateRunning :: String`
+  * new: `js_AudioContextStateRunning :: JSString`
+* `JSDOM.Enums.js_AudioContextStateSuspended`
+  * old: `js_AudioContextStateSuspended :: String`
+  * new: `js_AudioContextStateSuspended :: JSString`
+* `JSDOM.Enums.js_BiquadFilterTypeAllpass`
+  * old: `js_BiquadFilterTypeAllpass :: String`
+  * new: `js_BiquadFilterTypeAllpass :: JSString`
+* `JSDOM.Enums.js_BiquadFilterTypeBandpass`
+  * old: `js_BiquadFilterTypeBandpass :: String`
+  * new: `js_BiquadFilterTypeBandpass :: JSString`
+* `JSDOM.Enums.js_BiquadFilterTypeHighpass`
+  * old: `js_BiquadFilterTypeHighpass :: String`
+  * new: `js_BiquadFilterTypeHighpass :: JSString`
+* `JSDOM.Enums.js_BiquadFilterTypeHighshelf`
+  * old: `js_BiquadFilterTypeHighshelf :: String`
+  * new: `js_BiquadFilterTypeHighshelf :: JSString`
+* `JSDOM.Enums.js_BiquadFilterTypeLowpass`
+  * old: `js_BiquadFilterTypeLowpass :: String`
+  * new: `js_BiquadFilterTypeLowpass :: JSString`
+* `JSDOM.Enums.js_BiquadFilterTypeLowshelf`
+  * old: `js_BiquadFilterTypeLowshelf :: String`
+  * new: `js_BiquadFilterTypeLowshelf :: JSString`
+* `JSDOM.Enums.js_BiquadFilterTypeNotch`
+  * old: `js_BiquadFilterTypeNotch :: String`
+  * new: `js_BiquadFilterTypeNotch :: JSString`
+* `JSDOM.Enums.js_BiquadFilterTypePeaking`
+  * old: `js_BiquadFilterTypePeaking :: String`
+  * new: `js_BiquadFilterTypePeaking :: JSString`
+* `JSDOM.Enums.js_DistanceModelTypeExponential`
+  * old: `js_DistanceModelTypeExponential :: String`
+  * new: `js_DistanceModelTypeExponential :: JSString`
+* `JSDOM.Enums.js_DistanceModelTypeInverse`
+  * old: `js_DistanceModelTypeInverse :: String`
+  * new: `js_DistanceModelTypeInverse :: JSString`
+* `JSDOM.Enums.js_DistanceModelTypeLinear`
+  * old: `js_DistanceModelTypeLinear :: String`
+  * new: `js_DistanceModelTypeLinear :: JSString`
+* `JSDOM.Enums.js_DocumentReadyStateComplete`
+  * old: `js_DocumentReadyStateComplete :: String`
+  * new: `js_DocumentReadyStateComplete :: JSString`
+* `JSDOM.Enums.js_DocumentReadyStateInteractive`
+  * old: `js_DocumentReadyStateInteractive :: String`
+  * new: `js_DocumentReadyStateInteractive :: JSString`
+* `JSDOM.Enums.js_DocumentReadyStateLoading`
+  * old: `js_DocumentReadyStateLoading :: String`
+  * new: `js_DocumentReadyStateLoading :: JSString`
+* `JSDOM.Enums.js_EndOfStreamErrorDecode`
+  * old: `js_EndOfStreamErrorDecode :: String`
+  * new: `js_EndOfStreamErrorDecode :: JSString`
+* `JSDOM.Enums.js_EndOfStreamErrorNetwork`
+  * old: `js_EndOfStreamErrorNetwork :: String`
+  * new: `js_EndOfStreamErrorNetwork :: JSString`
+* `JSDOM.Enums.js_FontFaceLoadStatusError`
+  * old: `js_FontFaceLoadStatusError :: String`
+  * new: `js_FontFaceLoadStatusError :: JSString`
+* `JSDOM.Enums.js_FontFaceLoadStatusLoaded`
+  * old: `js_FontFaceLoadStatusLoaded :: String`
+  * new: `js_FontFaceLoadStatusLoaded :: JSString`
+* `JSDOM.Enums.js_FontFaceLoadStatusLoading`
+  * old: `js_FontFaceLoadStatusLoading :: String`
+  * new: `js_FontFaceLoadStatusLoading :: JSString`
+* `JSDOM.Enums.js_FontFaceLoadStatusUnloaded`
+  * old: `js_FontFaceLoadStatusUnloaded :: String`
+  * new: `js_FontFaceLoadStatusUnloaded :: JSString`
+* `JSDOM.Enums.js_FontFaceSetLoadStatusLoaded`
+  * old: `js_FontFaceSetLoadStatusLoaded :: String`
+  * new: `js_FontFaceSetLoadStatusLoaded :: JSString`
+* `JSDOM.Enums.js_FontFaceSetLoadStatusLoading`
+  * old: `js_FontFaceSetLoadStatusLoading :: String`
+  * new: `js_FontFaceSetLoadStatusLoading :: JSString`
+* `JSDOM.Enums.js_IDBCursorDirectionNext`
+  * old: `js_IDBCursorDirectionNext :: String`
+  * new: `js_IDBCursorDirectionNext :: JSString`
+* `JSDOM.Enums.js_IDBCursorDirectionNextunique`
+  * old: `js_IDBCursorDirectionNextunique :: String`
+  * new: `js_IDBCursorDirectionNextunique :: JSString`
+* `JSDOM.Enums.js_IDBCursorDirectionPrev`
+  * old: `js_IDBCursorDirectionPrev :: String`
+  * new: `js_IDBCursorDirectionPrev :: JSString`
+* `JSDOM.Enums.js_IDBCursorDirectionPrevunique`
+  * old: `js_IDBCursorDirectionPrevunique :: String`
+  * new: `js_IDBCursorDirectionPrevunique :: JSString`
+* `JSDOM.Enums.js_IDBRequestReadyStateDone`
+  * old: `js_IDBRequestReadyStateDone :: String`
+  * new: `js_IDBRequestReadyStateDone :: JSString`
+* `JSDOM.Enums.js_IDBRequestReadyStatePending`
+  * old: `js_IDBRequestReadyStatePending :: String`
+  * new: `js_IDBRequestReadyStatePending :: JSString`
+* `JSDOM.Enums.js_IDBTransactionModeReadonly`
+  * old: `js_IDBTransactionModeReadonly :: String`
+  * new: `js_IDBTransactionModeReadonly :: JSString`
+* `JSDOM.Enums.js_IDBTransactionModeReadwrite`
+  * old: `js_IDBTransactionModeReadwrite :: String`
+  * new: `js_IDBTransactionModeReadwrite :: JSString`
+* `JSDOM.Enums.js_IDBTransactionModeVersionchange`
+  * old: `js_IDBTransactionModeVersionchange :: String`
+  * new: `js_IDBTransactionModeVersionchange :: JSString`
+* `JSDOM.Enums.js_ImageSmoothingQualityHigh`
+  * old: `js_ImageSmoothingQualityHigh :: String`
+  * new: `js_ImageSmoothingQualityHigh :: JSString`
+* `JSDOM.Enums.js_ImageSmoothingQualityLow`
+  * old: `js_ImageSmoothingQualityLow :: String`
+  * new: `js_ImageSmoothingQualityLow :: JSString`
+* `JSDOM.Enums.js_ImageSmoothingQualityMedium`
+  * old: `js_ImageSmoothingQualityMedium :: String`
+  * new: `js_ImageSmoothingQualityMedium :: JSString`
+* `JSDOM.Enums.js_KeyFormatJwk`
+  * old: `js_KeyFormatJwk :: String`
+  * new: `js_KeyFormatJwk :: JSString`
+* `JSDOM.Enums.js_KeyFormatPkcs8`
+  * old: `js_KeyFormatPkcs8 :: String`
+  * new: `js_KeyFormatPkcs8 :: JSString`
+* `JSDOM.Enums.js_KeyFormatRaw`
+  * old: `js_KeyFormatRaw :: String`
+  * new: `js_KeyFormatRaw :: JSString`
+* `JSDOM.Enums.js_KeyFormatSpki`
+  * old: `js_KeyFormatSpki :: String`
+  * new: `js_KeyFormatSpki :: JSString`
+* `JSDOM.Enums.js_KeyTypePrivate`
+  * old: `js_KeyTypePrivate :: String`
+  * new: `js_KeyTypePrivate :: JSString`
+* `JSDOM.Enums.js_KeyTypePublic`
+  * old: `js_KeyTypePublic :: String`
+  * new: `js_KeyTypePublic :: JSString`
+* `JSDOM.Enums.js_KeyTypeSecret`
+  * old: `js_KeyTypeSecret :: String`
+  * new: `js_KeyTypeSecret :: JSString`
+* `JSDOM.Enums.js_MediaDeviceKindAudioinput`
+  * old: `js_MediaDeviceKindAudioinput :: String`
+  * new: `js_MediaDeviceKindAudioinput :: JSString`
+* `JSDOM.Enums.js_MediaDeviceKindAudiooutput`
+  * old: `js_MediaDeviceKindAudiooutput :: String`
+  * new: `js_MediaDeviceKindAudiooutput :: JSString`
+* `JSDOM.Enums.js_MediaDeviceKindVideoinput`
+  * old: `js_MediaDeviceKindVideoinput :: String`
+  * new: `js_MediaDeviceKindVideoinput :: JSString`
+* `JSDOM.Enums.js_MediaKeyMessageTypeIndividualizationRequest`
+  * old: `js_MediaKeyMessageTypeIndividualizationRequest :: String`
+  * new: `js_MediaKeyMessageTypeIndividualizationRequest :: JSString`
+* `JSDOM.Enums.js_MediaKeyMessageTypeLicenseRelease`
+  * old: `js_MediaKeyMessageTypeLicenseRelease :: String`
+  * new: `js_MediaKeyMessageTypeLicenseRelease :: JSString`
+* `JSDOM.Enums.js_MediaKeyMessageTypeLicenseRenewal`
+  * old: `js_MediaKeyMessageTypeLicenseRenewal :: String`
+  * new: `js_MediaKeyMessageTypeLicenseRenewal :: JSString`
+* `JSDOM.Enums.js_MediaKeyMessageTypeLicenseRequest`
+  * old: `js_MediaKeyMessageTypeLicenseRequest :: String`
+  * new: `js_MediaKeyMessageTypeLicenseRequest :: JSString`
+* `JSDOM.Enums.js_MediaKeySessionTypePersistentLicense`
+  * old: `js_MediaKeySessionTypePersistentLicense :: String`
+  * new: `js_MediaKeySessionTypePersistentLicense :: JSString`
+* `JSDOM.Enums.js_MediaKeySessionTypeTemporary`
+  * old: `js_MediaKeySessionTypeTemporary :: String`
+  * new: `js_MediaKeySessionTypeTemporary :: JSString`
+* `JSDOM.Enums.js_MediaKeyStatusExpired`
+  * old: `js_MediaKeyStatusExpired :: String`
+  * new: `js_MediaKeyStatusExpired :: JSString`
+* `JSDOM.Enums.js_MediaKeyStatusInternalError`
+  * old: `js_MediaKeyStatusInternalError :: String`
+  * new: `js_MediaKeyStatusInternalError :: JSString`
+* `JSDOM.Enums.js_MediaKeyStatusOutputDownscaled`
+  * old: `js_MediaKeyStatusOutputDownscaled :: String`
+  * new: `js_MediaKeyStatusOutputDownscaled :: JSString`
+* `JSDOM.Enums.js_MediaKeyStatusOutputRestricted`
+  * old: `js_MediaKeyStatusOutputRestricted :: String`
+  * new: `js_MediaKeyStatusOutputRestricted :: JSString`
+* `JSDOM.Enums.js_MediaKeyStatusReleased`
+  * old: `js_MediaKeyStatusReleased :: String`
+  * new: `js_MediaKeyStatusReleased :: JSString`
+* `JSDOM.Enums.js_MediaKeyStatusStatusPending`
+  * old: `js_MediaKeyStatusStatusPending :: String`
+  * new: `js_MediaKeyStatusStatusPending :: JSString`
+* `JSDOM.Enums.js_MediaKeyStatusUsable`
+  * old: `js_MediaKeyStatusUsable :: String`
+  * new: `js_MediaKeyStatusUsable :: JSString`
+* `JSDOM.Enums.js_MediaKeysRequirementNotAllowed`
+  * old: `js_MediaKeysRequirementNotAllowed :: String`
+  * new: `js_MediaKeysRequirementNotAllowed :: JSString`
+* `JSDOM.Enums.js_MediaKeysRequirementOptional`
+  * old: `js_MediaKeysRequirementOptional :: String`
+  * new: `js_MediaKeysRequirementOptional :: JSString`
+* `JSDOM.Enums.js_MediaKeysRequirementRequired`
+  * old: `js_MediaKeysRequirementRequired :: String`
+  * new: `js_MediaKeysRequirementRequired :: JSString`
+* `JSDOM.Enums.js_MediaStreamTrackStateEnded`
+  * old: `js_MediaStreamTrackStateEnded :: String`
+  * new: `js_MediaStreamTrackStateEnded :: JSString`
+* `JSDOM.Enums.js_MediaStreamTrackStateLive`
+  * old: `js_MediaStreamTrackStateLive :: String`
+  * new: `js_MediaStreamTrackStateLive :: JSString`
+* `JSDOM.Enums.js_NotificationDirectionAuto`
+  * old: `js_NotificationDirectionAuto :: String`
+  * new: `js_NotificationDirectionAuto :: JSString`
+* `JSDOM.Enums.js_NotificationDirectionLtr`
+  * old: `js_NotificationDirectionLtr :: String`
+  * new: `js_NotificationDirectionLtr :: JSString`
+* `JSDOM.Enums.js_NotificationDirectionRtl`
+  * old: `js_NotificationDirectionRtl :: String`
+  * new: `js_NotificationDirectionRtl :: JSString`
+* `JSDOM.Enums.js_OscillatorTypeCustom`
+  * old: `js_OscillatorTypeCustom :: String`
+  * new: `js_OscillatorTypeCustom :: JSString`
+* `JSDOM.Enums.js_OscillatorTypeSawtooth`
+  * old: `js_OscillatorTypeSawtooth :: String`
+  * new: `js_OscillatorTypeSawtooth :: JSString`
+* `JSDOM.Enums.js_OscillatorTypeSine`
+  * old: `js_OscillatorTypeSine :: String`
+  * new: `js_OscillatorTypeSine :: JSString`
+* `JSDOM.Enums.js_OscillatorTypeSquare`
+  * old: `js_OscillatorTypeSquare :: String`
+  * new: `js_OscillatorTypeSquare :: JSString`
+* `JSDOM.Enums.js_OscillatorTypeTriangle`
+  * old: `js_OscillatorTypeTriangle :: String`
+  * new: `js_OscillatorTypeTriangle :: JSString`
+* `JSDOM.Enums.js_OverSampleType2x`
+  * old: `js_OverSampleType2x :: String`
+  * new: `js_OverSampleType2x :: JSString`
+* `JSDOM.Enums.js_OverSampleType4x`
+  * old: `js_OverSampleType4x :: String`
+  * new: `js_OverSampleType4x :: JSString`
+* `JSDOM.Enums.js_OverSampleTypeNone`
+  * old: `js_OverSampleTypeNone :: String`
+  * new: `js_OverSampleTypeNone :: JSString`
+* `JSDOM.Enums.js_PanningModelTypeEqualpower`
+  * old: `js_PanningModelTypeEqualpower :: String`
+  * new: `js_PanningModelTypeEqualpower :: JSString`
+* `JSDOM.Enums.js_PanningModelTypeHRTF`
+  * old: `js_PanningModelTypeHRTF :: String`
+  * new: `js_PanningModelTypeHRTF :: JSString`
+* `JSDOM.Enums.js_RTCBundlePolicyBalanced`
+  * old: `js_RTCBundlePolicyBalanced :: String`
+  * new: `js_RTCBundlePolicyBalanced :: JSString`
+* `JSDOM.Enums.js_RTCBundlePolicyMaxBundle`
+  * old: `js_RTCBundlePolicyMaxBundle :: String`
+  * new: `js_RTCBundlePolicyMaxBundle :: JSString`
+* `JSDOM.Enums.js_RTCBundlePolicyMaxCompat`
+  * old: `js_RTCBundlePolicyMaxCompat :: String`
+  * new: `js_RTCBundlePolicyMaxCompat :: JSString`
+* `JSDOM.Enums.js_RTCDataChannelStateClosed`
+  * old: `js_RTCDataChannelStateClosed :: String`
+  * new: `js_RTCDataChannelStateClosed :: JSString`
+* `JSDOM.Enums.js_RTCDataChannelStateClosing`
+  * old: `js_RTCDataChannelStateClosing :: String`
+  * new: `js_RTCDataChannelStateClosing :: JSString`
+* `JSDOM.Enums.js_RTCDataChannelStateConnecting`
+  * old: `js_RTCDataChannelStateConnecting :: String`
+  * new: `js_RTCDataChannelStateConnecting :: JSString`
+* `JSDOM.Enums.js_RTCDataChannelStateOpen`
+  * old: `js_RTCDataChannelStateOpen :: String`
+  * new: `js_RTCDataChannelStateOpen :: JSString`
+* `JSDOM.Enums.js_RTCDegradationPreferenceBalanced`
+  * old: `js_RTCDegradationPreferenceBalanced :: String`
+  * new: `js_RTCDegradationPreferenceBalanced :: JSString`
+* `JSDOM.Enums.js_RTCDegradationPreferenceMaintainFramerate`
+  * old: `js_RTCDegradationPreferenceMaintainFramerate :: String`
+  * new: `js_RTCDegradationPreferenceMaintainFramerate :: JSString`
+* `JSDOM.Enums.js_RTCDegradationPreferenceMaintainResolution`
+  * old: `js_RTCDegradationPreferenceMaintainResolution :: String`
+  * new: `js_RTCDegradationPreferenceMaintainResolution :: JSString`
+* `JSDOM.Enums.js_RTCIceConnectionStateChecking`
+  * old: `js_RTCIceConnectionStateChecking :: String`
+  * new: `js_RTCIceConnectionStateChecking :: JSString`
+* `JSDOM.Enums.js_RTCIceConnectionStateClosed`
+  * old: `js_RTCIceConnectionStateClosed :: String`
+  * new: `js_RTCIceConnectionStateClosed :: JSString`
+* `JSDOM.Enums.js_RTCIceConnectionStateCompleted`
+  * old: `js_RTCIceConnectionStateCompleted :: String`
+  * new: `js_RTCIceConnectionStateCompleted :: JSString`
+* `JSDOM.Enums.js_RTCIceConnectionStateConnected`
+  * old: `js_RTCIceConnectionStateConnected :: String`
+  * new: `js_RTCIceConnectionStateConnected :: JSString`
+* `JSDOM.Enums.js_RTCIceConnectionStateDisconnected`
+  * old: `js_RTCIceConnectionStateDisconnected :: String`
+  * new: `js_RTCIceConnectionStateDisconnected :: JSString`
+* `JSDOM.Enums.js_RTCIceConnectionStateFailed`
+  * old: `js_RTCIceConnectionStateFailed :: String`
+  * new: `js_RTCIceConnectionStateFailed :: JSString`
+* `JSDOM.Enums.js_RTCIceConnectionStateNew`
+  * old: `js_RTCIceConnectionStateNew :: String`
+  * new: `js_RTCIceConnectionStateNew :: JSString`
+* `JSDOM.Enums.js_RTCIceGatheringStateComplete`
+  * old: `js_RTCIceGatheringStateComplete :: String`
+  * new: `js_RTCIceGatheringStateComplete :: JSString`
+* `JSDOM.Enums.js_RTCIceGatheringStateGathering`
+  * old: `js_RTCIceGatheringStateGathering :: String`
+  * new: `js_RTCIceGatheringStateGathering :: JSString`
+* `JSDOM.Enums.js_RTCIceGatheringStateNew`
+  * old: `js_RTCIceGatheringStateNew :: String`
+  * new: `js_RTCIceGatheringStateNew :: JSString`
+* `JSDOM.Enums.js_RTCIceTransportPolicyAll`
+  * old: `js_RTCIceTransportPolicyAll :: String`
+  * new: `js_RTCIceTransportPolicyAll :: JSString`
+* `JSDOM.Enums.js_RTCIceTransportPolicyRelay`
+  * old: `js_RTCIceTransportPolicyRelay :: String`
+  * new: `js_RTCIceTransportPolicyRelay :: JSString`
+* `JSDOM.Enums.js_RTCIceTransportStateChecking`
+  * old: `js_RTCIceTransportStateChecking :: String`
+  * new: `js_RTCIceTransportStateChecking :: JSString`
+* `JSDOM.Enums.js_RTCIceTransportStateClosed`
+  * old: `js_RTCIceTransportStateClosed :: String`
+  * new: `js_RTCIceTransportStateClosed :: JSString`
+* `JSDOM.Enums.js_RTCIceTransportStateCompleted`
+  * old: `js_RTCIceTransportStateCompleted :: String`
+  * new: `js_RTCIceTransportStateCompleted :: JSString`
+* `JSDOM.Enums.js_RTCIceTransportStateConnected`
+  * old: `js_RTCIceTransportStateConnected :: String`
+  * new: `js_RTCIceTransportStateConnected :: JSString`
+* `JSDOM.Enums.js_RTCIceTransportStateDisconnected`
+  * old: `js_RTCIceTransportStateDisconnected :: String`
+  * new: `js_RTCIceTransportStateDisconnected :: JSString`
+* `JSDOM.Enums.js_RTCIceTransportStateFailed`
+  * old: `js_RTCIceTransportStateFailed :: String`
+  * new: `js_RTCIceTransportStateFailed :: JSString`
+* `JSDOM.Enums.js_RTCIceTransportStateNew`
+  * old: `js_RTCIceTransportStateNew :: String`
+  * new: `js_RTCIceTransportStateNew :: JSString`
+* `JSDOM.Enums.js_RTCPeerConnectionStateClosed`
+  * old: `js_RTCPeerConnectionStateClosed :: String`
+  * new: `js_RTCPeerConnectionStateClosed :: JSString`
+* `JSDOM.Enums.js_RTCPeerConnectionStateConnected`
+  * old: `js_RTCPeerConnectionStateConnected :: String`
+  * new: `js_RTCPeerConnectionStateConnected :: JSString`
+* `JSDOM.Enums.js_RTCPeerConnectionStateConnecting`
+  * old: `js_RTCPeerConnectionStateConnecting :: String`
+  * new: `js_RTCPeerConnectionStateConnecting :: JSString`
+* `JSDOM.Enums.js_RTCPeerConnectionStateDisconnected`
+  * old: `js_RTCPeerConnectionStateDisconnected :: String`
+  * new: `js_RTCPeerConnectionStateDisconnected :: JSString`
+* `JSDOM.Enums.js_RTCPeerConnectionStateFailed`
+  * old: `js_RTCPeerConnectionStateFailed :: String`
+  * new: `js_RTCPeerConnectionStateFailed :: JSString`
+* `JSDOM.Enums.js_RTCPeerConnectionStateNew`
+  * old: `js_RTCPeerConnectionStateNew :: String`
+  * new: `js_RTCPeerConnectionStateNew :: JSString`
+* `JSDOM.Enums.js_RTCPriorityTypeHigh`
+  * old: `js_RTCPriorityTypeHigh :: String`
+  * new: `js_RTCPriorityTypeHigh :: JSString`
+* `JSDOM.Enums.js_RTCPriorityTypeLow`
+  * old: `js_RTCPriorityTypeLow :: String`
+  * new: `js_RTCPriorityTypeLow :: JSString`
+* `JSDOM.Enums.js_RTCPriorityTypeMedium`
+  * old: `js_RTCPriorityTypeMedium :: String`
+  * new: `js_RTCPriorityTypeMedium :: JSString`
+* `JSDOM.Enums.js_RTCPriorityTypeVeryLow`
+  * old: `js_RTCPriorityTypeVeryLow :: String`
+  * new: `js_RTCPriorityTypeVeryLow :: JSString`
+* `JSDOM.Enums.js_RTCRtpTransceiverDirectionInactive`
+  * old: `js_RTCRtpTransceiverDirectionInactive :: String`
+  * new: `js_RTCRtpTransceiverDirectionInactive :: JSString`
+* `JSDOM.Enums.js_RTCRtpTransceiverDirectionRecvonly`
+  * old: `js_RTCRtpTransceiverDirectionRecvonly :: String`
+  * new: `js_RTCRtpTransceiverDirectionRecvonly :: JSString`
+* `JSDOM.Enums.js_RTCRtpTransceiverDirectionSendonly`
+  * old: `js_RTCRtpTransceiverDirectionSendonly :: String`
+  * new: `js_RTCRtpTransceiverDirectionSendonly :: JSString`
+* `JSDOM.Enums.js_RTCRtpTransceiverDirectionSendrecv`
+  * old: `js_RTCRtpTransceiverDirectionSendrecv :: String`
+  * new: `js_RTCRtpTransceiverDirectionSendrecv :: JSString`
+* `JSDOM.Enums.js_RTCSdpTypeAnswer`
+  * old: `js_RTCSdpTypeAnswer :: String`
+  * new: `js_RTCSdpTypeAnswer :: JSString`
+* `JSDOM.Enums.js_RTCSdpTypeOffer`
+  * old: `js_RTCSdpTypeOffer :: String`
+  * new: `js_RTCSdpTypeOffer :: JSString`
+* `JSDOM.Enums.js_RTCSdpTypePranswer`
+  * old: `js_RTCSdpTypePranswer :: String`
+  * new: `js_RTCSdpTypePranswer :: JSString`
+* `JSDOM.Enums.js_RTCSdpTypeRollback`
+  * old: `js_RTCSdpTypeRollback :: String`
+  * new: `js_RTCSdpTypeRollback :: JSString`
+* `JSDOM.Enums.js_RTCSignalingStateHaveLocalOffer`
+  * old: `js_RTCSignalingStateHaveLocalOffer :: String`
+  * new: `js_RTCSignalingStateHaveLocalOffer :: JSString`
+* `JSDOM.Enums.js_RTCSignalingStateHaveLocalPranswer`
+  * old: `js_RTCSignalingStateHaveLocalPranswer :: String`
+  * new: `js_RTCSignalingStateHaveLocalPranswer :: JSString`
+* `JSDOM.Enums.js_RTCSignalingStateHaveRemoteOffer`
+  * old: `js_RTCSignalingStateHaveRemoteOffer :: String`
+  * new: `js_RTCSignalingStateHaveRemoteOffer :: JSString`
+* `JSDOM.Enums.js_RTCSignalingStateHaveRemotePranswer`
+  * old: `js_RTCSignalingStateHaveRemotePranswer :: String`
+  * new: `js_RTCSignalingStateHaveRemotePranswer :: JSString`
+* `JSDOM.Enums.js_RTCSignalingStateStable`
+  * old: `js_RTCSignalingStateStable :: String`
+  * new: `js_RTCSignalingStateStable :: JSString`
+* `JSDOM.Enums.js_ReadyStateClosed`
+  * old: `js_ReadyStateClosed :: String`
+  * new: `js_ReadyStateClosed :: JSString`
+* `JSDOM.Enums.js_ReadyStateEnded`
+  * old: `js_ReadyStateEnded :: String`
+  * new: `js_ReadyStateEnded :: JSString`
+* `JSDOM.Enums.js_ReadyStateOpen`
+  * old: `js_ReadyStateOpen :: String`
+  * new: `js_ReadyStateOpen :: JSString`
+* `JSDOM.Enums.js_ReferrerPolicy`
+  * old: `js_ReferrerPolicy :: String`
+  * new: `js_ReferrerPolicy :: JSString`
+* `JSDOM.Enums.js_ReferrerPolicyNoReferrer`
+  * old: `js_ReferrerPolicyNoReferrer :: String`
+  * new: `js_ReferrerPolicyNoReferrer :: JSString`
+* `JSDOM.Enums.js_ReferrerPolicyNoReferrerWhenDowngrade`
+  * old: `js_ReferrerPolicyNoReferrerWhenDowngrade :: String`
+  * new: `js_ReferrerPolicyNoReferrerWhenDowngrade :: JSString`
+* `JSDOM.Enums.js_ReferrerPolicyOrigin`
+  * old: `js_ReferrerPolicyOrigin :: String`
+  * new: `js_ReferrerPolicyOrigin :: JSString`
+* `JSDOM.Enums.js_ReferrerPolicyOriginWhenCrossOrigin`
+  * old: `js_ReferrerPolicyOriginWhenCrossOrigin :: String`
+  * new: `js_ReferrerPolicyOriginWhenCrossOrigin :: JSString`
+* `JSDOM.Enums.js_ReferrerPolicyUnsafeUrl`
+  * old: `js_ReferrerPolicyUnsafeUrl :: String`
+  * new: `js_ReferrerPolicyUnsafeUrl :: JSString`
+* `JSDOM.Enums.js_RequestCacheDefault`
+  * old: `js_RequestCacheDefault :: String`
+  * new: `js_RequestCacheDefault :: JSString`
+* `JSDOM.Enums.js_RequestCacheForceCache`
+  * old: `js_RequestCacheForceCache :: String`
+  * new: `js_RequestCacheForceCache :: JSString`
+* `JSDOM.Enums.js_RequestCacheNoCache`
+  * old: `js_RequestCacheNoCache :: String`
+  * new: `js_RequestCacheNoCache :: JSString`
+* `JSDOM.Enums.js_RequestCacheNoStore`
+  * old: `js_RequestCacheNoStore :: String`
+  * new: `js_RequestCacheNoStore :: JSString`
+* `JSDOM.Enums.js_RequestCacheOnlyIfCached`
+  * old: `js_RequestCacheOnlyIfCached :: String`
+  * new: `js_RequestCacheOnlyIfCached :: JSString`
+* `JSDOM.Enums.js_RequestCacheReload`
+  * old: `js_RequestCacheReload :: String`
+  * new: `js_RequestCacheReload :: JSString`
+* `JSDOM.Enums.js_RequestCredentialsInclude`
+  * old: `js_RequestCredentialsInclude :: String`
+  * new: `js_RequestCredentialsInclude :: JSString`
+* `JSDOM.Enums.js_RequestCredentialsOmit`
+  * old: `js_RequestCredentialsOmit :: String`
+  * new: `js_RequestCredentialsOmit :: JSString`
+* `JSDOM.Enums.js_RequestCredentialsSameOrigin`
+  * old: `js_RequestCredentialsSameOrigin :: String`
+  * new: `js_RequestCredentialsSameOrigin :: JSString`
+* `JSDOM.Enums.js_RequestDestination`
+  * old: `js_RequestDestination :: String`
+  * new: `js_RequestDestination :: JSString`
+* `JSDOM.Enums.js_RequestDestinationDocument`
+  * old: `js_RequestDestinationDocument :: String`
+  * new: `js_RequestDestinationDocument :: JSString`
+* `JSDOM.Enums.js_RequestDestinationSharedworker`
+  * old: `js_RequestDestinationSharedworker :: String`
+  * new: `js_RequestDestinationSharedworker :: JSString`
+* `JSDOM.Enums.js_RequestDestinationWorker`
+  * old: `js_RequestDestinationWorker :: String`
+  * new: `js_RequestDestinationWorker :: JSString`
+* `JSDOM.Enums.js_RequestModeCors`
+  * old: `js_RequestModeCors :: String`
+  * new: `js_RequestModeCors :: JSString`
+* `JSDOM.Enums.js_RequestModeNavigate`
+  * old: `js_RequestModeNavigate :: String`
+  * new: `js_RequestModeNavigate :: JSString`
+* `JSDOM.Enums.js_RequestModeNoCors`
+  * old: `js_RequestModeNoCors :: String`
+  * new: `js_RequestModeNoCors :: JSString`
+* `JSDOM.Enums.js_RequestModeSameOrigin`
+  * old: `js_RequestModeSameOrigin :: String`
+  * new: `js_RequestModeSameOrigin :: JSString`
+* `JSDOM.Enums.js_RequestRedirectError`
+  * old: `js_RequestRedirectError :: String`
+  * new: `js_RequestRedirectError :: JSString`
+* `JSDOM.Enums.js_RequestRedirectFollow`
+  * old: `js_RequestRedirectFollow :: String`
+  * new: `js_RequestRedirectFollow :: JSString`
+* `JSDOM.Enums.js_RequestRedirectManual`
+  * old: `js_RequestRedirectManual :: String`
+  * new: `js_RequestRedirectManual :: JSString`
+* `JSDOM.Enums.js_ResponseTypeBasic`
+  * old: `js_ResponseTypeBasic :: String`
+  * new: `js_ResponseTypeBasic :: JSString`
+* `JSDOM.Enums.js_ResponseTypeCors`
+  * old: `js_ResponseTypeCors :: String`
+  * new: `js_ResponseTypeCors :: JSString`
+* `JSDOM.Enums.js_ResponseTypeDefault`
+  * old: `js_ResponseTypeDefault :: String`
+  * new: `js_ResponseTypeDefault :: JSString`
+* `JSDOM.Enums.js_ResponseTypeError`
+  * old: `js_ResponseTypeError :: String`
+  * new: `js_ResponseTypeError :: JSString`
+* `JSDOM.Enums.js_ResponseTypeOpaque`
+  * old: `js_ResponseTypeOpaque :: String`
+  * new: `js_ResponseTypeOpaque :: JSString`
+* `JSDOM.Enums.js_ResponseTypeOpaqueredirect`
+  * old: `js_ResponseTypeOpaqueredirect :: String`
+  * new: `js_ResponseTypeOpaqueredirect :: JSString`
+* `JSDOM.Enums.js_ScrollRestorationAuto`
+  * old: `js_ScrollRestorationAuto :: String`
+  * new: `js_ScrollRestorationAuto :: JSString`
+* `JSDOM.Enums.js_ScrollRestorationManual`
+  * old: `js_ScrollRestorationManual :: String`
+  * new: `js_ScrollRestorationManual :: JSString`
+* `JSDOM.Enums.js_ShadowRootModeClosed`
+  * old: `js_ShadowRootModeClosed :: String`
+  * new: `js_ShadowRootModeClosed :: JSString`
+* `JSDOM.Enums.js_ShadowRootModeOpen`
+  * old: `js_ShadowRootModeOpen :: String`
+  * new: `js_ShadowRootModeOpen :: JSString`
+* `JSDOM.Enums.js_TextTrackKindCaptions`
+  * old: `js_TextTrackKindCaptions :: String`
+  * new: `js_TextTrackKindCaptions :: JSString`
+* `JSDOM.Enums.js_TextTrackKindChapters`
+  * old: `js_TextTrackKindChapters :: String`
+  * new: `js_TextTrackKindChapters :: JSString`
+* `JSDOM.Enums.js_TextTrackKindDescriptions`
+  * old: `js_TextTrackKindDescriptions :: String`
+  * new: `js_TextTrackKindDescriptions :: JSString`
+* `JSDOM.Enums.js_TextTrackKindMetadata`
+  * old: `js_TextTrackKindMetadata :: String`
+  * new: `js_TextTrackKindMetadata :: JSString`
+* `JSDOM.Enums.js_TextTrackKindSubtitles`
+  * old: `js_TextTrackKindSubtitles :: String`
+  * new: `js_TextTrackKindSubtitles :: JSString`
+* `JSDOM.Enums.js_TextTrackModeDisabled`
+  * old: `js_TextTrackModeDisabled :: String`
+  * new: `js_TextTrackModeDisabled :: JSString`
+* `JSDOM.Enums.js_TextTrackModeHidden`
+  * old: `js_TextTrackModeHidden :: String`
+  * new: `js_TextTrackModeHidden :: JSString`
+* `JSDOM.Enums.js_TextTrackModeShowing`
+  * old: `js_TextTrackModeShowing :: String`
+  * new: `js_TextTrackModeShowing :: JSString`
+* `JSDOM.Enums.js_WebGLPowerPreferenceDefault`
+  * old: `js_WebGLPowerPreferenceDefault :: String`
+  * new: `js_WebGLPowerPreferenceDefault :: JSString`
+* `JSDOM.Enums.js_WebGLPowerPreferenceHighPerformance`
+  * old: `js_WebGLPowerPreferenceHighPerformance :: String`
+  * new: `js_WebGLPowerPreferenceHighPerformance :: JSString`
+* `JSDOM.Enums.js_WebGLPowerPreferenceLowPower`
+  * old: `js_WebGLPowerPreferenceLowPower :: String`
+  * new: `js_WebGLPowerPreferenceLowPower :: JSString`
+* `JSDOM.Enums.js_XMLHttpRequestResponseType`
+  * old: `js_XMLHttpRequestResponseType :: String`
+  * new: `js_XMLHttpRequestResponseType :: JSString`
+* `JSDOM.Enums.js_XMLHttpRequestResponseTypeArraybuffer`
+  * old: `js_XMLHttpRequestResponseTypeArraybuffer :: String`
+  * new: `js_XMLHttpRequestResponseTypeArraybuffer :: JSString`
+* `JSDOM.Enums.js_XMLHttpRequestResponseTypeBlob`
+  * old: `js_XMLHttpRequestResponseTypeBlob :: String`
+  * new: `js_XMLHttpRequestResponseTypeBlob :: JSString`
+* `JSDOM.Enums.js_XMLHttpRequestResponseTypeDocument`
+  * old: `js_XMLHttpRequestResponseTypeDocument :: String`
+  * new: `js_XMLHttpRequestResponseTypeDocument :: JSString`
+* `JSDOM.Enums.js_XMLHttpRequestResponseTypeJson`
+  * old: `js_XMLHttpRequestResponseTypeJson :: String`
+  * new: `js_XMLHttpRequestResponseTypeJson :: JSString`
+* `JSDOM.Enums.js_XMLHttpRequestResponseTypeText`
+  * old: `js_XMLHttpRequestResponseTypeText :: String`
+  * new: `js_XMLHttpRequestResponseTypeText :: JSString`
+* `JSDOM.Response.json`
+  * old: `json :: MonadDOM m => Response -> m JSVal`
+  * new: `json :: MonadDOM m => JSVal -> Maybe ResponseInit -> m Response`
+* `JSDOM.Response.json_`
+  * old: `json_ :: MonadDOM m => Response -> m ()`
+  * new: `json_ :: MonadDOM m => JSVal -> Maybe ResponseInit -> m ()`
+* `JSDOM.MediaKeySession.keystatuseschange`
+  * old: `keystatuseschange :: EventName MediaKeySession onkeystatuseschange`
+  * new: `keystatuseschange :: EventName MediaKeySession Event`
+* `JSDOM.WebGLRenderingContextBase.lineWidth`
+  * old: `lineWidth :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLfloat -> m ()`
+  * new: `lineWidth :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Float -> m ()`
+* `JSDOM.AudioParam.linearRampToValueAtTime`
+  * old: `linearRampToValueAtTime :: MonadDOM m => AudioParam -> Float -> Float -> m ()`
+  * new: `linearRampToValueAtTime :: MonadDOM m => AudioParam -> Float -> Double -> m AudioParam`
+* `JSDOM.WebGLRenderingContextBase.linkProgram`
+  * old: `linkProgram :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> m ()`
+  * new: `linkProgram :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> m ()`
+* `JSDOM.XMLHttpRequestEventTarget.load`
+  * old: `load :: (IsXMLHttpRequestEventTarget self, IsEventTarget self) => EventName self XMLHttpRequestProgressEvent`
+  * new: `load :: (IsXMLHttpRequestEventTarget self, IsEventTarget self) => EventName self ProgressEvent`
+* `JSDOM.GlobalEventHandlers.load`
+  * old: `load :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self UIEvent`
+  * new: `load :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event`
+* `JSDOM.FileReader.load`
+  * old: `load :: EventName FileReader UIEvent`
+  * new: `load :: EventName FileReader ProgressEvent`
+* `JSDOM.GlobalEventHandlers.loadStart`
+  * old: `loadStart :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self ProgressEvent`
+  * new: `loadStart :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event`
+* `JSDOM.FontFaceSet.loading`
+  * old: `loading :: EventName FontFaceSet Event`
+  * new: `loading :: EventName FontFaceSet FontFaceSetLoadEvent`
+* `JSDOM.FontFaceSet.loadingDone`
+  * old: `loadingDone :: EventName FontFaceSet Event`
+  * new: `loadingDone :: EventName FontFaceSet FontFaceSetLoadEvent`
+* `JSDOM.FontFaceSet.loadingerror`
+  * old: `loadingerror :: EventName FontFaceSet onloadingerror`
+  * new: `loadingerror :: EventName FontFaceSet FontFaceSetLoadEvent`
+* `JSDOM.Node.lookupPrefix`
+  * old: `lookupPrefix :: (MonadDOM m, IsNode self, ToJSString namespaceURI, FromJSString result) => self -> Maybe namespaceURI -> m (Maybe result)`
+  * new: `lookupPrefix :: (MonadDOM m, IsNode self, ToJSString namespace, FromJSString result) => self -> Maybe namespace -> m (Maybe result)`
+* `JSDOM.Node.lookupPrefixUnchecked`
+  * old: `lookupPrefixUnchecked :: (MonadDOM m, IsNode self, ToJSString namespaceURI, FromJSString result) => self -> Maybe namespaceURI -> m result`
+  * new: `lookupPrefixUnchecked :: (MonadDOM m, IsNode self, ToJSString namespace, FromJSString result) => self -> Maybe namespace -> m result`
+* `JSDOM.Node.lookupPrefixUnsafe`
+  * old: `lookupPrefixUnsafe :: (MonadDOM m, IsNode self, ToJSString namespaceURI, HasCallStack, FromJSString result) => self -> Maybe namespaceURI -> m result`
+  * new: `lookupPrefixUnsafe :: (MonadDOM m, IsNode self, ToJSString namespace, HasCallStack, FromJSString result) => self -> Maybe namespace -> m result`
+* `JSDOM.Node.lookupPrefix_`
+  * old: `lookupPrefix_ :: (MonadDOM m, IsNode self, ToJSString namespaceURI) => self -> Maybe namespaceURI -> m ()`
+  * new: `lookupPrefix_ :: (MonadDOM m, IsNode self, ToJSString namespace) => self -> Maybe namespace -> m ()`
+* `JSDOM.IDBKeyRange.lowerBound`
+  * old: `lowerBound :: (MonadDOM m, ToJSVal lower) => lower -> Bool -> m IDBKeyRange`
+  * new: `lowerBound :: MonadDOM m => JSVal -> Maybe Bool -> m IDBKeyRange`
+* `JSDOM.IDBKeyRange.lowerBound_`
+  * old: `lowerBound_ :: (MonadDOM m, ToJSVal lower) => lower -> Bool -> m ()`
+  * new: `lowerBound_ :: MonadDOM m => JSVal -> Maybe Bool -> m ()`
+* `JSDOM.SpeechSynthesisUtterance.mark`
+  * old: `mark :: EventName SpeechSynthesisUtterance Event`
+  * new: `mark :: EventName SpeechSynthesisUtterance SpeechSynthesisEvent`
+* `JSDOM.Performance.mark`
+  * old: `mark :: (MonadDOM m, ToJSString markName) => Performance -> markName -> m ()`
+  * new: `mark :: (MonadDOM m, ToJSString markName) => Performance -> markName -> m PerformanceMark`
+* `JSDOM.Performance.measure`
+  * old: `measure :: (MonadDOM m, ToJSString measureName, ToJSString startMark, ToJSString endMark) => Performance -> measureName -> Maybe startMark -> Maybe endMark -> m ()`
+  * new: `measure :: (MonadDOM m, ToJSString measureName, IsStringOrPerformanceMeasureOptions startOrMeasureOptions, ToJSString endMark) => Performance -> measureName -> Maybe startOrMeasureOptions -> Maybe endMark -> m PerformanceMeasure`
+* `JSDOM.MediaKeySession.message`
+  * old: `message :: EventName MediaKeySession MessageEvent`
+  * new: `message :: EventName MediaKeySession MediaKeyMessageEvent`
+* `JSDOM.EventM.mouseButton`
+  * old: `mouseButton :: IsMouseEvent e => EventM t e Word`
+  * new: `mouseButton :: IsMouseEvent e => EventM t e Int`
+* `JSDOM.EventM.mouseMovementX`
+  * old: `mouseMovementX :: IsMouseEvent e => EventM t e Int`
+  * new: `mouseMovementX :: IsMouseEvent e => EventM t e Double`
+* `JSDOM.EventM.mouseMovementXY`
+  * old: `mouseMovementXY :: IsMouseEvent e => EventM t e (Int, Int)`
+  * new: `mouseMovementXY :: IsMouseEvent e => EventM t e (Double, Double)`
+* `JSDOM.EventM.mouseMovementY`
+  * old: `mouseMovementY :: IsMouseEvent e => EventM t e Int`
+  * new: `mouseMovementY :: IsMouseEvent e => EventM t e Double`
+* `JSDOM.EventM.mouseOffsetX`
+  * old: `mouseOffsetX :: IsMouseEvent e => EventM t e Int`
+  * new: `mouseOffsetX :: IsMouseEvent e => EventM t e Double`
+* `JSDOM.EventM.mouseOffsetXY`
+  * old: `mouseOffsetXY :: IsMouseEvent e => EventM t e (Int, Int)`
+  * new: `mouseOffsetXY :: IsMouseEvent e => EventM t e (Double, Double)`
+* `JSDOM.EventM.mouseOffsetY`
+  * old: `mouseOffsetY :: IsMouseEvent e => EventM t e Int`
+  * new: `mouseOffsetY :: IsMouseEvent e => EventM t e Double`
+* `JSDOM.EventM.mouseX`
+  * old: `mouseX :: IsMouseEvent e => EventM t e Int`
+  * new: `mouseX :: IsMouseEvent e => EventM t e Double`
+* `JSDOM.EventM.mouseXY`
+  * old: `mouseXY :: IsMouseEvent e => EventM t e (Int, Int)`
+  * new: `mouseXY :: IsMouseEvent e => EventM t e (Double, Double)`
+* `JSDOM.EventM.mouseY`
+  * old: `mouseY :: IsMouseEvent e => EventM t e Int`
+  * new: `mouseY :: IsMouseEvent e => EventM t e Double`
+* `JSDOM.Window.moveBy`
+  * old: `moveBy :: MonadDOM m => Window -> Maybe Float -> Maybe Float -> m ()`
+  * new: `moveBy :: MonadDOM m => Window -> Int -> Int -> m ()`
+* `JSDOM.Window.moveBy`
+  * old: `moveBy :: MonadDOM m => Window -> Maybe Float -> Maybe Float -> m ()`
+  * new: `moveBy :: MonadDOM m => Window -> Int -> Int -> m ()`
+* `JSDOM.Window.moveTo`
+  * old: `moveTo :: MonadDOM m => Window -> Maybe Float -> Maybe Float -> m ()`
+  * new: `moveTo :: MonadDOM m => Window -> Int -> Int -> m ()`
+* `JSDOM.Window.moveTo`
+  * old: `moveTo :: MonadDOM m => Window -> Maybe Float -> Maybe Float -> m ()`
+  * new: `moveTo :: MonadDOM m => Window -> Int -> Int -> m ()`
+* `JSDOM.Blob.newBlob`
+  * old: `newBlob :: (MonadDOM m, IsBlobPart blobParts, IsBlobPropertyBag options) => [blobParts] -> Maybe options -> m Blob`
+  * new: `newBlob :: (MonadDOM m, IsBlobPart blobParts, IsBlobPropertyBag options) => Maybe [blobParts] -> Maybe options -> m Blob`
+* `JSDOM.ByteLengthQueuingStrategy.newByteLengthQueuingStrategy`
+  * old: `newByteLengthQueuingStrategy :: MonadDOM m => m ByteLengthQueuingStrategy`
+  * new: `newByteLengthQueuingStrategy :: MonadDOM m => QueuingStrategyInit -> m ByteLengthQueuingStrategy`
+* `JSDOM.CountQueuingStrategy.newCountQueuingStrategy`
+  * old: `newCountQueuingStrategy :: MonadDOM m => m CountQueuingStrategy`
+  * new: `newCountQueuingStrategy :: MonadDOM m => QueuingStrategyInit -> m CountQueuingStrategy`
+* `JSDOM.DOMPoint.newDOMPoint`
+  * old: `newDOMPoint :: MonadDOM m => DOMPointInit -> m DOMPoint`
+  * new: `newDOMPoint :: MonadDOM m => Maybe Double -> m DOMPoint`
+* `JSDOM.DOMPointReadOnly.newDOMPointReadOnly`
+  * old: `newDOMPointReadOnly :: MonadDOM m => DOMPointInit -> m DOMPointReadOnly`
+  * new: `newDOMPointReadOnly :: MonadDOM m => Maybe Double -> m DOMPointReadOnly`
+* `JSDOM.DataCue.newDataCue`
+  * old: `newDataCue :: (MonadDOM m, IsArrayBuffer data') => Double -> Double -> data' -> m DataCue`
+  * new: `newDataCue :: MonadDOM m => Double -> Double -> JSVal -> m DataCue`
+* `JSDOM.DataCue.newDataCue'`
+  * old: `newDataCue' :: (MonadDOM m, ToJSVal value, ToJSString type') => Double -> Double -> value -> Maybe type' -> m DataCue`
+  * new: `newDataCue' :: (MonadDOM m, ToJSString type') => Double -> Double -> JSVal -> Maybe type' -> m DataCue`
+* `JSDOM.DocumentTimeline.newDocumentTimeline`
+  * old: `newDocumentTimeline :: MonadDOM m => Double -> m DocumentTimeline`
+  * new: `newDocumentTimeline :: MonadDOM m => Maybe DocumentTimelineOptions -> m DocumentTimeline`
+* `JSDOM.FontFace.newFontFace`
+  * old: `newFontFace :: (MonadDOM m, ToJSString family', IsStringOrBinaryData source) => family' -> source -> Maybe FontFaceDescriptors -> m FontFace`
+  * new: `newFontFace :: (MonadDOM m, ToJSString family', IsPushMessageDataInit source) => family' -> source -> Maybe FontFaceDescriptors -> m FontFace`
+* `JSDOM.GamepadEvent.newGamepadEvent`
+  * old: `newGamepadEvent :: (MonadDOM m, ToJSString type') => type' -> GamepadEventInit -> m GamepadEvent`
+  * new: `newGamepadEvent :: (MonadDOM m, ToJSString type') => type' -> Maybe GamepadEventInit -> m GamepadEvent`
+* `JSDOM.ImageData.newImageData`
+  * old: `newImageData :: (MonadDOM m, IsUint8ClampedArray data') => data' -> Word -> Maybe Word -> m ImageData`
+  * new: `newImageData :: MonadDOM m => Word -> Word -> Maybe ImageDataSettings -> m ImageData`
+* `JSDOM.KeyframeEffect.newKeyframeEffect`
+  * old: `newKeyframeEffect :: (MonadDOM m, IsElement target) => Maybe target -> m KeyframeEffect`
+  * new: `newKeyframeEffect :: MonadDOM m => KeyframeEffect -> m KeyframeEffect`
+* `JSDOM.MutationObserver.newMutationObserver`
+  * old: `newMutationObserver :: (MonadDOM m, IsMutationCallback callback) => callback -> m MutationObserver`
+  * new: `newMutationObserver :: MonadDOM m => MutationCallback -> m MutationObserver`
+* `JSDOM.NotificationPermissionCallback.newNotificationPermissionCallback`
+  * old: `newNotificationPermissionCallback :: (MonadDOM m, FromJSString permission) => (permission -> JSM ()) -> m (NotificationPermissionCallback permission)`
+  * new: `newNotificationPermissionCallback :: MonadDOM m => (NotificationPermission -> JSM ()) -> m NotificationPermissionCallback`
+* `JSDOM.NotificationPermissionCallback.newNotificationPermissionCallbackAsync`
+  * old: `newNotificationPermissionCallbackAsync :: (MonadDOM m, FromJSString permission) => (permission -> JSM ()) -> m (NotificationPermissionCallback permission)`
+  * new: `newNotificationPermissionCallbackAsync :: MonadDOM m => (NotificationPermission -> JSM ()) -> m NotificationPermissionCallback`
+* `JSDOM.NotificationPermissionCallback.newNotificationPermissionCallbackSync`
+  * old: `newNotificationPermissionCallbackSync :: (MonadDOM m, FromJSString permission) => (permission -> JSM ()) -> m (NotificationPermissionCallback permission)`
+  * new: `newNotificationPermissionCallbackSync :: MonadDOM m => (NotificationPermission -> JSM ()) -> m NotificationPermissionCallback`
+* `JSDOM.OverconstrainedError.newOverconstrainedError`
+  * old: `newOverconstrainedError :: (MonadDOM m, ToJSString constraint, ToJSString message) => Maybe constraint -> Maybe message -> m OverconstrainedError`
+  * new: `newOverconstrainedError :: (MonadDOM m, ToJSString constraint, ToJSString message) => constraint -> Maybe message -> m OverconstrainedError`
+* `JSDOM.Path2D.newPath2D'`
+  * old: `newPath2D' :: MonadDOM m => Path2D -> m Path2D`
+  * new: `newPath2D' :: (MonadDOM m, IsPath2DOrString path) => Maybe path -> m Path2D`
+* `JSDOM.PerformanceObserverCallback.newPerformanceObserverCallback`
+  * old: `newPerformanceObserverCallback :: MonadDOM m => (PerformanceObserverEntryList -> PerformanceObserver -> JSM ()) -> m PerformanceObserverCallback`
+  * new: `newPerformanceObserverCallback :: MonadDOM m => (PerformanceObserverEntryList -> PerformanceObserver -> PerformanceObserverCallbackOptions -> JSM ()) -> m PerformanceObserverCallback`
+* `JSDOM.PerformanceObserverCallback.newPerformanceObserverCallbackAsync`
+  * old: `newPerformanceObserverCallbackAsync :: MonadDOM m => (PerformanceObserverEntryList -> PerformanceObserver -> JSM ()) -> m PerformanceObserverCallback`
+  * new: `newPerformanceObserverCallbackAsync :: MonadDOM m => (PerformanceObserverEntryList -> PerformanceObserver -> PerformanceObserverCallbackOptions -> JSM ()) -> m PerformanceObserverCallback`
+* `JSDOM.PerformanceObserverCallback.newPerformanceObserverCallbackSync`
+  * old: `newPerformanceObserverCallbackSync :: MonadDOM m => (PerformanceObserverEntryList -> PerformanceObserver -> JSM ()) -> m PerformanceObserverCallback`
+  * new: `newPerformanceObserverCallbackSync :: MonadDOM m => (PerformanceObserverEntryList -> PerformanceObserver -> PerformanceObserverCallbackOptions -> JSM ()) -> m PerformanceObserverCallback`
+* `JSDOM.PositionCallback.newPositionCallback`
+  * old: `newPositionCallback :: MonadDOM m => (Geoposition -> JSM ()) -> m PositionCallback`
+  * new: `newPositionCallback :: MonadDOM m => (GeolocationPosition -> JSM ()) -> m PositionCallback`
+* `JSDOM.PositionCallback.newPositionCallbackAsync`
+  * old: `newPositionCallbackAsync :: MonadDOM m => (Geoposition -> JSM ()) -> m PositionCallback`
+  * new: `newPositionCallbackAsync :: MonadDOM m => (GeolocationPosition -> JSM ()) -> m PositionCallback`
+* `JSDOM.PositionCallback.newPositionCallbackSync`
+  * old: `newPositionCallbackSync :: MonadDOM m => (Geoposition -> JSM ()) -> m PositionCallback`
+  * new: `newPositionCallbackSync :: MonadDOM m => (GeolocationPosition -> JSM ()) -> m PositionCallback`
+* `JSDOM.PositionErrorCallback.newPositionErrorCallback`
+  * old: `newPositionErrorCallback :: MonadDOM m => (PositionError -> JSM ()) -> m PositionErrorCallback`
+  * new: `newPositionErrorCallback :: MonadDOM m => (GeolocationPositionError -> JSM ()) -> m PositionErrorCallback`
+* `JSDOM.PositionErrorCallback.newPositionErrorCallbackAsync`
+  * old: `newPositionErrorCallbackAsync :: MonadDOM m => (PositionError -> JSM ()) -> m PositionErrorCallback`
+  * new: `newPositionErrorCallbackAsync :: MonadDOM m => (GeolocationPositionError -> JSM ()) -> m PositionErrorCallback`
+* `JSDOM.PositionErrorCallback.newPositionErrorCallbackSync`
+  * old: `newPositionErrorCallbackSync :: MonadDOM m => (PositionError -> JSM ()) -> m PositionErrorCallback`
+  * new: `newPositionErrorCallbackSync :: MonadDOM m => (GeolocationPositionError -> JSM ()) -> m PositionErrorCallback`
+* `JSDOM.RTCIceCandidate.newRTCIceCandidate`
+  * old: `newRTCIceCandidate :: MonadDOM m => RTCIceCandidateInit -> m RTCIceCandidate`
+  * new: `newRTCIceCandidate :: MonadDOM m => Maybe RTCLocalIceCandidateInit -> m RTCIceCandidate`
+* `JSDOM.ReadableStream.newReadableStream`
+  * old: `newReadableStream :: (MonadDOM m, ToJSVal underlyingSource, ToJSVal options) => Maybe underlyingSource -> Maybe options -> m ReadableStream`
+  * new: `newReadableStream :: MonadDOM m => Maybe GObject -> Maybe QueuingStrategy -> m ReadableStream`
+* `JSDOM.ReadableStreamBYOBReader.newReadableStreamBYOBReader`
+  * old: `newReadableStreamBYOBReader :: MonadDOM m => ReadableStream -> m ReadableStreamBYOBReader`
+  * new: `newReadableStreamBYOBReader :: (MonadDOM m, IsReadableStream stream) => stream -> m ReadableStreamBYOBReader`
+* `JSDOM.ReadableStreamDefaultReader.newReadableStreamDefaultReader`
+  * old: `newReadableStreamDefaultReader :: MonadDOM m => ReadableStream -> m ReadableStreamDefaultReader`
+  * new: `newReadableStreamDefaultReader :: (MonadDOM m, IsReadableStream stream) => stream -> m ReadableStreamDefaultReader`
+* `JSDOM.Request.newRequest`
+  * old: `newRequest :: (MonadDOM m, ToJSVal input) => input -> Maybe RequestInit -> m Request`
+  * new: `newRequest :: (MonadDOM m, IsRequestInfo input) => input -> Maybe RequestInit -> m Request`
+* `JSDOM.URL.newURL'`
+  * old: `newURL' :: (MonadDOM m, ToJSString url, ToJSString base) => url -> base -> m URL`
+  * new: `newURL' :: (MonadDOM m, ToJSString url, ToJSString base) => url -> Maybe base -> m URL`
+* `JSDOM.URLSearchParams.newURLSearchParams`
+  * old: `newURLSearchParams :: (MonadDOM m, IsURLSearchParamsInit init) => init -> m URLSearchParams`
+  * new: `newURLSearchParams :: (MonadDOM m, IsSequenceSequenceStringOrRecordStringStringOrString init) => Maybe init -> m URLSearchParams`
+* `JSDOM.WebSocket.newWebSocket`
+  * old: `newWebSocket :: (MonadDOM m, ToJSString url, ToJSString protocols) => url -> [protocols] -> m WebSocket`
+  * new: `newWebSocket :: (MonadDOM m, ToJSString url, IsStringOrSequenceString protocols) => url -> Maybe protocols -> m WebSocket`
+* `JSDOM.Worker.newWorker`
+  * old: `newWorker :: (MonadDOM m, ToJSString scriptUrl) => scriptUrl -> m Worker`
+  * new: `newWorker :: (MonadDOM m, IsTrustedScriptURLOrString scriptURL) => scriptURL -> m Worker`
+* `JSDOM.Performance.now`
+  * old: `now :: MonadDOM m => Performance -> m DOMHighResTimeStamp`
+  * new: `now :: MonadDOM m => Performance -> m Double`
+* `JSDOM.PerformanceObserver.observe`
+  * old: `observe :: MonadDOM m => PerformanceObserver -> PerformanceObserverInit -> m ()`
+  * new: `observe :: MonadDOM m => PerformanceObserver -> Maybe PerformanceObserverInit -> m ()`
+* `JSDOM.IDBKeyRange.only`
+  * old: `only :: (MonadDOM m, ToJSVal value) => value -> m IDBKeyRange`
+  * new: `only :: MonadDOM m => JSVal -> m IDBKeyRange`
+* `JSDOM.IDBKeyRange.only_`
+  * old: `only_ :: (MonadDOM m, ToJSVal value) => value -> m ()`
+  * new: `only_ :: MonadDOM m => JSVal -> m ()`
+* `JSDOM.XMLHttpRequest.open`
+  * old: `open :: (MonadDOM m, ToJSString method, ToJSString url, ToJSString user, ToJSString password) => XMLHttpRequest -> method -> url -> Bool -> Maybe user -> Maybe password -> m ()`
+  * new: `open :: (MonadDOM m, ToJSString method, ToJSString url, ToJSString username, ToJSString password) => XMLHttpRequest -> method -> url -> Bool -> Maybe username -> Maybe password -> m ()`
+* `JSDOM.IDBFactory.open`
+  * old: `open :: (MonadDOM m, ToJSString name) => IDBFactory -> name -> Maybe Word64 -> m IDBOpenDBRequest`
+  * new: `open :: (MonadDOM m, ToJSString name) => IDBFactory -> name -> Maybe Word53 -> m IDBOpenDBRequest`
+* `JSDOM.XMLHttpRequest.open`
+  * old: `open :: (MonadDOM m, ToJSString method, ToJSString url, ToJSString user, ToJSString password) => XMLHttpRequest -> method -> url -> Bool -> Maybe user -> Maybe password -> m ()`
+  * new: `open :: (MonadDOM m, ToJSString method, ToJSString url, ToJSString username, ToJSString password) => XMLHttpRequest -> method -> url -> Bool -> Maybe username -> Maybe password -> m ()`
+* `JSDOM.IDBObjectStore.openCursor`
+  * old: `openCursor :: (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> Maybe IDBCursorDirection -> m IDBRequest`
+  * new: `openCursor :: MonadDOM m => IDBObjectStore -> JSVal -> Maybe IDBCursorDirection -> m IDBRequest`
+* `JSDOM.IDBIndex.openCursor`
+  * old: `openCursor :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> Maybe IDBCursorDirection -> m IDBRequest`
+  * new: `openCursor :: MonadDOM m => IDBIndex -> JSVal -> Maybe IDBCursorDirection -> m IDBRequest`
+* `JSDOM.IDBObjectStore.openCursor_`
+  * old: `openCursor_ :: (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> Maybe IDBCursorDirection -> m ()`
+  * new: `openCursor_ :: MonadDOM m => IDBObjectStore -> JSVal -> Maybe IDBCursorDirection -> m ()`
+* `JSDOM.IDBIndex.openCursor_`
+  * old: `openCursor_ :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> Maybe IDBCursorDirection -> m ()`
+  * new: `openCursor_ :: MonadDOM m => IDBIndex -> JSVal -> Maybe IDBCursorDirection -> m ()`
+* `JSDOM.IDBObjectStore.openKeyCursor`
+  * old: `openKeyCursor :: (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> Maybe IDBCursorDirection -> m IDBRequest`
+  * new: `openKeyCursor :: MonadDOM m => IDBObjectStore -> JSVal -> Maybe IDBCursorDirection -> m IDBRequest`
+* `JSDOM.IDBIndex.openKeyCursor`
+  * old: `openKeyCursor :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> Maybe IDBCursorDirection -> m IDBRequest`
+  * new: `openKeyCursor :: MonadDOM m => IDBIndex -> JSVal -> Maybe IDBCursorDirection -> m IDBRequest`
+* `JSDOM.IDBObjectStore.openKeyCursor_`
+  * old: `openKeyCursor_ :: (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> Maybe IDBCursorDirection -> m ()`
+  * new: `openKeyCursor_ :: MonadDOM m => IDBObjectStore -> JSVal -> Maybe IDBCursorDirection -> m ()`
+* `JSDOM.IDBIndex.openKeyCursor_`
+  * old: `openKeyCursor_ :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> Maybe IDBCursorDirection -> m ()`
+  * new: `openKeyCursor_ :: MonadDOM m => IDBIndex -> JSVal -> Maybe IDBCursorDirection -> m ()`
+* `JSDOM.IDBFactory.open_`
+  * old: `open_ :: (MonadDOM m, ToJSString name) => IDBFactory -> name -> Maybe Word64 -> m ()`
+  * new: `open_ :: (MonadDOM m, ToJSString name) => IDBFactory -> name -> Maybe Word53 -> m ()`
+* `JSDOM.DOMParser.parseFromString`
+  * old: `parseFromString :: (MonadDOM m, ToJSString string, ToJSString contentType) => DOMParser -> string -> contentType -> m Document`
+  * new: `parseFromString :: (MonadDOM m, IsTrustedHTMLOrString string) => DOMParser -> string -> DOMParserSupportedType -> m Document`
+* `JSDOM.DOMParser.parseFromString_`
+  * old: `parseFromString_ :: (MonadDOM m, ToJSString string, ToJSString contentType) => DOMParser -> string -> contentType -> m ()`
+  * new: `parseFromString_ :: (MonadDOM m, IsTrustedHTMLOrString string) => DOMParser -> string -> DOMParserSupportedType -> m ()`
+* `JSDOM.SpeechSynthesisUtterance.pause`
+  * old: `pause :: EventName SpeechSynthesisUtterance Event`
+  * new: `pause :: EventName SpeechSynthesisUtterance SpeechSynthesisEvent`
+* `JSDOM.ReadableStream.pipeThrough`
+  * old: `pipeThrough :: (MonadDOM m, ToJSVal dest, ToJSVal options) => ReadableStream -> dest -> options -> m GObject`
+  * new: `pipeThrough :: (MonadDOM m, IsReadableStream self) => self -> ReadableWritablePair -> Maybe StreamPipeOptions -> m ReadableStream`
+* `JSDOM.ReadableStream.pipeThrough_`
+  * old: `pipeThrough_ :: (MonadDOM m, ToJSVal dest, ToJSVal options) => ReadableStream -> dest -> options -> m ()`
+  * new: `pipeThrough_ :: (MonadDOM m, IsReadableStream self) => self -> ReadableWritablePair -> Maybe StreamPipeOptions -> m ()`
+* `JSDOM.ReadableStream.pipeTo`
+  * old: `pipeTo :: (MonadDOM m, ToJSVal streams, ToJSVal options) => ReadableStream -> streams -> Maybe options -> m JSVal`
+  * new: `pipeTo :: (MonadDOM m, IsReadableStream self, IsWritableStream destination) => self -> destination -> Maybe StreamPipeOptions -> m ()`
+* `JSDOM.WebGLRenderingContextBase.pixelStorei`
+  * old: `pixelStorei :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLint -> m ()`
+  * new: `pixelStorei :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Int -> m ()`
+* `JSDOM.WebGLRenderingContextBase.polygonOffset`
+  * old: `polygonOffset :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLfloat -> GLfloat -> m ()`
+  * new: `polygonOffset :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Float -> Float -> m ()`
+* `JSDOM.Worker.postMessage`
+  * old: `postMessage :: (MonadDOM m, ToJSVal message, IsGObject transfer) => Worker -> message -> [transfer] -> m ()`
+  * new: `postMessage :: MonadDOM m => Worker -> JSVal -> [GObject] -> m ()`
+* `JSDOM.Window.postMessage`
+  * old: `postMessage :: (MonadDOM m, ToJSVal message, ToJSString targetOrigin, IsGObject transfer) => Window -> message -> targetOrigin -> [transfer] -> m ()`
+  * new: `postMessage :: (MonadDOM m, ToJSString targetOrigin) => Window -> JSVal -> targetOrigin -> Maybe [GObject] -> m ()`
+* `JSDOM.MessagePort.postMessage`
+  * old: `postMessage :: (MonadDOM m, ToJSVal message, IsGObject transfer) => MessagePort -> message -> [transfer] -> m ()`
+  * new: `postMessage :: MonadDOM m => MessagePort -> JSVal -> [GObject] -> m ()`
+* `JSDOM.DedicatedWorkerGlobalScope.postMessage`
+  * old: `postMessage :: (MonadDOM m, ToJSVal message, IsGObject transfer) => DedicatedWorkerGlobalScope -> message -> [transfer] -> m ()`
+  * new: `postMessage :: MonadDOM m => DedicatedWorkerGlobalScope -> JSVal -> [GObject] -> m ()`
+* `JSDOM.Window.postMessage`
+  * old: `postMessage :: (MonadDOM m, ToJSVal message, ToJSString targetOrigin, IsGObject transfer) => Window -> message -> targetOrigin -> [transfer] -> m ()`
+  * new: `postMessage :: (MonadDOM m, ToJSString targetOrigin) => Window -> JSVal -> targetOrigin -> Maybe [GObject] -> m ()`
+* `JSDOM.XMLHttpRequestEventTarget.progress`
+  * old: `progress :: (IsXMLHttpRequestEventTarget self, IsEventTarget self) => EventName self XMLHttpRequestProgressEvent`
+  * new: `progress :: (IsXMLHttpRequestEventTarget self, IsEventTarget self) => EventName self ProgressEvent`
+* `JSDOM.GlobalEventHandlers.progress`
+  * old: `progress :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self ProgressEvent`
+  * new: `progress :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event`
+* `JSDOM.Window.prompt`
+  * old: `prompt :: (MonadDOM m, ToJSString message, ToJSString defaultValue, FromJSString result) => Window -> Maybe message -> Maybe defaultValue -> m (Maybe result)`
+  * new: `prompt :: (MonadDOM m, ToJSString message, ToJSString default', FromJSString result) => Window -> Maybe message -> Maybe default' -> m (Maybe result)`
+* `JSDOM.Window.prompt`
+  * old: `prompt :: (MonadDOM m, ToJSString message, ToJSString defaultValue, FromJSString result) => Window -> Maybe message -> Maybe defaultValue -> m (Maybe result)`
+  * new: `prompt :: (MonadDOM m, ToJSString message, ToJSString default', FromJSString result) => Window -> Maybe message -> Maybe default' -> m (Maybe result)`
+* `JSDOM.Window.promptUnchecked`
+  * old: `promptUnchecked :: (MonadDOM m, ToJSString message, ToJSString defaultValue, FromJSString result) => Window -> Maybe message -> Maybe defaultValue -> m result`
+  * new: `promptUnchecked :: (MonadDOM m, ToJSString message, ToJSString default', FromJSString result) => Window -> Maybe message -> Maybe default' -> m result`
+* `JSDOM.Window.promptUnchecked`
+  * old: `promptUnchecked :: (MonadDOM m, ToJSString message, ToJSString defaultValue, FromJSString result) => Window -> Maybe message -> Maybe defaultValue -> m result`
+  * new: `promptUnchecked :: (MonadDOM m, ToJSString message, ToJSString default', FromJSString result) => Window -> Maybe message -> Maybe default' -> m result`
+* `JSDOM.Window.promptUnsafe`
+  * old: `promptUnsafe :: (MonadDOM m, ToJSString message, ToJSString defaultValue, HasCallStack, FromJSString result) => Window -> Maybe message -> Maybe defaultValue -> m result`
+  * new: `promptUnsafe :: (MonadDOM m, ToJSString message, ToJSString default', HasCallStack, FromJSString result) => Window -> Maybe message -> Maybe default' -> m result`
+* `JSDOM.Window.promptUnsafe`
+  * old: `promptUnsafe :: (MonadDOM m, ToJSString message, ToJSString defaultValue, HasCallStack, FromJSString result) => Window -> Maybe message -> Maybe defaultValue -> m result`
+  * new: `promptUnsafe :: (MonadDOM m, ToJSString message, ToJSString default', HasCallStack, FromJSString result) => Window -> Maybe message -> Maybe default' -> m result`
+* `JSDOM.Window.prompt_`
+  * old: `prompt_ :: (MonadDOM m, ToJSString message, ToJSString defaultValue) => Window -> Maybe message -> Maybe defaultValue -> m ()`
+  * new: `prompt_ :: (MonadDOM m, ToJSString message, ToJSString default') => Window -> Maybe message -> Maybe default' -> m ()`
+* `JSDOM.Window.prompt_`
+  * old: `prompt_ :: (MonadDOM m, ToJSString message, ToJSString defaultValue) => Window -> Maybe message -> Maybe defaultValue -> m ()`
+  * new: `prompt_ :: (MonadDOM m, ToJSString message, ToJSString default') => Window -> Maybe message -> Maybe default' -> m ()`
+* `JSDOM.History.pushState`
+  * old: `pushState :: (MonadDOM m, ToJSVal data', ToJSString title, ToJSString url) => History -> data' -> title -> Maybe url -> m ()`
+  * new: `pushState :: (MonadDOM m, ToJSString unused, ToJSString url) => History -> JSVal -> unused -> Maybe url -> m ()`
+* `JSDOM.IDBObjectStore.put`
+  * old: `put :: (MonadDOM m, ToJSVal value, ToJSVal key) => IDBObjectStore -> value -> Maybe key -> m IDBRequest`
+  * new: `put :: MonadDOM m => IDBObjectStore -> JSVal -> JSVal -> m IDBRequest`
+* `JSDOM.IDBObjectStore.put_`
+  * old: `put_ :: (MonadDOM m, ToJSVal value, ToJSVal key) => IDBObjectStore -> value -> Maybe key -> m ()`
+  * new: `put_ :: MonadDOM m => IDBObjectStore -> JSVal -> JSVal -> m ()`
+* `JSDOM.ReadableStreamDefaultReader.read`
+  * old: `read :: MonadDOM m => ReadableStreamDefaultReader -> m JSVal`
+  * new: `read :: MonadDOM m => ReadableStreamDefaultReader -> m ReadableStreamReadResult`
+* `JSDOM.ReadableStreamBYOBReader.read`
+  * old: `read :: (MonadDOM m, ToJSVal view) => ReadableStreamBYOBReader -> Maybe view -> m JSVal`
+  * new: `read :: (MonadDOM m, IsArrayBufferView view) => ReadableStreamBYOBReader -> view -> m ReadableStreamReadResult`
+* `JSDOM.FileReader.readAsArrayBuffer`
+  * old: `readAsArrayBuffer :: (MonadDOM m, IsBlob blob) => FileReader -> Maybe blob -> m ()`
+  * new: `readAsArrayBuffer :: (MonadDOM m, IsBlob blob) => FileReader -> blob -> m ()`
+* `JSDOM.FileReader.readAsBinaryString`
+  * old: `readAsBinaryString :: (MonadDOM m, IsBlob blob) => FileReader -> Maybe blob -> m ()`
+  * new: `readAsBinaryString :: (MonadDOM m, IsBlob blob) => FileReader -> blob -> m ()`
+* `JSDOM.FileReader.readAsDataURL`
+  * old: `readAsDataURL :: (MonadDOM m, IsBlob blob) => FileReader -> Maybe blob -> m ()`
+  * new: `readAsDataURL :: (MonadDOM m, IsBlob blob) => FileReader -> blob -> m ()`
+* `JSDOM.FileReader.readAsText`
+  * old: `readAsText :: (MonadDOM m, IsBlob blob, ToJSString encoding) => FileReader -> Maybe blob -> Maybe encoding -> m ()`
+  * new: `readAsText :: (MonadDOM m, IsBlob blob, ToJSString encoding) => FileReader -> blob -> Maybe encoding -> m ()`
+* `JSDOM.ReadableStreamBYOBReader.read_`
+  * old: `read_ :: (MonadDOM m, ToJSVal view) => ReadableStreamBYOBReader -> Maybe view -> m ()`
+  * new: `read_ :: (MonadDOM m, IsArrayBufferView view) => ReadableStreamBYOBReader -> view -> m ()`
+* `JSDOM.PluginArray.refresh`
+  * old: `refresh :: MonadDOM m => PluginArray -> Bool -> m ()`
+  * new: `refresh :: MonadDOM m => PluginArray -> m ()`
+* `JSDOM.Element.removeAttributeNS`
+  * old: `removeAttributeNS :: (MonadDOM m, IsElement self, ToJSString namespaceURI, ToJSString localName) => self -> Maybe namespaceURI -> localName -> m ()`
+  * new: `removeAttributeNS :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString localName) => self -> Maybe namespace -> localName -> m ()`
+* `JSDOM.EventTarget.removeEventListener`
+  * old: `removeEventListener :: (MonadDOM m, IsEventTarget self, ToJSString type', IsEventListenerOptionsOrBool options) => self -> type' -> Maybe EventListener -> options -> m ()`
+  * new: `removeEventListener :: (MonadDOM m, IsEventTarget self, ToJSString type', IsEventListenerOptionsOrBool options) => self -> type' -> Maybe EventListener -> Maybe options -> m ()`
+* `JSDOM.SVGPointList.removeItem`
+  * old: `removeItem :: MonadDOM m => SVGPointList -> Word -> m SVGPoint`
+  * new: `removeItem :: MonadDOM m => SVGPointList -> Word -> m DOMPoint`
+* `JSDOM.MediaQueryList.removeListener`
+  * old: `removeListener :: MonadDOM m => MediaQueryList -> Maybe MediaQueryListListener -> m ()`
+  * new: `removeListener :: MonadDOM m => MediaQueryList -> Maybe EventListener -> m ()`
+* `JSDOM.NamedNodeMap.removeNamedItemNS`
+  * old: `removeNamedItemNS :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName) => NamedNodeMap -> Maybe namespaceURI -> localName -> m Attr`
+  * new: `removeNamedItemNS :: (MonadDOM m, ToJSString namespace, ToJSString localName) => NamedNodeMap -> Maybe namespace -> localName -> m Attr`
+* `JSDOM.NamedNodeMap.removeNamedItemNS_`
+  * old: `removeNamedItemNS_ :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName) => NamedNodeMap -> Maybe namespaceURI -> localName -> m ()`
+  * new: `removeNamedItemNS_ :: (MonadDOM m, ToJSString namespace, ToJSString localName) => NamedNodeMap -> Maybe namespace -> localName -> m ()`
+* `JSDOM.XSLTProcessor.removeParameter`
+  * old: `removeParameter :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName) => XSLTProcessor -> Maybe namespaceURI -> Maybe localName -> m ()`
+  * new: `removeParameter :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName) => XSLTProcessor -> namespaceURI -> localName -> m ()`
+* `JSDOM.CSSStyleDeclaration.removeProperty`
+  * old: `removeProperty :: (MonadDOM m, ToJSString propertyName, FromJSString result) => CSSStyleDeclaration -> propertyName -> m result`
+  * new: `removeProperty :: (MonadDOM m, IsCSSStyleDeclaration self, ToJSString property, FromJSString result) => self -> property -> m result`
+* `JSDOM.CSSStyleDeclaration.removeProperty_`
+  * old: `removeProperty_ :: (MonadDOM m, ToJSString propertyName) => CSSStyleDeclaration -> propertyName -> m ()`
+  * new: `removeProperty_ :: (MonadDOM m, IsCSSStyleDeclaration self, ToJSString property) => self -> property -> m ()`
+* `JSDOM.VideoTrackList.removeTrack`
+  * old: `removeTrack :: EventName VideoTrackList Event`
+  * new: `removeTrack :: EventName VideoTrackList TrackEvent`
+* `JSDOM.TextTrackList.removeTrack`
+  * old: `removeTrack :: EventName TextTrackList Event`
+  * new: `removeTrack :: EventName TextTrackList TrackEvent`
+* `JSDOM.AudioTrackList.removeTrack`
+  * old: `removeTrack :: EventName AudioTrackList Event`
+  * new: `removeTrack :: EventName AudioTrackList TrackEvent`
+* `JSDOM.MediaStream.removeTrackEvent`
+  * old: `removeTrackEvent :: EventName MediaStream Event`
+  * new: `removeTrackEvent :: EventName MediaStream MediaStreamTrackEvent`
+* `JSDOM.SourceBufferList.removesourcebuffer`
+  * old: `removesourcebuffer :: EventName SourceBufferList onremovesourcebuffer`
+  * new: `removesourcebuffer :: EventName SourceBufferList Event`
+* `JSDOM.WebGLRenderingContextBase.renderbufferStorage`
+  * old: `renderbufferStorage :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> GLsizei -> GLsizei -> m ()`
+  * new: `renderbufferStorage :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Int -> Int -> m ()`
+* `JSDOM.DOMTokenList.replace`
+  * old: `replace :: (MonadDOM m, ToJSString token, ToJSString newToken) => DOMTokenList -> token -> newToken -> m ()`
+  * new: `replace :: (MonadDOM m, ToJSString token, ToJSString newToken) => DOMTokenList -> token -> newToken -> m Bool`
+* `JSDOM.SVGStringList.replaceItem`
+  * old: `replaceItem :: (MonadDOM m, ToJSString item, FromJSString result) => SVGStringList -> item -> Word -> m result`
+  * new: `replaceItem :: (MonadDOM m, ToJSString newItem, FromJSString result) => SVGStringList -> newItem -> Word -> m result`
+* `JSDOM.SVGPointList.replaceItem`
+  * old: `replaceItem :: MonadDOM m => SVGPointList -> SVGPoint -> Word -> m SVGPoint`
+  * new: `replaceItem :: MonadDOM m => SVGPointList -> DOMPoint -> Word -> m DOMPoint`
+* `JSDOM.SVGStringList.replaceItem_`
+  * old: `replaceItem_ :: (MonadDOM m, ToJSString item) => SVGStringList -> item -> Word -> m ()`
+  * new: `replaceItem_ :: (MonadDOM m, ToJSString newItem) => SVGStringList -> newItem -> Word -> m ()`
+* `JSDOM.SVGPointList.replaceItem_`
+  * old: `replaceItem_ :: MonadDOM m => SVGPointList -> SVGPoint -> Word -> m ()`
+  * new: `replaceItem_ :: MonadDOM m => SVGPointList -> DOMPoint -> Word -> m ()`
+* `JSDOM.History.replaceState`
+  * old: `replaceState :: (MonadDOM m, ToJSVal data', ToJSString title, ToJSString url) => History -> data' -> title -> Maybe url -> m ()`
+  * new: `replaceState :: (MonadDOM m, ToJSString unused, ToJSString url) => History -> JSVal -> unused -> Maybe url -> m ()`
+* `JSDOM.Notification.requestPermission`
+  * old: `requestPermission :: (MonadDOM m, ToJSString callback) => Maybe (NotificationPermissionCallback callback) -> m ()`
+  * new: `requestPermission :: MonadDOM m => Maybe NotificationPermissionCallback -> m NotificationPermission`
+* `JSDOM.GlobalEventHandlers.resize`
+  * old: `resize :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self UIEvent`
+  * new: `resize :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event`
+* `JSDOM.Window.resizeBy`
+  * old: `resizeBy :: MonadDOM m => Window -> Maybe Float -> Maybe Float -> m ()`
+  * new: `resizeBy :: MonadDOM m => Window -> Int -> Int -> m ()`
+* `JSDOM.Window.resizeBy`
+  * old: `resizeBy :: MonadDOM m => Window -> Maybe Float -> Maybe Float -> m ()`
+  * new: `resizeBy :: MonadDOM m => Window -> Int -> Int -> m ()`
+* `JSDOM.Window.resizeTo`
+  * old: `resizeTo :: MonadDOM m => Window -> Maybe Float -> Maybe Float -> m ()`
+  * new: `resizeTo :: MonadDOM m => Window -> Int -> Int -> m ()`
+* `JSDOM.Window.resizeTo`
+  * old: `resizeTo :: MonadDOM m => Window -> Maybe Float -> Maybe Float -> m ()`
+  * new: `resizeTo :: MonadDOM m => Window -> Int -> Int -> m ()`
+* `JSDOM.Performance.resourceTimingBufferFull`
+  * old: `resourceTimingBufferFull :: EventName Performance onresourcetimingbufferfull`
+  * new: `resourceTimingBufferFull :: EventName Performance Event`
+* `JSDOM.ReadableStreamBYOBRequest.respond`
+  * old: `respond :: (MonadDOM m, ToJSVal bytesWritten) => ReadableStreamBYOBRequest -> Maybe bytesWritten -> m ()`
+  * new: `respond :: MonadDOM m => ReadableStreamBYOBRequest -> Word53 -> m ()`
+* `JSDOM.ReadableStreamBYOBRequest.respondWithNewView`
+  * old: `respondWithNewView :: (MonadDOM m, ToJSVal view) => ReadableStreamBYOBRequest -> Maybe view -> m ()`
+  * new: `respondWithNewView :: (MonadDOM m, IsArrayBufferView view) => ReadableStreamBYOBRequest -> view -> m ()`
+* `JSDOM.SpeechSynthesisUtterance.resume`
+  * old: `resume :: EventName SpeechSynthesisUtterance Event`
+  * new: `resume :: EventName SpeechSynthesisUtterance SpeechSynthesisEvent`
+* `JSDOM.AudioContext.resume`
+  * old: `resume :: (MonadDOM m, IsAudioContext self) => self -> m ()`
+  * new: `resume :: MonadDOM m => AudioContext -> m ()`
+* `JSDOM.AudioContext.resume`
+  * old: `resume :: (MonadDOM m, IsAudioContext self) => self -> m ()`
+  * new: `resume :: MonadDOM m => AudioContext -> m ()`
+* `JSDOM.WebGLRenderingContextBase.sampleCoverage`
+  * old: `sampleCoverage :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLclampf -> GLboolean -> m ()`
+  * new: `sampleCoverage :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Float -> Bool -> m ()`
+* `JSDOM.WebGLRenderingContextBase.scissor`
+  * old: `scissor :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLint -> GLint -> GLsizei -> GLsizei -> m ()`
+  * new: `scissor :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Int -> Int -> Int -> Int -> m ()`
+* `JSDOM.Window.scroll`
+  * old: `scroll :: MonadDOM m => Window -> Double -> Double -> m ()`
+  * new: `scroll :: MonadDOM m => Window -> Double -> Double -> m ScrollResult`
+* `JSDOM.GlobalEventHandlers.scroll`
+  * old: `scroll :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self UIEvent`
+  * new: `scroll :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event`
+* `JSDOM.Element.scroll`
+  * old: `scroll :: (MonadDOM m, IsElement self) => self -> Double -> Double -> m ()`
+  * new: `scroll :: (MonadDOM m, IsElement self) => self -> Double -> Double -> m ScrollResult`
+* `JSDOM.Window.scroll`
+  * old: `scroll :: MonadDOM m => Window -> Double -> Double -> m ()`
+  * new: `scroll :: MonadDOM m => Window -> Double -> Double -> m ScrollResult`
+* `JSDOM.Window.scrollBy`
+  * old: `scrollBy :: MonadDOM m => Window -> Double -> Double -> m ()`
+  * new: `scrollBy :: MonadDOM m => Window -> Double -> Double -> m ScrollResult`
+* `JSDOM.Element.scrollBy`
+  * old: `scrollBy :: (MonadDOM m, IsElement self) => self -> Double -> Double -> m ()`
+  * new: `scrollBy :: (MonadDOM m, IsElement self) => self -> Double -> Double -> m ScrollResult`
+* `JSDOM.Window.scrollBy`
+  * old: `scrollBy :: MonadDOM m => Window -> Double -> Double -> m ()`
+  * new: `scrollBy :: MonadDOM m => Window -> Double -> Double -> m ScrollResult`
+* `JSDOM.Window.scrollByOpt`
+  * old: `scrollByOpt :: MonadDOM m => Window -> Maybe ScrollToOptions -> m ()`
+  * new: `scrollByOpt :: MonadDOM m => Window -> Maybe ScrollToOptions -> m ScrollResult`
+* `JSDOM.Element.scrollByOpt`
+  * old: `scrollByOpt :: (MonadDOM m, IsElement self) => self -> Maybe ScrollToOptions -> m ()`
+  * new: `scrollByOpt :: (MonadDOM m, IsElement self) => self -> Maybe ScrollToOptions -> m ScrollResult`
+* `JSDOM.Window.scrollByOpt`
+  * old: `scrollByOpt :: MonadDOM m => Window -> Maybe ScrollToOptions -> m ()`
+  * new: `scrollByOpt :: MonadDOM m => Window -> Maybe ScrollToOptions -> m ScrollResult`
+* `JSDOM.Element.scrollIntoView`
+  * old: `scrollIntoView :: (MonadDOM m, IsElement self) => self -> Bool -> m ()`
+  * new: `scrollIntoView :: (MonadDOM m, IsElement self, IsBoolOrScrollIntoViewOptions arg) => self -> Maybe arg -> m ScrollResult`
+* `JSDOM.Window.scrollOpt`
+  * old: `scrollOpt :: MonadDOM m => Window -> Maybe ScrollToOptions -> m ()`
+  * new: `scrollOpt :: MonadDOM m => Window -> Maybe ScrollToOptions -> m ScrollResult`
+* `JSDOM.Element.scrollOpt`
+  * old: `scrollOpt :: (MonadDOM m, IsElement self) => self -> Maybe ScrollToOptions -> m ()`
+  * new: `scrollOpt :: (MonadDOM m, IsElement self) => self -> Maybe ScrollToOptions -> m ScrollResult`
+* `JSDOM.Window.scrollOpt`
+  * old: `scrollOpt :: MonadDOM m => Window -> Maybe ScrollToOptions -> m ()`
+  * new: `scrollOpt :: MonadDOM m => Window -> Maybe ScrollToOptions -> m ScrollResult`
+* `JSDOM.Window.scrollTo`
+  * old: `scrollTo :: MonadDOM m => Window -> Double -> Double -> m ()`
+  * new: `scrollTo :: MonadDOM m => Window -> Double -> Double -> m ScrollResult`
+* `JSDOM.Element.scrollTo`
+  * old: `scrollTo :: (MonadDOM m, IsElement self) => self -> Double -> Double -> m ()`
+  * new: `scrollTo :: (MonadDOM m, IsElement self) => self -> Double -> Double -> m ScrollResult`
+* `JSDOM.Window.scrollTo`
+  * old: `scrollTo :: MonadDOM m => Window -> Double -> Double -> m ()`
+  * new: `scrollTo :: MonadDOM m => Window -> Double -> Double -> m ScrollResult`
+* `JSDOM.Window.scrollToOpt`
+  * old: `scrollToOpt :: MonadDOM m => Window -> Maybe ScrollToOptions -> m ()`
+  * new: `scrollToOpt :: MonadDOM m => Window -> Maybe ScrollToOptions -> m ScrollResult`
+* `JSDOM.Element.scrollToOpt`
+  * old: `scrollToOpt :: (MonadDOM m, IsElement self) => self -> Maybe ScrollToOptions -> m ()`
+  * new: `scrollToOpt :: (MonadDOM m, IsElement self) => self -> Maybe ScrollToOptions -> m ScrollResult`
+* `JSDOM.Window.scrollToOpt`
+  * old: `scrollToOpt :: MonadDOM m => Window -> Maybe ScrollToOptions -> m ()`
+  * new: `scrollToOpt :: MonadDOM m => Window -> Maybe ScrollToOptions -> m ScrollResult`
+* `JSDOM.GlobalEventHandlers.select`
+  * old: `select :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self UIEvent`
+  * new: `select :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event`
+* `JSDOM.SVGTextContentElement.selectSubString`
+  * old: `selectSubString :: (MonadDOM m, IsSVGTextContentElement self) => self -> Maybe Word -> Maybe Word -> m ()`
+  * new: `selectSubString :: (MonadDOM m, IsSVGTextContentElement self) => self -> Word -> Word -> m ()`
+* `JSDOM.XMLHttpRequest.send`
+  * old: `send :: (MonadDOM m, IsXMLHttpRequestBody body) => XMLHttpRequest -> Maybe body -> m ()`
+  * new: `send :: (MonadDOM m, IsDocumentOrXMLHttpRequestBodyInit body) => XMLHttpRequest -> Maybe body -> m ()`
+* `JSDOM.WebSocket.send`
+  * old: `send :: (MonadDOM m, IsArrayBuffer data') => WebSocket -> data' -> m ()`
+  * new: `send :: (MonadDOM m, IsBlobPart data') => WebSocket -> data' -> m ()`
+* `JSDOM.RTCDataChannel.send`
+  * old: `send :: (MonadDOM m, IsArrayBuffer data') => RTCDataChannel -> data' -> m ()`
+  * new: `send :: (MonadDOM m, ToJSString data') => RTCDataChannel -> data' -> m ()`
+* `JSDOM.XMLHttpRequest.send`
+  * old: `send :: MonadDOM m => XMLHttpRequest -> m ()`
+  * new: `send :: (MonadDOM m, IsDocumentOrXMLHttpRequestBodyInit body) => XMLHttpRequest -> Maybe body -> m ()`
+* `JSDOM.XMLSerializer.serializeToString`
+  * old: `serializeToString :: (MonadDOM m, IsNode node, FromJSString result) => XMLSerializer -> node -> m result`
+  * new: `serializeToString :: (MonadDOM m, IsNode root, FromJSString result) => XMLSerializer -> root -> m result`
+* `JSDOM.XMLSerializer.serializeToString_`
+  * old: `serializeToString_ :: (MonadDOM m, IsNode node) => XMLSerializer -> node -> m ()`
+  * new: `serializeToString_ :: (MonadDOM m, IsNode root) => XMLSerializer -> root -> m ()`
+* `JSDOM.VTTCue.setAlign`
+  * old: `setAlign :: (MonadDOM m, ToJSString val) => VTTCue -> val -> m ()`
+  * new: `setAlign :: MonadDOM m => VTTCue -> AlignSetting -> m ()`
+* `JSDOM.Element.setAttribute`
+  * old: `setAttribute :: (MonadDOM m, IsElement self, ToJSString qualifiedName, ToJSString value) => self -> qualifiedName -> value -> m ()`
+  * new: `setAttribute :: (MonadDOM m, IsElement self, ToJSString qualifiedName, IsTrustedTypeOrString value) => self -> qualifiedName -> value -> m ()`
+* `JSDOM.Element.setAttributeNS`
+  * old: `setAttributeNS :: (MonadDOM m, IsElement self, ToJSString namespaceURI, ToJSString qualifiedName, ToJSString value) => self -> Maybe namespaceURI -> qualifiedName -> value -> m ()`
+  * new: `setAttributeNS :: (MonadDOM m, IsElement self, ToJSString namespace, ToJSString qualifiedName, IsTrustedTypeOrString value) => self -> Maybe namespace -> qualifiedName -> value -> m ()`
+* `JSDOM.Selection.setBaseAndExtent`
+  * old: `setBaseAndExtent :: (MonadDOM m, IsNode baseNode, IsNode extentNode) => Selection -> Maybe baseNode -> Word -> Maybe extentNode -> Word -> m ()`
+  * new: `setBaseAndExtent :: (MonadDOM m, IsNode anchorNode, IsNode focusNode) => Selection -> anchorNode -> Word -> focusNode -> Word -> m ()`
+* `JSDOM.SVGAnimatedString.setBaseVal`
+  * old: `setBaseVal :: (MonadDOM m, ToJSString val) => SVGAnimatedString -> val -> m ()`
+  * new: `setBaseVal :: (MonadDOM m, IsTrustedScriptURLOrString val) => SVGAnimatedString -> val -> m ()`
+* `JSDOM.WebSocket.setBinaryType`
+  * old: `setBinaryType :: (MonadDOM m, ToJSString val) => WebSocket -> val -> m ()`
+  * new: `setBinaryType :: MonadDOM m => WebSocket -> BinaryType -> m ()`
+* `JSDOM.RTCDataChannel.setBinaryType`
+  * old: `setBinaryType :: (MonadDOM m, ToJSString val) => RTCDataChannel -> val -> m ()`
+  * new: `setBinaryType :: MonadDOM m => RTCDataChannel -> BinaryType -> m ()`
+* `JSDOM.AudioNode.setChannelCountMode`
+  * old: `setChannelCountMode :: (MonadDOM m, IsAudioNode self, ToJSString val) => self -> val -> m ()`
+  * new: `setChannelCountMode :: (MonadDOM m, IsAudioNode self) => self -> ChannelCountMode -> m ()`
+* `JSDOM.AudioNode.setChannelInterpretation`
+  * old: `setChannelInterpretation :: (MonadDOM m, IsAudioNode self, ToJSString val) => self -> val -> m ()`
+  * new: `setChannelInterpretation :: (MonadDOM m, IsAudioNode self) => self -> ChannelInterpretation -> m ()`
+* `JSDOM.RTCPeerConnection.setConfiguration`
+  * old: `setConfiguration :: MonadDOM m => RTCPeerConnection -> RTCConfiguration -> m ()`
+  * new: `setConfiguration :: MonadDOM m => RTCPeerConnection -> Maybe RTCConfiguration -> m ()`
+* `JSDOM.CSSStyleDeclaration.setCssText`
+  * old: `setCssText :: (MonadDOM m, ToJSString val) => CSSStyleDeclaration -> val -> m ()`
+  * new: `setCssText :: (MonadDOM m, IsCSSStyleDeclaration self, ToJSString val) => self -> val -> m ()`
+* `JSDOM.CSSRule.setCssText`
+  * old: `setCssText :: (MonadDOM m, IsCSSRule self, ToJSString val) => self -> Maybe val -> m ()`
+  * new: `setCssText :: (MonadDOM m, IsCSSRule self, ToJSString val) => self -> val -> m ()`
+* `JSDOM.SVGSVGElement.setCurrentTime`
+  * old: `setCurrentTime :: MonadDOM m => SVGSVGElement -> Maybe Float -> m ()`
+  * new: `setCurrentTime :: MonadDOM m => SVGSVGElement -> Float -> m ()`
+* `JSDOM.WaveShaperNode.setCurve`
+  * old: `setCurve :: (MonadDOM m, IsFloat32Array val) => WaveShaperNode -> val -> m ()`
+  * new: `setCurve :: (MonadDOM m, IsFloat32Array val) => WaveShaperNode -> Maybe val -> m ()`
+* `JSDOM.DataTransfer.setDragImage`
+  * old: `setDragImage :: (MonadDOM m, IsElement image) => DataTransfer -> Maybe image -> Int -> Int -> m ()`
+  * new: `setDragImage :: (MonadDOM m, IsElement image) => DataTransfer -> image -> Int -> Int -> m ()`
+* `JSDOM.HTMLElement.setHidden`
+  * old: `setHidden :: (MonadDOM m, IsHTMLElement self) => self -> Bool -> m ()`
+  * new: `setHidden :: (MonadDOM m, IsHTMLElement self, IsBoolOrDoubleOrString val) => self -> Maybe val -> m ()`
+* `JSDOM.ShadowRoot.setInnerHTML`
+  * old: `setInnerHTML :: (MonadDOM m, ToJSString val) => ShadowRoot -> val -> m ()`
+  * new: `setInnerHTML :: (MonadDOM m, IsTrustedHTMLOrString val) => ShadowRoot -> val -> m ()`
+* `JSDOM.Element.setInnerHTML`
+  * old: `setInnerHTML :: (MonadDOM m, IsElement self, ToJSString val) => self -> val -> m ()`
+  * new: `setInnerHTML :: (MonadDOM m, IsElement self, IsTrustedHTMLOrString val) => self -> val -> m ()`
+* `JSDOM.WindowOrWorkerGlobalScope.setInterval`
+  * old: `setInterval :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) => self -> handler -> Maybe Int -> m Int`
+  * new: `setInterval :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, IsTimerHandler handler) => self -> handler -> Maybe Int -> [JSVal] -> m Int`
+* `JSDOM.WindowOrWorkerGlobalScope.setInterval_`
+  * old: `setInterval_ :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) => self -> handler -> Maybe Int -> m ()`
+  * new: `setInterval_ :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, IsTimerHandler handler) => self -> handler -> Maybe Int -> [JSVal] -> m ()`
+* `JSDOM.Storage.setItem`
+  * old: `setItem :: (MonadDOM m, ToJSString key, ToJSString data') => Storage -> key -> data' -> m ()`
+  * new: `setItem :: (MonadDOM m, ToJSString key, ToJSString value) => Storage -> key -> value -> m ()`
+* `JSDOM.VTTCue.setLine`
+  * old: `setLine :: MonadDOM m => VTTCue -> Double -> m ()`
+  * new: `setLine :: (MonadDOM m, IsLineAndPositionSetting val) => VTTCue -> val -> m ()`
+* `JSDOM.RTCPeerConnection.setLocalDescription`
+  * old: `setLocalDescription :: MonadDOM m => RTCPeerConnection -> RTCSessionDescriptionInit -> m ()`
+  * new: `setLocalDescription :: MonadDOM m => RTCPeerConnection -> Maybe RTCLocalSessionDescriptionInit -> m ()`
+* `JSDOM.SVGTransform.setMatrix`
+  * old: `setMatrix :: MonadDOM m => SVGTransform -> SVGMatrix -> m ()`
+  * new: `setMatrix :: (MonadDOM m, IsDOMMatrix2DInit matrix) => SVGTransform -> Maybe matrix -> m ()`
+* `JSDOM.Element.setOuterHTML`
+  * old: `setOuterHTML :: (MonadDOM m, IsElement self, ToJSString val) => self -> val -> m ()`
+  * new: `setOuterHTML :: (MonadDOM m, IsElement self, IsTrustedHTMLOrString val) => self -> val -> m ()`
+* `JSDOM.XSLTProcessor.setParameter`
+  * old: `setParameter :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName, ToJSString value) => XSLTProcessor -> Maybe namespaceURI -> Maybe localName -> Maybe value -> m ()`
+  * new: `setParameter :: (MonadDOM m, ToJSString namespaceURI, ToJSString localName) => XSLTProcessor -> namespaceURI -> localName -> JSVal -> m ()`
+* `JSDOM.OscillatorNode.setPeriodicWave`
+  * old: `setPeriodicWave :: MonadDOM m => OscillatorNode -> Maybe PeriodicWave -> m ()`
+  * new: `setPeriodicWave :: MonadDOM m => OscillatorNode -> PeriodicWave -> m ()`
+* `JSDOM.VTTCue.setPosition`
+  * old: `setPosition :: MonadDOM m => VTTCue -> Double -> m ()`
+  * new: `setPosition :: (MonadDOM m, IsLineAndPositionSetting val) => VTTCue -> val -> m ()`
+* `JSDOM.CSSStyleDeclaration.setProperty`
+  * old: `setProperty :: (MonadDOM m, ToJSString propertyName, ToJSString value, ToJSString priority) => CSSStyleDeclaration -> propertyName -> value -> Maybe priority -> m ()`
+  * new: `setProperty :: (MonadDOM m, IsCSSStyleDeclaration self, ToJSString property, ToJSString value, ToJSString priority) => self -> property -> value -> Maybe priority -> m ()`
+* `JSDOM.HTMLTextAreaElement.setRangeText4`
+  * old: `setRangeText4 :: (MonadDOM m, ToJSString replacement, ToJSString selectionMode) => HTMLTextAreaElement -> replacement -> Word -> Word -> Maybe selectionMode -> m ()`
+  * new: `setRangeText4 :: (MonadDOM m, ToJSString replacement) => HTMLTextAreaElement -> replacement -> Word -> Word -> Maybe SelectionMode -> m ()`
+* `JSDOM.HTMLInputElement.setRangeText4`
+  * old: `setRangeText4 :: (MonadDOM m, ToJSString replacement, ToJSString selectionMode) => HTMLInputElement -> replacement -> Word -> Word -> Maybe selectionMode -> m ()`
+  * new: `setRangeText4 :: (MonadDOM m, ToJSString replacement) => HTMLInputElement -> replacement -> Word -> Word -> Maybe SelectionMode -> m ()`
+* `JSDOM.XMLHttpRequest.setRequestHeader`
+  * old: `setRequestHeader :: (MonadDOM m, ToJSString header, ToJSString value) => XMLHttpRequest -> header -> value -> m ()`
+  * new: `setRequestHeader :: (MonadDOM m, ToJSString name, ToJSString value) => XMLHttpRequest -> name -> value -> m ()`
+* `JSDOM.XMLHttpRequest.setRequestHeader`
+  * old: `setRequestHeader :: (MonadDOM m, ToJSString header, ToJSString value) => XMLHttpRequest -> header -> value -> m ()`
+  * new: `setRequestHeader :: (MonadDOM m, ToJSString name, ToJSString value) => XMLHttpRequest -> name -> value -> m ()`
+* `JSDOM.VTTRegion.setScroll`
+  * old: `setScroll :: (MonadDOM m, ToJSString val) => VTTRegion -> val -> m ()`
+  * new: `setScroll :: MonadDOM m => VTTRegion -> ScrollSetting -> m ()`
+* `JSDOM.Element.setScrollLeft`
+  * old: `setScrollLeft :: (MonadDOM m, IsElement self) => self -> Int -> m ()`
+  * new: `setScrollLeft :: (MonadDOM m, IsElement self) => self -> Double -> m ()`
+* `JSDOM.Element.setScrollTop`
+  * old: `setScrollTop :: (MonadDOM m, IsElement self) => self -> Int -> m ()`
+  * new: `setScrollTop :: (MonadDOM m, IsElement self) => self -> Double -> m ()`
+* `JSDOM.HTMLInputElement.setSelectionDirection`
+  * old: `setSelectionDirection :: (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()`
+  * new: `setSelectionDirection :: (MonadDOM m, ToJSString val) => HTMLInputElement -> Maybe val -> m ()`
+* `JSDOM.HTMLTextAreaElement.setSelectionEnd`
+  * old: `setSelectionEnd :: MonadDOM m => HTMLTextAreaElement -> Int -> m ()`
+  * new: `setSelectionEnd :: MonadDOM m => HTMLTextAreaElement -> Word -> m ()`
+* `JSDOM.HTMLInputElement.setSelectionEnd`
+  * old: `setSelectionEnd :: MonadDOM m => HTMLInputElement -> Int -> m ()`
+  * new: `setSelectionEnd :: MonadDOM m => HTMLInputElement -> Maybe Word -> m ()`
+* `JSDOM.HTMLTextAreaElement.setSelectionRange`
+  * old: `setSelectionRange :: (MonadDOM m, ToJSString direction) => HTMLTextAreaElement -> Maybe Int -> Maybe Int -> Maybe direction -> m ()`
+  * new: `setSelectionRange :: (MonadDOM m, ToJSString direction) => HTMLTextAreaElement -> Word -> Word -> Maybe direction -> m ()`
+* `JSDOM.HTMLInputElement.setSelectionRange`
+  * old: `setSelectionRange :: (MonadDOM m, ToJSString direction) => HTMLInputElement -> Int -> Int -> Maybe direction -> m ()`
+  * new: `setSelectionRange :: (MonadDOM m, ToJSString direction) => HTMLInputElement -> Word -> Word -> Maybe direction -> m ()`
+* `JSDOM.HTMLTextAreaElement.setSelectionStart`
+  * old: `setSelectionStart :: MonadDOM m => HTMLTextAreaElement -> Int -> m ()`
+  * new: `setSelectionStart :: MonadDOM m => HTMLTextAreaElement -> Word -> m ()`
+* `JSDOM.HTMLInputElement.setSelectionStart`
+  * old: `setSelectionStart :: MonadDOM m => HTMLInputElement -> Int -> m ()`
+  * new: `setSelectionStart :: MonadDOM m => HTMLInputElement -> Maybe Word -> m ()`
+* `JSDOM.CSSStyleRule.setSelectorText`
+  * old: `setSelectorText :: (MonadDOM m, ToJSString val) => CSSStyleRule -> Maybe val -> m ()`
+  * new: `setSelectorText :: (MonadDOM m, ToJSString val) => CSSStyleRule -> val -> m ()`
+* `JSDOM.CSSPageRule.setSelectorText`
+  * old: `setSelectorText :: (MonadDOM m, ToJSString val) => CSSPageRule -> Maybe val -> m ()`
+  * new: `setSelectorText :: (MonadDOM m, ToJSString val) => CSSPageRule -> val -> m ()`
+* `JSDOM.HTMLScriptElement.setSrc`
+  * old: `setSrc :: (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()`
+  * new: `setSrc :: (MonadDOM m, IsTrustedScriptURLOrString val) => HTMLScriptElement -> val -> m ()`
+* `JSDOM.HTMLIFrameElement.setSrcdoc`
+  * old: `setSrcdoc :: (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()`
+  * new: `setSrcdoc :: (MonadDOM m, IsTrustedHTMLOrString val) => HTMLIFrameElement -> val -> m ()`
+* `JSDOM.SVGFEGaussianBlurElement.setStdDeviation`
+  * old: `setStdDeviation :: MonadDOM m => SVGFEGaussianBlurElement -> Maybe Float -> Maybe Float -> m ()`
+  * new: `setStdDeviation :: MonadDOM m => SVGFEGaussianBlurElement -> Float -> Float -> m ()`
+* `JSDOM.SVGFEDropShadowElement.setStdDeviation`
+  * old: `setStdDeviation :: MonadDOM m => SVGFEDropShadowElement -> Maybe Float -> Maybe Float -> m ()`
+  * new: `setStdDeviation :: MonadDOM m => SVGFEDropShadowElement -> Float -> Float -> m ()`
+* `JSDOM.AudioParam.setTargetAtTime`
+  * old: `setTargetAtTime :: MonadDOM m => AudioParam -> Float -> Float -> Float -> m ()`
+  * new: `setTargetAtTime :: MonadDOM m => AudioParam -> Float -> Double -> Float -> m AudioParam`
+* `JSDOM.HTMLScriptElement.setText`
+  * old: `setText :: (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()`
+  * new: `setText :: (MonadDOM m, IsTrustedScriptOrString val) => HTMLScriptElement -> val -> m ()`
+* `JSDOM.WindowOrWorkerGlobalScope.setTimeout`
+  * old: `setTimeout :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) => self -> handler -> Maybe Int -> m Int`
+  * new: `setTimeout :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, IsTimerHandler handler) => self -> handler -> Maybe Int -> [JSVal] -> m Int`
+* `JSDOM.WindowOrWorkerGlobalScope.setTimeout_`
+  * old: `setTimeout_ :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) => self -> handler -> Maybe Int -> m ()`
+  * new: `setTimeout_ :: (MonadDOM m, IsWindowOrWorkerGlobalScope self, IsTimerHandler handler) => self -> handler -> Maybe Int -> [JSVal] -> m ()`
+* `JSDOM.DataCue.setValue`
+  * old: `setValue :: (MonadDOM m, ToJSVal val) => DataCue -> val -> m ()`
+  * new: `setValue :: MonadDOM m => DataCue -> JSVal -> m ()`
+* `JSDOM.HTMLInputElement.setValueAsDate`
+  * old: `setValueAsDate :: (MonadDOM m, IsDate val) => HTMLInputElement -> Maybe val -> m ()`
+  * new: `setValueAsDate :: MonadDOM m => HTMLInputElement -> Maybe GObject -> m ()`
+* `JSDOM.AudioParam.setValueAtTime`
+  * old: `setValueAtTime :: MonadDOM m => AudioParam -> Float -> Float -> m ()`
+  * new: `setValueAtTime :: MonadDOM m => AudioParam -> Float -> Double -> m AudioParam`
+* `JSDOM.AudioParam.setValueCurveAtTime`
+  * old: `setValueCurveAtTime :: (MonadDOM m, IsFloat32Array values) => AudioParam -> Maybe values -> Float -> Float -> m ()`
+  * new: `setValueCurveAtTime :: MonadDOM m => AudioParam -> [Float] -> Double -> Double -> m AudioParam`
+* `JSDOM.VTTCue.setVertical`
+  * old: `setVertical :: (MonadDOM m, ToJSString val) => VTTCue -> val -> m ()`
+  * new: `setVertical :: MonadDOM m => VTTCue -> DirectionSetting -> m ()`
+* `JSDOM.WebGLRenderingContextBase.shaderSource`
+  * old: `shaderSource :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString string) => self -> Maybe WebGLShader -> string -> m ()`
+  * new: `shaderSource :: (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString source) => self -> WebGLShader -> source -> m ()`
+* `JSDOM.Notification.showEvent`
+  * old: `showEvent :: EventName Notification MouseEvent`
+  * new: `showEvent :: EventName Notification Event`
+* `JSDOM.SubtleCrypto.sign`
+  * old: `sign :: (MonadDOM m, ToJSString algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal`
+  * new: `sign :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ArrayBuffer`
+* `JSDOM.SubtleCrypto.sign_`
+  * old: `sign_ :: (MonadDOM m, ToJSString algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()`
+  * new: `sign_ :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()`
+* `JSDOM.Blob.slice`
+  * old: `slice :: (MonadDOM m, IsBlob self, ToJSString contentType) => self -> Maybe Int64 -> Maybe Int64 -> Maybe contentType -> m Blob`
+  * new: `slice :: (MonadDOM m, IsBlob self, ToJSString contentType) => self -> Maybe Int53 -> Maybe Int53 -> Maybe contentType -> m Blob`
+* `JSDOM.Blob.slice_`
+  * old: `slice_ :: (MonadDOM m, IsBlob self, ToJSString contentType) => self -> Maybe Int64 -> Maybe Int64 -> Maybe contentType -> m ()`
+  * new: `slice_ :: (MonadDOM m, IsBlob self, ToJSString contentType) => self -> Maybe Int53 -> Maybe Int53 -> Maybe contentType -> m ()`
+* `JSDOM.XPathResult.snapshotItem`
+  * old: `snapshotItem :: MonadDOM m => XPathResult -> Maybe Word -> m Node`
+  * new: `snapshotItem :: MonadDOM m => XPathResult -> Word -> m (Maybe Node)`
+* `JSDOM.XPathResult.snapshotItem_`
+  * old: `snapshotItem_ :: MonadDOM m => XPathResult -> Maybe Word -> m ()`
+  * new: `snapshotItem_ :: MonadDOM m => XPathResult -> Word -> m ()`
+* `JSDOM.MediaSource.sourceclose`
+  * old: `sourceclose :: EventName MediaSource onsourceclose`
+  * new: `sourceclose :: EventName MediaSource Event`
+* `JSDOM.MediaSource.sourceended`
+  * old: `sourceended :: EventName MediaSource onsourceended`
+  * new: `sourceended :: EventName MediaSource Event`
+* `JSDOM.MediaSource.sourceopen`
+  * old: `sourceopen :: EventName MediaSource onsourceopen`
+  * new: `sourceopen :: EventName MediaSource Event`
+* `JSDOM.EventM.srcElement`
+  * old: `srcElement :: IsEvent e => EventM t e EventTarget`
+  * new: `srcElement :: IsEvent e => EventM t e (Maybe EventTarget)`
+* `JSDOM.SpeechSynthesisUtterance.start`
+  * old: `start :: EventName SpeechSynthesisUtterance Event`
+  * new: `start :: EventName SpeechSynthesisUtterance SpeechSynthesisEvent`
+* `JSDOM.WebGLRenderingContextBase.stencilFunc`
+  * old: `stencilFunc :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLint -> GLuint -> m ()`
+  * new: `stencilFunc :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Int -> Word -> m ()`
+* `JSDOM.WebGLRenderingContextBase.stencilFuncSeparate`
+  * old: `stencilFuncSeparate :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> GLint -> GLuint -> m ()`
+  * new: `stencilFuncSeparate :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Int -> Word -> m ()`
+* `JSDOM.WebGLRenderingContextBase.stencilMask`
+  * old: `stencilMask :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLuint -> m ()`
+  * new: `stencilMask :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> m ()`
+* `JSDOM.WebGLRenderingContextBase.stencilMaskSeparate`
+  * old: `stencilMaskSeparate :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLuint -> m ()`
+  * new: `stencilMaskSeparate :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> m ()`
+* `JSDOM.WebGLRenderingContextBase.stencilOp`
+  * old: `stencilOp :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> GLenum -> m ()`
+  * new: `stencilOp :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Word -> m ()`
+* `JSDOM.WebGLRenderingContextBase.stencilOpSeparate`
+  * old: `stencilOpSeparate :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> GLenum -> GLenum -> m ()`
+  * new: `stencilOpSeparate :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Word -> Word -> m ()`
+* `JSDOM.GlobalEventHandlers.submit`
+  * old: `submit :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self Event`
+  * new: `submit :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self SubmitEvent`
+* `JSDOM.IDBRequest.success`
+  * old: `success :: (IsIDBRequest self, IsEventTarget self) => EventName self Event`
+  * new: `success :: (IsIDBRequest self, IsEventTarget self) => EventName self IDBVersionChangeEvent`
+* `JSDOM.AudioContext.suspend`
+  * old: `suspend :: (MonadDOM m, IsAudioContext self) => self -> m ()`
+  * new: `suspend :: MonadDOM m => AudioContext -> m ()`
+* `JSDOM.AudioContext.suspend`
+  * old: `suspend :: (MonadDOM m, IsAudioContext self) => self -> m ()`
+  * new: `suspend :: MonadDOM m => AudioContext -> m ()`
+* `JSDOM.SVGSVGElement.suspendRedraw`
+  * old: `suspendRedraw :: MonadDOM m => SVGSVGElement -> Maybe Word -> m Word`
+  * new: `suspendRedraw :: MonadDOM m => SVGSVGElement -> Word -> m Word`
+* `JSDOM.SVGSVGElement.suspendRedraw_`
+  * old: `suspendRedraw_ :: MonadDOM m => SVGSVGElement -> Maybe Word -> m ()`
+  * new: `suspendRedraw_ :: MonadDOM m => SVGSVGElement -> Word -> m ()`
+* `JSDOM.ReadableStream.tee`
+  * old: `tee :: MonadDOM m => ReadableStream -> m GObject`
+  * new: `tee :: (MonadDOM m, IsReadableStream self) => self -> m [ReadableStream]`
+* `JSDOM.ReadableStream.tee_`
+  * old: `tee_ :: MonadDOM m => ReadableStream -> m ()`
+  * new: `tee_ :: (MonadDOM m, IsReadableStream self) => self -> m ()`
+* `JSDOM.WebGLRenderingContextBase.texParameterf`
+  * old: `texParameterf :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> GLfloat -> m ()`
+  * new: `texParameterf :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Float -> m ()`
+* `JSDOM.WebGLRenderingContextBase.texParameteri`
+  * old: `texParameteri :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLenum -> GLenum -> GLint -> m ()`
+  * new: `texParameteri :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Word -> Int -> m ()`
+* `JSDOM.EventM.timeStamp`
+  * old: `timeStamp :: IsEvent e => EventM t e Word`
+  * new: `timeStamp :: IsEvent e => EventM t e Double`
+* `JSDOM.Types.toAddEventListenerOptionsOrBool`
+  * old: `toAddEventListenerOptionsOrBool :: IsAddEventListenerOptionsOrBool o => o -> AddEventListenerOptionsOrBool`
+  * new: `toAddEventListenerOptionsOrBool :: (MonadJSM m, IsAddEventListenerOptionsOrBool o) => o -> m AddEventListenerOptionsOrBool`
+* `JSDOM.Types.toBufferSource`
+  * old: `toBufferSource :: IsBufferSource o => o -> BufferSource`
+  * new: `toBufferSource :: (MonadJSM m, IsBufferSource o) => o -> m BufferSource`
+* `JSDOM.Types.toCanvasImageSource`
+  * old: `toCanvasImageSource :: IsCanvasImageSource o => o -> CanvasImageSource`
+  * new: `toCanvasImageSource :: (MonadJSM m, IsCanvasImageSource o) => o -> m CanvasImageSource`
+* `JSDOM.Types.toEventListenerOptionsOrBool`
+  * old: `toEventListenerOptionsOrBool :: IsEventListenerOptionsOrBool o => o -> EventListenerOptionsOrBool`
+  * new: `toEventListenerOptionsOrBool :: (MonadJSM m, IsEventListenerOptionsOrBool o) => o -> m EventListenerOptionsOrBool`
+* `JSDOM.Types.toHTMLCollectionOrElement`
+  * old: `toHTMLCollectionOrElement :: IsHTMLCollectionOrElement o => o -> HTMLCollectionOrElement`
+  * new: `toHTMLCollectionOrElement :: (MonadJSM m, IsHTMLCollectionOrElement o) => o -> m HTMLCollectionOrElement`
+* `JSDOM.Types.toMediaProvider`
+  * old: `toMediaProvider :: IsMediaProvider o => o -> MediaProvider`
+  * new: `toMediaProvider :: (MonadJSM m, IsMediaProvider o) => o -> m MediaProvider`
+* `JSDOM.Types.toMessageEventSource`
+  * old: `toMessageEventSource :: IsMessageEventSource o => o -> MessageEventSource`
+  * new: `toMessageEventSource :: (MonadJSM m, IsMessageEventSource o) => o -> m MessageEventSource`
+* `JSDOM.Types.toRadioNodeListOrElement`
+  * old: `toRadioNodeListOrElement :: IsRadioNodeListOrElement o => o -> RadioNodeListOrElement`
+  * new: `toRadioNodeListOrElement :: (MonadJSM m, IsRadioNodeListOrElement o) => o -> m RadioNodeListOrElement`
+* `JSDOM.Types.toRenderingContext`
+  * old: `toRenderingContext :: IsRenderingContext o => o -> RenderingContext`
+  * new: `toRenderingContext :: (MonadJSM m, IsRenderingContext o) => o -> m RenderingContext`
+* `JSDOM.Types.toTexImageSource`
+  * old: `toTexImageSource :: IsTexImageSource o => o -> TexImageSource`
+  * new: `toTexImageSource :: (MonadJSM m, IsTexImageSource o) => o -> m TexImageSource`
+* `JSDOM.GlobalEventHandlers.toggle`
+  * old: `toggle :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self ontoggle`
+  * new: `toggle :: (IsGlobalEventHandlers self, IsEventTarget self) => EventName self ToggleEvent`
+* `JSDOM.DOMTokenList.toggle`
+  * old: `toggle :: (MonadDOM m, ToJSString token) => DOMTokenList -> token -> Bool -> m Bool`
+  * new: `toggle :: (MonadDOM m, ToJSString token) => DOMTokenList -> token -> Maybe Bool -> m Bool`
+* `JSDOM.DOMTokenList.toggle_`
+  * old: `toggle_ :: (MonadDOM m, ToJSString token) => DOMTokenList -> token -> Bool -> m ()`
+  * new: `toggle_ :: (MonadDOM m, ToJSString token) => DOMTokenList -> token -> Maybe Bool -> m ()`
+* `JSDOM.RTCDTMFSender.toneChange`
+  * old: `toneChange :: EventName RTCDTMFSender Event`
+  * new: `toneChange :: EventName RTCDTMFSender RTCDTMFToneChangeEvent`
+* `JSDOM.RTCPeerConnection.track`
+  * old: `track :: EventName RTCPeerConnection ontrack`
+  * new: `track :: EventName RTCPeerConnection RTCTrackEvent`
+* `JSDOM.IDBDatabase.transaction`
+  * old: `transaction :: (MonadDOM m, IsStringOrStrings storeNames) => IDBDatabase -> storeNames -> Maybe IDBTransactionMode -> m IDBTransaction`
+  * new: `transaction :: (MonadDOM m, IsStringOrSequenceString storeNames) => IDBDatabase -> storeNames -> Maybe IDBTransactionMode -> m IDBTransaction`
+* `JSDOM.IDBDatabase.transaction_`
+  * old: `transaction_ :: (MonadDOM m, IsStringOrStrings storeNames) => IDBDatabase -> storeNames -> Maybe IDBTransactionMode -> m ()`
+  * new: `transaction_ :: (MonadDOM m, IsStringOrSequenceString storeNames) => IDBDatabase -> storeNames -> Maybe IDBTransactionMode -> m ()`
+* `JSDOM.XSLTProcessor.transformToDocument`
+  * old: `transformToDocument :: (MonadDOM m, IsNode source) => XSLTProcessor -> Maybe source -> m Document`
+  * new: `transformToDocument :: (MonadDOM m, IsNode source) => XSLTProcessor -> source -> m Document`
+* `JSDOM.XSLTProcessor.transformToDocument_`
+  * old: `transformToDocument_ :: (MonadDOM m, IsNode source) => XSLTProcessor -> Maybe source -> m ()`
+  * new: `transformToDocument_ :: (MonadDOM m, IsNode source) => XSLTProcessor -> source -> m ()`
+* `JSDOM.XSLTProcessor.transformToFragment`
+  * old: `transformToFragment :: (MonadDOM m, IsNode source, IsDocument docVal) => XSLTProcessor -> Maybe source -> Maybe docVal -> m DocumentFragment`
+  * new: `transformToFragment :: (MonadDOM m, IsNode source, IsDocument output) => XSLTProcessor -> source -> output -> m DocumentFragment`
+* `JSDOM.XSLTProcessor.transformToFragment_`
+  * old: `transformToFragment_ :: (MonadDOM m, IsNode source, IsDocument docVal) => XSLTProcessor -> Maybe source -> Maybe docVal -> m ()`
+  * new: `transformToFragment_ :: (MonadDOM m, IsNode source, IsDocument output) => XSLTProcessor -> source -> output -> m ()`
+* `JSDOM.EventM.uiLayerX`
+  * old: `uiLayerX :: IsUIEvent e => EventM t e Int`
+  * new: `uiLayerX :: IsMouseEvent e => EventM t e Int`
+* `JSDOM.EventM.uiLayerXY`
+  * old: `uiLayerXY :: IsUIEvent e => EventM t e (Int, Int)`
+  * new: `uiLayerXY :: IsMouseEvent e => EventM t e (Int, Int)`
+* `JSDOM.EventM.uiLayerY`
+  * old: `uiLayerY :: IsUIEvent e => EventM t e Int`
+  * new: `uiLayerY :: IsMouseEvent e => EventM t e Int`
+* `JSDOM.EventM.uiPageX`
+  * old: `uiPageX :: IsUIEvent e => EventM t e Int`
+  * new: `uiPageX :: IsMouseEvent e => EventM t e Double`
+* `JSDOM.EventM.uiPageXY`
+  * old: `uiPageXY :: IsUIEvent e => EventM t e (Int, Int)`
+  * new: `uiPageXY :: IsMouseEvent e => EventM t e (Double, Double)`
+* `JSDOM.EventM.uiPageY`
+  * old: `uiPageY :: IsUIEvent e => EventM t e Int`
+  * new: `uiPageY :: IsMouseEvent e => EventM t e Double`
+* `JSDOM.EventM.uiView`
+  * old: `uiView :: IsUIEvent e => EventM t e Window`
+  * new: `uiView :: IsUIEvent e => EventM t e (Maybe Window)`
+* `JSDOM.EventM.uiWhich`
+  * old: `uiWhich :: IsUIEvent e => EventM t e Int`
+  * new: `uiWhich :: IsUIEvent e => EventM t e Word`
+* `JSDOM.WebGLRenderingContextBase.uniform1f`
+  * old: `uniform1f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> GLfloat -> m ()`
+  * new: `uniform1f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Float -> m ()`
+* `JSDOM.WebGLRenderingContextBase.uniform1i`
+  * old: `uniform1i :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> GLint -> m ()`
+  * new: `uniform1i :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Int -> m ()`
+* `JSDOM.WebGLRenderingContextBase.uniform2f`
+  * old: `uniform2f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> GLfloat -> GLfloat -> m ()`
+  * new: `uniform2f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Float -> Float -> m ()`
+* `JSDOM.WebGLRenderingContextBase.uniform2i`
+  * old: `uniform2i :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> GLint -> GLint -> m ()`
+  * new: `uniform2i :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Int -> Int -> m ()`
+* `JSDOM.WebGLRenderingContextBase.uniform3f`
+  * old: `uniform3f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> GLfloat -> GLfloat -> GLfloat -> m ()`
+  * new: `uniform3f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Float -> Float -> Float -> m ()`
+* `JSDOM.WebGLRenderingContextBase.uniform3i`
+  * old: `uniform3i :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> GLint -> GLint -> GLint -> m ()`
+  * new: `uniform3i :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Int -> Int -> Int -> m ()`
+* `JSDOM.WebGLRenderingContextBase.uniform4f`
+  * old: `uniform4f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()`
+  * new: `uniform4f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Float -> Float -> Float -> Float -> m ()`
+* `JSDOM.WebGLRenderingContextBase.uniform4i`
+  * old: `uniform4i :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> GLint -> GLint -> GLint -> GLint -> m ()`
+  * new: `uniform4i :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLUniformLocation -> Int -> Int -> Int -> Int -> m ()`
+* `JSDOM.WindowEventHandlers.unload`
+  * old: `unload :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self UIEvent`
+  * new: `unload :: (IsWindowEventHandlers self, IsEventTarget self) => EventName self Event`
+* `JSDOM.SVGSVGElement.unsuspendRedraw`
+  * old: `unsuspendRedraw :: MonadDOM m => SVGSVGElement -> Maybe Word -> m ()`
+  * new: `unsuspendRedraw :: MonadDOM m => SVGSVGElement -> Word -> m ()`
+* `JSDOM.SubtleCrypto.unwrapKey`
+  * old: `unwrapKey :: (MonadDOM m, ToJSString format, IsBufferSource wrappedKey, ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm) => SubtleCrypto -> format -> wrappedKey -> CryptoKey -> unwrapAlgorithm -> unwrappedKeyAlgorithm -> Bool -> [CryptoKeyUsage] -> m CryptoKey`
+  * new: `unwrapKey :: (MonadDOM m, IsBufferSource wrappedKey, IsAlgorithmIdentifier unwrapAlgorithm, IsAlgorithmIdentifier unwrappedKeyAlgorithm) => SubtleCrypto -> KeyFormat -> wrappedKey -> CryptoKey -> unwrapAlgorithm -> unwrappedKeyAlgorithm -> Bool -> [KeyUsage] -> m CryptoKey`
+* `JSDOM.SubtleCrypto.unwrapKey_`
+  * old: `unwrapKey_ :: (MonadDOM m, ToJSString format, IsBufferSource wrappedKey, ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm) => SubtleCrypto -> format -> wrappedKey -> CryptoKey -> unwrapAlgorithm -> unwrappedKeyAlgorithm -> Bool -> [CryptoKeyUsage] -> m ()`
+  * new: `unwrapKey_ :: (MonadDOM m, IsBufferSource wrappedKey, IsAlgorithmIdentifier unwrapAlgorithm, IsAlgorithmIdentifier unwrappedKeyAlgorithm) => SubtleCrypto -> KeyFormat -> wrappedKey -> CryptoKey -> unwrapAlgorithm -> unwrappedKeyAlgorithm -> Bool -> [KeyUsage] -> m ()`
+* `JSDOM.SourceBuffer.update`
+  * old: `update :: EventName SourceBuffer onupdate`
+  * new: `update :: EventName SourceBuffer Event`
+* `JSDOM.IDBCursor.update`
+  * old: `update :: (MonadDOM m, IsIDBCursor self, ToJSVal value) => self -> value -> m IDBRequest`
+  * new: `update :: (MonadDOM m, IsIDBCursor self) => self -> JSVal -> m IDBRequest`
+* `JSDOM.IDBCursor.update_`
+  * old: `update_ :: (MonadDOM m, IsIDBCursor self, ToJSVal value) => self -> value -> m ()`
+  * new: `update_ :: (MonadDOM m, IsIDBCursor self) => self -> JSVal -> m ()`
+* `JSDOM.SourceBuffer.updateend`
+  * old: `updateend :: EventName SourceBuffer onupdateend`
+  * new: `updateend :: EventName SourceBuffer Event`
+* `JSDOM.SourceBuffer.updatestart`
+  * old: `updatestart :: EventName SourceBuffer onupdatestart`
+  * new: `updatestart :: EventName SourceBuffer Event`
+* `JSDOM.IDBKeyRange.upperBound`
+  * old: `upperBound :: (MonadDOM m, ToJSVal upper) => upper -> Bool -> m IDBKeyRange`
+  * new: `upperBound :: MonadDOM m => JSVal -> Maybe Bool -> m IDBKeyRange`
+* `JSDOM.IDBKeyRange.upperBound_`
+  * old: `upperBound_ :: (MonadDOM m, ToJSVal upper) => upper -> Bool -> m ()`
+  * new: `upperBound_ :: MonadDOM m => JSVal -> Maybe Bool -> m ()`
+* `JSDOM.WebGLRenderingContextBase.validateProgram`
+  * old: `validateProgram :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Maybe WebGLProgram -> m ()`
+  * new: `validateProgram :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> WebGLProgram -> m ()`
+* `JSDOM.SubtleCrypto.verify`
+  * old: `verify :: (MonadDOM m, ToJSString algorithm, IsBufferSource signature, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> signature -> data' -> m JSVal`
+  * new: `verify :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource signature, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> signature -> data' -> m Bool`
+* `JSDOM.SubtleCrypto.verify_`
+  * old: `verify_ :: (MonadDOM m, ToJSString algorithm, IsBufferSource signature, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> signature -> data' -> m ()`
+  * new: `verify_ :: (MonadDOM m, IsAlgorithmIdentifier algorithm, IsBufferSource signature, IsBufferSource data') => SubtleCrypto -> algorithm -> CryptoKey -> signature -> data' -> m ()`
+* `JSDOM.WebGLRenderingContextBase.vertexAttrib1f`
+  * old: `vertexAttrib1f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLuint -> GLfloat -> m ()`
+  * new: `vertexAttrib1f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Float -> m ()`
+* `JSDOM.WebGLRenderingContextBase.vertexAttrib1fv`
+  * old: `vertexAttrib1fv :: (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32List values) => self -> GLuint -> values -> m ()`
+  * new: `vertexAttrib1fv :: (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32List values) => self -> Word -> values -> m ()`
+* `JSDOM.WebGLRenderingContextBase.vertexAttrib2f`
+  * old: `vertexAttrib2f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLuint -> GLfloat -> GLfloat -> m ()`
+  * new: `vertexAttrib2f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Float -> Float -> m ()`
+* `JSDOM.WebGLRenderingContextBase.vertexAttrib2fv`
+  * old: `vertexAttrib2fv :: (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32List values) => self -> GLuint -> values -> m ()`
+  * new: `vertexAttrib2fv :: (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32List values) => self -> Word -> values -> m ()`
+* `JSDOM.WebGLRenderingContextBase.vertexAttrib3f`
+  * old: `vertexAttrib3f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLuint -> GLfloat -> GLfloat -> GLfloat -> m ()`
+  * new: `vertexAttrib3f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Float -> Float -> Float -> m ()`
+* `JSDOM.WebGLRenderingContextBase.vertexAttrib3fv`
+  * old: `vertexAttrib3fv :: (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32List values) => self -> GLuint -> values -> m ()`
+  * new: `vertexAttrib3fv :: (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32List values) => self -> Word -> values -> m ()`
+* `JSDOM.WebGLRenderingContextBase.vertexAttrib4f`
+  * old: `vertexAttrib4f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()`
+  * new: `vertexAttrib4f :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Float -> Float -> Float -> Float -> m ()`
+* `JSDOM.WebGLRenderingContextBase.vertexAttrib4fv`
+  * old: `vertexAttrib4fv :: (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32List values) => self -> GLuint -> values -> m ()`
+  * new: `vertexAttrib4fv :: (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32List values) => self -> Word -> values -> m ()`
+* `JSDOM.WebGLRenderingContextBase.vertexAttribPointer`
+  * old: `vertexAttribPointer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> GLintptr -> m ()`
+  * new: `vertexAttribPointer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Word -> Int -> Word -> Bool -> Int -> Int53 -> m ()`
+* `JSDOM.Navigator.vibrate`
+  * old: `vibrate :: MonadDOM m => Navigator -> Word -> m Bool`
+  * new: `vibrate :: (MonadDOM m, IsVibratePattern pattern') => Navigator -> pattern' -> m Bool`
+* `JSDOM.Navigator.vibrate`
+  * old: `vibrate :: MonadDOM m => Navigator -> Word -> m Bool`
+  * new: `vibrate :: (MonadDOM m, IsVibratePattern pattern') => Navigator -> pattern' -> m Bool`
+* `JSDOM.Navigator.vibrate_`
+  * old: `vibrate_ :: MonadDOM m => Navigator -> Word -> m ()`
+  * new: `vibrate_ :: (MonadDOM m, IsVibratePattern pattern') => Navigator -> pattern' -> m ()`
+* `JSDOM.Navigator.vibrate_`
+  * old: `vibrate_ :: MonadDOM m => Navigator -> Word -> m ()`
+  * new: `vibrate_ :: (MonadDOM m, IsVibratePattern pattern') => Navigator -> pattern' -> m ()`
+* `JSDOM.WebGLRenderingContextBase.viewport`
+  * old: `viewport :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> GLint -> GLint -> GLsizei -> GLsizei -> m ()`
+  * new: `viewport :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> Int -> Int -> Int -> Int -> m ()`
+* `JSDOM.HTMLMediaElement.waitingforkey`
+  * old: `waitingforkey :: (IsHTMLMediaElement self, IsEventTarget self) => EventName self onwaitingforkey`
+  * new: `waitingforkey :: (IsHTMLMediaElement self, IsEventTarget self) => EventName self Event`
+* `JSDOM.CustomElementRegistry.whenDefined`
+  * old: `whenDefined :: (MonadDOM m, ToJSString name) => CustomElementRegistry -> name -> m ()`
+  * new: `whenDefined :: (MonadDOM m, ToJSString name) => CustomElementRegistry -> name -> m JSVal`
+* `JSDOM.SubtleCrypto.wrapKey`
+  * old: `wrapKey :: (MonadDOM m, ToJSString format, ToJSString wrapAlgorithm) => SubtleCrypto -> format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m JSVal`
+  * new: `wrapKey :: (MonadDOM m, IsAlgorithmIdentifier wrapAlgorithm) => SubtleCrypto -> KeyFormat -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ArrayBuffer`
+* `JSDOM.SubtleCrypto.wrapKey_`
+  * old: `wrapKey_ :: (MonadDOM m, ToJSString format, ToJSString wrapAlgorithm) => SubtleCrypto -> format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ()`
+  * new: `wrapKey_ :: (MonadDOM m, IsAlgorithmIdentifier wrapAlgorithm) => SubtleCrypto -> KeyFormat -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ()`
+
+</details>
+
+### Moved (name now defined in a different module)
+
+<details><summary>831 names</summary>
+
+* `ACTIVE_UNIFORM_BLOCKS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `ALREADY_SIGNALED`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `ANY_SAMPLES_PASSED`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `ANY_SAMPLES_PASSED_CONSERVATIVE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COLOR`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COLOR_ATTACHMENT0_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `COLOR_ATTACHMENT1`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COLOR_ATTACHMENT10`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COLOR_ATTACHMENT10_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `COLOR_ATTACHMENT11`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COLOR_ATTACHMENT11_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `COLOR_ATTACHMENT12`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COLOR_ATTACHMENT12_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `COLOR_ATTACHMENT13`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COLOR_ATTACHMENT13_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `COLOR_ATTACHMENT14`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COLOR_ATTACHMENT14_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `COLOR_ATTACHMENT15`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COLOR_ATTACHMENT15_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `COLOR_ATTACHMENT1_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `COLOR_ATTACHMENT2`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COLOR_ATTACHMENT2_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `COLOR_ATTACHMENT3`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COLOR_ATTACHMENT3_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `COLOR_ATTACHMENT4`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COLOR_ATTACHMENT4_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `COLOR_ATTACHMENT5`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COLOR_ATTACHMENT5_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `COLOR_ATTACHMENT6`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COLOR_ATTACHMENT6_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `COLOR_ATTACHMENT7`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COLOR_ATTACHMENT7_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `COLOR_ATTACHMENT8`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COLOR_ATTACHMENT8_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `COLOR_ATTACHMENT9`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COLOR_ATTACHMENT9_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `COMPARE_REF_TO_TEXTURE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COMPRESSED_R11_EAC`: JSDOM.WebGL2RenderingContext → JSDOM.WEBGL_compressed_texture_etc
+* `COMPRESSED_RG11_EAC`: JSDOM.WebGL2RenderingContext → JSDOM.WEBGL_compressed_texture_etc
+* `COMPRESSED_RGB8_ETC2`: JSDOM.WebGL2RenderingContext → JSDOM.WEBGL_compressed_texture_etc
+* `COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2`: JSDOM.WebGL2RenderingContext → JSDOM.WEBGL_compressed_texture_etc
+* `COMPRESSED_RGBA8_ETC2_EAC`: JSDOM.WebGL2RenderingContext → JSDOM.WEBGL_compressed_texture_etc
+* `COMPRESSED_RGBA_PVRTC_2BPPV1_IMG`: JSDOM.WebGLCompressedTexturePVRTC → JSDOM.WEBGL_compressed_texture_pvrtc
+* `COMPRESSED_RGBA_PVRTC_4BPPV1_IMG`: JSDOM.WebGLCompressedTexturePVRTC → JSDOM.WEBGL_compressed_texture_pvrtc
+* `COMPRESSED_RGBA_S3TC_DXT1_EXT`: JSDOM.WebGLCompressedTextureS3TC → JSDOM.WEBGL_compressed_texture_s3tc
+* `COMPRESSED_RGBA_S3TC_DXT3_EXT`: JSDOM.WebGLCompressedTextureS3TC → JSDOM.WEBGL_compressed_texture_s3tc
+* `COMPRESSED_RGBA_S3TC_DXT5_EXT`: JSDOM.WebGLCompressedTextureS3TC → JSDOM.WEBGL_compressed_texture_s3tc
+* `COMPRESSED_RGB_PVRTC_2BPPV1_IMG`: JSDOM.WebGLCompressedTexturePVRTC → JSDOM.WEBGL_compressed_texture_pvrtc
+* `COMPRESSED_RGB_PVRTC_4BPPV1_IMG`: JSDOM.WebGLCompressedTexturePVRTC → JSDOM.WEBGL_compressed_texture_pvrtc
+* `COMPRESSED_RGB_S3TC_DXT1_EXT`: JSDOM.WebGLCompressedTextureS3TC → JSDOM.WEBGL_compressed_texture_s3tc
+* `COMPRESSED_SIGNED_R11_EAC`: JSDOM.WebGL2RenderingContext → JSDOM.WEBGL_compressed_texture_etc
+* `COMPRESSED_SIGNED_RG11_EAC`: JSDOM.WebGL2RenderingContext → JSDOM.WEBGL_compressed_texture_etc
+* `COMPRESSED_SRGB8_ALPHA8_ETC2_EAC`: JSDOM.WebGL2RenderingContext → JSDOM.WEBGL_compressed_texture_etc
+* `COMPRESSED_SRGB8_ETC2`: JSDOM.WebGL2RenderingContext → JSDOM.WEBGL_compressed_texture_etc
+* `COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2`: JSDOM.WebGL2RenderingContext → JSDOM.WEBGL_compressed_texture_etc
+* `CONDITION_SATISFIED`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COPY_READ_BUFFER`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COPY_READ_BUFFER_BINDING`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COPY_WRITE_BUFFER`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `COPY_WRITE_BUFFER_BINDING`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `CURRENT_QUERY`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DEPTH`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DEPTH24_STENCIL8`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DEPTH32F_STENCIL8`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DEPTH_COMPONENT24`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DEPTH_COMPONENT32F`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_BUFFER0`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_BUFFER0_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `DRAW_BUFFER1`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_BUFFER10`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_BUFFER10_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `DRAW_BUFFER11`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_BUFFER11_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `DRAW_BUFFER12`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_BUFFER12_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `DRAW_BUFFER13`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_BUFFER13_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `DRAW_BUFFER14`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_BUFFER14_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `DRAW_BUFFER15`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_BUFFER15_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `DRAW_BUFFER1_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `DRAW_BUFFER2`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_BUFFER2_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `DRAW_BUFFER3`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_BUFFER3_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `DRAW_BUFFER4`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_BUFFER4_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `DRAW_BUFFER5`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_BUFFER5_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `DRAW_BUFFER6`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_BUFFER6_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `DRAW_BUFFER7`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_BUFFER7_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `DRAW_BUFFER8`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_BUFFER8_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `DRAW_BUFFER9`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_BUFFER9_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `DRAW_FRAMEBUFFER`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DRAW_FRAMEBUFFER_BINDING`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DYNAMIC_COPY`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `DYNAMIC_READ`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FLOAT_32_UNSIGNED_INT_24_8_REV`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FLOAT_MAT2x3`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FLOAT_MAT2x4`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FLOAT_MAT3x2`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FLOAT_MAT3x4`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FLOAT_MAT4x2`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FLOAT_MAT4x3`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FRAGMENT_SHADER_DERIVATIVE_HINT`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FRAGMENT_SHADER_DERIVATIVE_HINT_OES`: JSDOM.OESStandardDerivatives → JSDOM.OES_standard_derivatives
+* `FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FRAMEBUFFER_ATTACHMENT_BLUE_SIZE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT`: JSDOM.EXTsRGB → JSDOM.EXT_sRGB
+* `FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FRAMEBUFFER_ATTACHMENT_GREEN_SIZE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FRAMEBUFFER_ATTACHMENT_RED_SIZE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FRAMEBUFFER_DEFAULT`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `FRAMEBUFFER_INCOMPLETE_MULTISAMPLE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `HALF_FLOAT`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `HALF_FLOAT_OES`: JSDOM.OESTextureHalfFloat → JSDOM.OES_texture_half_float
+* `INTERLEAVED_ATTRIBS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `INT_2_10_10_10_REV`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `INT_SAMPLER_2D`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `INT_SAMPLER_2D_ARRAY`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `INT_SAMPLER_3D`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `INT_SAMPLER_CUBE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `INVALID_INDEX`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_3D_TEXTURE_SIZE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_ARRAY_TEXTURE_LAYERS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_COLOR_ATTACHMENTS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_COLOR_ATTACHMENTS_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_COMBINED_UNIFORM_BLOCKS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_DRAW_BUFFERS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_DRAW_BUFFERS_WEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `MAX_ELEMENTS_INDICES`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_ELEMENTS_VERTICES`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_ELEMENT_INDEX`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_EXT`: JSDOM.EXTBlendMinMax → JSDOM.EXT_blend_minmax
+* `MAX_FRAGMENT_INPUT_COMPONENTS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_FRAGMENT_UNIFORM_BLOCKS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_FRAGMENT_UNIFORM_COMPONENTS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_PROGRAM_TEXEL_OFFSET`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_SAMPLES`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_SERVER_WAIT_TIMEOUT`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_TEXTURE_LOD_BIAS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_TEXTURE_MAX_ANISOTROPY_EXT`: JSDOM.EXTTextureFilterAnisotropic → JSDOM.EXT_texture_filter_anisotropic
+* `MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_UNIFORM_BLOCK_SIZE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_UNIFORM_BUFFER_BINDINGS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_VARYING_COMPONENTS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_VERTEX_OUTPUT_COMPONENTS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_VERTEX_UNIFORM_BLOCKS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MAX_VERTEX_UNIFORM_COMPONENTS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MIN`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `MIN_EXT`: JSDOM.EXTBlendMinMax → JSDOM.EXT_blend_minmax
+* `MIN_PROGRAM_TEXEL_OFFSET`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `OBJECT_TYPE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `PACK_ROW_LENGTH`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `PACK_SKIP_PIXELS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `PACK_SKIP_ROWS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `PERMISSION_DENIED`: JSDOM.PositionError → JSDOM.GeolocationPositionError
+* `PIXEL_PACK_BUFFER`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `PIXEL_PACK_BUFFER_BINDING`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `PIXEL_UNPACK_BUFFER`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `PIXEL_UNPACK_BUFFER_BINDING`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `POSITION_UNAVAILABLE`: JSDOM.PositionError → JSDOM.GeolocationPositionError
+* `PositionErrorCode (type)`: JSDOM.PositionError → JSDOM.GeolocationPositionError
+* `PositionException`: JSDOM.PositionError → JSDOM.GeolocationPositionError
+* `PositionException (type)`: JSDOM.PositionError → JSDOM.GeolocationPositionError
+* `PositionPermissionDenied`: JSDOM.PositionError → JSDOM.GeolocationPositionError
+* `PositionTimeout`: JSDOM.PositionError → JSDOM.GeolocationPositionError
+* `PositionUnavailable`: JSDOM.PositionError → JSDOM.GeolocationPositionError
+* `QUERY_RESULT`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `QUERY_RESULT_AVAILABLE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `R11F_G11F_B10F`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `R16F`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `R16I`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `R16UI`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `R32F`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `R32I`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `R32UI`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `R8`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `R8I`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `R8UI`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `R8_SNORM`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RASTERIZER_DISCARD`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `READ_BUFFER`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `READ_FRAMEBUFFER`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `READ_FRAMEBUFFER_BINDING`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RED`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RED_INTEGER`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RENDERBUFFER_SAMPLES`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RG`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RG16F`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RG16I`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RG16UI`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RG32F`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RG32I`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RG32UI`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RG8`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RG8I`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RG8UI`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RG8_SNORM`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGB10_A2`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGB10_A2UI`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGB16F`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGB16I`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGB16UI`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGB32F`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGB32I`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGB32UI`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGB8`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGB8I`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGB8UI`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGB8_SNORM`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGB9_E5`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGBA16F`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGBA16I`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGBA16UI`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGBA32F`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGBA32I`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGBA32UI`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGBA8`: JSDOM.WebGL2RenderingContext → JSDOM.WebGLRenderingContextBase
+* `RGBA8I`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGBA8UI`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGBA8_SNORM`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGBA_INTEGER`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RGB_INTEGER`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `RG_INTEGER`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SAMPLER_2D_ARRAY`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SAMPLER_2D_ARRAY_SHADOW`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SAMPLER_2D_SHADOW`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SAMPLER_3D`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SAMPLER_BINDING`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SAMPLER_CUBE_SHADOW`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SEPARATE_ATTRIBS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SIGNALED`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SIGNED_NORMALIZED`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SRGB`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SRGB8`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SRGB8_ALPHA8`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SRGB8_ALPHA8_EXT`: JSDOM.EXTsRGB → JSDOM.EXT_sRGB
+* `SRGB_ALPHA_EXT`: JSDOM.EXTsRGB → JSDOM.EXT_sRGB
+* `SRGB_EXT`: JSDOM.EXTsRGB → JSDOM.EXT_sRGB
+* `STATIC_COPY`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `STATIC_READ`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `STENCIL`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `STREAM_COPY`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `STREAM_READ`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SYNC_CONDITION`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SYNC_FENCE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SYNC_FLAGS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SYNC_FLUSH_COMMANDS_BIT`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SYNC_GPU_COMMANDS_COMPLETE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `SYNC_STATUS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TEXTURE_2D_ARRAY`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TEXTURE_3D`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TEXTURE_BASE_LEVEL`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TEXTURE_BINDING_2D_ARRAY`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TEXTURE_BINDING_3D`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TEXTURE_COMPARE_FUNC`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TEXTURE_COMPARE_MODE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TEXTURE_IMMUTABLE_FORMAT`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TEXTURE_IMMUTABLE_LEVELS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TEXTURE_MAX_ANISOTROPY_EXT`: JSDOM.EXTTextureFilterAnisotropic → JSDOM.EXT_texture_filter_anisotropic
+* `TEXTURE_MAX_LEVEL`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TEXTURE_MAX_LOD`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TEXTURE_MIN_LOD`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TEXTURE_WRAP_R`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TIMEOUT`: JSDOM.PositionError → JSDOM.GeolocationPositionError
+* `TIMEOUT_EXPIRED`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TIMEOUT_IGNORED`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TRANSFORM_FEEDBACK`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TRANSFORM_FEEDBACK_ACTIVE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TRANSFORM_FEEDBACK_BINDING`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TRANSFORM_FEEDBACK_BUFFER`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TRANSFORM_FEEDBACK_BUFFER_BINDING`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TRANSFORM_FEEDBACK_BUFFER_MODE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TRANSFORM_FEEDBACK_BUFFER_SIZE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TRANSFORM_FEEDBACK_BUFFER_START`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TRANSFORM_FEEDBACK_PAUSED`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `TRANSFORM_FEEDBACK_VARYINGS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_ARRAY_STRIDE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_BLOCK_ACTIVE_UNIFORMS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_BLOCK_BINDING`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_BLOCK_DATA_SIZE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_BLOCK_INDEX`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_BUFFER`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_BUFFER_BINDING`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_BUFFER_OFFSET_ALIGNMENT`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_BUFFER_SIZE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_BUFFER_START`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_IS_ROW_MAJOR`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_MATRIX_STRIDE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_OFFSET`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_SIZE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNIFORM_TYPE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNMASKED_RENDERER_WEBGL`: JSDOM.WebGLDebugRendererInfo → JSDOM.WEBGL_debug_renderer_info
+* `UNMASKED_VENDOR_WEBGL`: JSDOM.WebGLDebugRendererInfo → JSDOM.WEBGL_debug_renderer_info
+* `UNPACK_IMAGE_HEIGHT`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNPACK_ROW_LENGTH`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNPACK_SKIP_IMAGES`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNPACK_SKIP_PIXELS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNPACK_SKIP_ROWS`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNSIGNALED`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNSIGNED_INT_10F_11F_11F_REV`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNSIGNED_INT_24_8`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNSIGNED_INT_24_8_WEBGL`: JSDOM.WebGLDepthTexture → JSDOM.WEBGL_depth_texture
+* `UNSIGNED_INT_2_10_10_10_REV`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNSIGNED_INT_5_9_9_9_REV`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNSIGNED_INT_SAMPLER_2D`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNSIGNED_INT_SAMPLER_2D_ARRAY`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNSIGNED_INT_SAMPLER_3D`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNSIGNED_INT_SAMPLER_CUBE`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNSIGNED_INT_VEC2`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNSIGNED_INT_VEC3`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNSIGNED_INT_VEC4`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `UNSIGNED_NORMALIZED`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `VERTEX_ARRAY_BINDING`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `VERTEX_ARRAY_BINDING_OES`: JSDOM.OESVertexArrayObject → JSDOM.OES_vertex_array_object
+* `VERTEX_ATTRIB_ARRAY_DIVISOR`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE`: JSDOM.ANGLEInstancedArrays, JSDOM.WebGL2RenderingContext → JSDOM.ANGLE_instanced_arrays
+* `VERTEX_ATTRIB_ARRAY_INTEGER`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `WAIT_FAILED`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `abort_`: JSDOM.WritableStream → JSDOM.AbortSignal
+* `beforeinput`: JSDOM.DocumentAndElementEventHandlers → JSDOM.GlobalEventHandlers
+* `beginPath`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawPath
+* `beginQuery`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `beginTransformFeedback`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `bindBufferBase`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `bindBufferRange`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `bindSampler`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `bindTransformFeedback`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `bindVertexArray`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `bindVertexArrayOES`: JSDOM.OESVertexArrayObject → JSDOM.OES_vertex_array_object
+* `blitFramebuffer`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `bufferData`: JSDOM.WebGL2RenderingContext, JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `bufferDataPtr`: JSDOM.WebGL2RenderingContext, JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads
+* `bufferDataView`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextOverloads
+* `bufferSubData`: JSDOM.WebGL2RenderingContext, JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `cancelAnimationFrame`: JSDOM.Window → JSDOM.AnimationFrameProvider
+* `clearBufferfi`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `clearBufferfv`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `clearBufferiv`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `clearBufferuiv`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `clearRect`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasRect
+* `clientWaitSync`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `clientWaitSync_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `clip`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawPath
+* `clipPath`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawPath
+* `close_`: JSDOM.WritableStream → JSDOM.MIDIPort
+* `commit`: JSDOM.CanvasRenderingContext2D, JSDOM.WebGPUCommandBuffer → JSDOM.IDBTransaction
+* `compressedTexImage2D`: JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `compressedTexImage3D`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `compressedTexSubImage2D`: JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `compressedTexSubImage3D`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `copy`: JSDOM.DocumentAndElementEventHandlers → JSDOM.GlobalEventHandlers
+* `copyBufferSubData`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `copyTexSubImage3D`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `createAnalyser`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createAnalyser_`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createBiquadFilter`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createBiquadFilter_`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createBufferSource`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createBufferSource_`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createChannelMerger`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createChannelMerger_`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createChannelSplitter`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createChannelSplitter_`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createConvolver`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createConvolver_`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createDelay`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createDelay_`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createDynamicsCompressor`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createDynamicsCompressor_`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createExpression`: JSDOM.Document, JSDOM.XPathEvaluator → JSDOM.XPathEvaluatorBase
+* `createExpression_`: JSDOM.Document, JSDOM.XPathEvaluator → JSDOM.XPathEvaluatorBase
+* `createGain`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createGain_`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createImageData`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasImageData
+* `createImageData_`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasImageData
+* `createLinearGradient`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasFillStrokeStyles
+* `createLinearGradient_`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasFillStrokeStyles
+* `createNSResolver`: JSDOM.Document, JSDOM.XPathEvaluator → JSDOM.XPathEvaluatorBase
+* `createNSResolver_`: JSDOM.Document, JSDOM.XPathEvaluator → JSDOM.XPathEvaluatorBase
+* `createOscillator`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createOscillator_`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createPanner`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createPanner_`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createPattern`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasFillStrokeStyles
+* `createPatternUnchecked`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasFillStrokeStyles
+* `createPatternUnsafe`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasFillStrokeStyles
+* `createPattern_`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasFillStrokeStyles
+* `createPeriodicWave`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createPeriodicWave_`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createQuery`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `createQuery_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `createRadialGradient`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasFillStrokeStyles
+* `createRadialGradient_`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasFillStrokeStyles
+* `createSampler`: JSDOM.WebGL2RenderingContext → JSDOM.GPUDevice, JSDOM.WebGL2RenderingContextBase
+* `createSampler_`: JSDOM.WebGL2RenderingContext → JSDOM.GPUDevice, JSDOM.WebGL2RenderingContextBase
+* `createScriptProcessor`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createScriptProcessor_`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createTransformFeedback`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `createTransformFeedback_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `createVertexArray`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `createVertexArrayOES`: JSDOM.OESVertexArrayObject → JSDOM.OES_vertex_array_object
+* `createVertexArrayOES_`: JSDOM.OESVertexArrayObject → JSDOM.OES_vertex_array_object
+* `createVertexArray_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `createWaveShaper`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `createWaveShaper_`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `cut`: JSDOM.DocumentAndElementEventHandlers → JSDOM.GlobalEventHandlers
+* `decodeAudioData`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `deleteQuery`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `deleteSampler`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `deleteSync`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `deleteTransformFeedback`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `deleteVertexArray`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `deleteVertexArrayOES`: JSDOM.OESVertexArrayObject → JSDOM.OES_vertex_array_object
+* `drawArraysInstanced`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `drawArraysInstancedANGLE`: JSDOM.ANGLEInstancedArrays → JSDOM.ANGLE_instanced_arrays
+* `drawBuffers`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `drawBuffersWEBGL`: JSDOM.WebGLDrawBuffers → JSDOM.WEBGL_draw_buffers
+* `drawElementsInstanced`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `drawElementsInstancedANGLE`: JSDOM.ANGLEInstancedArrays → JSDOM.ANGLE_instanced_arrays
+* `drawFocusIfNeeded`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasUserInterface
+* `drawFocusIfNeededPath`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasUserInterface
+* `drawImage`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawImage
+* `drawImagePart`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawImage
+* `drawImageScaled`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawImage
+* `drawRangeElements`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `elementFromPoint`: JSDOM.DocumentOrShadowRoot → JSDOM.Document
+* `elementFromPointUnchecked`: JSDOM.DocumentOrShadowRoot → JSDOM.Document
+* `elementFromPointUnsafe`: JSDOM.DocumentOrShadowRoot → JSDOM.Document
+* `elementFromPoint_`: JSDOM.DocumentOrShadowRoot → JSDOM.Document
+* `endQuery`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `endTransformFeedback`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `fenceSync`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `fenceSync_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `fetch`: JSDOM.Window, JSDOM.WorkerGlobalScope → JSDOM.ServiceWorkerGlobalScope, JSDOM.WindowOrWorkerGlobalScope
+* `fetch_`: JSDOM.Window, JSDOM.WorkerGlobalScope → JSDOM.WindowOrWorkerGlobalScope
+* `fill`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawPath
+* `fillPath`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawPath
+* `fillRect`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasRect
+* `fillText`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasText
+* `flipX`: JSDOM.SVGMatrix → JSDOM.DOMMatrixReadOnly
+* `flipX_`: JSDOM.SVGMatrix → JSDOM.DOMMatrixReadOnly
+* `flipY`: JSDOM.SVGMatrix → JSDOM.DOMMatrixReadOnly
+* `flipY_`: JSDOM.SVGMatrix → JSDOM.DOMMatrixReadOnly
+* `formData`: JSDOM.Response → JSDOM.Body
+* `formData_`: JSDOM.Response → JSDOM.Body
+* `framebufferTextureLayer`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getA`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit, JSDOM.DOMMatrixReadOnly, JSDOM.GPUColorDict
+* `getAbsoluteUnchecked`: JSDOM.DeviceOrientationEvent → JSDOM.DeviceOrientationEventInit
+* `getAbsoluteUnsafe`: JSDOM.DeviceOrientationEvent → JSDOM.DeviceOrientationEventInit
+* `getAccuracy`: JSDOM.Coordinates → JSDOM.GeolocationCoordinates
+* `getActiveUniformBlockName`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getActiveUniformBlockName_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getActiveUniformBlockParameter`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getActiveUniformBlockParameter_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getActiveUniforms`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getActiveUniforms_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getAlinkColor`: JSDOM.HTMLDocument → JSDOM.Document
+* `getAltitude`: JSDOM.Coordinates → JSDOM.GeolocationCoordinates
+* `getAltitudeAccuracy`: JSDOM.Coordinates → JSDOM.GeolocationCoordinates
+* `getAltitudeAccuracyUnchecked`: JSDOM.Coordinates → JSDOM.GeolocationCoordinates
+* `getAltitudeAccuracyUnsafe`: JSDOM.Coordinates → JSDOM.GeolocationCoordinates
+* `getAltitudeUnchecked`: JSDOM.Coordinates → JSDOM.GeolocationCoordinates
+* `getAltitudeUnsafe`: JSDOM.Coordinates → JSDOM.GeolocationCoordinates
+* `getAnimatedPoints`: JSDOM.SVGPolygonElement, JSDOM.SVGPolylineElement → JSDOM.SVGAnimatedPoints
+* `getAssignedSlot`: JSDOM.Slotable → JSDOM.Slottable
+* `getAssignedSlotUnchecked`: JSDOM.Slotable → JSDOM.Slottable
+* `getAssignedSlotUnsafe`: JSDOM.Slotable → JSDOM.Slottable
+* `getAt`: JSDOM.HTMLFormElement → JSDOM.FileSystemReadWriteOptions
+* `getAtUnchecked`: JSDOM.HTMLFormElement → JSDOM.FileSystemReadWriteOptions
+* `getAtUnsafe`: JSDOM.HTMLFormElement → JSDOM.FileSystemReadWriteOptions
+* `getAutofocus`: JSDOM.HTMLButtonElement, JSDOM.HTMLInputElement, JSDOM.HTMLKeygenElement, JSDOM.HTMLSelectElement, JSDOM.HTMLTextAreaElement → JSDOM.HTMLOrSVGOrMathMLElement
+* `getB`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit, JSDOM.DOMMatrixReadOnly, JSDOM.GPUColorDict
+* `getBufferSubData`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getC`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit, JSDOM.DOMMatrixReadOnly
+* `getCapture`: JSDOM.HTMLInputElement → JSDOM.EventListenerOptions
+* `getChallenge`: JSDOM.HTMLKeygenElement → JSDOM.PublicKeyCredentialCreationOptions, JSDOM.PublicKeyCredentialCreationOptionsJSON, JSDOM.PublicKeyCredentialRequestOptions, JSDOM.PublicKeyCredentialRequestOptionsJSON
+* `getCollapsed`: JSDOM.Range, JSDOM.StaticRange → JSDOM.AbstractRange
+* `getColorAttachments`: JSDOM.WebGPURenderPassDescriptor, JSDOM.WebGPURenderPipelineDescriptor → JSDOM.GPURenderPassDescriptor
+* `getCompleted`: JSDOM.WebGPUCommandBuffer → JSDOM.ImageDecoder
+* `getConditionText`: JSDOM.CSSSupportsRule → JSDOM.CSSConditionRule
+* `getContentEditable`: JSDOM.HTMLElement → JSDOM.ElementContentEditable
+* `getController`: JSDOM.HTMLMediaElement, JSDOM.ReadableStreamSource → JSDOM.DisplayMediaStreamOptions, JSDOM.ServiceWorkerContainer
+* `getControllerUnchecked`: JSDOM.HTMLMediaElement → JSDOM.DisplayMediaStreamOptions, JSDOM.ServiceWorkerContainer
+* `getControllerUnsafe`: JSDOM.HTMLMediaElement → JSDOM.DisplayMediaStreamOptions, JSDOM.ServiceWorkerContainer
+* `getCookieEnabled`: JSDOM.Navigator → JSDOM.NavigatorCookies
+* `getD`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit, JSDOM.DOMMatrixReadOnly, JSDOM.JsonWebKey, JSDOM.RsaOtherPrimesInfo
+* `getDataset`: JSDOM.HTMLElement, JSDOM.SVGElement → JSDOM.HTMLOrSVGOrMathMLElement
+* `getDepthWriteEnabled`: JSDOM.WebGPUDepthStencilDescriptor → JSDOM.GPUDepthStencilState
+* `getE`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit, JSDOM.DOMMatrixReadOnly, JSDOM.JsonWebKey
+* `getEndContainer`: JSDOM.Range, JSDOM.StaticRange → JSDOM.AbstractRange, JSDOM.StaticRangeInit
+* `getEndOffset`: JSDOM.Range, JSDOM.StaticRange → JSDOM.AbstractRange, JSDOM.StaticRangeInit, JSDOM.ViewTimeline
+* `getExtensionsUnchecked`: JSDOM.WebSocket → JSDOM.PublicKeyCredentialCreationOptions, JSDOM.PublicKeyCredentialCreationOptionsJSON, JSDOM.PublicKeyCredentialRequestOptions, JSDOM.PublicKeyCredentialRequestOptionsJSON
+* `getExtensionsUnsafe`: JSDOM.WebSocket → JSDOM.PublicKeyCredentialCreationOptions, JSDOM.PublicKeyCredentialCreationOptionsJSON, JSDOM.PublicKeyCredentialRequestOptions, JSDOM.PublicKeyCredentialRequestOptionsJSON
+* `getF`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit, JSDOM.DOMMatrixReadOnly
+* `getFatal`: JSDOM.TextDecoder → JSDOM.TextDecoderCommon, JSDOM.TextDecoderOptions
+* `getFgColor`: JSDOM.HTMLDocument → JSDOM.Document
+* `getFile`: JSDOM.HTMLAttachmentElement → JSDOM.FileSystemDirectoryEntry, JSDOM.FileSystemFileHandle
+* `getFillStyle`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasFillStrokeStyles
+* `getFont`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasTextDrawingStyles
+* `getFonts`: JSDOM.Document → JSDOM.FontFaceSource
+* `getFormat`: JSDOM.SVGAltGlyphElement, JSDOM.SVGGlyphRefElement → JSDOM.AacEncoderConfig, JSDOM.AudioData, JSDOM.AudioDataCopyToOptions, JSDOM.AudioDataInit, JSDOM.AvcEncoderConfig, JSDOM.GPUCanvasConfiguration, JSDOM.GPUColorTargetState, JSDOM.GPUDepthStencilState, JSDOM.GPUStorageTextureBindingLayout, JSDOM.GPUTexture, JSDOM.GPUTextureDescriptor, JSDOM.GPUTextureViewDescriptor, JSDOM.GPUVertexAttribute, JSDOM.HevcEncoderConfig, JSDOM.OpusEncoderConfig, JSDOM.VideoFrame, JSDOM.VideoFrameBufferInit, JSDOM.VideoFrameCopyToOptions
+* `getFragDataLocation`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getFragDataLocation_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getGamepadUnchecked`: JSDOM.GamepadEvent → JSDOM.GamepadEventInit
+* `getGamepadUnsafe`: JSDOM.GamepadEvent → JSDOM.GamepadEventInit
+* `getGlobalAlpha`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasCompositing
+* `getGlobalCompositeOperation`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasCompositing
+* `getHeading`: JSDOM.Coordinates → JSDOM.GeolocationCoordinates
+* `getHeadingUnchecked`: JSDOM.Coordinates → JSDOM.GeolocationCoordinates
+* `getHeadingUnsafe`: JSDOM.Coordinates → JSDOM.GeolocationCoordinates
+* `getIconURL`: JSDOM.SiteBoundCredential → JSDOM.FederatedCredentialInit, JSDOM.PasswordCredentialData
+* `getIgnoreBOM`: JSDOM.TextDecoder → JSDOM.TextDecoderCommon, JSDOM.TextDecoderOptions
+* `getImageData`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasImageData
+* `getImageData_`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasImageData
+* `getImageSmoothingEnabled`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasImageSmoothing
+* `getImageSmoothingQuality`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasImageSmoothing
+* `getIndexedDB`: JSDOM.Window, JSDOM.WorkerGlobalScope → JSDOM.WindowOrWorkerGlobalScope
+* `getIndexedParameter`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getIndexedParameter_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getInternalformatParameter`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getInternalformatParameter_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getIntervalUnchecked`: JSDOM.DeviceMotionEvent → JSDOM.DeviceMotionEventInit
+* `getIntervalUnsafe`: JSDOM.DeviceMotionEvent → JSDOM.DeviceMotionEventInit
+* `getIsContentEditable`: JSDOM.HTMLElement → JSDOM.ElementContentEditable
+* `getKeyPathUnchecked`: JSDOM.IDBIndex, JSDOM.IDBObjectStore → JSDOM.IDBObjectStoreParameters
+* `getKeyPathUnsafe`: JSDOM.IDBIndex, JSDOM.IDBObjectStore → JSDOM.IDBObjectStoreParameters
+* `getLatitude`: JSDOM.Coordinates → JSDOM.GeolocationCoordinates
+* `getLayerX`: JSDOM.UIEvent → JSDOM.MouseEvent
+* `getLayerY`: JSDOM.UIEvent → JSDOM.MouseEvent
+* `getLineCap`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasPathDrawingStyles
+* `getLineDash`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasPathDrawingStyles
+* `getLineDashOffset`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasPathDrawingStyles
+* `getLineDash_`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasPathDrawingStyles
+* `getLineJoin`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasPathDrawingStyles
+* `getLineWidth`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasPathDrawingStyles
+* `getLinkColor`: JSDOM.HTMLDocument → JSDOM.Document
+* `getListener`: JSDOM.AudioContext → JSDOM.BaseAudioContext
+* `getLocalStorage`: JSDOM.Window → JSDOM.WindowLocalStorage
+* `getLongitude`: JSDOM.Coordinates → JSDOM.GeolocationCoordinates
+* `getM11`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit, JSDOM.DOMMatrixReadOnly
+* `getM12`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit, JSDOM.DOMMatrixReadOnly
+* `getM13`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit, JSDOM.DOMMatrixReadOnly
+* `getM14`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit, JSDOM.DOMMatrixReadOnly
+* `getM21`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit, JSDOM.DOMMatrixReadOnly
+* `getM22`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit, JSDOM.DOMMatrixReadOnly
+* `getM23`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit, JSDOM.DOMMatrixReadOnly
+* `getM24`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit, JSDOM.DOMMatrixReadOnly
+* `getM31`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit, JSDOM.DOMMatrixReadOnly
+* `getM32`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit, JSDOM.DOMMatrixReadOnly
+* `getM33`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit, JSDOM.DOMMatrixReadOnly
+* `getM34`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit, JSDOM.DOMMatrixReadOnly
+* `getM41`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit, JSDOM.DOMMatrixReadOnly
+* `getM42`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit, JSDOM.DOMMatrixReadOnly
+* `getM43`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit, JSDOM.DOMMatrixReadOnly
+* `getM44`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit, JSDOM.DOMMatrixReadOnly
+* `getMimeTypes`: JSDOM.Navigator → JSDOM.NavigatorPlugins
+* `getMiterLimit`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasPathDrawingStyles
+* `getNonce`: JSDOM.HTMLLinkElement, JSDOM.HTMLScriptElement, JSDOM.HTMLStyleElement → JSDOM.HTMLOrSVGOrMathMLElement
+* `getOrientation`: JSDOM.Window → JSDOM.Screen
+* `getPayment`: JSDOM.ApplePayPaymentAuthorizedEvent → JSDOM.AuthenticationExtensionsClientInputs, JSDOM.AuthenticationExtensionsClientOutputs
+* `getPaymentMethod`: JSDOM.ApplePayPaymentMethodSelectedEvent → JSDOM.PaymentValidationErrors
+* `getPixelFormat`: JSDOM.WebGPURenderPipelineColorAttachmentDescriptor → JSDOM.ImageDataSettings
+* `getPlaybackState`: JSDOM.AudioBufferSourceNode, JSDOM.MediaController, JSDOM.OscillatorNode → JSDOM.MediaSession
+* `getPoints`: JSDOM.SVGPolygonElement, JSDOM.SVGPolylineElement → JSDOM.SVGAnimatedPoints
+* `getProtocolUnchecked`: JSDOM.WebSocket → JSDOM.FederatedCredentialInit, JSDOM.RTCDataChannelInit, JSDOM.RTCIceCandidate, JSDOM.URLPatternInit, JSDOM.URLPatternResult
+* `getProtocolUnsafe`: JSDOM.WebSocket → JSDOM.FederatedCredentialInit, JSDOM.RTCDataChannelInit, JSDOM.RTCIceCandidate, JSDOM.URLPatternInit, JSDOM.URLPatternResult
+* `getQuery`: JSDOM.WebGL2RenderingContext → JSDOM.CSSContainerCondition, JSDOM.IDBGetAllOptions, JSDOM.WebGL2RenderingContextBase
+* `getQueryParameter`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getQueryParameter_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getQuery_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getRange`: JSDOM.IDBIndex, JSDOM.IDBObjectStore → JSDOM.CSSCounterStyleRule
+* `getRequiredFeatures`: JSDOM.SVGTests → JSDOM.GPUDeviceDescriptor
+* `getSampleCount`: JSDOM.WebGPUTextureDescriptor → JSDOM.GPURenderPassLayout, JSDOM.GPUTexture, JSDOM.GPUTextureDescriptor
+* `getSamplerParameter`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getSamplerParameter_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getSessionStorage`: JSDOM.Window → JSDOM.WindowSessionStorage
+* `getShadowBlur`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasShadowStyles
+* `getShadowColor`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasShadowStyles
+* `getShadowOffsetX`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasShadowStyles
+* `getShadowOffsetY`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasShadowStyles
+* `getSheet`: JSDOM.HTMLLinkElement, JSDOM.HTMLStyleElement, JSDOM.ProcessingInstruction → JSDOM.LinkStyle
+* `getSheetUnchecked`: JSDOM.ProcessingInstruction → JSDOM.LinkStyle
+* `getSheetUnsafe`: JSDOM.ProcessingInstruction → JSDOM.LinkStyle
+* `getSpeed`: JSDOM.Coordinates → JSDOM.GeolocationCoordinates
+* `getSpeedUnchecked`: JSDOM.Coordinates → JSDOM.GeolocationCoordinates
+* `getSpeedUnsafe`: JSDOM.Coordinates → JSDOM.GeolocationCoordinates
+* `getStartContainer`: JSDOM.Range, JSDOM.StaticRange → JSDOM.AbstractRange, JSDOM.StaticRangeInit
+* `getStreamUnchecked`: JSDOM.MediaStreamEvent → JSDOM.TextDecodeOptions
+* `getStreamUnsafe`: JSDOM.MediaStreamEvent → JSDOM.TextDecodeOptions
+* `getStrokeStyle`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasFillStrokeStyles
+* `getStyleSheets`: JSDOM.Document → JSDOM.DocumentOrShadowRoot
+* `getSyncParameter`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getSyncParameter_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getTabIndex`: JSDOM.HTMLElement, JSDOM.SVGElement → JSDOM.HTMLOrSVGOrMathMLElement
+* `getTextAlign`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasTextDrawingStyles
+* `getTextBaseline`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasTextDrawingStyles
+* `getTexture`: JSDOM.WebGPUDrawable, JSDOM.WebGPURenderPassAttachmentDescriptor → JSDOM.GPUBindGroupLayoutEntry, JSDOM.GPUTexelCopyTextureInfo
+* `getTextureUnchecked`: JSDOM.WebGPURenderPassAttachmentDescriptor → JSDOM.GPUBindGroupLayoutEntry
+* `getTextureUnsafe`: JSDOM.WebGPURenderPassAttachmentDescriptor → JSDOM.GPUBindGroupLayoutEntry
+* `getTransformFeedbackVarying`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getTransformFeedbackVarying_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getTranslatedShaderSource`: JSDOM.WebGLDebugShaders → JSDOM.WEBGL_debug_shaders
+* `getTranslatedShaderSource_`: JSDOM.WebGLDebugShaders → JSDOM.WEBGL_debug_shaders
+* `getTypeUnchecked`: JSDOM.StyleSheet → JSDOM.BiquadFilterOptions, JSDOM.BlobPropertyBag, JSDOM.ClientQueryOptions, JSDOM.GPUBufferBindingLayout, JSDOM.GPUSamplerBindingLayout, JSDOM.ImageEncodeOptions, JSDOM.MediaImage, JSDOM.OscillatorOptions, JSDOM.PerformanceObserverInit, JSDOM.RTCIceCandidate, JSDOM.RTCLocalSessionDescriptionInit, JSDOM.RegistrationOptions, JSDOM.Report, JSDOM.WorkerAndParameters, JSDOM.WorkerOptions
+* `getTypeUnsafe`: JSDOM.StyleSheet → JSDOM.BiquadFilterOptions, JSDOM.BlobPropertyBag, JSDOM.ClientQueryOptions, JSDOM.GPUBufferBindingLayout, JSDOM.GPUSamplerBindingLayout, JSDOM.ImageEncodeOptions, JSDOM.MediaImage, JSDOM.OscillatorOptions, JSDOM.PerformanceObserverInit, JSDOM.RTCIceCandidate, JSDOM.RTCLocalSessionDescriptionInit, JSDOM.RegistrationOptions, JSDOM.Report, JSDOM.WorkerAndParameters, JSDOM.WorkerOptions
+* `getUniformBlockIndex`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getUniformBlockIndex_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getUniformIndices`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getUniformIndices_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `getUsage`: JSDOM.WebGPUTextureDescriptor → JSDOM.GPUBuffer, JSDOM.GPUBufferDescriptor, JSDOM.GPUCanvasConfiguration, JSDOM.GPUTexture, JSDOM.GPUTextureDescriptor, JSDOM.GPUTextureViewDescriptor, JSDOM.StorageEstimate
+* `getVideoPlaybackQuality`: JSDOM.HTMLMediaElement → JSDOM.HTMLVideoElement
+* `getVideoPlaybackQuality_`: JSDOM.HTMLMediaElement → JSDOM.HTMLVideoElement
+* `getVlinkColor`: JSDOM.HTMLDocument → JSDOM.Document
+* `getWebdriver`: JSDOM.Navigator → JSDOM.NavigatorAutomationInformation
+* `invalidateFramebuffer`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `invalidateSubFramebuffer`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `inverse`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrixReadOnly
+* `inverse_`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrixReadOnly
+* `isPointInPath`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawPath
+* `isPointInPathPath`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawPath
+* `isPointInPathPath_`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawPath
+* `isPointInPath_`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawPath
+* `isPointInStroke`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawPath, JSDOM.SVGGeometryElement
+* `isPointInStrokePath`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawPath
+* `isPointInStrokePath_`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawPath
+* `isPointInStroke_`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawPath, JSDOM.SVGGeometryElement
+* `isQuery`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `isQuery_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `isSampler`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `isSampler_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `isSync`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `isSync_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `isTransformFeedback`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `isTransformFeedback_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `isVertexArray`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `isVertexArrayOES`: JSDOM.OESVertexArrayObject → JSDOM.OES_vertex_array_object
+* `isVertexArrayOES_`: JSDOM.OESVertexArrayObject → JSDOM.OES_vertex_array_object
+* `isVertexArray_`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `javaEnabled`: JSDOM.Navigator → JSDOM.NavigatorPlugins
+* `javaEnabled_`: JSDOM.Navigator → JSDOM.NavigatorPlugins
+* `loseContext`: JSDOM.WebGLLoseContext → JSDOM.WEBGL_lose_context
+* `matrixTransform`: JSDOM.SVGPoint → JSDOM.DOMPointReadOnly
+* `matrixTransform_`: JSDOM.SVGPoint → JSDOM.DOMPointReadOnly
+* `measureText`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasText
+* `measureText_`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasText
+* `multiply`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrixReadOnly
+* `multiply_`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrixReadOnly
+* `paste`: JSDOM.DocumentAndElementEventHandlers → JSDOM.GlobalEventHandlers
+* `pauseTransformFeedback`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `positionErrorCode`: JSDOM.PositionError → JSDOM.GeolocationPositionError
+* `positionErrorMessage`: JSDOM.PositionError → JSDOM.GeolocationPositionError
+* `putImageData`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasImageData
+* `readBuffer`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `readPixels`: JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `registerProtocolHandler`: JSDOM.Navigator → JSDOM.NavigatorContentUtils
+* `rejectionhandled`: JSDOM.GlobalEventHandlers → JSDOM.WindowEventHandlers, JSDOM.WorkerGlobalScope
+* `renderbufferStorageMultisample`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `requestAnimationFrame`: JSDOM.Window → JSDOM.AnimationFrameProvider
+* `requestAnimationFrame_`: JSDOM.Window → JSDOM.AnimationFrameProvider
+* `resetTransform`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasTransform
+* `restore`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasState
+* `restoreContext`: JSDOM.WebGLLoseContext → JSDOM.WEBGL_lose_context
+* `resumeTransformFeedback`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `rotate`: JSDOM.CanvasRenderingContext2D, JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.CanvasTransform, JSDOM.DOMMatrixReadOnly
+* `rotateAxisAngle`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrixReadOnly
+* `rotateAxisAngle_`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrixReadOnly
+* `rotateFromVector`: JSDOM.SVGMatrix → JSDOM.DOMMatrixReadOnly
+* `rotateFromVector_`: JSDOM.SVGMatrix → JSDOM.DOMMatrixReadOnly
+* `rotate_`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrixReadOnly
+* `samplerParameterf`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `samplerParameteri`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `save`: JSDOM.CanvasRenderingContext2D, JSDOM.InspectorFrontendHost → JSDOM.CanvasState
+* `scale`: JSDOM.CanvasRenderingContext2D, JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.CanvasTransform, JSDOM.DOMMatrixReadOnly
+* `scaleNonUniform`: JSDOM.SVGMatrix → JSDOM.DOMMatrixReadOnly
+* `scaleNonUniform_`: JSDOM.SVGMatrix → JSDOM.DOMMatrixReadOnly
+* `scale_`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrixReadOnly
+* `selectStart`: JSDOM.Document, JSDOM.Element → JSDOM.GlobalEventHandlers
+* `selectionchange`: JSDOM.Document, JSDOM.HTMLBodyElement → JSDOM.GlobalEventHandlers
+* `setA`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit, JSDOM.GPUColorDict
+* `setAlinkColor`: JSDOM.HTMLDocument → JSDOM.Document
+* `setAlpha`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasRenderingContext2DSettings, JSDOM.DeviceMotionEventRotationRateInit, JSDOM.DeviceOrientationEventInit, JSDOM.GPUBlendState, JSDOM.VideoEncoderConfig, JSDOM.VideoFrameInit, JSDOM.WebGLContextAttributes
+* `setAngle`: JSDOM.SVGPathSegArcAbs, JSDOM.SVGPathSegArcRel → JSDOM.CSSNumericType, JSDOM.CSSRotate
+* `setAutofocus`: JSDOM.HTMLButtonElement, JSDOM.HTMLInputElement, JSDOM.HTMLKeygenElement, JSDOM.HTMLSelectElement, JSDOM.HTMLTextAreaElement → JSDOM.HTMLOrSVGOrMathMLElement
+* `setB`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit, JSDOM.GPUColorDict
+* `setC`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit
+* `setCapture`: JSDOM.HTMLInputElement → JSDOM.EventListenerOptions
+* `setChallenge`: JSDOM.HTMLKeygenElement → JSDOM.PublicKeyCredentialCreationOptions, JSDOM.PublicKeyCredentialCreationOptionsJSON, JSDOM.PublicKeyCredentialRequestOptions, JSDOM.PublicKeyCredentialRequestOptionsJSON
+* `setContentEditable`: JSDOM.HTMLElement → JSDOM.ElementContentEditable
+* `setController`: JSDOM.HTMLMediaElement → JSDOM.DisplayMediaStreamOptions
+* `setD`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit, JSDOM.JsonWebKey, JSDOM.RsaOtherPrimesInfo
+* `setDepthWriteEnabled`: JSDOM.WebGPUDepthStencilDescriptor → JSDOM.GPUDepthStencilState
+* `setE`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit, JSDOM.JsonWebKey
+* `setF`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit
+* `setFgColor`: JSDOM.HTMLDocument → JSDOM.Document
+* `setFillStyle`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasFillStrokeStyles
+* `setFont`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasTextDrawingStyles
+* `setFormat`: JSDOM.SVGAltGlyphElement, JSDOM.SVGGlyphRefElement → JSDOM.AacEncoderConfig, JSDOM.AudioDataCopyToOptions, JSDOM.AudioDataInit, JSDOM.AvcEncoderConfig, JSDOM.GPUCanvasConfiguration, JSDOM.GPUColorTargetState, JSDOM.GPUDepthStencilState, JSDOM.GPUStorageTextureBindingLayout, JSDOM.GPUTextureDescriptor, JSDOM.GPUTextureViewDescriptor, JSDOM.GPUVertexAttribute, JSDOM.HevcEncoderConfig, JSDOM.OpusEncoderConfig, JSDOM.VideoFrameBufferInit, JSDOM.VideoFrameCopyToOptions
+* `setGain`: JSDOM.AudioBuffer → JSDOM.BiquadFilterOptions, JSDOM.GainOptions
+* `setGlobalAlpha`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasCompositing
+* `setGlobalCompositeOperation`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasCompositing
+* `setImageSmoothingEnabled`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasImageSmoothing
+* `setImageSmoothingQuality`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasImageSmoothing
+* `setLineCap`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasPathDrawingStyles
+* `setLineDash`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasPathDrawingStyles
+* `setLineDashOffset`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasPathDrawingStyles
+* `setLineJoin`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasPathDrawingStyles
+* `setLineWidth`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasPathDrawingStyles
+* `setLinkColor`: JSDOM.HTMLDocument → JSDOM.Document
+* `setLocation`: JSDOM.HTMLFrameElement → JSDOM.KeyboardEventInit
+* `setM11`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit
+* `setM12`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit
+* `setM13`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit
+* `setM14`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit
+* `setM21`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit
+* `setM22`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit
+* `setM23`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit
+* `setM24`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit
+* `setM31`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit
+* `setM32`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit
+* `setM33`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit
+* `setM34`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit
+* `setM41`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit
+* `setM42`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrix2DInit
+* `setM43`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit
+* `setM44`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix, JSDOM.DOMMatrixInit
+* `setMatrixValue`: JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrix
+* `setMessage`: JSDOM.ApplePayError → JSDOM.ErrorEventInit, JSDOM.MediaKeyMessageEventInit, JSDOM.SpeechRecognitionErrorEventInit
+* `setMiterLimit`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasPathDrawingStyles
+* `setNonce`: JSDOM.HTMLLinkElement, JSDOM.HTMLScriptElement, JSDOM.HTMLStyleElement → JSDOM.HTMLOrSVGOrMathMLElement
+* `setPixelFormat`: JSDOM.WebGPURenderPipelineColorAttachmentDescriptor → JSDOM.ImageDataSettings
+* `setSampleCount`: JSDOM.WebGPUTextureDescriptor → JSDOM.GPURenderPassLayout, JSDOM.GPUTextureDescriptor
+* `setShadowBlur`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasShadowStyles
+* `setShadowColor`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasShadowStyles
+* `setShadowOffsetX`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasShadowStyles
+* `setShadowOffsetY`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasShadowStyles
+* `setStrokeStyle`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasFillStrokeStyles
+* `setTabIndex`: JSDOM.HTMLElement, JSDOM.SVGElement → JSDOM.HTMLOrSVGOrMathMLElement
+* `setTag`: JSDOM.Notification → JSDOM.GetNotificationOptions, JSDOM.NotificationOptions
+* `setTextAlign`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasTextDrawingStyles
+* `setTextBaseline`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasTextDrawingStyles
+* `setTexture`: JSDOM.WebGPURenderPassAttachmentDescriptor → JSDOM.GPUBindGroupLayoutEntry, JSDOM.GPUTexelCopyTextureInfo
+* `setTransform`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasPattern, JSDOM.CanvasTransform, JSDOM.RTCRtpReceiver, JSDOM.RTCRtpSender
+* `setUsage`: JSDOM.WebGPUTextureDescriptor → JSDOM.GPUBufferDescriptor, JSDOM.GPUCanvasConfiguration, JSDOM.GPUTextureDescriptor, JSDOM.GPUTextureViewDescriptor, JSDOM.StorageEstimate
+* `setVertexBuffer`: JSDOM.WebGPURenderCommandEncoder → JSDOM.GPURenderCommandsMixin
+* `setVlinkColor`: JSDOM.HTMLDocument → JSDOM.Document
+* `show`: JSDOM.Notification → JSDOM.HTMLDialogElement, JSDOM.PaymentRequest
+* `skewX`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrixReadOnly
+* `skewX_`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrixReadOnly
+* `skewY`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrixReadOnly
+* `skewY_`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrixReadOnly
+* `startRendering`: JSDOM.AudioContext → JSDOM.OfflineAudioContext
+* `statechange`: JSDOM.AudioContext → JSDOM.BaseAudioContext, JSDOM.MIDIAccess, JSDOM.MIDIPort, JSDOM.RTCDtlsTransport, JSDOM.RTCIceTransport, JSDOM.RTCSctpTransport, JSDOM.ServiceWorker
+* `stroke`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawPath
+* `strokePath`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasDrawPath
+* `strokeRect`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasRect
+* `strokeText`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasText
+* `texImage2D`: JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `texImage3D`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `texStorage2D`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `texStorage3D`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `texSubImage2D`: JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `texSubImage3D`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `throwPositionException`: JSDOM.PositionError → JSDOM.GeolocationPositionError
+* `transaction'`: JSDOM.Database → JSDOM.IDBDatabase
+* `transform`: JSDOM.CanvasRenderingContext2D → JSDOM.CanvasTransform
+* `transformFeedbackVaryings`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `translate`: JSDOM.CanvasRenderingContext2D, JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.CanvasTransform, JSDOM.DOMMatrixReadOnly
+* `translate_`: JSDOM.SVGMatrix, JSDOM.WebKitCSSMatrix → JSDOM.DOMMatrixReadOnly
+* `unhandledrejection`: JSDOM.GlobalEventHandlers → JSDOM.WindowEventHandlers, JSDOM.WorkerGlobalScope
+* `uniform1fv`: JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `uniform1iv`: JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `uniform1ui`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `uniform1uiv`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `uniform2fv`: JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `uniform2iv`: JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `uniform2ui`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `uniform2uiv`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `uniform3fv`: JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `uniform3iv`: JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `uniform3ui`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `uniform3uiv`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `uniform4fv`: JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `uniform4iv`: JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `uniform4ui`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `uniform4uiv`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `uniformBlockBinding`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `uniformMatrix2fv`: JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `uniformMatrix2x3fv`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `uniformMatrix2x4fv`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `uniformMatrix3fv`: JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `uniformMatrix3x2fv`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `uniformMatrix3x4fv`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `uniformMatrix4fv`: JSDOM.WebGLRenderingContextBase → JSDOM.WebGL2RenderingContextOverloads, JSDOM.WebGLRenderingContextOverloads
+* `uniformMatrix4x2fv`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `uniformMatrix4x3fv`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `unregisterProtocolHandler`: JSDOM.Navigator → JSDOM.NavigatorContentUtils
+* `vertexAttribDivisor`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `vertexAttribDivisorANGLE`: JSDOM.ANGLEInstancedArrays → JSDOM.ANGLE_instanced_arrays
+* `vertexAttribI4i`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `vertexAttribI4iv`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `vertexAttribI4ui`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `vertexAttribI4uiv`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `vertexAttribIPointer`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `waitSync`: JSDOM.WebGL2RenderingContext → JSDOM.WebGL2RenderingContextBase
+* `webKitAnimationEnd`: JSDOM.Element, JSDOM.Window → JSDOM.GlobalEventHandlers
+* `webKitAnimationIteration`: JSDOM.Element, JSDOM.Window → JSDOM.GlobalEventHandlers
+* `webKitAnimationStart`: JSDOM.Element, JSDOM.Window → JSDOM.GlobalEventHandlers
+* `webKitTransitionEnd`: JSDOM.Element, JSDOM.Window → JSDOM.GlobalEventHandlers
+* `write`: JSDOM.HTMLDocument, JSDOM.WritableStream → JSDOM.Clipboard, JSDOM.Document, JSDOM.FileSystemSyncAccessHandle, JSDOM.FileSystemWritableFileStream, JSDOM.WritableStreamDefaultWriter
+* `write_`: JSDOM.WritableStream → JSDOM.FileSystemSyncAccessHandle
+* `writeln`: JSDOM.HTMLDocument → JSDOM.Document
+
+</details>
+
+### Removed Haskell names, by old module
+
+<details><summary>2743 names</summary>
+
+* `JSDOM.ApplePayError`: `getContactField`, `getContactFieldUnchecked`, `getContactFieldUnsafe`, `newApplePayError`, `setContactField`
+* `JSDOM.ApplePaySession`: `STATUS_FAILURE`, `STATUS_INVALID_BILLING_POSTAL_ADDRESS`, `STATUS_INVALID_SHIPPING_CONTACT`, `STATUS_INVALID_SHIPPING_POSTAL_ADDRESS`, `STATUS_PIN_INCORRECT`, `STATUS_PIN_LOCKOUT`, `STATUS_PIN_REQUIRED`, `STATUS_SUCCESS`, `begin`, `canMakePayments`, `canMakePaymentsWithActiveCard`, `canMakePaymentsWithActiveCard_`, `canMakePayments_`, `completeMerchantValidation`, `completePayment`, `completePaymentMethodSelection`, `completePaymentMethodSelectionUpdate`, `completePaymentResult`, `completeShippingContactSelection`, `completeShippingContactSelectionUpdate`, `completeShippingMethodSelection`, `completeShippingMethodSelectionUpdate`, `newApplePaySession`, `openPaymentSetup`, `openPaymentSetup_`, `paymentauthorized`, `paymentmethodselected`, `shippingcontactselected`, `shippingmethodselected`, `supportsVersion`, `supportsVersion_`, `validatemerchant`
+* `JSDOM.ApplePayShippingContactSelectedEvent`: `getShippingContact`
+* `JSDOM.ApplePayShippingMethodSelectedEvent`: `getShippingMethod`
+* `JSDOM.ApplePayValidateMerchantEvent`: `getValidationURL`
+* `JSDOM.ApplicationCache`: `CHECKING`, `DOWNLOADING`, `IDLE`, `OBSOLETE`, `UNCACHED`, `UPDATEREADY`, `cached`, `checking`, `downloading`, `noUpdate`, `obsolete`, `swapCache`, `updateReady`
+* `JSDOM.AudioBufferCallback`: `newAudioBufferCallback`, `newAudioBufferCallbackAsync`, `newAudioBufferCallbackSync`
+* `JSDOM.AudioContext`: `DecodeAudioError`, `DecodeAudioError (type)`, `createBufferFromArrayBuffer`, `createBufferFromArrayBuffer_`, `getActiveSourceCount`
+* `JSDOM.AudioListener`: `getDopplerFactor`, `getSpeedOfSound`, `setDopplerFactor`, `setSpeedOfSound`
+* `JSDOM.AudioParam`: `getUnits`
+* `JSDOM.AutocompleteErrorEvent`: `newAutocompleteErrorEvent`
+* `JSDOM.BeforeLoadEvent`: `newBeforeLoadEvent`
+* `JSDOM.CSSFontFaceLoadEvent`: `getFontface`, `getFontfaceUnchecked`, `getFontfaceUnsafe`, `newCSSFontFaceLoadEvent`
+* `JSDOM.CSSPrimitiveValue`: `CSS_ATTR`, `CSS_CM`, `CSS_COUNTER`, `CSS_DEG`, `CSS_DIMENSION`, `CSS_EMS`, `CSS_EXS`, `CSS_GRAD`, `CSS_HZ`, `CSS_IDENT`, `CSS_IN`, `CSS_KHZ`, `CSS_MM`, `CSS_MS`, `CSS_NUMBER`, `CSS_PC`, `CSS_PERCENTAGE`, `CSS_PT`, `CSS_PX`, `CSS_RAD`, `CSS_RECT`, `CSS_RGBCOLOR`, `CSS_S`, `CSS_STRING`, `CSS_UNKNOWN`, `CSS_URI`, `CSS_VH`, `CSS_VMAX`, `CSS_VMIN`, `CSS_VW`, `getCounterValue`, `getCounterValue_`, `getFloatValue`, `getFloatValue_`, `getPrimitiveType`, `getRGBColorValue`, `getRGBColorValue_`, `getRectValue`, `getRectValue_`, `getStringValue_`, `setFloatValue`, `setStringValue`
+* `JSDOM.CSSRule`: `UNKNOWN_RULE`, `WEBKIT_KEYFRAMES_RULE`, `WEBKIT_KEYFRAME_RULE`, `WEBKIT_REGION_RULE`, `WEBKIT_VIEWPORT_RULE`
+* `JSDOM.CSSStyleDeclaration`: `getPropertyCSSValue`, `getPropertyCSSValueUnchecked`, `getPropertyCSSValueUnsafe`, `getPropertyCSSValue_`, `getPropertyPriorityUnchecked`, `getPropertyPriorityUnsafe`, `getPropertyShorthand`, `getPropertyShorthandUnchecked`, `getPropertyShorthandUnsafe`, `getPropertyShorthand_`, `isPropertyImplicit`, `isPropertyImplicit_`
+* `JSDOM.CSSStyleRule`: `getSelectorTextUnchecked`, `getSelectorTextUnsafe`
+* `JSDOM.CSSStyleSheet`: `insertRuleDeprecated`, `insertRuleDeprecated_`
+* `JSDOM.CSSValue`: `CSS_CUSTOM`, `CSS_INHERIT`, `CSS_PRIMITIVE_VALUE`, `CSS_VALUE_LIST`, `getCssTextUnchecked`, `getCssTextUnsafe`, `getCssValueType`
+* `JSDOM.CanvasRenderingContext2D`: `clearShadow`, `createImageDataSize`, `createImageDataSize_`, `drawImageFromRect`, `getWebkitBackingStorePixelRatio`, `getWebkitImageSmoothingEnabled`, `getWebkitLineDash`, `getWebkitLineDashOffset`, `putImageDataDirty`, `setCompositeOperation`, `setFillColor`, `setFillColorCYMK`, `setFillColorGray`, `setFillColorRGB`, `setLineCapFunction`, `setLineJoinFunction`, `setLineWidthFunction`, `setMiterLimitFunction`, `setShadow`, `setShadowCYMK`, `setShadowGray`, `setShadowRGB`, `setStrokeColor`, `setStrokeColorCYMK`, `setStrokeColorGray`, `setStrokeColorRGB`, `setWebkitImageSmoothingEnabled`, `setWebkitLineDash`, `setWebkitLineDashOffset`, `webkitGetImageDataHD`, `webkitGetImageDataHD_`, `webkitPutImageDataHD`, `webkitPutImageDataHDDirty`
+* `JSDOM.CommandLineAPIHost`: `clearConsoleMessages`, `databaseId`, `databaseId_`, `getEventListeners`, `getEventListeners_`, `inspect`, `inspectedObject`, `inspectedObject_`, `storageId`, `storageId_`
+* `JSDOM.CountQueuingStrategy`: `size`, `size_`
+* `JSDOM.Counter`: `getListStyle`, `getSeparator`
+* `JSDOM.Crypto`: `getWebkitSubtle`
+* `JSDOM.DOMError`: `DOMErrorException`, `DOMErrorException (type)`, `domErrorName`, `throwDOMErrorException`
+* `JSDOM.Database`: `changeVersion`, `changeVersion'`, `readTransaction`, `readTransaction'`
+* `JSDOM.DatabaseCallback`: `newDatabaseCallback`, `newDatabaseCallbackAsync`, `newDatabaseCallbackSync`
+* `JSDOM.DeviceMotionEvent`: `initDeviceMotionEvent`
+* `JSDOM.DeviceOrientationEvent`: `initDeviceOrientationEvent`
+* `JSDOM.DeviceProximityEvent`: `newDeviceProximityEvent`
+* `JSDOM.Document`: `caretRangeFromPoint`, `caretRangeFromPoint_`, `createTouch`, `createTouchList`, `createTouchList_`, `createTouch_`, `getCSSCanvasContext`, `getCSSCanvasContext_`, `getOverrideStyle`, `getOverrideStyle_`, `getPreferredStylesheetSet`, `getPreferredStylesheetSetUnchecked`, `getPreferredStylesheetSetUnsafe`, `getSelectedStylesheetSet`, `getSelectedStylesheetSetUnchecked`, `getSelectedStylesheetSetUnsafe`, `getWebkitCurrentFullScreenElement`, `getWebkitFullScreenKeyboardInputAllowed`, `getWebkitFullscreenElement`, `getWebkitFullscreenElementUnchecked`, `getWebkitFullscreenElementUnsafe`, `getWebkitFullscreenEnabled`, `getWebkitIsFullScreen`, `getXmlEncoding`, `getXmlEncodingUnchecked`, `getXmlEncodingUnsafe`, `getXmlStandalone`, `getXmlVersion`, `getXmlVersionUnchecked`, `getXmlVersionUnsafe`, `setSelectedStylesheetSet`, `setXmlStandalone`, `setXmlVersion`, `webkitCancelFullScreen`, `webkitGetNamedFlows`, `webkitGetNamedFlows_`
+* `JSDOM.DocumentAndElementEventHandlers`: `beforeCopy`, `beforeCut`, `beforePaste`
+* `JSDOM.Element`: `beforeload`, `getWebkitRegionOverset`, `scrollIntoViewIfNeeded`, `webKitCurrentPlaybackTargetIsWirelessChanged`, `webKitFullscreenChange`, `webKitFullscreenError`, `webKitNeedKey`, `webKitPlaybackTargetAvailabilityChanged`, `webKitPresentationModeChanged`, `webkitGetRegionFlowRanges`, `webkitGetRegionFlowRanges_`, `webkitRequestFullScreen`, `webkitRequestFullscreen`
+* `JSDOM.Enums`: `ApplePayContactField (type)`, `ApplePayContactFieldEmail`, `ApplePayContactFieldName`, `ApplePayContactFieldPhone`, `ApplePayContactFieldPostalAddress`, `ApplePayErrorCode (type)`, `ApplePayErrorCodeAddressUnservicable`, `ApplePayErrorCodeBillingContactInvalid`, `ApplePayErrorCodeShippingContactInvalid`, `ApplePayErrorCodeUnknown`, `ApplePayErrorContactField (type)`, `ApplePayErrorContactFieldAddressLines`, `ApplePayErrorContactFieldAdministrativeArea`, `ApplePayErrorContactFieldCountry`, `ApplePayErrorContactFieldEmailAddress`, `ApplePayErrorContactFieldLocality`, `ApplePayErrorContactFieldName`, `ApplePayErrorContactFieldPhoneNumber`, `ApplePayErrorContactFieldPostalAddress`, `ApplePayErrorContactFieldPostalCode`, `ApplePayLineItemType (type)`, `ApplePayLineItemTypeFinal`, `ApplePayLineItemTypePending`, `ApplePayMerchantCapability (type)`, `ApplePayMerchantCapabilitySupports3DS`, `ApplePayMerchantCapabilitySupportsCredit`, `ApplePayMerchantCapabilitySupportsDebit`, `ApplePayMerchantCapabilitySupportsEMV`, `ApplePayPaymentMethodType (type)`, `ApplePayPaymentMethodTypeCredit`, `ApplePayPaymentMethodTypeDebit`, `ApplePayPaymentMethodTypePrepaid`, `ApplePayPaymentMethodTypeStore`, `ApplePayPaymentPassActivationState (type)`, `ApplePayPaymentPassActivationStateActivated`, `ApplePayPaymentPassActivationStateActivating`, `ApplePayPaymentPassActivationStateDeactivated`, `ApplePayPaymentPassActivationStateRequiresActivation`, `ApplePayPaymentPassActivationStateSuspended`, `ApplePayShippingType (type)`, `ApplePayShippingTypeDelivery`, `ApplePayShippingTypeServicePickup`, `ApplePayShippingTypeShipping`, `ApplePayShippingTypeStorePickup`, `BlobLineEndings (type)`, `BlobLineEndingsNative`, `BlobLineEndingsTransparent`, `CanvasWindingRule (type)`, `CanvasWindingRuleEvenodd`, `CanvasWindingRuleNonzero`, `CryptoKeyUsage (type)`, `CryptoKeyUsageDecrypt`, `CryptoKeyUsageDeriveBits`, `CryptoKeyUsageDeriveKey`, `CryptoKeyUsageEncrypt`, `CryptoKeyUsageSign`, `CryptoKeyUsageUnwrapKey`, `CryptoKeyUsageVerify`, `CryptoKeyUsageWrapKey`, `DeviceType (type)`, `DeviceTypeAirplay`, `DeviceTypeNone`, `DeviceTypeTvout`, `MediaKeySessionTypePersistentUsageRecord`, `MediaSessionKind (type)`, `MediaSessionKindAmbient`, `MediaSessionKindContent`, `MediaSessionKindTransient`, `MediaSessionKindTransientSolo`, `RTCDtxStatus (type)`, `RTCDtxStatusDisabled`, `RTCDtxStatusEnabled`, `RTCStatsType (type)`, `RTCStatsTypeCandidatePair`, `RTCStatsTypeCertificate`, `RTCStatsTypeCodec`, `RTCStatsTypeDataChannel`, `RTCStatsTypeInboundRtp`, `RTCStatsTypeLocalCandidate`, `RTCStatsTypeOutboundRtp`, `RTCStatsTypePeerConnection`, `RTCStatsTypeRemoteCandidate`, `RTCStatsTypeTrack`, `RTCStatsTypeTransport`, `RequestDestinationSubresource`, `RequestDestinationUnknown`, `RequestType`, `RequestType (type)`, `RequestTypeAudio`, `RequestTypeFont`, `RequestTypeImage`, `RequestTypeScript`, `RequestTypeStyle`, `RequestTypeTrack`, `RequestTypeVideo`, `ShadowRootModeUserAgent`, `TextTrackKindForced`, `VideoPresentationMode (type)`, `VideoPresentationModeFullscreen`, `VideoPresentationModeInline`, `VideoPresentationModePictureInPicture`, `VisibilityState (type)`, `VisibilityStateHidden`, `VisibilityStatePrerender`, `VisibilityStateVisible`, `WebGPUBlendFactor (type)`, `WebGPUBlendFactorBlendalpha`, `WebGPUBlendFactorBlendcolor`, `WebGPUBlendFactorDestinationalpha`, `WebGPUBlendFactorDestinationcolor`, `WebGPUBlendFactorOne`, `WebGPUBlendFactorOneminusblendalpha`, `WebGPUBlendFactorOneminusblendcolor`, `WebGPUBlendFactorOneminusdestinationalpha`, `WebGPUBlendFactorOneminusdestinationcolor`, `WebGPUBlendFactorOneminussourcealpha`, `WebGPUBlendFactorOneminussourcecolor`, `WebGPUBlendFactorSourcealpha`, `WebGPUBlendFactorSourcealphasaturated`, `WebGPUBlendFactorSourcecolor`, `WebGPUBlendFactorZero`, `WebGPUBlendOperation (type)`, `WebGPUBlendOperationAdd`, `WebGPUBlendOperationMax`, `WebGPUBlendOperationMin`, `WebGPUBlendOperationReversesubtract`, `WebGPUBlendOperationSubtract`, `WebGPUCPUCacheMode (type)`, `WebGPUCPUCacheModeDefaultcache`, `WebGPUCPUCacheModeWritecombined`, `WebGPUColorWriteMask (type)`, `WebGPUColorWriteMaskAll`, `WebGPUColorWriteMaskAlpha`, `WebGPUColorWriteMaskBlue`, `WebGPUColorWriteMaskGreen`, `WebGPUColorWriteMaskNone`, `WebGPUColorWriteMaskRed`, `WebGPUCompareFunction (type)`, `WebGPUCompareFunctionAlways`, `WebGPUCompareFunctionEqual`, `WebGPUCompareFunctionGreater`, `WebGPUCompareFunctionGreaterequal`, `WebGPUCompareFunctionLess`, `WebGPUCompareFunctionLessequal`, `WebGPUCompareFunctionNever`, `WebGPUCompareFunctionNotequal`, `WebGPUCullMode (type)`, `WebGPUCullModeBack`, `WebGPUCullModeFront`, `WebGPUCullModeNone`, `WebGPUDepthClipMode (type)`, `WebGPUDepthClipModeClamp`, `WebGPUDepthClipModeClip`, `WebGPUFeatureSet (type)`, `WebGPUFeatureSetLevel1`, `WebGPUFeatureSetLevel2`, `WebGPUFunctionType (type)`, `WebGPUFunctionTypeFragment`, `WebGPUFunctionTypeVertex`, `WebGPUIndexType (type)`, `WebGPUIndexTypeUint16`, `WebGPUIndexTypeUint32`, `WebGPULoadAction (type)`, `WebGPULoadActionClear`, `WebGPULoadActionDontcare`, `WebGPULoadActionLoad`, `WebGPUMultisampleDepthResolveFilter (type)`, `WebGPUMultisampleDepthResolveFilterMax`, `WebGPUMultisampleDepthResolveFilterMin`, `WebGPUMultisampleDepthResolveFilterSample0`, `WebGPUPixelFormat (type)`, `WebGPUPixelFormatBGRA8Unorm`, `WebGPUPrimitiveType (type)`, `WebGPUPrimitiveTypeLine`, `WebGPUPrimitiveTypeLinestrip`, `WebGPUPrimitiveTypePoint`, `WebGPUPrimitiveTypeTriangle`, `WebGPUPrimitiveTypeTrianglestrip`, `WebGPUResourceOptions (type)`, `WebGPUResourceOptionsCpucachemodedefaultcache`, `WebGPUResourceOptionsCpucachemodewritecombined`, `WebGPUResourceOptionsOptioncpucachemodedefaultcache`, `WebGPUResourceOptionsOptioncpucachemodewritecombined`, `WebGPUResourceOptionsStoragemodemanaged`, `WebGPUResourceOptionsStoragemodeprivate`, `WebGPUResourceOptionsStoragemodeshared`, `WebGPUSamplerAddressMode (type)`, `WebGPUSamplerAddressModeClamptoedge`, `WebGPUSamplerAddressModeClamptozero`, `WebGPUSamplerAddressModeMirrorclamptoedge`, `WebGPUSamplerAddressModeMirrorrepeat`, `WebGPUSamplerAddressModeRepeat`, `WebGPUSamplerMinMagFilter (type)`, `WebGPUSamplerMinMagFilterLinear`, `WebGPUSamplerMinMagFilterNearest`, `WebGPUSamplerMipFilter (type)`, `WebGPUSamplerMipFilterLinear`, `WebGPUSamplerMipFilterNearest`, `WebGPUSamplerMipFilterNotmipmapped`, `WebGPUStatus (type)`, `WebGPUStatusCommitted`, `WebGPUStatusCompleted`, `WebGPUStatusEnqueued`, `WebGPUStatusError`, `WebGPUStatusNotenqueued`, `WebGPUStatusScheduled`, `WebGPUStencilOperation (type)`, `WebGPUStencilOperationDecrementclamp`, `WebGPUStencilOperationDecrementwrap`, `WebGPUStencilOperationIncrementclamp`, `WebGPUStencilOperationIncrementwrap`, `WebGPUStencilOperationInvert`, `WebGPUStencilOperationKeep`, `WebGPUStencilOperationReplace`, `WebGPUStencilOperationZero`, `WebGPUStorageMode (type)`, `WebGPUStorageModeManaged`, `WebGPUStorageModePrivate`, `WebGPUStorageModeShared`, `WebGPUStoreAction (type)`, `WebGPUStoreActionDontcare`, `WebGPUStoreActionMultisampleresolve`, `WebGPUStoreActionStore`, `WebGPUTextureUsage (type)`, `WebGPUTextureUsagePixelformatview`, `WebGPUTextureUsageRendertarget`, `WebGPUTextureUsageShaderread`, `WebGPUTextureUsageShaderwrite`, `WebGPUTextureUsageUnknown`, `WebGPUTriangleFillMode (type)`, `WebGPUTriangleFillModeFill`, `WebGPUTriangleFillModeLines`, `WebGPUVisibilityResultMode (type)`, `WebGPUVisibilityResultModeBoolean`, `WebGPUVisibilityResultModeCounting`, `WebGPUVisibilityResultModeDisabled`, `WebGPUWinding (type)`, `WebGPUWindingClockwise`, `WebGPUWindingCounterclockwise`, `js_ApplePayContactFieldEmail`, `js_ApplePayContactFieldName`, `js_ApplePayContactFieldPhone`, `js_ApplePayContactFieldPostalAddress`, `js_ApplePayErrorCodeAddressUnservicable`, `js_ApplePayErrorCodeBillingContactInvalid`, `js_ApplePayErrorCodeShippingContactInvalid`, `js_ApplePayErrorCodeUnknown`, `js_ApplePayErrorContactFieldAddressLines`, `js_ApplePayErrorContactFieldAdministrativeArea`, `js_ApplePayErrorContactFieldCountry`, `js_ApplePayErrorContactFieldEmailAddress`, `js_ApplePayErrorContactFieldLocality`, `js_ApplePayErrorContactFieldName`, `js_ApplePayErrorContactFieldPhoneNumber`, `js_ApplePayErrorContactFieldPostalAddress`, `js_ApplePayErrorContactFieldPostalCode`, `js_ApplePayLineItemTypeFinal`, `js_ApplePayLineItemTypePending`, `js_ApplePayMerchantCapabilitySupports3DS`, `js_ApplePayMerchantCapabilitySupportsCredit`, `js_ApplePayMerchantCapabilitySupportsDebit`, `js_ApplePayMerchantCapabilitySupportsEMV`, `js_ApplePayPaymentMethodTypeCredit`, `js_ApplePayPaymentMethodTypeDebit`, `js_ApplePayPaymentMethodTypePrepaid`, `js_ApplePayPaymentMethodTypeStore`, `js_ApplePayPaymentPassActivationStateActivated`, `js_ApplePayPaymentPassActivationStateActivating`, `js_ApplePayPaymentPassActivationStateDeactivated`, `js_ApplePayPaymentPassActivationStateRequiresActivation`, `js_ApplePayPaymentPassActivationStateSuspended`, `js_ApplePayShippingTypeDelivery`, `js_ApplePayShippingTypeServicePickup`, `js_ApplePayShippingTypeShipping`, `js_ApplePayShippingTypeStorePickup`, `js_BlobLineEndingsNative`, `js_BlobLineEndingsTransparent`, `js_CanvasWindingRuleEvenodd`, `js_CanvasWindingRuleNonzero`, `js_CryptoKeyUsageDecrypt`, `js_CryptoKeyUsageDeriveBits`, `js_CryptoKeyUsageDeriveKey`, `js_CryptoKeyUsageEncrypt`, `js_CryptoKeyUsageSign`, `js_CryptoKeyUsageUnwrapKey`, `js_CryptoKeyUsageVerify`, `js_CryptoKeyUsageWrapKey`, `js_DeviceTypeAirplay`, `js_DeviceTypeNone`, `js_DeviceTypeTvout`, `js_MediaKeySessionTypePersistentUsageRecord`, `js_MediaSessionKindAmbient`, `js_MediaSessionKindContent`, `js_MediaSessionKindTransient`, `js_MediaSessionKindTransientSolo`, `js_RTCDtxStatusDisabled`, `js_RTCDtxStatusEnabled`, `js_RTCStatsTypeCandidatePair`, `js_RTCStatsTypeCertificate`, `js_RTCStatsTypeCodec`, `js_RTCStatsTypeDataChannel`, `js_RTCStatsTypeInboundRtp`, `js_RTCStatsTypeLocalCandidate`, `js_RTCStatsTypeOutboundRtp`, `js_RTCStatsTypePeerConnection`, `js_RTCStatsTypeRemoteCandidate`, `js_RTCStatsTypeTrack`, `js_RTCStatsTypeTransport`, `js_RequestDestinationSubresource`, `js_RequestDestinationUnknown`, `js_RequestType`, `js_RequestTypeAudio`, `js_RequestTypeFont`, `js_RequestTypeImage`, `js_RequestTypeScript`, `js_RequestTypeStyle`, `js_RequestTypeTrack`, `js_RequestTypeVideo`, `js_ShadowRootModeUserAgent`, `js_TextTrackKindForced`, `js_VideoPresentationModeFullscreen`, `js_VideoPresentationModeInline`, `js_VideoPresentationModePictureInPicture`, `js_VisibilityStateHidden`, `js_VisibilityStatePrerender`, `js_VisibilityStateVisible`, `js_WebGPUBlendFactorBlendalpha`, `js_WebGPUBlendFactorBlendcolor`, `js_WebGPUBlendFactorDestinationalpha`, `js_WebGPUBlendFactorDestinationcolor`, `js_WebGPUBlendFactorOne`, `js_WebGPUBlendFactorOneminusblendalpha`, `js_WebGPUBlendFactorOneminusblendcolor`, `js_WebGPUBlendFactorOneminusdestinationalpha`, `js_WebGPUBlendFactorOneminusdestinationcolor`, `js_WebGPUBlendFactorOneminussourcealpha`, `js_WebGPUBlendFactorOneminussourcecolor`, `js_WebGPUBlendFactorSourcealpha`, `js_WebGPUBlendFactorSourcealphasaturated`, `js_WebGPUBlendFactorSourcecolor`, `js_WebGPUBlendFactorZero`, `js_WebGPUBlendOperationAdd`, `js_WebGPUBlendOperationMax`, `js_WebGPUBlendOperationMin`, `js_WebGPUBlendOperationReversesubtract`, `js_WebGPUBlendOperationSubtract`, `js_WebGPUCPUCacheModeDefaultcache`, `js_WebGPUCPUCacheModeWritecombined`, `js_WebGPUColorWriteMaskAll`, `js_WebGPUColorWriteMaskAlpha`, `js_WebGPUColorWriteMaskBlue`, `js_WebGPUColorWriteMaskGreen`, `js_WebGPUColorWriteMaskNone`, `js_WebGPUColorWriteMaskRed`, `js_WebGPUCompareFunctionAlways`, `js_WebGPUCompareFunctionEqual`, `js_WebGPUCompareFunctionGreater`, `js_WebGPUCompareFunctionGreaterequal`, `js_WebGPUCompareFunctionLess`, `js_WebGPUCompareFunctionLessequal`, `js_WebGPUCompareFunctionNever`, `js_WebGPUCompareFunctionNotequal`, `js_WebGPUCullModeBack`, `js_WebGPUCullModeFront`, `js_WebGPUCullModeNone`, `js_WebGPUDepthClipModeClamp`, `js_WebGPUDepthClipModeClip`, `js_WebGPUFeatureSetLevel1`, `js_WebGPUFeatureSetLevel2`, `js_WebGPUFunctionTypeFragment`, `js_WebGPUFunctionTypeVertex`, `js_WebGPUIndexTypeUint16`, `js_WebGPUIndexTypeUint32`, `js_WebGPULoadActionClear`, `js_WebGPULoadActionDontcare`, `js_WebGPULoadActionLoad`, `js_WebGPUMultisampleDepthResolveFilterMax`, `js_WebGPUMultisampleDepthResolveFilterMin`, `js_WebGPUMultisampleDepthResolveFilterSample0`, `js_WebGPUPixelFormatBGRA8Unorm`, `js_WebGPUPrimitiveTypeLine`, `js_WebGPUPrimitiveTypeLinestrip`, `js_WebGPUPrimitiveTypePoint`, `js_WebGPUPrimitiveTypeTriangle`, `js_WebGPUPrimitiveTypeTrianglestrip`, `js_WebGPUResourceOptionsCpucachemodedefaultcache`, `js_WebGPUResourceOptionsCpucachemodewritecombined`, `js_WebGPUResourceOptionsOptioncpucachemodedefaultcache`, `js_WebGPUResourceOptionsOptioncpucachemodewritecombined`, `js_WebGPUResourceOptionsStoragemodemanaged`, `js_WebGPUResourceOptionsStoragemodeprivate`, `js_WebGPUResourceOptionsStoragemodeshared`, `js_WebGPUSamplerAddressModeClamptoedge`, `js_WebGPUSamplerAddressModeClamptozero`, `js_WebGPUSamplerAddressModeMirrorclamptoedge`, `js_WebGPUSamplerAddressModeMirrorrepeat`, `js_WebGPUSamplerAddressModeRepeat`, `js_WebGPUSamplerMinMagFilterLinear`, `js_WebGPUSamplerMinMagFilterNearest`, `js_WebGPUSamplerMipFilterLinear`, `js_WebGPUSamplerMipFilterNearest`, `js_WebGPUSamplerMipFilterNotmipmapped`, `js_WebGPUStatusCommitted`, `js_WebGPUStatusCompleted`, `js_WebGPUStatusEnqueued`, `js_WebGPUStatusError`, `js_WebGPUStatusNotenqueued`, `js_WebGPUStatusScheduled`, `js_WebGPUStencilOperationDecrementclamp`, `js_WebGPUStencilOperationDecrementwrap`, `js_WebGPUStencilOperationIncrementclamp`, `js_WebGPUStencilOperationIncrementwrap`, `js_WebGPUStencilOperationInvert`, `js_WebGPUStencilOperationKeep`, `js_WebGPUStencilOperationReplace`, `js_WebGPUStencilOperationZero`, `js_WebGPUStorageModeManaged`, `js_WebGPUStorageModePrivate`, `js_WebGPUStorageModeShared`, `js_WebGPUStoreActionDontcare`, `js_WebGPUStoreActionMultisampleresolve`, `js_WebGPUStoreActionStore`, `js_WebGPUTextureUsagePixelformatview`, `js_WebGPUTextureUsageRendertarget`, `js_WebGPUTextureUsageShaderread`, `js_WebGPUTextureUsageShaderwrite`, `js_WebGPUTextureUsageUnknown`, `js_WebGPUTriangleFillModeFill`, `js_WebGPUTriangleFillModeLines`, `js_WebGPUVisibilityResultModeBoolean`, `js_WebGPUVisibilityResultModeCounting`, `js_WebGPUVisibilityResultModeDisabled`, `js_WebGPUWindingClockwise`, `js_WebGPUWindingCounterclockwise`
+* `JSDOM.EventListener`: `handleEvent`
+* `JSDOM.EventM`: `mouseFromElement`, `mouseToElement`
+* `JSDOM.FileException`: `ENCODING_ERR`, `NOT_READABLE_ERR`, `PATH_EXISTS_ERR`
+* `JSDOM.FontFace`: `getVariant`, `setVariant`
+* `JSDOM.FontFaceSet`: `newFontFaceSet`
+* `JSDOM.GlobalCrypto`: `getCrypto`
+* `JSDOM.GlobalEventHandlers`: `autocomplete`, `autocompleteerror`, `mouseWheel`, `search`, `touchForcechange`
+* `JSDOM.GlobalPerformance`: `getPerformance`
+* `JSDOM.HTMLAppletElement`: `getObject`, `setObject`
+* `JSDOM.HTMLAttachmentElement`: `getFileUnchecked`, `getFileUnsafe`, `setFile`
+* `JSDOM.HTMLBodyElement`: `webKitMouseForcechanged`, `webKitMouseForcedown`, `webKitMouseForceup`, `webKitMouseForcewillbegin`
+* `JSDOM.HTMLCanvasElement`: `toBlob'`
+* `JSDOM.HTMLElement`: `getWebkitdropzone`, `newHTMLElement`, `setWebkitdropzone`
+* `JSDOM.HTMLFormElement`: `getAt_`, `requestAutocomplete`
+* `JSDOM.HTMLFrameSetElement`: `webKitWillRevealBottom`, `webKitWillRevealLeft`, `webKitWillRevealRight`, `webKitWillRevealTop`
+* `JSDOM.HTMLHeadElement`: `getProfile`, `setProfile`
+* `JSDOM.HTMLHtmlElement`: `getManifest`, `setManifest`
+* `JSDOM.HTMLInputElement`: `getIncremental`, `setIncremental`
+* `JSDOM.HTMLKeygenElement`: `getKeytype`, `setKeytype`
+* `JSDOM.HTMLMediaElement`: `getMediaGroup`, `getSession`, `getSessionUnchecked`, `getSessionUnsafe`, `getWebkitAudioDecodedByteCount`, `getWebkitClosedCaptionsVisible`, `getWebkitCurrentPlaybackTargetIsWireless`, `getWebkitHasClosedCaptions`, `getWebkitKeys`, `getWebkitPreservesPitch`, `getWebkitVideoDecodedByteCount`, `setMediaGroup`, `setSession`, `setWebkitClosedCaptionsVisible`, `setWebkitPreservesPitch`, `webkitSetMediaKeys`, `webkitShowPlaybackTargetPicker`
+* `JSDOM.HTMLSelectElement`: `addBefore`
+* `JSDOM.HTMLVideoElement`: `getWebkitDecodedFrameCount`, `getWebkitDisplayingFullscreen`, `getWebkitDroppedFrameCount`, `getWebkitPresentationMode`, `getWebkitSupportsFullscreen`, `getWebkitWirelessVideoPlaybackDisabled`, `setWebkitWirelessVideoPlaybackDisabled`, `webkitEnterFullScreen`, `webkitEnterFullscreen`, `webkitExitFullScreen`, `webkitExitFullscreen`, `webkitSetPresentationMode`, `webkitSupportsPresentationMode`, `webkitSupportsPresentationMode_`
+* `JSDOM.HashChangeEvent`: `initHashChangeEvent`
+* `JSDOM.IDBObjectStore`: `countRange`, `countRange_`, `deleteRange`, `deleteRange_`, `getAllKeysRange`, `getAllKeysRange_`, `getAllRange`, `getAllRange_`, `getKeyRange`, `getKeyRange_`, `getRange_`, `openCursorRange`, `openCursorRange_`, `openKeyCursorRange`, `openKeyCursorRange_`
+* `JSDOM.ImageData`: `newImageData'`
+* `JSDOM.InspectorFrontendHost`: `backendCommandsURL`, `backendCommandsURL_`, `beep`, `bringToFront`, `canSave`, `canSave_`, `closeWindow`, `copyText`, `debuggableType`, `debuggableType_`, `dispatchEventAsContextMenuEvent`, `inspectedURLChanged`, `inspectionLevel`, `inspectionLevel_`, `isUnderTest`, `isUnderTest_`, `killText`, `loaded`, `localizedStringsURL`, `localizedStringsURL_`, `moveWindowBy`, `openInNewTab`, `platform`, `platform_`, `port`, `port_`, `requestSetDockSide`, `sendMessageToBackend`, `setAttachedWindowHeight`, `setAttachedWindowWidth`, `setZoomFactor`, `showContextMenu`, `startWindowDrag`, `unbufferedLog`, `userInterfaceLayoutDirection`, `userInterfaceLayoutDirection_`, `zoomFactor`, `zoomFactor_`
+* `JSDOM.KeyboardEvent`: `getAltGraphKey`, `getKeyIdentifier`, `getKeyLocation`
+* `JSDOM.MediaController`: `newMediaController`, `unpause`
+* `JSDOM.MediaControlsHost`: `base64StringForIconNameAndType`, `base64StringForIconNameAndType_`, `displayNameForTrack`, `displayNameForTrack_`, `enteredFullscreen`, `exitedFullscreen`, `generateUUID`, `generateUUID_`, `getAllowsInlineMediaPlayback`, `getCaptionDisplayMode`, `getCaptionMenuAutomaticItem`, `getCaptionMenuOffItem`, `getControlsDependOnPageScaleFactor`, `getExternalDeviceDisplayName`, `getExternalDeviceType`, `getIsInMediaDocument`, `getIsVideoLayerInline`, `getShadowRootCSSText`, `getShouldForceControlsDisplay`, `getSupportsFullscreen`, `getTextTrackContainer`, `getUserGestureRequired`, `setControlsDependOnPageScaleFactor`, `setPreparedToReturnVideoLayerToInline`, `setSelectedTextTrack`, `sortedTrackListForMenu`, `sortedTrackListForMenuAudio`, `sortedTrackListForMenuAudio_`, `sortedTrackListForMenu_`, `updateTextTrackContainer`
+* `JSDOM.MediaDeviceInfo`: `newMediaDeviceInfo`
+* `JSDOM.MediaQueryListListener`: `newMediaQueryListListener`, `newMediaQueryListListenerAsync`, `newMediaQueryListListenerSync`
+* `JSDOM.MediaRemoteControls`: `getNextTrackEnabled`, `getPreviousTrackEnabled`, `newMediaRemoteControls`, `nexttrack`, `previoustrack`, `setNextTrackEnabled`, `setPreviousTrackEnabled`
+* `JSDOM.MediaSession`: `deactivate`, `getControlsUnchecked`, `getControlsUnsafe`, `newMediaSession`
+* `JSDOM.MediaStream`: `active`, `inactive`
+* `JSDOM.MediaStreamEvent`: `newMediaStreamEvent`
+* `JSDOM.MediaStreamTrack`: `overConstrained`
+* `JSDOM.MouseEvent`: `WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN`, `WEBKIT_FORCE_AT_MOUSE_DOWN`, `getFromElement`, `getFromElementUnchecked`, `getFromElementUnsafe`, `getToElement`, `getToElementUnchecked`, `getToElementUnsafe`, `getWebkitForce`
+* `JSDOM.MutationEvent`: `ADDITION`, `MODIFICATION`, `REMOVAL`, `getAttrChange`, `getAttrName`, `getPrevValue`, `getRelatedNode`, `getRelatedNodeUnchecked`, `getRelatedNodeUnsafe`, `initMutationEvent`
+* `JSDOM.Navigator`: `getStorageUpdates`, `isProtocolHandlerRegistered`, `isProtocolHandlerRegistered_`, `vibratePattern`, `vibratePattern_`
+* `JSDOM.NavigatorUserMediaError`: `UserMediaException`, `UserMediaException (type)`, `getConstraintName`, `throwUserMediaException`, `userMediaErrorConstraintName`, `userMediaErrorName`
+* `JSDOM.NavigatorUserMediaErrorCallback`: `newNavigatorUserMediaErrorCallback`, `newNavigatorUserMediaErrorCallbackAsync`, `newNavigatorUserMediaErrorCallbackSync`
+* `JSDOM.NavigatorUserMediaSuccessCallback`: `newNavigatorUserMediaSuccessCallback`, `newNavigatorUserMediaSuccessCallbackAsync`, `newNavigatorUserMediaSuccessCallbackSync`
+* `JSDOM.NodeFilter`: `FILTER_ACCEPT`, `FILTER_REJECT`, `FILTER_SKIP`, `SHOW_ALL`, `SHOW_ATTRIBUTE`, `SHOW_CDATA_SECTION`, `SHOW_COMMENT`, `SHOW_DOCUMENT`, `SHOW_DOCUMENT_FRAGMENT`, `SHOW_DOCUMENT_TYPE`, `SHOW_ELEMENT`, `SHOW_ENTITY`, `SHOW_ENTITY_REFERENCE`, `SHOW_NOTATION`, `SHOW_PROCESSING_INSTRUCTION`, `SHOW_TEXT`
+* `JSDOM.Notification`: `display`, `getPermission`
+* `JSDOM.OscillatorNode`: `FINISHED_STATE`, `PLAYING_STATE`, `SCHEDULED_STATE`, `UNSCHEDULED_STATE`
+* `JSDOM.OverconstrainedErrorEvent`: `newOverconstrainedErrorEvent`
+* `JSDOM.OverflowEvent`: `BOTH`, `HORIZONTAL`, `VERTICAL`, `getHorizontalOverflow`, `getOrient`, `getVerticalOverflow`, `newOverflowEvent`
+* `JSDOM.PannerNode`: `setVelocity`
+* `JSDOM.PasswordCredential`: `getAdditionalData`, `getAdditionalDataUnchecked`, `getAdditionalDataUnsafe`, `getIdName`, `getPasswordName`, `setAdditionalData`, `setIdName`, `setPasswordName`
+* `JSDOM.Path2D`: `addPathWithTransform`, `newPath2D''`
+* `JSDOM.QuickTimePluginReplacement`: `getAccessLog`, `getErrorLog`, `getMovieSize`, `getTimedMetaData`, `postEvent`
+* `JSDOM.RGBColor`: `getBlue`, `getGreen`, `getRed`
+* `JSDOM.RTCDTMFSender`: `getInterToneGap`
+* `JSDOM.RTCPeerConnection`: `addStream`, `addStreamEvent`, `addTransceiverTrack`, `addTransceiverTrack_`, `getLocalStreams`, `getLocalStreams_`, `getRemoteStreams`, `getRemoteStreams_`, `getStreamById`, `getStreamById_`, `removeStream`
+* `JSDOM.RTCRtpTransceiver`: `getStopped`
+* `JSDOM.Range`: `NODE_AFTER`, `NODE_BEFORE`, `NODE_BEFORE_AND_AFTER`, `NODE_INSIDE`, `compareNode`, `compareNode_`, `expand`
+* `JSDOM.ReadableByteStreamController`: `newReadableByteStreamController`
+* `JSDOM.ReadableStream`: `pipeTo_`
+* `JSDOM.ReadableStreamBYOBRequest`: `newReadableStreamBYOBRequest`
+* `JSDOM.ReadableStreamDefaultController`: `newReadableStreamDefaultController`
+* `JSDOM.ReadableStreamDefaultReader`: `cancel_`
+* `JSDOM.ReadableStreamSource`: `pull`
+* `JSDOM.RequestAnimationFrameCallback`: `newRequestAnimationFrameCallback`, `newRequestAnimationFrameCallbackAsync`, `newRequestAnimationFrameCallbackSync`
+* `JSDOM.SQLError`: `SQLErrorCode (type)`, `SQLErrorConstraint`, `SQLErrorDatabase`, `SQLErrorQuota`, `SQLErrorSyntax`, `SQLErrorTimeout`, `SQLErrorTooLarge`, `SQLErrorUnknown`, `SQLErrorVersion`, `sqlErrorCode`, `sqlErrorMessage`, `throwSQLException`
+* `JSDOM.SQLException`: `CONSTRAINT_ERR`, `DATABASE_ERR`, `QUOTA_ERR`, `TOO_LARGE_ERR`, `UNKNOWN_ERR`, `VERSION_ERR`
+* `JSDOM.SQLResultSet`: `getInsertId`, `getRowsAffected`
+* `JSDOM.SQLStatementCallback`: `newSQLStatementCallback`, `newSQLStatementCallbackAsync`, `newSQLStatementCallbackSync`
+* `JSDOM.SQLStatementErrorCallback`: `newSQLStatementErrorCallback`, `newSQLStatementErrorCallbackAsync`, `newSQLStatementErrorCallbackSync`
+* `JSDOM.SQLTransaction`: `executeSql`, `executeSql'`, `executeSql_`
+* `JSDOM.SQLTransactionCallback`: `newSQLTransactionCallback`, `newSQLTransactionCallbackAsync`, `newSQLTransactionCallbackSync`
+* `JSDOM.SQLTransactionErrorCallback`: `newSQLTransactionErrorCallback`, `newSQLTransactionErrorCallbackAsync`, `newSQLTransactionErrorCallbackSync`
+* `JSDOM.SVGElement`: `getPresentationAttribute`, `getPresentationAttribute_`, `getXmllang`, `getXmlspace`, `setXmllang`, `setXmlspace`
+* `JSDOM.SVGException`: `SVG_INVALID_VALUE_ERR`, `SVG_MATRIX_NOT_INVERTABLE`, `SVG_WRONG_TYPE_ERR`
+* `JSDOM.SVGExternalResourcesRequired`: `getExternalResourcesRequired`
+* `JSDOM.SVGFEMorphologyElement`: `setRadius`
+* `JSDOM.SVGFilterElement`: `getFilterResX`, `getFilterResY`, `setFilterRes`
+* `JSDOM.SVGGlyphRefElement`: `getGlyphRef`, `setDx`, `setDy`, `setGlyphRef`
+* `JSDOM.SVGGraphicsElement`: `getFarthestViewportElement`, `getNearestViewportElement`, `getTransformToElement`, `getTransformToElement_`
+* `JSDOM.SVGPathElement`: `createSVGPathSegArcAbs`, `createSVGPathSegArcAbs_`, `createSVGPathSegArcRel`, `createSVGPathSegArcRel_`, `createSVGPathSegClosePath`, `createSVGPathSegClosePath_`, `createSVGPathSegCurvetoCubicAbs`, `createSVGPathSegCurvetoCubicAbs_`, `createSVGPathSegCurvetoCubicRel`, `createSVGPathSegCurvetoCubicRel_`, `createSVGPathSegCurvetoCubicSmoothAbs`, `createSVGPathSegCurvetoCubicSmoothAbs_`, `createSVGPathSegCurvetoCubicSmoothRel`, `createSVGPathSegCurvetoCubicSmoothRel_`, `createSVGPathSegCurvetoQuadraticAbs`, `createSVGPathSegCurvetoQuadraticAbs_`, `createSVGPathSegCurvetoQuadraticRel`, `createSVGPathSegCurvetoQuadraticRel_`, `createSVGPathSegCurvetoQuadraticSmoothAbs`, `createSVGPathSegCurvetoQuadraticSmoothAbs_`, `createSVGPathSegCurvetoQuadraticSmoothRel`, `createSVGPathSegCurvetoQuadraticSmoothRel_`, `createSVGPathSegLinetoAbs`, `createSVGPathSegLinetoAbs_`, `createSVGPathSegLinetoHorizontalAbs`, `createSVGPathSegLinetoHorizontalAbs_`, `createSVGPathSegLinetoHorizontalRel`, `createSVGPathSegLinetoHorizontalRel_`, `createSVGPathSegLinetoRel`, `createSVGPathSegLinetoRel_`, `createSVGPathSegLinetoVerticalAbs`, `createSVGPathSegLinetoVerticalAbs_`, `createSVGPathSegLinetoVerticalRel`, `createSVGPathSegLinetoVerticalRel_`, `createSVGPathSegMovetoAbs`, `createSVGPathSegMovetoAbs_`, `createSVGPathSegMovetoRel`, `createSVGPathSegMovetoRel_`, `getAnimatedNormalizedPathSegList`, `getAnimatedPathSegList`, `getNormalizedPathSegList`, `getPathSegAtLength`, `getPathSegAtLength_`, `getPathSegList`
+* `JSDOM.SVGPathSeg`: `PATHSEG_ARC_ABS`, `PATHSEG_ARC_REL`, `PATHSEG_CLOSEPATH`, `PATHSEG_CURVETO_CUBIC_ABS`, `PATHSEG_CURVETO_CUBIC_REL`, `PATHSEG_CURVETO_CUBIC_SMOOTH_ABS`, `PATHSEG_CURVETO_CUBIC_SMOOTH_REL`, `PATHSEG_CURVETO_QUADRATIC_ABS`, `PATHSEG_CURVETO_QUADRATIC_REL`, `PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS`, `PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL`, `PATHSEG_LINETO_ABS`, `PATHSEG_LINETO_HORIZONTAL_ABS`, `PATHSEG_LINETO_HORIZONTAL_REL`, `PATHSEG_LINETO_REL`, `PATHSEG_LINETO_VERTICAL_ABS`, `PATHSEG_LINETO_VERTICAL_REL`, `PATHSEG_MOVETO_ABS`, `PATHSEG_MOVETO_REL`, `PATHSEG_UNKNOWN`, `getPathSegType`, `getPathSegTypeAsLetter`
+* `JSDOM.SVGPathSegArcRel`: `getLargeArcFlag`, `getR1`, `getR2`, `getSweepFlag`, `setLargeArcFlag`, `setR1`, `setR2`, `setSweepFlag`
+* `JSDOM.SVGPathSegCurvetoCubicSmoothRel`: `setX2`, `setY2`
+* `JSDOM.SVGPathSegCurvetoQuadraticRel`: `setX1`, `setY1`
+* `JSDOM.SVGRenderingIntent`: `RENDERING_INTENT_ABSOLUTE_COLORIMETRIC`, `RENDERING_INTENT_AUTO`, `RENDERING_INTENT_PERCEPTUAL`, `RENDERING_INTENT_RELATIVE_COLORIMETRIC`, `RENDERING_INTENT_SATURATION`, `RENDERING_INTENT_UNKNOWN`
+* `JSDOM.SVGSVGElement`: `getContentScriptType`, `getContentStyleType`, `getCurrentView`, `getPixelUnitToMillimeterX`, `getPixelUnitToMillimeterY`, `getScreenPixelToMillimeterX`, `getScreenPixelToMillimeterY`, `getUseCurrentView`, `getViewport`, `setContentScriptType`, `setContentStyleType`
+* `JSDOM.SVGTests`: `hasExtension`, `hasExtension_`
+* `JSDOM.SVGViewSpec`: `getPreserveAspectRatioString`, `getTransformString`, `getViewBoxString`, `getViewTarget`, `getViewTargetString`
+* `JSDOM.SVGZoomAndPan`: `SVG_ZOOMANDPAN_DISABLE`, `SVG_ZOOMANDPAN_MAGNIFY`, `SVG_ZOOMANDPAN_UNKNOWN`, `getZoomAndPan`, `setZoomAndPan`
+* `JSDOM.SVGZoomEvent`: `getNewScale`, `getNewTranslate`, `getPreviousScale`, `getPreviousTranslate`, `getZoomRectScreen`
+* `JSDOM.Screen`: `getAvailLeft`, `getAvailTop`
+* `JSDOM.Selection`: `getBaseNode`, `getBaseNodeUnchecked`, `getBaseNodeUnsafe`, `getBaseOffset`, `getExtentNode`, `getExtentNodeUnchecked`, `getExtentNodeUnsafe`, `getExtentOffset`
+* `JSDOM.StorageErrorCallback`: `newStorageErrorCallback`, `newStorageErrorCallbackAsync`, `newStorageErrorCallbackSync`
+* `JSDOM.StorageInfo`: `PERSISTENT`, `TEMPORARY`
+* `JSDOM.StorageQuota`: `queryUsageAndQuota`, `requestQuota`
+* `JSDOM.StorageQuotaCallback`: `newStorageQuotaCallback`, `newStorageQuotaCallbackAsync`, `newStorageQuotaCallbackSync`
+* `JSDOM.StorageUsageCallback`: `newStorageUsageCallback`, `newStorageUsageCallbackAsync`, `newStorageUsageCallbackSync`
+* `JSDOM.StringCallback`: `newStringCallback`, `newStringCallbackAsync`, `newStringCallbackSync`
+* `JSDOM.StyleMedia`: `matchMedium`, `matchMedium_`
+* `JSDOM.TextTrack`: `addRegion`, `removeRegion`
+* `JSDOM.Touch`: `getWebkitRadiusX`, `getWebkitRadiusY`, `getWebkitRotationAngle`
+* `JSDOM.TouchEvent`: `initTouchEvent`
+* `JSDOM.Types`: `ANGLEInstancedArrays`, `ANGLEInstancedArrays (type)`, `Acceleration`, `Acceleration (type)`, `AesCbcCfbParams`, `AesCbcCfbParams (type)`, `AesCtrParams`, `AesCtrParams (type)`, `AesGcmParams`, `AesGcmParams (type)`, `AesKeyParams`, `AesKeyParams (type)`, `Algorithm`, `Algorithm (type)`, `ApplePayError`, `ApplePayError (type)`, `ApplePayLineItem`, `ApplePayLineItem (type)`, `ApplePayPayment`, `ApplePayPayment (type)`, `ApplePayPaymentAuthorizationResult`, `ApplePayPaymentAuthorizationResult (type)`, `ApplePayPaymentAuthorizedEvent`, `ApplePayPaymentAuthorizedEvent (type)`, `ApplePayPaymentContact`, `ApplePayPaymentContact (type)`, `ApplePayPaymentMethod`, `ApplePayPaymentMethod (type)`, `ApplePayPaymentMethodSelectedEvent`, `ApplePayPaymentMethodSelectedEvent (type)`, `ApplePayPaymentMethodUpdate`, `ApplePayPaymentMethodUpdate (type)`, `ApplePayPaymentPass`, `ApplePayPaymentPass (type)`, `ApplePayPaymentRequest`, `ApplePayPaymentRequest (type)`, `ApplePayPaymentToken`, `ApplePayPaymentToken (type)`, `ApplePaySession`, `ApplePaySession (type)`, `ApplePayShippingContactSelectedEvent`, `ApplePayShippingContactSelectedEvent (type)`, `ApplePayShippingContactUpdate`, `ApplePayShippingContactUpdate (type)`, `ApplePayShippingMethod`, `ApplePayShippingMethod (type)`, `ApplePayShippingMethodSelectedEvent`, `ApplePayShippingMethodSelectedEvent (type)`, `ApplePayShippingMethodUpdate`, `ApplePayShippingMethodUpdate (type)`, `ApplePayValidateMerchantEvent`, `ApplePayValidateMerchantEvent (type)`, `ApplicationCache`, `ApplicationCache (type)`, `AudioBufferCallback`, `AudioBufferCallback (type)`, `AutocompleteErrorEvent`, `AutocompleteErrorEvent (type)`, `AutocompleteErrorEventInit`, `AutocompleteErrorEventInit (type)`, `BasicCredential`, `BasicCredential (type)`, `BeforeLoadEvent`, `BeforeLoadEvent (type)`, `BeforeLoadEventInit`, `BeforeLoadEventInit (type)`, `BinaryData`, `BinaryData (type)`, `BufferDataSource`, `BufferDataSource (type)`, `CSS`, `CSS (type)`, `CSSFontFaceLoadEvent`, `CSSFontFaceLoadEvent (type)`, `CSSFontFaceLoadEventInit`, `CSSFontFaceLoadEventInit (type)`, `CSSPrimitiveValue`, `CSSPrimitiveValue (type)`, `CSSUnknownRule`, `CSSUnknownRule (type)`, `CSSValue`, `CSSValue (type)`, `CSSValueList`, `CSSValueList (type)`, `CanvasProxy`, `CanvasProxy (type)`, `CanvasStyle`, `CanvasStyle (type)`, `CommandLineAPIHost`, `CommandLineAPIHost (type)`, `ConstrainLongRange`, `ConstrainLongRange (type)`, `Coordinates`, `Coordinates (type)`, `Counter`, `Counter (type)`, `CredentialBodyType`, `CredentialBodyType (type)`, `CryptoAlgorithmParameters`, `CryptoAlgorithmParameters (type)`, `CryptoKeyOrKeyPair`, `CryptoKeyOrKeyPair (type)`, `CryptoOperationData`, `CryptoOperationData (type)`, `DOMError`, `DOMError (type)`, `DOMNamedFlowCollection`, `DOMNamedFlowCollection (type)`, `Database`, `Database (type)`, `DatabaseCallback`, `DatabaseCallback (type)`, `DeviceProximityEvent`, `DeviceProximityEvent (type)`, `DeviceProximityEventInit`, `DeviceProximityEventInit (type)`, `DocumentAndElementEventHandlers`, `DocumentAndElementEventHandlers (type)`, `EXTBlendMinMax`, `EXTBlendMinMax (type)`, `EXTFragDepth`, `EXTFragDepth (type)`, `EXTShaderTextureLOD`, `EXTShaderTextureLOD (type)`, `EXTTextureFilterAnisotropic`, `EXTTextureFilterAnisotropic (type)`, `EXTsRGB`, `EXTsRGB (type)`, `EcKeyParams`, `EcKeyParams (type)`, `EcdhKeyDeriveParams`, `EcdhKeyDeriveParams (type)`, `EcdsaParams`, `EcdsaParams (type)`, `FileError`, `FileError (type)`, `FileException`, `FileException (type)`, `Geoposition`, `Geoposition (type)`, `GlobalCrypto`, `GlobalCrypto (type)`, `GlobalPerformance`, `GlobalPerformance (type)`, `HTMLAppletElement`, `HTMLAppletElement (type)`, `HTMLAttachmentElement`, `HTMLAttachmentElement (type)`, `HTMLDocument`, `HTMLDocument (type)`, `HTMLElementOrLong`, `HTMLElementOrLong (type)`, `HTMLKeygenElement`, `HTMLKeygenElement (type)`, `HTMLOptionElementOrGroup`, `HTMLOptionElementOrGroup (type)`, `HkdfParams`, `HkdfParams (type)`, `HmacKeyParams`, `HmacKeyParams (type)`, `IDBCursorSource`, `IDBCursorSource (type)`, `IDBKeyPath`, `IDBKeyPath (type)`, `IDBRequestResult`, `IDBRequestResult (type)`, `IDBRequestSource`, `IDBRequestSource (type)`, `InspectorFrontendHost`, `InspectorFrontendHost (type)`, `IsAlgorithm (type)`, `IsAudioContext (type)`, `IsBasicCredential (type)`, `IsBinaryData (type)`, `IsBufferDataSource (type)`, `IsCSSValue (type)`, `IsCanvasStyle (type)`, `IsCredentialBodyType (type)`, `IsCryptoAlgorithmParameters (type)`, `IsCryptoKeyOrKeyPair (type)`, `IsCryptoOperationData (type)`, `IsDOMError (type)`, `IsDocumentAndElementEventHandlers (type)`, `IsGlobalCrypto (type)`, `IsGlobalPerformance (type)`, `IsHTMLElementOrLong (type)`, `IsHTMLOptionElementOrGroup (type)`, `IsIDBCursorSource (type)`, `IsIDBKeyPath (type)`, `IsIDBRequestResult (type)`, `IsIDBRequestSource (type)`, `IsKeyData (type)`, `IsLongRange (type)`, `IsMediaStreamTrackOrKind (type)`, `IsMutationCallback (type)`, `IsProgressEvent (type)`, `IsRTCIceCandidateOrInit (type)`, `IsRTCRTPStreamStats (type)`, `IsRTCStats (type)`, `IsRsaKeyGenParams (type)`, `IsSQLValue (type)`, `IsSVGExternalResourcesRequired (type)`, `IsSVGPathSeg (type)`, `IsSVGZoomAndPan (type)`, `IsSiteBoundCredential (type)`, `IsSiteBoundCredentialData (type)`, `IsSlotable (type)`, `IsStringOrBinaryData (type)`, `IsStringOrStrings (type)`, `IsTrack (type)`, `IsURLSearchParamsInit (type)`, `IsWebGPURenderPassAttachmentDescriptor (type)`, `IsXMLHttpRequestBody (type)`, `KeyData`, `KeyData (type)`, `LongRange`, `LongRange (type)`, `MediaController`, `MediaController (type)`, `MediaControlsHost`, `MediaControlsHost (type)`, `MediaQueryListListener`, `MediaQueryListListener (type)`, `MediaRemoteControls`, `MediaRemoteControls (type)`, `MediaStreamEvent`, `MediaStreamEvent (type)`, `MediaStreamEventInit`, `MediaStreamEventInit (type)`, `MediaStreamTrackOrKind`, `MediaStreamTrackOrKind (type)`, `MediaStreamTrackSourcesCallback`, `MediaStreamTrackSourcesCallback (type)`, `MutationEvent`, `MutationEvent (type)`, `NavigatorUserMediaError`, `NavigatorUserMediaError (type)`, `NavigatorUserMediaErrorCallback`, `NavigatorUserMediaErrorCallback (type)`, `NavigatorUserMediaSuccessCallback`, `NavigatorUserMediaSuccessCallback (type)`, `OESElementIndexUint`, `OESElementIndexUint (type)`, `OESStandardDerivatives`, `OESStandardDerivatives (type)`, `OESTextureFloat`, `OESTextureFloat (type)`, `OESTextureFloatLinear`, `OESTextureFloatLinear (type)`, `OESTextureHalfFloat`, `OESTextureHalfFloat (type)`, `OESTextureHalfFloatLinear`, `OESTextureHalfFloatLinear (type)`, `OESVertexArrayObject`, `OESVertexArrayObject (type)`, `OverconstrainedErrorEvent`, `OverconstrainedErrorEvent (type)`, `OverconstrainedErrorEventInit`, `OverconstrainedErrorEventInit (type)`, `OverflowEvent`, `OverflowEvent (type)`, `OverflowEventInit`, `OverflowEventInit (type)`, `Pbkdf2Params`, `Pbkdf2Params (type)`, `PositionError`, `PositionError (type)`, `QuickTimePluginReplacement`, `QuickTimePluginReplacement (type)`, `RGBColor`, `RGBColor (type)`, `RTCDataChannelStats`, `RTCDataChannelStats (type)`, `RTCIceCandidateEvent`, `RTCIceCandidateEvent (type)`, `RTCIceCandidateOrInit`, `RTCIceCandidateOrInit (type)`, `RTCInboundRTPStreamStats`, `RTCInboundRTPStreamStats (type)`, `RTCMediaStreamTrackStats`, `RTCMediaStreamTrackStats (type)`, `RTCOutboundRTPStreamStats`, `RTCOutboundRTPStreamStats (type)`, `RTCRTPStreamStats`, `RTCRTPStreamStats (type)`, `RTCRtpFecParameters`, `RTCRtpFecParameters (type)`, `RTCRtpRtxParameters`, `RTCRtpRtxParameters (type)`, `RTCStats`, `RTCStats (type)`, `RTCStatsCallback`, `RTCStatsCallback (type)`, `ReadableStreamSource`, `ReadableStreamSource (type)`, `Rect`, `Rect (type)`, `RequestAnimationFrameCallback`, `RequestAnimationFrameCallback (type)`, `RotationRate`, `RotationRate (type)`, `RsaHashedImportParams`, `RsaHashedImportParams (type)`, `RsaHashedKeyGenParams`, `RsaHashedKeyGenParams (type)`, `RsaKeyGenParams`, `RsaKeyGenParams (type)`, `RsaOaepParams`, `RsaOaepParams (type)`, `SQLError`, `SQLError (type)`, `SQLException`, `SQLException (type)`, `SQLResultSet`, `SQLResultSet (type)`, `SQLResultSetRowList`, `SQLResultSetRowList (type)`, `SQLStatementCallback`, `SQLStatementCallback (type)`, `SQLStatementErrorCallback`, `SQLStatementErrorCallback (type)`, `SQLTransaction`, `SQLTransaction (type)`, `SQLTransactionCallback`, `SQLTransactionCallback (type)`, `SQLTransactionErrorCallback`, `SQLTransactionErrorCallback (type)`, `SQLValue`, `SQLValue (type)`, `SVGAltGlyphDefElement`, `SVGAltGlyphDefElement (type)`, `SVGAltGlyphElement`, `SVGAltGlyphElement (type)`, `SVGAltGlyphItemElement`, `SVGAltGlyphItemElement (type)`, `SVGAnimateColorElement`, `SVGAnimateColorElement (type)`, `SVGCursorElement`, `SVGCursorElement (type)`, `SVGException`, `SVGException (type)`, `SVGExternalResourcesRequired`, `SVGExternalResourcesRequired (type)`, `SVGFontElement`, `SVGFontElement (type)`, `SVGFontFaceElement`, `SVGFontFaceElement (type)`, `SVGFontFaceFormatElement`, `SVGFontFaceFormatElement (type)`, `SVGFontFaceNameElement`, `SVGFontFaceNameElement (type)`, `SVGFontFaceSrcElement`, `SVGFontFaceSrcElement (type)`, `SVGFontFaceUriElement`, `SVGFontFaceUriElement (type)`, `SVGGlyphElement`, `SVGGlyphElement (type)`, `SVGGlyphRefElement`, `SVGGlyphRefElement (type)`, `SVGHKernElement`, `SVGHKernElement (type)`, `SVGMatrix`, `SVGMatrix (type)`, `SVGMissingGlyphElement`, `SVGMissingGlyphElement (type)`, `SVGPathSeg`, `SVGPathSeg (type)`, `SVGPathSegArcAbs`, `SVGPathSegArcAbs (type)`, `SVGPathSegArcRel`, `SVGPathSegArcRel (type)`, `SVGPathSegClosePath`, `SVGPathSegClosePath (type)`, `SVGPathSegCurvetoCubicAbs`, `SVGPathSegCurvetoCubicAbs (type)`, `SVGPathSegCurvetoCubicRel`, `SVGPathSegCurvetoCubicRel (type)`, `SVGPathSegCurvetoCubicSmoothAbs`, `SVGPathSegCurvetoCubicSmoothAbs (type)`, `SVGPathSegCurvetoCubicSmoothRel`, `SVGPathSegCurvetoCubicSmoothRel (type)`, `SVGPathSegCurvetoQuadraticAbs`, `SVGPathSegCurvetoQuadraticAbs (type)`, `SVGPathSegCurvetoQuadraticRel`, `SVGPathSegCurvetoQuadraticRel (type)`, `SVGPathSegCurvetoQuadraticSmoothAbs`, `SVGPathSegCurvetoQuadraticSmoothAbs (type)`, `SVGPathSegCurvetoQuadraticSmoothRel`, `SVGPathSegCurvetoQuadraticSmoothRel (type)`, `SVGPathSegLinetoAbs`, `SVGPathSegLinetoAbs (type)`, `SVGPathSegLinetoHorizontalAbs`, `SVGPathSegLinetoHorizontalAbs (type)`, `SVGPathSegLinetoHorizontalRel`, `SVGPathSegLinetoHorizontalRel (type)`, `SVGPathSegLinetoRel`, `SVGPathSegLinetoRel (type)`, `SVGPathSegLinetoVerticalAbs`, `SVGPathSegLinetoVerticalAbs (type)`, `SVGPathSegLinetoVerticalRel`, `SVGPathSegLinetoVerticalRel (type)`, `SVGPathSegList`, `SVGPathSegList (type)`, `SVGPathSegMovetoAbs`, `SVGPathSegMovetoAbs (type)`, `SVGPathSegMovetoRel`, `SVGPathSegMovetoRel (type)`, `SVGPoint`, `SVGPoint (type)`, `SVGRect`, `SVGRect (type)`, `SVGRenderingIntent`, `SVGRenderingIntent (type)`, `SVGTRefElement`, `SVGTRefElement (type)`, `SVGVKernElement`, `SVGVKernElement (type)`, `SVGViewSpec`, `SVGViewSpec (type)`, `SVGZoomAndPan`, `SVGZoomAndPan (type)`, `SVGZoomEvent`, `SVGZoomEvent (type)`, `SiteBoundCredential`, `SiteBoundCredential (type)`, `SiteBoundCredentialData`, `SiteBoundCredentialData (type)`, `Slotable`, `Slotable (type)`, `StorageErrorCallback`, `StorageErrorCallback (type)`, `StorageInfo`, `StorageInfo (type)`, `StorageQuota`, `StorageQuota (type)`, `StorageQuotaCallback`, `StorageQuotaCallback (type)`, `StorageUsageCallback`, `StorageUsageCallback (type)`, `StringCallback`, `StringCallback (type)`, `StringOrBinaryData`, `StringOrBinaryData (type)`, `StringOrStrings`, `StringOrStrings (type)`, `StyleMedia`, `StyleMedia (type)`, `Track`, `Track (type)`, `URLSearchParamsInit`, `URLSearchParamsInit (type)`, `UserMessageHandler`, `UserMessageHandler (type)`, `UserMessageHandlersNamespace`, `UserMessageHandlersNamespace (type)`, `VTTRegionList`, `VTTRegionList (type)`, `VoidCallback`, `VoidCallback (type)`, `WebGLCompressedTextureATC`, `WebGLCompressedTextureATC (type)`, `WebGLCompressedTexturePVRTC`, `WebGLCompressedTexturePVRTC (type)`, `WebGLCompressedTextureS3TC`, `WebGLCompressedTextureS3TC (type)`, `WebGLDebugRendererInfo`, `WebGLDebugRendererInfo (type)`, `WebGLDebugShaders`, `WebGLDebugShaders (type)`, `WebGLDepthTexture`, `WebGLDepthTexture (type)`, `WebGLDrawBuffers`, `WebGLDrawBuffers (type)`, `WebGLLoseContext`, `WebGLLoseContext (type)`, `WebGPUBuffer`, `WebGPUBuffer (type)`, `WebGPUCommandBuffer`, `WebGPUCommandBuffer (type)`, `WebGPUCommandQueue`, `WebGPUCommandQueue (type)`, `WebGPUComputeCommandEncoder`, `WebGPUComputeCommandEncoder (type)`, `WebGPUComputePipelineState`, `WebGPUComputePipelineState (type)`, `WebGPUDepthStencilDescriptor`, `WebGPUDepthStencilDescriptor (type)`, `WebGPUDepthStencilState`, `WebGPUDepthStencilState (type)`, `WebGPUDrawable`, `WebGPUDrawable (type)`, `WebGPUFunction`, `WebGPUFunction (type)`, `WebGPULibrary`, `WebGPULibrary (type)`, `WebGPURenderCommandEncoder`, `WebGPURenderCommandEncoder (type)`, `WebGPURenderPassAttachmentDescriptor`, `WebGPURenderPassAttachmentDescriptor (type)`, `WebGPURenderPassColorAttachmentDescriptor`, `WebGPURenderPassColorAttachmentDescriptor (type)`, `WebGPURenderPassDepthAttachmentDescriptor`, `WebGPURenderPassDepthAttachmentDescriptor (type)`, `WebGPURenderPassDescriptor`, `WebGPURenderPassDescriptor (type)`, `WebGPURenderPipelineColorAttachmentDescriptor`, `WebGPURenderPipelineColorAttachmentDescriptor (type)`, `WebGPURenderPipelineDescriptor`, `WebGPURenderPipelineDescriptor (type)`, `WebGPURenderPipelineState`, `WebGPURenderPipelineState (type)`, `WebGPURenderingContext`, `WebGPURenderingContext (type)`, `WebGPUSize`, `WebGPUSize (type)`, `WebGPUTexture`, `WebGPUTexture (type)`, `WebGPUTextureDescriptor`, `WebGPUTextureDescriptor (type)`, `WebKitAnimationEvent`, `WebKitAnimationEvent (type)`, `WebKitAnimationEventInit`, `WebKitAnimationEventInit (type)`, `WebKitCSSMatrix`, `WebKitCSSMatrix (type)`, `WebKitCSSRegionRule`, `WebKitCSSRegionRule (type)`, `WebKitCSSViewportRule`, `WebKitCSSViewportRule (type)`, `WebKitMediaKeyError`, `WebKitMediaKeyError (type)`, `WebKitMediaKeyMessageEvent`, `WebKitMediaKeyMessageEvent (type)`, `WebKitMediaKeyMessageEventInit`, `WebKitMediaKeyMessageEventInit (type)`, `WebKitMediaKeyNeededEvent`, `WebKitMediaKeyNeededEvent (type)`, `WebKitMediaKeyNeededEventInit`, `WebKitMediaKeyNeededEventInit (type)`, `WebKitMediaKeySession`, `WebKitMediaKeySession (type)`, `WebKitMediaKeys`, `WebKitMediaKeys (type)`, `WebKitNamedFlow`, `WebKitNamedFlow (type)`, `WebKitNamespace`, `WebKitNamespace (type)`, `WebKitPlaybackTargetAvailabilityEvent`, `WebKitPlaybackTargetAvailabilityEvent (type)`, `WebKitPlaybackTargetAvailabilityEventInit`, `WebKitPlaybackTargetAvailabilityEventInit (type)`, `WebKitPoint`, `WebKitPoint (type)`, `WebKitSubtleCrypto`, `WebKitSubtleCrypto (type)`, `WebKitTransitionEvent`, `WebKitTransitionEvent (type)`, `WebKitTransitionEventInit`, `WebKitTransitionEventInit (type)`, `XMLHttpRequestBody`, `XMLHttpRequestBody (type)`, `XMLHttpRequestProgressEvent`, `XMLHttpRequestProgressEvent (type)`, `XPathException`, `XPathException (type)`, `gTypeANGLEInstancedArrays`, `gTypeAcceleration`, `gTypeAesCbcCfbParams`, `gTypeAesCtrParams`, `gTypeAesGcmParams`, `gTypeAesKeyParams`, `gTypeApplePayError`, `gTypeApplePayLineItem`, `gTypeApplePayPayment`, `gTypeApplePayPaymentAuthorizationResult`, `gTypeApplePayPaymentAuthorizedEvent`, `gTypeApplePayPaymentContact`, `gTypeApplePayPaymentMethod`, `gTypeApplePayPaymentMethodSelectedEvent`, `gTypeApplePayPaymentMethodUpdate`, `gTypeApplePayPaymentPass`, `gTypeApplePayPaymentRequest`, `gTypeApplePayPaymentToken`, `gTypeApplePaySession`, `gTypeApplePayShippingContactSelectedEvent`, `gTypeApplePayShippingContactUpdate`, `gTypeApplePayShippingMethod`, `gTypeApplePayShippingMethodSelectedEvent`, `gTypeApplePayShippingMethodUpdate`, `gTypeApplePayValidateMerchantEvent`, `gTypeApplicationCache`, `gTypeAutocompleteErrorEvent`, `gTypeAutocompleteErrorEventInit`, `gTypeBasicCredential`, `gTypeBeforeLoadEvent`, `gTypeBeforeLoadEventInit`, `gTypeCSS`, `gTypeCSSFontFaceLoadEvent`, `gTypeCSSFontFaceLoadEventInit`, `gTypeCSSPrimitiveValue`, `gTypeCSSUnknownRule`, `gTypeCSSValue`, `gTypeCSSValueList`, `gTypeCanvasProxy`, `gTypeCommandLineAPIHost`, `gTypeConstrainLongRange`, `gTypeCoordinates`, `gTypeCounter`, `gTypeCryptoAlgorithmParameters`, `gTypeDOMError`, `gTypeDOMNamedFlowCollection`, `gTypeDatabase`, `gTypeDeviceProximityEvent`, `gTypeDeviceProximityEventInit`, `gTypeDocumentAndElementEventHandlers`, `gTypeEXTBlendMinMax`, `gTypeEXTFragDepth`, `gTypeEXTShaderTextureLOD`, `gTypeEXTTextureFilterAnisotropic`, `gTypeEXTsRGB`, `gTypeEcKeyParams`, `gTypeEcdhKeyDeriveParams`, `gTypeEcdsaParams`, `gTypeFileError`, `gTypeFileException`, `gTypeGeoposition`, `gTypeGlobalCrypto`, `gTypeGlobalPerformance`, `gTypeHTMLAppletElement`, `gTypeHTMLAttachmentElement`, `gTypeHTMLDocument`, `gTypeHTMLKeygenElement`, `gTypeHkdfParams`, `gTypeHmacKeyParams`, `gTypeInspectorFrontendHost`, `gTypeLongRange`, `gTypeMediaController`, `gTypeMediaControlsHost`, `gTypeMediaRemoteControls`, `gTypeMediaStreamEvent`, `gTypeMediaStreamEventInit`, `gTypeMutationEvent`, `gTypeNavigatorUserMediaError`, `gTypeOESElementIndexUint`, `gTypeOESStandardDerivatives`, `gTypeOESTextureFloat`, `gTypeOESTextureFloatLinear`, `gTypeOESTextureHalfFloat`, `gTypeOESTextureHalfFloatLinear`, `gTypeOESVertexArrayObject`, `gTypeOverconstrainedErrorEvent`, `gTypeOverconstrainedErrorEventInit`, `gTypeOverflowEvent`, `gTypeOverflowEventInit`, `gTypePbkdf2Params`, `gTypePositionError`, `gTypeQuickTimePluginReplacement`, `gTypeRGBColor`, `gTypeRTCDataChannelStats`, `gTypeRTCIceCandidateEvent`, `gTypeRTCInboundRTPStreamStats`, `gTypeRTCMediaStreamTrackStats`, `gTypeRTCOutboundRTPStreamStats`, `gTypeRTCRTPStreamStats`, `gTypeRTCRtpFecParameters`, `gTypeRTCRtpRtxParameters`, `gTypeRTCStats`, `gTypeReadableStreamSource`, `gTypeRect`, `gTypeRotationRate`, `gTypeRsaHashedImportParams`, `gTypeRsaHashedKeyGenParams`, `gTypeRsaKeyGenParams`, `gTypeRsaOaepParams`, `gTypeSQLError`, `gTypeSQLException`, `gTypeSQLResultSet`, `gTypeSQLResultSetRowList`, `gTypeSQLTransaction`, `gTypeSVGAltGlyphDefElement`, `gTypeSVGAltGlyphElement`, `gTypeSVGAltGlyphItemElement`, `gTypeSVGAnimateColorElement`, `gTypeSVGCursorElement`, `gTypeSVGException`, `gTypeSVGExternalResourcesRequired`, `gTypeSVGFontElement`, `gTypeSVGFontFaceElement`, `gTypeSVGFontFaceFormatElement`, `gTypeSVGFontFaceNameElement`, `gTypeSVGFontFaceSrcElement`, `gTypeSVGFontFaceUriElement`, `gTypeSVGGlyphElement`, `gTypeSVGGlyphRefElement`, `gTypeSVGHKernElement`, `gTypeSVGMatrix`, `gTypeSVGMissingGlyphElement`, `gTypeSVGPathSeg`, `gTypeSVGPathSegArcAbs`, `gTypeSVGPathSegArcRel`, `gTypeSVGPathSegClosePath`, `gTypeSVGPathSegCurvetoCubicAbs`, `gTypeSVGPathSegCurvetoCubicRel`, `gTypeSVGPathSegCurvetoCubicSmoothAbs`, `gTypeSVGPathSegCurvetoCubicSmoothRel`, `gTypeSVGPathSegCurvetoQuadraticAbs`, `gTypeSVGPathSegCurvetoQuadraticRel`, `gTypeSVGPathSegCurvetoQuadraticSmoothAbs`, `gTypeSVGPathSegCurvetoQuadraticSmoothRel`, `gTypeSVGPathSegLinetoAbs`, `gTypeSVGPathSegLinetoHorizontalAbs`, `gTypeSVGPathSegLinetoHorizontalRel`, `gTypeSVGPathSegLinetoRel`, `gTypeSVGPathSegLinetoVerticalAbs`, `gTypeSVGPathSegLinetoVerticalRel`, `gTypeSVGPathSegList`, `gTypeSVGPathSegMovetoAbs`, `gTypeSVGPathSegMovetoRel`, `gTypeSVGPoint`, `gTypeSVGRect`, `gTypeSVGRenderingIntent`, `gTypeSVGTRefElement`, `gTypeSVGVKernElement`, `gTypeSVGViewSpec`, `gTypeSVGZoomAndPan`, `gTypeSVGZoomEvent`, `gTypeSiteBoundCredential`, `gTypeSiteBoundCredentialData`, `gTypeSlotable`, `gTypeStorageInfo`, `gTypeStorageQuota`, `gTypeStyleMedia`, `gTypeUserMessageHandler`, `gTypeUserMessageHandlersNamespace`, `gTypeVTTRegionList`, `gTypeWebGLCompressedTextureATC`, `gTypeWebGLCompressedTexturePVRTC`, `gTypeWebGLCompressedTextureS3TC`, `gTypeWebGLDebugRendererInfo`, `gTypeWebGLDebugShaders`, `gTypeWebGLDepthTexture`, `gTypeWebGLDrawBuffers`, `gTypeWebGLLoseContext`, `gTypeWebGPUBuffer`, `gTypeWebGPUCommandBuffer`, `gTypeWebGPUCommandQueue`, `gTypeWebGPUComputeCommandEncoder`, `gTypeWebGPUComputePipelineState`, `gTypeWebGPUDepthStencilDescriptor`, `gTypeWebGPUDepthStencilState`, `gTypeWebGPUDrawable`, `gTypeWebGPUFunction`, `gTypeWebGPULibrary`, `gTypeWebGPURenderCommandEncoder`, `gTypeWebGPURenderPassAttachmentDescriptor`, `gTypeWebGPURenderPassColorAttachmentDescriptor`, `gTypeWebGPURenderPassDepthAttachmentDescriptor`, `gTypeWebGPURenderPassDescriptor`, `gTypeWebGPURenderPipelineColorAttachmentDescriptor`, `gTypeWebGPURenderPipelineDescriptor`, `gTypeWebGPURenderPipelineState`, `gTypeWebGPURenderingContext`, `gTypeWebGPUSize`, `gTypeWebGPUTexture`, `gTypeWebGPUTextureDescriptor`, `gTypeWebKitAnimationEvent`, `gTypeWebKitAnimationEventInit`, `gTypeWebKitCSSMatrix`, `gTypeWebKitCSSRegionRule`, `gTypeWebKitCSSViewportRule`, `gTypeWebKitMediaKeyError`, `gTypeWebKitMediaKeyMessageEvent`, `gTypeWebKitMediaKeyMessageEventInit`, `gTypeWebKitMediaKeyNeededEvent`, `gTypeWebKitMediaKeyNeededEventInit`, `gTypeWebKitMediaKeySession`, `gTypeWebKitMediaKeys`, `gTypeWebKitNamedFlow`, `gTypeWebKitNamespace`, `gTypeWebKitPlaybackTargetAvailabilityEvent`, `gTypeWebKitPlaybackTargetAvailabilityEventInit`, `gTypeWebKitPoint`, `gTypeWebKitSubtleCrypto`, `gTypeWebKitTransitionEvent`, `gTypeWebKitTransitionEventInit`, `gTypeXMLHttpRequestProgressEvent`, `gTypeXPathException`, `gTypeXPathNSResolver`, `noANGLEInstancedArrays`, `noAcceleration`, `noAesCbcCfbParams`, `noAesCtrParams`, `noAesGcmParams`, `noAesKeyParams`, `noAlgorithm`, `noApplePayError`, `noApplePayLineItem`, `noApplePayPayment`, `noApplePayPaymentAuthorizationResult`, `noApplePayPaymentAuthorizedEvent`, `noApplePayPaymentContact`, `noApplePayPaymentMethod`, `noApplePayPaymentMethodSelectedEvent`, `noApplePayPaymentMethodUpdate`, `noApplePayPaymentPass`, `noApplePayPaymentRequest`, `noApplePayPaymentToken`, `noApplePaySession`, `noApplePayShippingContactSelectedEvent`, `noApplePayShippingContactUpdate`, `noApplePayShippingMethod`, `noApplePayShippingMethodSelectedEvent`, `noApplePayShippingMethodUpdate`, `noApplePayValidateMerchantEvent`, `noApplicationCache`, `noAudioBufferCallback`, `noAutocompleteErrorEvent`, `noAutocompleteErrorEventInit`, `noBasicCredential`, `noBeforeLoadEvent`, `noBeforeLoadEventInit`, `noCSS`, `noCSSFontFaceLoadEvent`, `noCSSFontFaceLoadEventInit`, `noCSSPrimitiveValue`, `noCSSUnknownRule`, `noCSSValue`, `noCSSValueList`, `noCanvasProxy`, `noCommandLineAPIHost`, `noConstrainLongRange`, `noCoordinates`, `noCounter`, `noCryptoAlgorithmParameters`, `noCryptoOperationData`, `noDOMError`, `noDOMNamedFlowCollection`, `noDatabase`, `noDatabaseCallback`, `noDeviceProximityEvent`, `noDeviceProximityEventInit`, `noDocumentAndElementEventHandlers`, `noEXTBlendMinMax`, `noEXTFragDepth`, `noEXTShaderTextureLOD`, `noEXTTextureFilterAnisotropic`, `noEXTsRGB`, `noEcKeyParams`, `noEcdhKeyDeriveParams`, `noEcdsaParams`, `noFileError`, `noFileException`, `noGeoposition`, `noGlobalCrypto`, `noGlobalPerformance`, `noHTMLAppletElement`, `noHTMLAttachmentElement`, `noHTMLDocument`, `noHTMLKeygenElement`, `noHkdfParams`, `noHmacKeyParams`, `noInspectorFrontendHost`, `noLongRange`, `noMediaController`, `noMediaControlsHost`, `noMediaQueryListListener`, `noMediaRemoteControls`, `noMediaStreamEvent`, `noMediaStreamEventInit`, `noMediaStreamTrackSourcesCallback`, `noMutationEvent`, `noNavigatorUserMediaError`, `noNavigatorUserMediaErrorCallback`, `noNavigatorUserMediaSuccessCallback`, `noOESElementIndexUint`, `noOESStandardDerivatives`, `noOESTextureFloat`, `noOESTextureFloatLinear`, `noOESTextureHalfFloat`, `noOESTextureHalfFloatLinear`, `noOESVertexArrayObject`, `noOverconstrainedErrorEvent`, `noOverconstrainedErrorEventInit`, `noOverflowEvent`, `noOverflowEventInit`, `noPbkdf2Params`, `noPositionError`, `noQuickTimePluginReplacement`, `noRGBColor`, `noRTCDataChannelStats`, `noRTCIceCandidateEvent`, `noRTCInboundRTPStreamStats`, `noRTCMediaStreamTrackStats`, `noRTCOutboundRTPStreamStats`, `noRTCRTPStreamStats`, `noRTCRtpFecParameters`, `noRTCRtpRtxParameters`, `noRTCStats`, `noRTCStatsCallback`, `noReadableStreamSource`, `noRect`, `noRequestAnimationFrameCallback`, `noRotationRate`, `noRsaHashedImportParams`, `noRsaHashedKeyGenParams`, `noRsaKeyGenParams`, `noRsaOaepParams`, `noSQLError`, `noSQLException`, `noSQLResultSet`, `noSQLResultSetRowList`, `noSQLStatementCallback`, `noSQLStatementErrorCallback`, `noSQLTransaction`, `noSQLTransactionCallback`, `noSQLTransactionErrorCallback`, `noSVGAltGlyphDefElement`, `noSVGAltGlyphElement`, `noSVGAltGlyphItemElement`, `noSVGAnimateColorElement`, `noSVGCursorElement`, `noSVGException`, `noSVGExternalResourcesRequired`, `noSVGFontElement`, `noSVGFontFaceElement`, `noSVGFontFaceFormatElement`, `noSVGFontFaceNameElement`, `noSVGFontFaceSrcElement`, `noSVGFontFaceUriElement`, `noSVGGlyphElement`, `noSVGGlyphRefElement`, `noSVGHKernElement`, `noSVGMatrix`, `noSVGMissingGlyphElement`, `noSVGPathSeg`, `noSVGPathSegArcAbs`, `noSVGPathSegArcRel`, `noSVGPathSegClosePath`, `noSVGPathSegCurvetoCubicAbs`, `noSVGPathSegCurvetoCubicRel`, `noSVGPathSegCurvetoCubicSmoothAbs`, `noSVGPathSegCurvetoCubicSmoothRel`, `noSVGPathSegCurvetoQuadraticAbs`, `noSVGPathSegCurvetoQuadraticRel`, `noSVGPathSegCurvetoQuadraticSmoothAbs`, `noSVGPathSegCurvetoQuadraticSmoothRel`, `noSVGPathSegLinetoAbs`, `noSVGPathSegLinetoHorizontalAbs`, `noSVGPathSegLinetoHorizontalRel`, `noSVGPathSegLinetoRel`, `noSVGPathSegLinetoVerticalAbs`, `noSVGPathSegLinetoVerticalRel`, `noSVGPathSegList`, `noSVGPathSegMovetoAbs`, `noSVGPathSegMovetoRel`, `noSVGPoint`, `noSVGRect`, `noSVGRenderingIntent`, `noSVGTRefElement`, `noSVGVKernElement`, `noSVGViewSpec`, `noSVGZoomAndPan`, `noSVGZoomEvent`, `noSiteBoundCredential`, `noSiteBoundCredentialData`, `noSlotable`, `noStorageErrorCallback`, `noStorageInfo`, `noStorageQuota`, `noStorageQuotaCallback`, `noStorageUsageCallback`, `noStyleMedia`, `noUserMessageHandler`, `noUserMessageHandlersNamespace`, `noVTTRegionList`, `noVoidCallback`, `noWebGLCompressedTextureATC`, `noWebGLCompressedTexturePVRTC`, `noWebGLCompressedTextureS3TC`, `noWebGLDebugRendererInfo`, `noWebGLDebugShaders`, `noWebGLDepthTexture`, `noWebGLDrawBuffers`, `noWebGLLoseContext`, `noWebGPUBuffer`, `noWebGPUCommandBuffer`, `noWebGPUCommandQueue`, `noWebGPUComputeCommandEncoder`, `noWebGPUComputePipelineState`, `noWebGPUDepthStencilDescriptor`, `noWebGPUDepthStencilState`, `noWebGPUDrawable`, `noWebGPUFunction`, `noWebGPULibrary`, `noWebGPURenderCommandEncoder`, `noWebGPURenderPassAttachmentDescriptor`, `noWebGPURenderPassColorAttachmentDescriptor`, `noWebGPURenderPassDepthAttachmentDescriptor`, `noWebGPURenderPassDescriptor`, `noWebGPURenderPipelineColorAttachmentDescriptor`, `noWebGPURenderPipelineDescriptor`, `noWebGPURenderPipelineState`, `noWebGPURenderingContext`, `noWebGPUSize`, `noWebGPUTexture`, `noWebGPUTextureDescriptor`, `noWebKitAnimationEvent`, `noWebKitAnimationEventInit`, `noWebKitCSSMatrix`, `noWebKitCSSRegionRule`, `noWebKitCSSViewportRule`, `noWebKitMediaKeyError`, `noWebKitMediaKeyMessageEvent`, `noWebKitMediaKeyMessageEventInit`, `noWebKitMediaKeyNeededEvent`, `noWebKitMediaKeyNeededEventInit`, `noWebKitMediaKeySession`, `noWebKitMediaKeys`, `noWebKitNamedFlow`, `noWebKitNamespace`, `noWebKitPlaybackTargetAvailabilityEvent`, `noWebKitPlaybackTargetAvailabilityEventInit`, `noWebKitPoint`, `noWebKitSubtleCrypto`, `noWebKitTransitionEvent`, `noWebKitTransitionEventInit`, `noXMLHttpRequestProgressEvent`, `noXPathException`, `toAlgorithm`, `toAudioContext`, `toBasicCredential`, `toBinaryData`, `toBufferDataSource`, `toCSSValue`, `toCredentialBodyType`, `toCryptoAlgorithmParameters`, `toCryptoKeyOrKeyPair`, `toCryptoOperationData`, `toDOMError`, `toDocumentAndElementEventHandlers`, `toGlobalCrypto`, `toGlobalPerformance`, `toHTMLOptionElementOrGroup`, `toIDBCursorSource`, `toIDBRequestResult`, `toIDBRequestSource`, `toKeyData`, `toLongRange`, `toMutationCallback`, `toProgressEvent`, `toRTCIceCandidateOrInit`, `toRTCRTPStreamStats`, `toRTCStats`, `toRsaKeyGenParams`, `toSVGExternalResourcesRequired`, `toSVGPathSeg`, `toSVGZoomAndPan`, `toSiteBoundCredential`, `toSiteBoundCredentialData`, `toSlotable`, `toTrack`, `toWebGPURenderPassAttachmentDescriptor`, `unANGLEInstancedArrays`, `unAcceleration`, `unAesCbcCfbParams`, `unAesCtrParams`, `unAesGcmParams`, `unAesKeyParams`, `unAlgorithm`, `unApplePayError`, `unApplePayLineItem`, `unApplePayPayment`, `unApplePayPaymentAuthorizationResult`, `unApplePayPaymentAuthorizedEvent`, `unApplePayPaymentContact`, `unApplePayPaymentMethod`, `unApplePayPaymentMethodSelectedEvent`, `unApplePayPaymentMethodUpdate`, `unApplePayPaymentPass`, `unApplePayPaymentRequest`, `unApplePayPaymentToken`, `unApplePaySession`, `unApplePayShippingContactSelectedEvent`, `unApplePayShippingContactUpdate`, `unApplePayShippingMethod`, `unApplePayShippingMethodSelectedEvent`, `unApplePayShippingMethodUpdate`, `unApplePayValidateMerchantEvent`, `unApplicationCache`, `unAutocompleteErrorEvent`, `unAutocompleteErrorEventInit`, `unBasicCredential`, `unBeforeLoadEvent`, `unBeforeLoadEventInit`, `unBinaryData`, `unBufferDataSource`, `unCSS`, `unCSSFontFaceLoadEvent`, `unCSSFontFaceLoadEventInit`, `unCSSPrimitiveValue`, `unCSSUnknownRule`, `unCSSValue`, `unCSSValueList`, `unCanvasProxy`, `unCanvasStyle`, `unCommandLineAPIHost`, `unConstrainLongRange`, `unCoordinates`, `unCounter`, `unCredentialBodyType`, `unCryptoAlgorithmParameters`, `unCryptoKeyOrKeyPair`, `unCryptoOperationData`, `unDOMError`, `unDOMNamedFlowCollection`, `unDatabase`, `unDeviceProximityEvent`, `unDeviceProximityEventInit`, `unDocumentAndElementEventHandlers`, `unEXTBlendMinMax`, `unEXTFragDepth`, `unEXTShaderTextureLOD`, `unEXTTextureFilterAnisotropic`, `unEXTsRGB`, `unEcKeyParams`, `unEcdhKeyDeriveParams`, `unEcdsaParams`, `unFileError`, `unFileException`, `unGeoposition`, `unGlobalCrypto`, `unGlobalPerformance`, `unHTMLAppletElement`, `unHTMLAttachmentElement`, `unHTMLDocument`, `unHTMLElementOrLong`, `unHTMLKeygenElement`, `unHTMLOptionElementOrGroup`, `unHkdfParams`, `unHmacKeyParams`, `unIDBCursorSource`, `unIDBKeyPath`, `unIDBRequestResult`, `unIDBRequestSource`, `unInspectorFrontendHost`, `unKeyData`, `unLongRange`, `unMediaController`, `unMediaControlsHost`, `unMediaRemoteControls`, `unMediaStreamEvent`, `unMediaStreamEventInit`, `unMediaStreamTrackOrKind`, `unMutationCallback`, `unMutationEvent`, `unNavigatorUserMediaError`, `unOESElementIndexUint`, `unOESStandardDerivatives`, `unOESTextureFloat`, `unOESTextureFloatLinear`, `unOESTextureHalfFloat`, `unOESTextureHalfFloatLinear`, `unOESVertexArrayObject`, `unOverconstrainedErrorEvent`, `unOverconstrainedErrorEventInit`, `unOverflowEvent`, `unOverflowEventInit`, `unPbkdf2Params`, `unPositionError`, `unQuickTimePluginReplacement`, `unRGBColor`, `unRTCDataChannelStats`, `unRTCIceCandidateEvent`, `unRTCIceCandidateOrInit`, `unRTCInboundRTPStreamStats`, `unRTCMediaStreamTrackStats`, `unRTCOutboundRTPStreamStats`, `unRTCRTPStreamStats`, `unRTCRtpFecParameters`, `unRTCRtpRtxParameters`, `unRTCStats`, `unReadableStreamSource`, `unRect`, `unRotationRate`, `unRsaHashedImportParams`, `unRsaHashedKeyGenParams`, `unRsaKeyGenParams`, `unRsaOaepParams`, `unSQLError`, `unSQLException`, `unSQLResultSet`, `unSQLResultSetRowList`, `unSQLTransaction`, `unSQLValue`, `unSVGAltGlyphDefElement`, `unSVGAltGlyphElement`, `unSVGAltGlyphItemElement`, `unSVGAnimateColorElement`, `unSVGCursorElement`, `unSVGException`, `unSVGExternalResourcesRequired`, `unSVGFontElement`, `unSVGFontFaceElement`, `unSVGFontFaceFormatElement`, `unSVGFontFaceNameElement`, `unSVGFontFaceSrcElement`, `unSVGFontFaceUriElement`, `unSVGGlyphElement`, `unSVGGlyphRefElement`, `unSVGHKernElement`, `unSVGMatrix`, `unSVGMissingGlyphElement`, `unSVGPathSeg`, `unSVGPathSegArcAbs`, `unSVGPathSegArcRel`, `unSVGPathSegClosePath`, `unSVGPathSegCurvetoCubicAbs`, `unSVGPathSegCurvetoCubicRel`, `unSVGPathSegCurvetoCubicSmoothAbs`, `unSVGPathSegCurvetoCubicSmoothRel`, `unSVGPathSegCurvetoQuadraticAbs`, `unSVGPathSegCurvetoQuadraticRel`, `unSVGPathSegCurvetoQuadraticSmoothAbs`, `unSVGPathSegCurvetoQuadraticSmoothRel`, `unSVGPathSegLinetoAbs`, `unSVGPathSegLinetoHorizontalAbs`, `unSVGPathSegLinetoHorizontalRel`, `unSVGPathSegLinetoRel`, `unSVGPathSegLinetoVerticalAbs`, `unSVGPathSegLinetoVerticalRel`, `unSVGPathSegList`, `unSVGPathSegMovetoAbs`, `unSVGPathSegMovetoRel`, `unSVGPoint`, `unSVGRect`, `unSVGRenderingIntent`, `unSVGTRefElement`, `unSVGVKernElement`, `unSVGViewSpec`, `unSVGZoomAndPan`, `unSVGZoomEvent`, `unSiteBoundCredential`, `unSiteBoundCredentialData`, `unSlotable`, `unStorageInfo`, `unStorageQuota`, `unStringOrBinaryData`, `unStringOrStrings`, `unStyleMedia`, `unTrack`, `unURLSearchParamsInit`, `unUserMessageHandler`, `unUserMessageHandlersNamespace`, `unVTTRegionList`, `unWebGLCompressedTextureATC`, `unWebGLCompressedTexturePVRTC`, `unWebGLCompressedTextureS3TC`, `unWebGLDebugRendererInfo`, `unWebGLDebugShaders`, `unWebGLDepthTexture`, `unWebGLDrawBuffers`, `unWebGLLoseContext`, `unWebGPUBuffer`, `unWebGPUCommandBuffer`, `unWebGPUCommandQueue`, `unWebGPUComputeCommandEncoder`, `unWebGPUComputePipelineState`, `unWebGPUDepthStencilDescriptor`, `unWebGPUDepthStencilState`, `unWebGPUDrawable`, `unWebGPUFunction`, `unWebGPULibrary`, `unWebGPURenderCommandEncoder`, `unWebGPURenderPassAttachmentDescriptor`, `unWebGPURenderPassColorAttachmentDescriptor`, `unWebGPURenderPassDepthAttachmentDescriptor`, `unWebGPURenderPassDescriptor`, `unWebGPURenderPipelineColorAttachmentDescriptor`, `unWebGPURenderPipelineDescriptor`, `unWebGPURenderPipelineState`, `unWebGPURenderingContext`, `unWebGPUSize`, `unWebGPUTexture`, `unWebGPUTextureDescriptor`, `unWebKitAnimationEvent`, `unWebKitAnimationEventInit`, `unWebKitCSSMatrix`, `unWebKitCSSRegionRule`, `unWebKitCSSViewportRule`, `unWebKitMediaKeyError`, `unWebKitMediaKeyMessageEvent`, `unWebKitMediaKeyMessageEventInit`, `unWebKitMediaKeyNeededEvent`, `unWebKitMediaKeyNeededEventInit`, `unWebKitMediaKeySession`, `unWebKitMediaKeys`, `unWebKitNamedFlow`, `unWebKitNamespace`, `unWebKitPlaybackTargetAvailabilityEvent`, `unWebKitPlaybackTargetAvailabilityEventInit`, `unWebKitPoint`, `unWebKitSubtleCrypto`, `unWebKitTransitionEvent`, `unWebKitTransitionEventInit`, `unXMLHttpRequestBody`, `unXMLHttpRequestProgressEvent`, `unXPathException`, `unXPathNSResolver`
+* `JSDOM.URL`: `createObjectURLSource`, `createObjectURLSource_`, `newURL''`
+* `JSDOM.VTTCue`: `getRegionId`, `setRegionId`
+* `JSDOM.VTTRegionList`: `getRegionById`, `getRegionByIdUnchecked`, `getRegionByIdUnsafe`, `getRegionById_`
+* `JSDOM.VideoPlaybackQuality`: `getTotalFrameDelay`
+* `JSDOM.VideoTrack`: `setLanguage`
+* `JSDOM.VoidCallback`: `newVoidCallback`, `newVoidCallbackAsync`, `newVoidCallbackSync`
+* `JSDOM.WebGL2RenderingContext`: `BLUE`, `GREEN`, `NUM_SAMPLE_COUNTS`, `PRIMITIVE_RESTART_FIXED_INDEX`, `TEXTURE_SWIZZLE_A`, `TEXTURE_SWIZZLE_B`, `TEXTURE_SWIZZLE_G`, `TEXTURE_SWIZZLE_R`, `bufferSubDataView`, `texSubImage3DView`
+* `JSDOM.WebGLCompressedTextureATC`: `COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL`, `COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL`, `COMPRESSED_RGB_ATC_WEBGL`
+* `JSDOM.WebGLDebugShaders`: `getTranslatedShaderSourceUnchecked`, `getTranslatedShaderSourceUnsafe`
+* `JSDOM.WebGLRenderingContextBase`: `STENCIL_INDEX`, `releaseShaderCompiler`, `texImage2DView`, `texSubImage2DView`
+* `JSDOM.WebGPUBuffer`: `getContents`
+* `JSDOM.WebGPUCommandBuffer`: `createComputeCommandEncoder`, `createComputeCommandEncoder_`, `createRenderCommandEncoderWithDescriptor`, `createRenderCommandEncoderWithDescriptor_`, `presentDrawable`
+* `JSDOM.WebGPUCommandQueue`: `createCommandBuffer`, `createCommandBufferUnchecked`, `createCommandBufferUnsafe`, `createCommandBuffer_`
+* `JSDOM.WebGPUComputeCommandEncoder`: `dispatch`, `setComputePipelineState`
+* `JSDOM.WebGPUDepthStencilDescriptor`: `getDepthCompareFunction`, `newWebGPUDepthStencilDescriptor`, `setDepthCompareFunction`
+* `JSDOM.WebGPULibrary`: `functionWithName`, `functionWithNameUnchecked`, `functionWithNameUnsafe`, `functionWithName_`, `getFunctionNames`, `getSourceCode`
+* `JSDOM.WebGPURenderCommandEncoder`: `drawPrimitives`, `endEncoding`, `setDepthStencilState`, `setFragmentBuffer`, `setRenderPipelineState`
+* `JSDOM.WebGPURenderPassAttachmentDescriptor`: `getLoadAction`, `getStoreAction`, `setLoadAction`, `setStoreAction`
+* `JSDOM.WebGPURenderPassColorAttachmentDescriptor`: `getClearColor`, `setClearColor`
+* `JSDOM.WebGPURenderPassDepthAttachmentDescriptor`: `getClearDepth`, `setClearDepth`
+* `JSDOM.WebGPURenderPassDescriptor`: `getDepthAttachment`, `newWebGPURenderPassDescriptor`
+* `JSDOM.WebGPURenderPipelineDescriptor`: `getDepthAttachmentPixelFormat`, `getFragmentFunction`, `getFragmentFunctionUnchecked`, `getFragmentFunctionUnsafe`, `getVertexFunction`, `getVertexFunctionUnchecked`, `getVertexFunctionUnsafe`, `newWebGPURenderPipelineDescriptor`, `setDepthAttachmentPixelFormat`, `setFragmentFunction`, `setVertexFunction`
+* `JSDOM.WebGPURenderingContext`: `CompareFunctionAlways`, `CompareFunctionEqual`, `CompareFunctionGreater`, `CompareFunctionGreaterEqual`, `CompareFunctionLess`, `CompareFunctionLessEqual`, `CompareFunctionNever`, `CompareFunctionNotEqual`, `LoadActionClear`, `LoadActionDontCare`, `LoadActionLoad`, `PixelFormatBGRA8Unorm`, `PixelFormatDepth32Float`, `PixelFormatInvalid`, `PixelFormatStencil8`, `PrimitiveTypeLine`, `PrimitiveTypeLineStrip`, `PrimitiveTypePoint`, `PrimitiveTypeTriangle`, `PrimitiveTypeTriangleStrip`, `StorageModeManaged`, `StorageModePrivate`, `StorageModeShared`, `StoreActionDontCare`, `StoreActionMultisampleResolve`, `StoreActionStore`, `TextureType1D`, `TextureType1DArray`, `TextureType2D`, `TextureType2DArray`, `TextureType2DMultisample`, `TextureType3D`, `TextureTypeCube`, `TextureTypeCubeArray`, `TextureUsagePixelFormatView`, `TextureUsageRenderTarget`, `TextureUsageShaderRead`, `TextureUsageShaderWrite`, `TextureUsageUnknown`, `createBufferUnchecked`, `createBufferUnsafe`, `createCommandQueue`, `createCommandQueueUnchecked`, `createCommandQueueUnsafe`, `createCommandQueue_`, `createComputePipelineState`, `createComputePipelineStateUnchecked`, `createComputePipelineStateUnsafe`, `createComputePipelineState_`, `createDepthStencilState`, `createDepthStencilStateUnchecked`, `createDepthStencilStateUnsafe`, `createDepthStencilState_`, `createLibrary`, `createLibrary_`, `createRenderPipelineState`, `createRenderPipelineStateUnchecked`, `createRenderPipelineStateUnsafe`, `createRenderPipelineState_`, `createTextureUnchecked`, `createTextureUnsafe`, `nextDrawable`, `nextDrawableUnchecked`, `nextDrawableUnsafe`, `nextDrawable_`
+* `JSDOM.WebGPUTextureDescriptor`: `getStorageMode`, `getTextureType`, `newWebGPUTextureDescriptor`, `setStorageMode`, `setTextureType`
+* `JSDOM.WebKitAnimationEvent`: `newWebKitAnimationEvent`
+* `JSDOM.WebKitCSSMatrix`: `newWebKitCSSMatrix`
+* `JSDOM.WebKitMediaKeyError`: `MEDIA_KEYERR_CLIENT`, `MEDIA_KEYERR_DOMAIN`, `MEDIA_KEYERR_HARDWARECHANGE`, `MEDIA_KEYERR_OUTPUT`, `MEDIA_KEYERR_SERVICE`, `MEDIA_KEYERR_UNKNOWN`, `getSystemCode`
+* `JSDOM.WebKitMediaKeyMessageEvent`: `getDestinationURL`, `newWebKitMediaKeyMessageEvent`
+* `JSDOM.WebKitMediaKeyNeededEvent`: `newWebKitMediaKeyNeededEvent`
+* `JSDOM.WebKitMediaKeySession`: `webKitKeyAdded`, `webKitKeyError`, `webKitKeyMessage`
+* `JSDOM.WebKitMediaKeys`: `newWebKitMediaKeys`
+* `JSDOM.WebKitNamedFlow`: `getContent_`, `getFirstEmptyRegionIndex`, `getOverset`, `getRegions`, `getRegionsByContent`, `getRegionsByContent_`, `getRegions_`
+* `JSDOM.WebKitNamespace`: `getMessageHandlers`
+* `JSDOM.WebKitPlaybackTargetAvailabilityEvent`: `getAvailability`, `newWebKitPlaybackTargetAvailabilityEvent`
+* `JSDOM.WebKitPoint`: `newWebKitPoint`
+* `JSDOM.WebKitTransitionEvent`: `newWebKitTransitionEvent`
+* `JSDOM.WebSocket`: `newWebSocket'`, `sendView`
+* `JSDOM.WheelEvent`: `getWebkitDirectionInvertedFromDevice`, `getWheelDelta`, `getWheelDeltaX`, `getWheelDeltaY`, `initWebKitWheelEvent`
+* `JSDOM.Window`: `collectMatchingElementsInFlatTree`, `collectMatchingElementsInFlatTree_`, `decodeURI`, `decodeURIComponent`, `decodeURIComponent_`, `decodeURI_`, `encodeURI`, `encodeURIComponent`, `encodeURIComponent_`, `encodeURI_`, `find`, `find_`, `gestureChange`, `gestureEnd`, `gestureStart`, `getApplicationCache`, `getDefaultStatus`, `getDefaultstatus`, `getMatchedCSSRules`, `getMatchedCSSRules_`, `getOffscreenBuffering`, `getOpenerUnchecked`, `getOpenerUnsafe`, `getStyleMedia`, `getWebkitIndexedDB`, `getWebkitStorageInfo`, `matchingElementInFlatTree`, `matchingElementInFlatTreeUnchecked`, `matchingElementInFlatTreeUnsafe`, `matchingElementInFlatTree_`, `openDatabase`, `openDatabaseUnchecked`, `openDatabaseUnsafe`, `openDatabase_`, `setDefaultStatus`, `setDefaultstatus`, `showModalDialog`, `showModalDialog_`, `webKitDeviceProximity`, `webkitCancelAnimationFrame`, `webkitCancelRequestAnimationFrame`, `webkitConvertPointFromNodeToPage`, `webkitConvertPointFromNodeToPage_`, `webkitConvertPointFromPageToNode`, `webkitConvertPointFromPageToNode_`, `webkitRequestAnimationFrame`, `webkitRequestAnimationFrame_`
+* `JSDOM.WindowEventHandlers`: `orientationChange`
+* `JSDOM.WorkerNavigator`: `getWebkitPersistentStorage`, `getWebkitTemporaryStorage`
+* `JSDOM.XMLHttpRequest`: `getResponseTextUnchecked`, `getResponseTextUnsafe`
+* `JSDOM.XMLHttpRequestProgressEvent`: `getTotalSize`
+* `JSDOM.XPathException`: `INVALID_EXPRESSION_ERR`, `TYPE_ERR`, `toString`, `toString_`
+* `JSDOM.XSLTProcessor`: `getParameterUnchecked`, `getParameterUnsafe`
+
+</details>
+
diff --git a/ChangeLog.md b/ChangeLog.md
new file mode 100644
--- /dev/null
+++ b/ChangeLog.md
@@ -0,0 +1,51 @@
+# Revision history for jsaddle-dom
+
+## 0.10.0.0
+
+A major release: the bindings are regenerated from current specifications
+by a new generator, `dom-gen` (in the ghcjs-integration repository),
+replacing domconv-webkit and the WebKitGTK 2.17.2 IDL the 0.9 series was
+generated from.  Expect to update code.  ghcjs-dom 0.10 has the same API.
+
+* Source of truth: the Web IDL of the browser specifications in
+  [webref](https://github.com/w3c/webref) (`@webref/idl` 3.86.0) and MDN's
+  browser-compat-data (8.1.8).  An interface or member is bound when it
+  ships, unprefixed, in at least two of Chromium, Gecko and WebKit (partial
+  implementations count), or when 0.9 had it and one engine ships it.
+* [API-CHANGES-0.10.md](API-CHANGES-0.10.md) lists every change, generated
+  by `dom-gen apidiff` against 0.9.9.3: 158 interfaces no longer in any
+  specification (mostly WebKit-only), 13 renamed WebGL interfaces, and
+  2743 removed, 831 moved, 1266 retyped and 13386 new Haskell names.
+* Events are typed from the specifications' event tables: for example
+  `click` is a `PointerEvent`, `focus` a `FocusEvent`, `input` an
+  `InputEvent`.
+* Interface mixins (`ParentNode`, `GlobalEventHandlers`, `ARIAMixin`, ...)
+  are `Is*` classes with their own modules; `requestAnimationFrame` is in
+  `AnimationFrameProvider` and takes a `FrameRequestCallback`.
+* `long long` and `unsigned long long` are `Int53` and `Word53` (jsaddle
+  0.9.10, `Language.Javascript.JSaddle.Int53`): JavaScript Numbers are
+  exact only up to 2^53, and the types have no `Num` instance so that
+  conversions are explicit.
+* Nullable results are `Maybe` for numbers too: a `null` result is now
+  `Nothing` (0.9 could return `Just 0`).
+* Dictionaries (`MouseEventInit`, `AddEventListenerOptions`, ...) have
+  builders, one module each: `newPointerEventInit` makes an empty object
+  (taking the required members as arguments, as in `newRTCIceServer urls`),
+  and `setX` / `getX` reach each member, inherited ones through the `Is*`
+  class (`MouseEventInit.setClientX` works on a `PointerEventInit`).
+  Getters of optional members return `Maybe`: an unset member is `Nothing`.
+* Optional arguments are `Maybe` and `Nothing` passes `undefined`.  When a
+  0.9 operation gained trailing optional arguments, the old arity keeps the
+  old name and the full one is primed (`createElement` / `createElement'`).
+* Overloads keep their 0.9 names where they match; otherwise they are
+  named by their distinguishing arguments.
+* `JSDOM.EventM`: the mouse and touch helpers follow the specification
+  types: `mouseClientXY`, `mouseScreenXY` and `uiLayerXY` stay `Int`
+  (`long`), while the CSSOM View coordinates (`mouseXY`, `mouseOffsetXY`,
+  `uiPageXY`) and `mouseMovementXY` are `Double`, and nullable results are
+  `Maybe`.  `uiLayerXY` / `uiPageXY` take any `IsMouseEvent`, and
+  `mouseFromElement` / `mouseToElement` are gone.
+* Hand written modules: only `Geolocation`, `GeolocationPositionError`
+  (was `PositionError`) and `XMLHttpRequest` remain; the hand written
+  callbacks in `JSDOM.Types` are now generated.
+* Requires jsaddle >= 0.9.10.
diff --git a/jsaddle-dom.cabal b/jsaddle-dom.cabal
--- a/jsaddle-dom.cabal
+++ b/jsaddle-dom.cabal
@@ -1,1227 +1,2923 @@
 cabal-version: 2.2
 name: jsaddle-dom
-version: 0.9.9.3
-build-type: Simple
-license: MIT
-license-file: LICENSE
-maintainer: Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
-synopsis: DOM library that uses jsaddle to support both GHCJS and GHC
-description:
-    Documentent Object Model (DOM) functions implemented using jsaddle.
-    It works with both GHCJS and GHC.
-category: Web
-author: Hamish Mackenzie
-
-source-repository head
-    type: git
-    location: https://github.com/ghcjs/jsaddle-dom
-
-library
-    -- workaround for older GHC choking the C compiler with cost centre
-    -- declarations (GHC trac #7960)
-    if impl(ghc < 8.4)
-        ghc-prof-options: -fno-prof-auto
-
-    if impl(ghcjs -any)
-        build-depends:
-            ghcjs-base >=0.2.0.0 && <0.9,
-            ghcjs-prim -any,
-            ghc-prim -any
-    if arch(javascript)
-        build-depends:
-            ghcjs-base -any
-    exposed-modules:
-        JSDOM.Custom.AudioContext
-        JSDOM.Custom.Database
-        JSDOM.Custom.DOMError
-        JSDOM.Custom.FormData
-        JSDOM.Custom.Geolocation
-        JSDOM.Custom.Navigator
-        JSDOM.Custom.NavigatorUserMediaError
-        JSDOM.Custom.PositionError
-        JSDOM.Custom.RTCPeerConnectionError
-        JSDOM.Custom.SQLError
-        JSDOM.Custom.SQLTransaction
-        JSDOM.Custom.Window
-        JSDOM.Custom.XMLHttpRequest
-        -- (cd src/JSDOM/Generated && ls | sed 's|\(^.*\)\.hs|        JSDOM.Generated.\1|' | pbcopy)
-        JSDOM.Generated.ANGLEInstancedArrays
-        JSDOM.Generated.AbstractWorker
-        JSDOM.Generated.AnalyserNode
-        JSDOM.Generated.Animatable
-        JSDOM.Generated.Animation
-        JSDOM.Generated.AnimationEvent
-        JSDOM.Generated.ApplePayError
-        JSDOM.Generated.ApplePayPaymentAuthorizedEvent
-        JSDOM.Generated.ApplePayPaymentMethodSelectedEvent
-        JSDOM.Generated.ApplePaySession
-        JSDOM.Generated.ApplePayShippingContactSelectedEvent
-        JSDOM.Generated.ApplePayShippingMethodSelectedEvent
-        JSDOM.Generated.ApplePayValidateMerchantEvent
-        JSDOM.Generated.ApplicationCache
-        JSDOM.Generated.Attr
-        JSDOM.Generated.AudioBuffer
-        JSDOM.Generated.AudioBufferCallback
-        JSDOM.Generated.AudioBufferSourceNode
-        JSDOM.Generated.AudioContext
-        JSDOM.Generated.AudioDestinationNode
-        JSDOM.Generated.AudioListener
-        JSDOM.Generated.AudioNode
-        JSDOM.Generated.AudioParam
-        JSDOM.Generated.AudioProcessingEvent
-        JSDOM.Generated.AudioTrack
-        JSDOM.Generated.AudioTrackList
-        JSDOM.Generated.AutocompleteErrorEvent
-        JSDOM.Generated.BarProp
-        JSDOM.Generated.BasicCredential
-        JSDOM.Generated.BeforeLoadEvent
-        JSDOM.Generated.BeforeUnloadEvent
-        JSDOM.Generated.BiquadFilterNode
-        JSDOM.Generated.Blob
-        JSDOM.Generated.BlobCallback
-        JSDOM.Generated.Body
-        JSDOM.Generated.ByteLengthQueuingStrategy
-        JSDOM.Generated.CSS
-        JSDOM.Generated.CSSFontFaceLoadEvent
-        JSDOM.Generated.CSSFontFaceRule
-        JSDOM.Generated.CSSImportRule
-        JSDOM.Generated.CSSKeyframeRule
-        JSDOM.Generated.CSSKeyframesRule
-        JSDOM.Generated.CSSMediaRule
-        JSDOM.Generated.CSSNamespaceRule
-        JSDOM.Generated.CSSPageRule
-        JSDOM.Generated.CSSPrimitiveValue
-        JSDOM.Generated.CSSRule
-        JSDOM.Generated.CSSRuleList
-        JSDOM.Generated.CSSStyleDeclaration
-        JSDOM.Generated.CSSStyleRule
-        JSDOM.Generated.CSSStyleSheet
-        JSDOM.Generated.CSSSupportsRule
-        JSDOM.Generated.CSSValue
-        JSDOM.Generated.CSSValueList
-        JSDOM.Generated.CanvasCaptureMediaStreamTrack
-        JSDOM.Generated.CanvasGradient
-        JSDOM.Generated.CanvasPath
-        JSDOM.Generated.CanvasRenderingContext2D
-        JSDOM.Generated.CharacterData
-        JSDOM.Generated.ChildNode
-        JSDOM.Generated.ClipboardEvent
-        JSDOM.Generated.CloseEvent
-        JSDOM.Generated.CommandLineAPIHost
-        JSDOM.Generated.Comment
-        JSDOM.Generated.CompositionEvent
-        JSDOM.Generated.ConvolverNode
-        JSDOM.Generated.Coordinates
-        JSDOM.Generated.CountQueuingStrategy
-        JSDOM.Generated.Counter
-        JSDOM.Generated.Crypto
-        JSDOM.Generated.CryptoKey
-        JSDOM.Generated.CustomElementRegistry
-        JSDOM.Generated.CustomEvent
-        JSDOM.Generated.DOMError
-        JSDOM.Generated.DOMException
-        JSDOM.Generated.DOMImplementation
-        JSDOM.Generated.DOMNamedFlowCollection
-        JSDOM.Generated.DOMParser
-        JSDOM.Generated.DOMPoint
-        JSDOM.Generated.DOMPointReadOnly
-        JSDOM.Generated.DOMRect
-        JSDOM.Generated.DOMRectReadOnly
-        JSDOM.Generated.DOMStringList
-        JSDOM.Generated.DOMStringMap
-        JSDOM.Generated.DOMTokenList
-        JSDOM.Generated.DataCue
-        JSDOM.Generated.DataTransfer
-        JSDOM.Generated.DataTransferItem
-        JSDOM.Generated.DataTransferItemList
-        JSDOM.Generated.Database
-        JSDOM.Generated.DatabaseCallback
-        JSDOM.Generated.DedicatedWorkerGlobalScope
-        JSDOM.Generated.DelayNode
-        JSDOM.Generated.DeviceMotionEvent
-        JSDOM.Generated.DeviceOrientationEvent
-        JSDOM.Generated.DeviceProximityEvent
-        JSDOM.Generated.Document
-        JSDOM.Generated.DocumentAndElementEventHandlers
-        JSDOM.Generated.DocumentFragment
-        JSDOM.Generated.DocumentOrShadowRoot
-        JSDOM.Generated.DocumentTimeline
-        JSDOM.Generated.DocumentType
-        JSDOM.Generated.DynamicsCompressorNode
-        JSDOM.Generated.EXTBlendMinMax
-        JSDOM.Generated.EXTTextureFilterAnisotropic
-        JSDOM.Generated.EXTsRGB
-        JSDOM.Generated.Element
-        JSDOM.Generated.ElementCSSInlineStyle
-        JSDOM.Generated.Enums
-        JSDOM.Generated.ErrorEvent
-        JSDOM.Generated.Event
-        JSDOM.Generated.EventListener
-        JSDOM.Generated.EventSource
-        JSDOM.Generated.EventTarget
-        JSDOM.Generated.File
-        JSDOM.Generated.FileError
-        JSDOM.Generated.FileException
-        JSDOM.Generated.FileList
-        JSDOM.Generated.FileReader
-        JSDOM.Generated.FileReaderSync
-        JSDOM.Generated.FocusEvent
-        JSDOM.Generated.FontFace
-        JSDOM.Generated.FontFaceSet
-        JSDOM.Generated.FormData
-        JSDOM.Generated.GainNode
-        JSDOM.Generated.Gamepad
-        JSDOM.Generated.GamepadButton
-        JSDOM.Generated.GamepadEvent
-        JSDOM.Generated.Geolocation
-        JSDOM.Generated.Geoposition
-        JSDOM.Generated.GlobalCrypto
-        JSDOM.Generated.GlobalEventHandlers
-        JSDOM.Generated.GlobalPerformance
-        JSDOM.Generated.HTMLAllCollection
-        JSDOM.Generated.HTMLAnchorElement
-        JSDOM.Generated.HTMLAppletElement
-        JSDOM.Generated.HTMLAreaElement
-        JSDOM.Generated.HTMLAttachmentElement
-        JSDOM.Generated.HTMLBRElement
-        JSDOM.Generated.HTMLBaseElement
-        JSDOM.Generated.HTMLBodyElement
-        JSDOM.Generated.HTMLButtonElement
-        JSDOM.Generated.HTMLCanvasElement
-        JSDOM.Generated.HTMLCollection
-        JSDOM.Generated.HTMLDListElement
-        JSDOM.Generated.HTMLDataElement
-        JSDOM.Generated.HTMLDataListElement
-        JSDOM.Generated.HTMLDetailsElement
-        JSDOM.Generated.HTMLDirectoryElement
-        JSDOM.Generated.HTMLDivElement
-        JSDOM.Generated.HTMLDocument
-        JSDOM.Generated.HTMLElement
-        JSDOM.Generated.HTMLEmbedElement
-        JSDOM.Generated.HTMLFieldSetElement
-        JSDOM.Generated.HTMLFontElement
-        JSDOM.Generated.HTMLFormControlsCollection
-        JSDOM.Generated.HTMLFormElement
-        JSDOM.Generated.HTMLFrameElement
-        JSDOM.Generated.HTMLFrameSetElement
-        JSDOM.Generated.HTMLHRElement
-        JSDOM.Generated.HTMLHeadElement
-        JSDOM.Generated.HTMLHeadingElement
-        JSDOM.Generated.HTMLHtmlElement
-        JSDOM.Generated.HTMLHyperlinkElementUtils
-        JSDOM.Generated.HTMLIFrameElement
-        JSDOM.Generated.HTMLImageElement
-        JSDOM.Generated.HTMLInputElement
-        JSDOM.Generated.HTMLKeygenElement
-        JSDOM.Generated.HTMLLIElement
-        JSDOM.Generated.HTMLLabelElement
-        JSDOM.Generated.HTMLLegendElement
-        JSDOM.Generated.HTMLLinkElement
-        JSDOM.Generated.HTMLMapElement
-        JSDOM.Generated.HTMLMarqueeElement
-        JSDOM.Generated.HTMLMediaElement
-        JSDOM.Generated.HTMLMenuElement
-        JSDOM.Generated.HTMLMetaElement
-        JSDOM.Generated.HTMLMeterElement
-        JSDOM.Generated.HTMLModElement
-        JSDOM.Generated.HTMLOListElement
-        JSDOM.Generated.HTMLObjectElement
-        JSDOM.Generated.HTMLOptGroupElement
-        JSDOM.Generated.HTMLOptionElement
-        JSDOM.Generated.HTMLOptionsCollection
-        JSDOM.Generated.HTMLOutputElement
-        JSDOM.Generated.HTMLParagraphElement
-        JSDOM.Generated.HTMLParamElement
-        JSDOM.Generated.HTMLPreElement
-        JSDOM.Generated.HTMLProgressElement
-        JSDOM.Generated.HTMLQuoteElement
-        JSDOM.Generated.HTMLScriptElement
-        JSDOM.Generated.HTMLSelectElement
-        JSDOM.Generated.HTMLSlotElement
-        JSDOM.Generated.HTMLSourceElement
-        JSDOM.Generated.HTMLStyleElement
-        JSDOM.Generated.HTMLTableCaptionElement
-        JSDOM.Generated.HTMLTableCellElement
-        JSDOM.Generated.HTMLTableColElement
-        JSDOM.Generated.HTMLTableElement
-        JSDOM.Generated.HTMLTableRowElement
-        JSDOM.Generated.HTMLTableSectionElement
-        JSDOM.Generated.HTMLTemplateElement
-        JSDOM.Generated.HTMLTextAreaElement
-        JSDOM.Generated.HTMLTimeElement
-        JSDOM.Generated.HTMLTitleElement
-        JSDOM.Generated.HTMLTrackElement
-        JSDOM.Generated.HTMLUListElement
-        JSDOM.Generated.HTMLVideoElement
-        JSDOM.Generated.HashChangeEvent
-        JSDOM.Generated.Headers
-        JSDOM.Generated.History
-        JSDOM.Generated.IDBCursor
-        JSDOM.Generated.IDBCursorWithValue
-        JSDOM.Generated.IDBDatabase
-        JSDOM.Generated.IDBFactory
-        JSDOM.Generated.IDBIndex
-        JSDOM.Generated.IDBKeyRange
-        JSDOM.Generated.IDBObjectStore
-        JSDOM.Generated.IDBOpenDBRequest
-        JSDOM.Generated.IDBRequest
-        JSDOM.Generated.IDBTransaction
-        JSDOM.Generated.IDBVersionChangeEvent
-        JSDOM.Generated.ImageData
-        JSDOM.Generated.InputEvent
-        JSDOM.Generated.InspectorFrontendHost
-        JSDOM.Generated.IntersectionObserver
-        JSDOM.Generated.IntersectionObserverCallback
-        JSDOM.Generated.IntersectionObserverEntry
-        JSDOM.Generated.KeyboardEvent
-        JSDOM.Generated.KeyframeEffect
-        JSDOM.Generated.Location
-        JSDOM.Generated.MediaController
-        JSDOM.Generated.MediaControlsHost
-        JSDOM.Generated.MediaDeviceInfo
-        JSDOM.Generated.MediaDevices
-        JSDOM.Generated.MediaElementAudioSourceNode
-        JSDOM.Generated.MediaEncryptedEvent
-        JSDOM.Generated.MediaError
-        JSDOM.Generated.MediaKeyMessageEvent
-        JSDOM.Generated.MediaKeySession
-        JSDOM.Generated.MediaKeyStatusMap
-        JSDOM.Generated.MediaKeySystemAccess
-        JSDOM.Generated.MediaKeys
-        JSDOM.Generated.MediaList
-        JSDOM.Generated.MediaQueryList
-        JSDOM.Generated.MediaQueryListListener
-        JSDOM.Generated.MediaRemoteControls
-        JSDOM.Generated.MediaSession
-        JSDOM.Generated.MediaSource
-        JSDOM.Generated.MediaStream
-        JSDOM.Generated.MediaStreamAudioDestinationNode
-        JSDOM.Generated.MediaStreamAudioSourceNode
-        JSDOM.Generated.MediaStreamEvent
-        JSDOM.Generated.MediaStreamTrack
-        JSDOM.Generated.MediaStreamTrackEvent
-        JSDOM.Generated.MessageChannel
-        JSDOM.Generated.MessageEvent
-        JSDOM.Generated.MessagePort
-        JSDOM.Generated.MimeType
-        JSDOM.Generated.MimeTypeArray
-        JSDOM.Generated.MouseEvent
-        JSDOM.Generated.MutationEvent
-        JSDOM.Generated.MutationObserver
-        JSDOM.Generated.MutationRecord
-        JSDOM.Generated.NamedNodeMap
-        JSDOM.Generated.Navigator
-        JSDOM.Generated.NavigatorConcurrentHardware
-        JSDOM.Generated.NavigatorID
-        JSDOM.Generated.NavigatorLanguage
-        JSDOM.Generated.NavigatorOnLine
-        JSDOM.Generated.NavigatorUserMediaError
-        JSDOM.Generated.NavigatorUserMediaErrorCallback
-        JSDOM.Generated.NavigatorUserMediaSuccessCallback
-        JSDOM.Generated.Node
-        JSDOM.Generated.NodeFilter
-        JSDOM.Generated.NodeIterator
-        JSDOM.Generated.NodeList
-        JSDOM.Generated.NonDocumentTypeChildNode
-        JSDOM.Generated.NonElementParentNode
-        JSDOM.Generated.Notification
-        JSDOM.Generated.NotificationPermissionCallback
-        JSDOM.Generated.OESStandardDerivatives
-        JSDOM.Generated.OESTextureHalfFloat
-        JSDOM.Generated.OESVertexArrayObject
-        JSDOM.Generated.OfflineAudioCompletionEvent
-        JSDOM.Generated.OfflineAudioContext
-        JSDOM.Generated.OscillatorNode
-        JSDOM.Generated.OverconstrainedError
-        JSDOM.Generated.OverconstrainedErrorEvent
-        JSDOM.Generated.OverflowEvent
-        JSDOM.Generated.PageTransitionEvent
-        JSDOM.Generated.PannerNode
-        JSDOM.Generated.ParentNode
-        JSDOM.Generated.PasswordCredential
-        JSDOM.Generated.Path2D
-        JSDOM.Generated.Performance
-        JSDOM.Generated.PerformanceEntry
-        JSDOM.Generated.PerformanceNavigation
-        JSDOM.Generated.PerformanceObserver
-        JSDOM.Generated.PerformanceObserverCallback
-        JSDOM.Generated.PerformanceObserverEntryList
-        JSDOM.Generated.PerformanceResourceTiming
-        JSDOM.Generated.PerformanceTiming
-        JSDOM.Generated.Plugin
-        JSDOM.Generated.PluginArray
-        JSDOM.Generated.PopStateEvent
-        JSDOM.Generated.PositionCallback
-        JSDOM.Generated.PositionError
-        JSDOM.Generated.PositionErrorCallback
-        JSDOM.Generated.ProcessingInstruction
-        JSDOM.Generated.ProgressEvent
-        JSDOM.Generated.PromiseRejectionEvent
-        JSDOM.Generated.QuickTimePluginReplacement
-        JSDOM.Generated.RGBColor
-        JSDOM.Generated.RTCDTMFSender
-        JSDOM.Generated.RTCDTMFToneChangeEvent
-        JSDOM.Generated.RTCDataChannel
-        JSDOM.Generated.RTCDataChannelEvent
-        JSDOM.Generated.RTCIceCandidate
-        JSDOM.Generated.RTCIceCandidateEvent
-        JSDOM.Generated.RTCIceTransport
-        JSDOM.Generated.RTCPeerConnection
-        JSDOM.Generated.RTCPeerConnectionIceEvent
-        JSDOM.Generated.RTCRtpReceiver
-        JSDOM.Generated.RTCRtpSender
-        JSDOM.Generated.RTCRtpTransceiver
-        JSDOM.Generated.RTCSessionDescription
-        JSDOM.Generated.RTCTrackEvent
-        JSDOM.Generated.RadioNodeList
-        JSDOM.Generated.Range
-        JSDOM.Generated.ReadableByteStreamController
-        JSDOM.Generated.ReadableStream
-        JSDOM.Generated.ReadableStreamBYOBReader
-        JSDOM.Generated.ReadableStreamBYOBRequest
-        JSDOM.Generated.ReadableStreamDefaultController
-        JSDOM.Generated.ReadableStreamDefaultReader
-        JSDOM.Generated.ReadableStreamSource
-        JSDOM.Generated.Rect
-        JSDOM.Generated.Request
-        JSDOM.Generated.RequestAnimationFrameCallback
-        JSDOM.Generated.Response
-        JSDOM.Generated.SQLError
-        JSDOM.Generated.SQLException
-        JSDOM.Generated.SQLResultSet
-        JSDOM.Generated.SQLResultSetRowList
-        JSDOM.Generated.SQLStatementCallback
-        JSDOM.Generated.SQLStatementErrorCallback
-        JSDOM.Generated.SQLTransaction
-        JSDOM.Generated.SQLTransactionCallback
-        JSDOM.Generated.SQLTransactionErrorCallback
-        JSDOM.Generated.SVGAElement
-        JSDOM.Generated.SVGAltGlyphElement
-        JSDOM.Generated.SVGAngle
-        JSDOM.Generated.SVGAnimatedAngle
-        JSDOM.Generated.SVGAnimatedBoolean
-        JSDOM.Generated.SVGAnimatedEnumeration
-        JSDOM.Generated.SVGAnimatedInteger
-        JSDOM.Generated.SVGAnimatedLength
-        JSDOM.Generated.SVGAnimatedLengthList
-        JSDOM.Generated.SVGAnimatedNumber
-        JSDOM.Generated.SVGAnimatedNumberList
-        JSDOM.Generated.SVGAnimatedPreserveAspectRatio
-        JSDOM.Generated.SVGAnimatedRect
-        JSDOM.Generated.SVGAnimatedString
-        JSDOM.Generated.SVGAnimatedTransformList
-        JSDOM.Generated.SVGAnimationElement
-        JSDOM.Generated.SVGCircleElement
-        JSDOM.Generated.SVGClipPathElement
-        JSDOM.Generated.SVGComponentTransferFunctionElement
-        JSDOM.Generated.SVGCursorElement
-        JSDOM.Generated.SVGElement
-        JSDOM.Generated.SVGEllipseElement
-        JSDOM.Generated.SVGException
-        JSDOM.Generated.SVGExternalResourcesRequired
-        JSDOM.Generated.SVGFEBlendElement
-        JSDOM.Generated.SVGFEColorMatrixElement
-        JSDOM.Generated.SVGFEComponentTransferElement
-        JSDOM.Generated.SVGFECompositeElement
-        JSDOM.Generated.SVGFEConvolveMatrixElement
-        JSDOM.Generated.SVGFEDiffuseLightingElement
-        JSDOM.Generated.SVGFEDisplacementMapElement
-        JSDOM.Generated.SVGFEDistantLightElement
-        JSDOM.Generated.SVGFEDropShadowElement
-        JSDOM.Generated.SVGFEGaussianBlurElement
-        JSDOM.Generated.SVGFEImageElement
-        JSDOM.Generated.SVGFEMergeNodeElement
-        JSDOM.Generated.SVGFEMorphologyElement
-        JSDOM.Generated.SVGFEOffsetElement
-        JSDOM.Generated.SVGFEPointLightElement
-        JSDOM.Generated.SVGFESpecularLightingElement
-        JSDOM.Generated.SVGFESpotLightElement
-        JSDOM.Generated.SVGFETileElement
-        JSDOM.Generated.SVGFETurbulenceElement
-        JSDOM.Generated.SVGFilterElement
-        JSDOM.Generated.SVGFilterPrimitiveStandardAttributes
-        JSDOM.Generated.SVGFitToViewBox
-        JSDOM.Generated.SVGForeignObjectElement
-        JSDOM.Generated.SVGGlyphRefElement
-        JSDOM.Generated.SVGGradientElement
-        JSDOM.Generated.SVGGraphicsElement
-        JSDOM.Generated.SVGImageElement
-        JSDOM.Generated.SVGLength
-        JSDOM.Generated.SVGLengthList
-        JSDOM.Generated.SVGLineElement
-        JSDOM.Generated.SVGLinearGradientElement
-        JSDOM.Generated.SVGMarkerElement
-        JSDOM.Generated.SVGMaskElement
-        JSDOM.Generated.SVGMatrix
-        JSDOM.Generated.SVGNumber
-        JSDOM.Generated.SVGNumberList
-        JSDOM.Generated.SVGPathElement
-        JSDOM.Generated.SVGPathSeg
-        JSDOM.Generated.SVGPathSegArcAbs
-        JSDOM.Generated.SVGPathSegArcRel
-        JSDOM.Generated.SVGPathSegCurvetoCubicAbs
-        JSDOM.Generated.SVGPathSegCurvetoCubicRel
-        JSDOM.Generated.SVGPathSegCurvetoCubicSmoothAbs
-        JSDOM.Generated.SVGPathSegCurvetoCubicSmoothRel
-        JSDOM.Generated.SVGPathSegCurvetoQuadraticAbs
-        JSDOM.Generated.SVGPathSegCurvetoQuadraticRel
-        JSDOM.Generated.SVGPathSegCurvetoQuadraticSmoothAbs
-        JSDOM.Generated.SVGPathSegCurvetoQuadraticSmoothRel
-        JSDOM.Generated.SVGPathSegLinetoAbs
-        JSDOM.Generated.SVGPathSegLinetoHorizontalAbs
-        JSDOM.Generated.SVGPathSegLinetoHorizontalRel
-        JSDOM.Generated.SVGPathSegLinetoRel
-        JSDOM.Generated.SVGPathSegLinetoVerticalAbs
-        JSDOM.Generated.SVGPathSegLinetoVerticalRel
-        JSDOM.Generated.SVGPathSegList
-        JSDOM.Generated.SVGPathSegMovetoAbs
-        JSDOM.Generated.SVGPathSegMovetoRel
-        JSDOM.Generated.SVGPatternElement
-        JSDOM.Generated.SVGPoint
-        JSDOM.Generated.SVGPointList
-        JSDOM.Generated.SVGPolygonElement
-        JSDOM.Generated.SVGPolylineElement
-        JSDOM.Generated.SVGPreserveAspectRatio
-        JSDOM.Generated.SVGRadialGradientElement
-        JSDOM.Generated.SVGRect
-        JSDOM.Generated.SVGRectElement
-        JSDOM.Generated.SVGRenderingIntent
-        JSDOM.Generated.SVGSVGElement
-        JSDOM.Generated.SVGScriptElement
-        JSDOM.Generated.SVGStopElement
-        JSDOM.Generated.SVGStringList
-        JSDOM.Generated.SVGStyleElement
-        JSDOM.Generated.SVGTests
-        JSDOM.Generated.SVGTextContentElement
-        JSDOM.Generated.SVGTextPathElement
-        JSDOM.Generated.SVGTextPositioningElement
-        JSDOM.Generated.SVGTransform
-        JSDOM.Generated.SVGTransformList
-        JSDOM.Generated.SVGURIReference
-        JSDOM.Generated.SVGUnitTypes
-        JSDOM.Generated.SVGUseElement
-        JSDOM.Generated.SVGViewElement
-        JSDOM.Generated.SVGViewSpec
-        JSDOM.Generated.SVGZoomAndPan
-        JSDOM.Generated.SVGZoomEvent
-        JSDOM.Generated.Screen
-        JSDOM.Generated.ScriptProcessorNode
-        JSDOM.Generated.SecurityPolicyViolationEvent
-        JSDOM.Generated.Selection
-        JSDOM.Generated.ShadowRoot
-        JSDOM.Generated.SiteBoundCredential
-        JSDOM.Generated.Slotable
-        JSDOM.Generated.SourceBuffer
-        JSDOM.Generated.SourceBufferList
-        JSDOM.Generated.SpeechSynthesis
-        JSDOM.Generated.SpeechSynthesisEvent
-        JSDOM.Generated.SpeechSynthesisUtterance
-        JSDOM.Generated.SpeechSynthesisVoice
-        JSDOM.Generated.StaticRange
-        JSDOM.Generated.Storage
-        JSDOM.Generated.StorageErrorCallback
-        JSDOM.Generated.StorageEvent
-        JSDOM.Generated.StorageInfo
-        JSDOM.Generated.StorageQuota
-        JSDOM.Generated.StorageQuotaCallback
-        JSDOM.Generated.StorageUsageCallback
-        JSDOM.Generated.StringCallback
-        JSDOM.Generated.StyleMedia
-        JSDOM.Generated.StyleSheet
-        JSDOM.Generated.StyleSheetList
-        JSDOM.Generated.SubtleCrypto
-        JSDOM.Generated.Text
-        JSDOM.Generated.TextDecoder
-        JSDOM.Generated.TextEncoder
-        JSDOM.Generated.TextEvent
-        JSDOM.Generated.TextMetrics
-        JSDOM.Generated.TextTrack
-        JSDOM.Generated.TextTrackCue
-        JSDOM.Generated.TextTrackCueList
-        JSDOM.Generated.TextTrackList
-        JSDOM.Generated.TimeRanges
-        JSDOM.Generated.Touch
-        JSDOM.Generated.TouchEvent
-        JSDOM.Generated.TouchList
-        JSDOM.Generated.TrackEvent
-        JSDOM.Generated.TransitionEvent
-        JSDOM.Generated.TreeWalker
-        JSDOM.Generated.UIEvent
-        JSDOM.Generated.URL
-        JSDOM.Generated.URLSearchParams
-        JSDOM.Generated.UserMessageHandler
-        JSDOM.Generated.VTTCue
-        JSDOM.Generated.VTTRegion
-        JSDOM.Generated.VTTRegionList
-        JSDOM.Generated.ValidityState
-        JSDOM.Generated.VideoPlaybackQuality
-        JSDOM.Generated.VideoTrack
-        JSDOM.Generated.VideoTrackList
-        JSDOM.Generated.VoidCallback
-        JSDOM.Generated.WaveShaperNode
-        JSDOM.Generated.WebGL2RenderingContext
-        JSDOM.Generated.WebGLActiveInfo
-        JSDOM.Generated.WebGLCompressedTextureATC
-        JSDOM.Generated.WebGLCompressedTexturePVRTC
-        JSDOM.Generated.WebGLCompressedTextureS3TC
-        JSDOM.Generated.WebGLContextEvent
-        JSDOM.Generated.WebGLDebugRendererInfo
-        JSDOM.Generated.WebGLDebugShaders
-        JSDOM.Generated.WebGLDepthTexture
-        JSDOM.Generated.WebGLDrawBuffers
-        JSDOM.Generated.WebGLLoseContext
-        JSDOM.Generated.WebGLRenderingContextBase
-        JSDOM.Generated.WebGLShaderPrecisionFormat
-        JSDOM.Generated.WebGPUBuffer
-        JSDOM.Generated.WebGPUCommandBuffer
-        JSDOM.Generated.WebGPUCommandQueue
-        JSDOM.Generated.WebGPUComputeCommandEncoder
-        JSDOM.Generated.WebGPUDepthStencilDescriptor
-        JSDOM.Generated.WebGPUDepthStencilState
-        JSDOM.Generated.WebGPUDrawable
-        JSDOM.Generated.WebGPUFunction
-        JSDOM.Generated.WebGPULibrary
-        JSDOM.Generated.WebGPURenderCommandEncoder
-        JSDOM.Generated.WebGPURenderPassAttachmentDescriptor
-        JSDOM.Generated.WebGPURenderPassColorAttachmentDescriptor
-        JSDOM.Generated.WebGPURenderPassDepthAttachmentDescriptor
-        JSDOM.Generated.WebGPURenderPassDescriptor
-        JSDOM.Generated.WebGPURenderPipelineColorAttachmentDescriptor
-        JSDOM.Generated.WebGPURenderPipelineDescriptor
-        JSDOM.Generated.WebGPURenderPipelineState
-        JSDOM.Generated.WebGPURenderingContext
-        JSDOM.Generated.WebGPUTexture
-        JSDOM.Generated.WebGPUTextureDescriptor
-        JSDOM.Generated.WebKitAnimationEvent
-        JSDOM.Generated.WebKitCSSMatrix
-        JSDOM.Generated.WebKitCSSRegionRule
-        JSDOM.Generated.WebKitCSSViewportRule
-        JSDOM.Generated.WebKitMediaKeyError
-        JSDOM.Generated.WebKitMediaKeyMessageEvent
-        JSDOM.Generated.WebKitMediaKeyNeededEvent
-        JSDOM.Generated.WebKitMediaKeySession
-        JSDOM.Generated.WebKitMediaKeys
-        JSDOM.Generated.WebKitNamedFlow
-        JSDOM.Generated.WebKitNamespace
-        JSDOM.Generated.WebKitPlaybackTargetAvailabilityEvent
-        JSDOM.Generated.WebKitPoint
-        JSDOM.Generated.WebKitSubtleCrypto
-        JSDOM.Generated.WebKitTransitionEvent
-        JSDOM.Generated.WebSocket
-        JSDOM.Generated.WheelEvent
-        JSDOM.Generated.Window
-        JSDOM.Generated.WindowEventHandlers
-        JSDOM.Generated.WindowOrWorkerGlobalScope
-        JSDOM.Generated.Worker
-        JSDOM.Generated.WorkerGlobalScope
-        JSDOM.Generated.WorkerLocation
-        JSDOM.Generated.WorkerNavigator
-        JSDOM.Generated.WritableStream
-        JSDOM.Generated.XMLHttpRequest
-        JSDOM.Generated.XMLHttpRequestEventTarget
-        JSDOM.Generated.XMLHttpRequestProgressEvent
-        JSDOM.Generated.XMLSerializer
-        JSDOM.Generated.XPathEvaluator
-        JSDOM.Generated.XPathException
-        JSDOM.Generated.XPathExpression
-        JSDOM.Generated.XPathNSResolver
-        JSDOM.Generated.XPathResult
-        JSDOM.Generated.XSLTProcessor
-        JSDOM
-        JSDOM.EventM
-        JSDOM.Types
-        JSDOM.Enums
-        JSDOM.EventTargetClosures
-    reexported-modules: JSDOM.Custom.AudioContext as JSDOM.AudioContext,
-                        JSDOM.Custom.Database as JSDOM.Database,
-                        JSDOM.Custom.DOMError as JSDOM.DOMError,
-                        JSDOM.Custom.FormData as JSDOM.FormData,
-                        JSDOM.Custom.Geolocation as JSDOM.Geolocation,
-                        JSDOM.Custom.Navigator as JSDOM.Navigator,
-                        JSDOM.Custom.NavigatorUserMediaError as JSDOM.NavigatorUserMediaError,
-                        JSDOM.Custom.PositionError as JSDOM.PositionError,
-                        JSDOM.Custom.RTCPeerConnectionError as JSDOM.RTCPeerConnectionError,
-                        JSDOM.Custom.SQLError as JSDOM.SQLError,
-                        JSDOM.Custom.SQLTransaction as JSDOM.SQLTransaction,
-                        JSDOM.Custom.Window as JSDOM.Window,
-                        JSDOM.Custom.XMLHttpRequest as JSDOM.XMLHttpRequest,
-                        -- (cd src/JSDOM/Generated && for a in *.hs; do if [ ! -e ../Custom/$a -a ! "$a" = "Enums.hs" ]; then echo "                        JSDOM.Generated.${a%.*} as JSDOM.${a%.*},"; fi; done | pbcopy)
-                        JSDOM.Generated.ANGLEInstancedArrays as JSDOM.ANGLEInstancedArrays,
-                        JSDOM.Generated.AbstractWorker as JSDOM.AbstractWorker,
-                        JSDOM.Generated.AnalyserNode as JSDOM.AnalyserNode,
-                        JSDOM.Generated.Animatable as JSDOM.Animatable,
-                        JSDOM.Generated.Animation as JSDOM.Animation,
-                        JSDOM.Generated.AnimationEvent as JSDOM.AnimationEvent,
-                        JSDOM.Generated.ApplePayError as JSDOM.ApplePayError,
-                        JSDOM.Generated.ApplePayPaymentAuthorizedEvent as JSDOM.ApplePayPaymentAuthorizedEvent,
-                        JSDOM.Generated.ApplePayPaymentMethodSelectedEvent as JSDOM.ApplePayPaymentMethodSelectedEvent,
-                        JSDOM.Generated.ApplePaySession as JSDOM.ApplePaySession,
-                        JSDOM.Generated.ApplePayShippingContactSelectedEvent as JSDOM.ApplePayShippingContactSelectedEvent,
-                        JSDOM.Generated.ApplePayShippingMethodSelectedEvent as JSDOM.ApplePayShippingMethodSelectedEvent,
-                        JSDOM.Generated.ApplePayValidateMerchantEvent as JSDOM.ApplePayValidateMerchantEvent,
-                        JSDOM.Generated.ApplicationCache as JSDOM.ApplicationCache,
-                        JSDOM.Generated.Attr as JSDOM.Attr,
-                        JSDOM.Generated.AudioBuffer as JSDOM.AudioBuffer,
-                        JSDOM.Generated.AudioBufferCallback as JSDOM.AudioBufferCallback,
-                        JSDOM.Generated.AudioBufferSourceNode as JSDOM.AudioBufferSourceNode,
-                        JSDOM.Generated.AudioDestinationNode as JSDOM.AudioDestinationNode,
-                        JSDOM.Generated.AudioListener as JSDOM.AudioListener,
-                        JSDOM.Generated.AudioNode as JSDOM.AudioNode,
-                        JSDOM.Generated.AudioParam as JSDOM.AudioParam,
-                        JSDOM.Generated.AudioProcessingEvent as JSDOM.AudioProcessingEvent,
-                        JSDOM.Generated.AudioTrack as JSDOM.AudioTrack,
-                        JSDOM.Generated.AudioTrackList as JSDOM.AudioTrackList,
-                        JSDOM.Generated.AutocompleteErrorEvent as JSDOM.AutocompleteErrorEvent,
-                        JSDOM.Generated.BarProp as JSDOM.BarProp,
-                        JSDOM.Generated.BasicCredential as JSDOM.BasicCredential,
-                        JSDOM.Generated.BeforeLoadEvent as JSDOM.BeforeLoadEvent,
-                        JSDOM.Generated.BeforeUnloadEvent as JSDOM.BeforeUnloadEvent,
-                        JSDOM.Generated.BiquadFilterNode as JSDOM.BiquadFilterNode,
-                        JSDOM.Generated.Blob as JSDOM.Blob,
-                        JSDOM.Generated.BlobCallback as JSDOM.BlobCallback,
-                        JSDOM.Generated.Body as JSDOM.Body,
-                        JSDOM.Generated.ByteLengthQueuingStrategy as JSDOM.ByteLengthQueuingStrategy,
-                        JSDOM.Generated.CSS as JSDOM.CSS,
-                        JSDOM.Generated.CSSFontFaceLoadEvent as JSDOM.CSSFontFaceLoadEvent,
-                        JSDOM.Generated.CSSFontFaceRule as JSDOM.CSSFontFaceRule,
-                        JSDOM.Generated.CSSImportRule as JSDOM.CSSImportRule,
-                        JSDOM.Generated.CSSKeyframeRule as JSDOM.CSSKeyframeRule,
-                        JSDOM.Generated.CSSKeyframesRule as JSDOM.CSSKeyframesRule,
-                        JSDOM.Generated.CSSMediaRule as JSDOM.CSSMediaRule,
-                        JSDOM.Generated.CSSNamespaceRule as JSDOM.CSSNamespaceRule,
-                        JSDOM.Generated.CSSPageRule as JSDOM.CSSPageRule,
-                        JSDOM.Generated.CSSPrimitiveValue as JSDOM.CSSPrimitiveValue,
-                        JSDOM.Generated.CSSRule as JSDOM.CSSRule,
-                        JSDOM.Generated.CSSRuleList as JSDOM.CSSRuleList,
-                        JSDOM.Generated.CSSStyleDeclaration as JSDOM.CSSStyleDeclaration,
-                        JSDOM.Generated.CSSStyleRule as JSDOM.CSSStyleRule,
-                        JSDOM.Generated.CSSStyleSheet as JSDOM.CSSStyleSheet,
-                        JSDOM.Generated.CSSSupportsRule as JSDOM.CSSSupportsRule,
-                        JSDOM.Generated.CSSValue as JSDOM.CSSValue,
-                        JSDOM.Generated.CSSValueList as JSDOM.CSSValueList,
-                        JSDOM.Generated.CanvasCaptureMediaStreamTrack as JSDOM.CanvasCaptureMediaStreamTrack,
-                        JSDOM.Generated.CanvasGradient as JSDOM.CanvasGradient,
-                        JSDOM.Generated.CanvasPath as JSDOM.CanvasPath,
-                        JSDOM.Generated.CanvasRenderingContext2D as JSDOM.CanvasRenderingContext2D,
-                        JSDOM.Generated.CharacterData as JSDOM.CharacterData,
-                        JSDOM.Generated.ChildNode as JSDOM.ChildNode,
-                        JSDOM.Generated.ClipboardEvent as JSDOM.ClipboardEvent,
-                        JSDOM.Generated.CloseEvent as JSDOM.CloseEvent,
-                        JSDOM.Generated.CommandLineAPIHost as JSDOM.CommandLineAPIHost,
-                        JSDOM.Generated.Comment as JSDOM.Comment,
-                        JSDOM.Generated.CompositionEvent as JSDOM.CompositionEvent,
-                        JSDOM.Generated.ConvolverNode as JSDOM.ConvolverNode,
-                        JSDOM.Generated.Coordinates as JSDOM.Coordinates,
-                        JSDOM.Generated.CountQueuingStrategy as JSDOM.CountQueuingStrategy,
-                        JSDOM.Generated.Counter as JSDOM.Counter,
-                        JSDOM.Generated.Crypto as JSDOM.Crypto,
-                        JSDOM.Generated.CryptoKey as JSDOM.CryptoKey,
-                        JSDOM.Generated.CustomElementRegistry as JSDOM.CustomElementRegistry,
-                        JSDOM.Generated.CustomEvent as JSDOM.CustomEvent,
-                        JSDOM.Generated.DOMException as JSDOM.DOMException,
-                        JSDOM.Generated.DOMImplementation as JSDOM.DOMImplementation,
-                        JSDOM.Generated.DOMNamedFlowCollection as JSDOM.DOMNamedFlowCollection,
-                        JSDOM.Generated.DOMParser as JSDOM.DOMParser,
-                        JSDOM.Generated.DOMPoint as JSDOM.DOMPoint,
-                        JSDOM.Generated.DOMPointReadOnly as JSDOM.DOMPointReadOnly,
-                        JSDOM.Generated.DOMRect as JSDOM.DOMRect,
-                        JSDOM.Generated.DOMRectReadOnly as JSDOM.DOMRectReadOnly,
-                        JSDOM.Generated.DOMStringList as JSDOM.DOMStringList,
-                        JSDOM.Generated.DOMStringMap as JSDOM.DOMStringMap,
-                        JSDOM.Generated.DOMTokenList as JSDOM.DOMTokenList,
-                        JSDOM.Generated.DataCue as JSDOM.DataCue,
-                        JSDOM.Generated.DataTransfer as JSDOM.DataTransfer,
-                        JSDOM.Generated.DataTransferItem as JSDOM.DataTransferItem,
-                        JSDOM.Generated.DataTransferItemList as JSDOM.DataTransferItemList,
-                        JSDOM.Generated.DatabaseCallback as JSDOM.DatabaseCallback,
-                        JSDOM.Generated.DedicatedWorkerGlobalScope as JSDOM.DedicatedWorkerGlobalScope,
-                        JSDOM.Generated.DelayNode as JSDOM.DelayNode,
-                        JSDOM.Generated.DeviceMotionEvent as JSDOM.DeviceMotionEvent,
-                        JSDOM.Generated.DeviceOrientationEvent as JSDOM.DeviceOrientationEvent,
-                        JSDOM.Generated.DeviceProximityEvent as JSDOM.DeviceProximityEvent,
-                        JSDOM.Generated.Document as JSDOM.Document,
-                        JSDOM.Generated.DocumentAndElementEventHandlers as JSDOM.DocumentAndElementEventHandlers,
-                        JSDOM.Generated.DocumentFragment as JSDOM.DocumentFragment,
-                        JSDOM.Generated.DocumentOrShadowRoot as JSDOM.DocumentOrShadowRoot,
-                        JSDOM.Generated.DocumentTimeline as JSDOM.DocumentTimeline,
-                        JSDOM.Generated.DocumentType as JSDOM.DocumentType,
-                        JSDOM.Generated.DynamicsCompressorNode as JSDOM.DynamicsCompressorNode,
-                        JSDOM.Generated.EXTBlendMinMax as JSDOM.EXTBlendMinMax,
-                        JSDOM.Generated.EXTTextureFilterAnisotropic as JSDOM.EXTTextureFilterAnisotropic,
-                        JSDOM.Generated.EXTsRGB as JSDOM.EXTsRGB,
-                        JSDOM.Generated.Element as JSDOM.Element,
-                        JSDOM.Generated.ElementCSSInlineStyle as JSDOM.ElementCSSInlineStyle,
-                        JSDOM.Generated.ErrorEvent as JSDOM.ErrorEvent,
-                        JSDOM.Generated.Event as JSDOM.Event,
-                        JSDOM.Generated.EventListener as JSDOM.EventListener,
-                        JSDOM.Generated.EventSource as JSDOM.EventSource,
-                        JSDOM.Generated.EventTarget as JSDOM.EventTarget,
-                        JSDOM.Generated.File as JSDOM.File,
-                        JSDOM.Generated.FileError as JSDOM.FileError,
-                        JSDOM.Generated.FileException as JSDOM.FileException,
-                        JSDOM.Generated.FileList as JSDOM.FileList,
-                        JSDOM.Generated.FileReader as JSDOM.FileReader,
-                        JSDOM.Generated.FileReaderSync as JSDOM.FileReaderSync,
-                        JSDOM.Generated.FocusEvent as JSDOM.FocusEvent,
-                        JSDOM.Generated.FontFace as JSDOM.FontFace,
-                        JSDOM.Generated.FontFaceSet as JSDOM.FontFaceSet,
-                        JSDOM.Generated.GainNode as JSDOM.GainNode,
-                        JSDOM.Generated.Gamepad as JSDOM.Gamepad,
-                        JSDOM.Generated.GamepadButton as JSDOM.GamepadButton,
-                        JSDOM.Generated.GamepadEvent as JSDOM.GamepadEvent,
-                        JSDOM.Generated.Geoposition as JSDOM.Geoposition,
-                        JSDOM.Generated.GlobalCrypto as JSDOM.GlobalCrypto,
-                        JSDOM.Generated.GlobalEventHandlers as JSDOM.GlobalEventHandlers,
-                        JSDOM.Generated.GlobalPerformance as JSDOM.GlobalPerformance,
-                        JSDOM.Generated.HTMLAllCollection as JSDOM.HTMLAllCollection,
-                        JSDOM.Generated.HTMLAnchorElement as JSDOM.HTMLAnchorElement,
-                        JSDOM.Generated.HTMLAppletElement as JSDOM.HTMLAppletElement,
-                        JSDOM.Generated.HTMLAreaElement as JSDOM.HTMLAreaElement,
-                        JSDOM.Generated.HTMLAttachmentElement as JSDOM.HTMLAttachmentElement,
-                        JSDOM.Generated.HTMLBRElement as JSDOM.HTMLBRElement,
-                        JSDOM.Generated.HTMLBaseElement as JSDOM.HTMLBaseElement,
-                        JSDOM.Generated.HTMLBodyElement as JSDOM.HTMLBodyElement,
-                        JSDOM.Generated.HTMLButtonElement as JSDOM.HTMLButtonElement,
-                        JSDOM.Generated.HTMLCanvasElement as JSDOM.HTMLCanvasElement,
-                        JSDOM.Generated.HTMLCollection as JSDOM.HTMLCollection,
-                        JSDOM.Generated.HTMLDListElement as JSDOM.HTMLDListElement,
-                        JSDOM.Generated.HTMLDataElement as JSDOM.HTMLDataElement,
-                        JSDOM.Generated.HTMLDataListElement as JSDOM.HTMLDataListElement,
-                        JSDOM.Generated.HTMLDetailsElement as JSDOM.HTMLDetailsElement,
-                        JSDOM.Generated.HTMLDirectoryElement as JSDOM.HTMLDirectoryElement,
-                        JSDOM.Generated.HTMLDivElement as JSDOM.HTMLDivElement,
-                        JSDOM.Generated.HTMLDocument as JSDOM.HTMLDocument,
-                        JSDOM.Generated.HTMLElement as JSDOM.HTMLElement,
-                        JSDOM.Generated.HTMLEmbedElement as JSDOM.HTMLEmbedElement,
-                        JSDOM.Generated.HTMLFieldSetElement as JSDOM.HTMLFieldSetElement,
-                        JSDOM.Generated.HTMLFontElement as JSDOM.HTMLFontElement,
-                        JSDOM.Generated.HTMLFormControlsCollection as JSDOM.HTMLFormControlsCollection,
-                        JSDOM.Generated.HTMLFormElement as JSDOM.HTMLFormElement,
-                        JSDOM.Generated.HTMLFrameElement as JSDOM.HTMLFrameElement,
-                        JSDOM.Generated.HTMLFrameSetElement as JSDOM.HTMLFrameSetElement,
-                        JSDOM.Generated.HTMLHRElement as JSDOM.HTMLHRElement,
-                        JSDOM.Generated.HTMLHeadElement as JSDOM.HTMLHeadElement,
-                        JSDOM.Generated.HTMLHeadingElement as JSDOM.HTMLHeadingElement,
-                        JSDOM.Generated.HTMLHtmlElement as JSDOM.HTMLHtmlElement,
-                        JSDOM.Generated.HTMLHyperlinkElementUtils as JSDOM.HTMLHyperlinkElementUtils,
-                        JSDOM.Generated.HTMLIFrameElement as JSDOM.HTMLIFrameElement,
-                        JSDOM.Generated.HTMLImageElement as JSDOM.HTMLImageElement,
-                        JSDOM.Generated.HTMLInputElement as JSDOM.HTMLInputElement,
-                        JSDOM.Generated.HTMLKeygenElement as JSDOM.HTMLKeygenElement,
-                        JSDOM.Generated.HTMLLIElement as JSDOM.HTMLLIElement,
-                        JSDOM.Generated.HTMLLabelElement as JSDOM.HTMLLabelElement,
-                        JSDOM.Generated.HTMLLegendElement as JSDOM.HTMLLegendElement,
-                        JSDOM.Generated.HTMLLinkElement as JSDOM.HTMLLinkElement,
-                        JSDOM.Generated.HTMLMapElement as JSDOM.HTMLMapElement,
-                        JSDOM.Generated.HTMLMarqueeElement as JSDOM.HTMLMarqueeElement,
-                        JSDOM.Generated.HTMLMediaElement as JSDOM.HTMLMediaElement,
-                        JSDOM.Generated.HTMLMenuElement as JSDOM.HTMLMenuElement,
-                        JSDOM.Generated.HTMLMetaElement as JSDOM.HTMLMetaElement,
-                        JSDOM.Generated.HTMLMeterElement as JSDOM.HTMLMeterElement,
-                        JSDOM.Generated.HTMLModElement as JSDOM.HTMLModElement,
-                        JSDOM.Generated.HTMLOListElement as JSDOM.HTMLOListElement,
-                        JSDOM.Generated.HTMLObjectElement as JSDOM.HTMLObjectElement,
-                        JSDOM.Generated.HTMLOptGroupElement as JSDOM.HTMLOptGroupElement,
-                        JSDOM.Generated.HTMLOptionElement as JSDOM.HTMLOptionElement,
-                        JSDOM.Generated.HTMLOptionsCollection as JSDOM.HTMLOptionsCollection,
-                        JSDOM.Generated.HTMLOutputElement as JSDOM.HTMLOutputElement,
-                        JSDOM.Generated.HTMLParagraphElement as JSDOM.HTMLParagraphElement,
-                        JSDOM.Generated.HTMLParamElement as JSDOM.HTMLParamElement,
-                        JSDOM.Generated.HTMLPreElement as JSDOM.HTMLPreElement,
-                        JSDOM.Generated.HTMLProgressElement as JSDOM.HTMLProgressElement,
-                        JSDOM.Generated.HTMLQuoteElement as JSDOM.HTMLQuoteElement,
-                        JSDOM.Generated.HTMLScriptElement as JSDOM.HTMLScriptElement,
-                        JSDOM.Generated.HTMLSelectElement as JSDOM.HTMLSelectElement,
-                        JSDOM.Generated.HTMLSlotElement as JSDOM.HTMLSlotElement,
-                        JSDOM.Generated.HTMLSourceElement as JSDOM.HTMLSourceElement,
-                        JSDOM.Generated.HTMLStyleElement as JSDOM.HTMLStyleElement,
-                        JSDOM.Generated.HTMLTableCaptionElement as JSDOM.HTMLTableCaptionElement,
-                        JSDOM.Generated.HTMLTableCellElement as JSDOM.HTMLTableCellElement,
-                        JSDOM.Generated.HTMLTableColElement as JSDOM.HTMLTableColElement,
-                        JSDOM.Generated.HTMLTableElement as JSDOM.HTMLTableElement,
-                        JSDOM.Generated.HTMLTableRowElement as JSDOM.HTMLTableRowElement,
-                        JSDOM.Generated.HTMLTableSectionElement as JSDOM.HTMLTableSectionElement,
-                        JSDOM.Generated.HTMLTemplateElement as JSDOM.HTMLTemplateElement,
-                        JSDOM.Generated.HTMLTextAreaElement as JSDOM.HTMLTextAreaElement,
-                        JSDOM.Generated.HTMLTimeElement as JSDOM.HTMLTimeElement,
-                        JSDOM.Generated.HTMLTitleElement as JSDOM.HTMLTitleElement,
-                        JSDOM.Generated.HTMLTrackElement as JSDOM.HTMLTrackElement,
-                        JSDOM.Generated.HTMLUListElement as JSDOM.HTMLUListElement,
-                        JSDOM.Generated.HTMLVideoElement as JSDOM.HTMLVideoElement,
-                        JSDOM.Generated.HashChangeEvent as JSDOM.HashChangeEvent,
-                        JSDOM.Generated.Headers as JSDOM.Headers,
-                        JSDOM.Generated.History as JSDOM.History,
-                        JSDOM.Generated.IDBCursor as JSDOM.IDBCursor,
-                        JSDOM.Generated.IDBCursorWithValue as JSDOM.IDBCursorWithValue,
-                        JSDOM.Generated.IDBDatabase as JSDOM.IDBDatabase,
-                        JSDOM.Generated.IDBFactory as JSDOM.IDBFactory,
-                        JSDOM.Generated.IDBIndex as JSDOM.IDBIndex,
-                        JSDOM.Generated.IDBKeyRange as JSDOM.IDBKeyRange,
-                        JSDOM.Generated.IDBObjectStore as JSDOM.IDBObjectStore,
-                        JSDOM.Generated.IDBOpenDBRequest as JSDOM.IDBOpenDBRequest,
-                        JSDOM.Generated.IDBRequest as JSDOM.IDBRequest,
-                        JSDOM.Generated.IDBTransaction as JSDOM.IDBTransaction,
-                        JSDOM.Generated.IDBVersionChangeEvent as JSDOM.IDBVersionChangeEvent,
-                        JSDOM.Generated.ImageData as JSDOM.ImageData,
-                        JSDOM.Generated.InputEvent as JSDOM.InputEvent,
-                        JSDOM.Generated.InspectorFrontendHost as JSDOM.InspectorFrontendHost,
-                        JSDOM.Generated.IntersectionObserver as JSDOM.IntersectionObserver,
-                        JSDOM.Generated.IntersectionObserverCallback as JSDOM.IntersectionObserverCallback,
-                        JSDOM.Generated.IntersectionObserverEntry as JSDOM.IntersectionObserverEntry,
-                        JSDOM.Generated.KeyboardEvent as JSDOM.KeyboardEvent,
-                        JSDOM.Generated.KeyframeEffect as JSDOM.KeyframeEffect,
-                        JSDOM.Generated.Location as JSDOM.Location,
-                        JSDOM.Generated.MediaController as JSDOM.MediaController,
-                        JSDOM.Generated.MediaControlsHost as JSDOM.MediaControlsHost,
-                        JSDOM.Generated.MediaDeviceInfo as JSDOM.MediaDeviceInfo,
-                        JSDOM.Generated.MediaDevices as JSDOM.MediaDevices,
-                        JSDOM.Generated.MediaElementAudioSourceNode as JSDOM.MediaElementAudioSourceNode,
-                        JSDOM.Generated.MediaEncryptedEvent as JSDOM.MediaEncryptedEvent,
-                        JSDOM.Generated.MediaError as JSDOM.MediaError,
-                        JSDOM.Generated.MediaKeyMessageEvent as JSDOM.MediaKeyMessageEvent,
-                        JSDOM.Generated.MediaKeySession as JSDOM.MediaKeySession,
-                        JSDOM.Generated.MediaKeyStatusMap as JSDOM.MediaKeyStatusMap,
-                        JSDOM.Generated.MediaKeySystemAccess as JSDOM.MediaKeySystemAccess,
-                        JSDOM.Generated.MediaKeys as JSDOM.MediaKeys,
-                        JSDOM.Generated.MediaList as JSDOM.MediaList,
-                        JSDOM.Generated.MediaQueryList as JSDOM.MediaQueryList,
-                        JSDOM.Generated.MediaQueryListListener as JSDOM.MediaQueryListListener,
-                        JSDOM.Generated.MediaRemoteControls as JSDOM.MediaRemoteControls,
-                        JSDOM.Generated.MediaSession as JSDOM.MediaSession,
-                        JSDOM.Generated.MediaSource as JSDOM.MediaSource,
-                        JSDOM.Generated.MediaStream as JSDOM.MediaStream,
-                        JSDOM.Generated.MediaStreamAudioDestinationNode as JSDOM.MediaStreamAudioDestinationNode,
-                        JSDOM.Generated.MediaStreamAudioSourceNode as JSDOM.MediaStreamAudioSourceNode,
-                        JSDOM.Generated.MediaStreamEvent as JSDOM.MediaStreamEvent,
-                        JSDOM.Generated.MediaStreamTrack as JSDOM.MediaStreamTrack,
-                        JSDOM.Generated.MediaStreamTrackEvent as JSDOM.MediaStreamTrackEvent,
-                        JSDOM.Generated.MessageChannel as JSDOM.MessageChannel,
-                        JSDOM.Generated.MessageEvent as JSDOM.MessageEvent,
-                        JSDOM.Generated.MessagePort as JSDOM.MessagePort,
-                        JSDOM.Generated.MimeType as JSDOM.MimeType,
-                        JSDOM.Generated.MimeTypeArray as JSDOM.MimeTypeArray,
-                        JSDOM.Generated.MouseEvent as JSDOM.MouseEvent,
-                        JSDOM.Generated.MutationEvent as JSDOM.MutationEvent,
-                        JSDOM.Generated.MutationObserver as JSDOM.MutationObserver,
-                        JSDOM.Generated.MutationRecord as JSDOM.MutationRecord,
-                        JSDOM.Generated.NamedNodeMap as JSDOM.NamedNodeMap,
-                        JSDOM.Generated.NavigatorConcurrentHardware as JSDOM.NavigatorConcurrentHardware,
-                        JSDOM.Generated.NavigatorID as JSDOM.NavigatorID,
-                        JSDOM.Generated.NavigatorLanguage as JSDOM.NavigatorLanguage,
-                        JSDOM.Generated.NavigatorOnLine as JSDOM.NavigatorOnLine,
-                        JSDOM.Generated.NavigatorUserMediaErrorCallback as JSDOM.NavigatorUserMediaErrorCallback,
-                        JSDOM.Generated.NavigatorUserMediaSuccessCallback as JSDOM.NavigatorUserMediaSuccessCallback,
-                        JSDOM.Generated.Node as JSDOM.Node,
-                        JSDOM.Generated.NodeFilter as JSDOM.NodeFilter,
-                        JSDOM.Generated.NodeIterator as JSDOM.NodeIterator,
-                        JSDOM.Generated.NodeList as JSDOM.NodeList,
-                        JSDOM.Generated.NonDocumentTypeChildNode as JSDOM.NonDocumentTypeChildNode,
-                        JSDOM.Generated.NonElementParentNode as JSDOM.NonElementParentNode,
-                        JSDOM.Generated.Notification as JSDOM.Notification,
-                        JSDOM.Generated.NotificationPermissionCallback as JSDOM.NotificationPermissionCallback,
-                        JSDOM.Generated.OESStandardDerivatives as JSDOM.OESStandardDerivatives,
-                        JSDOM.Generated.OESTextureHalfFloat as JSDOM.OESTextureHalfFloat,
-                        JSDOM.Generated.OESVertexArrayObject as JSDOM.OESVertexArrayObject,
-                        JSDOM.Generated.OfflineAudioCompletionEvent as JSDOM.OfflineAudioCompletionEvent,
-                        JSDOM.Generated.OfflineAudioContext as JSDOM.OfflineAudioContext,
-                        JSDOM.Generated.OscillatorNode as JSDOM.OscillatorNode,
-                        JSDOM.Generated.OverconstrainedError as JSDOM.OverconstrainedError,
-                        JSDOM.Generated.OverconstrainedErrorEvent as JSDOM.OverconstrainedErrorEvent,
-                        JSDOM.Generated.OverflowEvent as JSDOM.OverflowEvent,
-                        JSDOM.Generated.PageTransitionEvent as JSDOM.PageTransitionEvent,
-                        JSDOM.Generated.PannerNode as JSDOM.PannerNode,
-                        JSDOM.Generated.ParentNode as JSDOM.ParentNode,
-                        JSDOM.Generated.PasswordCredential as JSDOM.PasswordCredential,
-                        JSDOM.Generated.Path2D as JSDOM.Path2D,
-                        JSDOM.Generated.Performance as JSDOM.Performance,
-                        JSDOM.Generated.PerformanceEntry as JSDOM.PerformanceEntry,
-                        JSDOM.Generated.PerformanceNavigation as JSDOM.PerformanceNavigation,
-                        JSDOM.Generated.PerformanceObserver as JSDOM.PerformanceObserver,
-                        JSDOM.Generated.PerformanceObserverCallback as JSDOM.PerformanceObserverCallback,
-                        JSDOM.Generated.PerformanceObserverEntryList as JSDOM.PerformanceObserverEntryList,
-                        JSDOM.Generated.PerformanceResourceTiming as JSDOM.PerformanceResourceTiming,
-                        JSDOM.Generated.PerformanceTiming as JSDOM.PerformanceTiming,
-                        JSDOM.Generated.Plugin as JSDOM.Plugin,
-                        JSDOM.Generated.PluginArray as JSDOM.PluginArray,
-                        JSDOM.Generated.PopStateEvent as JSDOM.PopStateEvent,
-                        JSDOM.Generated.PositionCallback as JSDOM.PositionCallback,
-                        JSDOM.Generated.PositionErrorCallback as JSDOM.PositionErrorCallback,
-                        JSDOM.Generated.ProcessingInstruction as JSDOM.ProcessingInstruction,
-                        JSDOM.Generated.ProgressEvent as JSDOM.ProgressEvent,
-                        JSDOM.Generated.PromiseRejectionEvent as JSDOM.PromiseRejectionEvent,
-                        JSDOM.Generated.QuickTimePluginReplacement as JSDOM.QuickTimePluginReplacement,
-                        JSDOM.Generated.RGBColor as JSDOM.RGBColor,
-                        JSDOM.Generated.RTCDTMFSender as JSDOM.RTCDTMFSender,
-                        JSDOM.Generated.RTCDTMFToneChangeEvent as JSDOM.RTCDTMFToneChangeEvent,
-                        JSDOM.Generated.RTCDataChannel as JSDOM.RTCDataChannel,
-                        JSDOM.Generated.RTCDataChannelEvent as JSDOM.RTCDataChannelEvent,
-                        JSDOM.Generated.RTCIceCandidate as JSDOM.RTCIceCandidate,
-                        JSDOM.Generated.RTCIceCandidateEvent as JSDOM.RTCIceCandidateEvent,
-                        JSDOM.Generated.RTCIceTransport as JSDOM.RTCIceTransport,
-                        JSDOM.Generated.RTCPeerConnection as JSDOM.RTCPeerConnection,
-                        JSDOM.Generated.RTCPeerConnectionIceEvent as JSDOM.RTCPeerConnectionIceEvent,
-                        JSDOM.Generated.RTCRtpReceiver as JSDOM.RTCRtpReceiver,
-                        JSDOM.Generated.RTCRtpSender as JSDOM.RTCRtpSender,
-                        JSDOM.Generated.RTCRtpTransceiver as JSDOM.RTCRtpTransceiver,
-                        JSDOM.Generated.RTCSessionDescription as JSDOM.RTCSessionDescription,
-                        JSDOM.Generated.RTCTrackEvent as JSDOM.RTCTrackEvent,
-                        JSDOM.Generated.RadioNodeList as JSDOM.RadioNodeList,
-                        JSDOM.Generated.Range as JSDOM.Range,
-                        JSDOM.Generated.ReadableByteStreamController as JSDOM.ReadableByteStreamController,
-                        JSDOM.Generated.ReadableStream as JSDOM.ReadableStream,
-                        JSDOM.Generated.ReadableStreamBYOBReader as JSDOM.ReadableStreamBYOBReader,
-                        JSDOM.Generated.ReadableStreamBYOBRequest as JSDOM.ReadableStreamBYOBRequest,
-                        JSDOM.Generated.ReadableStreamDefaultController as JSDOM.ReadableStreamDefaultController,
-                        JSDOM.Generated.ReadableStreamDefaultReader as JSDOM.ReadableStreamDefaultReader,
-                        JSDOM.Generated.ReadableStreamSource as JSDOM.ReadableStreamSource,
-                        JSDOM.Generated.Rect as JSDOM.Rect,
-                        JSDOM.Generated.Request as JSDOM.Request,
-                        JSDOM.Generated.RequestAnimationFrameCallback as JSDOM.RequestAnimationFrameCallback,
-                        JSDOM.Generated.Response as JSDOM.Response,
-                        JSDOM.Generated.SQLException as JSDOM.SQLException,
-                        JSDOM.Generated.SQLResultSet as JSDOM.SQLResultSet,
-                        JSDOM.Generated.SQLResultSetRowList as JSDOM.SQLResultSetRowList,
-                        JSDOM.Generated.SQLStatementCallback as JSDOM.SQLStatementCallback,
-                        JSDOM.Generated.SQLStatementErrorCallback as JSDOM.SQLStatementErrorCallback,
-                        JSDOM.Generated.SQLTransactionCallback as JSDOM.SQLTransactionCallback,
-                        JSDOM.Generated.SQLTransactionErrorCallback as JSDOM.SQLTransactionErrorCallback,
-                        JSDOM.Generated.SVGAElement as JSDOM.SVGAElement,
-                        JSDOM.Generated.SVGAltGlyphElement as JSDOM.SVGAltGlyphElement,
-                        JSDOM.Generated.SVGAngle as JSDOM.SVGAngle,
-                        JSDOM.Generated.SVGAnimatedAngle as JSDOM.SVGAnimatedAngle,
-                        JSDOM.Generated.SVGAnimatedBoolean as JSDOM.SVGAnimatedBoolean,
-                        JSDOM.Generated.SVGAnimatedEnumeration as JSDOM.SVGAnimatedEnumeration,
-                        JSDOM.Generated.SVGAnimatedInteger as JSDOM.SVGAnimatedInteger,
-                        JSDOM.Generated.SVGAnimatedLength as JSDOM.SVGAnimatedLength,
-                        JSDOM.Generated.SVGAnimatedLengthList as JSDOM.SVGAnimatedLengthList,
-                        JSDOM.Generated.SVGAnimatedNumber as JSDOM.SVGAnimatedNumber,
-                        JSDOM.Generated.SVGAnimatedNumberList as JSDOM.SVGAnimatedNumberList,
-                        JSDOM.Generated.SVGAnimatedPreserveAspectRatio as JSDOM.SVGAnimatedPreserveAspectRatio,
-                        JSDOM.Generated.SVGAnimatedRect as JSDOM.SVGAnimatedRect,
-                        JSDOM.Generated.SVGAnimatedString as JSDOM.SVGAnimatedString,
-                        JSDOM.Generated.SVGAnimatedTransformList as JSDOM.SVGAnimatedTransformList,
-                        JSDOM.Generated.SVGAnimationElement as JSDOM.SVGAnimationElement,
-                        JSDOM.Generated.SVGCircleElement as JSDOM.SVGCircleElement,
-                        JSDOM.Generated.SVGClipPathElement as JSDOM.SVGClipPathElement,
-                        JSDOM.Generated.SVGComponentTransferFunctionElement as JSDOM.SVGComponentTransferFunctionElement,
-                        JSDOM.Generated.SVGCursorElement as JSDOM.SVGCursorElement,
-                        JSDOM.Generated.SVGElement as JSDOM.SVGElement,
-                        JSDOM.Generated.SVGEllipseElement as JSDOM.SVGEllipseElement,
-                        JSDOM.Generated.SVGException as JSDOM.SVGException,
-                        JSDOM.Generated.SVGExternalResourcesRequired as JSDOM.SVGExternalResourcesRequired,
-                        JSDOM.Generated.SVGFEBlendElement as JSDOM.SVGFEBlendElement,
-                        JSDOM.Generated.SVGFEColorMatrixElement as JSDOM.SVGFEColorMatrixElement,
-                        JSDOM.Generated.SVGFEComponentTransferElement as JSDOM.SVGFEComponentTransferElement,
-                        JSDOM.Generated.SVGFECompositeElement as JSDOM.SVGFECompositeElement,
-                        JSDOM.Generated.SVGFEConvolveMatrixElement as JSDOM.SVGFEConvolveMatrixElement,
-                        JSDOM.Generated.SVGFEDiffuseLightingElement as JSDOM.SVGFEDiffuseLightingElement,
-                        JSDOM.Generated.SVGFEDisplacementMapElement as JSDOM.SVGFEDisplacementMapElement,
-                        JSDOM.Generated.SVGFEDistantLightElement as JSDOM.SVGFEDistantLightElement,
-                        JSDOM.Generated.SVGFEDropShadowElement as JSDOM.SVGFEDropShadowElement,
-                        JSDOM.Generated.SVGFEGaussianBlurElement as JSDOM.SVGFEGaussianBlurElement,
-                        JSDOM.Generated.SVGFEImageElement as JSDOM.SVGFEImageElement,
-                        JSDOM.Generated.SVGFEMergeNodeElement as JSDOM.SVGFEMergeNodeElement,
-                        JSDOM.Generated.SVGFEMorphologyElement as JSDOM.SVGFEMorphologyElement,
-                        JSDOM.Generated.SVGFEOffsetElement as JSDOM.SVGFEOffsetElement,
-                        JSDOM.Generated.SVGFEPointLightElement as JSDOM.SVGFEPointLightElement,
-                        JSDOM.Generated.SVGFESpecularLightingElement as JSDOM.SVGFESpecularLightingElement,
-                        JSDOM.Generated.SVGFESpotLightElement as JSDOM.SVGFESpotLightElement,
-                        JSDOM.Generated.SVGFETileElement as JSDOM.SVGFETileElement,
-                        JSDOM.Generated.SVGFETurbulenceElement as JSDOM.SVGFETurbulenceElement,
-                        JSDOM.Generated.SVGFilterElement as JSDOM.SVGFilterElement,
-                        JSDOM.Generated.SVGFilterPrimitiveStandardAttributes as JSDOM.SVGFilterPrimitiveStandardAttributes,
-                        JSDOM.Generated.SVGFitToViewBox as JSDOM.SVGFitToViewBox,
-                        JSDOM.Generated.SVGForeignObjectElement as JSDOM.SVGForeignObjectElement,
-                        JSDOM.Generated.SVGGlyphRefElement as JSDOM.SVGGlyphRefElement,
-                        JSDOM.Generated.SVGGradientElement as JSDOM.SVGGradientElement,
-                        JSDOM.Generated.SVGGraphicsElement as JSDOM.SVGGraphicsElement,
-                        JSDOM.Generated.SVGImageElement as JSDOM.SVGImageElement,
-                        JSDOM.Generated.SVGLength as JSDOM.SVGLength,
-                        JSDOM.Generated.SVGLengthList as JSDOM.SVGLengthList,
-                        JSDOM.Generated.SVGLineElement as JSDOM.SVGLineElement,
-                        JSDOM.Generated.SVGLinearGradientElement as JSDOM.SVGLinearGradientElement,
-                        JSDOM.Generated.SVGMarkerElement as JSDOM.SVGMarkerElement,
-                        JSDOM.Generated.SVGMaskElement as JSDOM.SVGMaskElement,
-                        JSDOM.Generated.SVGMatrix as JSDOM.SVGMatrix,
-                        JSDOM.Generated.SVGNumber as JSDOM.SVGNumber,
-                        JSDOM.Generated.SVGNumberList as JSDOM.SVGNumberList,
-                        JSDOM.Generated.SVGPathElement as JSDOM.SVGPathElement,
-                        JSDOM.Generated.SVGPathSeg as JSDOM.SVGPathSeg,
-                        JSDOM.Generated.SVGPathSegArcAbs as JSDOM.SVGPathSegArcAbs,
-                        JSDOM.Generated.SVGPathSegArcRel as JSDOM.SVGPathSegArcRel,
-                        JSDOM.Generated.SVGPathSegCurvetoCubicAbs as JSDOM.SVGPathSegCurvetoCubicAbs,
-                        JSDOM.Generated.SVGPathSegCurvetoCubicRel as JSDOM.SVGPathSegCurvetoCubicRel,
-                        JSDOM.Generated.SVGPathSegCurvetoCubicSmoothAbs as JSDOM.SVGPathSegCurvetoCubicSmoothAbs,
-                        JSDOM.Generated.SVGPathSegCurvetoCubicSmoothRel as JSDOM.SVGPathSegCurvetoCubicSmoothRel,
-                        JSDOM.Generated.SVGPathSegCurvetoQuadraticAbs as JSDOM.SVGPathSegCurvetoQuadraticAbs,
-                        JSDOM.Generated.SVGPathSegCurvetoQuadraticRel as JSDOM.SVGPathSegCurvetoQuadraticRel,
-                        JSDOM.Generated.SVGPathSegCurvetoQuadraticSmoothAbs as JSDOM.SVGPathSegCurvetoQuadraticSmoothAbs,
-                        JSDOM.Generated.SVGPathSegCurvetoQuadraticSmoothRel as JSDOM.SVGPathSegCurvetoQuadraticSmoothRel,
-                        JSDOM.Generated.SVGPathSegLinetoAbs as JSDOM.SVGPathSegLinetoAbs,
-                        JSDOM.Generated.SVGPathSegLinetoHorizontalAbs as JSDOM.SVGPathSegLinetoHorizontalAbs,
-                        JSDOM.Generated.SVGPathSegLinetoHorizontalRel as JSDOM.SVGPathSegLinetoHorizontalRel,
-                        JSDOM.Generated.SVGPathSegLinetoRel as JSDOM.SVGPathSegLinetoRel,
-                        JSDOM.Generated.SVGPathSegLinetoVerticalAbs as JSDOM.SVGPathSegLinetoVerticalAbs,
-                        JSDOM.Generated.SVGPathSegLinetoVerticalRel as JSDOM.SVGPathSegLinetoVerticalRel,
-                        JSDOM.Generated.SVGPathSegList as JSDOM.SVGPathSegList,
-                        JSDOM.Generated.SVGPathSegMovetoAbs as JSDOM.SVGPathSegMovetoAbs,
-                        JSDOM.Generated.SVGPathSegMovetoRel as JSDOM.SVGPathSegMovetoRel,
-                        JSDOM.Generated.SVGPatternElement as JSDOM.SVGPatternElement,
-                        JSDOM.Generated.SVGPoint as JSDOM.SVGPoint,
-                        JSDOM.Generated.SVGPointList as JSDOM.SVGPointList,
-                        JSDOM.Generated.SVGPolygonElement as JSDOM.SVGPolygonElement,
-                        JSDOM.Generated.SVGPolylineElement as JSDOM.SVGPolylineElement,
-                        JSDOM.Generated.SVGPreserveAspectRatio as JSDOM.SVGPreserveAspectRatio,
-                        JSDOM.Generated.SVGRadialGradientElement as JSDOM.SVGRadialGradientElement,
-                        JSDOM.Generated.SVGRect as JSDOM.SVGRect,
-                        JSDOM.Generated.SVGRectElement as JSDOM.SVGRectElement,
-                        JSDOM.Generated.SVGRenderingIntent as JSDOM.SVGRenderingIntent,
-                        JSDOM.Generated.SVGSVGElement as JSDOM.SVGSVGElement,
-                        JSDOM.Generated.SVGScriptElement as JSDOM.SVGScriptElement,
-                        JSDOM.Generated.SVGStopElement as JSDOM.SVGStopElement,
-                        JSDOM.Generated.SVGStringList as JSDOM.SVGStringList,
-                        JSDOM.Generated.SVGStyleElement as JSDOM.SVGStyleElement,
-                        JSDOM.Generated.SVGTests as JSDOM.SVGTests,
-                        JSDOM.Generated.SVGTextContentElement as JSDOM.SVGTextContentElement,
-                        JSDOM.Generated.SVGTextPathElement as JSDOM.SVGTextPathElement,
-                        JSDOM.Generated.SVGTextPositioningElement as JSDOM.SVGTextPositioningElement,
-                        JSDOM.Generated.SVGTransform as JSDOM.SVGTransform,
-                        JSDOM.Generated.SVGTransformList as JSDOM.SVGTransformList,
-                        JSDOM.Generated.SVGURIReference as JSDOM.SVGURIReference,
-                        JSDOM.Generated.SVGUnitTypes as JSDOM.SVGUnitTypes,
-                        JSDOM.Generated.SVGUseElement as JSDOM.SVGUseElement,
-                        JSDOM.Generated.SVGViewElement as JSDOM.SVGViewElement,
-                        JSDOM.Generated.SVGViewSpec as JSDOM.SVGViewSpec,
-                        JSDOM.Generated.SVGZoomAndPan as JSDOM.SVGZoomAndPan,
-                        JSDOM.Generated.SVGZoomEvent as JSDOM.SVGZoomEvent,
-                        JSDOM.Generated.Screen as JSDOM.Screen,
-                        JSDOM.Generated.ScriptProcessorNode as JSDOM.ScriptProcessorNode,
-                        JSDOM.Generated.SecurityPolicyViolationEvent as JSDOM.SecurityPolicyViolationEvent,
-                        JSDOM.Generated.Selection as JSDOM.Selection,
-                        JSDOM.Generated.ShadowRoot as JSDOM.ShadowRoot,
-                        JSDOM.Generated.SiteBoundCredential as JSDOM.SiteBoundCredential,
-                        JSDOM.Generated.Slotable as JSDOM.Slotable,
-                        JSDOM.Generated.SourceBuffer as JSDOM.SourceBuffer,
-                        JSDOM.Generated.SourceBufferList as JSDOM.SourceBufferList,
-                        JSDOM.Generated.SpeechSynthesis as JSDOM.SpeechSynthesis,
-                        JSDOM.Generated.SpeechSynthesisEvent as JSDOM.SpeechSynthesisEvent,
-                        JSDOM.Generated.SpeechSynthesisUtterance as JSDOM.SpeechSynthesisUtterance,
-                        JSDOM.Generated.SpeechSynthesisVoice as JSDOM.SpeechSynthesisVoice,
-                        JSDOM.Generated.StaticRange as JSDOM.StaticRange,
-                        JSDOM.Generated.Storage as JSDOM.Storage,
-                        JSDOM.Generated.StorageErrorCallback as JSDOM.StorageErrorCallback,
-                        JSDOM.Generated.StorageEvent as JSDOM.StorageEvent,
-                        JSDOM.Generated.StorageInfo as JSDOM.StorageInfo,
-                        JSDOM.Generated.StorageQuota as JSDOM.StorageQuota,
-                        JSDOM.Generated.StorageQuotaCallback as JSDOM.StorageQuotaCallback,
-                        JSDOM.Generated.StorageUsageCallback as JSDOM.StorageUsageCallback,
-                        JSDOM.Generated.StringCallback as JSDOM.StringCallback,
-                        JSDOM.Generated.StyleMedia as JSDOM.StyleMedia,
-                        JSDOM.Generated.StyleSheet as JSDOM.StyleSheet,
-                        JSDOM.Generated.StyleSheetList as JSDOM.StyleSheetList,
-                        JSDOM.Generated.SubtleCrypto as JSDOM.SubtleCrypto,
-                        JSDOM.Generated.Text as JSDOM.Text,
-                        JSDOM.Generated.TextDecoder as JSDOM.TextDecoder,
-                        JSDOM.Generated.TextEncoder as JSDOM.TextEncoder,
-                        JSDOM.Generated.TextEvent as JSDOM.TextEvent,
-                        JSDOM.Generated.TextMetrics as JSDOM.TextMetrics,
-                        JSDOM.Generated.TextTrack as JSDOM.TextTrack,
-                        JSDOM.Generated.TextTrackCue as JSDOM.TextTrackCue,
-                        JSDOM.Generated.TextTrackCueList as JSDOM.TextTrackCueList,
-                        JSDOM.Generated.TextTrackList as JSDOM.TextTrackList,
-                        JSDOM.Generated.TimeRanges as JSDOM.TimeRanges,
-                        JSDOM.Generated.Touch as JSDOM.Touch,
-                        JSDOM.Generated.TouchEvent as JSDOM.TouchEvent,
-                        JSDOM.Generated.TouchList as JSDOM.TouchList,
-                        JSDOM.Generated.TrackEvent as JSDOM.TrackEvent,
-                        JSDOM.Generated.TransitionEvent as JSDOM.TransitionEvent,
-                        JSDOM.Generated.TreeWalker as JSDOM.TreeWalker,
-                        JSDOM.Generated.UIEvent as JSDOM.UIEvent,
-                        JSDOM.Generated.URL as JSDOM.URL,
-                        JSDOM.Generated.URLSearchParams as JSDOM.URLSearchParams,
-                        JSDOM.Generated.UserMessageHandler as JSDOM.UserMessageHandler,
-                        JSDOM.Generated.VTTCue as JSDOM.VTTCue,
-                        JSDOM.Generated.VTTRegion as JSDOM.VTTRegion,
-                        JSDOM.Generated.VTTRegionList as JSDOM.VTTRegionList,
-                        JSDOM.Generated.ValidityState as JSDOM.ValidityState,
-                        JSDOM.Generated.VideoPlaybackQuality as JSDOM.VideoPlaybackQuality,
-                        JSDOM.Generated.VideoTrack as JSDOM.VideoTrack,
-                        JSDOM.Generated.VideoTrackList as JSDOM.VideoTrackList,
-                        JSDOM.Generated.VoidCallback as JSDOM.VoidCallback,
-                        JSDOM.Generated.WaveShaperNode as JSDOM.WaveShaperNode,
-                        JSDOM.Generated.WebGL2RenderingContext as JSDOM.WebGL2RenderingContext,
-                        JSDOM.Generated.WebGLActiveInfo as JSDOM.WebGLActiveInfo,
-                        JSDOM.Generated.WebGLCompressedTextureATC as JSDOM.WebGLCompressedTextureATC,
-                        JSDOM.Generated.WebGLCompressedTexturePVRTC as JSDOM.WebGLCompressedTexturePVRTC,
-                        JSDOM.Generated.WebGLCompressedTextureS3TC as JSDOM.WebGLCompressedTextureS3TC,
-                        JSDOM.Generated.WebGLContextEvent as JSDOM.WebGLContextEvent,
-                        JSDOM.Generated.WebGLDebugRendererInfo as JSDOM.WebGLDebugRendererInfo,
-                        JSDOM.Generated.WebGLDebugShaders as JSDOM.WebGLDebugShaders,
-                        JSDOM.Generated.WebGLDepthTexture as JSDOM.WebGLDepthTexture,
-                        JSDOM.Generated.WebGLDrawBuffers as JSDOM.WebGLDrawBuffers,
-                        JSDOM.Generated.WebGLLoseContext as JSDOM.WebGLLoseContext,
-                        JSDOM.Generated.WebGLRenderingContextBase as JSDOM.WebGLRenderingContextBase,
-                        JSDOM.Generated.WebGLShaderPrecisionFormat as JSDOM.WebGLShaderPrecisionFormat,
-                        JSDOM.Generated.WebGPUBuffer as JSDOM.WebGPUBuffer,
-                        JSDOM.Generated.WebGPUCommandBuffer as JSDOM.WebGPUCommandBuffer,
-                        JSDOM.Generated.WebGPUCommandQueue as JSDOM.WebGPUCommandQueue,
-                        JSDOM.Generated.WebGPUComputeCommandEncoder as JSDOM.WebGPUComputeCommandEncoder,
-                        JSDOM.Generated.WebGPUDepthStencilDescriptor as JSDOM.WebGPUDepthStencilDescriptor,
-                        JSDOM.Generated.WebGPUDepthStencilState as JSDOM.WebGPUDepthStencilState,
-                        JSDOM.Generated.WebGPUDrawable as JSDOM.WebGPUDrawable,
-                        JSDOM.Generated.WebGPUFunction as JSDOM.WebGPUFunction,
-                        JSDOM.Generated.WebGPULibrary as JSDOM.WebGPULibrary,
-                        JSDOM.Generated.WebGPURenderCommandEncoder as JSDOM.WebGPURenderCommandEncoder,
-                        JSDOM.Generated.WebGPURenderPassAttachmentDescriptor as JSDOM.WebGPURenderPassAttachmentDescriptor,
-                        JSDOM.Generated.WebGPURenderPassColorAttachmentDescriptor as JSDOM.WebGPURenderPassColorAttachmentDescriptor,
-                        JSDOM.Generated.WebGPURenderPassDepthAttachmentDescriptor as JSDOM.WebGPURenderPassDepthAttachmentDescriptor,
-                        JSDOM.Generated.WebGPURenderPassDescriptor as JSDOM.WebGPURenderPassDescriptor,
-                        JSDOM.Generated.WebGPURenderPipelineColorAttachmentDescriptor as JSDOM.WebGPURenderPipelineColorAttachmentDescriptor,
-                        JSDOM.Generated.WebGPURenderPipelineDescriptor as JSDOM.WebGPURenderPipelineDescriptor,
-                        JSDOM.Generated.WebGPURenderPipelineState as JSDOM.WebGPURenderPipelineState,
-                        JSDOM.Generated.WebGPURenderingContext as JSDOM.WebGPURenderingContext,
-                        JSDOM.Generated.WebGPUTexture as JSDOM.WebGPUTexture,
-                        JSDOM.Generated.WebGPUTextureDescriptor as JSDOM.WebGPUTextureDescriptor,
-                        JSDOM.Generated.WebKitAnimationEvent as JSDOM.WebKitAnimationEvent,
-                        JSDOM.Generated.WebKitCSSMatrix as JSDOM.WebKitCSSMatrix,
-                        JSDOM.Generated.WebKitCSSRegionRule as JSDOM.WebKitCSSRegionRule,
-                        JSDOM.Generated.WebKitCSSViewportRule as JSDOM.WebKitCSSViewportRule,
-                        JSDOM.Generated.WebKitMediaKeyError as JSDOM.WebKitMediaKeyError,
-                        JSDOM.Generated.WebKitMediaKeyMessageEvent as JSDOM.WebKitMediaKeyMessageEvent,
-                        JSDOM.Generated.WebKitMediaKeyNeededEvent as JSDOM.WebKitMediaKeyNeededEvent,
-                        JSDOM.Generated.WebKitMediaKeySession as JSDOM.WebKitMediaKeySession,
-                        JSDOM.Generated.WebKitMediaKeys as JSDOM.WebKitMediaKeys,
-                        JSDOM.Generated.WebKitNamedFlow as JSDOM.WebKitNamedFlow,
-                        JSDOM.Generated.WebKitNamespace as JSDOM.WebKitNamespace,
-                        JSDOM.Generated.WebKitPlaybackTargetAvailabilityEvent as JSDOM.WebKitPlaybackTargetAvailabilityEvent,
-                        JSDOM.Generated.WebKitPoint as JSDOM.WebKitPoint,
-                        JSDOM.Generated.WebKitSubtleCrypto as JSDOM.WebKitSubtleCrypto,
-                        JSDOM.Generated.WebKitTransitionEvent as JSDOM.WebKitTransitionEvent,
-                        JSDOM.Generated.WebSocket as JSDOM.WebSocket,
-                        JSDOM.Generated.WheelEvent as JSDOM.WheelEvent,
-                        JSDOM.Generated.WindowEventHandlers as JSDOM.WindowEventHandlers,
-                        JSDOM.Generated.WindowOrWorkerGlobalScope as JSDOM.WindowOrWorkerGlobalScope,
-                        JSDOM.Generated.Worker as JSDOM.Worker,
-                        JSDOM.Generated.WorkerGlobalScope as JSDOM.WorkerGlobalScope,
-                        JSDOM.Generated.WorkerLocation as JSDOM.WorkerLocation,
-                        JSDOM.Generated.WorkerNavigator as JSDOM.WorkerNavigator,
-                        JSDOM.Generated.WritableStream as JSDOM.WritableStream,
-                        JSDOM.Generated.XMLHttpRequestEventTarget as JSDOM.XMLHttpRequestEventTarget,
-                        JSDOM.Generated.XMLHttpRequestProgressEvent as JSDOM.XMLHttpRequestProgressEvent,
-                        JSDOM.Generated.XMLSerializer as JSDOM.XMLSerializer,
-                        JSDOM.Generated.XPathEvaluator as JSDOM.XPathEvaluator,
-                        JSDOM.Generated.XPathException as JSDOM.XPathException,
-                        JSDOM.Generated.XPathExpression as JSDOM.XPathExpression,
-                        JSDOM.Generated.XPathNSResolver as JSDOM.XPathNSResolver,
-                        JSDOM.Generated.XPathResult as JSDOM.XPathResult,
-                        JSDOM.Generated.XSLTProcessor as JSDOM.XSLTProcessor
-    build-depends:
-        base >=4.7.0.0 && <5,
-        base-compat >=0.9.0 && <0.16,
-        exceptions >=0.8 && <0.11,
-        transformers >=0.2 && <0.7,
-        text >=0.11.0.6 && <2.2,
-        jsaddle >=0.9.3.0 && <0.10,
+version: 0.10.0.0
+build-type: Simple
+license: MIT
+license-file: LICENSE
+extra-doc-files: ChangeLog.md API-CHANGES-0.10.md
+maintainer: Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
+synopsis: DOM library that uses jsaddle to support both GHCJS and GHC
+description:
+    Documentent Object Model (DOM) functions implemented using jsaddle.
+    It works with both GHCJS and GHC.
+category: Web
+author: Hamish Mackenzie
+
+source-repository head
+    type: git
+    location: https://github.com/ghcjs/jsaddle-dom
+
+library
+    -- workaround for older GHC choking the C compiler with cost centre
+    -- declarations (GHC trac #7960)
+    if impl(ghc < 8.4)
+        ghc-prof-options: -fno-prof-auto
+
+    if impl(ghcjs -any)
+        build-depends:
+            ghcjs-base >=0.2.0.0 && <0.9,
+            ghcjs-prim -any,
+            ghc-prim -any
+    if arch(javascript)
+        build-depends:
+            ghcjs-base -any
+    exposed-modules:
+        -- The module lists below are generated by dom-gen; do not edit.
+        JSDOM
+        JSDOM.EventM
+        JSDOM.Types
+        JSDOM.Enums
+        JSDOM.EventTargetClosures
+        JSDOM.Custom.Geolocation
+        JSDOM.Custom.GeolocationPositionError
+        JSDOM.Custom.XMLHttpRequest
+        JSDOM.Generated.ANGLE_instanced_arrays
+        JSDOM.Generated.ARIAMixin
+        JSDOM.Generated.ARIANotifyMixin
+        JSDOM.Generated.AacEncoderConfig
+        JSDOM.Generated.AbortController
+        JSDOM.Generated.AbortSignal
+        JSDOM.Generated.AbstractRange
+        JSDOM.Generated.AbstractWorker
+        JSDOM.Generated.AddEventListenerOptions
+        JSDOM.Generated.AddressErrors
+        JSDOM.Generated.AllAcceptedCredentialsOptions
+        JSDOM.Generated.AnalyserNode
+        JSDOM.Generated.AnalyserOptions
+        JSDOM.Generated.Animatable
+        JSDOM.Generated.Animation
+        JSDOM.Generated.AnimationEffect
+        JSDOM.Generated.AnimationEvent
+        JSDOM.Generated.AnimationEventInit
+        JSDOM.Generated.AnimationFrameProvider
+        JSDOM.Generated.AnimationPlaybackEvent
+        JSDOM.Generated.AnimationPlaybackEventInit
+        JSDOM.Generated.AnimationTimeline
+        JSDOM.Generated.AnimationTrigger
+        JSDOM.Generated.AriaNotificationOptions
+        JSDOM.Generated.AssignedNodesOptions
+        JSDOM.Generated.Attr
+        JSDOM.Generated.AudioBuffer
+        JSDOM.Generated.AudioBufferOptions
+        JSDOM.Generated.AudioBufferSourceNode
+        JSDOM.Generated.AudioBufferSourceOptions
+        JSDOM.Generated.AudioConfiguration
+        JSDOM.Generated.AudioContext
+        JSDOM.Generated.AudioContextOptions
+        JSDOM.Generated.AudioData
+        JSDOM.Generated.AudioDataCopyToOptions
+        JSDOM.Generated.AudioDataInit
+        JSDOM.Generated.AudioDataOutputCallback
+        JSDOM.Generated.AudioDecoder
+        JSDOM.Generated.AudioDecoderConfig
+        JSDOM.Generated.AudioDecoderInit
+        JSDOM.Generated.AudioDecoderSupport
+        JSDOM.Generated.AudioDestinationNode
+        JSDOM.Generated.AudioEncoder
+        JSDOM.Generated.AudioEncoderConfig
+        JSDOM.Generated.AudioEncoderInit
+        JSDOM.Generated.AudioEncoderSupport
+        JSDOM.Generated.AudioListener
+        JSDOM.Generated.AudioNode
+        JSDOM.Generated.AudioNodeOptions
+        JSDOM.Generated.AudioParam
+        JSDOM.Generated.AudioParamMap
+        JSDOM.Generated.AudioProcessingEvent
+        JSDOM.Generated.AudioProcessingEventInit
+        JSDOM.Generated.AudioScheduledSourceNode
+        JSDOM.Generated.AudioSinkOptions
+        JSDOM.Generated.AudioTimestamp
+        JSDOM.Generated.AudioTrack
+        JSDOM.Generated.AudioTrackList
+        JSDOM.Generated.AudioWorklet
+        JSDOM.Generated.AudioWorkletGlobalScope
+        JSDOM.Generated.AudioWorkletNode
+        JSDOM.Generated.AudioWorkletNodeOptions
+        JSDOM.Generated.AudioWorkletProcessor
+        JSDOM.Generated.AudioWorkletProcessorConstructor
+        JSDOM.Generated.AuthenticationExtensionsClientInputs
+        JSDOM.Generated.AuthenticationExtensionsClientInputsJSON
+        JSDOM.Generated.AuthenticationExtensionsClientOutputs
+        JSDOM.Generated.AuthenticationExtensionsLargeBlobInputs
+        JSDOM.Generated.AuthenticationExtensionsLargeBlobInputsJSON
+        JSDOM.Generated.AuthenticationExtensionsLargeBlobOutputs
+        JSDOM.Generated.AuthenticationExtensionsPRFInputs
+        JSDOM.Generated.AuthenticationExtensionsPRFInputsJSON
+        JSDOM.Generated.AuthenticationExtensionsPRFOutputs
+        JSDOM.Generated.AuthenticationExtensionsPRFValues
+        JSDOM.Generated.AuthenticationExtensionsPRFValuesJSON
+        JSDOM.Generated.AuthenticationExtensionsPaymentInputs
+        JSDOM.Generated.AuthenticationExtensionsPaymentOutputs
+        JSDOM.Generated.AuthenticatorAssertionResponse
+        JSDOM.Generated.AuthenticatorAttestationResponse
+        JSDOM.Generated.AuthenticatorResponse
+        JSDOM.Generated.AuthenticatorSelectionCriteria
+        JSDOM.Generated.AutofillEvent
+        JSDOM.Generated.AvcEncoderConfig
+        JSDOM.Generated.BackgroundBlur
+        JSDOM.Generated.BarProp
+        JSDOM.Generated.BaseAudioContext
+        JSDOM.Generated.BeforeUnloadEvent
+        JSDOM.Generated.BiquadFilterNode
+        JSDOM.Generated.BiquadFilterOptions
+        JSDOM.Generated.Blob
+        JSDOM.Generated.BlobCallback
+        JSDOM.Generated.BlobEvent
+        JSDOM.Generated.BlobEventInit
+        JSDOM.Generated.BlobPropertyBag
+        JSDOM.Generated.Body
+        JSDOM.Generated.BroadcastChannel
+        JSDOM.Generated.BrowserBoundSignature
+        JSDOM.Generated.ByteLengthQueuingStrategy
+        JSDOM.Generated.CDATASection
+        JSDOM.Generated.CSS
+        JSDOM.Generated.CSSAnimation
+        JSDOM.Generated.CSSConditionRule
+        JSDOM.Generated.CSSContainerCondition
+        JSDOM.Generated.CSSContainerRule
+        JSDOM.Generated.CSSCounterStyleRule
+        JSDOM.Generated.CSSFontFaceDescriptors
+        JSDOM.Generated.CSSFontFaceRule
+        JSDOM.Generated.CSSFontFeatureValuesRule
+        JSDOM.Generated.CSSFontPaletteValuesRule
+        JSDOM.Generated.CSSGroupingRule
+        JSDOM.Generated.CSSImageValue
+        JSDOM.Generated.CSSImportRule
+        JSDOM.Generated.CSSKeyframeRule
+        JSDOM.Generated.CSSKeyframesRule
+        JSDOM.Generated.CSSKeywordValue
+        JSDOM.Generated.CSSLayerBlockRule
+        JSDOM.Generated.CSSLayerStatementRule
+        JSDOM.Generated.CSSMathClamp
+        JSDOM.Generated.CSSMathInvert
+        JSDOM.Generated.CSSMathMax
+        JSDOM.Generated.CSSMathMin
+        JSDOM.Generated.CSSMathNegate
+        JSDOM.Generated.CSSMathProduct
+        JSDOM.Generated.CSSMathSum
+        JSDOM.Generated.CSSMathValue
+        JSDOM.Generated.CSSMatrixComponent
+        JSDOM.Generated.CSSMatrixComponentOptions
+        JSDOM.Generated.CSSMediaRule
+        JSDOM.Generated.CSSNamespaceRule
+        JSDOM.Generated.CSSNestedDeclarations
+        JSDOM.Generated.CSSNumericArray
+        JSDOM.Generated.CSSNumericType
+        JSDOM.Generated.CSSNumericValue
+        JSDOM.Generated.CSSPageDescriptors
+        JSDOM.Generated.CSSPageRule
+        JSDOM.Generated.CSSPerspective
+        JSDOM.Generated.CSSPositionTryDescriptors
+        JSDOM.Generated.CSSPositionTryRule
+        JSDOM.Generated.CSSPropertyRule
+        JSDOM.Generated.CSSRotate
+        JSDOM.Generated.CSSRule
+        JSDOM.Generated.CSSRuleList
+        JSDOM.Generated.CSSScale
+        JSDOM.Generated.CSSScopeRule
+        JSDOM.Generated.CSSSkew
+        JSDOM.Generated.CSSSkewX
+        JSDOM.Generated.CSSSkewY
+        JSDOM.Generated.CSSStartingStyleRule
+        JSDOM.Generated.CSSStyleDeclaration
+        JSDOM.Generated.CSSStyleProperties
+        JSDOM.Generated.CSSStyleRule
+        JSDOM.Generated.CSSStyleSheet
+        JSDOM.Generated.CSSStyleSheetInit
+        JSDOM.Generated.CSSStyleValue
+        JSDOM.Generated.CSSSupportsRule
+        JSDOM.Generated.CSSTransformComponent
+        JSDOM.Generated.CSSTransformValue
+        JSDOM.Generated.CSSTransition
+        JSDOM.Generated.CSSTranslate
+        JSDOM.Generated.CSSUnitValue
+        JSDOM.Generated.CSSUnparsedValue
+        JSDOM.Generated.CSSVariableReferenceValue
+        JSDOM.Generated.CSSViewTransitionRule
+        JSDOM.Generated.Cache
+        JSDOM.Generated.CacheQueryOptions
+        JSDOM.Generated.CacheStorage
+        JSDOM.Generated.CanvasCaptureMediaStreamTrack
+        JSDOM.Generated.CanvasCompositing
+        JSDOM.Generated.CanvasDrawImage
+        JSDOM.Generated.CanvasDrawPath
+        JSDOM.Generated.CanvasFillStrokeStyles
+        JSDOM.Generated.CanvasFilters
+        JSDOM.Generated.CanvasGradient
+        JSDOM.Generated.CanvasImageData
+        JSDOM.Generated.CanvasImageSmoothing
+        JSDOM.Generated.CanvasPath
+        JSDOM.Generated.CanvasPathDrawingStyles
+        JSDOM.Generated.CanvasPattern
+        JSDOM.Generated.CanvasRect
+        JSDOM.Generated.CanvasRenderingContext2D
+        JSDOM.Generated.CanvasRenderingContext2DSettings
+        JSDOM.Generated.CanvasSettings
+        JSDOM.Generated.CanvasShadowStyles
+        JSDOM.Generated.CanvasState
+        JSDOM.Generated.CanvasText
+        JSDOM.Generated.CanvasTextDrawingStyles
+        JSDOM.Generated.CanvasTransform
+        JSDOM.Generated.CanvasUserInterface
+        JSDOM.Generated.CaptureController
+        JSDOM.Generated.CaretPosition
+        JSDOM.Generated.CaretPositionFromPointOptions
+        JSDOM.Generated.ChannelMergerNode
+        JSDOM.Generated.ChannelMergerOptions
+        JSDOM.Generated.ChannelSplitterNode
+        JSDOM.Generated.ChannelSplitterOptions
+        JSDOM.Generated.ChapterInformationInit
+        JSDOM.Generated.CharacterData
+        JSDOM.Generated.CheckVisibilityOptions
+        JSDOM.Generated.ChildNode
+        JSDOM.Generated.Client
+        JSDOM.Generated.ClientQueryOptions
+        JSDOM.Generated.Clients
+        JSDOM.Generated.Clipboard
+        JSDOM.Generated.ClipboardChangeEvent
+        JSDOM.Generated.ClipboardEvent
+        JSDOM.Generated.ClipboardEventInit
+        JSDOM.Generated.ClipboardItem
+        JSDOM.Generated.ClipboardItemOptions
+        JSDOM.Generated.ClipboardUnsanitizedFormats
+        JSDOM.Generated.CloseEvent
+        JSDOM.Generated.CloseEventInit
+        JSDOM.Generated.CloseWatcher
+        JSDOM.Generated.CloseWatcherOptions
+        JSDOM.Generated.CommandEvent
+        JSDOM.Generated.CommandEventInit
+        JSDOM.Generated.Comment
+        JSDOM.Generated.CompositionEvent
+        JSDOM.Generated.CompositionEventInit
+        JSDOM.Generated.CompressionStream
+        JSDOM.Generated.ComputedEffectTiming
+        JSDOM.Generated.Console
+        JSDOM.Generated.ConstantSourceNode
+        JSDOM.Generated.ConstantSourceOptions
+        JSDOM.Generated.ConstrainBooleanOrDOMStringParameters
+        JSDOM.Generated.ConstrainBooleanParameters
+        JSDOM.Generated.ConstrainDOMStringParameters
+        JSDOM.Generated.ConstrainDoubleRange
+        JSDOM.Generated.ConstrainPoint2DParameters
+        JSDOM.Generated.ConstrainULongRange
+        JSDOM.Generated.ContactAddress
+        JSDOM.Generated.ContentVisibilityAutoStateChangeEvent
+        JSDOM.Generated.ContentVisibilityAutoStateChangeEventInit
+        JSDOM.Generated.ConvolverNode
+        JSDOM.Generated.ConvolverOptions
+        JSDOM.Generated.CookieChangeEvent
+        JSDOM.Generated.CookieChangeEventInit
+        JSDOM.Generated.CookieInit
+        JSDOM.Generated.CookieListItem
+        JSDOM.Generated.CookieStore
+        JSDOM.Generated.CookieStoreDeleteOptions
+        JSDOM.Generated.CookieStoreGetOptions
+        JSDOM.Generated.CookieStoreManager
+        JSDOM.Generated.CountQueuingStrategy
+        JSDOM.Generated.CreateHTMLCallback
+        JSDOM.Generated.CreateParserOptionsCallback
+        JSDOM.Generated.CreateScriptCallback
+        JSDOM.Generated.CreateScriptURLCallback
+        JSDOM.Generated.Credential
+        JSDOM.Generated.CredentialCreationOptions
+        JSDOM.Generated.CredentialData
+        JSDOM.Generated.CredentialPropertiesOutput
+        JSDOM.Generated.CredentialRequestOptions
+        JSDOM.Generated.CredentialsContainer
+        JSDOM.Generated.Crypto
+        JSDOM.Generated.CryptoKey
+        JSDOM.Generated.CryptoKeyPair
+        JSDOM.Generated.CurrentUserDetailsOptions
+        JSDOM.Generated.CustomElementConstructor
+        JSDOM.Generated.CustomElementRegistry
+        JSDOM.Generated.CustomEvent
+        JSDOM.Generated.CustomEventInit
+        JSDOM.Generated.CustomStateSet
+        JSDOM.Generated.DOMException
+        JSDOM.Generated.DOMImplementation
+        JSDOM.Generated.DOMMatrix
+        JSDOM.Generated.DOMMatrix2DInit
+        JSDOM.Generated.DOMMatrixInit
+        JSDOM.Generated.DOMMatrixReadOnly
+        JSDOM.Generated.DOMParser
+        JSDOM.Generated.DOMPoint
+        JSDOM.Generated.DOMPointInit
+        JSDOM.Generated.DOMPointReadOnly
+        JSDOM.Generated.DOMQuad
+        JSDOM.Generated.DOMQuadInit
+        JSDOM.Generated.DOMRect
+        JSDOM.Generated.DOMRectInit
+        JSDOM.Generated.DOMRectList
+        JSDOM.Generated.DOMRectReadOnly
+        JSDOM.Generated.DOMStringList
+        JSDOM.Generated.DOMStringMap
+        JSDOM.Generated.DOMTokenList
+        JSDOM.Generated.DataCue
+        JSDOM.Generated.DataTransfer
+        JSDOM.Generated.DataTransferItem
+        JSDOM.Generated.DataTransferItemList
+        JSDOM.Generated.DecodeErrorCallback
+        JSDOM.Generated.DecodeSuccessCallback
+        JSDOM.Generated.DecompressionStream
+        JSDOM.Generated.DedicatedWorkerGlobalScope
+        JSDOM.Generated.DelayNode
+        JSDOM.Generated.DelayOptions
+        JSDOM.Generated.DeviceChangeEvent
+        JSDOM.Generated.DeviceMotionEvent
+        JSDOM.Generated.DeviceMotionEventAcceleration
+        JSDOM.Generated.DeviceMotionEventAccelerationInit
+        JSDOM.Generated.DeviceMotionEventInit
+        JSDOM.Generated.DeviceMotionEventRotationRate
+        JSDOM.Generated.DeviceMotionEventRotationRateInit
+        JSDOM.Generated.DeviceOrientationEvent
+        JSDOM.Generated.DeviceOrientationEventInit
+        JSDOM.Generated.DigitalCredential
+        JSDOM.Generated.DigitalCredentialCreateRequest
+        JSDOM.Generated.DigitalCredentialCreationOptions
+        JSDOM.Generated.DigitalCredentialGetRequest
+        JSDOM.Generated.DigitalCredentialRequestOptions
+        JSDOM.Generated.DisplayMediaStreamOptions
+        JSDOM.Generated.Document
+        JSDOM.Generated.DocumentFragment
+        JSDOM.Generated.DocumentOrShadowRoot
+        JSDOM.Generated.DocumentPictureInPicture
+        JSDOM.Generated.DocumentPictureInPictureEvent
+        JSDOM.Generated.DocumentPictureInPictureEventInit
+        JSDOM.Generated.DocumentPictureInPictureOptions
+        JSDOM.Generated.DocumentTimeline
+        JSDOM.Generated.DocumentTimelineOptions
+        JSDOM.Generated.DocumentType
+        JSDOM.Generated.DoubleRange
+        JSDOM.Generated.DragEvent
+        JSDOM.Generated.DragEventInit
+        JSDOM.Generated.DynamicsCompressorNode
+        JSDOM.Generated.DynamicsCompressorOptions
+        JSDOM.Generated.EXT_blend_minmax
+        JSDOM.Generated.EXT_clip_control
+        JSDOM.Generated.EXT_color_buffer_float
+        JSDOM.Generated.EXT_color_buffer_half_float
+        JSDOM.Generated.EXT_float_blend
+        JSDOM.Generated.EXT_frag_depth
+        JSDOM.Generated.EXT_polygon_offset_clamp
+        JSDOM.Generated.EXT_sRGB
+        JSDOM.Generated.EXT_shader_texture_lod
+        JSDOM.Generated.EXT_texture_compression_bptc
+        JSDOM.Generated.EXT_texture_compression_rgtc
+        JSDOM.Generated.EXT_texture_filter_anisotropic
+        JSDOM.Generated.EXT_texture_mirror_clamp_to_edge
+        JSDOM.Generated.EXT_texture_norm16
+        JSDOM.Generated.EffectTiming
+        JSDOM.Generated.Element
+        JSDOM.Generated.ElementCSSInlineStyle
+        JSDOM.Generated.ElementContentEditable
+        JSDOM.Generated.ElementCreationOptions
+        JSDOM.Generated.ElementDefinitionOptions
+        JSDOM.Generated.ElementInternals
+        JSDOM.Generated.EncodedAudioChunk
+        JSDOM.Generated.EncodedAudioChunkInit
+        JSDOM.Generated.EncodedAudioChunkMetadata
+        JSDOM.Generated.EncodedAudioChunkOutputCallback
+        JSDOM.Generated.EncodedVideoChunk
+        JSDOM.Generated.EncodedVideoChunkInit
+        JSDOM.Generated.EncodedVideoChunkMetadata
+        JSDOM.Generated.EncodedVideoChunkOutputCallback
+        JSDOM.Generated.Enums
+        JSDOM.Generated.ErrorCallback
+        JSDOM.Generated.ErrorEvent
+        JSDOM.Generated.ErrorEventInit
+        JSDOM.Generated.Event
+        JSDOM.Generated.EventCounts
+        JSDOM.Generated.EventInit
+        JSDOM.Generated.EventListenerOptions
+        JSDOM.Generated.EventModifierInit
+        JSDOM.Generated.EventSource
+        JSDOM.Generated.EventSourceInit
+        JSDOM.Generated.EventTarget
+        JSDOM.Generated.ExtendableCookieChangeEvent
+        JSDOM.Generated.ExtendableCookieChangeEventInit
+        JSDOM.Generated.ExtendableEvent
+        JSDOM.Generated.ExtendableEventInit
+        JSDOM.Generated.ExtendableMessageEvent
+        JSDOM.Generated.ExtendableMessageEventInit
+        JSDOM.Generated.External
+        JSDOM.Generated.FederatedCredentialInit
+        JSDOM.Generated.FederatedCredentialRequestOptions
+        JSDOM.Generated.FetchEvent
+        JSDOM.Generated.FetchEventInit
+        JSDOM.Generated.File
+        JSDOM.Generated.FileCallback
+        JSDOM.Generated.FileList
+        JSDOM.Generated.FilePropertyBag
+        JSDOM.Generated.FileReader
+        JSDOM.Generated.FileReaderSync
+        JSDOM.Generated.FileSystem
+        JSDOM.Generated.FileSystemCreateWritableOptions
+        JSDOM.Generated.FileSystemDirectoryEntry
+        JSDOM.Generated.FileSystemDirectoryHandle
+        JSDOM.Generated.FileSystemDirectoryReader
+        JSDOM.Generated.FileSystemEntriesCallback
+        JSDOM.Generated.FileSystemEntry
+        JSDOM.Generated.FileSystemEntryCallback
+        JSDOM.Generated.FileSystemFileEntry
+        JSDOM.Generated.FileSystemFileHandle
+        JSDOM.Generated.FileSystemFlags
+        JSDOM.Generated.FileSystemGetDirectoryOptions
+        JSDOM.Generated.FileSystemGetFileOptions
+        JSDOM.Generated.FileSystemHandle
+        JSDOM.Generated.FileSystemReadWriteOptions
+        JSDOM.Generated.FileSystemRemoveOptions
+        JSDOM.Generated.FileSystemSyncAccessHandle
+        JSDOM.Generated.FileSystemWritableFileStream
+        JSDOM.Generated.FlacEncoderConfig
+        JSDOM.Generated.FocusEvent
+        JSDOM.Generated.FocusEventInit
+        JSDOM.Generated.FocusOptions
+        JSDOM.Generated.FontFace
+        JSDOM.Generated.FontFaceDescriptors
+        JSDOM.Generated.FontFaceSet
+        JSDOM.Generated.FontFaceSetLoadEvent
+        JSDOM.Generated.FontFaceSetLoadEventInit
+        JSDOM.Generated.FontFaceSource
+        JSDOM.Generated.FormData
+        JSDOM.Generated.FormDataEvent
+        JSDOM.Generated.FormDataEventInit
+        JSDOM.Generated.FragmentDirective
+        JSDOM.Generated.FrameRequestCallback
+        JSDOM.Generated.FullscreenOptions
+        JSDOM.Generated.FunctionStringCallback
+        JSDOM.Generated.GPU
+        JSDOM.Generated.GPUAdapter
+        JSDOM.Generated.GPUAdapterInfo
+        JSDOM.Generated.GPUBindGroup
+        JSDOM.Generated.GPUBindGroupDescriptor
+        JSDOM.Generated.GPUBindGroupEntry
+        JSDOM.Generated.GPUBindGroupLayout
+        JSDOM.Generated.GPUBindGroupLayoutDescriptor
+        JSDOM.Generated.GPUBindGroupLayoutEntry
+        JSDOM.Generated.GPUBindingCommandsMixin
+        JSDOM.Generated.GPUBlendComponent
+        JSDOM.Generated.GPUBlendState
+        JSDOM.Generated.GPUBuffer
+        JSDOM.Generated.GPUBufferBinding
+        JSDOM.Generated.GPUBufferBindingLayout
+        JSDOM.Generated.GPUBufferDescriptor
+        JSDOM.Generated.GPUCanvasConfiguration
+        JSDOM.Generated.GPUCanvasContext
+        JSDOM.Generated.GPUCanvasToneMapping
+        JSDOM.Generated.GPUColorDict
+        JSDOM.Generated.GPUColorTargetState
+        JSDOM.Generated.GPUCommandBuffer
+        JSDOM.Generated.GPUCommandBufferDescriptor
+        JSDOM.Generated.GPUCommandEncoder
+        JSDOM.Generated.GPUCommandEncoderDescriptor
+        JSDOM.Generated.GPUCompilationInfo
+        JSDOM.Generated.GPUCompilationMessage
+        JSDOM.Generated.GPUComputePassDescriptor
+        JSDOM.Generated.GPUComputePassEncoder
+        JSDOM.Generated.GPUComputePassTimestampWrites
+        JSDOM.Generated.GPUComputePipeline
+        JSDOM.Generated.GPUComputePipelineDescriptor
+        JSDOM.Generated.GPUCopyExternalImageDestInfo
+        JSDOM.Generated.GPUCopyExternalImageSourceInfo
+        JSDOM.Generated.GPUDebugCommandsMixin
+        JSDOM.Generated.GPUDepthStencilState
+        JSDOM.Generated.GPUDevice
+        JSDOM.Generated.GPUDeviceDescriptor
+        JSDOM.Generated.GPUDeviceLostInfo
+        JSDOM.Generated.GPUError
+        JSDOM.Generated.GPUExtent3DDict
+        JSDOM.Generated.GPUExternalTexture
+        JSDOM.Generated.GPUExternalTextureBindingLayout
+        JSDOM.Generated.GPUExternalTextureDescriptor
+        JSDOM.Generated.GPUFragmentState
+        JSDOM.Generated.GPUInternalError
+        JSDOM.Generated.GPUMultisampleState
+        JSDOM.Generated.GPUObjectBase
+        JSDOM.Generated.GPUObjectDescriptorBase
+        JSDOM.Generated.GPUOrigin2DDict
+        JSDOM.Generated.GPUOrigin3DDict
+        JSDOM.Generated.GPUOutOfMemoryError
+        JSDOM.Generated.GPUPipelineBase
+        JSDOM.Generated.GPUPipelineDescriptorBase
+        JSDOM.Generated.GPUPipelineError
+        JSDOM.Generated.GPUPipelineErrorInit
+        JSDOM.Generated.GPUPipelineLayout
+        JSDOM.Generated.GPUPipelineLayoutDescriptor
+        JSDOM.Generated.GPUPrimitiveState
+        JSDOM.Generated.GPUProgrammableStage
+        JSDOM.Generated.GPUQuerySet
+        JSDOM.Generated.GPUQuerySetDescriptor
+        JSDOM.Generated.GPUQueue
+        JSDOM.Generated.GPUQueueDescriptor
+        JSDOM.Generated.GPURenderBundle
+        JSDOM.Generated.GPURenderBundleDescriptor
+        JSDOM.Generated.GPURenderBundleEncoder
+        JSDOM.Generated.GPURenderBundleEncoderDescriptor
+        JSDOM.Generated.GPURenderCommandsMixin
+        JSDOM.Generated.GPURenderPassColorAttachment
+        JSDOM.Generated.GPURenderPassDepthStencilAttachment
+        JSDOM.Generated.GPURenderPassDescriptor
+        JSDOM.Generated.GPURenderPassEncoder
+        JSDOM.Generated.GPURenderPassLayout
+        JSDOM.Generated.GPURenderPassTimestampWrites
+        JSDOM.Generated.GPURenderPipeline
+        JSDOM.Generated.GPURenderPipelineDescriptor
+        JSDOM.Generated.GPURequestAdapterOptions
+        JSDOM.Generated.GPUSampler
+        JSDOM.Generated.GPUSamplerBindingLayout
+        JSDOM.Generated.GPUSamplerDescriptor
+        JSDOM.Generated.GPUShaderModule
+        JSDOM.Generated.GPUShaderModuleCompilationHint
+        JSDOM.Generated.GPUShaderModuleDescriptor
+        JSDOM.Generated.GPUStencilFaceState
+        JSDOM.Generated.GPUStorageTextureBindingLayout
+        JSDOM.Generated.GPUSupportedFeatures
+        JSDOM.Generated.GPUSupportedLimits
+        JSDOM.Generated.GPUTexelCopyBufferInfo
+        JSDOM.Generated.GPUTexelCopyBufferLayout
+        JSDOM.Generated.GPUTexelCopyTextureInfo
+        JSDOM.Generated.GPUTexture
+        JSDOM.Generated.GPUTextureBindingLayout
+        JSDOM.Generated.GPUTextureDescriptor
+        JSDOM.Generated.GPUTextureView
+        JSDOM.Generated.GPUTextureViewDescriptor
+        JSDOM.Generated.GPUUncapturedErrorEvent
+        JSDOM.Generated.GPUUncapturedErrorEventInit
+        JSDOM.Generated.GPUValidationError
+        JSDOM.Generated.GPUVertexAttribute
+        JSDOM.Generated.GPUVertexBufferLayout
+        JSDOM.Generated.GPUVertexState
+        JSDOM.Generated.GainNode
+        JSDOM.Generated.GainOptions
+        JSDOM.Generated.Gamepad
+        JSDOM.Generated.GamepadButton
+        JSDOM.Generated.GamepadEffectParameters
+        JSDOM.Generated.GamepadEvent
+        JSDOM.Generated.GamepadEventInit
+        JSDOM.Generated.GamepadHapticActuator
+        JSDOM.Generated.GenericTransformStream
+        JSDOM.Generated.Geolocation
+        JSDOM.Generated.GeolocationCoordinates
+        JSDOM.Generated.GeolocationPosition
+        JSDOM.Generated.GeolocationPositionError
+        JSDOM.Generated.GetAnimationsOptions
+        JSDOM.Generated.GetComposedRangesOptions
+        JSDOM.Generated.GetHTMLOptions
+        JSDOM.Generated.GetNotificationOptions
+        JSDOM.Generated.GetRootNodeOptions
+        JSDOM.Generated.GlobalEventHandlers
+        JSDOM.Generated.HMACGetSecretInput
+        JSDOM.Generated.HMACGetSecretOutput
+        JSDOM.Generated.HTMLAllCollection
+        JSDOM.Generated.HTMLAnchorElement
+        JSDOM.Generated.HTMLAreaElement
+        JSDOM.Generated.HTMLAudioElement
+        JSDOM.Generated.HTMLBRElement
+        JSDOM.Generated.HTMLBaseElement
+        JSDOM.Generated.HTMLBodyElement
+        JSDOM.Generated.HTMLButtonElement
+        JSDOM.Generated.HTMLCanvasElement
+        JSDOM.Generated.HTMLCollection
+        JSDOM.Generated.HTMLDListElement
+        JSDOM.Generated.HTMLDataElement
+        JSDOM.Generated.HTMLDataListElement
+        JSDOM.Generated.HTMLDetailsElement
+        JSDOM.Generated.HTMLDialogElement
+        JSDOM.Generated.HTMLDirectoryElement
+        JSDOM.Generated.HTMLDivElement
+        JSDOM.Generated.HTMLElement
+        JSDOM.Generated.HTMLEmbedElement
+        JSDOM.Generated.HTMLFieldSetElement
+        JSDOM.Generated.HTMLFontElement
+        JSDOM.Generated.HTMLFormControlsCollection
+        JSDOM.Generated.HTMLFormElement
+        JSDOM.Generated.HTMLFrameElement
+        JSDOM.Generated.HTMLFrameSetElement
+        JSDOM.Generated.HTMLHRElement
+        JSDOM.Generated.HTMLHeadElement
+        JSDOM.Generated.HTMLHeadingElement
+        JSDOM.Generated.HTMLHtmlElement
+        JSDOM.Generated.HTMLHyperlinkElementUtils
+        JSDOM.Generated.HTMLIFrameElement
+        JSDOM.Generated.HTMLImageElement
+        JSDOM.Generated.HTMLInputElement
+        JSDOM.Generated.HTMLLIElement
+        JSDOM.Generated.HTMLLabelElement
+        JSDOM.Generated.HTMLLegendElement
+        JSDOM.Generated.HTMLLinkElement
+        JSDOM.Generated.HTMLMapElement
+        JSDOM.Generated.HTMLMarqueeElement
+        JSDOM.Generated.HTMLMediaElement
+        JSDOM.Generated.HTMLMenuElement
+        JSDOM.Generated.HTMLMetaElement
+        JSDOM.Generated.HTMLMeterElement
+        JSDOM.Generated.HTMLModElement
+        JSDOM.Generated.HTMLOListElement
+        JSDOM.Generated.HTMLObjectElement
+        JSDOM.Generated.HTMLOptGroupElement
+        JSDOM.Generated.HTMLOptionElement
+        JSDOM.Generated.HTMLOptionsCollection
+        JSDOM.Generated.HTMLOrSVGOrMathMLElement
+        JSDOM.Generated.HTMLOutputElement
+        JSDOM.Generated.HTMLParagraphElement
+        JSDOM.Generated.HTMLParamElement
+        JSDOM.Generated.HTMLPictureElement
+        JSDOM.Generated.HTMLPreElement
+        JSDOM.Generated.HTMLProgressElement
+        JSDOM.Generated.HTMLQuoteElement
+        JSDOM.Generated.HTMLScriptElement
+        JSDOM.Generated.HTMLSelectElement
+        JSDOM.Generated.HTMLSelectedContentElement
+        JSDOM.Generated.HTMLSlotElement
+        JSDOM.Generated.HTMLSourceElement
+        JSDOM.Generated.HTMLSpanElement
+        JSDOM.Generated.HTMLStyleElement
+        JSDOM.Generated.HTMLTableCaptionElement
+        JSDOM.Generated.HTMLTableCellElement
+        JSDOM.Generated.HTMLTableColElement
+        JSDOM.Generated.HTMLTableElement
+        JSDOM.Generated.HTMLTableRowElement
+        JSDOM.Generated.HTMLTableSectionElement
+        JSDOM.Generated.HTMLTemplateElement
+        JSDOM.Generated.HTMLTextAreaElement
+        JSDOM.Generated.HTMLTimeElement
+        JSDOM.Generated.HTMLTitleElement
+        JSDOM.Generated.HTMLTrackElement
+        JSDOM.Generated.HTMLUListElement
+        JSDOM.Generated.HTMLUnknownElement
+        JSDOM.Generated.HTMLVideoElement
+        JSDOM.Generated.HashChangeEvent
+        JSDOM.Generated.HashChangeEventInit
+        JSDOM.Generated.Headers
+        JSDOM.Generated.HevcEncoderConfig
+        JSDOM.Generated.Highlight
+        JSDOM.Generated.HighlightHitResult
+        JSDOM.Generated.HighlightRegistry
+        JSDOM.Generated.HighlightsFromPointOptions
+        JSDOM.Generated.History
+        JSDOM.Generated.HyperlinkElementUtils
+        JSDOM.Generated.IDBCursor
+        JSDOM.Generated.IDBCursorWithValue
+        JSDOM.Generated.IDBDatabase
+        JSDOM.Generated.IDBDatabaseInfo
+        JSDOM.Generated.IDBFactory
+        JSDOM.Generated.IDBGetAllOptions
+        JSDOM.Generated.IDBIndex
+        JSDOM.Generated.IDBIndexParameters
+        JSDOM.Generated.IDBKeyRange
+        JSDOM.Generated.IDBObjectStore
+        JSDOM.Generated.IDBObjectStoreParameters
+        JSDOM.Generated.IDBOpenDBRequest
+        JSDOM.Generated.IDBRecord
+        JSDOM.Generated.IDBRequest
+        JSDOM.Generated.IDBTransaction
+        JSDOM.Generated.IDBTransactionOptions
+        JSDOM.Generated.IDBVersionChangeEvent
+        JSDOM.Generated.IDBVersionChangeEventInit
+        JSDOM.Generated.IIRFilterNode
+        JSDOM.Generated.IIRFilterOptions
+        JSDOM.Generated.IdentityCredentialRequestOptions
+        JSDOM.Generated.IdentityProviderConfig
+        JSDOM.Generated.IdentityProviderRequestOptions
+        JSDOM.Generated.IdleDeadline
+        JSDOM.Generated.IdleRequestCallback
+        JSDOM.Generated.IdleRequestOptions
+        JSDOM.Generated.ImageBitmap
+        JSDOM.Generated.ImageBitmapRenderingContext
+        JSDOM.Generated.ImageCapture
+        JSDOM.Generated.ImageData
+        JSDOM.Generated.ImageDataSettings
+        JSDOM.Generated.ImageDecodeOptions
+        JSDOM.Generated.ImageDecodeResult
+        JSDOM.Generated.ImageDecoder
+        JSDOM.Generated.ImageDecoderInit
+        JSDOM.Generated.ImageEncodeOptions
+        JSDOM.Generated.ImageTrack
+        JSDOM.Generated.ImageTrackList
+        JSDOM.Generated.ImportNodeOptions
+        JSDOM.Generated.InputDeviceCapabilities
+        JSDOM.Generated.InputDeviceInfo
+        JSDOM.Generated.InputEvent
+        JSDOM.Generated.InputEventInit
+        JSDOM.Generated.InstallEvent
+        JSDOM.Generated.IntersectionObserver
+        JSDOM.Generated.IntersectionObserverCallback
+        JSDOM.Generated.IntersectionObserverEntry
+        JSDOM.Generated.IntersectionObserverEntryInit
+        JSDOM.Generated.IntersectionObserverInit
+        JSDOM.Generated.JsonWebKey
+        JSDOM.Generated.KHR_parallel_shader_compile
+        JSDOM.Generated.KeySystemTrackConfiguration
+        JSDOM.Generated.KeyboardEvent
+        JSDOM.Generated.KeyboardEventInit
+        JSDOM.Generated.KeyframeAnimationOptions
+        JSDOM.Generated.KeyframeEffect
+        JSDOM.Generated.KeyframeEffectOptions
+        JSDOM.Generated.LargestContentfulPaint
+        JSDOM.Generated.LinkStyle
+        JSDOM.Generated.Location
+        JSDOM.Generated.Lock
+        JSDOM.Generated.LockGrantedCallback
+        JSDOM.Generated.LockInfo
+        JSDOM.Generated.LockManager
+        JSDOM.Generated.LockManagerSnapshot
+        JSDOM.Generated.LockOptions
+        JSDOM.Generated.MIDIAccess
+        JSDOM.Generated.MIDIConnectionEvent
+        JSDOM.Generated.MIDIConnectionEventInit
+        JSDOM.Generated.MIDIInput
+        JSDOM.Generated.MIDIInputMap
+        JSDOM.Generated.MIDIMessageEvent
+        JSDOM.Generated.MIDIMessageEventInit
+        JSDOM.Generated.MIDIOptions
+        JSDOM.Generated.MIDIOutput
+        JSDOM.Generated.MIDIOutputMap
+        JSDOM.Generated.MIDIPort
+        JSDOM.Generated.MathMLElement
+        JSDOM.Generated.MediaCapabilities
+        JSDOM.Generated.MediaCapabilitiesDecodingInfo
+        JSDOM.Generated.MediaCapabilitiesEncodingInfo
+        JSDOM.Generated.MediaCapabilitiesInfo
+        JSDOM.Generated.MediaCapabilitiesKeySystemConfiguration
+        JSDOM.Generated.MediaConfiguration
+        JSDOM.Generated.MediaDecodingConfiguration
+        JSDOM.Generated.MediaDeviceInfo
+        JSDOM.Generated.MediaDevices
+        JSDOM.Generated.MediaEffectInfo
+        JSDOM.Generated.MediaElementAudioSourceNode
+        JSDOM.Generated.MediaElementAudioSourceOptions
+        JSDOM.Generated.MediaEncodingConfiguration
+        JSDOM.Generated.MediaEncryptedEvent
+        JSDOM.Generated.MediaEncryptedEventInit
+        JSDOM.Generated.MediaError
+        JSDOM.Generated.MediaImage
+        JSDOM.Generated.MediaKeyMessageEvent
+        JSDOM.Generated.MediaKeyMessageEventInit
+        JSDOM.Generated.MediaKeySession
+        JSDOM.Generated.MediaKeyStatusMap
+        JSDOM.Generated.MediaKeySystemAccess
+        JSDOM.Generated.MediaKeySystemConfiguration
+        JSDOM.Generated.MediaKeySystemMediaCapability
+        JSDOM.Generated.MediaKeys
+        JSDOM.Generated.MediaKeysPolicy
+        JSDOM.Generated.MediaList
+        JSDOM.Generated.MediaMetadata
+        JSDOM.Generated.MediaMetadataInit
+        JSDOM.Generated.MediaPositionState
+        JSDOM.Generated.MediaQueryList
+        JSDOM.Generated.MediaQueryListEvent
+        JSDOM.Generated.MediaQueryListEventInit
+        JSDOM.Generated.MediaRecorder
+        JSDOM.Generated.MediaRecorderOptions
+        JSDOM.Generated.MediaSession
+        JSDOM.Generated.MediaSessionActionDetails
+        JSDOM.Generated.MediaSessionActionHandler
+        JSDOM.Generated.MediaSettingsRange
+        JSDOM.Generated.MediaSource
+        JSDOM.Generated.MediaSourceHandle
+        JSDOM.Generated.MediaStream
+        JSDOM.Generated.MediaStreamAudioDestinationNode
+        JSDOM.Generated.MediaStreamAudioSourceNode
+        JSDOM.Generated.MediaStreamAudioSourceOptions
+        JSDOM.Generated.MediaStreamConstraints
+        JSDOM.Generated.MediaStreamTrack
+        JSDOM.Generated.MediaStreamTrackEvent
+        JSDOM.Generated.MediaStreamTrackEventInit
+        JSDOM.Generated.MediaStreamTrackHandle
+        JSDOM.Generated.MediaStreamTrackProcessor
+        JSDOM.Generated.MediaStreamTrackProcessorInit
+        JSDOM.Generated.MediaTrackCapabilities
+        JSDOM.Generated.MediaTrackConstraintSet
+        JSDOM.Generated.MediaTrackConstraints
+        JSDOM.Generated.MediaTrackSettings
+        JSDOM.Generated.MediaTrackSupportedConstraints
+        JSDOM.Generated.MessageChannel
+        JSDOM.Generated.MessageEvent
+        JSDOM.Generated.MessageEventInit
+        JSDOM.Generated.MessageEventTarget
+        JSDOM.Generated.MessagePort
+        JSDOM.Generated.MimeType
+        JSDOM.Generated.MimeTypeArray
+        JSDOM.Generated.MouseEvent
+        JSDOM.Generated.MouseEventInit
+        JSDOM.Generated.MultiCacheQueryOptions
+        JSDOM.Generated.MutationCallback
+        JSDOM.Generated.MutationObserver
+        JSDOM.Generated.MutationObserverInit
+        JSDOM.Generated.MutationRecord
+        JSDOM.Generated.NamedNodeMap
+        JSDOM.Generated.NavigateEvent
+        JSDOM.Generated.NavigateEventInit
+        JSDOM.Generated.Navigation
+        JSDOM.Generated.NavigationActivation
+        JSDOM.Generated.NavigationCurrentEntryChangeEvent
+        JSDOM.Generated.NavigationCurrentEntryChangeEventInit
+        JSDOM.Generated.NavigationDestination
+        JSDOM.Generated.NavigationEvent
+        JSDOM.Generated.NavigationHistoryEntry
+        JSDOM.Generated.NavigationInterceptHandler
+        JSDOM.Generated.NavigationInterceptOptions
+        JSDOM.Generated.NavigationNavigateOptions
+        JSDOM.Generated.NavigationOptions
+        JSDOM.Generated.NavigationPrecommitController
+        JSDOM.Generated.NavigationPrecommitHandler
+        JSDOM.Generated.NavigationPreloadManager
+        JSDOM.Generated.NavigationPreloadState
+        JSDOM.Generated.NavigationReloadOptions
+        JSDOM.Generated.NavigationResult
+        JSDOM.Generated.NavigationTransition
+        JSDOM.Generated.NavigationUpdateCurrentEntryOptions
+        JSDOM.Generated.Navigator
+        JSDOM.Generated.NavigatorAutomationInformation
+        JSDOM.Generated.NavigatorBadge
+        JSDOM.Generated.NavigatorConcurrentHardware
+        JSDOM.Generated.NavigatorContentUtils
+        JSDOM.Generated.NavigatorCookies
+        JSDOM.Generated.NavigatorGPU
+        JSDOM.Generated.NavigatorID
+        JSDOM.Generated.NavigatorLanguage
+        JSDOM.Generated.NavigatorLocks
+        JSDOM.Generated.NavigatorLogin
+        JSDOM.Generated.NavigatorOnLine
+        JSDOM.Generated.NavigatorPlugins
+        JSDOM.Generated.NavigatorStorage
+        JSDOM.Generated.Node
+        JSDOM.Generated.NodeFilter
+        JSDOM.Generated.NodeIterator
+        JSDOM.Generated.NodeList
+        JSDOM.Generated.NonDocumentTypeChildNode
+        JSDOM.Generated.NonElementParentNode
+        JSDOM.Generated.Notification
+        JSDOM.Generated.NotificationAction
+        JSDOM.Generated.NotificationEvent
+        JSDOM.Generated.NotificationEventInit
+        JSDOM.Generated.NotificationOptions
+        JSDOM.Generated.NotificationPermissionCallback
+        JSDOM.Generated.OES_draw_buffers_indexed
+        JSDOM.Generated.OES_element_index_uint
+        JSDOM.Generated.OES_fbo_render_mipmap
+        JSDOM.Generated.OES_standard_derivatives
+        JSDOM.Generated.OES_texture_float
+        JSDOM.Generated.OES_texture_float_linear
+        JSDOM.Generated.OES_texture_half_float
+        JSDOM.Generated.OES_texture_half_float_linear
+        JSDOM.Generated.OES_vertex_array_object
+        JSDOM.Generated.OTPCredentialRequestOptions
+        JSDOM.Generated.OVR_multiview2
+        JSDOM.Generated.OfflineAudioCompletionEvent
+        JSDOM.Generated.OfflineAudioCompletionEventInit
+        JSDOM.Generated.OfflineAudioContext
+        JSDOM.Generated.OfflineAudioContextOptions
+        JSDOM.Generated.OffscreenCanvas
+        JSDOM.Generated.OffscreenCanvasRenderingContext2D
+        JSDOM.Generated.OptionalEffectTiming
+        JSDOM.Generated.OpusEncoderConfig
+        JSDOM.Generated.Origin
+        JSDOM.Generated.OscillatorNode
+        JSDOM.Generated.OscillatorOptions
+        JSDOM.Generated.OverconstrainedError
+        JSDOM.Generated.PageRevealEvent
+        JSDOM.Generated.PageRevealEventInit
+        JSDOM.Generated.PageSwapEvent
+        JSDOM.Generated.PageSwapEventInit
+        JSDOM.Generated.PageTransitionEvent
+        JSDOM.Generated.PageTransitionEventInit
+        JSDOM.Generated.PaintTimingMixin
+        JSDOM.Generated.PannerNode
+        JSDOM.Generated.PannerOptions
+        JSDOM.Generated.ParentNode
+        JSDOM.Generated.ParseHTMLUnsafeOptions
+        JSDOM.Generated.PasswordCredential
+        JSDOM.Generated.PasswordCredentialData
+        JSDOM.Generated.Path2D
+        JSDOM.Generated.PayerErrors
+        JSDOM.Generated.PaymentCompleteDetails
+        JSDOM.Generated.PaymentCredentialInstrument
+        JSDOM.Generated.PaymentCurrencyAmount
+        JSDOM.Generated.PaymentDetailsBase
+        JSDOM.Generated.PaymentDetailsInit
+        JSDOM.Generated.PaymentDetailsModifier
+        JSDOM.Generated.PaymentDetailsUpdate
+        JSDOM.Generated.PaymentEntityLogo
+        JSDOM.Generated.PaymentItem
+        JSDOM.Generated.PaymentMethodChangeEvent
+        JSDOM.Generated.PaymentMethodChangeEventInit
+        JSDOM.Generated.PaymentMethodData
+        JSDOM.Generated.PaymentOptions
+        JSDOM.Generated.PaymentRequest
+        JSDOM.Generated.PaymentRequestUpdateEvent
+        JSDOM.Generated.PaymentRequestUpdateEventInit
+        JSDOM.Generated.PaymentResponse
+        JSDOM.Generated.PaymentShippingOption
+        JSDOM.Generated.PaymentValidationErrors
+        JSDOM.Generated.Performance
+        JSDOM.Generated.PerformanceEntry
+        JSDOM.Generated.PerformanceEventTiming
+        JSDOM.Generated.PerformanceMark
+        JSDOM.Generated.PerformanceMarkOptions
+        JSDOM.Generated.PerformanceMeasure
+        JSDOM.Generated.PerformanceMeasureOptions
+        JSDOM.Generated.PerformanceNavigation
+        JSDOM.Generated.PerformanceNavigationTiming
+        JSDOM.Generated.PerformanceObserver
+        JSDOM.Generated.PerformanceObserverCallback
+        JSDOM.Generated.PerformanceObserverCallbackOptions
+        JSDOM.Generated.PerformanceObserverEntryList
+        JSDOM.Generated.PerformanceObserverInit
+        JSDOM.Generated.PerformancePaintTiming
+        JSDOM.Generated.PerformanceResourceTiming
+        JSDOM.Generated.PerformanceServerTiming
+        JSDOM.Generated.PerformanceTiming
+        JSDOM.Generated.PeriodicWave
+        JSDOM.Generated.PeriodicWaveConstraints
+        JSDOM.Generated.PeriodicWaveOptions
+        JSDOM.Generated.PermissionStatus
+        JSDOM.Generated.Permissions
+        JSDOM.Generated.PhotoCapabilities
+        JSDOM.Generated.PhotoSettings
+        JSDOM.Generated.PictureInPictureEvent
+        JSDOM.Generated.PictureInPictureEventInit
+        JSDOM.Generated.PictureInPictureWindow
+        JSDOM.Generated.PlaneLayout
+        JSDOM.Generated.Plugin
+        JSDOM.Generated.PluginArray
+        JSDOM.Generated.Point2D
+        JSDOM.Generated.PointerEvent
+        JSDOM.Generated.PointerEventInit
+        JSDOM.Generated.PointerLockOptions
+        JSDOM.Generated.PopStateEvent
+        JSDOM.Generated.PopStateEventInit
+        JSDOM.Generated.PopoverTargetAttributes
+        JSDOM.Generated.PositionCallback
+        JSDOM.Generated.PositionErrorCallback
+        JSDOM.Generated.PositionOptions
+        JSDOM.Generated.PrivateToken
+        JSDOM.Generated.ProcessingInstruction
+        JSDOM.Generated.ProgressEvent
+        JSDOM.Generated.ProgressEventInit
+        JSDOM.Generated.PromiseRejectionEvent
+        JSDOM.Generated.PromiseRejectionEventInit
+        JSDOM.Generated.PropertyDefinition
+        JSDOM.Generated.PublicKeyCredential
+        JSDOM.Generated.PublicKeyCredentialCreationOptions
+        JSDOM.Generated.PublicKeyCredentialCreationOptionsJSON
+        JSDOM.Generated.PublicKeyCredentialDescriptor
+        JSDOM.Generated.PublicKeyCredentialDescriptorJSON
+        JSDOM.Generated.PublicKeyCredentialEntity
+        JSDOM.Generated.PublicKeyCredentialParameters
+        JSDOM.Generated.PublicKeyCredentialRequestOptions
+        JSDOM.Generated.PublicKeyCredentialRequestOptionsJSON
+        JSDOM.Generated.PublicKeyCredentialRpEntity
+        JSDOM.Generated.PublicKeyCredentialUserEntity
+        JSDOM.Generated.PublicKeyCredentialUserEntityJSON
+        JSDOM.Generated.PushEvent
+        JSDOM.Generated.PushEventInit
+        JSDOM.Generated.PushManager
+        JSDOM.Generated.PushManagerAttribute
+        JSDOM.Generated.PushMessageData
+        JSDOM.Generated.PushSubscription
+        JSDOM.Generated.PushSubscriptionChangeEvent
+        JSDOM.Generated.PushSubscriptionChangeEventInit
+        JSDOM.Generated.PushSubscriptionJSON
+        JSDOM.Generated.PushSubscriptionKeys
+        JSDOM.Generated.PushSubscriptionOptions
+        JSDOM.Generated.PushSubscriptionOptionsInit
+        JSDOM.Generated.QueuingStrategy
+        JSDOM.Generated.QueuingStrategyInit
+        JSDOM.Generated.QueuingStrategySize
+        JSDOM.Generated.RTCAnswerOptions
+        JSDOM.Generated.RTCCertificate
+        JSDOM.Generated.RTCConfiguration
+        JSDOM.Generated.RTCDTMFSender
+        JSDOM.Generated.RTCDTMFToneChangeEvent
+        JSDOM.Generated.RTCDTMFToneChangeEventInit
+        JSDOM.Generated.RTCDataChannel
+        JSDOM.Generated.RTCDataChannelEvent
+        JSDOM.Generated.RTCDataChannelEventInit
+        JSDOM.Generated.RTCDataChannelInit
+        JSDOM.Generated.RTCDtlsFingerprint
+        JSDOM.Generated.RTCDtlsTransport
+        JSDOM.Generated.RTCEncodedAudioFrame
+        JSDOM.Generated.RTCEncodedAudioFrameMetadata
+        JSDOM.Generated.RTCEncodedAudioFrameOptions
+        JSDOM.Generated.RTCEncodedFrameMetadata
+        JSDOM.Generated.RTCEncodedVideoFrame
+        JSDOM.Generated.RTCEncodedVideoFrameMetadata
+        JSDOM.Generated.RTCEncodedVideoFrameOptions
+        JSDOM.Generated.RTCError
+        JSDOM.Generated.RTCErrorEvent
+        JSDOM.Generated.RTCErrorEventInit
+        JSDOM.Generated.RTCErrorInit
+        JSDOM.Generated.RTCIceCandidate
+        JSDOM.Generated.RTCIceCandidateInit
+        JSDOM.Generated.RTCIceCandidatePair
+        JSDOM.Generated.RTCIceServer
+        JSDOM.Generated.RTCIceTransport
+        JSDOM.Generated.RTCLocalIceCandidateInit
+        JSDOM.Generated.RTCLocalSessionDescriptionInit
+        JSDOM.Generated.RTCOfferAnswerOptions
+        JSDOM.Generated.RTCOfferOptions
+        JSDOM.Generated.RTCPeerConnection
+        JSDOM.Generated.RTCPeerConnectionErrorCallback
+        JSDOM.Generated.RTCPeerConnectionIceErrorEvent
+        JSDOM.Generated.RTCPeerConnectionIceErrorEventInit
+        JSDOM.Generated.RTCPeerConnectionIceEvent
+        JSDOM.Generated.RTCPeerConnectionIceEventInit
+        JSDOM.Generated.RTCRtcpParameters
+        JSDOM.Generated.RTCRtpCapabilities
+        JSDOM.Generated.RTCRtpCodec
+        JSDOM.Generated.RTCRtpCodecParameters
+        JSDOM.Generated.RTCRtpCodingParameters
+        JSDOM.Generated.RTCRtpContributingSource
+        JSDOM.Generated.RTCRtpEncodingParameters
+        JSDOM.Generated.RTCRtpHeaderExtensionCapability
+        JSDOM.Generated.RTCRtpHeaderExtensionParameters
+        JSDOM.Generated.RTCRtpParameters
+        JSDOM.Generated.RTCRtpReceiveParameters
+        JSDOM.Generated.RTCRtpReceiver
+        JSDOM.Generated.RTCRtpSFrameDecryptor
+        JSDOM.Generated.RTCRtpSFrameEncryptor
+        JSDOM.Generated.RTCRtpScriptTransform
+        JSDOM.Generated.RTCRtpScriptTransformer
+        JSDOM.Generated.RTCRtpSendParameters
+        JSDOM.Generated.RTCRtpSender
+        JSDOM.Generated.RTCRtpSynchronizationSource
+        JSDOM.Generated.RTCRtpTransceiver
+        JSDOM.Generated.RTCRtpTransceiverInit
+        JSDOM.Generated.RTCSctpTransport
+        JSDOM.Generated.RTCSessionDescription
+        JSDOM.Generated.RTCSessionDescriptionCallback
+        JSDOM.Generated.RTCSessionDescriptionInit
+        JSDOM.Generated.RTCSetParameterOptions
+        JSDOM.Generated.RTCStatsReport
+        JSDOM.Generated.RTCTrackEvent
+        JSDOM.Generated.RTCTrackEventInit
+        JSDOM.Generated.RTCTransformEvent
+        JSDOM.Generated.RadioNodeList
+        JSDOM.Generated.Range
+        JSDOM.Generated.ReadableByteStreamController
+        JSDOM.Generated.ReadableStream
+        JSDOM.Generated.ReadableStreamBYOBReader
+        JSDOM.Generated.ReadableStreamBYOBReaderReadOptions
+        JSDOM.Generated.ReadableStreamBYOBRequest
+        JSDOM.Generated.ReadableStreamDefaultController
+        JSDOM.Generated.ReadableStreamDefaultReader
+        JSDOM.Generated.ReadableStreamGenericReader
+        JSDOM.Generated.ReadableStreamGetReaderOptions
+        JSDOM.Generated.ReadableStreamReadResult
+        JSDOM.Generated.ReadableWritablePair
+        JSDOM.Generated.RegistrationOptions
+        JSDOM.Generated.RemotePlayback
+        JSDOM.Generated.RemotePlaybackAvailabilityCallback
+        JSDOM.Generated.Report
+        JSDOM.Generated.ReportBody
+        JSDOM.Generated.ReportingObserver
+        JSDOM.Generated.ReportingObserverCallback
+        JSDOM.Generated.ReportingObserverOptions
+        JSDOM.Generated.Request
+        JSDOM.Generated.RequestInit
+        JSDOM.Generated.ResizeObserver
+        JSDOM.Generated.ResizeObserverCallback
+        JSDOM.Generated.ResizeObserverEntry
+        JSDOM.Generated.ResizeObserverOptions
+        JSDOM.Generated.ResizeObserverSize
+        JSDOM.Generated.Response
+        JSDOM.Generated.ResponseInit
+        JSDOM.Generated.RouterCondition
+        JSDOM.Generated.RouterRule
+        JSDOM.Generated.RouterSourceDict
+        JSDOM.Generated.RsaOtherPrimesInfo
+        JSDOM.Generated.SVGAElement
+        JSDOM.Generated.SVGAngle
+        JSDOM.Generated.SVGAnimateElement
+        JSDOM.Generated.SVGAnimateMotionElement
+        JSDOM.Generated.SVGAnimateTransformElement
+        JSDOM.Generated.SVGAnimatedAngle
+        JSDOM.Generated.SVGAnimatedBoolean
+        JSDOM.Generated.SVGAnimatedEnumeration
+        JSDOM.Generated.SVGAnimatedInteger
+        JSDOM.Generated.SVGAnimatedLength
+        JSDOM.Generated.SVGAnimatedLengthList
+        JSDOM.Generated.SVGAnimatedNumber
+        JSDOM.Generated.SVGAnimatedNumberList
+        JSDOM.Generated.SVGAnimatedPoints
+        JSDOM.Generated.SVGAnimatedPreserveAspectRatio
+        JSDOM.Generated.SVGAnimatedRect
+        JSDOM.Generated.SVGAnimatedString
+        JSDOM.Generated.SVGAnimatedTransformList
+        JSDOM.Generated.SVGAnimationElement
+        JSDOM.Generated.SVGBoundingBoxOptions
+        JSDOM.Generated.SVGCircleElement
+        JSDOM.Generated.SVGClipPathElement
+        JSDOM.Generated.SVGComponentTransferFunctionElement
+        JSDOM.Generated.SVGDefsElement
+        JSDOM.Generated.SVGDescElement
+        JSDOM.Generated.SVGElement
+        JSDOM.Generated.SVGEllipseElement
+        JSDOM.Generated.SVGFEBlendElement
+        JSDOM.Generated.SVGFEColorMatrixElement
+        JSDOM.Generated.SVGFEComponentTransferElement
+        JSDOM.Generated.SVGFECompositeElement
+        JSDOM.Generated.SVGFEConvolveMatrixElement
+        JSDOM.Generated.SVGFEDiffuseLightingElement
+        JSDOM.Generated.SVGFEDisplacementMapElement
+        JSDOM.Generated.SVGFEDistantLightElement
+        JSDOM.Generated.SVGFEDropShadowElement
+        JSDOM.Generated.SVGFEFloodElement
+        JSDOM.Generated.SVGFEFuncAElement
+        JSDOM.Generated.SVGFEFuncBElement
+        JSDOM.Generated.SVGFEFuncGElement
+        JSDOM.Generated.SVGFEFuncRElement
+        JSDOM.Generated.SVGFEGaussianBlurElement
+        JSDOM.Generated.SVGFEImageElement
+        JSDOM.Generated.SVGFEMergeElement
+        JSDOM.Generated.SVGFEMergeNodeElement
+        JSDOM.Generated.SVGFEMorphologyElement
+        JSDOM.Generated.SVGFEOffsetElement
+        JSDOM.Generated.SVGFEPointLightElement
+        JSDOM.Generated.SVGFESpecularLightingElement
+        JSDOM.Generated.SVGFESpotLightElement
+        JSDOM.Generated.SVGFETileElement
+        JSDOM.Generated.SVGFETurbulenceElement
+        JSDOM.Generated.SVGFilterElement
+        JSDOM.Generated.SVGFilterPrimitiveStandardAttributes
+        JSDOM.Generated.SVGFitToViewBox
+        JSDOM.Generated.SVGForeignObjectElement
+        JSDOM.Generated.SVGGElement
+        JSDOM.Generated.SVGGeometryElement
+        JSDOM.Generated.SVGGradientElement
+        JSDOM.Generated.SVGGraphicsElement
+        JSDOM.Generated.SVGImageElement
+        JSDOM.Generated.SVGLength
+        JSDOM.Generated.SVGLengthList
+        JSDOM.Generated.SVGLineElement
+        JSDOM.Generated.SVGLinearGradientElement
+        JSDOM.Generated.SVGMPathElement
+        JSDOM.Generated.SVGMarkerElement
+        JSDOM.Generated.SVGMaskElement
+        JSDOM.Generated.SVGMetadataElement
+        JSDOM.Generated.SVGNumber
+        JSDOM.Generated.SVGNumberList
+        JSDOM.Generated.SVGPathElement
+        JSDOM.Generated.SVGPatternElement
+        JSDOM.Generated.SVGPointList
+        JSDOM.Generated.SVGPolygonElement
+        JSDOM.Generated.SVGPolylineElement
+        JSDOM.Generated.SVGPreserveAspectRatio
+        JSDOM.Generated.SVGRadialGradientElement
+        JSDOM.Generated.SVGRectElement
+        JSDOM.Generated.SVGSVGElement
+        JSDOM.Generated.SVGScriptElement
+        JSDOM.Generated.SVGSetElement
+        JSDOM.Generated.SVGStopElement
+        JSDOM.Generated.SVGStringList
+        JSDOM.Generated.SVGStyleElement
+        JSDOM.Generated.SVGSwitchElement
+        JSDOM.Generated.SVGSymbolElement
+        JSDOM.Generated.SVGTSpanElement
+        JSDOM.Generated.SVGTests
+        JSDOM.Generated.SVGTextContentElement
+        JSDOM.Generated.SVGTextElement
+        JSDOM.Generated.SVGTextPathElement
+        JSDOM.Generated.SVGTextPositioningElement
+        JSDOM.Generated.SVGTitleElement
+        JSDOM.Generated.SVGTransform
+        JSDOM.Generated.SVGTransformList
+        JSDOM.Generated.SVGURIReference
+        JSDOM.Generated.SVGUnitTypes
+        JSDOM.Generated.SVGUseElement
+        JSDOM.Generated.SVGViewElement
+        JSDOM.Generated.Sanitizer
+        JSDOM.Generated.SanitizerAttributeNamespace
+        JSDOM.Generated.SanitizerConfig
+        JSDOM.Generated.SanitizerElementNamespace
+        JSDOM.Generated.SanitizerElementNamespaceWithAttributes
+        JSDOM.Generated.SanitizerProcessingInstruction
+        JSDOM.Generated.Scheduler
+        JSDOM.Generated.SchedulerPostTaskCallback
+        JSDOM.Generated.SchedulerPostTaskOptions
+        JSDOM.Generated.Screen
+        JSDOM.Generated.ScreenDetailed
+        JSDOM.Generated.ScreenOrientation
+        JSDOM.Generated.ScriptProcessorNode
+        JSDOM.Generated.ScrollIntoViewOptions
+        JSDOM.Generated.ScrollOptions
+        JSDOM.Generated.ScrollResult
+        JSDOM.Generated.ScrollTimeline
+        JSDOM.Generated.ScrollTimelineOptions
+        JSDOM.Generated.ScrollToOptions
+        JSDOM.Generated.SecurityPolicyViolationEvent
+        JSDOM.Generated.SecurityPolicyViolationEventInit
+        JSDOM.Generated.Segment
+        JSDOM.Generated.Selection
+        JSDOM.Generated.Serial
+        JSDOM.Generated.SerialInputSignals
+        JSDOM.Generated.SerialOptions
+        JSDOM.Generated.SerialOutputSignals
+        JSDOM.Generated.SerialPort
+        JSDOM.Generated.SerialPortFilter
+        JSDOM.Generated.SerialPortInfo
+        JSDOM.Generated.SerialPortRequestOptions
+        JSDOM.Generated.ServiceWorker
+        JSDOM.Generated.ServiceWorkerContainer
+        JSDOM.Generated.ServiceWorkerGlobalScope
+        JSDOM.Generated.ServiceWorkerRegistration
+        JSDOM.Generated.SetHTMLOptions
+        JSDOM.Generated.SetHTMLUnsafeOptions
+        JSDOM.Generated.ShadowRoot
+        JSDOM.Generated.ShadowRootInit
+        JSDOM.Generated.ShareData
+        JSDOM.Generated.SharedWorker
+        JSDOM.Generated.SharedWorkerGlobalScope
+        JSDOM.Generated.SharedWorkerOptions
+        JSDOM.Generated.ShowPopoverOptions
+        JSDOM.Generated.Slottable
+        JSDOM.Generated.SourceBuffer
+        JSDOM.Generated.SourceBufferList
+        JSDOM.Generated.SpeechGrammar
+        JSDOM.Generated.SpeechGrammarList
+        JSDOM.Generated.SpeechRecognition
+        JSDOM.Generated.SpeechRecognitionAlternative
+        JSDOM.Generated.SpeechRecognitionErrorEvent
+        JSDOM.Generated.SpeechRecognitionErrorEventInit
+        JSDOM.Generated.SpeechRecognitionEvent
+        JSDOM.Generated.SpeechRecognitionEventInit
+        JSDOM.Generated.SpeechRecognitionOptions
+        JSDOM.Generated.SpeechRecognitionPhrase
+        JSDOM.Generated.SpeechRecognitionResult
+        JSDOM.Generated.SpeechRecognitionResultList
+        JSDOM.Generated.SpeechSynthesis
+        JSDOM.Generated.SpeechSynthesisErrorEvent
+        JSDOM.Generated.SpeechSynthesisErrorEventInit
+        JSDOM.Generated.SpeechSynthesisEvent
+        JSDOM.Generated.SpeechSynthesisEventInit
+        JSDOM.Generated.SpeechSynthesisUtterance
+        JSDOM.Generated.SpeechSynthesisVoice
+        JSDOM.Generated.StartViewTransitionOptions
+        JSDOM.Generated.StaticRange
+        JSDOM.Generated.StaticRangeInit
+        JSDOM.Generated.StereoPannerNode
+        JSDOM.Generated.StereoPannerOptions
+        JSDOM.Generated.Storage
+        JSDOM.Generated.StorageEstimate
+        JSDOM.Generated.StorageEvent
+        JSDOM.Generated.StorageEventInit
+        JSDOM.Generated.StorageManager
+        JSDOM.Generated.StreamPipeOptions
+        JSDOM.Generated.StructuredSerializeOptions
+        JSDOM.Generated.StylePropertyMap
+        JSDOM.Generated.StylePropertyMapReadOnly
+        JSDOM.Generated.StyleSheet
+        JSDOM.Generated.StyleSheetList
+        JSDOM.Generated.SubmitEvent
+        JSDOM.Generated.SubmitEventInit
+        JSDOM.Generated.SubtleCrypto
+        JSDOM.Generated.SvcOutputMetadata
+        JSDOM.Generated.TaskController
+        JSDOM.Generated.TaskControllerInit
+        JSDOM.Generated.TaskPriorityChangeEvent
+        JSDOM.Generated.TaskPriorityChangeEventInit
+        JSDOM.Generated.TaskSignal
+        JSDOM.Generated.TaskSignalAnyInit
+        JSDOM.Generated.Text
+        JSDOM.Generated.TextDecodeOptions
+        JSDOM.Generated.TextDecoder
+        JSDOM.Generated.TextDecoderCommon
+        JSDOM.Generated.TextDecoderOptions
+        JSDOM.Generated.TextDecoderStream
+        JSDOM.Generated.TextEncoder
+        JSDOM.Generated.TextEncoderCommon
+        JSDOM.Generated.TextEncoderEncodeIntoResult
+        JSDOM.Generated.TextEncoderStream
+        JSDOM.Generated.TextEvent
+        JSDOM.Generated.TextMetrics
+        JSDOM.Generated.TextTrack
+        JSDOM.Generated.TextTrackCue
+        JSDOM.Generated.TextTrackCueList
+        JSDOM.Generated.TextTrackList
+        JSDOM.Generated.TimeRanges
+        JSDOM.Generated.TimelineRangeOffset
+        JSDOM.Generated.ToggleEvent
+        JSDOM.Generated.ToggleEventInit
+        JSDOM.Generated.TogglePopoverOptions
+        JSDOM.Generated.Touch
+        JSDOM.Generated.TouchEvent
+        JSDOM.Generated.TouchEventInit
+        JSDOM.Generated.TouchInit
+        JSDOM.Generated.TouchList
+        JSDOM.Generated.TrackEvent
+        JSDOM.Generated.TrackEventInit
+        JSDOM.Generated.TransformStream
+        JSDOM.Generated.TransformStreamDefaultController
+        JSDOM.Generated.TransitionEvent
+        JSDOM.Generated.TransitionEventInit
+        JSDOM.Generated.TreeWalker
+        JSDOM.Generated.TrustedHTML
+        JSDOM.Generated.TrustedHTMLParserOptions
+        JSDOM.Generated.TrustedScript
+        JSDOM.Generated.TrustedScriptURL
+        JSDOM.Generated.TrustedTypePolicy
+        JSDOM.Generated.TrustedTypePolicyFactory
+        JSDOM.Generated.TrustedTypePolicyOptions
+        JSDOM.Generated.UIEvent
+        JSDOM.Generated.UIEventInit
+        JSDOM.Generated.ULongRange
+        JSDOM.Generated.URL
+        JSDOM.Generated.URLPattern
+        JSDOM.Generated.URLPatternComponentResult
+        JSDOM.Generated.URLPatternInit
+        JSDOM.Generated.URLPatternOptions
+        JSDOM.Generated.URLPatternResult
+        JSDOM.Generated.URLSearchParams
+        JSDOM.Generated.UnknownCredentialOptions
+        JSDOM.Generated.UserActivation
+        JSDOM.Generated.VTTCue
+        JSDOM.Generated.VTTRegion
+        JSDOM.Generated.ValidityState
+        JSDOM.Generated.ValidityStateFlags
+        JSDOM.Generated.VideoColorSpace
+        JSDOM.Generated.VideoColorSpaceInit
+        JSDOM.Generated.VideoConfiguration
+        JSDOM.Generated.VideoDecoder
+        JSDOM.Generated.VideoDecoderConfig
+        JSDOM.Generated.VideoDecoderInit
+        JSDOM.Generated.VideoDecoderSupport
+        JSDOM.Generated.VideoEncoder
+        JSDOM.Generated.VideoEncoderConfig
+        JSDOM.Generated.VideoEncoderEncodeOptions
+        JSDOM.Generated.VideoEncoderEncodeOptionsForAv1
+        JSDOM.Generated.VideoEncoderEncodeOptionsForAvc
+        JSDOM.Generated.VideoEncoderEncodeOptionsForHevc
+        JSDOM.Generated.VideoEncoderEncodeOptionsForVp9
+        JSDOM.Generated.VideoEncoderInit
+        JSDOM.Generated.VideoEncoderSupport
+        JSDOM.Generated.VideoFrame
+        JSDOM.Generated.VideoFrameBufferInit
+        JSDOM.Generated.VideoFrameCallbackMetadata
+        JSDOM.Generated.VideoFrameCopyToOptions
+        JSDOM.Generated.VideoFrameInit
+        JSDOM.Generated.VideoFrameMetadata
+        JSDOM.Generated.VideoFrameOutputCallback
+        JSDOM.Generated.VideoFrameRequestCallback
+        JSDOM.Generated.VideoPlaybackQuality
+        JSDOM.Generated.VideoTrack
+        JSDOM.Generated.VideoTrackList
+        JSDOM.Generated.ViewTimeline
+        JSDOM.Generated.ViewTimelineOptions
+        JSDOM.Generated.ViewTransition
+        JSDOM.Generated.ViewTransitionTypeSet
+        JSDOM.Generated.ViewTransitionUpdateCallback
+        JSDOM.Generated.VisualViewport
+        JSDOM.Generated.VoidFunction
+        JSDOM.Generated.WEBGL_color_buffer_float
+        JSDOM.Generated.WEBGL_compressed_texture_astc
+        JSDOM.Generated.WEBGL_compressed_texture_etc
+        JSDOM.Generated.WEBGL_compressed_texture_etc1
+        JSDOM.Generated.WEBGL_compressed_texture_pvrtc
+        JSDOM.Generated.WEBGL_compressed_texture_s3tc
+        JSDOM.Generated.WEBGL_compressed_texture_s3tc_srgb
+        JSDOM.Generated.WEBGL_debug_renderer_info
+        JSDOM.Generated.WEBGL_debug_shaders
+        JSDOM.Generated.WEBGL_depth_texture
+        JSDOM.Generated.WEBGL_draw_buffers
+        JSDOM.Generated.WEBGL_lose_context
+        JSDOM.Generated.WEBGL_multi_draw
+        JSDOM.Generated.WGSLLanguageFeatures
+        JSDOM.Generated.WakeLock
+        JSDOM.Generated.WakeLockSentinel
+        JSDOM.Generated.WaveShaperNode
+        JSDOM.Generated.WaveShaperOptions
+        JSDOM.Generated.WebCodecsErrorCallback
+        JSDOM.Generated.WebGL2RenderingContext
+        JSDOM.Generated.WebGL2RenderingContextBase
+        JSDOM.Generated.WebGL2RenderingContextOverloads
+        JSDOM.Generated.WebGLActiveInfo
+        JSDOM.Generated.WebGLBuffer
+        JSDOM.Generated.WebGLContextAttributes
+        JSDOM.Generated.WebGLContextEvent
+        JSDOM.Generated.WebGLContextEventInit
+        JSDOM.Generated.WebGLFramebuffer
+        JSDOM.Generated.WebGLObject
+        JSDOM.Generated.WebGLProgram
+        JSDOM.Generated.WebGLQuery
+        JSDOM.Generated.WebGLRenderbuffer
+        JSDOM.Generated.WebGLRenderingContext
+        JSDOM.Generated.WebGLRenderingContextBase
+        JSDOM.Generated.WebGLRenderingContextOverloads
+        JSDOM.Generated.WebGLSampler
+        JSDOM.Generated.WebGLShader
+        JSDOM.Generated.WebGLShaderPrecisionFormat
+        JSDOM.Generated.WebGLSync
+        JSDOM.Generated.WebGLTexture
+        JSDOM.Generated.WebGLTransformFeedback
+        JSDOM.Generated.WebGLUniformLocation
+        JSDOM.Generated.WebGLVertexArrayObject
+        JSDOM.Generated.WebGLVertexArrayObjectOES
+        JSDOM.Generated.WebSocket
+        JSDOM.Generated.WebTransport
+        JSDOM.Generated.WebTransportBidirectionalStream
+        JSDOM.Generated.WebTransportCloseInfo
+        JSDOM.Generated.WebTransportConnectionStats
+        JSDOM.Generated.WebTransportDatagramDuplexStream
+        JSDOM.Generated.WebTransportDatagramStats
+        JSDOM.Generated.WebTransportDatagramsWritable
+        JSDOM.Generated.WebTransportError
+        JSDOM.Generated.WebTransportErrorOptions
+        JSDOM.Generated.WebTransportHash
+        JSDOM.Generated.WebTransportOptions
+        JSDOM.Generated.WebTransportReceiveStream
+        JSDOM.Generated.WebTransportReceiveStreamStats
+        JSDOM.Generated.WebTransportSendGroup
+        JSDOM.Generated.WebTransportSendOptions
+        JSDOM.Generated.WebTransportSendStream
+        JSDOM.Generated.WebTransportSendStreamOptions
+        JSDOM.Generated.WebTransportSendStreamStats
+        JSDOM.Generated.WebTransportWriter
+        JSDOM.Generated.WheelEvent
+        JSDOM.Generated.WheelEventInit
+        JSDOM.Generated.Window
+        JSDOM.Generated.WindowClient
+        JSDOM.Generated.WindowEventHandlers
+        JSDOM.Generated.WindowLocalStorage
+        JSDOM.Generated.WindowOrWorkerGlobalScope
+        JSDOM.Generated.WindowPostMessageOptions
+        JSDOM.Generated.WindowSessionStorage
+        JSDOM.Generated.Worker
+        JSDOM.Generated.WorkerAndParameters
+        JSDOM.Generated.WorkerGlobalScope
+        JSDOM.Generated.WorkerLocation
+        JSDOM.Generated.WorkerNavigator
+        JSDOM.Generated.WorkerOptions
+        JSDOM.Generated.Worklet
+        JSDOM.Generated.WorkletGlobalScope
+        JSDOM.Generated.WorkletOptions
+        JSDOM.Generated.WritableStream
+        JSDOM.Generated.WritableStreamDefaultController
+        JSDOM.Generated.WritableStreamDefaultWriter
+        JSDOM.Generated.WriteParams
+        JSDOM.Generated.XMLDocument
+        JSDOM.Generated.XMLHttpRequest
+        JSDOM.Generated.XMLHttpRequestEventTarget
+        JSDOM.Generated.XMLHttpRequestUpload
+        JSDOM.Generated.XMLSerializer
+        JSDOM.Generated.XPathEvaluator
+        JSDOM.Generated.XPathEvaluatorBase
+        JSDOM.Generated.XPathExpression
+        JSDOM.Generated.XPathNSResolver
+        JSDOM.Generated.XPathResult
+        JSDOM.Generated.XSLTProcessor
+    reexported-modules:
+        JSDOM.Custom.Geolocation as JSDOM.Geolocation,
+        JSDOM.Custom.GeolocationPositionError as JSDOM.GeolocationPositionError,
+        JSDOM.Custom.XMLHttpRequest as JSDOM.XMLHttpRequest,
+        JSDOM.Generated.ANGLE_instanced_arrays as JSDOM.ANGLE_instanced_arrays,
+        JSDOM.Generated.ARIAMixin as JSDOM.ARIAMixin,
+        JSDOM.Generated.ARIANotifyMixin as JSDOM.ARIANotifyMixin,
+        JSDOM.Generated.AacEncoderConfig as JSDOM.AacEncoderConfig,
+        JSDOM.Generated.AbortController as JSDOM.AbortController,
+        JSDOM.Generated.AbortSignal as JSDOM.AbortSignal,
+        JSDOM.Generated.AbstractRange as JSDOM.AbstractRange,
+        JSDOM.Generated.AbstractWorker as JSDOM.AbstractWorker,
+        JSDOM.Generated.AddEventListenerOptions as JSDOM.AddEventListenerOptions,
+        JSDOM.Generated.AddressErrors as JSDOM.AddressErrors,
+        JSDOM.Generated.AllAcceptedCredentialsOptions as JSDOM.AllAcceptedCredentialsOptions,
+        JSDOM.Generated.AnalyserNode as JSDOM.AnalyserNode,
+        JSDOM.Generated.AnalyserOptions as JSDOM.AnalyserOptions,
+        JSDOM.Generated.Animatable as JSDOM.Animatable,
+        JSDOM.Generated.Animation as JSDOM.Animation,
+        JSDOM.Generated.AnimationEffect as JSDOM.AnimationEffect,
+        JSDOM.Generated.AnimationEvent as JSDOM.AnimationEvent,
+        JSDOM.Generated.AnimationEventInit as JSDOM.AnimationEventInit,
+        JSDOM.Generated.AnimationFrameProvider as JSDOM.AnimationFrameProvider,
+        JSDOM.Generated.AnimationPlaybackEvent as JSDOM.AnimationPlaybackEvent,
+        JSDOM.Generated.AnimationPlaybackEventInit as JSDOM.AnimationPlaybackEventInit,
+        JSDOM.Generated.AnimationTimeline as JSDOM.AnimationTimeline,
+        JSDOM.Generated.AnimationTrigger as JSDOM.AnimationTrigger,
+        JSDOM.Generated.AriaNotificationOptions as JSDOM.AriaNotificationOptions,
+        JSDOM.Generated.AssignedNodesOptions as JSDOM.AssignedNodesOptions,
+        JSDOM.Generated.Attr as JSDOM.Attr,
+        JSDOM.Generated.AudioBuffer as JSDOM.AudioBuffer,
+        JSDOM.Generated.AudioBufferOptions as JSDOM.AudioBufferOptions,
+        JSDOM.Generated.AudioBufferSourceNode as JSDOM.AudioBufferSourceNode,
+        JSDOM.Generated.AudioBufferSourceOptions as JSDOM.AudioBufferSourceOptions,
+        JSDOM.Generated.AudioConfiguration as JSDOM.AudioConfiguration,
+        JSDOM.Generated.AudioContext as JSDOM.AudioContext,
+        JSDOM.Generated.AudioContextOptions as JSDOM.AudioContextOptions,
+        JSDOM.Generated.AudioData as JSDOM.AudioData,
+        JSDOM.Generated.AudioDataCopyToOptions as JSDOM.AudioDataCopyToOptions,
+        JSDOM.Generated.AudioDataInit as JSDOM.AudioDataInit,
+        JSDOM.Generated.AudioDataOutputCallback as JSDOM.AudioDataOutputCallback,
+        JSDOM.Generated.AudioDecoder as JSDOM.AudioDecoder,
+        JSDOM.Generated.AudioDecoderConfig as JSDOM.AudioDecoderConfig,
+        JSDOM.Generated.AudioDecoderInit as JSDOM.AudioDecoderInit,
+        JSDOM.Generated.AudioDecoderSupport as JSDOM.AudioDecoderSupport,
+        JSDOM.Generated.AudioDestinationNode as JSDOM.AudioDestinationNode,
+        JSDOM.Generated.AudioEncoder as JSDOM.AudioEncoder,
+        JSDOM.Generated.AudioEncoderConfig as JSDOM.AudioEncoderConfig,
+        JSDOM.Generated.AudioEncoderInit as JSDOM.AudioEncoderInit,
+        JSDOM.Generated.AudioEncoderSupport as JSDOM.AudioEncoderSupport,
+        JSDOM.Generated.AudioListener as JSDOM.AudioListener,
+        JSDOM.Generated.AudioNode as JSDOM.AudioNode,
+        JSDOM.Generated.AudioNodeOptions as JSDOM.AudioNodeOptions,
+        JSDOM.Generated.AudioParam as JSDOM.AudioParam,
+        JSDOM.Generated.AudioParamMap as JSDOM.AudioParamMap,
+        JSDOM.Generated.AudioProcessingEvent as JSDOM.AudioProcessingEvent,
+        JSDOM.Generated.AudioProcessingEventInit as JSDOM.AudioProcessingEventInit,
+        JSDOM.Generated.AudioScheduledSourceNode as JSDOM.AudioScheduledSourceNode,
+        JSDOM.Generated.AudioSinkOptions as JSDOM.AudioSinkOptions,
+        JSDOM.Generated.AudioTimestamp as JSDOM.AudioTimestamp,
+        JSDOM.Generated.AudioTrack as JSDOM.AudioTrack,
+        JSDOM.Generated.AudioTrackList as JSDOM.AudioTrackList,
+        JSDOM.Generated.AudioWorklet as JSDOM.AudioWorklet,
+        JSDOM.Generated.AudioWorkletGlobalScope as JSDOM.AudioWorkletGlobalScope,
+        JSDOM.Generated.AudioWorkletNode as JSDOM.AudioWorkletNode,
+        JSDOM.Generated.AudioWorkletNodeOptions as JSDOM.AudioWorkletNodeOptions,
+        JSDOM.Generated.AudioWorkletProcessor as JSDOM.AudioWorkletProcessor,
+        JSDOM.Generated.AudioWorkletProcessorConstructor as JSDOM.AudioWorkletProcessorConstructor,
+        JSDOM.Generated.AuthenticationExtensionsClientInputs as JSDOM.AuthenticationExtensionsClientInputs,
+        JSDOM.Generated.AuthenticationExtensionsClientInputsJSON as JSDOM.AuthenticationExtensionsClientInputsJSON,
+        JSDOM.Generated.AuthenticationExtensionsClientOutputs as JSDOM.AuthenticationExtensionsClientOutputs,
+        JSDOM.Generated.AuthenticationExtensionsLargeBlobInputs as JSDOM.AuthenticationExtensionsLargeBlobInputs,
+        JSDOM.Generated.AuthenticationExtensionsLargeBlobInputsJSON as JSDOM.AuthenticationExtensionsLargeBlobInputsJSON,
+        JSDOM.Generated.AuthenticationExtensionsLargeBlobOutputs as JSDOM.AuthenticationExtensionsLargeBlobOutputs,
+        JSDOM.Generated.AuthenticationExtensionsPRFInputs as JSDOM.AuthenticationExtensionsPRFInputs,
+        JSDOM.Generated.AuthenticationExtensionsPRFInputsJSON as JSDOM.AuthenticationExtensionsPRFInputsJSON,
+        JSDOM.Generated.AuthenticationExtensionsPRFOutputs as JSDOM.AuthenticationExtensionsPRFOutputs,
+        JSDOM.Generated.AuthenticationExtensionsPRFValues as JSDOM.AuthenticationExtensionsPRFValues,
+        JSDOM.Generated.AuthenticationExtensionsPRFValuesJSON as JSDOM.AuthenticationExtensionsPRFValuesJSON,
+        JSDOM.Generated.AuthenticationExtensionsPaymentInputs as JSDOM.AuthenticationExtensionsPaymentInputs,
+        JSDOM.Generated.AuthenticationExtensionsPaymentOutputs as JSDOM.AuthenticationExtensionsPaymentOutputs,
+        JSDOM.Generated.AuthenticatorAssertionResponse as JSDOM.AuthenticatorAssertionResponse,
+        JSDOM.Generated.AuthenticatorAttestationResponse as JSDOM.AuthenticatorAttestationResponse,
+        JSDOM.Generated.AuthenticatorResponse as JSDOM.AuthenticatorResponse,
+        JSDOM.Generated.AuthenticatorSelectionCriteria as JSDOM.AuthenticatorSelectionCriteria,
+        JSDOM.Generated.AutofillEvent as JSDOM.AutofillEvent,
+        JSDOM.Generated.AvcEncoderConfig as JSDOM.AvcEncoderConfig,
+        JSDOM.Generated.BackgroundBlur as JSDOM.BackgroundBlur,
+        JSDOM.Generated.BarProp as JSDOM.BarProp,
+        JSDOM.Generated.BaseAudioContext as JSDOM.BaseAudioContext,
+        JSDOM.Generated.BeforeUnloadEvent as JSDOM.BeforeUnloadEvent,
+        JSDOM.Generated.BiquadFilterNode as JSDOM.BiquadFilterNode,
+        JSDOM.Generated.BiquadFilterOptions as JSDOM.BiquadFilterOptions,
+        JSDOM.Generated.Blob as JSDOM.Blob,
+        JSDOM.Generated.BlobCallback as JSDOM.BlobCallback,
+        JSDOM.Generated.BlobEvent as JSDOM.BlobEvent,
+        JSDOM.Generated.BlobEventInit as JSDOM.BlobEventInit,
+        JSDOM.Generated.BlobPropertyBag as JSDOM.BlobPropertyBag,
+        JSDOM.Generated.Body as JSDOM.Body,
+        JSDOM.Generated.BroadcastChannel as JSDOM.BroadcastChannel,
+        JSDOM.Generated.BrowserBoundSignature as JSDOM.BrowserBoundSignature,
+        JSDOM.Generated.ByteLengthQueuingStrategy as JSDOM.ByteLengthQueuingStrategy,
+        JSDOM.Generated.CDATASection as JSDOM.CDATASection,
+        JSDOM.Generated.CSS as JSDOM.CSS,
+        JSDOM.Generated.CSSAnimation as JSDOM.CSSAnimation,
+        JSDOM.Generated.CSSConditionRule as JSDOM.CSSConditionRule,
+        JSDOM.Generated.CSSContainerCondition as JSDOM.CSSContainerCondition,
+        JSDOM.Generated.CSSContainerRule as JSDOM.CSSContainerRule,
+        JSDOM.Generated.CSSCounterStyleRule as JSDOM.CSSCounterStyleRule,
+        JSDOM.Generated.CSSFontFaceDescriptors as JSDOM.CSSFontFaceDescriptors,
+        JSDOM.Generated.CSSFontFaceRule as JSDOM.CSSFontFaceRule,
+        JSDOM.Generated.CSSFontFeatureValuesRule as JSDOM.CSSFontFeatureValuesRule,
+        JSDOM.Generated.CSSFontPaletteValuesRule as JSDOM.CSSFontPaletteValuesRule,
+        JSDOM.Generated.CSSGroupingRule as JSDOM.CSSGroupingRule,
+        JSDOM.Generated.CSSImageValue as JSDOM.CSSImageValue,
+        JSDOM.Generated.CSSImportRule as JSDOM.CSSImportRule,
+        JSDOM.Generated.CSSKeyframeRule as JSDOM.CSSKeyframeRule,
+        JSDOM.Generated.CSSKeyframesRule as JSDOM.CSSKeyframesRule,
+        JSDOM.Generated.CSSKeywordValue as JSDOM.CSSKeywordValue,
+        JSDOM.Generated.CSSLayerBlockRule as JSDOM.CSSLayerBlockRule,
+        JSDOM.Generated.CSSLayerStatementRule as JSDOM.CSSLayerStatementRule,
+        JSDOM.Generated.CSSMathClamp as JSDOM.CSSMathClamp,
+        JSDOM.Generated.CSSMathInvert as JSDOM.CSSMathInvert,
+        JSDOM.Generated.CSSMathMax as JSDOM.CSSMathMax,
+        JSDOM.Generated.CSSMathMin as JSDOM.CSSMathMin,
+        JSDOM.Generated.CSSMathNegate as JSDOM.CSSMathNegate,
+        JSDOM.Generated.CSSMathProduct as JSDOM.CSSMathProduct,
+        JSDOM.Generated.CSSMathSum as JSDOM.CSSMathSum,
+        JSDOM.Generated.CSSMathValue as JSDOM.CSSMathValue,
+        JSDOM.Generated.CSSMatrixComponent as JSDOM.CSSMatrixComponent,
+        JSDOM.Generated.CSSMatrixComponentOptions as JSDOM.CSSMatrixComponentOptions,
+        JSDOM.Generated.CSSMediaRule as JSDOM.CSSMediaRule,
+        JSDOM.Generated.CSSNamespaceRule as JSDOM.CSSNamespaceRule,
+        JSDOM.Generated.CSSNestedDeclarations as JSDOM.CSSNestedDeclarations,
+        JSDOM.Generated.CSSNumericArray as JSDOM.CSSNumericArray,
+        JSDOM.Generated.CSSNumericType as JSDOM.CSSNumericType,
+        JSDOM.Generated.CSSNumericValue as JSDOM.CSSNumericValue,
+        JSDOM.Generated.CSSPageDescriptors as JSDOM.CSSPageDescriptors,
+        JSDOM.Generated.CSSPageRule as JSDOM.CSSPageRule,
+        JSDOM.Generated.CSSPerspective as JSDOM.CSSPerspective,
+        JSDOM.Generated.CSSPositionTryDescriptors as JSDOM.CSSPositionTryDescriptors,
+        JSDOM.Generated.CSSPositionTryRule as JSDOM.CSSPositionTryRule,
+        JSDOM.Generated.CSSPropertyRule as JSDOM.CSSPropertyRule,
+        JSDOM.Generated.CSSRotate as JSDOM.CSSRotate,
+        JSDOM.Generated.CSSRule as JSDOM.CSSRule,
+        JSDOM.Generated.CSSRuleList as JSDOM.CSSRuleList,
+        JSDOM.Generated.CSSScale as JSDOM.CSSScale,
+        JSDOM.Generated.CSSScopeRule as JSDOM.CSSScopeRule,
+        JSDOM.Generated.CSSSkew as JSDOM.CSSSkew,
+        JSDOM.Generated.CSSSkewX as JSDOM.CSSSkewX,
+        JSDOM.Generated.CSSSkewY as JSDOM.CSSSkewY,
+        JSDOM.Generated.CSSStartingStyleRule as JSDOM.CSSStartingStyleRule,
+        JSDOM.Generated.CSSStyleDeclaration as JSDOM.CSSStyleDeclaration,
+        JSDOM.Generated.CSSStyleProperties as JSDOM.CSSStyleProperties,
+        JSDOM.Generated.CSSStyleRule as JSDOM.CSSStyleRule,
+        JSDOM.Generated.CSSStyleSheet as JSDOM.CSSStyleSheet,
+        JSDOM.Generated.CSSStyleSheetInit as JSDOM.CSSStyleSheetInit,
+        JSDOM.Generated.CSSStyleValue as JSDOM.CSSStyleValue,
+        JSDOM.Generated.CSSSupportsRule as JSDOM.CSSSupportsRule,
+        JSDOM.Generated.CSSTransformComponent as JSDOM.CSSTransformComponent,
+        JSDOM.Generated.CSSTransformValue as JSDOM.CSSTransformValue,
+        JSDOM.Generated.CSSTransition as JSDOM.CSSTransition,
+        JSDOM.Generated.CSSTranslate as JSDOM.CSSTranslate,
+        JSDOM.Generated.CSSUnitValue as JSDOM.CSSUnitValue,
+        JSDOM.Generated.CSSUnparsedValue as JSDOM.CSSUnparsedValue,
+        JSDOM.Generated.CSSVariableReferenceValue as JSDOM.CSSVariableReferenceValue,
+        JSDOM.Generated.CSSViewTransitionRule as JSDOM.CSSViewTransitionRule,
+        JSDOM.Generated.Cache as JSDOM.Cache,
+        JSDOM.Generated.CacheQueryOptions as JSDOM.CacheQueryOptions,
+        JSDOM.Generated.CacheStorage as JSDOM.CacheStorage,
+        JSDOM.Generated.CanvasCaptureMediaStreamTrack as JSDOM.CanvasCaptureMediaStreamTrack,
+        JSDOM.Generated.CanvasCompositing as JSDOM.CanvasCompositing,
+        JSDOM.Generated.CanvasDrawImage as JSDOM.CanvasDrawImage,
+        JSDOM.Generated.CanvasDrawPath as JSDOM.CanvasDrawPath,
+        JSDOM.Generated.CanvasFillStrokeStyles as JSDOM.CanvasFillStrokeStyles,
+        JSDOM.Generated.CanvasFilters as JSDOM.CanvasFilters,
+        JSDOM.Generated.CanvasGradient as JSDOM.CanvasGradient,
+        JSDOM.Generated.CanvasImageData as JSDOM.CanvasImageData,
+        JSDOM.Generated.CanvasImageSmoothing as JSDOM.CanvasImageSmoothing,
+        JSDOM.Generated.CanvasPath as JSDOM.CanvasPath,
+        JSDOM.Generated.CanvasPathDrawingStyles as JSDOM.CanvasPathDrawingStyles,
+        JSDOM.Generated.CanvasPattern as JSDOM.CanvasPattern,
+        JSDOM.Generated.CanvasRect as JSDOM.CanvasRect,
+        JSDOM.Generated.CanvasRenderingContext2D as JSDOM.CanvasRenderingContext2D,
+        JSDOM.Generated.CanvasRenderingContext2DSettings as JSDOM.CanvasRenderingContext2DSettings,
+        JSDOM.Generated.CanvasSettings as JSDOM.CanvasSettings,
+        JSDOM.Generated.CanvasShadowStyles as JSDOM.CanvasShadowStyles,
+        JSDOM.Generated.CanvasState as JSDOM.CanvasState,
+        JSDOM.Generated.CanvasText as JSDOM.CanvasText,
+        JSDOM.Generated.CanvasTextDrawingStyles as JSDOM.CanvasTextDrawingStyles,
+        JSDOM.Generated.CanvasTransform as JSDOM.CanvasTransform,
+        JSDOM.Generated.CanvasUserInterface as JSDOM.CanvasUserInterface,
+        JSDOM.Generated.CaptureController as JSDOM.CaptureController,
+        JSDOM.Generated.CaretPosition as JSDOM.CaretPosition,
+        JSDOM.Generated.CaretPositionFromPointOptions as JSDOM.CaretPositionFromPointOptions,
+        JSDOM.Generated.ChannelMergerNode as JSDOM.ChannelMergerNode,
+        JSDOM.Generated.ChannelMergerOptions as JSDOM.ChannelMergerOptions,
+        JSDOM.Generated.ChannelSplitterNode as JSDOM.ChannelSplitterNode,
+        JSDOM.Generated.ChannelSplitterOptions as JSDOM.ChannelSplitterOptions,
+        JSDOM.Generated.ChapterInformationInit as JSDOM.ChapterInformationInit,
+        JSDOM.Generated.CharacterData as JSDOM.CharacterData,
+        JSDOM.Generated.CheckVisibilityOptions as JSDOM.CheckVisibilityOptions,
+        JSDOM.Generated.ChildNode as JSDOM.ChildNode,
+        JSDOM.Generated.Client as JSDOM.Client,
+        JSDOM.Generated.ClientQueryOptions as JSDOM.ClientQueryOptions,
+        JSDOM.Generated.Clients as JSDOM.Clients,
+        JSDOM.Generated.Clipboard as JSDOM.Clipboard,
+        JSDOM.Generated.ClipboardChangeEvent as JSDOM.ClipboardChangeEvent,
+        JSDOM.Generated.ClipboardEvent as JSDOM.ClipboardEvent,
+        JSDOM.Generated.ClipboardEventInit as JSDOM.ClipboardEventInit,
+        JSDOM.Generated.ClipboardItem as JSDOM.ClipboardItem,
+        JSDOM.Generated.ClipboardItemOptions as JSDOM.ClipboardItemOptions,
+        JSDOM.Generated.ClipboardUnsanitizedFormats as JSDOM.ClipboardUnsanitizedFormats,
+        JSDOM.Generated.CloseEvent as JSDOM.CloseEvent,
+        JSDOM.Generated.CloseEventInit as JSDOM.CloseEventInit,
+        JSDOM.Generated.CloseWatcher as JSDOM.CloseWatcher,
+        JSDOM.Generated.CloseWatcherOptions as JSDOM.CloseWatcherOptions,
+        JSDOM.Generated.CommandEvent as JSDOM.CommandEvent,
+        JSDOM.Generated.CommandEventInit as JSDOM.CommandEventInit,
+        JSDOM.Generated.Comment as JSDOM.Comment,
+        JSDOM.Generated.CompositionEvent as JSDOM.CompositionEvent,
+        JSDOM.Generated.CompositionEventInit as JSDOM.CompositionEventInit,
+        JSDOM.Generated.CompressionStream as JSDOM.CompressionStream,
+        JSDOM.Generated.ComputedEffectTiming as JSDOM.ComputedEffectTiming,
+        JSDOM.Generated.Console as JSDOM.Console,
+        JSDOM.Generated.ConstantSourceNode as JSDOM.ConstantSourceNode,
+        JSDOM.Generated.ConstantSourceOptions as JSDOM.ConstantSourceOptions,
+        JSDOM.Generated.ConstrainBooleanOrDOMStringParameters as JSDOM.ConstrainBooleanOrDOMStringParameters,
+        JSDOM.Generated.ConstrainBooleanParameters as JSDOM.ConstrainBooleanParameters,
+        JSDOM.Generated.ConstrainDOMStringParameters as JSDOM.ConstrainDOMStringParameters,
+        JSDOM.Generated.ConstrainDoubleRange as JSDOM.ConstrainDoubleRange,
+        JSDOM.Generated.ConstrainPoint2DParameters as JSDOM.ConstrainPoint2DParameters,
+        JSDOM.Generated.ConstrainULongRange as JSDOM.ConstrainULongRange,
+        JSDOM.Generated.ContactAddress as JSDOM.ContactAddress,
+        JSDOM.Generated.ContentVisibilityAutoStateChangeEvent as JSDOM.ContentVisibilityAutoStateChangeEvent,
+        JSDOM.Generated.ContentVisibilityAutoStateChangeEventInit as JSDOM.ContentVisibilityAutoStateChangeEventInit,
+        JSDOM.Generated.ConvolverNode as JSDOM.ConvolverNode,
+        JSDOM.Generated.ConvolverOptions as JSDOM.ConvolverOptions,
+        JSDOM.Generated.CookieChangeEvent as JSDOM.CookieChangeEvent,
+        JSDOM.Generated.CookieChangeEventInit as JSDOM.CookieChangeEventInit,
+        JSDOM.Generated.CookieInit as JSDOM.CookieInit,
+        JSDOM.Generated.CookieListItem as JSDOM.CookieListItem,
+        JSDOM.Generated.CookieStore as JSDOM.CookieStore,
+        JSDOM.Generated.CookieStoreDeleteOptions as JSDOM.CookieStoreDeleteOptions,
+        JSDOM.Generated.CookieStoreGetOptions as JSDOM.CookieStoreGetOptions,
+        JSDOM.Generated.CookieStoreManager as JSDOM.CookieStoreManager,
+        JSDOM.Generated.CountQueuingStrategy as JSDOM.CountQueuingStrategy,
+        JSDOM.Generated.CreateHTMLCallback as JSDOM.CreateHTMLCallback,
+        JSDOM.Generated.CreateParserOptionsCallback as JSDOM.CreateParserOptionsCallback,
+        JSDOM.Generated.CreateScriptCallback as JSDOM.CreateScriptCallback,
+        JSDOM.Generated.CreateScriptURLCallback as JSDOM.CreateScriptURLCallback,
+        JSDOM.Generated.Credential as JSDOM.Credential,
+        JSDOM.Generated.CredentialCreationOptions as JSDOM.CredentialCreationOptions,
+        JSDOM.Generated.CredentialData as JSDOM.CredentialData,
+        JSDOM.Generated.CredentialPropertiesOutput as JSDOM.CredentialPropertiesOutput,
+        JSDOM.Generated.CredentialRequestOptions as JSDOM.CredentialRequestOptions,
+        JSDOM.Generated.CredentialsContainer as JSDOM.CredentialsContainer,
+        JSDOM.Generated.Crypto as JSDOM.Crypto,
+        JSDOM.Generated.CryptoKey as JSDOM.CryptoKey,
+        JSDOM.Generated.CryptoKeyPair as JSDOM.CryptoKeyPair,
+        JSDOM.Generated.CurrentUserDetailsOptions as JSDOM.CurrentUserDetailsOptions,
+        JSDOM.Generated.CustomElementConstructor as JSDOM.CustomElementConstructor,
+        JSDOM.Generated.CustomElementRegistry as JSDOM.CustomElementRegistry,
+        JSDOM.Generated.CustomEvent as JSDOM.CustomEvent,
+        JSDOM.Generated.CustomEventInit as JSDOM.CustomEventInit,
+        JSDOM.Generated.CustomStateSet as JSDOM.CustomStateSet,
+        JSDOM.Generated.DOMException as JSDOM.DOMException,
+        JSDOM.Generated.DOMImplementation as JSDOM.DOMImplementation,
+        JSDOM.Generated.DOMMatrix as JSDOM.DOMMatrix,
+        JSDOM.Generated.DOMMatrix2DInit as JSDOM.DOMMatrix2DInit,
+        JSDOM.Generated.DOMMatrixInit as JSDOM.DOMMatrixInit,
+        JSDOM.Generated.DOMMatrixReadOnly as JSDOM.DOMMatrixReadOnly,
+        JSDOM.Generated.DOMParser as JSDOM.DOMParser,
+        JSDOM.Generated.DOMPoint as JSDOM.DOMPoint,
+        JSDOM.Generated.DOMPointInit as JSDOM.DOMPointInit,
+        JSDOM.Generated.DOMPointReadOnly as JSDOM.DOMPointReadOnly,
+        JSDOM.Generated.DOMQuad as JSDOM.DOMQuad,
+        JSDOM.Generated.DOMQuadInit as JSDOM.DOMQuadInit,
+        JSDOM.Generated.DOMRect as JSDOM.DOMRect,
+        JSDOM.Generated.DOMRectInit as JSDOM.DOMRectInit,
+        JSDOM.Generated.DOMRectList as JSDOM.DOMRectList,
+        JSDOM.Generated.DOMRectReadOnly as JSDOM.DOMRectReadOnly,
+        JSDOM.Generated.DOMStringList as JSDOM.DOMStringList,
+        JSDOM.Generated.DOMStringMap as JSDOM.DOMStringMap,
+        JSDOM.Generated.DOMTokenList as JSDOM.DOMTokenList,
+        JSDOM.Generated.DataCue as JSDOM.DataCue,
+        JSDOM.Generated.DataTransfer as JSDOM.DataTransfer,
+        JSDOM.Generated.DataTransferItem as JSDOM.DataTransferItem,
+        JSDOM.Generated.DataTransferItemList as JSDOM.DataTransferItemList,
+        JSDOM.Generated.DecodeErrorCallback as JSDOM.DecodeErrorCallback,
+        JSDOM.Generated.DecodeSuccessCallback as JSDOM.DecodeSuccessCallback,
+        JSDOM.Generated.DecompressionStream as JSDOM.DecompressionStream,
+        JSDOM.Generated.DedicatedWorkerGlobalScope as JSDOM.DedicatedWorkerGlobalScope,
+        JSDOM.Generated.DelayNode as JSDOM.DelayNode,
+        JSDOM.Generated.DelayOptions as JSDOM.DelayOptions,
+        JSDOM.Generated.DeviceChangeEvent as JSDOM.DeviceChangeEvent,
+        JSDOM.Generated.DeviceMotionEvent as JSDOM.DeviceMotionEvent,
+        JSDOM.Generated.DeviceMotionEventAcceleration as JSDOM.DeviceMotionEventAcceleration,
+        JSDOM.Generated.DeviceMotionEventAccelerationInit as JSDOM.DeviceMotionEventAccelerationInit,
+        JSDOM.Generated.DeviceMotionEventInit as JSDOM.DeviceMotionEventInit,
+        JSDOM.Generated.DeviceMotionEventRotationRate as JSDOM.DeviceMotionEventRotationRate,
+        JSDOM.Generated.DeviceMotionEventRotationRateInit as JSDOM.DeviceMotionEventRotationRateInit,
+        JSDOM.Generated.DeviceOrientationEvent as JSDOM.DeviceOrientationEvent,
+        JSDOM.Generated.DeviceOrientationEventInit as JSDOM.DeviceOrientationEventInit,
+        JSDOM.Generated.DigitalCredential as JSDOM.DigitalCredential,
+        JSDOM.Generated.DigitalCredentialCreateRequest as JSDOM.DigitalCredentialCreateRequest,
+        JSDOM.Generated.DigitalCredentialCreationOptions as JSDOM.DigitalCredentialCreationOptions,
+        JSDOM.Generated.DigitalCredentialGetRequest as JSDOM.DigitalCredentialGetRequest,
+        JSDOM.Generated.DigitalCredentialRequestOptions as JSDOM.DigitalCredentialRequestOptions,
+        JSDOM.Generated.DisplayMediaStreamOptions as JSDOM.DisplayMediaStreamOptions,
+        JSDOM.Generated.Document as JSDOM.Document,
+        JSDOM.Generated.DocumentFragment as JSDOM.DocumentFragment,
+        JSDOM.Generated.DocumentOrShadowRoot as JSDOM.DocumentOrShadowRoot,
+        JSDOM.Generated.DocumentPictureInPicture as JSDOM.DocumentPictureInPicture,
+        JSDOM.Generated.DocumentPictureInPictureEvent as JSDOM.DocumentPictureInPictureEvent,
+        JSDOM.Generated.DocumentPictureInPictureEventInit as JSDOM.DocumentPictureInPictureEventInit,
+        JSDOM.Generated.DocumentPictureInPictureOptions as JSDOM.DocumentPictureInPictureOptions,
+        JSDOM.Generated.DocumentTimeline as JSDOM.DocumentTimeline,
+        JSDOM.Generated.DocumentTimelineOptions as JSDOM.DocumentTimelineOptions,
+        JSDOM.Generated.DocumentType as JSDOM.DocumentType,
+        JSDOM.Generated.DoubleRange as JSDOM.DoubleRange,
+        JSDOM.Generated.DragEvent as JSDOM.DragEvent,
+        JSDOM.Generated.DragEventInit as JSDOM.DragEventInit,
+        JSDOM.Generated.DynamicsCompressorNode as JSDOM.DynamicsCompressorNode,
+        JSDOM.Generated.DynamicsCompressorOptions as JSDOM.DynamicsCompressorOptions,
+        JSDOM.Generated.EXT_blend_minmax as JSDOM.EXT_blend_minmax,
+        JSDOM.Generated.EXT_clip_control as JSDOM.EXT_clip_control,
+        JSDOM.Generated.EXT_color_buffer_float as JSDOM.EXT_color_buffer_float,
+        JSDOM.Generated.EXT_color_buffer_half_float as JSDOM.EXT_color_buffer_half_float,
+        JSDOM.Generated.EXT_float_blend as JSDOM.EXT_float_blend,
+        JSDOM.Generated.EXT_frag_depth as JSDOM.EXT_frag_depth,
+        JSDOM.Generated.EXT_polygon_offset_clamp as JSDOM.EXT_polygon_offset_clamp,
+        JSDOM.Generated.EXT_sRGB as JSDOM.EXT_sRGB,
+        JSDOM.Generated.EXT_shader_texture_lod as JSDOM.EXT_shader_texture_lod,
+        JSDOM.Generated.EXT_texture_compression_bptc as JSDOM.EXT_texture_compression_bptc,
+        JSDOM.Generated.EXT_texture_compression_rgtc as JSDOM.EXT_texture_compression_rgtc,
+        JSDOM.Generated.EXT_texture_filter_anisotropic as JSDOM.EXT_texture_filter_anisotropic,
+        JSDOM.Generated.EXT_texture_mirror_clamp_to_edge as JSDOM.EXT_texture_mirror_clamp_to_edge,
+        JSDOM.Generated.EXT_texture_norm16 as JSDOM.EXT_texture_norm16,
+        JSDOM.Generated.EffectTiming as JSDOM.EffectTiming,
+        JSDOM.Generated.Element as JSDOM.Element,
+        JSDOM.Generated.ElementCSSInlineStyle as JSDOM.ElementCSSInlineStyle,
+        JSDOM.Generated.ElementContentEditable as JSDOM.ElementContentEditable,
+        JSDOM.Generated.ElementCreationOptions as JSDOM.ElementCreationOptions,
+        JSDOM.Generated.ElementDefinitionOptions as JSDOM.ElementDefinitionOptions,
+        JSDOM.Generated.ElementInternals as JSDOM.ElementInternals,
+        JSDOM.Generated.EncodedAudioChunk as JSDOM.EncodedAudioChunk,
+        JSDOM.Generated.EncodedAudioChunkInit as JSDOM.EncodedAudioChunkInit,
+        JSDOM.Generated.EncodedAudioChunkMetadata as JSDOM.EncodedAudioChunkMetadata,
+        JSDOM.Generated.EncodedAudioChunkOutputCallback as JSDOM.EncodedAudioChunkOutputCallback,
+        JSDOM.Generated.EncodedVideoChunk as JSDOM.EncodedVideoChunk,
+        JSDOM.Generated.EncodedVideoChunkInit as JSDOM.EncodedVideoChunkInit,
+        JSDOM.Generated.EncodedVideoChunkMetadata as JSDOM.EncodedVideoChunkMetadata,
+        JSDOM.Generated.EncodedVideoChunkOutputCallback as JSDOM.EncodedVideoChunkOutputCallback,
+        JSDOM.Generated.ErrorCallback as JSDOM.ErrorCallback,
+        JSDOM.Generated.ErrorEvent as JSDOM.ErrorEvent,
+        JSDOM.Generated.ErrorEventInit as JSDOM.ErrorEventInit,
+        JSDOM.Generated.Event as JSDOM.Event,
+        JSDOM.Generated.EventCounts as JSDOM.EventCounts,
+        JSDOM.Generated.EventInit as JSDOM.EventInit,
+        JSDOM.Generated.EventListenerOptions as JSDOM.EventListenerOptions,
+        JSDOM.Generated.EventModifierInit as JSDOM.EventModifierInit,
+        JSDOM.Generated.EventSource as JSDOM.EventSource,
+        JSDOM.Generated.EventSourceInit as JSDOM.EventSourceInit,
+        JSDOM.Generated.EventTarget as JSDOM.EventTarget,
+        JSDOM.Generated.ExtendableCookieChangeEvent as JSDOM.ExtendableCookieChangeEvent,
+        JSDOM.Generated.ExtendableCookieChangeEventInit as JSDOM.ExtendableCookieChangeEventInit,
+        JSDOM.Generated.ExtendableEvent as JSDOM.ExtendableEvent,
+        JSDOM.Generated.ExtendableEventInit as JSDOM.ExtendableEventInit,
+        JSDOM.Generated.ExtendableMessageEvent as JSDOM.ExtendableMessageEvent,
+        JSDOM.Generated.ExtendableMessageEventInit as JSDOM.ExtendableMessageEventInit,
+        JSDOM.Generated.External as JSDOM.External,
+        JSDOM.Generated.FederatedCredentialInit as JSDOM.FederatedCredentialInit,
+        JSDOM.Generated.FederatedCredentialRequestOptions as JSDOM.FederatedCredentialRequestOptions,
+        JSDOM.Generated.FetchEvent as JSDOM.FetchEvent,
+        JSDOM.Generated.FetchEventInit as JSDOM.FetchEventInit,
+        JSDOM.Generated.File as JSDOM.File,
+        JSDOM.Generated.FileCallback as JSDOM.FileCallback,
+        JSDOM.Generated.FileList as JSDOM.FileList,
+        JSDOM.Generated.FilePropertyBag as JSDOM.FilePropertyBag,
+        JSDOM.Generated.FileReader as JSDOM.FileReader,
+        JSDOM.Generated.FileReaderSync as JSDOM.FileReaderSync,
+        JSDOM.Generated.FileSystem as JSDOM.FileSystem,
+        JSDOM.Generated.FileSystemCreateWritableOptions as JSDOM.FileSystemCreateWritableOptions,
+        JSDOM.Generated.FileSystemDirectoryEntry as JSDOM.FileSystemDirectoryEntry,
+        JSDOM.Generated.FileSystemDirectoryHandle as JSDOM.FileSystemDirectoryHandle,
+        JSDOM.Generated.FileSystemDirectoryReader as JSDOM.FileSystemDirectoryReader,
+        JSDOM.Generated.FileSystemEntriesCallback as JSDOM.FileSystemEntriesCallback,
+        JSDOM.Generated.FileSystemEntry as JSDOM.FileSystemEntry,
+        JSDOM.Generated.FileSystemEntryCallback as JSDOM.FileSystemEntryCallback,
+        JSDOM.Generated.FileSystemFileEntry as JSDOM.FileSystemFileEntry,
+        JSDOM.Generated.FileSystemFileHandle as JSDOM.FileSystemFileHandle,
+        JSDOM.Generated.FileSystemFlags as JSDOM.FileSystemFlags,
+        JSDOM.Generated.FileSystemGetDirectoryOptions as JSDOM.FileSystemGetDirectoryOptions,
+        JSDOM.Generated.FileSystemGetFileOptions as JSDOM.FileSystemGetFileOptions,
+        JSDOM.Generated.FileSystemHandle as JSDOM.FileSystemHandle,
+        JSDOM.Generated.FileSystemReadWriteOptions as JSDOM.FileSystemReadWriteOptions,
+        JSDOM.Generated.FileSystemRemoveOptions as JSDOM.FileSystemRemoveOptions,
+        JSDOM.Generated.FileSystemSyncAccessHandle as JSDOM.FileSystemSyncAccessHandle,
+        JSDOM.Generated.FileSystemWritableFileStream as JSDOM.FileSystemWritableFileStream,
+        JSDOM.Generated.FlacEncoderConfig as JSDOM.FlacEncoderConfig,
+        JSDOM.Generated.FocusEvent as JSDOM.FocusEvent,
+        JSDOM.Generated.FocusEventInit as JSDOM.FocusEventInit,
+        JSDOM.Generated.FocusOptions as JSDOM.FocusOptions,
+        JSDOM.Generated.FontFace as JSDOM.FontFace,
+        JSDOM.Generated.FontFaceDescriptors as JSDOM.FontFaceDescriptors,
+        JSDOM.Generated.FontFaceSet as JSDOM.FontFaceSet,
+        JSDOM.Generated.FontFaceSetLoadEvent as JSDOM.FontFaceSetLoadEvent,
+        JSDOM.Generated.FontFaceSetLoadEventInit as JSDOM.FontFaceSetLoadEventInit,
+        JSDOM.Generated.FontFaceSource as JSDOM.FontFaceSource,
+        JSDOM.Generated.FormData as JSDOM.FormData,
+        JSDOM.Generated.FormDataEvent as JSDOM.FormDataEvent,
+        JSDOM.Generated.FormDataEventInit as JSDOM.FormDataEventInit,
+        JSDOM.Generated.FragmentDirective as JSDOM.FragmentDirective,
+        JSDOM.Generated.FrameRequestCallback as JSDOM.FrameRequestCallback,
+        JSDOM.Generated.FullscreenOptions as JSDOM.FullscreenOptions,
+        JSDOM.Generated.FunctionStringCallback as JSDOM.FunctionStringCallback,
+        JSDOM.Generated.GPU as JSDOM.GPU,
+        JSDOM.Generated.GPUAdapter as JSDOM.GPUAdapter,
+        JSDOM.Generated.GPUAdapterInfo as JSDOM.GPUAdapterInfo,
+        JSDOM.Generated.GPUBindGroup as JSDOM.GPUBindGroup,
+        JSDOM.Generated.GPUBindGroupDescriptor as JSDOM.GPUBindGroupDescriptor,
+        JSDOM.Generated.GPUBindGroupEntry as JSDOM.GPUBindGroupEntry,
+        JSDOM.Generated.GPUBindGroupLayout as JSDOM.GPUBindGroupLayout,
+        JSDOM.Generated.GPUBindGroupLayoutDescriptor as JSDOM.GPUBindGroupLayoutDescriptor,
+        JSDOM.Generated.GPUBindGroupLayoutEntry as JSDOM.GPUBindGroupLayoutEntry,
+        JSDOM.Generated.GPUBindingCommandsMixin as JSDOM.GPUBindingCommandsMixin,
+        JSDOM.Generated.GPUBlendComponent as JSDOM.GPUBlendComponent,
+        JSDOM.Generated.GPUBlendState as JSDOM.GPUBlendState,
+        JSDOM.Generated.GPUBuffer as JSDOM.GPUBuffer,
+        JSDOM.Generated.GPUBufferBinding as JSDOM.GPUBufferBinding,
+        JSDOM.Generated.GPUBufferBindingLayout as JSDOM.GPUBufferBindingLayout,
+        JSDOM.Generated.GPUBufferDescriptor as JSDOM.GPUBufferDescriptor,
+        JSDOM.Generated.GPUCanvasConfiguration as JSDOM.GPUCanvasConfiguration,
+        JSDOM.Generated.GPUCanvasContext as JSDOM.GPUCanvasContext,
+        JSDOM.Generated.GPUCanvasToneMapping as JSDOM.GPUCanvasToneMapping,
+        JSDOM.Generated.GPUColorDict as JSDOM.GPUColorDict,
+        JSDOM.Generated.GPUColorTargetState as JSDOM.GPUColorTargetState,
+        JSDOM.Generated.GPUCommandBuffer as JSDOM.GPUCommandBuffer,
+        JSDOM.Generated.GPUCommandBufferDescriptor as JSDOM.GPUCommandBufferDescriptor,
+        JSDOM.Generated.GPUCommandEncoder as JSDOM.GPUCommandEncoder,
+        JSDOM.Generated.GPUCommandEncoderDescriptor as JSDOM.GPUCommandEncoderDescriptor,
+        JSDOM.Generated.GPUCompilationInfo as JSDOM.GPUCompilationInfo,
+        JSDOM.Generated.GPUCompilationMessage as JSDOM.GPUCompilationMessage,
+        JSDOM.Generated.GPUComputePassDescriptor as JSDOM.GPUComputePassDescriptor,
+        JSDOM.Generated.GPUComputePassEncoder as JSDOM.GPUComputePassEncoder,
+        JSDOM.Generated.GPUComputePassTimestampWrites as JSDOM.GPUComputePassTimestampWrites,
+        JSDOM.Generated.GPUComputePipeline as JSDOM.GPUComputePipeline,
+        JSDOM.Generated.GPUComputePipelineDescriptor as JSDOM.GPUComputePipelineDescriptor,
+        JSDOM.Generated.GPUCopyExternalImageDestInfo as JSDOM.GPUCopyExternalImageDestInfo,
+        JSDOM.Generated.GPUCopyExternalImageSourceInfo as JSDOM.GPUCopyExternalImageSourceInfo,
+        JSDOM.Generated.GPUDebugCommandsMixin as JSDOM.GPUDebugCommandsMixin,
+        JSDOM.Generated.GPUDepthStencilState as JSDOM.GPUDepthStencilState,
+        JSDOM.Generated.GPUDevice as JSDOM.GPUDevice,
+        JSDOM.Generated.GPUDeviceDescriptor as JSDOM.GPUDeviceDescriptor,
+        JSDOM.Generated.GPUDeviceLostInfo as JSDOM.GPUDeviceLostInfo,
+        JSDOM.Generated.GPUError as JSDOM.GPUError,
+        JSDOM.Generated.GPUExtent3DDict as JSDOM.GPUExtent3DDict,
+        JSDOM.Generated.GPUExternalTexture as JSDOM.GPUExternalTexture,
+        JSDOM.Generated.GPUExternalTextureBindingLayout as JSDOM.GPUExternalTextureBindingLayout,
+        JSDOM.Generated.GPUExternalTextureDescriptor as JSDOM.GPUExternalTextureDescriptor,
+        JSDOM.Generated.GPUFragmentState as JSDOM.GPUFragmentState,
+        JSDOM.Generated.GPUInternalError as JSDOM.GPUInternalError,
+        JSDOM.Generated.GPUMultisampleState as JSDOM.GPUMultisampleState,
+        JSDOM.Generated.GPUObjectBase as JSDOM.GPUObjectBase,
+        JSDOM.Generated.GPUObjectDescriptorBase as JSDOM.GPUObjectDescriptorBase,
+        JSDOM.Generated.GPUOrigin2DDict as JSDOM.GPUOrigin2DDict,
+        JSDOM.Generated.GPUOrigin3DDict as JSDOM.GPUOrigin3DDict,
+        JSDOM.Generated.GPUOutOfMemoryError as JSDOM.GPUOutOfMemoryError,
+        JSDOM.Generated.GPUPipelineBase as JSDOM.GPUPipelineBase,
+        JSDOM.Generated.GPUPipelineDescriptorBase as JSDOM.GPUPipelineDescriptorBase,
+        JSDOM.Generated.GPUPipelineError as JSDOM.GPUPipelineError,
+        JSDOM.Generated.GPUPipelineErrorInit as JSDOM.GPUPipelineErrorInit,
+        JSDOM.Generated.GPUPipelineLayout as JSDOM.GPUPipelineLayout,
+        JSDOM.Generated.GPUPipelineLayoutDescriptor as JSDOM.GPUPipelineLayoutDescriptor,
+        JSDOM.Generated.GPUPrimitiveState as JSDOM.GPUPrimitiveState,
+        JSDOM.Generated.GPUProgrammableStage as JSDOM.GPUProgrammableStage,
+        JSDOM.Generated.GPUQuerySet as JSDOM.GPUQuerySet,
+        JSDOM.Generated.GPUQuerySetDescriptor as JSDOM.GPUQuerySetDescriptor,
+        JSDOM.Generated.GPUQueue as JSDOM.GPUQueue,
+        JSDOM.Generated.GPUQueueDescriptor as JSDOM.GPUQueueDescriptor,
+        JSDOM.Generated.GPURenderBundle as JSDOM.GPURenderBundle,
+        JSDOM.Generated.GPURenderBundleDescriptor as JSDOM.GPURenderBundleDescriptor,
+        JSDOM.Generated.GPURenderBundleEncoder as JSDOM.GPURenderBundleEncoder,
+        JSDOM.Generated.GPURenderBundleEncoderDescriptor as JSDOM.GPURenderBundleEncoderDescriptor,
+        JSDOM.Generated.GPURenderCommandsMixin as JSDOM.GPURenderCommandsMixin,
+        JSDOM.Generated.GPURenderPassColorAttachment as JSDOM.GPURenderPassColorAttachment,
+        JSDOM.Generated.GPURenderPassDepthStencilAttachment as JSDOM.GPURenderPassDepthStencilAttachment,
+        JSDOM.Generated.GPURenderPassDescriptor as JSDOM.GPURenderPassDescriptor,
+        JSDOM.Generated.GPURenderPassEncoder as JSDOM.GPURenderPassEncoder,
+        JSDOM.Generated.GPURenderPassLayout as JSDOM.GPURenderPassLayout,
+        JSDOM.Generated.GPURenderPassTimestampWrites as JSDOM.GPURenderPassTimestampWrites,
+        JSDOM.Generated.GPURenderPipeline as JSDOM.GPURenderPipeline,
+        JSDOM.Generated.GPURenderPipelineDescriptor as JSDOM.GPURenderPipelineDescriptor,
+        JSDOM.Generated.GPURequestAdapterOptions as JSDOM.GPURequestAdapterOptions,
+        JSDOM.Generated.GPUSampler as JSDOM.GPUSampler,
+        JSDOM.Generated.GPUSamplerBindingLayout as JSDOM.GPUSamplerBindingLayout,
+        JSDOM.Generated.GPUSamplerDescriptor as JSDOM.GPUSamplerDescriptor,
+        JSDOM.Generated.GPUShaderModule as JSDOM.GPUShaderModule,
+        JSDOM.Generated.GPUShaderModuleCompilationHint as JSDOM.GPUShaderModuleCompilationHint,
+        JSDOM.Generated.GPUShaderModuleDescriptor as JSDOM.GPUShaderModuleDescriptor,
+        JSDOM.Generated.GPUStencilFaceState as JSDOM.GPUStencilFaceState,
+        JSDOM.Generated.GPUStorageTextureBindingLayout as JSDOM.GPUStorageTextureBindingLayout,
+        JSDOM.Generated.GPUSupportedFeatures as JSDOM.GPUSupportedFeatures,
+        JSDOM.Generated.GPUSupportedLimits as JSDOM.GPUSupportedLimits,
+        JSDOM.Generated.GPUTexelCopyBufferInfo as JSDOM.GPUTexelCopyBufferInfo,
+        JSDOM.Generated.GPUTexelCopyBufferLayout as JSDOM.GPUTexelCopyBufferLayout,
+        JSDOM.Generated.GPUTexelCopyTextureInfo as JSDOM.GPUTexelCopyTextureInfo,
+        JSDOM.Generated.GPUTexture as JSDOM.GPUTexture,
+        JSDOM.Generated.GPUTextureBindingLayout as JSDOM.GPUTextureBindingLayout,
+        JSDOM.Generated.GPUTextureDescriptor as JSDOM.GPUTextureDescriptor,
+        JSDOM.Generated.GPUTextureView as JSDOM.GPUTextureView,
+        JSDOM.Generated.GPUTextureViewDescriptor as JSDOM.GPUTextureViewDescriptor,
+        JSDOM.Generated.GPUUncapturedErrorEvent as JSDOM.GPUUncapturedErrorEvent,
+        JSDOM.Generated.GPUUncapturedErrorEventInit as JSDOM.GPUUncapturedErrorEventInit,
+        JSDOM.Generated.GPUValidationError as JSDOM.GPUValidationError,
+        JSDOM.Generated.GPUVertexAttribute as JSDOM.GPUVertexAttribute,
+        JSDOM.Generated.GPUVertexBufferLayout as JSDOM.GPUVertexBufferLayout,
+        JSDOM.Generated.GPUVertexState as JSDOM.GPUVertexState,
+        JSDOM.Generated.GainNode as JSDOM.GainNode,
+        JSDOM.Generated.GainOptions as JSDOM.GainOptions,
+        JSDOM.Generated.Gamepad as JSDOM.Gamepad,
+        JSDOM.Generated.GamepadButton as JSDOM.GamepadButton,
+        JSDOM.Generated.GamepadEffectParameters as JSDOM.GamepadEffectParameters,
+        JSDOM.Generated.GamepadEvent as JSDOM.GamepadEvent,
+        JSDOM.Generated.GamepadEventInit as JSDOM.GamepadEventInit,
+        JSDOM.Generated.GamepadHapticActuator as JSDOM.GamepadHapticActuator,
+        JSDOM.Generated.GenericTransformStream as JSDOM.GenericTransformStream,
+        JSDOM.Generated.GeolocationCoordinates as JSDOM.GeolocationCoordinates,
+        JSDOM.Generated.GeolocationPosition as JSDOM.GeolocationPosition,
+        JSDOM.Generated.GetAnimationsOptions as JSDOM.GetAnimationsOptions,
+        JSDOM.Generated.GetComposedRangesOptions as JSDOM.GetComposedRangesOptions,
+        JSDOM.Generated.GetHTMLOptions as JSDOM.GetHTMLOptions,
+        JSDOM.Generated.GetNotificationOptions as JSDOM.GetNotificationOptions,
+        JSDOM.Generated.GetRootNodeOptions as JSDOM.GetRootNodeOptions,
+        JSDOM.Generated.GlobalEventHandlers as JSDOM.GlobalEventHandlers,
+        JSDOM.Generated.HMACGetSecretInput as JSDOM.HMACGetSecretInput,
+        JSDOM.Generated.HMACGetSecretOutput as JSDOM.HMACGetSecretOutput,
+        JSDOM.Generated.HTMLAllCollection as JSDOM.HTMLAllCollection,
+        JSDOM.Generated.HTMLAnchorElement as JSDOM.HTMLAnchorElement,
+        JSDOM.Generated.HTMLAreaElement as JSDOM.HTMLAreaElement,
+        JSDOM.Generated.HTMLAudioElement as JSDOM.HTMLAudioElement,
+        JSDOM.Generated.HTMLBRElement as JSDOM.HTMLBRElement,
+        JSDOM.Generated.HTMLBaseElement as JSDOM.HTMLBaseElement,
+        JSDOM.Generated.HTMLBodyElement as JSDOM.HTMLBodyElement,
+        JSDOM.Generated.HTMLButtonElement as JSDOM.HTMLButtonElement,
+        JSDOM.Generated.HTMLCanvasElement as JSDOM.HTMLCanvasElement,
+        JSDOM.Generated.HTMLCollection as JSDOM.HTMLCollection,
+        JSDOM.Generated.HTMLDListElement as JSDOM.HTMLDListElement,
+        JSDOM.Generated.HTMLDataElement as JSDOM.HTMLDataElement,
+        JSDOM.Generated.HTMLDataListElement as JSDOM.HTMLDataListElement,
+        JSDOM.Generated.HTMLDetailsElement as JSDOM.HTMLDetailsElement,
+        JSDOM.Generated.HTMLDialogElement as JSDOM.HTMLDialogElement,
+        JSDOM.Generated.HTMLDirectoryElement as JSDOM.HTMLDirectoryElement,
+        JSDOM.Generated.HTMLDivElement as JSDOM.HTMLDivElement,
+        JSDOM.Generated.HTMLElement as JSDOM.HTMLElement,
+        JSDOM.Generated.HTMLEmbedElement as JSDOM.HTMLEmbedElement,
+        JSDOM.Generated.HTMLFieldSetElement as JSDOM.HTMLFieldSetElement,
+        JSDOM.Generated.HTMLFontElement as JSDOM.HTMLFontElement,
+        JSDOM.Generated.HTMLFormControlsCollection as JSDOM.HTMLFormControlsCollection,
+        JSDOM.Generated.HTMLFormElement as JSDOM.HTMLFormElement,
+        JSDOM.Generated.HTMLFrameElement as JSDOM.HTMLFrameElement,
+        JSDOM.Generated.HTMLFrameSetElement as JSDOM.HTMLFrameSetElement,
+        JSDOM.Generated.HTMLHRElement as JSDOM.HTMLHRElement,
+        JSDOM.Generated.HTMLHeadElement as JSDOM.HTMLHeadElement,
+        JSDOM.Generated.HTMLHeadingElement as JSDOM.HTMLHeadingElement,
+        JSDOM.Generated.HTMLHtmlElement as JSDOM.HTMLHtmlElement,
+        JSDOM.Generated.HTMLHyperlinkElementUtils as JSDOM.HTMLHyperlinkElementUtils,
+        JSDOM.Generated.HTMLIFrameElement as JSDOM.HTMLIFrameElement,
+        JSDOM.Generated.HTMLImageElement as JSDOM.HTMLImageElement,
+        JSDOM.Generated.HTMLInputElement as JSDOM.HTMLInputElement,
+        JSDOM.Generated.HTMLLIElement as JSDOM.HTMLLIElement,
+        JSDOM.Generated.HTMLLabelElement as JSDOM.HTMLLabelElement,
+        JSDOM.Generated.HTMLLegendElement as JSDOM.HTMLLegendElement,
+        JSDOM.Generated.HTMLLinkElement as JSDOM.HTMLLinkElement,
+        JSDOM.Generated.HTMLMapElement as JSDOM.HTMLMapElement,
+        JSDOM.Generated.HTMLMarqueeElement as JSDOM.HTMLMarqueeElement,
+        JSDOM.Generated.HTMLMediaElement as JSDOM.HTMLMediaElement,
+        JSDOM.Generated.HTMLMenuElement as JSDOM.HTMLMenuElement,
+        JSDOM.Generated.HTMLMetaElement as JSDOM.HTMLMetaElement,
+        JSDOM.Generated.HTMLMeterElement as JSDOM.HTMLMeterElement,
+        JSDOM.Generated.HTMLModElement as JSDOM.HTMLModElement,
+        JSDOM.Generated.HTMLOListElement as JSDOM.HTMLOListElement,
+        JSDOM.Generated.HTMLObjectElement as JSDOM.HTMLObjectElement,
+        JSDOM.Generated.HTMLOptGroupElement as JSDOM.HTMLOptGroupElement,
+        JSDOM.Generated.HTMLOptionElement as JSDOM.HTMLOptionElement,
+        JSDOM.Generated.HTMLOptionsCollection as JSDOM.HTMLOptionsCollection,
+        JSDOM.Generated.HTMLOrSVGOrMathMLElement as JSDOM.HTMLOrSVGOrMathMLElement,
+        JSDOM.Generated.HTMLOutputElement as JSDOM.HTMLOutputElement,
+        JSDOM.Generated.HTMLParagraphElement as JSDOM.HTMLParagraphElement,
+        JSDOM.Generated.HTMLParamElement as JSDOM.HTMLParamElement,
+        JSDOM.Generated.HTMLPictureElement as JSDOM.HTMLPictureElement,
+        JSDOM.Generated.HTMLPreElement as JSDOM.HTMLPreElement,
+        JSDOM.Generated.HTMLProgressElement as JSDOM.HTMLProgressElement,
+        JSDOM.Generated.HTMLQuoteElement as JSDOM.HTMLQuoteElement,
+        JSDOM.Generated.HTMLScriptElement as JSDOM.HTMLScriptElement,
+        JSDOM.Generated.HTMLSelectElement as JSDOM.HTMLSelectElement,
+        JSDOM.Generated.HTMLSelectedContentElement as JSDOM.HTMLSelectedContentElement,
+        JSDOM.Generated.HTMLSlotElement as JSDOM.HTMLSlotElement,
+        JSDOM.Generated.HTMLSourceElement as JSDOM.HTMLSourceElement,
+        JSDOM.Generated.HTMLSpanElement as JSDOM.HTMLSpanElement,
+        JSDOM.Generated.HTMLStyleElement as JSDOM.HTMLStyleElement,
+        JSDOM.Generated.HTMLTableCaptionElement as JSDOM.HTMLTableCaptionElement,
+        JSDOM.Generated.HTMLTableCellElement as JSDOM.HTMLTableCellElement,
+        JSDOM.Generated.HTMLTableColElement as JSDOM.HTMLTableColElement,
+        JSDOM.Generated.HTMLTableElement as JSDOM.HTMLTableElement,
+        JSDOM.Generated.HTMLTableRowElement as JSDOM.HTMLTableRowElement,
+        JSDOM.Generated.HTMLTableSectionElement as JSDOM.HTMLTableSectionElement,
+        JSDOM.Generated.HTMLTemplateElement as JSDOM.HTMLTemplateElement,
+        JSDOM.Generated.HTMLTextAreaElement as JSDOM.HTMLTextAreaElement,
+        JSDOM.Generated.HTMLTimeElement as JSDOM.HTMLTimeElement,
+        JSDOM.Generated.HTMLTitleElement as JSDOM.HTMLTitleElement,
+        JSDOM.Generated.HTMLTrackElement as JSDOM.HTMLTrackElement,
+        JSDOM.Generated.HTMLUListElement as JSDOM.HTMLUListElement,
+        JSDOM.Generated.HTMLUnknownElement as JSDOM.HTMLUnknownElement,
+        JSDOM.Generated.HTMLVideoElement as JSDOM.HTMLVideoElement,
+        JSDOM.Generated.HashChangeEvent as JSDOM.HashChangeEvent,
+        JSDOM.Generated.HashChangeEventInit as JSDOM.HashChangeEventInit,
+        JSDOM.Generated.Headers as JSDOM.Headers,
+        JSDOM.Generated.HevcEncoderConfig as JSDOM.HevcEncoderConfig,
+        JSDOM.Generated.Highlight as JSDOM.Highlight,
+        JSDOM.Generated.HighlightHitResult as JSDOM.HighlightHitResult,
+        JSDOM.Generated.HighlightRegistry as JSDOM.HighlightRegistry,
+        JSDOM.Generated.HighlightsFromPointOptions as JSDOM.HighlightsFromPointOptions,
+        JSDOM.Generated.History as JSDOM.History,
+        JSDOM.Generated.HyperlinkElementUtils as JSDOM.HyperlinkElementUtils,
+        JSDOM.Generated.IDBCursor as JSDOM.IDBCursor,
+        JSDOM.Generated.IDBCursorWithValue as JSDOM.IDBCursorWithValue,
+        JSDOM.Generated.IDBDatabase as JSDOM.IDBDatabase,
+        JSDOM.Generated.IDBDatabaseInfo as JSDOM.IDBDatabaseInfo,
+        JSDOM.Generated.IDBFactory as JSDOM.IDBFactory,
+        JSDOM.Generated.IDBGetAllOptions as JSDOM.IDBGetAllOptions,
+        JSDOM.Generated.IDBIndex as JSDOM.IDBIndex,
+        JSDOM.Generated.IDBIndexParameters as JSDOM.IDBIndexParameters,
+        JSDOM.Generated.IDBKeyRange as JSDOM.IDBKeyRange,
+        JSDOM.Generated.IDBObjectStore as JSDOM.IDBObjectStore,
+        JSDOM.Generated.IDBObjectStoreParameters as JSDOM.IDBObjectStoreParameters,
+        JSDOM.Generated.IDBOpenDBRequest as JSDOM.IDBOpenDBRequest,
+        JSDOM.Generated.IDBRecord as JSDOM.IDBRecord,
+        JSDOM.Generated.IDBRequest as JSDOM.IDBRequest,
+        JSDOM.Generated.IDBTransaction as JSDOM.IDBTransaction,
+        JSDOM.Generated.IDBTransactionOptions as JSDOM.IDBTransactionOptions,
+        JSDOM.Generated.IDBVersionChangeEvent as JSDOM.IDBVersionChangeEvent,
+        JSDOM.Generated.IDBVersionChangeEventInit as JSDOM.IDBVersionChangeEventInit,
+        JSDOM.Generated.IIRFilterNode as JSDOM.IIRFilterNode,
+        JSDOM.Generated.IIRFilterOptions as JSDOM.IIRFilterOptions,
+        JSDOM.Generated.IdentityCredentialRequestOptions as JSDOM.IdentityCredentialRequestOptions,
+        JSDOM.Generated.IdentityProviderConfig as JSDOM.IdentityProviderConfig,
+        JSDOM.Generated.IdentityProviderRequestOptions as JSDOM.IdentityProviderRequestOptions,
+        JSDOM.Generated.IdleDeadline as JSDOM.IdleDeadline,
+        JSDOM.Generated.IdleRequestCallback as JSDOM.IdleRequestCallback,
+        JSDOM.Generated.IdleRequestOptions as JSDOM.IdleRequestOptions,
+        JSDOM.Generated.ImageBitmap as JSDOM.ImageBitmap,
+        JSDOM.Generated.ImageBitmapRenderingContext as JSDOM.ImageBitmapRenderingContext,
+        JSDOM.Generated.ImageCapture as JSDOM.ImageCapture,
+        JSDOM.Generated.ImageData as JSDOM.ImageData,
+        JSDOM.Generated.ImageDataSettings as JSDOM.ImageDataSettings,
+        JSDOM.Generated.ImageDecodeOptions as JSDOM.ImageDecodeOptions,
+        JSDOM.Generated.ImageDecodeResult as JSDOM.ImageDecodeResult,
+        JSDOM.Generated.ImageDecoder as JSDOM.ImageDecoder,
+        JSDOM.Generated.ImageDecoderInit as JSDOM.ImageDecoderInit,
+        JSDOM.Generated.ImageEncodeOptions as JSDOM.ImageEncodeOptions,
+        JSDOM.Generated.ImageTrack as JSDOM.ImageTrack,
+        JSDOM.Generated.ImageTrackList as JSDOM.ImageTrackList,
+        JSDOM.Generated.ImportNodeOptions as JSDOM.ImportNodeOptions,
+        JSDOM.Generated.InputDeviceCapabilities as JSDOM.InputDeviceCapabilities,
+        JSDOM.Generated.InputDeviceInfo as JSDOM.InputDeviceInfo,
+        JSDOM.Generated.InputEvent as JSDOM.InputEvent,
+        JSDOM.Generated.InputEventInit as JSDOM.InputEventInit,
+        JSDOM.Generated.InstallEvent as JSDOM.InstallEvent,
+        JSDOM.Generated.IntersectionObserver as JSDOM.IntersectionObserver,
+        JSDOM.Generated.IntersectionObserverCallback as JSDOM.IntersectionObserverCallback,
+        JSDOM.Generated.IntersectionObserverEntry as JSDOM.IntersectionObserverEntry,
+        JSDOM.Generated.IntersectionObserverEntryInit as JSDOM.IntersectionObserverEntryInit,
+        JSDOM.Generated.IntersectionObserverInit as JSDOM.IntersectionObserverInit,
+        JSDOM.Generated.JsonWebKey as JSDOM.JsonWebKey,
+        JSDOM.Generated.KHR_parallel_shader_compile as JSDOM.KHR_parallel_shader_compile,
+        JSDOM.Generated.KeySystemTrackConfiguration as JSDOM.KeySystemTrackConfiguration,
+        JSDOM.Generated.KeyboardEvent as JSDOM.KeyboardEvent,
+        JSDOM.Generated.KeyboardEventInit as JSDOM.KeyboardEventInit,
+        JSDOM.Generated.KeyframeAnimationOptions as JSDOM.KeyframeAnimationOptions,
+        JSDOM.Generated.KeyframeEffect as JSDOM.KeyframeEffect,
+        JSDOM.Generated.KeyframeEffectOptions as JSDOM.KeyframeEffectOptions,
+        JSDOM.Generated.LargestContentfulPaint as JSDOM.LargestContentfulPaint,
+        JSDOM.Generated.LinkStyle as JSDOM.LinkStyle,
+        JSDOM.Generated.Location as JSDOM.Location,
+        JSDOM.Generated.Lock as JSDOM.Lock,
+        JSDOM.Generated.LockGrantedCallback as JSDOM.LockGrantedCallback,
+        JSDOM.Generated.LockInfo as JSDOM.LockInfo,
+        JSDOM.Generated.LockManager as JSDOM.LockManager,
+        JSDOM.Generated.LockManagerSnapshot as JSDOM.LockManagerSnapshot,
+        JSDOM.Generated.LockOptions as JSDOM.LockOptions,
+        JSDOM.Generated.MIDIAccess as JSDOM.MIDIAccess,
+        JSDOM.Generated.MIDIConnectionEvent as JSDOM.MIDIConnectionEvent,
+        JSDOM.Generated.MIDIConnectionEventInit as JSDOM.MIDIConnectionEventInit,
+        JSDOM.Generated.MIDIInput as JSDOM.MIDIInput,
+        JSDOM.Generated.MIDIInputMap as JSDOM.MIDIInputMap,
+        JSDOM.Generated.MIDIMessageEvent as JSDOM.MIDIMessageEvent,
+        JSDOM.Generated.MIDIMessageEventInit as JSDOM.MIDIMessageEventInit,
+        JSDOM.Generated.MIDIOptions as JSDOM.MIDIOptions,
+        JSDOM.Generated.MIDIOutput as JSDOM.MIDIOutput,
+        JSDOM.Generated.MIDIOutputMap as JSDOM.MIDIOutputMap,
+        JSDOM.Generated.MIDIPort as JSDOM.MIDIPort,
+        JSDOM.Generated.MathMLElement as JSDOM.MathMLElement,
+        JSDOM.Generated.MediaCapabilities as JSDOM.MediaCapabilities,
+        JSDOM.Generated.MediaCapabilitiesDecodingInfo as JSDOM.MediaCapabilitiesDecodingInfo,
+        JSDOM.Generated.MediaCapabilitiesEncodingInfo as JSDOM.MediaCapabilitiesEncodingInfo,
+        JSDOM.Generated.MediaCapabilitiesInfo as JSDOM.MediaCapabilitiesInfo,
+        JSDOM.Generated.MediaCapabilitiesKeySystemConfiguration as JSDOM.MediaCapabilitiesKeySystemConfiguration,
+        JSDOM.Generated.MediaConfiguration as JSDOM.MediaConfiguration,
+        JSDOM.Generated.MediaDecodingConfiguration as JSDOM.MediaDecodingConfiguration,
+        JSDOM.Generated.MediaDeviceInfo as JSDOM.MediaDeviceInfo,
+        JSDOM.Generated.MediaDevices as JSDOM.MediaDevices,
+        JSDOM.Generated.MediaEffectInfo as JSDOM.MediaEffectInfo,
+        JSDOM.Generated.MediaElementAudioSourceNode as JSDOM.MediaElementAudioSourceNode,
+        JSDOM.Generated.MediaElementAudioSourceOptions as JSDOM.MediaElementAudioSourceOptions,
+        JSDOM.Generated.MediaEncodingConfiguration as JSDOM.MediaEncodingConfiguration,
+        JSDOM.Generated.MediaEncryptedEvent as JSDOM.MediaEncryptedEvent,
+        JSDOM.Generated.MediaEncryptedEventInit as JSDOM.MediaEncryptedEventInit,
+        JSDOM.Generated.MediaError as JSDOM.MediaError,
+        JSDOM.Generated.MediaImage as JSDOM.MediaImage,
+        JSDOM.Generated.MediaKeyMessageEvent as JSDOM.MediaKeyMessageEvent,
+        JSDOM.Generated.MediaKeyMessageEventInit as JSDOM.MediaKeyMessageEventInit,
+        JSDOM.Generated.MediaKeySession as JSDOM.MediaKeySession,
+        JSDOM.Generated.MediaKeyStatusMap as JSDOM.MediaKeyStatusMap,
+        JSDOM.Generated.MediaKeySystemAccess as JSDOM.MediaKeySystemAccess,
+        JSDOM.Generated.MediaKeySystemConfiguration as JSDOM.MediaKeySystemConfiguration,
+        JSDOM.Generated.MediaKeySystemMediaCapability as JSDOM.MediaKeySystemMediaCapability,
+        JSDOM.Generated.MediaKeys as JSDOM.MediaKeys,
+        JSDOM.Generated.MediaKeysPolicy as JSDOM.MediaKeysPolicy,
+        JSDOM.Generated.MediaList as JSDOM.MediaList,
+        JSDOM.Generated.MediaMetadata as JSDOM.MediaMetadata,
+        JSDOM.Generated.MediaMetadataInit as JSDOM.MediaMetadataInit,
+        JSDOM.Generated.MediaPositionState as JSDOM.MediaPositionState,
+        JSDOM.Generated.MediaQueryList as JSDOM.MediaQueryList,
+        JSDOM.Generated.MediaQueryListEvent as JSDOM.MediaQueryListEvent,
+        JSDOM.Generated.MediaQueryListEventInit as JSDOM.MediaQueryListEventInit,
+        JSDOM.Generated.MediaRecorder as JSDOM.MediaRecorder,
+        JSDOM.Generated.MediaRecorderOptions as JSDOM.MediaRecorderOptions,
+        JSDOM.Generated.MediaSession as JSDOM.MediaSession,
+        JSDOM.Generated.MediaSessionActionDetails as JSDOM.MediaSessionActionDetails,
+        JSDOM.Generated.MediaSessionActionHandler as JSDOM.MediaSessionActionHandler,
+        JSDOM.Generated.MediaSettingsRange as JSDOM.MediaSettingsRange,
+        JSDOM.Generated.MediaSource as JSDOM.MediaSource,
+        JSDOM.Generated.MediaSourceHandle as JSDOM.MediaSourceHandle,
+        JSDOM.Generated.MediaStream as JSDOM.MediaStream,
+        JSDOM.Generated.MediaStreamAudioDestinationNode as JSDOM.MediaStreamAudioDestinationNode,
+        JSDOM.Generated.MediaStreamAudioSourceNode as JSDOM.MediaStreamAudioSourceNode,
+        JSDOM.Generated.MediaStreamAudioSourceOptions as JSDOM.MediaStreamAudioSourceOptions,
+        JSDOM.Generated.MediaStreamConstraints as JSDOM.MediaStreamConstraints,
+        JSDOM.Generated.MediaStreamTrack as JSDOM.MediaStreamTrack,
+        JSDOM.Generated.MediaStreamTrackEvent as JSDOM.MediaStreamTrackEvent,
+        JSDOM.Generated.MediaStreamTrackEventInit as JSDOM.MediaStreamTrackEventInit,
+        JSDOM.Generated.MediaStreamTrackHandle as JSDOM.MediaStreamTrackHandle,
+        JSDOM.Generated.MediaStreamTrackProcessor as JSDOM.MediaStreamTrackProcessor,
+        JSDOM.Generated.MediaStreamTrackProcessorInit as JSDOM.MediaStreamTrackProcessorInit,
+        JSDOM.Generated.MediaTrackCapabilities as JSDOM.MediaTrackCapabilities,
+        JSDOM.Generated.MediaTrackConstraintSet as JSDOM.MediaTrackConstraintSet,
+        JSDOM.Generated.MediaTrackConstraints as JSDOM.MediaTrackConstraints,
+        JSDOM.Generated.MediaTrackSettings as JSDOM.MediaTrackSettings,
+        JSDOM.Generated.MediaTrackSupportedConstraints as JSDOM.MediaTrackSupportedConstraints,
+        JSDOM.Generated.MessageChannel as JSDOM.MessageChannel,
+        JSDOM.Generated.MessageEvent as JSDOM.MessageEvent,
+        JSDOM.Generated.MessageEventInit as JSDOM.MessageEventInit,
+        JSDOM.Generated.MessageEventTarget as JSDOM.MessageEventTarget,
+        JSDOM.Generated.MessagePort as JSDOM.MessagePort,
+        JSDOM.Generated.MimeType as JSDOM.MimeType,
+        JSDOM.Generated.MimeTypeArray as JSDOM.MimeTypeArray,
+        JSDOM.Generated.MouseEvent as JSDOM.MouseEvent,
+        JSDOM.Generated.MouseEventInit as JSDOM.MouseEventInit,
+        JSDOM.Generated.MultiCacheQueryOptions as JSDOM.MultiCacheQueryOptions,
+        JSDOM.Generated.MutationCallback as JSDOM.MutationCallback,
+        JSDOM.Generated.MutationObserver as JSDOM.MutationObserver,
+        JSDOM.Generated.MutationObserverInit as JSDOM.MutationObserverInit,
+        JSDOM.Generated.MutationRecord as JSDOM.MutationRecord,
+        JSDOM.Generated.NamedNodeMap as JSDOM.NamedNodeMap,
+        JSDOM.Generated.NavigateEvent as JSDOM.NavigateEvent,
+        JSDOM.Generated.NavigateEventInit as JSDOM.NavigateEventInit,
+        JSDOM.Generated.Navigation as JSDOM.Navigation,
+        JSDOM.Generated.NavigationActivation as JSDOM.NavigationActivation,
+        JSDOM.Generated.NavigationCurrentEntryChangeEvent as JSDOM.NavigationCurrentEntryChangeEvent,
+        JSDOM.Generated.NavigationCurrentEntryChangeEventInit as JSDOM.NavigationCurrentEntryChangeEventInit,
+        JSDOM.Generated.NavigationDestination as JSDOM.NavigationDestination,
+        JSDOM.Generated.NavigationEvent as JSDOM.NavigationEvent,
+        JSDOM.Generated.NavigationHistoryEntry as JSDOM.NavigationHistoryEntry,
+        JSDOM.Generated.NavigationInterceptHandler as JSDOM.NavigationInterceptHandler,
+        JSDOM.Generated.NavigationInterceptOptions as JSDOM.NavigationInterceptOptions,
+        JSDOM.Generated.NavigationNavigateOptions as JSDOM.NavigationNavigateOptions,
+        JSDOM.Generated.NavigationOptions as JSDOM.NavigationOptions,
+        JSDOM.Generated.NavigationPrecommitController as JSDOM.NavigationPrecommitController,
+        JSDOM.Generated.NavigationPrecommitHandler as JSDOM.NavigationPrecommitHandler,
+        JSDOM.Generated.NavigationPreloadManager as JSDOM.NavigationPreloadManager,
+        JSDOM.Generated.NavigationPreloadState as JSDOM.NavigationPreloadState,
+        JSDOM.Generated.NavigationReloadOptions as JSDOM.NavigationReloadOptions,
+        JSDOM.Generated.NavigationResult as JSDOM.NavigationResult,
+        JSDOM.Generated.NavigationTransition as JSDOM.NavigationTransition,
+        JSDOM.Generated.NavigationUpdateCurrentEntryOptions as JSDOM.NavigationUpdateCurrentEntryOptions,
+        JSDOM.Generated.Navigator as JSDOM.Navigator,
+        JSDOM.Generated.NavigatorAutomationInformation as JSDOM.NavigatorAutomationInformation,
+        JSDOM.Generated.NavigatorBadge as JSDOM.NavigatorBadge,
+        JSDOM.Generated.NavigatorConcurrentHardware as JSDOM.NavigatorConcurrentHardware,
+        JSDOM.Generated.NavigatorContentUtils as JSDOM.NavigatorContentUtils,
+        JSDOM.Generated.NavigatorCookies as JSDOM.NavigatorCookies,
+        JSDOM.Generated.NavigatorGPU as JSDOM.NavigatorGPU,
+        JSDOM.Generated.NavigatorID as JSDOM.NavigatorID,
+        JSDOM.Generated.NavigatorLanguage as JSDOM.NavigatorLanguage,
+        JSDOM.Generated.NavigatorLocks as JSDOM.NavigatorLocks,
+        JSDOM.Generated.NavigatorLogin as JSDOM.NavigatorLogin,
+        JSDOM.Generated.NavigatorOnLine as JSDOM.NavigatorOnLine,
+        JSDOM.Generated.NavigatorPlugins as JSDOM.NavigatorPlugins,
+        JSDOM.Generated.NavigatorStorage as JSDOM.NavigatorStorage,
+        JSDOM.Generated.Node as JSDOM.Node,
+        JSDOM.Generated.NodeFilter as JSDOM.NodeFilter,
+        JSDOM.Generated.NodeIterator as JSDOM.NodeIterator,
+        JSDOM.Generated.NodeList as JSDOM.NodeList,
+        JSDOM.Generated.NonDocumentTypeChildNode as JSDOM.NonDocumentTypeChildNode,
+        JSDOM.Generated.NonElementParentNode as JSDOM.NonElementParentNode,
+        JSDOM.Generated.Notification as JSDOM.Notification,
+        JSDOM.Generated.NotificationAction as JSDOM.NotificationAction,
+        JSDOM.Generated.NotificationEvent as JSDOM.NotificationEvent,
+        JSDOM.Generated.NotificationEventInit as JSDOM.NotificationEventInit,
+        JSDOM.Generated.NotificationOptions as JSDOM.NotificationOptions,
+        JSDOM.Generated.NotificationPermissionCallback as JSDOM.NotificationPermissionCallback,
+        JSDOM.Generated.OES_draw_buffers_indexed as JSDOM.OES_draw_buffers_indexed,
+        JSDOM.Generated.OES_element_index_uint as JSDOM.OES_element_index_uint,
+        JSDOM.Generated.OES_fbo_render_mipmap as JSDOM.OES_fbo_render_mipmap,
+        JSDOM.Generated.OES_standard_derivatives as JSDOM.OES_standard_derivatives,
+        JSDOM.Generated.OES_texture_float as JSDOM.OES_texture_float,
+        JSDOM.Generated.OES_texture_float_linear as JSDOM.OES_texture_float_linear,
+        JSDOM.Generated.OES_texture_half_float as JSDOM.OES_texture_half_float,
+        JSDOM.Generated.OES_texture_half_float_linear as JSDOM.OES_texture_half_float_linear,
+        JSDOM.Generated.OES_vertex_array_object as JSDOM.OES_vertex_array_object,
+        JSDOM.Generated.OTPCredentialRequestOptions as JSDOM.OTPCredentialRequestOptions,
+        JSDOM.Generated.OVR_multiview2 as JSDOM.OVR_multiview2,
+        JSDOM.Generated.OfflineAudioCompletionEvent as JSDOM.OfflineAudioCompletionEvent,
+        JSDOM.Generated.OfflineAudioCompletionEventInit as JSDOM.OfflineAudioCompletionEventInit,
+        JSDOM.Generated.OfflineAudioContext as JSDOM.OfflineAudioContext,
+        JSDOM.Generated.OfflineAudioContextOptions as JSDOM.OfflineAudioContextOptions,
+        JSDOM.Generated.OffscreenCanvas as JSDOM.OffscreenCanvas,
+        JSDOM.Generated.OffscreenCanvasRenderingContext2D as JSDOM.OffscreenCanvasRenderingContext2D,
+        JSDOM.Generated.OptionalEffectTiming as JSDOM.OptionalEffectTiming,
+        JSDOM.Generated.OpusEncoderConfig as JSDOM.OpusEncoderConfig,
+        JSDOM.Generated.Origin as JSDOM.Origin,
+        JSDOM.Generated.OscillatorNode as JSDOM.OscillatorNode,
+        JSDOM.Generated.OscillatorOptions as JSDOM.OscillatorOptions,
+        JSDOM.Generated.OverconstrainedError as JSDOM.OverconstrainedError,
+        JSDOM.Generated.PageRevealEvent as JSDOM.PageRevealEvent,
+        JSDOM.Generated.PageRevealEventInit as JSDOM.PageRevealEventInit,
+        JSDOM.Generated.PageSwapEvent as JSDOM.PageSwapEvent,
+        JSDOM.Generated.PageSwapEventInit as JSDOM.PageSwapEventInit,
+        JSDOM.Generated.PageTransitionEvent as JSDOM.PageTransitionEvent,
+        JSDOM.Generated.PageTransitionEventInit as JSDOM.PageTransitionEventInit,
+        JSDOM.Generated.PaintTimingMixin as JSDOM.PaintTimingMixin,
+        JSDOM.Generated.PannerNode as JSDOM.PannerNode,
+        JSDOM.Generated.PannerOptions as JSDOM.PannerOptions,
+        JSDOM.Generated.ParentNode as JSDOM.ParentNode,
+        JSDOM.Generated.ParseHTMLUnsafeOptions as JSDOM.ParseHTMLUnsafeOptions,
+        JSDOM.Generated.PasswordCredential as JSDOM.PasswordCredential,
+        JSDOM.Generated.PasswordCredentialData as JSDOM.PasswordCredentialData,
+        JSDOM.Generated.Path2D as JSDOM.Path2D,
+        JSDOM.Generated.PayerErrors as JSDOM.PayerErrors,
+        JSDOM.Generated.PaymentCompleteDetails as JSDOM.PaymentCompleteDetails,
+        JSDOM.Generated.PaymentCredentialInstrument as JSDOM.PaymentCredentialInstrument,
+        JSDOM.Generated.PaymentCurrencyAmount as JSDOM.PaymentCurrencyAmount,
+        JSDOM.Generated.PaymentDetailsBase as JSDOM.PaymentDetailsBase,
+        JSDOM.Generated.PaymentDetailsInit as JSDOM.PaymentDetailsInit,
+        JSDOM.Generated.PaymentDetailsModifier as JSDOM.PaymentDetailsModifier,
+        JSDOM.Generated.PaymentDetailsUpdate as JSDOM.PaymentDetailsUpdate,
+        JSDOM.Generated.PaymentEntityLogo as JSDOM.PaymentEntityLogo,
+        JSDOM.Generated.PaymentItem as JSDOM.PaymentItem,
+        JSDOM.Generated.PaymentMethodChangeEvent as JSDOM.PaymentMethodChangeEvent,
+        JSDOM.Generated.PaymentMethodChangeEventInit as JSDOM.PaymentMethodChangeEventInit,
+        JSDOM.Generated.PaymentMethodData as JSDOM.PaymentMethodData,
+        JSDOM.Generated.PaymentOptions as JSDOM.PaymentOptions,
+        JSDOM.Generated.PaymentRequest as JSDOM.PaymentRequest,
+        JSDOM.Generated.PaymentRequestUpdateEvent as JSDOM.PaymentRequestUpdateEvent,
+        JSDOM.Generated.PaymentRequestUpdateEventInit as JSDOM.PaymentRequestUpdateEventInit,
+        JSDOM.Generated.PaymentResponse as JSDOM.PaymentResponse,
+        JSDOM.Generated.PaymentShippingOption as JSDOM.PaymentShippingOption,
+        JSDOM.Generated.PaymentValidationErrors as JSDOM.PaymentValidationErrors,
+        JSDOM.Generated.Performance as JSDOM.Performance,
+        JSDOM.Generated.PerformanceEntry as JSDOM.PerformanceEntry,
+        JSDOM.Generated.PerformanceEventTiming as JSDOM.PerformanceEventTiming,
+        JSDOM.Generated.PerformanceMark as JSDOM.PerformanceMark,
+        JSDOM.Generated.PerformanceMarkOptions as JSDOM.PerformanceMarkOptions,
+        JSDOM.Generated.PerformanceMeasure as JSDOM.PerformanceMeasure,
+        JSDOM.Generated.PerformanceMeasureOptions as JSDOM.PerformanceMeasureOptions,
+        JSDOM.Generated.PerformanceNavigation as JSDOM.PerformanceNavigation,
+        JSDOM.Generated.PerformanceNavigationTiming as JSDOM.PerformanceNavigationTiming,
+        JSDOM.Generated.PerformanceObserver as JSDOM.PerformanceObserver,
+        JSDOM.Generated.PerformanceObserverCallback as JSDOM.PerformanceObserverCallback,
+        JSDOM.Generated.PerformanceObserverCallbackOptions as JSDOM.PerformanceObserverCallbackOptions,
+        JSDOM.Generated.PerformanceObserverEntryList as JSDOM.PerformanceObserverEntryList,
+        JSDOM.Generated.PerformanceObserverInit as JSDOM.PerformanceObserverInit,
+        JSDOM.Generated.PerformancePaintTiming as JSDOM.PerformancePaintTiming,
+        JSDOM.Generated.PerformanceResourceTiming as JSDOM.PerformanceResourceTiming,
+        JSDOM.Generated.PerformanceServerTiming as JSDOM.PerformanceServerTiming,
+        JSDOM.Generated.PerformanceTiming as JSDOM.PerformanceTiming,
+        JSDOM.Generated.PeriodicWave as JSDOM.PeriodicWave,
+        JSDOM.Generated.PeriodicWaveConstraints as JSDOM.PeriodicWaveConstraints,
+        JSDOM.Generated.PeriodicWaveOptions as JSDOM.PeriodicWaveOptions,
+        JSDOM.Generated.PermissionStatus as JSDOM.PermissionStatus,
+        JSDOM.Generated.Permissions as JSDOM.Permissions,
+        JSDOM.Generated.PhotoCapabilities as JSDOM.PhotoCapabilities,
+        JSDOM.Generated.PhotoSettings as JSDOM.PhotoSettings,
+        JSDOM.Generated.PictureInPictureEvent as JSDOM.PictureInPictureEvent,
+        JSDOM.Generated.PictureInPictureEventInit as JSDOM.PictureInPictureEventInit,
+        JSDOM.Generated.PictureInPictureWindow as JSDOM.PictureInPictureWindow,
+        JSDOM.Generated.PlaneLayout as JSDOM.PlaneLayout,
+        JSDOM.Generated.Plugin as JSDOM.Plugin,
+        JSDOM.Generated.PluginArray as JSDOM.PluginArray,
+        JSDOM.Generated.Point2D as JSDOM.Point2D,
+        JSDOM.Generated.PointerEvent as JSDOM.PointerEvent,
+        JSDOM.Generated.PointerEventInit as JSDOM.PointerEventInit,
+        JSDOM.Generated.PointerLockOptions as JSDOM.PointerLockOptions,
+        JSDOM.Generated.PopStateEvent as JSDOM.PopStateEvent,
+        JSDOM.Generated.PopStateEventInit as JSDOM.PopStateEventInit,
+        JSDOM.Generated.PopoverTargetAttributes as JSDOM.PopoverTargetAttributes,
+        JSDOM.Generated.PositionCallback as JSDOM.PositionCallback,
+        JSDOM.Generated.PositionErrorCallback as JSDOM.PositionErrorCallback,
+        JSDOM.Generated.PositionOptions as JSDOM.PositionOptions,
+        JSDOM.Generated.PrivateToken as JSDOM.PrivateToken,
+        JSDOM.Generated.ProcessingInstruction as JSDOM.ProcessingInstruction,
+        JSDOM.Generated.ProgressEvent as JSDOM.ProgressEvent,
+        JSDOM.Generated.ProgressEventInit as JSDOM.ProgressEventInit,
+        JSDOM.Generated.PromiseRejectionEvent as JSDOM.PromiseRejectionEvent,
+        JSDOM.Generated.PromiseRejectionEventInit as JSDOM.PromiseRejectionEventInit,
+        JSDOM.Generated.PropertyDefinition as JSDOM.PropertyDefinition,
+        JSDOM.Generated.PublicKeyCredential as JSDOM.PublicKeyCredential,
+        JSDOM.Generated.PublicKeyCredentialCreationOptions as JSDOM.PublicKeyCredentialCreationOptions,
+        JSDOM.Generated.PublicKeyCredentialCreationOptionsJSON as JSDOM.PublicKeyCredentialCreationOptionsJSON,
+        JSDOM.Generated.PublicKeyCredentialDescriptor as JSDOM.PublicKeyCredentialDescriptor,
+        JSDOM.Generated.PublicKeyCredentialDescriptorJSON as JSDOM.PublicKeyCredentialDescriptorJSON,
+        JSDOM.Generated.PublicKeyCredentialEntity as JSDOM.PublicKeyCredentialEntity,
+        JSDOM.Generated.PublicKeyCredentialParameters as JSDOM.PublicKeyCredentialParameters,
+        JSDOM.Generated.PublicKeyCredentialRequestOptions as JSDOM.PublicKeyCredentialRequestOptions,
+        JSDOM.Generated.PublicKeyCredentialRequestOptionsJSON as JSDOM.PublicKeyCredentialRequestOptionsJSON,
+        JSDOM.Generated.PublicKeyCredentialRpEntity as JSDOM.PublicKeyCredentialRpEntity,
+        JSDOM.Generated.PublicKeyCredentialUserEntity as JSDOM.PublicKeyCredentialUserEntity,
+        JSDOM.Generated.PublicKeyCredentialUserEntityJSON as JSDOM.PublicKeyCredentialUserEntityJSON,
+        JSDOM.Generated.PushEvent as JSDOM.PushEvent,
+        JSDOM.Generated.PushEventInit as JSDOM.PushEventInit,
+        JSDOM.Generated.PushManager as JSDOM.PushManager,
+        JSDOM.Generated.PushManagerAttribute as JSDOM.PushManagerAttribute,
+        JSDOM.Generated.PushMessageData as JSDOM.PushMessageData,
+        JSDOM.Generated.PushSubscription as JSDOM.PushSubscription,
+        JSDOM.Generated.PushSubscriptionChangeEvent as JSDOM.PushSubscriptionChangeEvent,
+        JSDOM.Generated.PushSubscriptionChangeEventInit as JSDOM.PushSubscriptionChangeEventInit,
+        JSDOM.Generated.PushSubscriptionJSON as JSDOM.PushSubscriptionJSON,
+        JSDOM.Generated.PushSubscriptionKeys as JSDOM.PushSubscriptionKeys,
+        JSDOM.Generated.PushSubscriptionOptions as JSDOM.PushSubscriptionOptions,
+        JSDOM.Generated.PushSubscriptionOptionsInit as JSDOM.PushSubscriptionOptionsInit,
+        JSDOM.Generated.QueuingStrategy as JSDOM.QueuingStrategy,
+        JSDOM.Generated.QueuingStrategyInit as JSDOM.QueuingStrategyInit,
+        JSDOM.Generated.QueuingStrategySize as JSDOM.QueuingStrategySize,
+        JSDOM.Generated.RTCAnswerOptions as JSDOM.RTCAnswerOptions,
+        JSDOM.Generated.RTCCertificate as JSDOM.RTCCertificate,
+        JSDOM.Generated.RTCConfiguration as JSDOM.RTCConfiguration,
+        JSDOM.Generated.RTCDTMFSender as JSDOM.RTCDTMFSender,
+        JSDOM.Generated.RTCDTMFToneChangeEvent as JSDOM.RTCDTMFToneChangeEvent,
+        JSDOM.Generated.RTCDTMFToneChangeEventInit as JSDOM.RTCDTMFToneChangeEventInit,
+        JSDOM.Generated.RTCDataChannel as JSDOM.RTCDataChannel,
+        JSDOM.Generated.RTCDataChannelEvent as JSDOM.RTCDataChannelEvent,
+        JSDOM.Generated.RTCDataChannelEventInit as JSDOM.RTCDataChannelEventInit,
+        JSDOM.Generated.RTCDataChannelInit as JSDOM.RTCDataChannelInit,
+        JSDOM.Generated.RTCDtlsFingerprint as JSDOM.RTCDtlsFingerprint,
+        JSDOM.Generated.RTCDtlsTransport as JSDOM.RTCDtlsTransport,
+        JSDOM.Generated.RTCEncodedAudioFrame as JSDOM.RTCEncodedAudioFrame,
+        JSDOM.Generated.RTCEncodedAudioFrameMetadata as JSDOM.RTCEncodedAudioFrameMetadata,
+        JSDOM.Generated.RTCEncodedAudioFrameOptions as JSDOM.RTCEncodedAudioFrameOptions,
+        JSDOM.Generated.RTCEncodedFrameMetadata as JSDOM.RTCEncodedFrameMetadata,
+        JSDOM.Generated.RTCEncodedVideoFrame as JSDOM.RTCEncodedVideoFrame,
+        JSDOM.Generated.RTCEncodedVideoFrameMetadata as JSDOM.RTCEncodedVideoFrameMetadata,
+        JSDOM.Generated.RTCEncodedVideoFrameOptions as JSDOM.RTCEncodedVideoFrameOptions,
+        JSDOM.Generated.RTCError as JSDOM.RTCError,
+        JSDOM.Generated.RTCErrorEvent as JSDOM.RTCErrorEvent,
+        JSDOM.Generated.RTCErrorEventInit as JSDOM.RTCErrorEventInit,
+        JSDOM.Generated.RTCErrorInit as JSDOM.RTCErrorInit,
+        JSDOM.Generated.RTCIceCandidate as JSDOM.RTCIceCandidate,
+        JSDOM.Generated.RTCIceCandidateInit as JSDOM.RTCIceCandidateInit,
+        JSDOM.Generated.RTCIceCandidatePair as JSDOM.RTCIceCandidatePair,
+        JSDOM.Generated.RTCIceServer as JSDOM.RTCIceServer,
+        JSDOM.Generated.RTCIceTransport as JSDOM.RTCIceTransport,
+        JSDOM.Generated.RTCLocalIceCandidateInit as JSDOM.RTCLocalIceCandidateInit,
+        JSDOM.Generated.RTCLocalSessionDescriptionInit as JSDOM.RTCLocalSessionDescriptionInit,
+        JSDOM.Generated.RTCOfferAnswerOptions as JSDOM.RTCOfferAnswerOptions,
+        JSDOM.Generated.RTCOfferOptions as JSDOM.RTCOfferOptions,
+        JSDOM.Generated.RTCPeerConnection as JSDOM.RTCPeerConnection,
+        JSDOM.Generated.RTCPeerConnectionErrorCallback as JSDOM.RTCPeerConnectionErrorCallback,
+        JSDOM.Generated.RTCPeerConnectionIceErrorEvent as JSDOM.RTCPeerConnectionIceErrorEvent,
+        JSDOM.Generated.RTCPeerConnectionIceErrorEventInit as JSDOM.RTCPeerConnectionIceErrorEventInit,
+        JSDOM.Generated.RTCPeerConnectionIceEvent as JSDOM.RTCPeerConnectionIceEvent,
+        JSDOM.Generated.RTCPeerConnectionIceEventInit as JSDOM.RTCPeerConnectionIceEventInit,
+        JSDOM.Generated.RTCRtcpParameters as JSDOM.RTCRtcpParameters,
+        JSDOM.Generated.RTCRtpCapabilities as JSDOM.RTCRtpCapabilities,
+        JSDOM.Generated.RTCRtpCodec as JSDOM.RTCRtpCodec,
+        JSDOM.Generated.RTCRtpCodecParameters as JSDOM.RTCRtpCodecParameters,
+        JSDOM.Generated.RTCRtpCodingParameters as JSDOM.RTCRtpCodingParameters,
+        JSDOM.Generated.RTCRtpContributingSource as JSDOM.RTCRtpContributingSource,
+        JSDOM.Generated.RTCRtpEncodingParameters as JSDOM.RTCRtpEncodingParameters,
+        JSDOM.Generated.RTCRtpHeaderExtensionCapability as JSDOM.RTCRtpHeaderExtensionCapability,
+        JSDOM.Generated.RTCRtpHeaderExtensionParameters as JSDOM.RTCRtpHeaderExtensionParameters,
+        JSDOM.Generated.RTCRtpParameters as JSDOM.RTCRtpParameters,
+        JSDOM.Generated.RTCRtpReceiveParameters as JSDOM.RTCRtpReceiveParameters,
+        JSDOM.Generated.RTCRtpReceiver as JSDOM.RTCRtpReceiver,
+        JSDOM.Generated.RTCRtpSFrameDecryptor as JSDOM.RTCRtpSFrameDecryptor,
+        JSDOM.Generated.RTCRtpSFrameEncryptor as JSDOM.RTCRtpSFrameEncryptor,
+        JSDOM.Generated.RTCRtpScriptTransform as JSDOM.RTCRtpScriptTransform,
+        JSDOM.Generated.RTCRtpScriptTransformer as JSDOM.RTCRtpScriptTransformer,
+        JSDOM.Generated.RTCRtpSendParameters as JSDOM.RTCRtpSendParameters,
+        JSDOM.Generated.RTCRtpSender as JSDOM.RTCRtpSender,
+        JSDOM.Generated.RTCRtpSynchronizationSource as JSDOM.RTCRtpSynchronizationSource,
+        JSDOM.Generated.RTCRtpTransceiver as JSDOM.RTCRtpTransceiver,
+        JSDOM.Generated.RTCRtpTransceiverInit as JSDOM.RTCRtpTransceiverInit,
+        JSDOM.Generated.RTCSctpTransport as JSDOM.RTCSctpTransport,
+        JSDOM.Generated.RTCSessionDescription as JSDOM.RTCSessionDescription,
+        JSDOM.Generated.RTCSessionDescriptionCallback as JSDOM.RTCSessionDescriptionCallback,
+        JSDOM.Generated.RTCSessionDescriptionInit as JSDOM.RTCSessionDescriptionInit,
+        JSDOM.Generated.RTCSetParameterOptions as JSDOM.RTCSetParameterOptions,
+        JSDOM.Generated.RTCStatsReport as JSDOM.RTCStatsReport,
+        JSDOM.Generated.RTCTrackEvent as JSDOM.RTCTrackEvent,
+        JSDOM.Generated.RTCTrackEventInit as JSDOM.RTCTrackEventInit,
+        JSDOM.Generated.RTCTransformEvent as JSDOM.RTCTransformEvent,
+        JSDOM.Generated.RadioNodeList as JSDOM.RadioNodeList,
+        JSDOM.Generated.Range as JSDOM.Range,
+        JSDOM.Generated.ReadableByteStreamController as JSDOM.ReadableByteStreamController,
+        JSDOM.Generated.ReadableStream as JSDOM.ReadableStream,
+        JSDOM.Generated.ReadableStreamBYOBReader as JSDOM.ReadableStreamBYOBReader,
+        JSDOM.Generated.ReadableStreamBYOBReaderReadOptions as JSDOM.ReadableStreamBYOBReaderReadOptions,
+        JSDOM.Generated.ReadableStreamBYOBRequest as JSDOM.ReadableStreamBYOBRequest,
+        JSDOM.Generated.ReadableStreamDefaultController as JSDOM.ReadableStreamDefaultController,
+        JSDOM.Generated.ReadableStreamDefaultReader as JSDOM.ReadableStreamDefaultReader,
+        JSDOM.Generated.ReadableStreamGenericReader as JSDOM.ReadableStreamGenericReader,
+        JSDOM.Generated.ReadableStreamGetReaderOptions as JSDOM.ReadableStreamGetReaderOptions,
+        JSDOM.Generated.ReadableStreamReadResult as JSDOM.ReadableStreamReadResult,
+        JSDOM.Generated.ReadableWritablePair as JSDOM.ReadableWritablePair,
+        JSDOM.Generated.RegistrationOptions as JSDOM.RegistrationOptions,
+        JSDOM.Generated.RemotePlayback as JSDOM.RemotePlayback,
+        JSDOM.Generated.RemotePlaybackAvailabilityCallback as JSDOM.RemotePlaybackAvailabilityCallback,
+        JSDOM.Generated.Report as JSDOM.Report,
+        JSDOM.Generated.ReportBody as JSDOM.ReportBody,
+        JSDOM.Generated.ReportingObserver as JSDOM.ReportingObserver,
+        JSDOM.Generated.ReportingObserverCallback as JSDOM.ReportingObserverCallback,
+        JSDOM.Generated.ReportingObserverOptions as JSDOM.ReportingObserverOptions,
+        JSDOM.Generated.Request as JSDOM.Request,
+        JSDOM.Generated.RequestInit as JSDOM.RequestInit,
+        JSDOM.Generated.ResizeObserver as JSDOM.ResizeObserver,
+        JSDOM.Generated.ResizeObserverCallback as JSDOM.ResizeObserverCallback,
+        JSDOM.Generated.ResizeObserverEntry as JSDOM.ResizeObserverEntry,
+        JSDOM.Generated.ResizeObserverOptions as JSDOM.ResizeObserverOptions,
+        JSDOM.Generated.ResizeObserverSize as JSDOM.ResizeObserverSize,
+        JSDOM.Generated.Response as JSDOM.Response,
+        JSDOM.Generated.ResponseInit as JSDOM.ResponseInit,
+        JSDOM.Generated.RouterCondition as JSDOM.RouterCondition,
+        JSDOM.Generated.RouterRule as JSDOM.RouterRule,
+        JSDOM.Generated.RouterSourceDict as JSDOM.RouterSourceDict,
+        JSDOM.Generated.RsaOtherPrimesInfo as JSDOM.RsaOtherPrimesInfo,
+        JSDOM.Generated.SVGAElement as JSDOM.SVGAElement,
+        JSDOM.Generated.SVGAngle as JSDOM.SVGAngle,
+        JSDOM.Generated.SVGAnimateElement as JSDOM.SVGAnimateElement,
+        JSDOM.Generated.SVGAnimateMotionElement as JSDOM.SVGAnimateMotionElement,
+        JSDOM.Generated.SVGAnimateTransformElement as JSDOM.SVGAnimateTransformElement,
+        JSDOM.Generated.SVGAnimatedAngle as JSDOM.SVGAnimatedAngle,
+        JSDOM.Generated.SVGAnimatedBoolean as JSDOM.SVGAnimatedBoolean,
+        JSDOM.Generated.SVGAnimatedEnumeration as JSDOM.SVGAnimatedEnumeration,
+        JSDOM.Generated.SVGAnimatedInteger as JSDOM.SVGAnimatedInteger,
+        JSDOM.Generated.SVGAnimatedLength as JSDOM.SVGAnimatedLength,
+        JSDOM.Generated.SVGAnimatedLengthList as JSDOM.SVGAnimatedLengthList,
+        JSDOM.Generated.SVGAnimatedNumber as JSDOM.SVGAnimatedNumber,
+        JSDOM.Generated.SVGAnimatedNumberList as JSDOM.SVGAnimatedNumberList,
+        JSDOM.Generated.SVGAnimatedPoints as JSDOM.SVGAnimatedPoints,
+        JSDOM.Generated.SVGAnimatedPreserveAspectRatio as JSDOM.SVGAnimatedPreserveAspectRatio,
+        JSDOM.Generated.SVGAnimatedRect as JSDOM.SVGAnimatedRect,
+        JSDOM.Generated.SVGAnimatedString as JSDOM.SVGAnimatedString,
+        JSDOM.Generated.SVGAnimatedTransformList as JSDOM.SVGAnimatedTransformList,
+        JSDOM.Generated.SVGAnimationElement as JSDOM.SVGAnimationElement,
+        JSDOM.Generated.SVGBoundingBoxOptions as JSDOM.SVGBoundingBoxOptions,
+        JSDOM.Generated.SVGCircleElement as JSDOM.SVGCircleElement,
+        JSDOM.Generated.SVGClipPathElement as JSDOM.SVGClipPathElement,
+        JSDOM.Generated.SVGComponentTransferFunctionElement as JSDOM.SVGComponentTransferFunctionElement,
+        JSDOM.Generated.SVGDefsElement as JSDOM.SVGDefsElement,
+        JSDOM.Generated.SVGDescElement as JSDOM.SVGDescElement,
+        JSDOM.Generated.SVGElement as JSDOM.SVGElement,
+        JSDOM.Generated.SVGEllipseElement as JSDOM.SVGEllipseElement,
+        JSDOM.Generated.SVGFEBlendElement as JSDOM.SVGFEBlendElement,
+        JSDOM.Generated.SVGFEColorMatrixElement as JSDOM.SVGFEColorMatrixElement,
+        JSDOM.Generated.SVGFEComponentTransferElement as JSDOM.SVGFEComponentTransferElement,
+        JSDOM.Generated.SVGFECompositeElement as JSDOM.SVGFECompositeElement,
+        JSDOM.Generated.SVGFEConvolveMatrixElement as JSDOM.SVGFEConvolveMatrixElement,
+        JSDOM.Generated.SVGFEDiffuseLightingElement as JSDOM.SVGFEDiffuseLightingElement,
+        JSDOM.Generated.SVGFEDisplacementMapElement as JSDOM.SVGFEDisplacementMapElement,
+        JSDOM.Generated.SVGFEDistantLightElement as JSDOM.SVGFEDistantLightElement,
+        JSDOM.Generated.SVGFEDropShadowElement as JSDOM.SVGFEDropShadowElement,
+        JSDOM.Generated.SVGFEFloodElement as JSDOM.SVGFEFloodElement,
+        JSDOM.Generated.SVGFEFuncAElement as JSDOM.SVGFEFuncAElement,
+        JSDOM.Generated.SVGFEFuncBElement as JSDOM.SVGFEFuncBElement,
+        JSDOM.Generated.SVGFEFuncGElement as JSDOM.SVGFEFuncGElement,
+        JSDOM.Generated.SVGFEFuncRElement as JSDOM.SVGFEFuncRElement,
+        JSDOM.Generated.SVGFEGaussianBlurElement as JSDOM.SVGFEGaussianBlurElement,
+        JSDOM.Generated.SVGFEImageElement as JSDOM.SVGFEImageElement,
+        JSDOM.Generated.SVGFEMergeElement as JSDOM.SVGFEMergeElement,
+        JSDOM.Generated.SVGFEMergeNodeElement as JSDOM.SVGFEMergeNodeElement,
+        JSDOM.Generated.SVGFEMorphologyElement as JSDOM.SVGFEMorphologyElement,
+        JSDOM.Generated.SVGFEOffsetElement as JSDOM.SVGFEOffsetElement,
+        JSDOM.Generated.SVGFEPointLightElement as JSDOM.SVGFEPointLightElement,
+        JSDOM.Generated.SVGFESpecularLightingElement as JSDOM.SVGFESpecularLightingElement,
+        JSDOM.Generated.SVGFESpotLightElement as JSDOM.SVGFESpotLightElement,
+        JSDOM.Generated.SVGFETileElement as JSDOM.SVGFETileElement,
+        JSDOM.Generated.SVGFETurbulenceElement as JSDOM.SVGFETurbulenceElement,
+        JSDOM.Generated.SVGFilterElement as JSDOM.SVGFilterElement,
+        JSDOM.Generated.SVGFilterPrimitiveStandardAttributes as JSDOM.SVGFilterPrimitiveStandardAttributes,
+        JSDOM.Generated.SVGFitToViewBox as JSDOM.SVGFitToViewBox,
+        JSDOM.Generated.SVGForeignObjectElement as JSDOM.SVGForeignObjectElement,
+        JSDOM.Generated.SVGGElement as JSDOM.SVGGElement,
+        JSDOM.Generated.SVGGeometryElement as JSDOM.SVGGeometryElement,
+        JSDOM.Generated.SVGGradientElement as JSDOM.SVGGradientElement,
+        JSDOM.Generated.SVGGraphicsElement as JSDOM.SVGGraphicsElement,
+        JSDOM.Generated.SVGImageElement as JSDOM.SVGImageElement,
+        JSDOM.Generated.SVGLength as JSDOM.SVGLength,
+        JSDOM.Generated.SVGLengthList as JSDOM.SVGLengthList,
+        JSDOM.Generated.SVGLineElement as JSDOM.SVGLineElement,
+        JSDOM.Generated.SVGLinearGradientElement as JSDOM.SVGLinearGradientElement,
+        JSDOM.Generated.SVGMPathElement as JSDOM.SVGMPathElement,
+        JSDOM.Generated.SVGMarkerElement as JSDOM.SVGMarkerElement,
+        JSDOM.Generated.SVGMaskElement as JSDOM.SVGMaskElement,
+        JSDOM.Generated.SVGMetadataElement as JSDOM.SVGMetadataElement,
+        JSDOM.Generated.SVGNumber as JSDOM.SVGNumber,
+        JSDOM.Generated.SVGNumberList as JSDOM.SVGNumberList,
+        JSDOM.Generated.SVGPathElement as JSDOM.SVGPathElement,
+        JSDOM.Generated.SVGPatternElement as JSDOM.SVGPatternElement,
+        JSDOM.Generated.SVGPointList as JSDOM.SVGPointList,
+        JSDOM.Generated.SVGPolygonElement as JSDOM.SVGPolygonElement,
+        JSDOM.Generated.SVGPolylineElement as JSDOM.SVGPolylineElement,
+        JSDOM.Generated.SVGPreserveAspectRatio as JSDOM.SVGPreserveAspectRatio,
+        JSDOM.Generated.SVGRadialGradientElement as JSDOM.SVGRadialGradientElement,
+        JSDOM.Generated.SVGRectElement as JSDOM.SVGRectElement,
+        JSDOM.Generated.SVGSVGElement as JSDOM.SVGSVGElement,
+        JSDOM.Generated.SVGScriptElement as JSDOM.SVGScriptElement,
+        JSDOM.Generated.SVGSetElement as JSDOM.SVGSetElement,
+        JSDOM.Generated.SVGStopElement as JSDOM.SVGStopElement,
+        JSDOM.Generated.SVGStringList as JSDOM.SVGStringList,
+        JSDOM.Generated.SVGStyleElement as JSDOM.SVGStyleElement,
+        JSDOM.Generated.SVGSwitchElement as JSDOM.SVGSwitchElement,
+        JSDOM.Generated.SVGSymbolElement as JSDOM.SVGSymbolElement,
+        JSDOM.Generated.SVGTSpanElement as JSDOM.SVGTSpanElement,
+        JSDOM.Generated.SVGTests as JSDOM.SVGTests,
+        JSDOM.Generated.SVGTextContentElement as JSDOM.SVGTextContentElement,
+        JSDOM.Generated.SVGTextElement as JSDOM.SVGTextElement,
+        JSDOM.Generated.SVGTextPathElement as JSDOM.SVGTextPathElement,
+        JSDOM.Generated.SVGTextPositioningElement as JSDOM.SVGTextPositioningElement,
+        JSDOM.Generated.SVGTitleElement as JSDOM.SVGTitleElement,
+        JSDOM.Generated.SVGTransform as JSDOM.SVGTransform,
+        JSDOM.Generated.SVGTransformList as JSDOM.SVGTransformList,
+        JSDOM.Generated.SVGURIReference as JSDOM.SVGURIReference,
+        JSDOM.Generated.SVGUnitTypes as JSDOM.SVGUnitTypes,
+        JSDOM.Generated.SVGUseElement as JSDOM.SVGUseElement,
+        JSDOM.Generated.SVGViewElement as JSDOM.SVGViewElement,
+        JSDOM.Generated.Sanitizer as JSDOM.Sanitizer,
+        JSDOM.Generated.SanitizerAttributeNamespace as JSDOM.SanitizerAttributeNamespace,
+        JSDOM.Generated.SanitizerConfig as JSDOM.SanitizerConfig,
+        JSDOM.Generated.SanitizerElementNamespace as JSDOM.SanitizerElementNamespace,
+        JSDOM.Generated.SanitizerElementNamespaceWithAttributes as JSDOM.SanitizerElementNamespaceWithAttributes,
+        JSDOM.Generated.SanitizerProcessingInstruction as JSDOM.SanitizerProcessingInstruction,
+        JSDOM.Generated.Scheduler as JSDOM.Scheduler,
+        JSDOM.Generated.SchedulerPostTaskCallback as JSDOM.SchedulerPostTaskCallback,
+        JSDOM.Generated.SchedulerPostTaskOptions as JSDOM.SchedulerPostTaskOptions,
+        JSDOM.Generated.Screen as JSDOM.Screen,
+        JSDOM.Generated.ScreenDetailed as JSDOM.ScreenDetailed,
+        JSDOM.Generated.ScreenOrientation as JSDOM.ScreenOrientation,
+        JSDOM.Generated.ScriptProcessorNode as JSDOM.ScriptProcessorNode,
+        JSDOM.Generated.ScrollIntoViewOptions as JSDOM.ScrollIntoViewOptions,
+        JSDOM.Generated.ScrollOptions as JSDOM.ScrollOptions,
+        JSDOM.Generated.ScrollResult as JSDOM.ScrollResult,
+        JSDOM.Generated.ScrollTimeline as JSDOM.ScrollTimeline,
+        JSDOM.Generated.ScrollTimelineOptions as JSDOM.ScrollTimelineOptions,
+        JSDOM.Generated.ScrollToOptions as JSDOM.ScrollToOptions,
+        JSDOM.Generated.SecurityPolicyViolationEvent as JSDOM.SecurityPolicyViolationEvent,
+        JSDOM.Generated.SecurityPolicyViolationEventInit as JSDOM.SecurityPolicyViolationEventInit,
+        JSDOM.Generated.Segment as JSDOM.Segment,
+        JSDOM.Generated.Selection as JSDOM.Selection,
+        JSDOM.Generated.Serial as JSDOM.Serial,
+        JSDOM.Generated.SerialInputSignals as JSDOM.SerialInputSignals,
+        JSDOM.Generated.SerialOptions as JSDOM.SerialOptions,
+        JSDOM.Generated.SerialOutputSignals as JSDOM.SerialOutputSignals,
+        JSDOM.Generated.SerialPort as JSDOM.SerialPort,
+        JSDOM.Generated.SerialPortFilter as JSDOM.SerialPortFilter,
+        JSDOM.Generated.SerialPortInfo as JSDOM.SerialPortInfo,
+        JSDOM.Generated.SerialPortRequestOptions as JSDOM.SerialPortRequestOptions,
+        JSDOM.Generated.ServiceWorker as JSDOM.ServiceWorker,
+        JSDOM.Generated.ServiceWorkerContainer as JSDOM.ServiceWorkerContainer,
+        JSDOM.Generated.ServiceWorkerGlobalScope as JSDOM.ServiceWorkerGlobalScope,
+        JSDOM.Generated.ServiceWorkerRegistration as JSDOM.ServiceWorkerRegistration,
+        JSDOM.Generated.SetHTMLOptions as JSDOM.SetHTMLOptions,
+        JSDOM.Generated.SetHTMLUnsafeOptions as JSDOM.SetHTMLUnsafeOptions,
+        JSDOM.Generated.ShadowRoot as JSDOM.ShadowRoot,
+        JSDOM.Generated.ShadowRootInit as JSDOM.ShadowRootInit,
+        JSDOM.Generated.ShareData as JSDOM.ShareData,
+        JSDOM.Generated.SharedWorker as JSDOM.SharedWorker,
+        JSDOM.Generated.SharedWorkerGlobalScope as JSDOM.SharedWorkerGlobalScope,
+        JSDOM.Generated.SharedWorkerOptions as JSDOM.SharedWorkerOptions,
+        JSDOM.Generated.ShowPopoverOptions as JSDOM.ShowPopoverOptions,
+        JSDOM.Generated.Slottable as JSDOM.Slottable,
+        JSDOM.Generated.SourceBuffer as JSDOM.SourceBuffer,
+        JSDOM.Generated.SourceBufferList as JSDOM.SourceBufferList,
+        JSDOM.Generated.SpeechGrammar as JSDOM.SpeechGrammar,
+        JSDOM.Generated.SpeechGrammarList as JSDOM.SpeechGrammarList,
+        JSDOM.Generated.SpeechRecognition as JSDOM.SpeechRecognition,
+        JSDOM.Generated.SpeechRecognitionAlternative as JSDOM.SpeechRecognitionAlternative,
+        JSDOM.Generated.SpeechRecognitionErrorEvent as JSDOM.SpeechRecognitionErrorEvent,
+        JSDOM.Generated.SpeechRecognitionErrorEventInit as JSDOM.SpeechRecognitionErrorEventInit,
+        JSDOM.Generated.SpeechRecognitionEvent as JSDOM.SpeechRecognitionEvent,
+        JSDOM.Generated.SpeechRecognitionEventInit as JSDOM.SpeechRecognitionEventInit,
+        JSDOM.Generated.SpeechRecognitionOptions as JSDOM.SpeechRecognitionOptions,
+        JSDOM.Generated.SpeechRecognitionPhrase as JSDOM.SpeechRecognitionPhrase,
+        JSDOM.Generated.SpeechRecognitionResult as JSDOM.SpeechRecognitionResult,
+        JSDOM.Generated.SpeechRecognitionResultList as JSDOM.SpeechRecognitionResultList,
+        JSDOM.Generated.SpeechSynthesis as JSDOM.SpeechSynthesis,
+        JSDOM.Generated.SpeechSynthesisErrorEvent as JSDOM.SpeechSynthesisErrorEvent,
+        JSDOM.Generated.SpeechSynthesisErrorEventInit as JSDOM.SpeechSynthesisErrorEventInit,
+        JSDOM.Generated.SpeechSynthesisEvent as JSDOM.SpeechSynthesisEvent,
+        JSDOM.Generated.SpeechSynthesisEventInit as JSDOM.SpeechSynthesisEventInit,
+        JSDOM.Generated.SpeechSynthesisUtterance as JSDOM.SpeechSynthesisUtterance,
+        JSDOM.Generated.SpeechSynthesisVoice as JSDOM.SpeechSynthesisVoice,
+        JSDOM.Generated.StartViewTransitionOptions as JSDOM.StartViewTransitionOptions,
+        JSDOM.Generated.StaticRange as JSDOM.StaticRange,
+        JSDOM.Generated.StaticRangeInit as JSDOM.StaticRangeInit,
+        JSDOM.Generated.StereoPannerNode as JSDOM.StereoPannerNode,
+        JSDOM.Generated.StereoPannerOptions as JSDOM.StereoPannerOptions,
+        JSDOM.Generated.Storage as JSDOM.Storage,
+        JSDOM.Generated.StorageEstimate as JSDOM.StorageEstimate,
+        JSDOM.Generated.StorageEvent as JSDOM.StorageEvent,
+        JSDOM.Generated.StorageEventInit as JSDOM.StorageEventInit,
+        JSDOM.Generated.StorageManager as JSDOM.StorageManager,
+        JSDOM.Generated.StreamPipeOptions as JSDOM.StreamPipeOptions,
+        JSDOM.Generated.StructuredSerializeOptions as JSDOM.StructuredSerializeOptions,
+        JSDOM.Generated.StylePropertyMap as JSDOM.StylePropertyMap,
+        JSDOM.Generated.StylePropertyMapReadOnly as JSDOM.StylePropertyMapReadOnly,
+        JSDOM.Generated.StyleSheet as JSDOM.StyleSheet,
+        JSDOM.Generated.StyleSheetList as JSDOM.StyleSheetList,
+        JSDOM.Generated.SubmitEvent as JSDOM.SubmitEvent,
+        JSDOM.Generated.SubmitEventInit as JSDOM.SubmitEventInit,
+        JSDOM.Generated.SubtleCrypto as JSDOM.SubtleCrypto,
+        JSDOM.Generated.SvcOutputMetadata as JSDOM.SvcOutputMetadata,
+        JSDOM.Generated.TaskController as JSDOM.TaskController,
+        JSDOM.Generated.TaskControllerInit as JSDOM.TaskControllerInit,
+        JSDOM.Generated.TaskPriorityChangeEvent as JSDOM.TaskPriorityChangeEvent,
+        JSDOM.Generated.TaskPriorityChangeEventInit as JSDOM.TaskPriorityChangeEventInit,
+        JSDOM.Generated.TaskSignal as JSDOM.TaskSignal,
+        JSDOM.Generated.TaskSignalAnyInit as JSDOM.TaskSignalAnyInit,
+        JSDOM.Generated.Text as JSDOM.Text,
+        JSDOM.Generated.TextDecodeOptions as JSDOM.TextDecodeOptions,
+        JSDOM.Generated.TextDecoder as JSDOM.TextDecoder,
+        JSDOM.Generated.TextDecoderCommon as JSDOM.TextDecoderCommon,
+        JSDOM.Generated.TextDecoderOptions as JSDOM.TextDecoderOptions,
+        JSDOM.Generated.TextDecoderStream as JSDOM.TextDecoderStream,
+        JSDOM.Generated.TextEncoder as JSDOM.TextEncoder,
+        JSDOM.Generated.TextEncoderCommon as JSDOM.TextEncoderCommon,
+        JSDOM.Generated.TextEncoderEncodeIntoResult as JSDOM.TextEncoderEncodeIntoResult,
+        JSDOM.Generated.TextEncoderStream as JSDOM.TextEncoderStream,
+        JSDOM.Generated.TextEvent as JSDOM.TextEvent,
+        JSDOM.Generated.TextMetrics as JSDOM.TextMetrics,
+        JSDOM.Generated.TextTrack as JSDOM.TextTrack,
+        JSDOM.Generated.TextTrackCue as JSDOM.TextTrackCue,
+        JSDOM.Generated.TextTrackCueList as JSDOM.TextTrackCueList,
+        JSDOM.Generated.TextTrackList as JSDOM.TextTrackList,
+        JSDOM.Generated.TimeRanges as JSDOM.TimeRanges,
+        JSDOM.Generated.TimelineRangeOffset as JSDOM.TimelineRangeOffset,
+        JSDOM.Generated.ToggleEvent as JSDOM.ToggleEvent,
+        JSDOM.Generated.ToggleEventInit as JSDOM.ToggleEventInit,
+        JSDOM.Generated.TogglePopoverOptions as JSDOM.TogglePopoverOptions,
+        JSDOM.Generated.Touch as JSDOM.Touch,
+        JSDOM.Generated.TouchEvent as JSDOM.TouchEvent,
+        JSDOM.Generated.TouchEventInit as JSDOM.TouchEventInit,
+        JSDOM.Generated.TouchInit as JSDOM.TouchInit,
+        JSDOM.Generated.TouchList as JSDOM.TouchList,
+        JSDOM.Generated.TrackEvent as JSDOM.TrackEvent,
+        JSDOM.Generated.TrackEventInit as JSDOM.TrackEventInit,
+        JSDOM.Generated.TransformStream as JSDOM.TransformStream,
+        JSDOM.Generated.TransformStreamDefaultController as JSDOM.TransformStreamDefaultController,
+        JSDOM.Generated.TransitionEvent as JSDOM.TransitionEvent,
+        JSDOM.Generated.TransitionEventInit as JSDOM.TransitionEventInit,
+        JSDOM.Generated.TreeWalker as JSDOM.TreeWalker,
+        JSDOM.Generated.TrustedHTML as JSDOM.TrustedHTML,
+        JSDOM.Generated.TrustedHTMLParserOptions as JSDOM.TrustedHTMLParserOptions,
+        JSDOM.Generated.TrustedScript as JSDOM.TrustedScript,
+        JSDOM.Generated.TrustedScriptURL as JSDOM.TrustedScriptURL,
+        JSDOM.Generated.TrustedTypePolicy as JSDOM.TrustedTypePolicy,
+        JSDOM.Generated.TrustedTypePolicyFactory as JSDOM.TrustedTypePolicyFactory,
+        JSDOM.Generated.TrustedTypePolicyOptions as JSDOM.TrustedTypePolicyOptions,
+        JSDOM.Generated.UIEvent as JSDOM.UIEvent,
+        JSDOM.Generated.UIEventInit as JSDOM.UIEventInit,
+        JSDOM.Generated.ULongRange as JSDOM.ULongRange,
+        JSDOM.Generated.URL as JSDOM.URL,
+        JSDOM.Generated.URLPattern as JSDOM.URLPattern,
+        JSDOM.Generated.URLPatternComponentResult as JSDOM.URLPatternComponentResult,
+        JSDOM.Generated.URLPatternInit as JSDOM.URLPatternInit,
+        JSDOM.Generated.URLPatternOptions as JSDOM.URLPatternOptions,
+        JSDOM.Generated.URLPatternResult as JSDOM.URLPatternResult,
+        JSDOM.Generated.URLSearchParams as JSDOM.URLSearchParams,
+        JSDOM.Generated.UnknownCredentialOptions as JSDOM.UnknownCredentialOptions,
+        JSDOM.Generated.UserActivation as JSDOM.UserActivation,
+        JSDOM.Generated.VTTCue as JSDOM.VTTCue,
+        JSDOM.Generated.VTTRegion as JSDOM.VTTRegion,
+        JSDOM.Generated.ValidityState as JSDOM.ValidityState,
+        JSDOM.Generated.ValidityStateFlags as JSDOM.ValidityStateFlags,
+        JSDOM.Generated.VideoColorSpace as JSDOM.VideoColorSpace,
+        JSDOM.Generated.VideoColorSpaceInit as JSDOM.VideoColorSpaceInit,
+        JSDOM.Generated.VideoConfiguration as JSDOM.VideoConfiguration,
+        JSDOM.Generated.VideoDecoder as JSDOM.VideoDecoder,
+        JSDOM.Generated.VideoDecoderConfig as JSDOM.VideoDecoderConfig,
+        JSDOM.Generated.VideoDecoderInit as JSDOM.VideoDecoderInit,
+        JSDOM.Generated.VideoDecoderSupport as JSDOM.VideoDecoderSupport,
+        JSDOM.Generated.VideoEncoder as JSDOM.VideoEncoder,
+        JSDOM.Generated.VideoEncoderConfig as JSDOM.VideoEncoderConfig,
+        JSDOM.Generated.VideoEncoderEncodeOptions as JSDOM.VideoEncoderEncodeOptions,
+        JSDOM.Generated.VideoEncoderEncodeOptionsForAv1 as JSDOM.VideoEncoderEncodeOptionsForAv1,
+        JSDOM.Generated.VideoEncoderEncodeOptionsForAvc as JSDOM.VideoEncoderEncodeOptionsForAvc,
+        JSDOM.Generated.VideoEncoderEncodeOptionsForHevc as JSDOM.VideoEncoderEncodeOptionsForHevc,
+        JSDOM.Generated.VideoEncoderEncodeOptionsForVp9 as JSDOM.VideoEncoderEncodeOptionsForVp9,
+        JSDOM.Generated.VideoEncoderInit as JSDOM.VideoEncoderInit,
+        JSDOM.Generated.VideoEncoderSupport as JSDOM.VideoEncoderSupport,
+        JSDOM.Generated.VideoFrame as JSDOM.VideoFrame,
+        JSDOM.Generated.VideoFrameBufferInit as JSDOM.VideoFrameBufferInit,
+        JSDOM.Generated.VideoFrameCallbackMetadata as JSDOM.VideoFrameCallbackMetadata,
+        JSDOM.Generated.VideoFrameCopyToOptions as JSDOM.VideoFrameCopyToOptions,
+        JSDOM.Generated.VideoFrameInit as JSDOM.VideoFrameInit,
+        JSDOM.Generated.VideoFrameMetadata as JSDOM.VideoFrameMetadata,
+        JSDOM.Generated.VideoFrameOutputCallback as JSDOM.VideoFrameOutputCallback,
+        JSDOM.Generated.VideoFrameRequestCallback as JSDOM.VideoFrameRequestCallback,
+        JSDOM.Generated.VideoPlaybackQuality as JSDOM.VideoPlaybackQuality,
+        JSDOM.Generated.VideoTrack as JSDOM.VideoTrack,
+        JSDOM.Generated.VideoTrackList as JSDOM.VideoTrackList,
+        JSDOM.Generated.ViewTimeline as JSDOM.ViewTimeline,
+        JSDOM.Generated.ViewTimelineOptions as JSDOM.ViewTimelineOptions,
+        JSDOM.Generated.ViewTransition as JSDOM.ViewTransition,
+        JSDOM.Generated.ViewTransitionTypeSet as JSDOM.ViewTransitionTypeSet,
+        JSDOM.Generated.ViewTransitionUpdateCallback as JSDOM.ViewTransitionUpdateCallback,
+        JSDOM.Generated.VisualViewport as JSDOM.VisualViewport,
+        JSDOM.Generated.VoidFunction as JSDOM.VoidFunction,
+        JSDOM.Generated.WEBGL_color_buffer_float as JSDOM.WEBGL_color_buffer_float,
+        JSDOM.Generated.WEBGL_compressed_texture_astc as JSDOM.WEBGL_compressed_texture_astc,
+        JSDOM.Generated.WEBGL_compressed_texture_etc as JSDOM.WEBGL_compressed_texture_etc,
+        JSDOM.Generated.WEBGL_compressed_texture_etc1 as JSDOM.WEBGL_compressed_texture_etc1,
+        JSDOM.Generated.WEBGL_compressed_texture_pvrtc as JSDOM.WEBGL_compressed_texture_pvrtc,
+        JSDOM.Generated.WEBGL_compressed_texture_s3tc as JSDOM.WEBGL_compressed_texture_s3tc,
+        JSDOM.Generated.WEBGL_compressed_texture_s3tc_srgb as JSDOM.WEBGL_compressed_texture_s3tc_srgb,
+        JSDOM.Generated.WEBGL_debug_renderer_info as JSDOM.WEBGL_debug_renderer_info,
+        JSDOM.Generated.WEBGL_debug_shaders as JSDOM.WEBGL_debug_shaders,
+        JSDOM.Generated.WEBGL_depth_texture as JSDOM.WEBGL_depth_texture,
+        JSDOM.Generated.WEBGL_draw_buffers as JSDOM.WEBGL_draw_buffers,
+        JSDOM.Generated.WEBGL_lose_context as JSDOM.WEBGL_lose_context,
+        JSDOM.Generated.WEBGL_multi_draw as JSDOM.WEBGL_multi_draw,
+        JSDOM.Generated.WGSLLanguageFeatures as JSDOM.WGSLLanguageFeatures,
+        JSDOM.Generated.WakeLock as JSDOM.WakeLock,
+        JSDOM.Generated.WakeLockSentinel as JSDOM.WakeLockSentinel,
+        JSDOM.Generated.WaveShaperNode as JSDOM.WaveShaperNode,
+        JSDOM.Generated.WaveShaperOptions as JSDOM.WaveShaperOptions,
+        JSDOM.Generated.WebCodecsErrorCallback as JSDOM.WebCodecsErrorCallback,
+        JSDOM.Generated.WebGL2RenderingContext as JSDOM.WebGL2RenderingContext,
+        JSDOM.Generated.WebGL2RenderingContextBase as JSDOM.WebGL2RenderingContextBase,
+        JSDOM.Generated.WebGL2RenderingContextOverloads as JSDOM.WebGL2RenderingContextOverloads,
+        JSDOM.Generated.WebGLActiveInfo as JSDOM.WebGLActiveInfo,
+        JSDOM.Generated.WebGLBuffer as JSDOM.WebGLBuffer,
+        JSDOM.Generated.WebGLContextAttributes as JSDOM.WebGLContextAttributes,
+        JSDOM.Generated.WebGLContextEvent as JSDOM.WebGLContextEvent,
+        JSDOM.Generated.WebGLContextEventInit as JSDOM.WebGLContextEventInit,
+        JSDOM.Generated.WebGLFramebuffer as JSDOM.WebGLFramebuffer,
+        JSDOM.Generated.WebGLObject as JSDOM.WebGLObject,
+        JSDOM.Generated.WebGLProgram as JSDOM.WebGLProgram,
+        JSDOM.Generated.WebGLQuery as JSDOM.WebGLQuery,
+        JSDOM.Generated.WebGLRenderbuffer as JSDOM.WebGLRenderbuffer,
+        JSDOM.Generated.WebGLRenderingContext as JSDOM.WebGLRenderingContext,
+        JSDOM.Generated.WebGLRenderingContextBase as JSDOM.WebGLRenderingContextBase,
+        JSDOM.Generated.WebGLRenderingContextOverloads as JSDOM.WebGLRenderingContextOverloads,
+        JSDOM.Generated.WebGLSampler as JSDOM.WebGLSampler,
+        JSDOM.Generated.WebGLShader as JSDOM.WebGLShader,
+        JSDOM.Generated.WebGLShaderPrecisionFormat as JSDOM.WebGLShaderPrecisionFormat,
+        JSDOM.Generated.WebGLSync as JSDOM.WebGLSync,
+        JSDOM.Generated.WebGLTexture as JSDOM.WebGLTexture,
+        JSDOM.Generated.WebGLTransformFeedback as JSDOM.WebGLTransformFeedback,
+        JSDOM.Generated.WebGLUniformLocation as JSDOM.WebGLUniformLocation,
+        JSDOM.Generated.WebGLVertexArrayObject as JSDOM.WebGLVertexArrayObject,
+        JSDOM.Generated.WebGLVertexArrayObjectOES as JSDOM.WebGLVertexArrayObjectOES,
+        JSDOM.Generated.WebSocket as JSDOM.WebSocket,
+        JSDOM.Generated.WebTransport as JSDOM.WebTransport,
+        JSDOM.Generated.WebTransportBidirectionalStream as JSDOM.WebTransportBidirectionalStream,
+        JSDOM.Generated.WebTransportCloseInfo as JSDOM.WebTransportCloseInfo,
+        JSDOM.Generated.WebTransportConnectionStats as JSDOM.WebTransportConnectionStats,
+        JSDOM.Generated.WebTransportDatagramDuplexStream as JSDOM.WebTransportDatagramDuplexStream,
+        JSDOM.Generated.WebTransportDatagramStats as JSDOM.WebTransportDatagramStats,
+        JSDOM.Generated.WebTransportDatagramsWritable as JSDOM.WebTransportDatagramsWritable,
+        JSDOM.Generated.WebTransportError as JSDOM.WebTransportError,
+        JSDOM.Generated.WebTransportErrorOptions as JSDOM.WebTransportErrorOptions,
+        JSDOM.Generated.WebTransportHash as JSDOM.WebTransportHash,
+        JSDOM.Generated.WebTransportOptions as JSDOM.WebTransportOptions,
+        JSDOM.Generated.WebTransportReceiveStream as JSDOM.WebTransportReceiveStream,
+        JSDOM.Generated.WebTransportReceiveStreamStats as JSDOM.WebTransportReceiveStreamStats,
+        JSDOM.Generated.WebTransportSendGroup as JSDOM.WebTransportSendGroup,
+        JSDOM.Generated.WebTransportSendOptions as JSDOM.WebTransportSendOptions,
+        JSDOM.Generated.WebTransportSendStream as JSDOM.WebTransportSendStream,
+        JSDOM.Generated.WebTransportSendStreamOptions as JSDOM.WebTransportSendStreamOptions,
+        JSDOM.Generated.WebTransportSendStreamStats as JSDOM.WebTransportSendStreamStats,
+        JSDOM.Generated.WebTransportWriter as JSDOM.WebTransportWriter,
+        JSDOM.Generated.WheelEvent as JSDOM.WheelEvent,
+        JSDOM.Generated.WheelEventInit as JSDOM.WheelEventInit,
+        JSDOM.Generated.Window as JSDOM.Window,
+        JSDOM.Generated.WindowClient as JSDOM.WindowClient,
+        JSDOM.Generated.WindowEventHandlers as JSDOM.WindowEventHandlers,
+        JSDOM.Generated.WindowLocalStorage as JSDOM.WindowLocalStorage,
+        JSDOM.Generated.WindowOrWorkerGlobalScope as JSDOM.WindowOrWorkerGlobalScope,
+        JSDOM.Generated.WindowPostMessageOptions as JSDOM.WindowPostMessageOptions,
+        JSDOM.Generated.WindowSessionStorage as JSDOM.WindowSessionStorage,
+        JSDOM.Generated.Worker as JSDOM.Worker,
+        JSDOM.Generated.WorkerAndParameters as JSDOM.WorkerAndParameters,
+        JSDOM.Generated.WorkerGlobalScope as JSDOM.WorkerGlobalScope,
+        JSDOM.Generated.WorkerLocation as JSDOM.WorkerLocation,
+        JSDOM.Generated.WorkerNavigator as JSDOM.WorkerNavigator,
+        JSDOM.Generated.WorkerOptions as JSDOM.WorkerOptions,
+        JSDOM.Generated.Worklet as JSDOM.Worklet,
+        JSDOM.Generated.WorkletGlobalScope as JSDOM.WorkletGlobalScope,
+        JSDOM.Generated.WorkletOptions as JSDOM.WorkletOptions,
+        JSDOM.Generated.WritableStream as JSDOM.WritableStream,
+        JSDOM.Generated.WritableStreamDefaultController as JSDOM.WritableStreamDefaultController,
+        JSDOM.Generated.WritableStreamDefaultWriter as JSDOM.WritableStreamDefaultWriter,
+        JSDOM.Generated.WriteParams as JSDOM.WriteParams,
+        JSDOM.Generated.XMLDocument as JSDOM.XMLDocument,
+        JSDOM.Generated.XMLHttpRequestEventTarget as JSDOM.XMLHttpRequestEventTarget,
+        JSDOM.Generated.XMLHttpRequestUpload as JSDOM.XMLHttpRequestUpload,
+        JSDOM.Generated.XMLSerializer as JSDOM.XMLSerializer,
+        JSDOM.Generated.XPathEvaluator as JSDOM.XPathEvaluator,
+        JSDOM.Generated.XPathEvaluatorBase as JSDOM.XPathEvaluatorBase,
+        JSDOM.Generated.XPathExpression as JSDOM.XPathExpression,
+        JSDOM.Generated.XPathNSResolver as JSDOM.XPathNSResolver,
+        JSDOM.Generated.XPathResult as JSDOM.XPathResult,
+        JSDOM.Generated.XSLTProcessor as JSDOM.XSLTProcessor
+    build-depends:
+        base >=4.7.0.0 && <5,
+        base-compat >=0.9.0 && <0.16,
+        exceptions >=0.8 && <0.11,
+        transformers >=0.2 && <0.7,
+        text >=0.11.0.6 && <2.2,
+        jsaddle >=0.9.10.0 && <0.10,
         lens >=4.12.3 && <5.4
     default-language: Haskell2010
     hs-source-dirs: src
diff --git a/src/JSDOM.hs b/src/JSDOM.hs
--- a/src/JSDOM.hs
+++ b/src/JSDOM.hs
@@ -33,11 +33,11 @@
 import Language.Javascript.JSaddle.Object (freeFunction, jsg)
 import Language.Javascript.JSaddle.Monad (askJSM)
 import JSDOM.Types
-       (Callback(..), RequestAnimationFrameCallback(..), FromJSVal(..),
+       (Callback(..), FrameRequestCallback(..), FromJSVal(..),
         MonadDOM, liftDOM, GlobalThis(..), Document(..), Window(..), JSM, JSContextRef(..))
-import JSDOM.Generated.RequestAnimationFrameCallback
-       (newRequestAnimationFrameCallbackSync)
-import JSDOM.Generated.Window (requestAnimationFrame)
+import JSDOM.Generated.FrameRequestCallback
+       (newFrameRequestCallbackSync)
+import JSDOM.Generated.AnimationFrameProvider (requestAnimationFrame)
 #endif
 import GHCJS.Concurrent (OnBlocked(..))
 import Language.Javascript.JSaddle
@@ -84,7 +84,7 @@
     -- to run the handlers in the next animation frame.
     when (null handlers) $ do
         win <- currentWindowUnchecked
-        rec cb@(RequestAnimationFrameCallback (Callback fCb)) <- newRequestAnimationFrameCallbackSync $ \t -> do
+        rec cb@(FrameRequestCallback (Callback fCb)) <- newFrameRequestCallbackSync $ \t -> do
               -- This is a one off handler so free it when it runs
               freeFunction fCb
               -- Take the list of handers and empty it
diff --git a/src/JSDOM/Custom/AudioContext.hs b/src/JSDOM/Custom/AudioContext.hs
deleted file mode 100644
--- a/src/JSDOM/Custom/AudioContext.hs
+++ /dev/null
@@ -1,35 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-module JSDOM.Custom.AudioContext (
-    module Generated
-  , DecodeAudioError(..)
-  , decodeAudioData
-) where
-
-import Prelude ()
-import Prelude.Compat
-import Data.Typeable (Typeable)
-import Control.Exception (Exception(..), throwIO)
-import Control.Monad.IO.Class (MonadIO(..))
-
-import JSDOM.Types
-
-import Control.Concurrent.MVar (takeMVar, putMVar, newEmptyMVar)
-import JSDOM.Generated.AudioBufferCallback
-       (newAudioBufferCallback)
-import JSDOM.Generated.AudioContext as Generated hiding (decodeAudioData)
-import qualified JSDOM.Generated.AudioContext
-       as Generated (decodeAudioData)
-
-data DecodeAudioError = DecodeAudioError deriving (Show, Eq, Typeable)
-
-instance Exception DecodeAudioError
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.decodeAudioData Mozilla AudioContext.decodeAudioData documentation>
-decodeAudioData :: (MonadDOM m, IsAudioContext self, IsArrayBuffer audioData) =>
-                   self -> audioData -> m AudioBuffer
-decodeAudioData self audioData = do
-    result <- liftIO newEmptyMVar
-    success <- newAudioBufferCallback $ \buffer -> liftIO $ putMVar result (Just buffer)
-    error <- newAudioBufferCallback . const . liftIO $ putMVar result Nothing
-    Generated.decodeAudioData self audioData (Just success) (Just error)
-    liftIO $ takeMVar result >>= maybe (throwIO DecodeAudioError) return
diff --git a/src/JSDOM/Custom/DOMError.hs b/src/JSDOM/Custom/DOMError.hs
deleted file mode 100644
--- a/src/JSDOM/Custom/DOMError.hs
+++ /dev/null
@@ -1,26 +0,0 @@
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE RecordWildCards #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-module JSDOM.Custom.DOMError (
-    module Generated
-  , DOMErrorException(..)
-  , throwDOMErrorException
-) where
-
-import Prelude ()
-import Prelude.Compat
-import Data.Typeable (Typeable)
-import Control.Exception (Exception, throwIO)
-import Control.Monad.IO.Class (MonadIO(..))
-
-import JSDOM.Types (MonadDOM)
-import JSDOM.Generated.DOMError as Generated
-
-data DOMErrorException = DOMErrorException { domErrorName :: String } deriving (Show, Eq, Typeable)
-
-instance Exception DOMErrorException
-
-throwDOMErrorException :: MonadDOM m => DOMError -> m a
-throwDOMErrorException error = do
-    domErrorName <- getName error
-    liftIO $ throwIO DOMErrorException{..}
diff --git a/src/JSDOM/Custom/Database.hs b/src/JSDOM/Custom/Database.hs
deleted file mode 100644
--- a/src/JSDOM/Custom/Database.hs
+++ /dev/null
@@ -1,74 +0,0 @@
-{-# LANGUAGE FlexibleContexts #-}
-module JSDOM.Custom.Database (
-    module Generated
-  , changeVersion'
-  , changeVersion
-  , transaction'
-  , transaction
-  , readTransaction'
-  , readTransaction
-) where
-
-import Data.Maybe (fromJust, maybe)
-
-import Control.Monad.IO.Class (MonadIO(..))
-import Control.Concurrent.MVar (takeMVar, putMVar, newEmptyMVar)
-
-import JSDOM.Types
-       (MonadDOM, SQLTransaction, SQLError, DOM,
-        SQLTransactionCallback(..), ToJSString(..), Callback(..), withCallback,
-        SQLTransactionErrorCallback(..), VoidCallback(..))
-
-import JSDOM.Custom.SQLError (throwSQLException)
-import JSDOM.Generated.SQLTransactionCallback (newSQLTransactionCallbackSync)
-import JSDOM.Generated.Database as Generated hiding (changeVersion, transaction, readTransaction)
-import qualified JSDOM.Generated.Database as Generated (changeVersion, transaction, readTransaction)
-import JSDOM.Generated.SQLTransactionErrorCallback
-       (newSQLTransactionErrorCallback)
-import JSDOM.Generated.VoidCallback
-       (newVoidCallback)
-
-withSQLTransactionCallback :: MonadDOM m => (SQLTransaction -> DOM ()) -> (SQLTransactionCallback -> DOM a) -> m a
-withSQLTransactionCallback callback = withCallback (newSQLTransactionCallbackSync callback)
-
-withSQLErrorCallbacks :: MonadDOM m => (Maybe SQLTransactionErrorCallback -> Maybe VoidCallback -> DOM ()) -> m (Maybe SQLError)
-withSQLErrorCallbacks f = do
-    result <- liftIO newEmptyMVar
-    withCallback (newSQLTransactionErrorCallback (liftIO . putMVar result . Just)) $ \error ->
-        withCallback (newVoidCallback $ liftIO $ putMVar result Nothing) $ \success -> do
-            f (Just error) (Just success)
-            liftIO $ takeMVar result
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.changeVersion Mozilla Database.changeVersion documentation>
-changeVersion' :: (MonadDOM m, ToJSString oldVersion, ToJSString newVersion) =>
-                  Database -> oldVersion -> newVersion -> Maybe (SQLTransaction -> DOM ()) -> m (Maybe SQLError)
-changeVersion' self oldVersion newVersion Nothing = withSQLErrorCallbacks $ Generated.changeVersion self oldVersion newVersion Nothing
-changeVersion' self oldVersion newVersion (Just callback) =
-    withSQLTransactionCallback callback $ \transaction ->
-        withSQLErrorCallbacks $ \e s ->
-            Generated.changeVersion self oldVersion newVersion (Just transaction) e s
-
-changeVersion :: (MonadDOM m, ToJSString oldVersion, ToJSString newVersion) =>
-                 Database -> oldVersion -> newVersion -> Maybe (SQLTransaction -> DOM ()) -> m ()
-changeVersion self oldVersion newVersion callback =
-    changeVersion' self oldVersion newVersion callback >>= maybe (return ()) throwSQLException
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.transaction Mozilla Database.transaction documentation>
-transaction' :: (MonadDOM m) => Database -> (SQLTransaction -> DOM ()) -> m (Maybe SQLError)
-transaction' self callback =
-    withSQLTransactionCallback callback $ \transaction ->
-        withSQLErrorCallbacks $ \e s ->
-            Generated.transaction self transaction e s
-
-transaction :: (MonadDOM m) => Database -> (SQLTransaction -> DOM ()) -> m ()
-transaction self callback = transaction' self callback >>= maybe (return ()) throwSQLException
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.readTransaction Mozilla Database.readTransaction documentation>
-readTransaction' :: (MonadDOM m) => Database -> (SQLTransaction -> DOM ()) -> m (Maybe SQLError)
-readTransaction' self callback =
-    withSQLTransactionCallback callback $ \transaction ->
-        withSQLErrorCallbacks $ \e s ->
-            Generated.readTransaction self transaction e s
-
-readTransaction :: (MonadDOM m) => Database -> (SQLTransaction -> DOM ()) -> m ()
-readTransaction self callback = readTransaction' self callback >>= maybe (return ()) throwSQLException
diff --git a/src/JSDOM/Custom/FormData.hs b/src/JSDOM/Custom/FormData.hs
deleted file mode 100644
--- a/src/JSDOM/Custom/FormData.hs
+++ /dev/null
@@ -1,19 +0,0 @@
-module JSDOM.Custom.FormData(
-    module Generated,
-    newFormData
-) where
-
-import Prelude ()
-import Prelude.Compat
-
-import JSDOM.Types
-import Data.Maybe (mapMaybe)
-import Language.Javascript.JSaddle (toJSVal, jsg, new)
-
-import JSDOM.Generated.FormData as Generated hiding (newFormData)
-
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData Mozilla FormData documentation> 
-newFormData :: (MonadDOM m) => Maybe HTMLFormElement -> m FormData
-newFormData form
-  = liftDOM (FormData <$> new (jsg "FormData") (mapMaybe (fmap toJSVal) [form]))
diff --git a/src/JSDOM/Custom/Geolocation.hs b/src/JSDOM/Custom/Geolocation.hs
--- a/src/JSDOM/Custom/Geolocation.hs
+++ b/src/JSDOM/Custom/Geolocation.hs
@@ -4,14 +4,12 @@
   , getCurrentPosition
 ) where
 
-import Data.Maybe (fromJust)
-
 import Control.Monad.IO.Class (MonadIO(..))
 import Control.Concurrent.MVar (takeMVar, putMVar, newEmptyMVar)
 
 import JSDOM.Types
 
-import JSDOM.Custom.PositionError (throwPositionException)
+import JSDOM.Custom.GeolocationPositionError (throwPositionException)
 
 import JSDOM.Generated.PositionCallback
        (newPositionCallback)
@@ -23,8 +21,9 @@
        JSDOM.Generated.Geolocation as Generated
        (getCurrentPosition)
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition Mozilla Geolocation.getCurrentPosition documentation>
-getCurrentPosition' :: MonadDOM m => Geolocation -> Maybe PositionOptions -> m (Either PositionError Geoposition)
+-- | Blocking version of
+-- <https://developer.mozilla.org/docs/Web/API/Geolocation/getCurrentPosition Geolocation.getCurrentPosition>.
+getCurrentPosition' :: MonadDOM m => Geolocation -> Maybe PositionOptions -> m (Either GeolocationPositionError GeolocationPosition)
 getCurrentPosition' self options = do
     result <- liftIO newEmptyMVar
     withCallback (newPositionCallback (liftIO . putMVar result . Right)) $ \success ->
@@ -32,7 +31,7 @@
             Generated.getCurrentPosition self success (Just error) options
             liftIO $ takeMVar result
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition Mozilla Geolocation.getCurrentPosition documentation>
-getCurrentPosition :: MonadDOM m => Geolocation -> Maybe PositionOptions -> m Geoposition
+-- | Like 'getCurrentPosition'' but throws 'PositionException' on error.
+getCurrentPosition :: MonadDOM m => Geolocation -> Maybe PositionOptions -> m GeolocationPosition
 getCurrentPosition self options =
     getCurrentPosition' self options >>= either throwPositionException return
diff --git a/src/JSDOM/Custom/GeolocationPositionError.hs b/src/JSDOM/Custom/GeolocationPositionError.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Custom/GeolocationPositionError.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+module JSDOM.Custom.GeolocationPositionError (
+    module Generated
+  , PositionErrorCode(..)
+  , PositionException(..)
+  , throwPositionException
+) where
+
+import Prelude ()
+import Prelude.Compat
+import Data.Typeable (Typeable)
+import Control.Exception (Exception, throwIO)
+import Control.Monad.IO.Class (MonadIO(..))
+
+import JSDOM.Types (MonadDOM)
+
+import JSDOM.Generated.GeolocationPositionError as Generated
+
+data PositionErrorCode = PositionPermissionDenied | PositionUnavailable | PositionTimeout deriving (Show, Eq, Enum)
+data PositionException = PositionException {
+        positionErrorCode    :: PositionErrorCode,
+        positionErrorMessage :: String } deriving (Show, Eq, Typeable)
+
+instance Exception PositionException
+
+throwPositionException :: MonadDOM m => GeolocationPositionError -> m a
+throwPositionException error = do
+    positionErrorCode    <- (toEnum . subtract 1 . fromIntegral) <$> getCode error
+    positionErrorMessage <- getMessage error
+    liftIO $ throwIO (PositionException{..})
diff --git a/src/JSDOM/Custom/Navigator.hs b/src/JSDOM/Custom/Navigator.hs
deleted file mode 100644
--- a/src/JSDOM/Custom/Navigator.hs
+++ /dev/null
@@ -1,37 +0,0 @@
-module JSDOM.Custom.Navigator (
-    module Generated
-  , getUserMedia
-) where
-
-import Data.Maybe (fromJust)
-
-import Control.Monad.IO.Class (MonadIO(..))
-import Control.Concurrent.MVar (takeMVar, putMVar, newEmptyMVar)
-
-import JSDOM.Types
-       (withCallback, Callback(..), MediaStream(..), NavigatorUserMediaError(..),
-        MediaStreamConstraints(..), MonadDOM, NavigatorUserMediaSuccessCallback(..),
-        NavigatorUserMediaErrorCallback(..))
-
-import JSDOM.Custom.NavigatorUserMediaError (throwUserMediaException)
-
-import JSDOM.Generated.NavigatorUserMediaSuccessCallback
-       (newNavigatorUserMediaSuccessCallback)
-import JSDOM.Generated.NavigatorUserMediaErrorCallback
-       (newNavigatorUserMediaErrorCallback)
-
-import JSDOM.Generated.Navigator as Generated hiding (getUserMedia)
-import qualified JSDOM.Generated.Navigator
-       as Generated (getUserMedia)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitGetUserMedia Mozilla Navigator.webkitGetUserMedia documentation>
-getUserMedia' :: MonadDOM m => Navigator -> MediaStreamConstraints -> m (Either NavigatorUserMediaError MediaStream)
-getUserMedia' self constraints = do
-    result <- liftIO newEmptyMVar
-    withCallback (newNavigatorUserMediaSuccessCallback (liftIO . putMVar result . Right)) $ \success ->
-        withCallback (newNavigatorUserMediaErrorCallback (liftIO . putMVar result . Left)) $ \error -> do
-            Generated.getUserMedia self constraints success error
-            liftIO $ takeMVar result
-
-getUserMedia :: MonadDOM m => Navigator -> MediaStreamConstraints -> m MediaStream
-getUserMedia self constraints = getUserMedia' self constraints >>= either throwUserMediaException return
diff --git a/src/JSDOM/Custom/NavigatorUserMediaError.hs b/src/JSDOM/Custom/NavigatorUserMediaError.hs
deleted file mode 100644
--- a/src/JSDOM/Custom/NavigatorUserMediaError.hs
+++ /dev/null
@@ -1,31 +0,0 @@
-{-# LANGUAGE RecordWildCards #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-module JSDOM.Custom.NavigatorUserMediaError (
-    module Generated
-  , UserMediaException(..)
-  , throwUserMediaException
-) where
-
-import Data.Typeable (Typeable)
-import Control.Exception (Exception, throwIO)
-import Control.Monad.IO.Class (MonadIO(..))
-
-import JSDOM.Types (MonadDOM)
-
-import JSDOM.Custom.DOMError (getName)
-import JSDOM.Generated.NavigatorUserMediaError as Generated
-
-data UserMediaException = UserMediaException {
-        userMediaErrorName           :: String,
-        userMediaErrorConstraintName :: String } deriving (Show, Eq, Typeable)
-
-instance Exception UserMediaException
-
-throwUserMediaException :: MonadDOM m => NavigatorUserMediaError -> m a
-throwUserMediaException error = do
-    userMediaErrorName           <- getName           error
-    userMediaErrorConstraintName <- getConstraintName error
-    liftIO $ throwIO (UserMediaException{..})
-
-
-
diff --git a/src/JSDOM/Custom/PositionError.hs b/src/JSDOM/Custom/PositionError.hs
deleted file mode 100644
--- a/src/JSDOM/Custom/PositionError.hs
+++ /dev/null
@@ -1,32 +0,0 @@
-{-# LANGUAGE RecordWildCards #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-module JSDOM.Custom.PositionError (
-    module Generated
-  , PositionErrorCode(..)
-  , PositionException(..)
-  , throwPositionException
-) where
-
-import Prelude ()
-import Prelude.Compat
-import Data.Typeable (Typeable)
-import Control.Exception (Exception, throwIO)
-import Control.Monad.IO.Class (MonadIO(..))
-
-import JSDOM.Types (MonadDOM)
-
-import JSDOM.Generated.PositionError as Generated
-
-data PositionErrorCode = PositionPermissionDenied | PositionUnavailable | PositionTimeout deriving (Show, Eq, Enum)
-data PositionException = PositionException {
-        positionErrorCode    :: PositionErrorCode,
-        positionErrorMessage :: String } deriving (Show, Eq, Typeable)
-
-instance Exception PositionException
-
-throwPositionException :: MonadDOM m => PositionError -> m a
-throwPositionException error = do
-    positionErrorCode    <- (toEnum . subtract 1 . fromIntegral) <$> getCode error
-    positionErrorMessage <- getMessage error
-    liftIO $ throwIO (PositionException{..})
-
diff --git a/src/JSDOM/Custom/RTCPeerConnectionError.hs b/src/JSDOM/Custom/RTCPeerConnectionError.hs
deleted file mode 100644
--- a/src/JSDOM/Custom/RTCPeerConnectionError.hs
+++ /dev/null
@@ -1,6 +0,0 @@
-module JSDOM.Custom.RTCPeerConnectionError (
-
-) where
-
-
-
diff --git a/src/JSDOM/Custom/SQLError.hs b/src/JSDOM/Custom/SQLError.hs
deleted file mode 100644
--- a/src/JSDOM/Custom/SQLError.hs
+++ /dev/null
@@ -1,38 +0,0 @@
-{-# LANGUAGE RecordWildCards #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-module JSDOM.Custom.SQLError (
-    module Generated
-  , SQLErrorCode(..)
-  , SQLException(..)
-  , throwSQLException
-) where
-
-import Prelude ()
-import Prelude.Compat
-import Data.Typeable (Typeable)
-import Control.Exception (Exception, throwIO)
-import Control.Monad.IO.Class (MonadIO(..))
-
-import JSDOM.Types (MonadDOM(..))
-
-import JSDOM.Generated.SQLError as Generated
-
-data SQLErrorCode = SQLErrorUnknown
-                  | SQLErrorDatabase
-                  | SQLErrorVersion
-                  | SQLErrorTooLarge
-                  | SQLErrorQuota
-                  | SQLErrorSyntax
-                  | SQLErrorConstraint
-                  | SQLErrorTimeout
-                  deriving (Show, Eq, Enum, Typeable)
-data SQLException = SQLException { sqlErrorCode :: SQLErrorCode, sqlErrorMessage :: String } deriving (Show, Eq, Typeable)
-
-instance Exception SQLException
-
-throwSQLException :: MonadDOM m => SQLError -> m a
-throwSQLException error = do
-    sqlErrorCode <- (toEnum . subtract 1 . fromIntegral) <$> getCode error
-    sqlErrorMessage <- getMessage error
-    liftIO $ throwIO (SQLException{..})
-
diff --git a/src/JSDOM/Custom/SQLTransaction.hs b/src/JSDOM/Custom/SQLTransaction.hs
deleted file mode 100644
--- a/src/JSDOM/Custom/SQLTransaction.hs
+++ /dev/null
@@ -1,46 +0,0 @@
-module JSDOM.Custom.SQLTransaction (
-    module Generated
-  , executeSql'
-  , executeSql
-  , executeSql_
-) where
-
-import Data.Maybe (fromJust)
-
-import Control.Monad (void)
-import Control.Concurrent.MVar (takeMVar, putMVar, newEmptyMVar)
-import Control.Monad.IO.Class (MonadIO(..))
-
-import JSDOM.Types
-       (withCallback, Callback(..), SQLResultSet(..), SQLError(..), IsObjectArray,
-        MonadDOM, ToJSString, SQLStatementCallback(..),
-        SQLStatementErrorCallback(..), IsSQLValue)
-
-import JSDOM.Custom.SQLError (throwSQLException)
-
-import JSDOM.Generated.SQLStatementCallback
-       (newSQLStatementCallback)
-import JSDOM.Generated.SQLStatementErrorCallback
-       (newSQLStatementErrorCallback)
-
-import JSDOM.Generated.SQLTransaction as Generated hiding (executeSql)
-import qualified
-       JSDOM.Generated.SQLTransaction
-       as Generated (executeSql)
-
-executeSql' :: (MonadDOM m, ToJSString sqlStatement, IsSQLValue arguments) =>
-              SQLTransaction -> sqlStatement -> [arguments] -> m (Either SQLError SQLResultSet)
-executeSql' self sqlStatement arguments = do
-    result <- liftIO newEmptyMVar
-    withCallback (newSQLStatementCallback (\tx rs -> liftIO . putMVar result $ Right rs)) $ \success ->
-        withCallback (newSQLStatementErrorCallback (\tx e -> liftIO . putMVar result $ Left e)) $ \error -> do
-            Generated.executeSql self sqlStatement arguments (Just success) (Just error)
-            liftIO $ takeMVar result
-
-executeSql :: (MonadDOM m, ToJSString sqlStatement, IsSQLValue arguments) =>
-              SQLTransaction -> sqlStatement -> [arguments] -> m SQLResultSet
-executeSql self sqlStatement arguments = executeSql' self sqlStatement arguments >>= either throwSQLException return
-
-executeSql_ :: (MonadDOM m, ToJSString sqlStatement, IsSQLValue arguments) =>
-              SQLTransaction -> sqlStatement -> [arguments] -> m ()
-executeSql_ self sqlStatement arguments = void $ executeSql self sqlStatement arguments
diff --git a/src/JSDOM/Custom/Window.hs b/src/JSDOM/Custom/Window.hs
deleted file mode 100644
--- a/src/JSDOM/Custom/Window.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-module JSDOM.Custom.Window (
-    module Generated
-  , openDatabase
-) where
-
-import Prelude ()
-import Prelude.Compat
-import Control.Monad.IO.Class (MonadIO(..))
-
-import JSDOM.Types
-       (withCallback, Callback(..), MonadDOM, ToJSString, Database, DatabaseCallback(..))
-
-import JSDOM.Generated.Window as Generated hiding (openDatabase)
-import qualified JSDOM.Generated.Window
-       as Generated (openDatabase)
-import Control.Concurrent.MVar (takeMVar, putMVar, newEmptyMVar)
-import JSDOM.Generated.DatabaseCallback
-       (newDatabaseCallback)
-import Data.Maybe (fromJust)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation>
-openDatabase :: (MonadDOM m, ToJSString name, ToJSString version, ToJSString displayName) =>
-                Window -> name -> version -> displayName -> Word -> m Database
-openDatabase self name version displayName estimatedSize = do
-    result <- liftIO newEmptyMVar
-    withCallback (newDatabaseCallback (liftIO . putMVar result)) $ \creationCallback ->
-        Generated.openDatabase self name version displayName estimatedSize (Just creationCallback)
-            >>= maybe (liftIO (takeMVar result)) return
diff --git a/src/JSDOM/EventM.hs b/src/JSDOM/EventM.hs
--- a/src/JSDOM/EventM.hs
+++ b/src/JSDOM/EventM.hs
@@ -74,8 +74,6 @@
 , mouseX
 , mouseY
 , mouseXY
-, mouseFromElement
-, mouseToElement
 )
 where
 import           Control.Applicative ((<$>))
@@ -116,13 +114,13 @@
 addListener :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> SaferEventListener t e -> Bool -> DOM ()
 addListener target eventName l useCapture = do
     raw <- EventListener <$> toJSVal l
-    addEventListener target (eventNameString eventName) (Just raw) useCapture
+    addEventListener target (eventNameString eventName) (Just raw) (Just useCapture)
 
 -- | Remove an EventListener from an EventTarget.
 removeListener :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> SaferEventListener t e -> Bool -> DOM ()
 removeListener target eventName l useCapture = do
     raw <- EventListener <$> toJSVal l
-    removeEventListener target (eventNameString eventName) (Just raw) useCapture
+    removeEventListener target (eventNameString eventName) (Just raw) (Just useCapture)
 
 -- | Release the listener (deallocates callbacks).
 releaseListener :: (IsEventTarget t, IsEvent e) => SaferEventListener t e -> DOM ()
@@ -224,7 +222,7 @@
 cancelable :: IsEvent e => EventM t e Bool
 cancelable = event >>= (lift . Event.getCancelable)
 
-timeStamp :: IsEvent e => EventM t e Word
+timeStamp :: IsEvent e => EventM t e Double
 timeStamp = event >>= (lift . Event.getTimeStamp)
 
 stopPropagation :: IsEvent e => EventM t e ()
@@ -239,7 +237,7 @@
 stopImmediatePropagation :: IsEvent e => EventM t e ()
 stopImmediatePropagation = event >>= (lift . Event.stopImmediatePropagation)
 
-srcElement :: IsEvent e => EventM t e EventTarget
+srcElement :: IsEvent e => EventM t e (Maybe EventTarget)
 srcElement = event >>= (lift . Event.getSrcElement)
 
 getCancelBubble :: IsEvent e => EventM t e Bool
@@ -254,7 +252,7 @@
 returnValue :: IsEvent e => Bool -> EventM t e ()
 returnValue f = event >>= (lift . flip Event.setReturnValue f)
 
-uiView :: IsUIEvent e => EventM t e Window
+uiView :: IsUIEvent e => EventM t e (Maybe Window)
 uiView = event >>= (lift . UIEvent.getView)
 
 uiDetail :: IsUIEvent e => EventM t e Int
@@ -266,33 +264,36 @@
 uiCharCode :: EventM t KeyboardEvent Word
 uiCharCode = event >>= (lift . KeyboardEvent.getCharCode)
 
-uiLayerX :: IsUIEvent e => EventM t e Int
-uiLayerX = event >>= (lift . 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 >>= (lift . UIEvent.getLayerY)
+uiLayerX :: IsMouseEvent e => EventM t e Int
+uiLayerX = event >>= (lift . MouseEvent.getLayerX)
 
-uiLayerXY :: IsUIEvent e => EventM t e (Int, Int)
+uiLayerY :: IsMouseEvent e => EventM t e Int
+uiLayerY = event >>= (lift . MouseEvent.getLayerY)
+
+uiLayerXY :: IsMouseEvent e => EventM t e (Int, Int)
 uiLayerXY = do
     e <- event
-    x <- lift $ UIEvent.getLayerX e
-    y <- lift $ UIEvent.getLayerY e
+    x <- lift $ MouseEvent.getLayerX e
+    y <- lift $ MouseEvent.getLayerY e
     return (x, y)
 
-uiPageX :: IsUIEvent e => EventM t e Int
-uiPageX = event >>= (lift . UIEvent.getPageX)
+uiPageX :: IsMouseEvent e => EventM t e Double
+uiPageX = event >>= (lift . MouseEvent.getPageX)
 
-uiPageY :: IsUIEvent e => EventM t e Int
-uiPageY = event >>= (lift . UIEvent.getPageY)
+uiPageY :: IsMouseEvent e => EventM t e Double
+uiPageY = event >>= (lift . MouseEvent.getPageY)
 
-uiPageXY :: IsUIEvent e => EventM t e (Int, Int)
+uiPageXY :: IsMouseEvent e => EventM t e (Double, Double)
 uiPageXY = do
     e <- event
-    x <- lift $ UIEvent.getPageX e
-    y <- lift $ UIEvent.getPageY e
+    x <- lift $ MouseEvent.getPageX e
+    y <- lift $ MouseEvent.getPageY e
     return (x, y)
 
-uiWhich :: IsUIEvent e => EventM t e Int
+uiWhich :: IsUIEvent e => EventM t e Word
 uiWhich = event >>= (lift . UIEvent.getWhich)
 
 mouseScreenX :: IsMouseEvent e => EventM t e Int
@@ -321,13 +322,13 @@
     y <- lift $ MouseEvent.getClientY e
     return (x, y)
 
-mouseMovementX :: IsMouseEvent e => EventM t e Int
+mouseMovementX :: IsMouseEvent e => EventM t e Double
 mouseMovementX = event >>= (lift . MouseEvent.getMovementX)
 
-mouseMovementY :: IsMouseEvent e => EventM t e Int
+mouseMovementY :: IsMouseEvent e => EventM t e Double
 mouseMovementY = event >>= (lift . MouseEvent.getMovementY)
 
-mouseMovementXY :: IsMouseEvent e => EventM t e (Int, Int)
+mouseMovementXY :: IsMouseEvent e => EventM t e (Double, Double)
 mouseMovementXY = do
     e <- event
     x <- lift $ MouseEvent.getMovementX e
@@ -346,41 +347,35 @@
 mouseMetaKey :: IsMouseEvent e => EventM t e Bool
 mouseMetaKey = event >>= (lift . MouseEvent.getMetaKey)
 
-mouseButton :: IsMouseEvent e => EventM t e Word
+mouseButton :: IsMouseEvent e => EventM t e Int
 mouseButton = event >>= (lift . MouseEvent.getButton)
 
 mouseRelatedTarget :: IsMouseEvent e => EventM t e (Maybe EventTarget)
 mouseRelatedTarget = event >>= (lift . MouseEvent.getRelatedTarget)
 
-mouseOffsetX :: IsMouseEvent e => EventM t e Int
+mouseOffsetX :: IsMouseEvent e => EventM t e Double
 mouseOffsetX = event >>= (lift . MouseEvent.getOffsetX)
 
-mouseOffsetY :: IsMouseEvent e => EventM t e Int
+mouseOffsetY :: IsMouseEvent e => EventM t e Double
 mouseOffsetY = event >>= (lift . MouseEvent.getOffsetY)
 
-mouseOffsetXY :: IsMouseEvent e => EventM t e (Int, Int)
+mouseOffsetXY :: IsMouseEvent e => EventM t e (Double, Double)
 mouseOffsetXY = do
     e <- event
     x <- lift $ MouseEvent.getOffsetX e
     y <- lift $ MouseEvent.getOffsetY e
     return (x, y)
 
-mouseX :: IsMouseEvent e => EventM t e Int
+mouseX :: IsMouseEvent e => EventM t e Double
 mouseX = event >>= (lift . MouseEvent.getX)
 
-mouseY :: IsMouseEvent e => EventM t e Int
+mouseY :: IsMouseEvent e => EventM t e Double
 mouseY = event >>= (lift . MouseEvent.getY)
 
-mouseXY :: IsMouseEvent e => EventM t e (Int, Int)
+mouseXY :: IsMouseEvent e => EventM t e (Double, Double)
 mouseXY = do
     e <- event
     x <- lift $ MouseEvent.getX e
     y <- lift $ MouseEvent.getY e
     return (x, y)
-
-mouseFromElement :: IsMouseEvent e => EventM t e (Maybe Node)
-mouseFromElement = event >>= (lift . MouseEvent.getFromElement)
-
-mouseToElement :: IsMouseEvent e => EventM t e (Maybe Node)
-mouseToElement = event >>= (lift . MouseEvent.getToElement)
 
diff --git a/src/JSDOM/Generated/ANGLEInstancedArrays.hs b/src/JSDOM/Generated/ANGLEInstancedArrays.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/ANGLEInstancedArrays.hs
+++ /dev/null
@@ -1,54 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.ANGLEInstancedArrays
-       (drawArraysInstancedANGLE, drawElementsInstancedANGLE,
-        vertexAttribDivisorANGLE,
-        pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE,
-        ANGLEInstancedArrays(..), gTypeANGLEInstancedArrays)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays.drawArraysInstancedANGLE Mozilla ANGLEInstancedArrays.drawArraysInstancedANGLE documentation> 
-drawArraysInstancedANGLE ::
-                         (MonadDOM m) =>
-                           ANGLEInstancedArrays -> Word -> Int -> Int -> Int -> m ()
-drawArraysInstancedANGLE self mode first count primcount
-  = liftDOM
-      (void
-         (self ^. jsf "drawArraysInstancedANGLE"
-            [toJSVal mode, toJSVal first, toJSVal count, toJSVal primcount]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays.drawElementsInstancedANGLE Mozilla ANGLEInstancedArrays.drawElementsInstancedANGLE documentation> 
-drawElementsInstancedANGLE ::
-                           (MonadDOM m) =>
-                             ANGLEInstancedArrays -> Word -> Int -> Word -> Int64 -> Int -> m ()
-drawElementsInstancedANGLE self mode count type' offset primcount
-  = liftDOM
-      (void
-         (self ^. jsf "drawElementsInstancedANGLE"
-            [toJSVal mode, toJSVal count, toJSVal type',
-             integralToDoubleToJSVal offset, toJSVal primcount]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays.vertexAttribDivisorANGLE Mozilla ANGLEInstancedArrays.vertexAttribDivisorANGLE documentation> 
-vertexAttribDivisorANGLE ::
-                         (MonadDOM m) => ANGLEInstancedArrays -> Word -> Word -> m ()
-vertexAttribDivisorANGLE self index divisor
-  = liftDOM
-      (void
-         (self ^. jsf "vertexAttribDivisorANGLE"
-            [toJSVal index, toJSVal divisor]))
-pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 35070
diff --git a/src/JSDOM/Generated/ANGLE_instanced_arrays.hs b/src/JSDOM/Generated/ANGLE_instanced_arrays.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ANGLE_instanced_arrays.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from ANGLE_instanced_arrays (webref). Do not edit.
+module JSDOM.Generated.ANGLE_instanced_arrays
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "drawArraysInstancedANGLE" [toJSVal mode, toJSVal first, toJSVal count, toJSVal primcount]))
+
+-- | <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 (self ^. jsf "drawElementsInstancedANGLE" [toJSVal mode, toJSVal count, toJSVal type', toJSVal offset, toJSVal primcount]))
+
+-- | <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 (self ^. jsf "vertexAttribDivisorANGLE" [toJSVal index, toJSVal divisor]))
+
+pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 0x88FE
diff --git a/src/JSDOM/Generated/ARIAMixin.hs b/src/JSDOM/Generated/ARIAMixin.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ARIAMixin.hs
@@ -0,0 +1,848 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from wai-aria-1.3 (webref). Do not edit.
+module JSDOM.Generated.ARIAMixin
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "role" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "role") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "role") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "role") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaActiveDescendantElement" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaActiveDescendantElement") >>= 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 (((((Types.toARIAMixin self) ^. js "ariaActiveDescendantElement") >>= 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 ((((Types.toARIAMixin self) ^. js "ariaActiveDescendantElement") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaAtomic" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaAtomic") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaAtomic") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaAtomic") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaAutoComplete" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaAutoComplete") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaAutoComplete") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaAutoComplete") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaBrailleLabel" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaBrailleLabel") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaBrailleLabel") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaBrailleLabel") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaBrailleRoleDescription" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaBrailleRoleDescription") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaBrailleRoleDescription") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaBrailleRoleDescription") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaBusy" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaBusy") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaBusy") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaBusy") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaChecked" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaChecked") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaChecked") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaChecked") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaColCount" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaColCount") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaColCount") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaColCount") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaColIndex" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaColIndex") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaColIndex") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaColIndex") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaColIndexText" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaColIndexText") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaColIndexText") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaColIndexText") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaColSpan" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaColSpan") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaColSpan") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaColSpan") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaControlsElements" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaControlsElements") >>= 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 (((((Types.toARIAMixin self) ^. js "ariaControlsElements") >>= 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 ((((Types.toARIAMixin self) ^. js "ariaControlsElements") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaCurrent" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaCurrent") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaCurrent") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaCurrent") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaDescribedByElements" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaDescribedByElements") >>= 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 (((((Types.toARIAMixin self) ^. js "ariaDescribedByElements") >>= 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 ((((Types.toARIAMixin self) ^. js "ariaDescribedByElements") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaDescription" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaDescription") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaDescription") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaDescription") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaDetailsElements" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaDetailsElements") >>= 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 (((((Types.toARIAMixin self) ^. js "ariaDetailsElements") >>= 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 ((((Types.toARIAMixin self) ^. js "ariaDetailsElements") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaDisabled" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaDisabled") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaDisabled") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaDisabled") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaErrorMessageElements" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaErrorMessageElements") >>= 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 (((((Types.toARIAMixin self) ^. js "ariaErrorMessageElements") >>= 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 ((((Types.toARIAMixin self) ^. js "ariaErrorMessageElements") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaExpanded" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaExpanded") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaExpanded") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaExpanded") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaFlowToElements" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaFlowToElements") >>= 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 (((((Types.toARIAMixin self) ^. js "ariaFlowToElements") >>= 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 ((((Types.toARIAMixin self) ^. js "ariaFlowToElements") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaHasPopup" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaHasPopup") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaHasPopup") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaHasPopup") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaHidden" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaHidden") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaHidden") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaHidden") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaInvalid" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaInvalid") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaInvalid") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaInvalid") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaKeyShortcuts" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaKeyShortcuts") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaKeyShortcuts") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaKeyShortcuts") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaLabel" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaLabel") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaLabel") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaLabel") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaLabelledByElements" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaLabelledByElements") >>= 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 (((((Types.toARIAMixin self) ^. js "ariaLabelledByElements") >>= 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 ((((Types.toARIAMixin self) ^. js "ariaLabelledByElements") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaLevel" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaLevel") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaLevel") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaLevel") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaLive" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaLive") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaLive") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaLive") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaModal" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaModal") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaModal") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaModal") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaMultiLine" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaMultiLine") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaMultiLine") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaMultiLine") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaMultiSelectable" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaMultiSelectable") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaMultiSelectable") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaMultiSelectable") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaOrientation" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaOrientation") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaOrientation") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaOrientation") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaOwnsElements" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaOwnsElements") >>= 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 (((((Types.toARIAMixin self) ^. js "ariaOwnsElements") >>= 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 ((((Types.toARIAMixin self) ^. js "ariaOwnsElements") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaPlaceholder" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaPlaceholder") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaPlaceholder") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaPlaceholder") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaPosInSet" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaPosInSet") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaPosInSet") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaPosInSet") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaPressed" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaPressed") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaPressed") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaPressed") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaReadOnly" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaReadOnly") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaReadOnly") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaReadOnly") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaRelevant" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaRelevant") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaRelevant") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaRelevant") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaRequired" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaRequired") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaRequired") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaRequired") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaRoleDescription" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaRoleDescription") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaRoleDescription") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaRoleDescription") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaRowCount" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaRowCount") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaRowCount") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaRowCount") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaRowIndex" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaRowIndex") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaRowIndex") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaRowIndex") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaRowIndexText" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaRowIndexText") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaRowIndexText") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaRowIndexText") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaRowSpan" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaRowSpan") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaRowSpan") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaRowSpan") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaSelected" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaSelected") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaSelected") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaSelected") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaSetSize" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaSetSize") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaSetSize") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaSetSize") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaSort" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaSort") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaSort") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaSort") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaValueMax" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaValueMax") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaValueMax") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaValueMax") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaValueMin" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaValueMin") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaValueMin") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaValueMin") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaValueNow" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaValueNow") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaValueNow") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaValueNow") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toARIAMixin self) ^. jss "ariaValueText" (toJSVal val)))
+
+-- | <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 ((((Types.toARIAMixin self) ^. js "ariaValueText") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toARIAMixin self) ^. js "ariaValueText") >>= fromMaybeJSString) >>= 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 ((((Types.toARIAMixin self) ^. js "ariaValueText") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ARIANotifyMixin.hs b/src/JSDOM/Generated/ARIANotifyMixin.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ARIANotifyMixin.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from wai-aria-1.3 (webref). Do not edit.
+module JSDOM.Generated.ARIANotifyMixin
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toARIANotifyMixin self) ^. jsf "ariaNotify" [toJSVal announcement, P.maybe (P.return jsUndefined) toJSVal options]))
diff --git a/src/JSDOM/Generated/AacEncoderConfig.hs b/src/JSDOM/Generated/AacEncoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AacEncoderConfig.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-aac-codec-registration (webref). Do not edit.
+module JSDOM.Generated.AacEncoderConfig
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/aac_codec_registration.html#dictdef-aacencoderconfig AacEncoderConfig specification>
+newAacEncoderConfig :: (MonadDOM m) => m AacEncoderConfig
+newAacEncoderConfig = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "format" (toJSVal val)))
+
+-- | <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 (((self ^. js "format") >>= 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 ((((self ^. js "format") >>= 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 (((self ^. js "format") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AbortController.hs b/src/JSDOM/Generated/AbortController.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AbortController.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.AbortController
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/AbortController/AbortController MDN AbortController. documentation>
+newAbortController :: (MonadDOM m) => m AbortController
+newAbortController = liftDOM (((new (jsg "AbortController") ()) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toAbortController self) ^. jsf "abort" [toJSVal reason]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AbortController/signal MDN AbortController.signal documentation>
+getSignal :: (MonadDOM m, IsAbortController self) => self -> m AbortSignal
+getSignal self = liftDOM ((((Types.toAbortController self) ^. js "signal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AbortSignal.hs b/src/JSDOM/Generated/AbortSignal.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AbortSignal.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.AbortSignal
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/AbortSignal/throwIfAborted MDN AbortSignal.throwIfAborted documentation>
+throwIfAborted :: (MonadDOM m, IsAbortSignal self) => self -> m ()
+throwIfAborted self = liftDOM (void ((Types.toAbortSignal self) ^. jsf "throwIfAborted" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_static MDN AbortSignal.abort documentation>
+abort :: (MonadDOM m) => JSVal -> m AbortSignal
+abort reason = liftDOM ((((jsg "AbortSignal") ^. jsf "abort" [toJSVal reason]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_static MDN AbortSignal.abort documentation>
+abort_ :: (MonadDOM m) => JSVal -> m ()
+abort_ reason = liftDOM (void ((jsg "AbortSignal") ^. jsf "abort" [toJSVal reason]))
+
+-- | <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 ((((jsg "AbortSignal") ^. jsf "any" [toJSVal signals]) >>= fromJSValUnchecked))
+
+-- | <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 ((jsg "AbortSignal") ^. jsf "any" [toJSVal signals]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AbortSignal/timeout_static MDN AbortSignal.timeout documentation>
+timeout :: (MonadDOM m) => Word53 -> m AbortSignal
+timeout milliseconds = liftDOM ((((jsg "AbortSignal") ^. jsf "timeout" [toJSVal milliseconds]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AbortSignal/timeout_static MDN AbortSignal.timeout documentation>
+timeout_ :: (MonadDOM m) => Word53 -> m ()
+timeout_ milliseconds = liftDOM (void ((jsg "AbortSignal") ^. jsf "timeout" [toJSVal milliseconds]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AbortSignal/aborted MDN AbortSignal.aborted documentation>
+getAborted :: (MonadDOM m, IsAbortSignal self) => self -> m Bool
+getAborted self = liftDOM ((((Types.toAbortSignal self) ^. js "aborted") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AbortSignal/reason MDN AbortSignal.reason documentation>
+getReason :: (MonadDOM m, IsAbortSignal self) => self -> m JSVal
+getReason self = liftDOM ((Types.toAbortSignal self) ^. js "reason")
+
+-- | <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/JSDOM/Generated/AbstractRange.hs b/src/JSDOM/Generated/AbstractRange.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AbstractRange.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.AbstractRange
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/AbstractRange/startContainer MDN AbstractRange.startContainer documentation>
+getStartContainer :: (MonadDOM m, IsAbstractRange self) => self -> m Node
+getStartContainer self = liftDOM ((((Types.toAbstractRange self) ^. js "startContainer") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AbstractRange/startOffset MDN AbstractRange.startOffset documentation>
+getStartOffset :: (MonadDOM m, IsAbstractRange self) => self -> m Word
+getStartOffset self = liftDOM ((P.round <$> (((Types.toAbstractRange self) ^. js "startOffset") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AbstractRange/endContainer MDN AbstractRange.endContainer documentation>
+getEndContainer :: (MonadDOM m, IsAbstractRange self) => self -> m Node
+getEndContainer self = liftDOM ((((Types.toAbstractRange self) ^. js "endContainer") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AbstractRange/endOffset MDN AbstractRange.endOffset documentation>
+getEndOffset :: (MonadDOM m, IsAbstractRange self) => self -> m Word
+getEndOffset self = liftDOM ((P.round <$> (((Types.toAbstractRange self) ^. js "endOffset") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AbstractRange/collapsed MDN AbstractRange.collapsed documentation>
+getCollapsed :: (MonadDOM m, IsAbstractRange self) => self -> m Bool
+getCollapsed self = liftDOM ((((Types.toAbstractRange self) ^. js "collapsed") >>= valToBool))
diff --git a/src/JSDOM/Generated/AbstractWorker.hs b/src/JSDOM/Generated/AbstractWorker.hs
--- a/src/JSDOM/Generated/AbstractWorker.hs
+++ b/src/JSDOM/Generated/AbstractWorker.hs
@@ -1,27 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.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/JSDOM/Generated/AddEventListenerOptions.hs b/src/JSDOM/Generated/AddEventListenerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AddEventListenerOptions.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.AddEventListenerOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://dom.spec.whatwg.org/#dictdef-addeventlisteneroptions AddEventListenerOptions specification>
+newAddEventListenerOptions :: (MonadDOM m) => m AddEventListenerOptions
+newAddEventListenerOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-passive AddEventListenerOptions.passive specification>
+setPassive :: (MonadDOM m) => AddEventListenerOptions -> Bool -> m ()
+setPassive self val = liftDOM (void (self ^. jss "passive" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-passive AddEventListenerOptions.passive specification>
+getPassive :: (MonadDOM m) => AddEventListenerOptions -> m (Maybe Bool)
+getPassive self = liftDOM (((self ^. js "passive") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-passive AddEventListenerOptions.passive specification>
+getPassiveUnsafe :: (MonadDOM m, HasCallStack) => AddEventListenerOptions -> m Bool
+getPassiveUnsafe self = liftDOM ((((self ^. js "passive") >>= 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 (((self ^. js "passive") >>= valToBool))
+
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-once AddEventListenerOptions.once specification>
+setOnce :: (MonadDOM m) => AddEventListenerOptions -> Bool -> m ()
+setOnce self val = liftDOM (void (self ^. jss "once" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-once AddEventListenerOptions.once specification>
+getOnce :: (MonadDOM m) => AddEventListenerOptions -> m (Maybe Bool)
+getOnce self = liftDOM (((self ^. js "once") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-once AddEventListenerOptions.once specification>
+getOnceUnsafe :: (MonadDOM m, HasCallStack) => AddEventListenerOptions -> m Bool
+getOnceUnsafe self = liftDOM ((((self ^. js "once") >>= 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 (((self ^. js "once") >>= valToBool))
+
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-signal AddEventListenerOptions.signal specification>
+setSignal :: (MonadDOM m, IsAbortSignal val) => AddEventListenerOptions -> val -> m ()
+setSignal self val = liftDOM (void (self ^. jss "signal" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-signal AddEventListenerOptions.signal specification>
+getSignal :: (MonadDOM m) => AddEventListenerOptions -> m (Maybe AbortSignal)
+getSignal self = liftDOM (((self ^. js "signal") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-signal AddEventListenerOptions.signal specification>
+getSignalUnsafe :: (MonadDOM m, HasCallStack) => AddEventListenerOptions -> m AbortSignal
+getSignalUnsafe self = liftDOM ((((self ^. js "signal") >>= 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 (((self ^. js "signal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AddressErrors.hs b/src/JSDOM/Generated/AddressErrors.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AddressErrors.hs
@@ -0,0 +1,180 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.AddressErrors
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors AddressErrors specification>
+newAddressErrors :: (MonadDOM m) => m AddressErrors
+newAddressErrors = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "addressLine" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-addressline AddressErrors.addressLine specification>
+getAddressLine :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getAddressLine self = liftDOM (((self ^. js "addressLine") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-addressline AddressErrors.addressLine specification>
+getAddressLineUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getAddressLineUnsafe self = liftDOM ((((self ^. js "addressLine") >>= fromMaybeJSString) >>= 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 (((self ^. js "addressLine") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "city" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-city AddressErrors.city specification>
+getCity :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getCity self = liftDOM (((self ^. js "city") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-city AddressErrors.city specification>
+getCityUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getCityUnsafe self = liftDOM ((((self ^. js "city") >>= fromMaybeJSString) >>= 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 (((self ^. js "city") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "country" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-country AddressErrors.country specification>
+getCountry :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getCountry self = liftDOM (((self ^. js "country") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-country AddressErrors.country specification>
+getCountryUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getCountryUnsafe self = liftDOM ((((self ^. js "country") >>= fromMaybeJSString) >>= 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 (((self ^. js "country") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "dependentLocality" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-dependentlocality AddressErrors.dependentLocality specification>
+getDependentLocality :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getDependentLocality self = liftDOM (((self ^. js "dependentLocality") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-dependentlocality AddressErrors.dependentLocality specification>
+getDependentLocalityUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getDependentLocalityUnsafe self = liftDOM ((((self ^. js "dependentLocality") >>= fromMaybeJSString) >>= 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 (((self ^. js "dependentLocality") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "organization" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-organization AddressErrors.organization specification>
+getOrganization :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getOrganization self = liftDOM (((self ^. js "organization") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-organization AddressErrors.organization specification>
+getOrganizationUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getOrganizationUnsafe self = liftDOM ((((self ^. js "organization") >>= fromMaybeJSString) >>= 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 (((self ^. js "organization") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "phone" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-phone AddressErrors.phone specification>
+getPhone :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getPhone self = liftDOM (((self ^. js "phone") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-phone AddressErrors.phone specification>
+getPhoneUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getPhoneUnsafe self = liftDOM ((((self ^. js "phone") >>= fromMaybeJSString) >>= 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 (((self ^. js "phone") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "postalCode" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-postalcode AddressErrors.postalCode specification>
+getPostalCode :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getPostalCode self = liftDOM (((self ^. js "postalCode") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-postalcode AddressErrors.postalCode specification>
+getPostalCodeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getPostalCodeUnsafe self = liftDOM ((((self ^. js "postalCode") >>= fromMaybeJSString) >>= 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 (((self ^. js "postalCode") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "recipient" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-recipient AddressErrors.recipient specification>
+getRecipient :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getRecipient self = liftDOM (((self ^. js "recipient") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-recipient AddressErrors.recipient specification>
+getRecipientUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getRecipientUnsafe self = liftDOM ((((self ^. js "recipient") >>= fromMaybeJSString) >>= 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 (((self ^. js "recipient") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "region" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-region AddressErrors.region specification>
+getRegion :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getRegion self = liftDOM (((self ^. js "region") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-region AddressErrors.region specification>
+getRegionUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getRegionUnsafe self = liftDOM ((((self ^. js "region") >>= fromMaybeJSString) >>= 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 (((self ^. js "region") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "sortingCode" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-sortingcode AddressErrors.sortingCode specification>
+getSortingCode :: (MonadDOM m, FromJSString result) => AddressErrors -> m (Maybe result)
+getSortingCode self = liftDOM (((self ^. js "sortingCode") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/payment-request/#dom-addresserrors-sortingcode AddressErrors.sortingCode specification>
+getSortingCodeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AddressErrors -> m result
+getSortingCodeUnsafe self = liftDOM ((((self ^. js "sortingCode") >>= fromMaybeJSString) >>= 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 (((self ^. js "sortingCode") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AllAcceptedCredentialsOptions.hs b/src/JSDOM/Generated/AllAcceptedCredentialsOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AllAcceptedCredentialsOptions.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.AllAcceptedCredentialsOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "rpId" (toJSVal rpId)) P.>> (o ^. jss "userId" (toJSVal userId)) P.>> (o ^. jss "allAcceptedCredentialIds" (toJSVal allAcceptedCredentialIds)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-allacceptedcredentialsoptions-rpid AllAcceptedCredentialsOptions.rpId specification>
+setRpId :: (MonadDOM m, ToJSString val) => AllAcceptedCredentialsOptions -> val -> m ()
+setRpId self val = liftDOM (void (self ^. jss "rpId" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-allacceptedcredentialsoptions-rpid AllAcceptedCredentialsOptions.rpId specification>
+getRpId :: (MonadDOM m, FromJSString result) => AllAcceptedCredentialsOptions -> m result
+getRpId self = liftDOM (((self ^. js "rpId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-allacceptedcredentialsoptions-userid AllAcceptedCredentialsOptions.userId specification>
+setUserId :: (MonadDOM m, ToJSString val) => AllAcceptedCredentialsOptions -> val -> m ()
+setUserId self val = liftDOM (void (self ^. jss "userId" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-allacceptedcredentialsoptions-userid AllAcceptedCredentialsOptions.userId specification>
+getUserId :: (MonadDOM m, FromJSString result) => AllAcceptedCredentialsOptions -> m result
+getUserId self = liftDOM (((self ^. js "userId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-allacceptedcredentialsoptions-allacceptedcredentialids AllAcceptedCredentialsOptions.allAcceptedCredentialIds specification>
+setAllAcceptedCredentialIds :: (MonadDOM m, ToJSString val) => AllAcceptedCredentialsOptions -> [val] -> m ()
+setAllAcceptedCredentialIds self val = liftDOM (void (self ^. jss "allAcceptedCredentialIds" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-allacceptedcredentialsoptions-allacceptedcredentialids AllAcceptedCredentialsOptions.allAcceptedCredentialIds specification>
+getAllAcceptedCredentialIds :: (MonadDOM m, FromJSString result) => AllAcceptedCredentialsOptions -> m [result]
+getAllAcceptedCredentialIds self = liftDOM (((self ^. js "allAcceptedCredentialIds") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AnalyserNode.hs b/src/JSDOM/Generated/AnalyserNode.hs
--- a/src/JSDOM/Generated/AnalyserNode.hs
+++ b/src/JSDOM/Generated/AnalyserNode.hs
@@ -1,95 +1,72 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.AnalyserNode
-       (getFloatFrequencyData, getByteFrequencyData,
-        getByteTimeDomainData, setFftSize, getFftSize,
-        getFrequencyBinCount, setMinDecibels, getMinDecibels,
-        setMaxDecibels, getMaxDecibels, setSmoothingTimeConstant,
-        getSmoothingTimeConstant, AnalyserNode(..), gTypeAnalyserNode)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.getFloatFrequencyData Mozilla AnalyserNode.getFloatFrequencyData documentation> 
-getFloatFrequencyData ::
-                      (MonadDOM m, IsFloat32Array array) =>
-                        AnalyserNode -> Maybe array -> m ()
-getFloatFrequencyData self array
-  = liftDOM
-      (void (self ^. jsf "getFloatFrequencyData" [toJSVal array]))
+-- | <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 (((new (jsg "AnalyserNode") [toJSVal context, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.getByteFrequencyData Mozilla AnalyserNode.getByteFrequencyData documentation> 
-getByteFrequencyData ::
-                     (MonadDOM m, IsUint8Array array) =>
-                       AnalyserNode -> Maybe array -> m ()
-getByteFrequencyData self array
-  = liftDOM
-      (void (self ^. jsf "getByteFrequencyData" [toJSVal array]))
+-- | <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 (self ^. jsf "getByteFrequencyData" [toJSVal array]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.getByteTimeDomainData Mozilla AnalyserNode.getByteTimeDomainData documentation> 
-getByteTimeDomainData ::
-                      (MonadDOM m, IsUint8Array array) =>
-                        AnalyserNode -> Maybe array -> m ()
-getByteTimeDomainData self array
-  = liftDOM
-      (void (self ^. jsf "getByteTimeDomainData" [toJSVal array]))
+-- | <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 (self ^. jsf "getByteTimeDomainData" [toJSVal array]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.fftSize Mozilla AnalyserNode.fftSize documentation> 
+-- | <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 (self ^. jsf "getFloatFrequencyData" [toJSVal array]))
+
+-- | <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 (self ^. jsf "getFloatTimeDomainData" [toJSVal array]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/fftSize MDN AnalyserNode.fftSize documentation>
 setFftSize :: (MonadDOM m) => AnalyserNode -> Word -> m ()
-setFftSize self val = liftDOM (self ^. jss "fftSize" (toJSVal val))
+setFftSize self val = liftDOM (void (self ^. jss "fftSize" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.fftSize Mozilla AnalyserNode.fftSize documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/fftSize MDN AnalyserNode.fftSize documentation>
 getFftSize :: (MonadDOM m) => AnalyserNode -> m Word
-getFftSize self
-  = liftDOM (round <$> ((self ^. js "fftSize") >>= valToNumber))
+getFftSize self = liftDOM ((P.round <$> ((self ^. js "fftSize") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.frequencyBinCount Mozilla AnalyserNode.frequencyBinCount documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/frequencyBinCount MDN AnalyserNode.frequencyBinCount documentation>
 getFrequencyBinCount :: (MonadDOM m) => AnalyserNode -> m Word
-getFrequencyBinCount self
-  = liftDOM
-      (round <$> ((self ^. js "frequencyBinCount") >>= valToNumber))
+getFrequencyBinCount self = liftDOM ((P.round <$> ((self ^. js "frequencyBinCount") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.minDecibels Mozilla AnalyserNode.minDecibels documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/minDecibels MDN AnalyserNode.minDecibels documentation>
 setMinDecibels :: (MonadDOM m) => AnalyserNode -> Double -> m ()
-setMinDecibels self val
-  = liftDOM (self ^. jss "minDecibels" (toJSVal val))
+setMinDecibels self val = liftDOM (void (self ^. jss "minDecibels" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.minDecibels Mozilla AnalyserNode.minDecibels documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/minDecibels MDN AnalyserNode.minDecibels documentation>
 getMinDecibels :: (MonadDOM m) => AnalyserNode -> m Double
-getMinDecibels self
-  = liftDOM ((self ^. js "minDecibels") >>= valToNumber)
+getMinDecibels self = liftDOM (((self ^. js "minDecibels") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.maxDecibels Mozilla AnalyserNode.maxDecibels documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/maxDecibels MDN AnalyserNode.maxDecibels documentation>
 setMaxDecibels :: (MonadDOM m) => AnalyserNode -> Double -> m ()
-setMaxDecibels self val
-  = liftDOM (self ^. jss "maxDecibels" (toJSVal val))
+setMaxDecibels self val = liftDOM (void (self ^. jss "maxDecibels" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.maxDecibels Mozilla AnalyserNode.maxDecibels documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/maxDecibels MDN AnalyserNode.maxDecibels documentation>
 getMaxDecibels :: (MonadDOM m) => AnalyserNode -> m Double
-getMaxDecibels self
-  = liftDOM ((self ^. js "maxDecibels") >>= valToNumber)
+getMaxDecibels self = liftDOM (((self ^. js "maxDecibels") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.smoothingTimeConstant Mozilla AnalyserNode.smoothingTimeConstant documentation> 
-setSmoothingTimeConstant ::
-                         (MonadDOM m) => AnalyserNode -> Double -> m ()
-setSmoothingTimeConstant self val
-  = liftDOM (self ^. jss "smoothingTimeConstant" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/smoothingTimeConstant MDN AnalyserNode.smoothingTimeConstant documentation>
+setSmoothingTimeConstant :: (MonadDOM m) => AnalyserNode -> Double -> m ()
+setSmoothingTimeConstant self val = liftDOM (void (self ^. jss "smoothingTimeConstant" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.smoothingTimeConstant Mozilla AnalyserNode.smoothingTimeConstant documentation> 
-getSmoothingTimeConstant ::
-                         (MonadDOM m) => AnalyserNode -> m Double
-getSmoothingTimeConstant self
-  = liftDOM ((self ^. js "smoothingTimeConstant") >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/AnalyserNode/smoothingTimeConstant MDN AnalyserNode.smoothingTimeConstant documentation>
+getSmoothingTimeConstant :: (MonadDOM m) => AnalyserNode -> m Double
+getSmoothingTimeConstant self = liftDOM (((self ^. js "smoothingTimeConstant") >>= valToNumber))
diff --git a/src/JSDOM/Generated/AnalyserOptions.hs b/src/JSDOM/Generated/AnalyserOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AnalyserOptions.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.AnalyserOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#AnalyserOptions AnalyserOptions specification>
+newAnalyserOptions :: (MonadDOM m) => m AnalyserOptions
+newAnalyserOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-fftsize AnalyserOptions.fftSize specification>
+setFftSize :: (MonadDOM m) => AnalyserOptions -> Word -> m ()
+setFftSize self val = liftDOM (void (self ^. jss "fftSize" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-fftsize AnalyserOptions.fftSize specification>
+getFftSize :: (MonadDOM m) => AnalyserOptions -> m (Maybe Word)
+getFftSize self = liftDOM (((self ^. js "fftSize") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-fftsize AnalyserOptions.fftSize specification>
+getFftSizeUnsafe :: (MonadDOM m, HasCallStack) => AnalyserOptions -> m Word
+getFftSizeUnsafe self = liftDOM ((((self ^. js "fftSize") >>= 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 ((P.round <$> ((self ^. js "fftSize") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-maxdecibels AnalyserOptions.maxDecibels specification>
+setMaxDecibels :: (MonadDOM m) => AnalyserOptions -> Double -> m ()
+setMaxDecibels self val = liftDOM (void (self ^. jss "maxDecibels" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-maxdecibels AnalyserOptions.maxDecibels specification>
+getMaxDecibels :: (MonadDOM m) => AnalyserOptions -> m (Maybe Double)
+getMaxDecibels self = liftDOM (((self ^. js "maxDecibels") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-maxdecibels AnalyserOptions.maxDecibels specification>
+getMaxDecibelsUnsafe :: (MonadDOM m, HasCallStack) => AnalyserOptions -> m Double
+getMaxDecibelsUnsafe self = liftDOM ((((self ^. js "maxDecibels") >>= 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 (((self ^. js "maxDecibels") >>= valToNumber))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-mindecibels AnalyserOptions.minDecibels specification>
+setMinDecibels :: (MonadDOM m) => AnalyserOptions -> Double -> m ()
+setMinDecibels self val = liftDOM (void (self ^. jss "minDecibels" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-mindecibels AnalyserOptions.minDecibels specification>
+getMinDecibels :: (MonadDOM m) => AnalyserOptions -> m (Maybe Double)
+getMinDecibels self = liftDOM (((self ^. js "minDecibels") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-mindecibels AnalyserOptions.minDecibels specification>
+getMinDecibelsUnsafe :: (MonadDOM m, HasCallStack) => AnalyserOptions -> m Double
+getMinDecibelsUnsafe self = liftDOM ((((self ^. js "minDecibels") >>= 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 (((self ^. js "minDecibels") >>= valToNumber))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-smoothingtimeconstant AnalyserOptions.smoothingTimeConstant specification>
+setSmoothingTimeConstant :: (MonadDOM m) => AnalyserOptions -> Double -> m ()
+setSmoothingTimeConstant self val = liftDOM (void (self ^. jss "smoothingTimeConstant" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-smoothingtimeconstant AnalyserOptions.smoothingTimeConstant specification>
+getSmoothingTimeConstant :: (MonadDOM m) => AnalyserOptions -> m (Maybe Double)
+getSmoothingTimeConstant self = liftDOM (((self ^. js "smoothingTimeConstant") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-analyseroptions-smoothingtimeconstant AnalyserOptions.smoothingTimeConstant specification>
+getSmoothingTimeConstantUnsafe :: (MonadDOM m, HasCallStack) => AnalyserOptions -> m Double
+getSmoothingTimeConstantUnsafe self = liftDOM ((((self ^. js "smoothingTimeConstant") >>= 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 (((self ^. js "smoothingTimeConstant") >>= valToNumber))
diff --git a/src/JSDOM/Generated/Animatable.hs b/src/JSDOM/Generated/Animatable.hs
--- a/src/JSDOM/Generated/Animatable.hs
+++ b/src/JSDOM/Generated/Animatable.hs
@@ -1,34 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
 module JSDOM.Generated.Animatable
-       (getAnimations, getAnimations_, Animatable(..), gTypeAnimatable,
-        IsAnimatable, toAnimatable)
+       (animate, animate_, getAnimations, getAnimations_, getAnimations', getAnimations'_, Animatable(..), gTypeAnimatable, IsAnimatable, toAnimatable)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animatable.getAnimations Mozilla Animatable.getAnimations documentation> 
-getAnimations ::
-              (MonadDOM m, IsAnimatable self) => self -> m [Animation]
-getAnimations self
-  = liftDOM
-      (((toAnimatable self) ^. jsf "getAnimations" ()) >>=
-         fromJSArrayUnchecked)
+-- | <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 ((((Types.toAnimatable self) ^. jsf "animate" [toJSVal keyframes, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animatable.getAnimations Mozilla Animatable.getAnimations documentation> 
+-- | <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 ((Types.toAnimatable self) ^. jsf "animate" [toJSVal keyframes, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getAnimations MDN Animatable.getAnimations documentation>
+getAnimations :: (MonadDOM m, IsAnimatable self) => self -> m [Animation]
+getAnimations self = liftDOM ((((Types.toAnimatable self) ^. jsf "getAnimations" ()) >>= 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 ((toAnimatable self) ^. jsf "getAnimations" ()))
+getAnimations_ self = liftDOM (void ((Types.toAnimatable self) ^. jsf "getAnimations" ()))
+
+-- | <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 ((((Types.toAnimatable self) ^. jsf "getAnimations" [P.maybe (P.return jsUndefined) toJSVal options]) >>= 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 ((Types.toAnimatable self) ^. jsf "getAnimations" [P.maybe (P.return jsUndefined) toJSVal options]))
diff --git a/src/JSDOM/Generated/Animation.hs b/src/JSDOM/Generated/Animation.hs
--- a/src/JSDOM/Generated/Animation.hs
+++ b/src/JSDOM/Generated/Animation.hs
@@ -1,69 +1,176 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
 module JSDOM.Generated.Animation
-       (newAnimation, getEffect, getEffectUnsafe, getEffectUnchecked,
-        getTimeline, getTimelineUnsafe, getTimelineUnchecked,
-        Animation(..), gTypeAnimation)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation Mozilla Animation documentation> 
-newAnimation ::
-             (MonadDOM m, IsAnimationEffect effect,
-              IsAnimationTimeline timeline) =>
-               Maybe effect -> Maybe timeline -> m Animation
-newAnimation effect timeline
-  = liftDOM
-      (Animation <$>
-         new (jsg "Animation") [toJSVal effect, toJSVal timeline])
+-- | <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 (((new (jsg "Animation") [toJSVal effect, toJSVal timeline]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.effect Mozilla Animation.effect documentation> 
-getEffect :: (MonadDOM m) => Animation -> m (Maybe AnimationEffect)
-getEffect self = liftDOM ((self ^. js "effect") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/cancel MDN Animation.cancel documentation>
+cancel :: (MonadDOM m, IsAnimation self) => self -> m ()
+cancel self = liftDOM (void ((Types.toAnimation self) ^. jsf "cancel" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.effect Mozilla Animation.effect documentation> 
-getEffectUnsafe ::
-                (MonadDOM m, HasCallStack) => Animation -> m AnimationEffect
-getEffectUnsafe self
-  = liftDOM
-      (((self ^. js "effect") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/commitStyles MDN Animation.commitStyles documentation>
+commitStyles :: (MonadDOM m, IsAnimation self) => self -> m ()
+commitStyles self = liftDOM (void ((Types.toAnimation self) ^. jsf "commitStyles" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.effect Mozilla Animation.effect documentation> 
-getEffectUnchecked ::
-                   (MonadDOM m) => Animation -> m AnimationEffect
-getEffectUnchecked self
-  = liftDOM ((self ^. js "effect") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/finish MDN Animation.finish documentation>
+finish :: (MonadDOM m, IsAnimation self) => self -> m ()
+finish self = liftDOM (void ((Types.toAnimation self) ^. jsf "finish" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.timeline Mozilla Animation.timeline documentation> 
-getTimeline ::
-            (MonadDOM m) => Animation -> m (Maybe AnimationTimeline)
-getTimeline self = liftDOM ((self ^. js "timeline") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/pause MDN Animation.pause documentation>
+pause :: (MonadDOM m, IsAnimation self) => self -> m ()
+pause self = liftDOM (void ((Types.toAnimation self) ^. jsf "pause" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.timeline Mozilla Animation.timeline documentation> 
-getTimelineUnsafe ::
-                  (MonadDOM m, HasCallStack) => Animation -> m AnimationTimeline
-getTimelineUnsafe self
-  = liftDOM
-      (((self ^. js "timeline") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/persist MDN Animation.persist documentation>
+persist :: (MonadDOM m, IsAnimation self) => self -> m ()
+persist self = liftDOM (void ((Types.toAnimation self) ^. jsf "persist" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.timeline Mozilla Animation.timeline documentation> 
-getTimelineUnchecked ::
-                     (MonadDOM m) => Animation -> m AnimationTimeline
-getTimelineUnchecked self
-  = liftDOM ((self ^. js "timeline") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/play MDN Animation.play documentation>
+play :: (MonadDOM m, IsAnimation self) => self -> m ()
+play self = liftDOM (void ((Types.toAnimation self) ^. jsf "play" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/reverse MDN Animation.reverse documentation>
+reverse :: (MonadDOM m, IsAnimation self) => self -> m ()
+reverse self = liftDOM (void ((Types.toAnimation self) ^. jsf "reverse" ()))
+
+-- | <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 ((Types.toAnimation self) ^. jsf "updatePlaybackRate" [toJSVal playbackRate]))
+
+-- | <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 ((Types.toAnimation self) ^. jss "id" (toJSVal val)))
+
+-- | <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 ((((Types.toAnimation self) ^. js "id") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toAnimation self) ^. jss "effect" (toJSVal val)))
+
+-- | <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 ((((Types.toAnimation self) ^. js "effect") >>= 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 (((((Types.toAnimation self) ^. js "effect") >>= 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 ((((Types.toAnimation self) ^. js "effect") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toAnimation self) ^. jss "timeline" (toJSVal val)))
+
+-- | <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 ((((Types.toAnimation self) ^. js "timeline") >>= 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 (((((Types.toAnimation self) ^. js "timeline") >>= 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 ((((Types.toAnimation self) ^. js "timeline") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toAnimation self) ^. jss "playbackRate" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/playbackRate MDN Animation.playbackRate documentation>
+getPlaybackRate :: (MonadDOM m, IsAnimation self) => self -> m Double
+getPlaybackRate self = liftDOM ((((Types.toAnimation self) ^. js "playbackRate") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/playState MDN Animation.playState documentation>
+getPlayState :: (MonadDOM m, IsAnimation self) => self -> m AnimationPlayState
+getPlayState self = liftDOM ((((Types.toAnimation self) ^. js "playState") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/replaceState MDN Animation.replaceState documentation>
+getReplaceState :: (MonadDOM m, IsAnimation self) => self -> m AnimationReplaceState
+getReplaceState self = liftDOM ((((Types.toAnimation self) ^. js "replaceState") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/pending MDN Animation.pending documentation>
+getPending :: (MonadDOM m, IsAnimation self) => self -> m Bool
+getPending self = liftDOM ((((Types.toAnimation self) ^. js "pending") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/ready MDN Animation.ready documentation>
+getReady :: (MonadDOM m, IsAnimation self) => self -> m Animation
+getReady self = liftDOM ((((((Types.toAnimation self) ^. js "ready") >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Animation/finished MDN Animation.finished documentation>
+getFinished :: (MonadDOM m, IsAnimation self) => self -> m Animation
+getFinished self = liftDOM ((((((Types.toAnimation self) ^. js "finished") >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toAnimation self) ^. jss "startTime" (toJSVal val)))
+
+-- | <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 ((((Types.toAnimation self) ^. js "startTime") >>= 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 (((((Types.toAnimation self) ^. js "startTime") >>= 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 ((((Types.toAnimation self) ^. js "startTime") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toAnimation self) ^. jss "currentTime" (toJSVal val)))
+
+-- | <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 ((((Types.toAnimation self) ^. js "currentTime") >>= 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 (((((Types.toAnimation self) ^. js "currentTime") >>= 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 ((((Types.toAnimation self) ^. js "currentTime") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toAnimation self) ^. js "overallProgress") >>= 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 (((((Types.toAnimation self) ^. js "overallProgress") >>= 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 ((((Types.toAnimation self) ^. js "overallProgress") >>= valToNumber))
+
+-- | <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/JSDOM/Generated/AnimationEffect.hs b/src/JSDOM/Generated/AnimationEffect.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AnimationEffect.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module JSDOM.Generated.AnimationEffect
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEffect/getComputedTiming MDN AnimationEffect.getComputedTiming documentation>
+getComputedTiming :: (MonadDOM m, IsAnimationEffect self) => self -> m ComputedEffectTiming
+getComputedTiming self = liftDOM ((((Types.toAnimationEffect self) ^. jsf "getComputedTiming" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEffect/getComputedTiming MDN AnimationEffect.getComputedTiming documentation>
+getComputedTiming_ :: (MonadDOM m, IsAnimationEffect self) => self -> m ()
+getComputedTiming_ self = liftDOM (void ((Types.toAnimationEffect self) ^. jsf "getComputedTiming" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEffect/getTiming MDN AnimationEffect.getTiming documentation>
+getTiming :: (MonadDOM m, IsAnimationEffect self) => self -> m EffectTiming
+getTiming self = liftDOM ((((Types.toAnimationEffect self) ^. jsf "getTiming" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEffect/getTiming MDN AnimationEffect.getTiming documentation>
+getTiming_ :: (MonadDOM m, IsAnimationEffect self) => self -> m ()
+getTiming_ self = liftDOM (void ((Types.toAnimationEffect self) ^. jsf "getTiming" ()))
+
+-- | <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 ((Types.toAnimationEffect self) ^. jsf "updateTiming" [P.maybe (P.return jsUndefined) toJSVal timing]))
diff --git a/src/JSDOM/Generated/AnimationEvent.hs b/src/JSDOM/Generated/AnimationEvent.hs
--- a/src/JSDOM/Generated/AnimationEvent.hs
+++ b/src/JSDOM/Generated/AnimationEvent.hs
@@ -1,42 +1,44 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-animations-1 (webref). Do not edit.
 module JSDOM.Generated.AnimationEvent
-       (newAnimationEvent, getAnimationName, getElapsedTime,
-        AnimationEvent(..), gTypeAnimationEvent)
+       (newAnimationEvent, getAnimationName, getElapsedTime, getPseudoElement, getAnimation, getAnimationUnsafe, getAnimationUnchecked, AnimationEvent(..), gTypeAnimationEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent Mozilla AnimationEvent documentation> 
-newAnimationEvent ::
-                  (MonadDOM m, ToJSString type') =>
-                    type' -> Maybe AnimationEventInit -> m AnimationEvent
-newAnimationEvent type' animationEventInitDict
-  = liftDOM
-      (AnimationEvent <$>
-         new (jsg "AnimationEvent")
-           [toJSVal type', toJSVal animationEventInitDict])
+-- | <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 (((new (jsg "AnimationEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal animationEventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent.animationName Mozilla AnimationEvent.animationName documentation> 
-getAnimationName ::
-                 (MonadDOM m, FromJSString result) => AnimationEvent -> m result
-getAnimationName self
-  = liftDOM ((self ^. js "animationName") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEvent/animationName MDN AnimationEvent.animationName documentation>
+getAnimationName :: (MonadDOM m, FromJSString result) => AnimationEvent -> m result
+getAnimationName self = liftDOM (((self ^. js "animationName") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent.elapsedTime Mozilla AnimationEvent.elapsedTime documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEvent/elapsedTime MDN AnimationEvent.elapsedTime documentation>
 getElapsedTime :: (MonadDOM m) => AnimationEvent -> m Double
-getElapsedTime self
-  = liftDOM ((self ^. js "elapsedTime") >>= valToNumber)
+getElapsedTime self = liftDOM (((self ^. js "elapsedTime") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEvent/pseudoElement MDN AnimationEvent.pseudoElement documentation>
+getPseudoElement :: (MonadDOM m, FromJSString result) => AnimationEvent -> m result
+getPseudoElement self = liftDOM (((self ^. js "pseudoElement") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEvent/animation MDN AnimationEvent.animation documentation>
+getAnimation :: (MonadDOM m) => AnimationEvent -> m (Maybe CSSAnimation)
+getAnimation self = liftDOM (((self ^. js "animation") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationEvent/animation MDN AnimationEvent.animation documentation>
+getAnimationUnsafe :: (MonadDOM m, HasCallStack) => AnimationEvent -> m CSSAnimation
+getAnimationUnsafe self = liftDOM ((((self ^. js "animation") >>= 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 (((self ^. js "animation") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AnimationEventInit.hs b/src/JSDOM/Generated/AnimationEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AnimationEventInit.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-animations-1 (webref). Do not edit.
+module JSDOM.Generated.AnimationEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/css-animations-1/#dictdef-animationeventinit AnimationEventInit specification>
+newAnimationEventInit :: (MonadDOM m) => m AnimationEventInit
+newAnimationEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "animationName" (toJSVal val)))
+
+-- | <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 (((self ^. js "animationName") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "animationName") >>= fromMaybeJSString) >>= 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 (((self ^. js "animationName") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-animations-1/#dom-animationeventinit-elapsedtime AnimationEventInit.elapsedTime specification>
+setElapsedTime :: (MonadDOM m) => AnimationEventInit -> Double -> m ()
+setElapsedTime self val = liftDOM (void (self ^. jss "elapsedTime" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-animations-1/#dom-animationeventinit-elapsedtime AnimationEventInit.elapsedTime specification>
+getElapsedTime :: (MonadDOM m) => AnimationEventInit -> m (Maybe Double)
+getElapsedTime self = liftDOM (((self ^. js "elapsedTime") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-animations-1/#dom-animationeventinit-elapsedtime AnimationEventInit.elapsedTime specification>
+getElapsedTimeUnsafe :: (MonadDOM m, HasCallStack) => AnimationEventInit -> m Double
+getElapsedTimeUnsafe self = liftDOM ((((self ^. js "elapsedTime") >>= 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 (((self ^. js "elapsedTime") >>= valToNumber))
+
+-- | <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 (self ^. jss "pseudoElement" (toJSVal val)))
+
+-- | <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 (((self ^. js "pseudoElement") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "pseudoElement") >>= fromMaybeJSString) >>= 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 (((self ^. js "pseudoElement") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "animation" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-animations-2/#dom-animationeventinit-animation AnimationEventInit.animation specification>
+getAnimation :: (MonadDOM m) => AnimationEventInit -> m (Maybe CSSAnimation)
+getAnimation self = liftDOM (((self ^. js "animation") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-animations-2/#dom-animationeventinit-animation AnimationEventInit.animation specification>
+getAnimationUnsafe :: (MonadDOM m, HasCallStack) => AnimationEventInit -> m CSSAnimation
+getAnimationUnsafe self = liftDOM ((((self ^. js "animation") >>= 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 (((self ^. js "animation") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AnimationFrameProvider.hs b/src/JSDOM/Generated/AnimationFrameProvider.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AnimationFrameProvider.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.AnimationFrameProvider
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toAnimationFrameProvider self) ^. jsf "cancelAnimationFrame" [toJSVal handle]))
+
+-- | <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 ((P.round <$> (((Types.toAnimationFrameProvider self) ^. jsf "requestAnimationFrame" [toJSVal callback']) >>= valToNumber)))
+
+-- | <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 ((Types.toAnimationFrameProvider self) ^. jsf "requestAnimationFrame" [toJSVal callback']))
diff --git a/src/JSDOM/Generated/AnimationPlaybackEvent.hs b/src/JSDOM/Generated/AnimationPlaybackEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AnimationPlaybackEvent.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-2 (webref). Do not edit.
+module JSDOM.Generated.AnimationPlaybackEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "AnimationPlaybackEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationPlaybackEvent/currentTime MDN AnimationPlaybackEvent.currentTime documentation>
+getCurrentTime :: (MonadDOM m) => AnimationPlaybackEvent -> m (Maybe CSSNumberish)
+getCurrentTime self = liftDOM (((self ^. js "currentTime") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationPlaybackEvent/currentTime MDN AnimationPlaybackEvent.currentTime documentation>
+getCurrentTimeUnsafe :: (MonadDOM m, HasCallStack) => AnimationPlaybackEvent -> m CSSNumberish
+getCurrentTimeUnsafe self = liftDOM ((((self ^. js "currentTime") >>= 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 (((self ^. js "currentTime") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationPlaybackEvent/timelineTime MDN AnimationPlaybackEvent.timelineTime documentation>
+getTimelineTime :: (MonadDOM m) => AnimationPlaybackEvent -> m (Maybe CSSNumberish)
+getTimelineTime self = liftDOM (((self ^. js "timelineTime") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AnimationPlaybackEvent/timelineTime MDN AnimationPlaybackEvent.timelineTime documentation>
+getTimelineTimeUnsafe :: (MonadDOM m, HasCallStack) => AnimationPlaybackEvent -> m CSSNumberish
+getTimelineTimeUnsafe self = liftDOM ((((self ^. js "timelineTime") >>= 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 (((self ^. js "timelineTime") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AnimationPlaybackEventInit.hs b/src/JSDOM/Generated/AnimationPlaybackEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AnimationPlaybackEventInit.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-2 (webref). Do not edit.
+module JSDOM.Generated.AnimationPlaybackEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/web-animations-2/#dictdef-animationplaybackeventinit AnimationPlaybackEventInit specification>
+newAnimationPlaybackEventInit :: (MonadDOM m) => m AnimationPlaybackEventInit
+newAnimationPlaybackEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "currentTime" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-animationplaybackeventinit-currenttime AnimationPlaybackEventInit.currentTime specification>
+getCurrentTime :: (MonadDOM m) => AnimationPlaybackEventInit -> m (Maybe CSSNumberish)
+getCurrentTime self = liftDOM (((self ^. js "currentTime") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-animationplaybackeventinit-currenttime AnimationPlaybackEventInit.currentTime specification>
+getCurrentTimeUnsafe :: (MonadDOM m, HasCallStack) => AnimationPlaybackEventInit -> m CSSNumberish
+getCurrentTimeUnsafe self = liftDOM ((((self ^. js "currentTime") >>= 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 (((self ^. js "currentTime") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "timelineTime" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-animationplaybackeventinit-timelinetime AnimationPlaybackEventInit.timelineTime specification>
+getTimelineTime :: (MonadDOM m) => AnimationPlaybackEventInit -> m (Maybe CSSNumberish)
+getTimelineTime self = liftDOM (((self ^. js "timelineTime") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-animationplaybackeventinit-timelinetime AnimationPlaybackEventInit.timelineTime specification>
+getTimelineTimeUnsafe :: (MonadDOM m, HasCallStack) => AnimationPlaybackEventInit -> m CSSNumberish
+getTimelineTimeUnsafe self = liftDOM ((((self ^. js "timelineTime") >>= 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 (((self ^. js "timelineTime") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AnimationTimeline.hs b/src/JSDOM/Generated/AnimationTimeline.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AnimationTimeline.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module JSDOM.Generated.AnimationTimeline
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toAnimationTimeline self) ^. js "currentTime") >>= 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 (((((Types.toAnimationTimeline self) ^. js "currentTime") >>= 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 ((((Types.toAnimationTimeline self) ^. js "currentTime") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toAnimationTimeline self) ^. js "duration") >>= 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 (((((Types.toAnimationTimeline self) ^. js "duration") >>= 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 ((((Types.toAnimationTimeline self) ^. js "duration") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AnimationTrigger.hs b/src/JSDOM/Generated/AnimationTrigger.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AnimationTrigger.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from animation-triggers-1 (webref). Do not edit.
+module JSDOM.Generated.AnimationTrigger
+       (AnimationTrigger(..), gTypeAnimationTrigger)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/ApplePayError.hs b/src/JSDOM/Generated/ApplePayError.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/ApplePayError.hs
+++ /dev/null
@@ -1,82 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.ApplePayError
-       (newApplePayError, setCode, getCode, setContactField,
-        getContactField, getContactFieldUnsafe, getContactFieldUnchecked,
-        setMessage, getMessage, ApplePayError(..), gTypeApplePayError)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError Mozilla ApplePayError documentation> 
-newApplePayError ::
-                 (MonadDOM m, ToJSString message) =>
-                   ApplePayErrorCode ->
-                     Maybe ApplePayErrorContactField -> Maybe message -> m ApplePayError
-newApplePayError errorCode contactField message
-  = liftDOM
-      (ApplePayError <$>
-         new (jsg "ApplePayError")
-           [toJSVal errorCode, toJSVal contactField, toJSVal message])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.code Mozilla ApplePayError.code documentation> 
-setCode ::
-        (MonadDOM m) => ApplePayError -> ApplePayErrorCode -> m ()
-setCode self val = liftDOM (self ^. jss "code" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.code Mozilla ApplePayError.code documentation> 
-getCode :: (MonadDOM m) => ApplePayError -> m ApplePayErrorCode
-getCode self = liftDOM ((self ^. js "code") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.contactField Mozilla ApplePayError.contactField documentation> 
-setContactField ::
-                (MonadDOM m) =>
-                  ApplePayError -> Maybe ApplePayErrorContactField -> m ()
-setContactField self val
-  = liftDOM (self ^. jss "contactField" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.contactField Mozilla ApplePayError.contactField documentation> 
-getContactField ::
-                (MonadDOM m) =>
-                  ApplePayError -> m (Maybe ApplePayErrorContactField)
-getContactField self
-  = liftDOM ((self ^. js "contactField") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.contactField Mozilla ApplePayError.contactField documentation> 
-getContactFieldUnsafe ::
-                      (MonadDOM m, HasCallStack) =>
-                        ApplePayError -> m ApplePayErrorContactField
-getContactFieldUnsafe self
-  = liftDOM
-      (((self ^. js "contactField") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.contactField Mozilla ApplePayError.contactField documentation> 
-getContactFieldUnchecked ::
-                         (MonadDOM m) => ApplePayError -> m ApplePayErrorContactField
-getContactFieldUnchecked self
-  = liftDOM ((self ^. js "contactField") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.message Mozilla ApplePayError.message documentation> 
-setMessage ::
-           (MonadDOM m, ToJSString val) => ApplePayError -> val -> m ()
-setMessage self val = liftDOM (self ^. jss "message" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.message Mozilla ApplePayError.message documentation> 
-getMessage ::
-           (MonadDOM m, FromJSString result) => ApplePayError -> m result
-getMessage self
-  = liftDOM ((self ^. js "message") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/ApplePayPaymentAuthorizedEvent.hs b/src/JSDOM/Generated/ApplePayPaymentAuthorizedEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/ApplePayPaymentAuthorizedEvent.hs
+++ /dev/null
@@ -1,27 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.ApplePayPaymentAuthorizedEvent
-       (getPayment, ApplePayPaymentAuthorizedEvent(..),
-        gTypeApplePayPaymentAuthorizedEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPaymentAuthorizedEvent.payment Mozilla ApplePayPaymentAuthorizedEvent.payment documentation> 
-getPayment ::
-           (MonadDOM m) => ApplePayPaymentAuthorizedEvent -> m ApplePayPayment
-getPayment self
-  = liftDOM ((self ^. js "payment") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/ApplePayPaymentMethodSelectedEvent.hs b/src/JSDOM/Generated/ApplePayPaymentMethodSelectedEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/ApplePayPaymentMethodSelectedEvent.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.ApplePayPaymentMethodSelectedEvent
-       (getPaymentMethod, ApplePayPaymentMethodSelectedEvent(..),
-        gTypeApplePayPaymentMethodSelectedEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPaymentMethodSelectedEvent.paymentMethod Mozilla ApplePayPaymentMethodSelectedEvent.paymentMethod documentation> 
-getPaymentMethod ::
-                 (MonadDOM m) =>
-                   ApplePayPaymentMethodSelectedEvent -> m ApplePayPaymentMethod
-getPaymentMethod self
-  = liftDOM ((self ^. js "paymentMethod") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/ApplePaySession.hs b/src/JSDOM/Generated/ApplePaySession.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/ApplePaySession.hs
+++ /dev/null
@@ -1,249 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.ApplePaySession
-       (newApplePaySession, supportsVersion, supportsVersion_,
-        canMakePayments, canMakePayments_, canMakePaymentsWithActiveCard,
-        canMakePaymentsWithActiveCard_, openPaymentSetup,
-        openPaymentSetup_, begin, abort, completeMerchantValidation,
-        completeShippingMethodSelectionUpdate,
-        completeShippingContactSelectionUpdate,
-        completePaymentMethodSelectionUpdate, completePaymentResult,
-        completeShippingMethodSelection, completeShippingContactSelection,
-        completePaymentMethodSelection, 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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession Mozilla ApplePaySession documentation> 
-newApplePaySession ::
-                   (MonadDOM m) => Word -> ApplePayPaymentRequest -> m ApplePaySession
-newApplePaySession version paymentRequest
-  = liftDOM
-      (ApplePaySession <$>
-         new (jsg "ApplePaySession")
-           [toJSVal version, toJSVal paymentRequest])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.supportsVersion Mozilla ApplePaySession.supportsVersion documentation> 
-supportsVersion :: (MonadDOM m) => Word -> m Bool
-supportsVersion version
-  = liftDOM
-      (((jsg "ApplePaySession") ^. jsf "supportsVersion"
-          [toJSVal version])
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.supportsVersion Mozilla ApplePaySession.supportsVersion documentation> 
-supportsVersion_ :: (MonadDOM m) => Word -> m ()
-supportsVersion_ version
-  = liftDOM
-      (void
-         ((jsg "ApplePaySession") ^. jsf "supportsVersion"
-            [toJSVal version]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePayments Mozilla ApplePaySession.canMakePayments documentation> 
-canMakePayments :: (MonadDOM m) => m Bool
-canMakePayments
-  = liftDOM
-      (((jsg "ApplePaySession") ^. jsf "canMakePayments" ()) >>=
-         valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePayments Mozilla ApplePaySession.canMakePayments documentation> 
-canMakePayments_ :: (MonadDOM m) => m ()
-canMakePayments_
-  = liftDOM
-      (void ((jsg "ApplePaySession") ^. jsf "canMakePayments" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePaymentsWithActiveCard Mozilla ApplePaySession.canMakePaymentsWithActiveCard documentation> 
-canMakePaymentsWithActiveCard ::
-                              (MonadDOM m, ToJSString merchantIdentifier) =>
-                                merchantIdentifier -> m Bool
-canMakePaymentsWithActiveCard merchantIdentifier
-  = liftDOM
-      ((((jsg "ApplePaySession") ^. jsf "canMakePaymentsWithActiveCard"
-           [toJSVal merchantIdentifier])
-          >>= readPromise)
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePaymentsWithActiveCard Mozilla ApplePaySession.canMakePaymentsWithActiveCard documentation> 
-canMakePaymentsWithActiveCard_ ::
-                               (MonadDOM m, ToJSString merchantIdentifier) =>
-                                 merchantIdentifier -> m ()
-canMakePaymentsWithActiveCard_ merchantIdentifier
-  = liftDOM
-      (void
-         ((jsg "ApplePaySession") ^. jsf "canMakePaymentsWithActiveCard"
-            [toJSVal merchantIdentifier]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.openPaymentSetup Mozilla ApplePaySession.openPaymentSetup documentation> 
-openPaymentSetup ::
-                 (MonadDOM m, ToJSString merchantIdentifier) =>
-                   merchantIdentifier -> m Bool
-openPaymentSetup merchantIdentifier
-  = liftDOM
-      ((((jsg "ApplePaySession") ^. jsf "openPaymentSetup"
-           [toJSVal merchantIdentifier])
-          >>= readPromise)
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.openPaymentSetup Mozilla ApplePaySession.openPaymentSetup documentation> 
-openPaymentSetup_ ::
-                  (MonadDOM m, ToJSString merchantIdentifier) =>
-                    merchantIdentifier -> m ()
-openPaymentSetup_ merchantIdentifier
-  = liftDOM
-      (void
-         ((jsg "ApplePaySession") ^. jsf "openPaymentSetup"
-            [toJSVal merchantIdentifier]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.begin Mozilla ApplePaySession.begin documentation> 
-begin :: (MonadDOM m) => ApplePaySession -> m ()
-begin self = liftDOM (void (self ^. jsf "begin" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.abort Mozilla ApplePaySession.abort documentation> 
-abort :: (MonadDOM m) => ApplePaySession -> m ()
-abort self = liftDOM (void (self ^. jsf "abort" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completeMerchantValidation Mozilla ApplePaySession.completeMerchantValidation documentation> 
-completeMerchantValidation ::
-                           (MonadDOM m, ToJSVal merchantSession) =>
-                             ApplePaySession -> merchantSession -> m ()
-completeMerchantValidation self merchantSession
-  = liftDOM
-      (void
-         (self ^. jsf "completeMerchantValidation"
-            [toJSVal merchantSession]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completeShippingMethodSelection Mozilla ApplePaySession.completeShippingMethodSelection documentation> 
-completeShippingMethodSelectionUpdate ::
-                                      (MonadDOM m) =>
-                                        ApplePaySession -> ApplePayShippingMethodUpdate -> m ()
-completeShippingMethodSelectionUpdate self update
-  = liftDOM
-      (void
-         (self ^. jsf "completeShippingMethodSelection" [toJSVal update]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completeShippingContactSelection Mozilla ApplePaySession.completeShippingContactSelection documentation> 
-completeShippingContactSelectionUpdate ::
-                                       (MonadDOM m) =>
-                                         ApplePaySession -> ApplePayShippingContactUpdate -> m ()
-completeShippingContactSelectionUpdate self update
-  = liftDOM
-      (void
-         (self ^. jsf "completeShippingContactSelection" [toJSVal update]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completePaymentMethodSelection Mozilla ApplePaySession.completePaymentMethodSelection documentation> 
-completePaymentMethodSelectionUpdate ::
-                                     (MonadDOM m) =>
-                                       ApplePaySession -> ApplePayPaymentMethodUpdate -> m ()
-completePaymentMethodSelectionUpdate self update
-  = liftDOM
-      (void
-         (self ^. jsf "completePaymentMethodSelection" [toJSVal update]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completePayment Mozilla ApplePaySession.completePayment documentation> 
-completePaymentResult ::
-                      (MonadDOM m) =>
-                        ApplePaySession -> ApplePayPaymentAuthorizationResult -> m ()
-completePaymentResult self result
-  = liftDOM (void (self ^. jsf "completePayment" [toJSVal result]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completeShippingMethodSelection Mozilla ApplePaySession.completeShippingMethodSelection documentation> 
-completeShippingMethodSelection ::
-                                (MonadDOM m) =>
-                                  ApplePaySession ->
-                                    Word -> ApplePayLineItem -> [ApplePayLineItem] -> m ()
-completeShippingMethodSelection self status newTotal newLineItems
-  = liftDOM
-      (void
-         (self ^. jsf "completeShippingMethodSelection"
-            [toJSVal status, toJSVal newTotal, toJSVal (array newLineItems)]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completeShippingContactSelection Mozilla ApplePaySession.completeShippingContactSelection documentation> 
-completeShippingContactSelection ::
-                                 (MonadDOM m) =>
-                                   ApplePaySession ->
-                                     Word ->
-                                       [ApplePayShippingMethod] ->
-                                         ApplePayLineItem -> [ApplePayLineItem] -> m ()
-completeShippingContactSelection self status newShippingMethods
-  newTotal newLineItems
-  = liftDOM
-      (void
-         (self ^. jsf "completeShippingContactSelection"
-            [toJSVal status, toJSVal (array newShippingMethods),
-             toJSVal newTotal, toJSVal (array newLineItems)]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completePaymentMethodSelection Mozilla ApplePaySession.completePaymentMethodSelection documentation> 
-completePaymentMethodSelection ::
-                               (MonadDOM m) =>
-                                 ApplePaySession -> ApplePayLineItem -> [ApplePayLineItem] -> m ()
-completePaymentMethodSelection self newTotal newLineItems
-  = liftDOM
-      (void
-         (self ^. jsf "completePaymentMethodSelection"
-            [toJSVal newTotal, toJSVal (array newLineItems)]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completePayment Mozilla ApplePaySession.completePayment documentation> 
-completePayment :: (MonadDOM m) => ApplePaySession -> Word -> m ()
-completePayment self status
-  = liftDOM (void (self ^. jsf "completePayment" [toJSVal 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/JSDOM/Generated/ApplePayShippingContactSelectedEvent.hs b/src/JSDOM/Generated/ApplePayShippingContactSelectedEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/ApplePayShippingContactSelectedEvent.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.ApplePayShippingContactSelectedEvent
-       (getShippingContact, ApplePayShippingContactSelectedEvent(..),
-        gTypeApplePayShippingContactSelectedEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayShippingContactSelectedEvent.shippingContact Mozilla ApplePayShippingContactSelectedEvent.shippingContact documentation> 
-getShippingContact ::
-                   (MonadDOM m) =>
-                     ApplePayShippingContactSelectedEvent -> m ApplePayPaymentContact
-getShippingContact self
-  = liftDOM ((self ^. js "shippingContact") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/ApplePayShippingMethodSelectedEvent.hs b/src/JSDOM/Generated/ApplePayShippingMethodSelectedEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/ApplePayShippingMethodSelectedEvent.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.ApplePayShippingMethodSelectedEvent
-       (getShippingMethod, ApplePayShippingMethodSelectedEvent(..),
-        gTypeApplePayShippingMethodSelectedEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayShippingMethodSelectedEvent.shippingMethod Mozilla ApplePayShippingMethodSelectedEvent.shippingMethod documentation> 
-getShippingMethod ::
-                  (MonadDOM m) =>
-                    ApplePayShippingMethodSelectedEvent -> m ApplePayShippingMethod
-getShippingMethod self
-  = liftDOM ((self ^. js "shippingMethod") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/ApplePayValidateMerchantEvent.hs b/src/JSDOM/Generated/ApplePayValidateMerchantEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/ApplePayValidateMerchantEvent.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.ApplePayValidateMerchantEvent
-       (getValidationURL, ApplePayValidateMerchantEvent(..),
-        gTypeApplePayValidateMerchantEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayValidateMerchantEvent.validationURL Mozilla ApplePayValidateMerchantEvent.validationURL documentation> 
-getValidationURL ::
-                 (MonadDOM m, FromJSString result) =>
-                   ApplePayValidateMerchantEvent -> m result
-getValidationURL self
-  = liftDOM ((self ^. js "validationURL") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/ApplicationCache.hs b/src/JSDOM/Generated/ApplicationCache.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/ApplicationCache.hs
+++ /dev/null
@@ -1,79 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.ApplicationCache
-       (update, swapCache, abort, pattern UNCACHED, pattern IDLE,
-        pattern CHECKING, pattern DOWNLOADING, pattern UPDATEREADY,
-        pattern OBSOLETE, getStatus, checking, error, noUpdate,
-        downloading, progress, updateReady, cached, obsolete,
-        ApplicationCache(..), gTypeApplicationCache)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.update Mozilla ApplicationCache.update documentation> 
-update :: (MonadDOM m) => ApplicationCache -> m ()
-update self = liftDOM (void (self ^. jsf "update" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.swapCache Mozilla ApplicationCache.swapCache documentation> 
-swapCache :: (MonadDOM m) => ApplicationCache -> m ()
-swapCache self = liftDOM (void (self ^. jsf "swapCache" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.abort Mozilla ApplicationCache.abort documentation> 
-abort :: (MonadDOM m) => ApplicationCache -> m ()
-abort self = liftDOM (void (self ^. jsf "abort" ()))
-pattern UNCACHED = 0
-pattern IDLE = 1
-pattern CHECKING = 2
-pattern DOWNLOADING = 3
-pattern UPDATEREADY = 4
-pattern OBSOLETE = 5
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.status Mozilla ApplicationCache.status documentation> 
-getStatus :: (MonadDOM m) => ApplicationCache -> m Word
-getStatus self
-  = liftDOM (round <$> ((self ^. js "status") >>= valToNumber))
-
--- | <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/JSDOM/Generated/AriaNotificationOptions.hs b/src/JSDOM/Generated/AriaNotificationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AriaNotificationOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from wai-aria-1.3 (webref). Do not edit.
+module JSDOM.Generated.AriaNotificationOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/aria/#dom-arianotificationoptions AriaNotificationOptions specification>
+newAriaNotificationOptions :: (MonadDOM m) => m AriaNotificationOptions
+newAriaNotificationOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/aria/#dom-arianotificationoptions-priority AriaNotificationOptions.priority specification>
+setPriority :: (MonadDOM m) => AriaNotificationOptions -> AriaNotifyPriority -> m ()
+setPriority self val = liftDOM (void (self ^. jss "priority" (toJSVal val)))
+
+-- | <https://w3c.github.io/aria/#dom-arianotificationoptions-priority AriaNotificationOptions.priority specification>
+getPriority :: (MonadDOM m) => AriaNotificationOptions -> m (Maybe AriaNotifyPriority)
+getPriority self = liftDOM (((self ^. js "priority") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/aria/#dom-arianotificationoptions-priority AriaNotificationOptions.priority specification>
+getPriorityUnsafe :: (MonadDOM m, HasCallStack) => AriaNotificationOptions -> m AriaNotifyPriority
+getPriorityUnsafe self = liftDOM ((((self ^. js "priority") >>= 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 (((self ^. js "priority") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AssignedNodesOptions.hs b/src/JSDOM/Generated/AssignedNodesOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AssignedNodesOptions.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.AssignedNodesOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/scripting.html#assignednodesoptions AssignedNodesOptions specification>
+newAssignedNodesOptions :: (MonadDOM m) => m AssignedNodesOptions
+newAssignedNodesOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+setFlatten :: (MonadDOM m) => AssignedNodesOptions -> Bool -> m ()
+setFlatten self val = liftDOM (void (self ^. jss "flatten" (toJSVal val)))
+
+getFlatten :: (MonadDOM m) => AssignedNodesOptions -> m (Maybe Bool)
+getFlatten self = liftDOM (((self ^. js "flatten") >>= fromJSValUnchecked))
+
+getFlattenUnsafe :: (MonadDOM m, HasCallStack) => AssignedNodesOptions -> m Bool
+getFlattenUnsafe self = liftDOM ((((self ^. js "flatten") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getFlattenUnchecked :: (MonadDOM m) => AssignedNodesOptions -> m Bool
+getFlattenUnchecked self = liftDOM (((self ^. js "flatten") >>= valToBool))
diff --git a/src/JSDOM/Generated/Attr.hs b/src/JSDOM/Generated/Attr.hs
--- a/src/JSDOM/Generated/Attr.hs
+++ b/src/JSDOM/Generated/Attr.hs
@@ -1,106 +1,72 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.Attr
-       (getNamespaceURI, getNamespaceURIUnsafe, getNamespaceURIUnchecked,
-        getPrefix, getPrefixUnsafe, getPrefixUnchecked, getLocalName,
-        getName, setValue, getValue, getOwnerElement,
-        getOwnerElementUnsafe, getOwnerElementUnchecked, getSpecified,
-        Attr(..), gTypeAttr)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.namespaceURI Mozilla Attr.namespaceURI documentation> 
-getNamespaceURI ::
-                (MonadDOM m, FromJSString result) => Attr -> m (Maybe result)
-getNamespaceURI self
-  = liftDOM ((self ^. js "namespaceURI") >>= fromMaybeJSString)
+-- | <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 (((self ^. js "namespaceURI") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.namespaceURI Mozilla Attr.namespaceURI documentation> 
-getNamespaceURIUnsafe ::
-                      (MonadDOM m, HasCallStack, FromJSString result) => Attr -> m result
-getNamespaceURIUnsafe self
-  = liftDOM
-      (((self ^. js "namespaceURI") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 ((((self ^. js "namespaceURI") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.namespaceURI Mozilla Attr.namespaceURI documentation> 
-getNamespaceURIUnchecked ::
-                         (MonadDOM m, FromJSString result) => Attr -> m result
-getNamespaceURIUnchecked self
-  = liftDOM ((self ^. js "namespaceURI") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/namespaceURI MDN Attr.namespaceURI documentation>
+getNamespaceURIUnchecked :: (MonadDOM m, FromJSString result) => Attr -> m result
+getNamespaceURIUnchecked self = liftDOM (((self ^. js "namespaceURI") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.prefix Mozilla Attr.prefix documentation> 
-getPrefix ::
-          (MonadDOM m, FromJSString result) => Attr -> m (Maybe result)
-getPrefix self
-  = liftDOM ((self ^. js "prefix") >>= fromMaybeJSString)
+-- | <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 (((self ^. js "prefix") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.prefix Mozilla Attr.prefix documentation> 
-getPrefixUnsafe ::
-                (MonadDOM m, HasCallStack, FromJSString result) => Attr -> m result
-getPrefixUnsafe self
-  = liftDOM
-      (((self ^. js "prefix") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 ((((self ^. js "prefix") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.prefix Mozilla Attr.prefix documentation> 
-getPrefixUnchecked ::
-                   (MonadDOM m, FromJSString result) => Attr -> m result
-getPrefixUnchecked self
-  = liftDOM ((self ^. js "prefix") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/prefix MDN Attr.prefix documentation>
+getPrefixUnchecked :: (MonadDOM m, FromJSString result) => Attr -> m result
+getPrefixUnchecked self = liftDOM (((self ^. js "prefix") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.localName Mozilla Attr.localName documentation> 
-getLocalName ::
-             (MonadDOM m, FromJSString result) => Attr -> m result
-getLocalName self
-  = liftDOM ((self ^. js "localName") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/localName MDN Attr.localName documentation>
+getLocalName :: (MonadDOM m, FromJSString result) => Attr -> m result
+getLocalName self = liftDOM (((self ^. js "localName") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.name Mozilla Attr.name documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/name MDN Attr.name documentation>
 getName :: (MonadDOM m, FromJSString result) => Attr -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.value Mozilla Attr.value documentation> 
+-- | <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 (self ^. jss "value" (toJSVal val))
+setValue self val = liftDOM (void (self ^. jss "value" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.value Mozilla Attr.value documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/value MDN Attr.value documentation>
 getValue :: (MonadDOM m, FromJSString result) => Attr -> m result
-getValue self
-  = liftDOM ((self ^. js "value") >>= fromJSValUnchecked)
+getValue self = liftDOM (((self ^. js "value") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.ownerElement Mozilla Attr.ownerElement documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/ownerElement MDN Attr.ownerElement documentation>
 getOwnerElement :: (MonadDOM m) => Attr -> m (Maybe Element)
-getOwnerElement self
-  = liftDOM ((self ^. js "ownerElement") >>= fromJSVal)
+getOwnerElement self = liftDOM (((self ^. js "ownerElement") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.ownerElement Mozilla Attr.ownerElement documentation> 
-getOwnerElementUnsafe ::
-                      (MonadDOM m, HasCallStack) => Attr -> m Element
-getOwnerElementUnsafe self
-  = liftDOM
-      (((self ^. js "ownerElement") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/ownerElement MDN Attr.ownerElement documentation>
+getOwnerElementUnsafe :: (MonadDOM m, HasCallStack) => Attr -> m Element
+getOwnerElementUnsafe self = liftDOM ((((self ^. js "ownerElement") >>= 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> 
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/ownerElement MDN Attr.ownerElement documentation>
 getOwnerElementUnchecked :: (MonadDOM m) => Attr -> m Element
-getOwnerElementUnchecked self
-  = liftDOM ((self ^. js "ownerElement") >>= fromJSValUnchecked)
+getOwnerElementUnchecked self = liftDOM (((self ^. js "ownerElement") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.specified Mozilla Attr.specified documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Attr/specified MDN Attr.specified documentation>
 getSpecified :: (MonadDOM m) => Attr -> m Bool
-getSpecified self
-  = liftDOM ((self ^. js "specified") >>= valToBool)
+getSpecified self = liftDOM (((self ^. js "specified") >>= valToBool))
diff --git a/src/JSDOM/Generated/AudioBuffer.hs b/src/JSDOM/Generated/AudioBuffer.hs
--- a/src/JSDOM/Generated/AudioBuffer.hs
+++ b/src/JSDOM/Generated/AudioBuffer.hs
@@ -1,68 +1,52 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.AudioBuffer
-       (getChannelData, getChannelData_, getLength, getDuration,
-        getSampleRate, setGain, getGain, getNumberOfChannels,
-        AudioBuffer(..), gTypeAudioBuffer)
+       (newAudioBuffer, copyFromChannel, copyToChannel, getChannelData, getChannelData_, getSampleRate, getLength, getDuration, getNumberOfChannels, AudioBuffer(..), gTypeAudioBuffer)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.getChannelData Mozilla AudioBuffer.getChannelData documentation> 
-getChannelData ::
-               (MonadDOM m) => AudioBuffer -> Word -> m Float32Array
-getChannelData self channelIndex
-  = liftDOM
-      ((self ^. jsf "getChannelData" [toJSVal channelIndex]) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/AudioBuffer MDN AudioBuffer. documentation>
+newAudioBuffer :: (MonadDOM m) => AudioBufferOptions -> m AudioBuffer
+newAudioBuffer options = liftDOM (((new (jsg "AudioBuffer") [toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.getChannelData Mozilla AudioBuffer.getChannelData documentation> 
-getChannelData_ :: (MonadDOM m) => AudioBuffer -> Word -> m ()
-getChannelData_ self channelIndex
-  = liftDOM
-      (void (self ^. jsf "getChannelData" [toJSVal channelIndex]))
+-- | <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 (self ^. jsf "copyFromChannel" [toJSVal destination, toJSVal channelNumber, P.maybe (P.return jsUndefined) toJSVal bufferOffset]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.length Mozilla AudioBuffer.length documentation> 
-getLength :: (MonadDOM m) => AudioBuffer -> m Int
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+-- | <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 (self ^. jsf "copyToChannel" [toJSVal source, toJSVal channelNumber, P.maybe (P.return jsUndefined) toJSVal bufferOffset]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.duration Mozilla AudioBuffer.duration documentation> 
-getDuration :: (MonadDOM m) => AudioBuffer -> m Float
-getDuration self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "duration") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/getChannelData MDN AudioBuffer.getChannelData documentation>
+getChannelData :: (MonadDOM m) => AudioBuffer -> Word -> m Float32Array
+getChannelData self channel = liftDOM (((self ^. jsf "getChannelData" [toJSVal channel]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.sampleRate Mozilla AudioBuffer.sampleRate documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/getChannelData MDN AudioBuffer.getChannelData documentation>
+getChannelData_ :: (MonadDOM m) => AudioBuffer -> Word -> m ()
+getChannelData_ self channel = liftDOM (void (self ^. jsf "getChannelData" [toJSVal channel]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/sampleRate MDN AudioBuffer.sampleRate documentation>
 getSampleRate :: (MonadDOM m) => AudioBuffer -> m Float
-getSampleRate self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "sampleRate") >>= valToNumber))
+getSampleRate self = liftDOM ((P.realToFrac <$> ((self ^. js "sampleRate") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.gain Mozilla AudioBuffer.gain documentation> 
-setGain :: (MonadDOM m) => AudioBuffer -> Float -> m ()
-setGain self val = liftDOM (self ^. jss "gain" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/length MDN AudioBuffer.length documentation>
+getLength :: (MonadDOM m) => AudioBuffer -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.gain Mozilla AudioBuffer.gain documentation> 
-getGain :: (MonadDOM m) => AudioBuffer -> m Float
-getGain self
-  = liftDOM (realToFrac <$> ((self ^. js "gain") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/duration MDN AudioBuffer.duration documentation>
+getDuration :: (MonadDOM m) => AudioBuffer -> m Double
+getDuration self = liftDOM (((self ^. js "duration") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.numberOfChannels Mozilla AudioBuffer.numberOfChannels documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBuffer/numberOfChannels MDN AudioBuffer.numberOfChannels documentation>
 getNumberOfChannels :: (MonadDOM m) => AudioBuffer -> m Word
-getNumberOfChannels self
-  = liftDOM
-      (round <$> ((self ^. js "numberOfChannels") >>= valToNumber))
+getNumberOfChannels self = liftDOM ((P.round <$> ((self ^. js "numberOfChannels") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/AudioBufferCallback.hs b/src/JSDOM/Generated/AudioBufferCallback.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/AudioBufferCallback.hs
+++ /dev/null
@@ -1,54 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.AudioBufferCallback
-       (newAudioBufferCallback, newAudioBufferCallbackSync,
-        newAudioBufferCallbackAsync, AudioBufferCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferCallback Mozilla AudioBufferCallback documentation> 
-newAudioBufferCallback ::
-                       (MonadDOM m) => (AudioBuffer -> JSM ()) -> m AudioBufferCallback
-newAudioBufferCallback callback
-  = liftDOM
-      (AudioBufferCallback . Callback <$>
-         function
-           (\ _ _ [audioBuffer] ->
-              fromJSValUnchecked audioBuffer >>=
-                \ audioBuffer' -> callback audioBuffer'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferCallback Mozilla AudioBufferCallback documentation> 
-newAudioBufferCallbackSync ::
-                           (MonadDOM m) => (AudioBuffer -> JSM ()) -> m AudioBufferCallback
-newAudioBufferCallbackSync callback
-  = liftDOM
-      (AudioBufferCallback . Callback <$>
-         function
-           (\ _ _ [audioBuffer] ->
-              fromJSValUnchecked audioBuffer >>=
-                \ audioBuffer' -> callback audioBuffer'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferCallback Mozilla AudioBufferCallback documentation> 
-newAudioBufferCallbackAsync ::
-                            (MonadDOM m) => (AudioBuffer -> JSM ()) -> m AudioBufferCallback
-newAudioBufferCallbackAsync callback
-  = liftDOM
-      (AudioBufferCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [audioBuffer] ->
-              fromJSValUnchecked audioBuffer >>=
-                \ audioBuffer' -> callback audioBuffer'))
diff --git a/src/JSDOM/Generated/AudioBufferOptions.hs b/src/JSDOM/Generated/AudioBufferOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioBufferOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.AudioBufferOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#AudioBufferOptions AudioBufferOptions specification>
+newAudioBufferOptions :: (MonadDOM m) => Word -> Float -> m AudioBufferOptions
+newAudioBufferOptions length sampleRate = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "length" (toJSVal length)) P.>> (o ^. jss "sampleRate" (toJSVal sampleRate)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-numberofchannels AudioBufferOptions.numberOfChannels specification>
+setNumberOfChannels :: (MonadDOM m) => AudioBufferOptions -> Word -> m ()
+setNumberOfChannels self val = liftDOM (void (self ^. jss "numberOfChannels" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-numberofchannels AudioBufferOptions.numberOfChannels specification>
+getNumberOfChannels :: (MonadDOM m) => AudioBufferOptions -> m (Maybe Word)
+getNumberOfChannels self = liftDOM (((self ^. js "numberOfChannels") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-numberofchannels AudioBufferOptions.numberOfChannels specification>
+getNumberOfChannelsUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferOptions -> m Word
+getNumberOfChannelsUnsafe self = liftDOM ((((self ^. js "numberOfChannels") >>= 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 ((P.round <$> ((self ^. js "numberOfChannels") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-length AudioBufferOptions.length specification>
+setLength :: (MonadDOM m) => AudioBufferOptions -> Word -> m ()
+setLength self val = liftDOM (void (self ^. jss "length" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-length AudioBufferOptions.length specification>
+getLength :: (MonadDOM m) => AudioBufferOptions -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-samplerate AudioBufferOptions.sampleRate specification>
+setSampleRate :: (MonadDOM m) => AudioBufferOptions -> Float -> m ()
+setSampleRate self val = liftDOM (void (self ^. jss "sampleRate" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobufferoptions-samplerate AudioBufferOptions.sampleRate specification>
+getSampleRate :: (MonadDOM m) => AudioBufferOptions -> m Float
+getSampleRate self = liftDOM ((P.realToFrac <$> ((self ^. js "sampleRate") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/AudioBufferSourceNode.hs b/src/JSDOM/Generated/AudioBufferSourceNode.hs
--- a/src/JSDOM/Generated/AudioBufferSourceNode.hs
+++ b/src/JSDOM/Generated/AudioBufferSourceNode.hs
@@ -1,118 +1,72 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.AudioBufferSourceNode
-       (start, stop, pattern UNSCHEDULED_STATE, pattern SCHEDULED_STATE,
-        pattern PLAYING_STATE, pattern FINISHED_STATE, setBuffer,
-        getBuffer, getBufferUnsafe, getBufferUnchecked, getPlaybackState,
-        getGain, getPlaybackRate, setLoop, getLoop, setLoopStart,
-        getLoopStart, setLoopEnd, getLoopEnd, ended,
-        AudioBufferSourceNode(..), gTypeAudioBufferSourceNode)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.start Mozilla AudioBufferSourceNode.start documentation> 
-start ::
-      (MonadDOM m) =>
-        AudioBufferSourceNode ->
-          Maybe Double -> Maybe Double -> Maybe Double -> m ()
-start self when grainOffset grainDuration
-  = liftDOM
-      (void
-         (self ^. jsf "start"
-            [toJSVal when, toJSVal grainOffset, toJSVal grainDuration]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.stop Mozilla AudioBufferSourceNode.stop documentation> 
-stop ::
-     (MonadDOM m) => AudioBufferSourceNode -> Maybe Double -> m ()
-stop self when = liftDOM (void (self ^. jsf "stop" [toJSVal when]))
-pattern UNSCHEDULED_STATE = 0
-pattern SCHEDULED_STATE = 1
-pattern PLAYING_STATE = 2
-pattern FINISHED_STATE = 3
+-- | <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 (((new (jsg "AudioBufferSourceNode") [toJSVal context, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.buffer Mozilla AudioBufferSourceNode.buffer documentation> 
-setBuffer ::
-          (MonadDOM m) => AudioBufferSourceNode -> Maybe AudioBuffer -> m ()
-setBuffer self val = liftDOM (self ^. jss "buffer" (toJSVal val))
+-- | <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 (self ^. jsf "start" [P.maybe (P.return jsUndefined) toJSVal when, P.maybe (P.return jsUndefined) toJSVal offset, P.maybe (P.return jsUndefined) toJSVal duration]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.buffer Mozilla AudioBufferSourceNode.buffer documentation> 
-getBuffer ::
-          (MonadDOM m) => AudioBufferSourceNode -> m (Maybe AudioBuffer)
-getBuffer self = liftDOM ((self ^. js "buffer") >>= fromJSVal)
+-- | <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 (self ^. jss "buffer" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.buffer Mozilla AudioBufferSourceNode.buffer documentation> 
-getBufferUnsafe ::
-                (MonadDOM m, HasCallStack) =>
-                  AudioBufferSourceNode -> m AudioBuffer
-getBufferUnsafe self
-  = liftDOM
-      (((self ^. js "buffer") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/buffer MDN AudioBufferSourceNode.buffer documentation>
+getBuffer :: (MonadDOM m) => AudioBufferSourceNode -> m (Maybe AudioBuffer)
+getBuffer self = liftDOM (((self ^. js "buffer") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.buffer Mozilla AudioBufferSourceNode.buffer documentation> 
-getBufferUnchecked ::
-                   (MonadDOM m) => AudioBufferSourceNode -> m AudioBuffer
-getBufferUnchecked self
-  = liftDOM ((self ^. js "buffer") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/buffer MDN AudioBufferSourceNode.buffer documentation>
+getBufferUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferSourceNode -> m AudioBuffer
+getBufferUnsafe self = liftDOM ((((self ^. js "buffer") >>= 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 :: (MonadDOM m) => AudioBufferSourceNode -> m Word
-getPlaybackState self
-  = liftDOM
-      (round <$> ((self ^. js "playbackState") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/buffer MDN AudioBufferSourceNode.buffer documentation>
+getBufferUnchecked :: (MonadDOM m) => AudioBufferSourceNode -> m AudioBuffer
+getBufferUnchecked self = liftDOM (((self ^. js "buffer") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.gain Mozilla AudioBufferSourceNode.gain documentation> 
-getGain :: (MonadDOM m) => AudioBufferSourceNode -> m AudioParam
-getGain self = liftDOM ((self ^. js "gain") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/playbackRate MDN AudioBufferSourceNode.playbackRate documentation>
+getPlaybackRate :: (MonadDOM m) => AudioBufferSourceNode -> m AudioParam
+getPlaybackRate self = liftDOM (((self ^. js "playbackRate") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.playbackRate Mozilla AudioBufferSourceNode.playbackRate documentation> 
-getPlaybackRate ::
-                (MonadDOM m) => AudioBufferSourceNode -> m AudioParam
-getPlaybackRate self
-  = liftDOM ((self ^. js "playbackRate") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/detune MDN AudioBufferSourceNode.detune documentation>
+getDetune :: (MonadDOM m) => AudioBufferSourceNode -> m AudioParam
+getDetune self = liftDOM (((self ^. js "detune") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loop Mozilla AudioBufferSourceNode.loop documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loop MDN AudioBufferSourceNode.loop documentation>
 setLoop :: (MonadDOM m) => AudioBufferSourceNode -> Bool -> m ()
-setLoop self val = liftDOM (self ^. jss "loop" (toJSVal val))
+setLoop self val = liftDOM (void (self ^. jss "loop" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loop Mozilla AudioBufferSourceNode.loop documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loop MDN AudioBufferSourceNode.loop documentation>
 getLoop :: (MonadDOM m) => AudioBufferSourceNode -> m Bool
-getLoop self = liftDOM ((self ^. js "loop") >>= valToBool)
+getLoop self = liftDOM (((self ^. js "loop") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loopStart Mozilla AudioBufferSourceNode.loopStart documentation> 
-setLoopStart ::
-             (MonadDOM m) => AudioBufferSourceNode -> Double -> m ()
-setLoopStart self val
-  = liftDOM (self ^. jss "loopStart" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loopStart MDN AudioBufferSourceNode.loopStart documentation>
+setLoopStart :: (MonadDOM m) => AudioBufferSourceNode -> Double -> m ()
+setLoopStart self val = liftDOM (void (self ^. jss "loopStart" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loopStart Mozilla AudioBufferSourceNode.loopStart documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loopStart MDN AudioBufferSourceNode.loopStart documentation>
 getLoopStart :: (MonadDOM m) => AudioBufferSourceNode -> m Double
-getLoopStart self
-  = liftDOM ((self ^. js "loopStart") >>= valToNumber)
+getLoopStart self = liftDOM (((self ^. js "loopStart") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loopEnd Mozilla AudioBufferSourceNode.loopEnd documentation> 
-setLoopEnd ::
-           (MonadDOM m) => AudioBufferSourceNode -> Double -> m ()
-setLoopEnd self val = liftDOM (self ^. jss "loopEnd" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loopEnd MDN AudioBufferSourceNode.loopEnd documentation>
+setLoopEnd :: (MonadDOM m) => AudioBufferSourceNode -> Double -> m ()
+setLoopEnd self val = liftDOM (void (self ^. jss "loopEnd" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loopEnd Mozilla AudioBufferSourceNode.loopEnd documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loopEnd MDN AudioBufferSourceNode.loopEnd documentation>
 getLoopEnd :: (MonadDOM m) => AudioBufferSourceNode -> m Double
-getLoopEnd self = liftDOM ((self ^. js "loopEnd") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.onended Mozilla AudioBufferSourceNode.onended documentation> 
-ended :: EventName AudioBufferSourceNode Event
-ended = unsafeEventName (toJSString "ended")
+getLoopEnd self = liftDOM (((self ^. js "loopEnd") >>= valToNumber))
diff --git a/src/JSDOM/Generated/AudioBufferSourceOptions.hs b/src/JSDOM/Generated/AudioBufferSourceOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioBufferSourceOptions.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.AudioBufferSourceOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#AudioBufferSourceOptions AudioBufferSourceOptions specification>
+newAudioBufferSourceOptions :: (MonadDOM m) => m AudioBufferSourceOptions
+newAudioBufferSourceOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "buffer" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-buffer AudioBufferSourceOptions.buffer specification>
+getBuffer :: (MonadDOM m) => AudioBufferSourceOptions -> m (Maybe AudioBuffer)
+getBuffer self = liftDOM (((self ^. js "buffer") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-buffer AudioBufferSourceOptions.buffer specification>
+getBufferUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferSourceOptions -> m AudioBuffer
+getBufferUnsafe self = liftDOM ((((self ^. js "buffer") >>= 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 (((self ^. js "buffer") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-detune AudioBufferSourceOptions.detune specification>
+setDetune :: (MonadDOM m) => AudioBufferSourceOptions -> Float -> m ()
+setDetune self val = liftDOM (void (self ^. jss "detune" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-detune AudioBufferSourceOptions.detune specification>
+getDetune :: (MonadDOM m) => AudioBufferSourceOptions -> m (Maybe Float)
+getDetune self = liftDOM (((self ^. js "detune") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-detune AudioBufferSourceOptions.detune specification>
+getDetuneUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferSourceOptions -> m Float
+getDetuneUnsafe self = liftDOM ((((self ^. js "detune") >>= 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 ((P.realToFrac <$> ((self ^. js "detune") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loop AudioBufferSourceOptions.loop specification>
+setLoop :: (MonadDOM m) => AudioBufferSourceOptions -> Bool -> m ()
+setLoop self val = liftDOM (void (self ^. jss "loop" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loop AudioBufferSourceOptions.loop specification>
+getLoop :: (MonadDOM m) => AudioBufferSourceOptions -> m (Maybe Bool)
+getLoop self = liftDOM (((self ^. js "loop") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loop AudioBufferSourceOptions.loop specification>
+getLoopUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferSourceOptions -> m Bool
+getLoopUnsafe self = liftDOM ((((self ^. js "loop") >>= 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 (((self ^. js "loop") >>= valToBool))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loopend AudioBufferSourceOptions.loopEnd specification>
+setLoopEnd :: (MonadDOM m) => AudioBufferSourceOptions -> Double -> m ()
+setLoopEnd self val = liftDOM (void (self ^. jss "loopEnd" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loopend AudioBufferSourceOptions.loopEnd specification>
+getLoopEnd :: (MonadDOM m) => AudioBufferSourceOptions -> m (Maybe Double)
+getLoopEnd self = liftDOM (((self ^. js "loopEnd") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loopend AudioBufferSourceOptions.loopEnd specification>
+getLoopEndUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferSourceOptions -> m Double
+getLoopEndUnsafe self = liftDOM ((((self ^. js "loopEnd") >>= 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 (((self ^. js "loopEnd") >>= valToNumber))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loopstart AudioBufferSourceOptions.loopStart specification>
+setLoopStart :: (MonadDOM m) => AudioBufferSourceOptions -> Double -> m ()
+setLoopStart self val = liftDOM (void (self ^. jss "loopStart" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loopstart AudioBufferSourceOptions.loopStart specification>
+getLoopStart :: (MonadDOM m) => AudioBufferSourceOptions -> m (Maybe Double)
+getLoopStart self = liftDOM (((self ^. js "loopStart") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-loopstart AudioBufferSourceOptions.loopStart specification>
+getLoopStartUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferSourceOptions -> m Double
+getLoopStartUnsafe self = liftDOM ((((self ^. js "loopStart") >>= 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 (((self ^. js "loopStart") >>= valToNumber))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-playbackrate AudioBufferSourceOptions.playbackRate specification>
+setPlaybackRate :: (MonadDOM m) => AudioBufferSourceOptions -> Float -> m ()
+setPlaybackRate self val = liftDOM (void (self ^. jss "playbackRate" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-playbackrate AudioBufferSourceOptions.playbackRate specification>
+getPlaybackRate :: (MonadDOM m) => AudioBufferSourceOptions -> m (Maybe Float)
+getPlaybackRate self = liftDOM (((self ^. js "playbackRate") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiobuffersourceoptions-playbackrate AudioBufferSourceOptions.playbackRate specification>
+getPlaybackRateUnsafe :: (MonadDOM m, HasCallStack) => AudioBufferSourceOptions -> m Float
+getPlaybackRateUnsafe self = liftDOM ((((self ^. js "playbackRate") >>= 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 ((P.realToFrac <$> ((self ^. js "playbackRate") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/AudioConfiguration.hs b/src/JSDOM/Generated/AudioConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioConfiguration.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module JSDOM.Generated.AudioConfiguration
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/media-capabilities/#dictdef-audioconfiguration AudioConfiguration specification>
+newAudioConfiguration :: (MonadDOM m, ToJSString contentType) => contentType -> m AudioConfiguration
+newAudioConfiguration contentType = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "contentType" (toJSVal contentType)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "contentType" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-contenttype AudioConfiguration.contentType specification>
+getContentType :: (MonadDOM m, FromJSString result) => AudioConfiguration -> m result
+getContentType self = liftDOM (((self ^. js "contentType") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "channels" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-channels AudioConfiguration.channels specification>
+getChannels :: (MonadDOM m, FromJSString result) => AudioConfiguration -> m (Maybe result)
+getChannels self = liftDOM (((self ^. js "channels") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-channels AudioConfiguration.channels specification>
+getChannelsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AudioConfiguration -> m result
+getChannelsUnsafe self = liftDOM ((((self ^. js "channels") >>= fromMaybeJSString) >>= 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 (((self ^. js "channels") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-bitrate AudioConfiguration.bitrate specification>
+setBitrate :: (MonadDOM m) => AudioConfiguration -> Word53 -> m ()
+setBitrate self val = liftDOM (void (self ^. jss "bitrate" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-bitrate AudioConfiguration.bitrate specification>
+getBitrate :: (MonadDOM m) => AudioConfiguration -> m (Maybe Word53)
+getBitrate self = liftDOM (((self ^. js "bitrate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-bitrate AudioConfiguration.bitrate specification>
+getBitrateUnsafe :: (MonadDOM m, HasCallStack) => AudioConfiguration -> m Word53
+getBitrateUnsafe self = liftDOM ((((self ^. js "bitrate") >>= 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 (((self ^. js "bitrate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-samplerate AudioConfiguration.samplerate specification>
+setSamplerate :: (MonadDOM m) => AudioConfiguration -> Word -> m ()
+setSamplerate self val = liftDOM (void (self ^. jss "samplerate" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-samplerate AudioConfiguration.samplerate specification>
+getSamplerate :: (MonadDOM m) => AudioConfiguration -> m (Maybe Word)
+getSamplerate self = liftDOM (((self ^. js "samplerate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-samplerate AudioConfiguration.samplerate specification>
+getSamplerateUnsafe :: (MonadDOM m, HasCallStack) => AudioConfiguration -> m Word
+getSamplerateUnsafe self = liftDOM ((((self ^. js "samplerate") >>= 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 ((P.round <$> ((self ^. js "samplerate") >>= valToNumber)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-spatialrendering AudioConfiguration.spatialRendering specification>
+setSpatialRendering :: (MonadDOM m) => AudioConfiguration -> Bool -> m ()
+setSpatialRendering self val = liftDOM (void (self ^. jss "spatialRendering" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-spatialrendering AudioConfiguration.spatialRendering specification>
+getSpatialRendering :: (MonadDOM m) => AudioConfiguration -> m (Maybe Bool)
+getSpatialRendering self = liftDOM (((self ^. js "spatialRendering") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-audioconfiguration-spatialrendering AudioConfiguration.spatialRendering specification>
+getSpatialRenderingUnsafe :: (MonadDOM m, HasCallStack) => AudioConfiguration -> m Bool
+getSpatialRenderingUnsafe self = liftDOM ((((self ^. js "spatialRendering") >>= 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 (((self ^. js "spatialRendering") >>= valToBool))
diff --git a/src/JSDOM/Generated/AudioContext.hs b/src/JSDOM/Generated/AudioContext.hs
--- a/src/JSDOM/Generated/AudioContext.hs
+++ b/src/JSDOM/Generated/AudioContext.hs
@@ -1,472 +1,76 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.AudioContext
-       (newAudioContext, suspend, resume, close, createBuffer,
-        createBuffer_, createBufferFromArrayBuffer,
-        createBufferFromArrayBuffer_, decodeAudioData, createBufferSource,
-        createBufferSource_, createMediaElementSource,
-        createMediaElementSource_, createMediaStreamSource,
-        createMediaStreamSource_, createMediaStreamDestination,
-        createMediaStreamDestination_, createGain, createGain_,
-        createDelay, createDelay_, createBiquadFilter, createBiquadFilter_,
-        createWaveShaper, createWaveShaper_, createPanner, createPanner_,
-        createConvolver, createConvolver_, createDynamicsCompressor,
-        createDynamicsCompressor_, createAnalyser, createAnalyser_,
-        createScriptProcessor, createScriptProcessor_, createOscillator,
-        createOscillator_, createPeriodicWave, createPeriodicWave_,
-        createChannelSplitter, createChannelSplitter_, createChannelMerger,
-        createChannelMerger_, startRendering, getDestination,
-        getCurrentTime, getSampleRate, getListener, getState, statechange,
-        getActiveSourceCount, complete, AudioContext(..),
-        gTypeAudioContext, IsAudioContext, toAudioContext)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext Mozilla AudioContext documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/AudioContext MDN AudioContext. documentation>
 newAudioContext :: (MonadDOM m) => m AudioContext
-newAudioContext
-  = liftDOM (AudioContext <$> new (jsg "AudioContext") ())
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.suspend Mozilla AudioContext.suspend documentation> 
-suspend :: (MonadDOM m, IsAudioContext self) => self -> m ()
-suspend self
-  = liftDOM
-      (void
-         (((toAudioContext self) ^. jsf "suspend" ()) >>= readPromise))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.resume Mozilla AudioContext.resume documentation> 
-resume :: (MonadDOM m, IsAudioContext self) => self -> m ()
-resume self
-  = liftDOM
-      (void (((toAudioContext self) ^. jsf "resume" ()) >>= readPromise))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.close Mozilla AudioContext.close documentation> 
-close :: (MonadDOM m, IsAudioContext self) => self -> m ()
-close self
-  = liftDOM
-      (void (((toAudioContext self) ^. jsf "close" ()) >>= readPromise))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
-createBuffer ::
-             (MonadDOM m, IsAudioContext self) =>
-               self -> Word -> Word -> Float -> m AudioBuffer
-createBuffer self numberOfChannels numberOfFrames sampleRate
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createBuffer"
-          [toJSVal numberOfChannels, toJSVal numberOfFrames,
-           toJSVal sampleRate])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
-createBuffer_ ::
-              (MonadDOM m, IsAudioContext self) =>
-                self -> Word -> Word -> Float -> m ()
-createBuffer_ self numberOfChannels numberOfFrames sampleRate
-  = liftDOM
-      (void
-         ((toAudioContext self) ^. jsf "createBuffer"
-            [toJSVal numberOfChannels, toJSVal numberOfFrames,
-             toJSVal sampleRate]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
-createBufferFromArrayBuffer ::
-                            (MonadDOM m, IsAudioContext self, IsArrayBuffer buffer) =>
-                              self -> buffer -> Bool -> m AudioBuffer
-createBufferFromArrayBuffer self buffer mixToMono
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createBuffer"
-          [toJSVal buffer, toJSVal mixToMono])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
-createBufferFromArrayBuffer_ ::
-                             (MonadDOM m, IsAudioContext self, IsArrayBuffer buffer) =>
-                               self -> buffer -> Bool -> m ()
-createBufferFromArrayBuffer_ self buffer mixToMono
-  = liftDOM
-      (void
-         ((toAudioContext self) ^. jsf "createBuffer"
-            [toJSVal buffer, toJSVal mixToMono]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.decodeAudioData Mozilla AudioContext.decodeAudioData documentation> 
-decodeAudioData ::
-                (MonadDOM m, IsAudioContext self, IsArrayBuffer audioData) =>
-                  self ->
-                    audioData ->
-                      Maybe AudioBufferCallback -> Maybe AudioBufferCallback -> m ()
-decodeAudioData self audioData successCallback errorCallback
-  = liftDOM
-      (void
-         ((toAudioContext self) ^. jsf "decodeAudioData"
-            [toJSVal audioData, toJSVal successCallback,
-             toJSVal errorCallback]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBufferSource Mozilla AudioContext.createBufferSource documentation> 
-createBufferSource ::
-                   (MonadDOM m, IsAudioContext self) =>
-                     self -> m AudioBufferSourceNode
-createBufferSource self
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createBufferSource" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBufferSource Mozilla AudioContext.createBufferSource documentation> 
-createBufferSource_ ::
-                    (MonadDOM m, IsAudioContext self) => self -> m ()
-createBufferSource_ self
-  = liftDOM
-      (void ((toAudioContext self) ^. jsf "createBufferSource" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaElementSource Mozilla AudioContext.createMediaElementSource documentation> 
-createMediaElementSource ::
-                         (MonadDOM m, IsAudioContext self,
-                          IsHTMLMediaElement mediaElement) =>
-                           self -> mediaElement -> m MediaElementAudioSourceNode
-createMediaElementSource self mediaElement
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createMediaElementSource"
-          [toJSVal mediaElement])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaElementSource Mozilla AudioContext.createMediaElementSource documentation> 
-createMediaElementSource_ ::
-                          (MonadDOM m, IsAudioContext self,
-                           IsHTMLMediaElement mediaElement) =>
-                            self -> mediaElement -> m ()
-createMediaElementSource_ self mediaElement
-  = liftDOM
-      (void
-         ((toAudioContext self) ^. jsf "createMediaElementSource"
-            [toJSVal mediaElement]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamSource Mozilla AudioContext.createMediaStreamSource documentation> 
-createMediaStreamSource ::
-                        (MonadDOM m, IsAudioContext self) =>
-                          self -> MediaStream -> m MediaStreamAudioSourceNode
-createMediaStreamSource self mediaStream
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createMediaStreamSource"
-          [toJSVal mediaStream])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamSource Mozilla AudioContext.createMediaStreamSource documentation> 
-createMediaStreamSource_ ::
-                         (MonadDOM m, IsAudioContext self) => self -> MediaStream -> m ()
-createMediaStreamSource_ self mediaStream
-  = liftDOM
-      (void
-         ((toAudioContext self) ^. jsf "createMediaStreamSource"
-            [toJSVal mediaStream]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamDestination Mozilla AudioContext.createMediaStreamDestination documentation> 
-createMediaStreamDestination ::
-                             (MonadDOM m, IsAudioContext self) =>
-                               self -> m MediaStreamAudioDestinationNode
-createMediaStreamDestination self
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createMediaStreamDestination" ())
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamDestination Mozilla AudioContext.createMediaStreamDestination documentation> 
-createMediaStreamDestination_ ::
-                              (MonadDOM m, IsAudioContext self) => self -> m ()
-createMediaStreamDestination_ self
-  = liftDOM
-      (void
-         ((toAudioContext self) ^. jsf "createMediaStreamDestination" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createGain Mozilla AudioContext.createGain documentation> 
-createGain ::
-           (MonadDOM m, IsAudioContext self) => self -> m GainNode
-createGain self
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createGain" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createGain Mozilla AudioContext.createGain documentation> 
-createGain_ :: (MonadDOM m, IsAudioContext self) => self -> m ()
-createGain_ self
-  = liftDOM (void ((toAudioContext self) ^. jsf "createGain" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDelay Mozilla AudioContext.createDelay documentation> 
-createDelay ::
-            (MonadDOM m, IsAudioContext self) =>
-              self -> Maybe Double -> m DelayNode
-createDelay self maxDelayTime
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createDelay"
-          [toJSVal maxDelayTime])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDelay Mozilla AudioContext.createDelay documentation> 
-createDelay_ ::
-             (MonadDOM m, IsAudioContext self) => self -> Maybe Double -> m ()
-createDelay_ self maxDelayTime
-  = liftDOM
-      (void
-         ((toAudioContext self) ^. jsf "createDelay"
-            [toJSVal maxDelayTime]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBiquadFilter Mozilla AudioContext.createBiquadFilter documentation> 
-createBiquadFilter ::
-                   (MonadDOM m, IsAudioContext self) => self -> m BiquadFilterNode
-createBiquadFilter self
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createBiquadFilter" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBiquadFilter Mozilla AudioContext.createBiquadFilter documentation> 
-createBiquadFilter_ ::
-                    (MonadDOM m, IsAudioContext self) => self -> m ()
-createBiquadFilter_ self
-  = liftDOM
-      (void ((toAudioContext self) ^. jsf "createBiquadFilter" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createWaveShaper Mozilla AudioContext.createWaveShaper documentation> 
-createWaveShaper ::
-                 (MonadDOM m, IsAudioContext self) => self -> m WaveShaperNode
-createWaveShaper self
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createWaveShaper" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createWaveShaper Mozilla AudioContext.createWaveShaper documentation> 
-createWaveShaper_ ::
-                  (MonadDOM m, IsAudioContext self) => self -> m ()
-createWaveShaper_ self
-  = liftDOM
-      (void ((toAudioContext self) ^. jsf "createWaveShaper" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPanner Mozilla AudioContext.createPanner documentation> 
-createPanner ::
-             (MonadDOM m, IsAudioContext self) => self -> m PannerNode
-createPanner self
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createPanner" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPanner Mozilla AudioContext.createPanner documentation> 
-createPanner_ :: (MonadDOM m, IsAudioContext self) => self -> m ()
-createPanner_ self
-  = liftDOM (void ((toAudioContext self) ^. jsf "createPanner" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createConvolver Mozilla AudioContext.createConvolver documentation> 
-createConvolver ::
-                (MonadDOM m, IsAudioContext self) => self -> m ConvolverNode
-createConvolver self
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createConvolver" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createConvolver Mozilla AudioContext.createConvolver documentation> 
-createConvolver_ ::
-                 (MonadDOM m, IsAudioContext self) => self -> m ()
-createConvolver_ self
-  = liftDOM
-      (void ((toAudioContext self) ^. jsf "createConvolver" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDynamicsCompressor Mozilla AudioContext.createDynamicsCompressor documentation> 
-createDynamicsCompressor ::
-                         (MonadDOM m, IsAudioContext self) =>
-                           self -> m DynamicsCompressorNode
-createDynamicsCompressor self
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createDynamicsCompressor" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDynamicsCompressor Mozilla AudioContext.createDynamicsCompressor documentation> 
-createDynamicsCompressor_ ::
-                          (MonadDOM m, IsAudioContext self) => self -> m ()
-createDynamicsCompressor_ self
-  = liftDOM
-      (void ((toAudioContext self) ^. jsf "createDynamicsCompressor" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createAnalyser Mozilla AudioContext.createAnalyser documentation> 
-createAnalyser ::
-               (MonadDOM m, IsAudioContext self) => self -> m AnalyserNode
-createAnalyser self
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createAnalyser" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createAnalyser Mozilla AudioContext.createAnalyser documentation> 
-createAnalyser_ ::
-                (MonadDOM m, IsAudioContext self) => self -> m ()
-createAnalyser_ self
-  = liftDOM (void ((toAudioContext self) ^. jsf "createAnalyser" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createScriptProcessor Mozilla AudioContext.createScriptProcessor documentation> 
-createScriptProcessor ::
-                      (MonadDOM m, IsAudioContext self) =>
-                        self -> Word -> Maybe Word -> Maybe Word -> m ScriptProcessorNode
-createScriptProcessor self bufferSize numberOfInputChannels
-  numberOfOutputChannels
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createScriptProcessor"
-          [toJSVal bufferSize, toJSVal numberOfInputChannels,
-           toJSVal numberOfOutputChannels])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createScriptProcessor Mozilla AudioContext.createScriptProcessor documentation> 
-createScriptProcessor_ ::
-                       (MonadDOM m, IsAudioContext self) =>
-                         self -> Word -> Maybe Word -> Maybe Word -> m ()
-createScriptProcessor_ self bufferSize numberOfInputChannels
-  numberOfOutputChannels
-  = liftDOM
-      (void
-         ((toAudioContext self) ^. jsf "createScriptProcessor"
-            [toJSVal bufferSize, toJSVal numberOfInputChannels,
-             toJSVal numberOfOutputChannels]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createOscillator Mozilla AudioContext.createOscillator documentation> 
-createOscillator ::
-                 (MonadDOM m, IsAudioContext self) => self -> m OscillatorNode
-createOscillator self
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createOscillator" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createOscillator Mozilla AudioContext.createOscillator documentation> 
-createOscillator_ ::
-                  (MonadDOM m, IsAudioContext self) => self -> m ()
-createOscillator_ self
-  = liftDOM
-      (void ((toAudioContext self) ^. jsf "createOscillator" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPeriodicWave Mozilla AudioContext.createPeriodicWave documentation> 
-createPeriodicWave ::
-                   (MonadDOM m, IsAudioContext self, IsFloat32Array real,
-                    IsFloat32Array imag) =>
-                     self -> real -> imag -> m PeriodicWave
-createPeriodicWave self real imag
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createPeriodicWave"
-          [toJSVal real, toJSVal imag])
-         >>= fromJSValUnchecked)
+newAudioContext = liftDOM (((new (jsg "AudioContext") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPeriodicWave Mozilla AudioContext.createPeriodicWave documentation> 
-createPeriodicWave_ ::
-                    (MonadDOM m, IsAudioContext self, IsFloat32Array real,
-                     IsFloat32Array imag) =>
-                      self -> real -> imag -> m ()
-createPeriodicWave_ self real imag
-  = liftDOM
-      (void
-         ((toAudioContext self) ^. jsf "createPeriodicWave"
-            [toJSVal real, toJSVal imag]))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/AudioContext MDN AudioContext. documentation>
+newAudioContext' :: (MonadDOM m) => Maybe AudioContextOptions -> m AudioContext
+newAudioContext' contextOptions = liftDOM (((new (jsg "AudioContext") [P.maybe (P.return jsUndefined) toJSVal contextOptions]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelSplitter Mozilla AudioContext.createChannelSplitter documentation> 
-createChannelSplitter ::
-                      (MonadDOM m, IsAudioContext self) =>
-                        self -> Maybe Word -> m ChannelSplitterNode
-createChannelSplitter self numberOfOutputs
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createChannelSplitter"
-          [toJSVal numberOfOutputs])
-         >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/close MDN AudioContext.close documentation>
+close :: (MonadDOM m) => AudioContext -> m ()
+close self = liftDOM (void (((self ^. jsf "close" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelSplitter Mozilla AudioContext.createChannelSplitter documentation> 
-createChannelSplitter_ ::
-                       (MonadDOM m, IsAudioContext self) => self -> Maybe Word -> m ()
-createChannelSplitter_ self numberOfOutputs
-  = liftDOM
-      (void
-         ((toAudioContext self) ^. jsf "createChannelSplitter"
-            [toJSVal numberOfOutputs]))
+-- | <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 (((self ^. jsf "createMediaElementSource" [toJSVal mediaElement]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelMerger Mozilla AudioContext.createChannelMerger documentation> 
-createChannelMerger ::
-                    (MonadDOM m, IsAudioContext self) =>
-                      self -> Maybe Word -> m ChannelMergerNode
-createChannelMerger self numberOfInputs
-  = liftDOM
-      (((toAudioContext self) ^. jsf "createChannelMerger"
-          [toJSVal numberOfInputs])
-         >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "createMediaElementSource" [toJSVal mediaElement]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelMerger Mozilla AudioContext.createChannelMerger documentation> 
-createChannelMerger_ ::
-                     (MonadDOM m, IsAudioContext self) => self -> Maybe Word -> m ()
-createChannelMerger_ self numberOfInputs
-  = liftDOM
-      (void
-         ((toAudioContext self) ^. jsf "createChannelMerger"
-            [toJSVal numberOfInputs]))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/createMediaStreamDestination MDN AudioContext.createMediaStreamDestination documentation>
+createMediaStreamDestination :: (MonadDOM m) => AudioContext -> m MediaStreamAudioDestinationNode
+createMediaStreamDestination self = liftDOM (((self ^. jsf "createMediaStreamDestination" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.startRendering Mozilla AudioContext.startRendering documentation> 
-startRendering :: (MonadDOM m, IsAudioContext self) => self -> m ()
-startRendering self
-  = liftDOM (void ((toAudioContext self) ^. jsf "startRendering" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/createMediaStreamDestination MDN AudioContext.createMediaStreamDestination documentation>
+createMediaStreamDestination_ :: (MonadDOM m) => AudioContext -> m ()
+createMediaStreamDestination_ self = liftDOM (void (self ^. jsf "createMediaStreamDestination" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.destination Mozilla AudioContext.destination documentation> 
-getDestination ::
-               (MonadDOM m, IsAudioContext self) => self -> m AudioDestinationNode
-getDestination self
-  = liftDOM
-      (((toAudioContext self) ^. js "destination") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/createMediaStreamSource MDN AudioContext.createMediaStreamSource documentation>
+createMediaStreamSource :: (MonadDOM m) => AudioContext -> MediaStream -> m MediaStreamAudioSourceNode
+createMediaStreamSource self mediaStream = liftDOM (((self ^. jsf "createMediaStreamSource" [toJSVal mediaStream]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.currentTime Mozilla AudioContext.currentTime documentation> 
-getCurrentTime ::
-               (MonadDOM m, IsAudioContext self) => self -> m Double
-getCurrentTime self
-  = liftDOM
-      (((toAudioContext self) ^. js "currentTime") >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/createMediaStreamSource MDN AudioContext.createMediaStreamSource documentation>
+createMediaStreamSource_ :: (MonadDOM m) => AudioContext -> MediaStream -> m ()
+createMediaStreamSource_ self mediaStream = liftDOM (void (self ^. jsf "createMediaStreamSource" [toJSVal mediaStream]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.sampleRate Mozilla AudioContext.sampleRate documentation> 
-getSampleRate ::
-              (MonadDOM m, IsAudioContext self) => self -> m Float
-getSampleRate self
-  = liftDOM
-      (realToFrac <$>
-         (((toAudioContext self) ^. js "sampleRate") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/getOutputTimestamp MDN AudioContext.getOutputTimestamp documentation>
+getOutputTimestamp :: (MonadDOM m) => AudioContext -> m AudioTimestamp
+getOutputTimestamp self = liftDOM (((self ^. jsf "getOutputTimestamp" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.listener Mozilla AudioContext.listener documentation> 
-getListener ::
-            (MonadDOM m, IsAudioContext self) => self -> m AudioListener
-getListener self
-  = liftDOM
-      (((toAudioContext self) ^. js "listener") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/getOutputTimestamp MDN AudioContext.getOutputTimestamp documentation>
+getOutputTimestamp_ :: (MonadDOM m) => AudioContext -> m ()
+getOutputTimestamp_ self = liftDOM (void (self ^. jsf "getOutputTimestamp" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.state Mozilla AudioContext.state documentation> 
-getState ::
-         (MonadDOM m, IsAudioContext self) => self -> m AudioContextState
-getState self
-  = liftDOM
-      (((toAudioContext self) ^. js "state") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/resume MDN AudioContext.resume documentation>
+resume :: (MonadDOM m) => AudioContext -> m ()
+resume self = liftDOM (void (((self ^. jsf "resume" ()) >>= readPromise)))
 
--- | <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")
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/suspend MDN AudioContext.suspend documentation>
+suspend :: (MonadDOM m) => AudioContext -> m ()
+suspend self = liftDOM (void (((self ^. jsf "suspend" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.activeSourceCount Mozilla AudioContext.activeSourceCount documentation> 
-getActiveSourceCount ::
-                     (MonadDOM m, IsAudioContext self) => self -> m Word
-getActiveSourceCount self
-  = liftDOM
-      (round <$>
-         (((toAudioContext self) ^. js "activeSourceCount") >>=
-            valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/baseLatency MDN AudioContext.baseLatency documentation>
+getBaseLatency :: (MonadDOM m) => AudioContext -> m Double
+getBaseLatency self = liftDOM (((self ^. js "baseLatency") >>= valToNumber))
 
--- | <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")
+-- | <https://developer.mozilla.org/docs/Web/API/AudioContext/outputLatency MDN AudioContext.outputLatency documentation>
+getOutputLatency :: (MonadDOM m) => AudioContext -> m Double
+getOutputLatency self = liftDOM (((self ^. js "outputLatency") >>= valToNumber))
diff --git a/src/JSDOM/Generated/AudioContextOptions.hs b/src/JSDOM/Generated/AudioContextOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioContextOptions.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.AudioContextOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#AudioContextOptions AudioContextOptions specification>
+newAudioContextOptions :: (MonadDOM m) => m AudioContextOptions
+newAudioContextOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "latencyHint" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-latencyhint AudioContextOptions.latencyHint specification>
+getLatencyHint :: (MonadDOM m) => AudioContextOptions -> m (Maybe AudioContextLatencyCategoryOrDouble)
+getLatencyHint self = liftDOM (((self ^. js "latencyHint") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-latencyhint AudioContextOptions.latencyHint specification>
+getLatencyHintUnsafe :: (MonadDOM m, HasCallStack) => AudioContextOptions -> m AudioContextLatencyCategoryOrDouble
+getLatencyHintUnsafe self = liftDOM ((((self ^. js "latencyHint") >>= 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 (((self ^. js "latencyHint") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-samplerate AudioContextOptions.sampleRate specification>
+setSampleRate :: (MonadDOM m) => AudioContextOptions -> Float -> m ()
+setSampleRate self val = liftDOM (void (self ^. jss "sampleRate" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-samplerate AudioContextOptions.sampleRate specification>
+getSampleRate :: (MonadDOM m) => AudioContextOptions -> m (Maybe Float)
+getSampleRate self = liftDOM (((self ^. js "sampleRate") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-samplerate AudioContextOptions.sampleRate specification>
+getSampleRateUnsafe :: (MonadDOM m, HasCallStack) => AudioContextOptions -> m Float
+getSampleRateUnsafe self = liftDOM ((((self ^. js "sampleRate") >>= 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 ((P.realToFrac <$> ((self ^. js "sampleRate") >>= valToNumber)))
+
+-- | <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 (self ^. jss "sinkId" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-sinkid AudioContextOptions.sinkId specification>
+getSinkId :: (MonadDOM m) => AudioContextOptions -> m (Maybe StringOrAudioSinkOptions)
+getSinkId self = liftDOM (((self ^. js "sinkId") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-sinkid AudioContextOptions.sinkId specification>
+getSinkIdUnsafe :: (MonadDOM m, HasCallStack) => AudioContextOptions -> m StringOrAudioSinkOptions
+getSinkIdUnsafe self = liftDOM ((((self ^. js "sinkId") >>= 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 (((self ^. js "sinkId") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "renderSizeHint" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-rendersizehint AudioContextOptions.renderSizeHint specification>
+getRenderSizeHint :: (MonadDOM m) => AudioContextOptions -> m (Maybe AudioContextRenderSizeCategoryOrWord)
+getRenderSizeHint self = liftDOM (((self ^. js "renderSizeHint") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiocontextoptions-rendersizehint AudioContextOptions.renderSizeHint specification>
+getRenderSizeHintUnsafe :: (MonadDOM m, HasCallStack) => AudioContextOptions -> m AudioContextRenderSizeCategoryOrWord
+getRenderSizeHintUnsafe self = liftDOM ((((self ^. js "renderSizeHint") >>= 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 (((self ^. js "renderSizeHint") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AudioData.hs b/src/JSDOM/Generated/AudioData.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioData.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.AudioData
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/AudioData MDN AudioData. documentation>
+newAudioData :: (MonadDOM m) => AudioDataInit -> m AudioData
+newAudioData init = liftDOM (((new (jsg "AudioData") [toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/allocationSize MDN AudioData.allocationSize documentation>
+allocationSize :: (MonadDOM m) => AudioData -> AudioDataCopyToOptions -> m Word
+allocationSize self options = liftDOM ((P.round <$> ((self ^. jsf "allocationSize" [toJSVal options]) >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/allocationSize MDN AudioData.allocationSize documentation>
+allocationSize_ :: (MonadDOM m) => AudioData -> AudioDataCopyToOptions -> m ()
+allocationSize_ self options = liftDOM (void (self ^. jsf "allocationSize" [toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/clone MDN AudioData.clone documentation>
+clone :: (MonadDOM m) => AudioData -> m AudioData
+clone self = liftDOM (((self ^. jsf "clone" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/clone MDN AudioData.clone documentation>
+clone_ :: (MonadDOM m) => AudioData -> m ()
+clone_ self = liftDOM (void (self ^. jsf "clone" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/close MDN AudioData.close documentation>
+close :: (MonadDOM m) => AudioData -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
+
+-- | <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 (self ^. jsf "copyTo" [toJSVal destination, toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/format MDN AudioData.format documentation>
+getFormat :: (MonadDOM m) => AudioData -> m (Maybe AudioSampleFormat)
+getFormat self = liftDOM (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/format MDN AudioData.format documentation>
+getFormatUnsafe :: (MonadDOM m, HasCallStack) => AudioData -> m AudioSampleFormat
+getFormatUnsafe self = liftDOM ((((self ^. js "format") >>= 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 (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/sampleRate MDN AudioData.sampleRate documentation>
+getSampleRate :: (MonadDOM m) => AudioData -> m Float
+getSampleRate self = liftDOM ((P.realToFrac <$> ((self ^. js "sampleRate") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/numberOfFrames MDN AudioData.numberOfFrames documentation>
+getNumberOfFrames :: (MonadDOM m) => AudioData -> m Word
+getNumberOfFrames self = liftDOM ((P.round <$> ((self ^. js "numberOfFrames") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/numberOfChannels MDN AudioData.numberOfChannels documentation>
+getNumberOfChannels :: (MonadDOM m) => AudioData -> m Word
+getNumberOfChannels self = liftDOM ((P.round <$> ((self ^. js "numberOfChannels") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/duration MDN AudioData.duration documentation>
+getDuration :: (MonadDOM m) => AudioData -> m Word53
+getDuration self = liftDOM (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioData/timestamp MDN AudioData.timestamp documentation>
+getTimestamp :: (MonadDOM m) => AudioData -> m Int53
+getTimestamp self = liftDOM (((self ^. js "timestamp") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AudioDataCopyToOptions.hs b/src/JSDOM/Generated/AudioDataCopyToOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioDataCopyToOptions.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.AudioDataCopyToOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-audiodatacopytooptions AudioDataCopyToOptions specification>
+newAudioDataCopyToOptions :: (MonadDOM m) => Word -> m AudioDataCopyToOptions
+newAudioDataCopyToOptions planeIndex = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "planeIndex" (toJSVal planeIndex)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-planeindex AudioDataCopyToOptions.planeIndex specification>
+setPlaneIndex :: (MonadDOM m) => AudioDataCopyToOptions -> Word -> m ()
+setPlaneIndex self val = liftDOM (void (self ^. jss "planeIndex" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-planeindex AudioDataCopyToOptions.planeIndex specification>
+getPlaneIndex :: (MonadDOM m) => AudioDataCopyToOptions -> m Word
+getPlaneIndex self = liftDOM ((P.round <$> ((self ^. js "planeIndex") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-frameoffset AudioDataCopyToOptions.frameOffset specification>
+setFrameOffset :: (MonadDOM m) => AudioDataCopyToOptions -> Word -> m ()
+setFrameOffset self val = liftDOM (void (self ^. jss "frameOffset" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-frameoffset AudioDataCopyToOptions.frameOffset specification>
+getFrameOffset :: (MonadDOM m) => AudioDataCopyToOptions -> m (Maybe Word)
+getFrameOffset self = liftDOM (((self ^. js "frameOffset") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-frameoffset AudioDataCopyToOptions.frameOffset specification>
+getFrameOffsetUnsafe :: (MonadDOM m, HasCallStack) => AudioDataCopyToOptions -> m Word
+getFrameOffsetUnsafe self = liftDOM ((((self ^. js "frameOffset") >>= 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 ((P.round <$> ((self ^. js "frameOffset") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-framecount AudioDataCopyToOptions.frameCount specification>
+setFrameCount :: (MonadDOM m) => AudioDataCopyToOptions -> Word -> m ()
+setFrameCount self val = liftDOM (void (self ^. jss "frameCount" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-framecount AudioDataCopyToOptions.frameCount specification>
+getFrameCount :: (MonadDOM m) => AudioDataCopyToOptions -> m (Maybe Word)
+getFrameCount self = liftDOM (((self ^. js "frameCount") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-framecount AudioDataCopyToOptions.frameCount specification>
+getFrameCountUnsafe :: (MonadDOM m, HasCallStack) => AudioDataCopyToOptions -> m Word
+getFrameCountUnsafe self = liftDOM ((((self ^. js "frameCount") >>= 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 ((P.round <$> ((self ^. js "frameCount") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-format AudioDataCopyToOptions.format specification>
+setFormat :: (MonadDOM m) => AudioDataCopyToOptions -> AudioSampleFormat -> m ()
+setFormat self val = liftDOM (void (self ^. jss "format" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-format AudioDataCopyToOptions.format specification>
+getFormat :: (MonadDOM m) => AudioDataCopyToOptions -> m (Maybe AudioSampleFormat)
+getFormat self = liftDOM (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatacopytooptions-format AudioDataCopyToOptions.format specification>
+getFormatUnsafe :: (MonadDOM m, HasCallStack) => AudioDataCopyToOptions -> m AudioSampleFormat
+getFormatUnsafe self = liftDOM ((((self ^. js "format") >>= 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 (((self ^. js "format") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AudioDataInit.hs b/src/JSDOM/Generated/AudioDataInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioDataInit.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.AudioDataInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "format" (toJSVal format)) P.>> (o ^. jss "sampleRate" (toJSVal sampleRate)) P.>> (o ^. jss "numberOfFrames" (toJSVal numberOfFrames)) P.>> (o ^. jss "numberOfChannels" (toJSVal numberOfChannels)) P.>> (o ^. jss "timestamp" (toJSVal timestamp)) P.>> (o ^. jss "data" (toJSVal data')) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-format AudioDataInit.format specification>
+setFormat :: (MonadDOM m) => AudioDataInit -> AudioSampleFormat -> m ()
+setFormat self val = liftDOM (void (self ^. jss "format" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-format AudioDataInit.format specification>
+getFormat :: (MonadDOM m) => AudioDataInit -> m AudioSampleFormat
+getFormat self = liftDOM (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-samplerate AudioDataInit.sampleRate specification>
+setSampleRate :: (MonadDOM m) => AudioDataInit -> Float -> m ()
+setSampleRate self val = liftDOM (void (self ^. jss "sampleRate" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-samplerate AudioDataInit.sampleRate specification>
+getSampleRate :: (MonadDOM m) => AudioDataInit -> m Float
+getSampleRate self = liftDOM ((P.realToFrac <$> ((self ^. js "sampleRate") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-numberofframes AudioDataInit.numberOfFrames specification>
+setNumberOfFrames :: (MonadDOM m) => AudioDataInit -> Word -> m ()
+setNumberOfFrames self val = liftDOM (void (self ^. jss "numberOfFrames" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-numberofframes AudioDataInit.numberOfFrames specification>
+getNumberOfFrames :: (MonadDOM m) => AudioDataInit -> m Word
+getNumberOfFrames self = liftDOM ((P.round <$> ((self ^. js "numberOfFrames") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-numberofchannels AudioDataInit.numberOfChannels specification>
+setNumberOfChannels :: (MonadDOM m) => AudioDataInit -> Word -> m ()
+setNumberOfChannels self val = liftDOM (void (self ^. jss "numberOfChannels" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-numberofchannels AudioDataInit.numberOfChannels specification>
+getNumberOfChannels :: (MonadDOM m) => AudioDataInit -> m Word
+getNumberOfChannels self = liftDOM ((P.round <$> ((self ^. js "numberOfChannels") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-timestamp AudioDataInit.timestamp specification>
+setTimestamp :: (MonadDOM m) => AudioDataInit -> Int53 -> m ()
+setTimestamp self val = liftDOM (void (self ^. jss "timestamp" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-timestamp AudioDataInit.timestamp specification>
+getTimestamp :: (MonadDOM m) => AudioDataInit -> m Int53
+getTimestamp self = liftDOM (((self ^. js "timestamp") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-data AudioDataInit.data specification>
+setData :: (MonadDOM m, IsAllowSharedBufferSource val) => AudioDataInit -> val -> m ()
+setData self val = liftDOM (void (self ^. jss "data" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-data AudioDataInit.data specification>
+getData :: (MonadDOM m) => AudioDataInit -> m AllowSharedBufferSource
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-transfer AudioDataInit.transfer specification>
+setTransfer :: (MonadDOM m, IsArrayBuffer val) => AudioDataInit -> [val] -> m ()
+setTransfer self val = liftDOM (void (self ^. jss "transfer" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-transfer AudioDataInit.transfer specification>
+getTransfer :: (MonadDOM m) => AudioDataInit -> m (Maybe [ArrayBuffer])
+getTransfer self = liftDOM (((self ^. js "transfer") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodatainit-transfer AudioDataInit.transfer specification>
+getTransferUnsafe :: (MonadDOM m, HasCallStack) => AudioDataInit -> m [ArrayBuffer]
+getTransferUnsafe self = liftDOM ((((self ^. js "transfer") >>= 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 (((self ^. js "transfer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AudioDataOutputCallback.hs b/src/JSDOM/Generated/AudioDataOutputCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioDataOutputCallback.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newAudioDataOutputCallback :: (MonadDOM m) => (AudioData -> JSM ()) -> m AudioDataOutputCallback
+newAudioDataOutputCallback callback = liftDOM (AudioDataOutputCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (output : _) -> do
+          output' <- fromJSValUnchecked output
+          callback output'))
+
+newAudioDataOutputCallbackSync :: (MonadDOM m) => (AudioData -> JSM ()) -> m AudioDataOutputCallback
+newAudioDataOutputCallbackSync callback = liftDOM (AudioDataOutputCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (output : _) -> do
+          output' <- fromJSValUnchecked output
+          callback output'))
+
+newAudioDataOutputCallbackAsync :: (MonadDOM m) => (AudioData -> JSM ()) -> m AudioDataOutputCallback
+newAudioDataOutputCallbackAsync callback = liftDOM (AudioDataOutputCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (output : _) -> do
+          output' <- fromJSValUnchecked output
+          callback output'))
diff --git a/src/JSDOM/Generated/AudioDecoder.hs b/src/JSDOM/Generated/AudioDecoder.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioDecoder.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.AudioDecoder
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/AudioDecoder MDN AudioDecoder. documentation>
+newAudioDecoder :: (MonadDOM m) => AudioDecoderInit -> m AudioDecoder
+newAudioDecoder init = liftDOM (((new (jsg "AudioDecoder") [toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/close MDN AudioDecoder.close documentation>
+close :: (MonadDOM m) => AudioDecoder -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/configure MDN AudioDecoder.configure documentation>
+configure :: (MonadDOM m) => AudioDecoder -> AudioDecoderConfig -> m ()
+configure self config = liftDOM (void (self ^. jsf "configure" [toJSVal config]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/decode MDN AudioDecoder.decode documentation>
+decode :: (MonadDOM m) => AudioDecoder -> EncodedAudioChunk -> m ()
+decode self chunk = liftDOM (void (self ^. jsf "decode" [toJSVal chunk]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/flush MDN AudioDecoder.flush documentation>
+flush :: (MonadDOM m) => AudioDecoder -> m ()
+flush self = liftDOM (void (((self ^. jsf "flush" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/reset MDN AudioDecoder.reset documentation>
+reset :: (MonadDOM m) => AudioDecoder -> m ()
+reset self = liftDOM (void (self ^. jsf "reset" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/isConfigSupported_static MDN AudioDecoder.isConfigSupported documentation>
+isConfigSupported :: (MonadDOM m) => AudioDecoderConfig -> m AudioDecoderSupport
+isConfigSupported config = liftDOM ((((((jsg "AudioDecoder") ^. jsf "isConfigSupported" [toJSVal config]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/isConfigSupported_static MDN AudioDecoder.isConfigSupported documentation>
+isConfigSupported_ :: (MonadDOM m) => AudioDecoderConfig -> m ()
+isConfigSupported_ config = liftDOM (void ((((jsg "AudioDecoder") ^. jsf "isConfigSupported" [toJSVal config]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/state MDN AudioDecoder.state documentation>
+getState :: (MonadDOM m) => AudioDecoder -> m CodecState
+getState self = liftDOM (((self ^. js "state") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDecoder/decodeQueueSize MDN AudioDecoder.decodeQueueSize documentation>
+getDecodeQueueSize :: (MonadDOM m) => AudioDecoder -> m Word
+getDecodeQueueSize self = liftDOM ((P.round <$> ((self ^. js "decodeQueueSize") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoder-ondequeue dequeue event>
+dequeue :: EventName AudioDecoder Event
+dequeue = unsafeEventName (toJSString "dequeue")
diff --git a/src/JSDOM/Generated/AudioDecoderConfig.hs b/src/JSDOM/Generated/AudioDecoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioDecoderConfig.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.AudioDecoderConfig
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-audiodecoderconfig AudioDecoderConfig specification>
+newAudioDecoderConfig :: (MonadDOM m, ToJSString codec) => codec -> Word -> Word -> m AudioDecoderConfig
+newAudioDecoderConfig codec sampleRate numberOfChannels = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "codec" (toJSVal codec)) P.>> (o ^. jss "sampleRate" (toJSVal sampleRate)) P.>> (o ^. jss "numberOfChannels" (toJSVal numberOfChannels)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-codec AudioDecoderConfig.codec specification>
+setCodec :: (MonadDOM m, ToJSString val) => AudioDecoderConfig -> val -> m ()
+setCodec self val = liftDOM (void (self ^. jss "codec" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-codec AudioDecoderConfig.codec specification>
+getCodec :: (MonadDOM m, FromJSString result) => AudioDecoderConfig -> m result
+getCodec self = liftDOM (((self ^. js "codec") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-samplerate AudioDecoderConfig.sampleRate specification>
+setSampleRate :: (MonadDOM m) => AudioDecoderConfig -> Word -> m ()
+setSampleRate self val = liftDOM (void (self ^. jss "sampleRate" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-samplerate AudioDecoderConfig.sampleRate specification>
+getSampleRate :: (MonadDOM m) => AudioDecoderConfig -> m Word
+getSampleRate self = liftDOM ((P.round <$> ((self ^. js "sampleRate") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-numberofchannels AudioDecoderConfig.numberOfChannels specification>
+setNumberOfChannels :: (MonadDOM m) => AudioDecoderConfig -> Word -> m ()
+setNumberOfChannels self val = liftDOM (void (self ^. jss "numberOfChannels" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-numberofchannels AudioDecoderConfig.numberOfChannels specification>
+getNumberOfChannels :: (MonadDOM m) => AudioDecoderConfig -> m Word
+getNumberOfChannels self = liftDOM ((P.round <$> ((self ^. js "numberOfChannels") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-description AudioDecoderConfig.description specification>
+setDescription :: (MonadDOM m, IsAllowSharedBufferSource val) => AudioDecoderConfig -> val -> m ()
+setDescription self val = liftDOM (void (self ^. jss "description" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-description AudioDecoderConfig.description specification>
+getDescription :: (MonadDOM m) => AudioDecoderConfig -> m (Maybe AllowSharedBufferSource)
+getDescription self = liftDOM (((self ^. js "description") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderconfig-description AudioDecoderConfig.description specification>
+getDescriptionUnsafe :: (MonadDOM m, HasCallStack) => AudioDecoderConfig -> m AllowSharedBufferSource
+getDescriptionUnsafe self = liftDOM ((((self ^. js "description") >>= 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 (((self ^. js "description") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AudioDecoderInit.hs b/src/JSDOM/Generated/AudioDecoderInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioDecoderInit.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.AudioDecoderInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-audiodecoderinit AudioDecoderInit specification>
+newAudioDecoderInit :: (MonadDOM m) => AudioDataOutputCallback -> WebCodecsErrorCallback -> m AudioDecoderInit
+newAudioDecoderInit output error = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "output" (toJSVal output)) P.>> (o ^. jss "error" (toJSVal error)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderinit-output AudioDecoderInit.output specification>
+setOutput :: (MonadDOM m) => AudioDecoderInit -> AudioDataOutputCallback -> m ()
+setOutput self val = liftDOM (void (self ^. jss "output" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecoderinit-error AudioDecoderInit.error specification>
+setError :: (MonadDOM m) => AudioDecoderInit -> WebCodecsErrorCallback -> m ()
+setError self val = liftDOM (void (self ^. jss "error" (toJSVal val)))
diff --git a/src/JSDOM/Generated/AudioDecoderSupport.hs b/src/JSDOM/Generated/AudioDecoderSupport.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioDecoderSupport.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.AudioDecoderSupport
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-audiodecodersupport AudioDecoderSupport specification>
+newAudioDecoderSupport :: (MonadDOM m) => m AudioDecoderSupport
+newAudioDecoderSupport = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecodersupport-supported AudioDecoderSupport.supported specification>
+setSupported :: (MonadDOM m) => AudioDecoderSupport -> Bool -> m ()
+setSupported self val = liftDOM (void (self ^. jss "supported" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecodersupport-supported AudioDecoderSupport.supported specification>
+getSupported :: (MonadDOM m) => AudioDecoderSupport -> m (Maybe Bool)
+getSupported self = liftDOM (((self ^. js "supported") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecodersupport-supported AudioDecoderSupport.supported specification>
+getSupportedUnsafe :: (MonadDOM m, HasCallStack) => AudioDecoderSupport -> m Bool
+getSupportedUnsafe self = liftDOM ((((self ^. js "supported") >>= 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 (((self ^. js "supported") >>= valToBool))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecodersupport-config AudioDecoderSupport.config specification>
+setConfig :: (MonadDOM m) => AudioDecoderSupport -> AudioDecoderConfig -> m ()
+setConfig self val = liftDOM (void (self ^. jss "config" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecodersupport-config AudioDecoderSupport.config specification>
+getConfig :: (MonadDOM m) => AudioDecoderSupport -> m (Maybe AudioDecoderConfig)
+getConfig self = liftDOM (((self ^. js "config") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audiodecodersupport-config AudioDecoderSupport.config specification>
+getConfigUnsafe :: (MonadDOM m, HasCallStack) => AudioDecoderSupport -> m AudioDecoderConfig
+getConfigUnsafe self = liftDOM ((((self ^. js "config") >>= 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 (((self ^. js "config") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AudioDestinationNode.hs b/src/JSDOM/Generated/AudioDestinationNode.hs
--- a/src/JSDOM/Generated/AudioDestinationNode.hs
+++ b/src/JSDOM/Generated/AudioDestinationNode.hs
@@ -1,28 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.AudioDestinationNode
-       (getMaxChannelCount, AudioDestinationNode(..),
-        gTypeAudioDestinationNode)
+       (getMaxChannelCount, AudioDestinationNode(..), gTypeAudioDestinationNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioDestinationNode.maxChannelCount Mozilla AudioDestinationNode.maxChannelCount documentation> 
-getMaxChannelCount ::
-                   (MonadDOM m) => AudioDestinationNode -> m Word
-getMaxChannelCount self
-  = liftDOM
-      (round <$> ((self ^. js "maxChannelCount") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioDestinationNode/maxChannelCount MDN AudioDestinationNode.maxChannelCount documentation>
+getMaxChannelCount :: (MonadDOM m) => AudioDestinationNode -> m Word
+getMaxChannelCount self = liftDOM ((P.round <$> ((self ^. js "maxChannelCount") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/AudioEncoder.hs b/src/JSDOM/Generated/AudioEncoder.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioEncoder.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.AudioEncoder
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/AudioEncoder MDN AudioEncoder. documentation>
+newAudioEncoder :: (MonadDOM m) => AudioEncoderInit -> m AudioEncoder
+newAudioEncoder init = liftDOM (((new (jsg "AudioEncoder") [toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/close MDN AudioEncoder.close documentation>
+close :: (MonadDOM m) => AudioEncoder -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/configure MDN AudioEncoder.configure documentation>
+configure :: (MonadDOM m) => AudioEncoder -> AudioEncoderConfig -> m ()
+configure self config = liftDOM (void (self ^. jsf "configure" [toJSVal config]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/encode MDN AudioEncoder.encode documentation>
+encode :: (MonadDOM m) => AudioEncoder -> AudioData -> m ()
+encode self data' = liftDOM (void (self ^. jsf "encode" [toJSVal data']))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/flush MDN AudioEncoder.flush documentation>
+flush :: (MonadDOM m) => AudioEncoder -> m ()
+flush self = liftDOM (void (((self ^. jsf "flush" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/reset MDN AudioEncoder.reset documentation>
+reset :: (MonadDOM m) => AudioEncoder -> m ()
+reset self = liftDOM (void (self ^. jsf "reset" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/isConfigSupported_static MDN AudioEncoder.isConfigSupported documentation>
+isConfigSupported :: (MonadDOM m) => AudioEncoderConfig -> m AudioEncoderSupport
+isConfigSupported config = liftDOM ((((((jsg "AudioEncoder") ^. jsf "isConfigSupported" [toJSVal config]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/isConfigSupported_static MDN AudioEncoder.isConfigSupported documentation>
+isConfigSupported_ :: (MonadDOM m) => AudioEncoderConfig -> m ()
+isConfigSupported_ config = liftDOM (void ((((jsg "AudioEncoder") ^. jsf "isConfigSupported" [toJSVal config]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/state MDN AudioEncoder.state documentation>
+getState :: (MonadDOM m) => AudioEncoder -> m CodecState
+getState self = liftDOM (((self ^. js "state") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioEncoder/encodeQueueSize MDN AudioEncoder.encodeQueueSize documentation>
+getEncodeQueueSize :: (MonadDOM m) => AudioEncoder -> m Word
+getEncodeQueueSize self = liftDOM ((P.round <$> ((self ^. js "encodeQueueSize") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoder-ondequeue dequeue event>
+dequeue :: EventName AudioEncoder Event
+dequeue = unsafeEventName (toJSString "dequeue")
diff --git a/src/JSDOM/Generated/AudioEncoderConfig.hs b/src/JSDOM/Generated/AudioEncoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioEncoderConfig.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.AudioEncoderConfig
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-audioencoderconfig AudioEncoderConfig specification>
+newAudioEncoderConfig :: (MonadDOM m, ToJSString codec) => codec -> Word -> Word -> m AudioEncoderConfig
+newAudioEncoderConfig codec sampleRate numberOfChannels = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "codec" (toJSVal codec)) P.>> (o ^. jss "sampleRate" (toJSVal sampleRate)) P.>> (o ^. jss "numberOfChannels" (toJSVal numberOfChannels)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-codec AudioEncoderConfig.codec specification>
+setCodec :: (MonadDOM m, ToJSString val) => AudioEncoderConfig -> val -> m ()
+setCodec self val = liftDOM (void (self ^. jss "codec" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-codec AudioEncoderConfig.codec specification>
+getCodec :: (MonadDOM m, FromJSString result) => AudioEncoderConfig -> m result
+getCodec self = liftDOM (((self ^. js "codec") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-samplerate AudioEncoderConfig.sampleRate specification>
+setSampleRate :: (MonadDOM m) => AudioEncoderConfig -> Word -> m ()
+setSampleRate self val = liftDOM (void (self ^. jss "sampleRate" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-samplerate AudioEncoderConfig.sampleRate specification>
+getSampleRate :: (MonadDOM m) => AudioEncoderConfig -> m Word
+getSampleRate self = liftDOM ((P.round <$> ((self ^. js "sampleRate") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-numberofchannels AudioEncoderConfig.numberOfChannels specification>
+setNumberOfChannels :: (MonadDOM m) => AudioEncoderConfig -> Word -> m ()
+setNumberOfChannels self val = liftDOM (void (self ^. jss "numberOfChannels" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-numberofchannels AudioEncoderConfig.numberOfChannels specification>
+getNumberOfChannels :: (MonadDOM m) => AudioEncoderConfig -> m Word
+getNumberOfChannels self = liftDOM ((P.round <$> ((self ^. js "numberOfChannels") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-bitrate AudioEncoderConfig.bitrate specification>
+setBitrate :: (MonadDOM m) => AudioEncoderConfig -> Word53 -> m ()
+setBitrate self val = liftDOM (void (self ^. jss "bitrate" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-bitrate AudioEncoderConfig.bitrate specification>
+getBitrate :: (MonadDOM m) => AudioEncoderConfig -> m (Maybe Word53)
+getBitrate self = liftDOM (((self ^. js "bitrate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-bitrate AudioEncoderConfig.bitrate specification>
+getBitrateUnsafe :: (MonadDOM m, HasCallStack) => AudioEncoderConfig -> m Word53
+getBitrateUnsafe self = liftDOM ((((self ^. js "bitrate") >>= 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 (((self ^. js "bitrate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-bitratemode AudioEncoderConfig.bitrateMode specification>
+setBitrateMode :: (MonadDOM m) => AudioEncoderConfig -> BitrateMode -> m ()
+setBitrateMode self val = liftDOM (void (self ^. jss "bitrateMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-bitratemode AudioEncoderConfig.bitrateMode specification>
+getBitrateMode :: (MonadDOM m) => AudioEncoderConfig -> m (Maybe BitrateMode)
+getBitrateMode self = liftDOM (((self ^. js "bitrateMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderconfig-bitratemode AudioEncoderConfig.bitrateMode specification>
+getBitrateModeUnsafe :: (MonadDOM m, HasCallStack) => AudioEncoderConfig -> m BitrateMode
+getBitrateModeUnsafe self = liftDOM ((((self ^. js "bitrateMode") >>= 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 (((self ^. js "bitrateMode") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "aac" (toJSVal val)))
+
+-- | <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 (((self ^. js "aac") >>= 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 ((((self ^. js "aac") >>= 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 (((self ^. js "aac") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "flac" (toJSVal val)))
+
+-- | <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 (((self ^. js "flac") >>= 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 ((((self ^. js "flac") >>= 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 (((self ^. js "flac") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "opus" (toJSVal val)))
+
+-- | <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 (((self ^. js "opus") >>= 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 ((((self ^. js "opus") >>= 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 (((self ^. js "opus") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AudioEncoderInit.hs b/src/JSDOM/Generated/AudioEncoderInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioEncoderInit.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.AudioEncoderInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-audioencoderinit AudioEncoderInit specification>
+newAudioEncoderInit :: (MonadDOM m) => EncodedAudioChunkOutputCallback -> WebCodecsErrorCallback -> m AudioEncoderInit
+newAudioEncoderInit output error = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "output" (toJSVal output)) P.>> (o ^. jss "error" (toJSVal error)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderinit-output AudioEncoderInit.output specification>
+setOutput :: (MonadDOM m) => AudioEncoderInit -> EncodedAudioChunkOutputCallback -> m ()
+setOutput self val = liftDOM (void (self ^. jss "output" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencoderinit-error AudioEncoderInit.error specification>
+setError :: (MonadDOM m) => AudioEncoderInit -> WebCodecsErrorCallback -> m ()
+setError self val = liftDOM (void (self ^. jss "error" (toJSVal val)))
diff --git a/src/JSDOM/Generated/AudioEncoderSupport.hs b/src/JSDOM/Generated/AudioEncoderSupport.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioEncoderSupport.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.AudioEncoderSupport
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-audioencodersupport AudioEncoderSupport specification>
+newAudioEncoderSupport :: (MonadDOM m) => m AudioEncoderSupport
+newAudioEncoderSupport = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencodersupport-supported AudioEncoderSupport.supported specification>
+setSupported :: (MonadDOM m) => AudioEncoderSupport -> Bool -> m ()
+setSupported self val = liftDOM (void (self ^. jss "supported" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencodersupport-supported AudioEncoderSupport.supported specification>
+getSupported :: (MonadDOM m) => AudioEncoderSupport -> m (Maybe Bool)
+getSupported self = liftDOM (((self ^. js "supported") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencodersupport-supported AudioEncoderSupport.supported specification>
+getSupportedUnsafe :: (MonadDOM m, HasCallStack) => AudioEncoderSupport -> m Bool
+getSupportedUnsafe self = liftDOM ((((self ^. js "supported") >>= 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 (((self ^. js "supported") >>= valToBool))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencodersupport-config AudioEncoderSupport.config specification>
+setConfig :: (MonadDOM m) => AudioEncoderSupport -> AudioEncoderConfig -> m ()
+setConfig self val = liftDOM (void (self ^. jss "config" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencodersupport-config AudioEncoderSupport.config specification>
+getConfig :: (MonadDOM m) => AudioEncoderSupport -> m (Maybe AudioEncoderConfig)
+getConfig self = liftDOM (((self ^. js "config") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-audioencodersupport-config AudioEncoderSupport.config specification>
+getConfigUnsafe :: (MonadDOM m, HasCallStack) => AudioEncoderSupport -> m AudioEncoderConfig
+getConfigUnsafe self = liftDOM ((((self ^. js "config") >>= 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 (((self ^. js "config") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AudioListener.hs b/src/JSDOM/Generated/AudioListener.hs
--- a/src/JSDOM/Generated/AudioListener.hs
+++ b/src/JSDOM/Generated/AudioListener.hs
@@ -1,72 +1,60 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.AudioListener
-       (setPosition, setOrientation, setVelocity, setDopplerFactor,
-        getDopplerFactor, setSpeedOfSound, getSpeedOfSound,
-        AudioListener(..), gTypeAudioListener)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.setPosition Mozilla AudioListener.setPosition documentation> 
-setPosition ::
-            (MonadDOM m) => AudioListener -> Float -> Float -> Float -> m ()
-setPosition self x y z
-  = liftDOM
-      (void
-         (self ^. jsf "setPosition" [toJSVal x, toJSVal y, toJSVal z]))
+-- | <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 (self ^. jsf "setOrientation" [toJSVal x, toJSVal y, toJSVal z, toJSVal xUp, toJSVal yUp, toJSVal zUp]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.setOrientation Mozilla AudioListener.setOrientation documentation> 
-setOrientation ::
-               (MonadDOM m) =>
-                 AudioListener ->
-                   Float -> Float -> Float -> Float -> Float -> Float -> m ()
-setOrientation self x y z xUp yUp zUp
-  = liftDOM
-      (void
-         (self ^. jsf "setOrientation"
-            [toJSVal x, toJSVal y, toJSVal z, toJSVal xUp, toJSVal yUp,
-             toJSVal zUp]))
+-- | <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 (self ^. jsf "setPosition" [toJSVal x, toJSVal y, toJSVal z]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.setVelocity Mozilla AudioListener.setVelocity documentation> 
-setVelocity ::
-            (MonadDOM m) => AudioListener -> Float -> Float -> Float -> m ()
-setVelocity self x y z
-  = liftDOM
-      (void
-         (self ^. jsf "setVelocity" [toJSVal x, toJSVal y, toJSVal z]))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/positionX MDN AudioListener.positionX documentation>
+getPositionX :: (MonadDOM m) => AudioListener -> m AudioParam
+getPositionX self = liftDOM (((self ^. js "positionX") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.dopplerFactor Mozilla AudioListener.dopplerFactor documentation> 
-setDopplerFactor :: (MonadDOM m) => AudioListener -> Float -> m ()
-setDopplerFactor self val
-  = liftDOM (self ^. jss "dopplerFactor" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/positionY MDN AudioListener.positionY documentation>
+getPositionY :: (MonadDOM m) => AudioListener -> m AudioParam
+getPositionY self = liftDOM (((self ^. js "positionY") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.dopplerFactor Mozilla AudioListener.dopplerFactor documentation> 
-getDopplerFactor :: (MonadDOM m) => AudioListener -> m Float
-getDopplerFactor self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "dopplerFactor") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/positionZ MDN AudioListener.positionZ documentation>
+getPositionZ :: (MonadDOM m) => AudioListener -> m AudioParam
+getPositionZ self = liftDOM (((self ^. js "positionZ") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.speedOfSound Mozilla AudioListener.speedOfSound documentation> 
-setSpeedOfSound :: (MonadDOM m) => AudioListener -> Float -> m ()
-setSpeedOfSound self val
-  = liftDOM (self ^. jss "speedOfSound" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/forwardX MDN AudioListener.forwardX documentation>
+getForwardX :: (MonadDOM m) => AudioListener -> m AudioParam
+getForwardX self = liftDOM (((self ^. js "forwardX") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.speedOfSound Mozilla AudioListener.speedOfSound documentation> 
-getSpeedOfSound :: (MonadDOM m) => AudioListener -> m Float
-getSpeedOfSound self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "speedOfSound") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/forwardY MDN AudioListener.forwardY documentation>
+getForwardY :: (MonadDOM m) => AudioListener -> m AudioParam
+getForwardY self = liftDOM (((self ^. js "forwardY") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/forwardZ MDN AudioListener.forwardZ documentation>
+getForwardZ :: (MonadDOM m) => AudioListener -> m AudioParam
+getForwardZ self = liftDOM (((self ^. js "forwardZ") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/upX MDN AudioListener.upX documentation>
+getUpX :: (MonadDOM m) => AudioListener -> m AudioParam
+getUpX self = liftDOM (((self ^. js "upX") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/upY MDN AudioListener.upY documentation>
+getUpY :: (MonadDOM m) => AudioListener -> m AudioParam
+getUpY self = liftDOM (((self ^. js "upY") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioListener/upZ MDN AudioListener.upZ documentation>
+getUpZ :: (MonadDOM m) => AudioListener -> m AudioParam
+getUpZ self = liftDOM (((self ^. js "upZ") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AudioNode.hs b/src/JSDOM/Generated/AudioNode.hs
--- a/src/JSDOM/Generated/AudioNode.hs
+++ b/src/JSDOM/Generated/AudioNode.hs
@@ -1,121 +1,92 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.AudioNode
-       (connect, connectParam, disconnect, getContext, getNumberOfInputs,
-        getNumberOfOutputs, setChannelCount, getChannelCount,
-        setChannelCountMode, getChannelCountMode, setChannelInterpretation,
-        getChannelInterpretation, AudioNode(..), gTypeAudioNode,
-        IsAudioNode, toAudioNode)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.connect Mozilla AudioNode.connect documentation> 
-connect ::
-        (MonadDOM m, IsAudioNode self, IsAudioNode destination) =>
-          self -> destination -> Maybe Word -> Maybe Word -> m ()
-connect self destination output input
-  = liftDOM
-      (void
-         ((toAudioNode self) ^. jsf "connect"
-            [toJSVal destination, toJSVal output, toJSVal 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 AudioNode
+connect self destinationNode output input = liftDOM ((((Types.toAudioNode self) ^. jsf "connect" [toJSVal destinationNode, P.maybe (P.return jsUndefined) toJSVal output, P.maybe (P.return jsUndefined) toJSVal input]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.connect Mozilla AudioNode.connect documentation> 
-connectParam ::
-             (MonadDOM m, IsAudioNode self) =>
-               self -> AudioParam -> Maybe Word -> m ()
-connectParam self destination output
-  = liftDOM
-      (void
-         ((toAudioNode self) ^. jsf "connect"
-            [toJSVal destination, toJSVal output]))
+-- | <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 ((Types.toAudioNode self) ^. jsf "connect" [toJSVal destinationNode, P.maybe (P.return jsUndefined) toJSVal output, P.maybe (P.return jsUndefined) toJSVal input]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.disconnect Mozilla AudioNode.disconnect documentation> 
-disconnect ::
-           (MonadDOM m, IsAudioNode self) => self -> Maybe Word -> m ()
-disconnect self output
-  = liftDOM
-      (void ((toAudioNode self) ^. jsf "disconnect" [toJSVal output]))
+-- | <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 ((Types.toAudioNode self) ^. jsf "connect" [toJSVal destinationParam, P.maybe (P.return jsUndefined) toJSVal output]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.context Mozilla AudioNode.context documentation> 
-getContext ::
-           (MonadDOM m, IsAudioNode self) => self -> m AudioContext
-getContext self
-  = liftDOM
-      (((toAudioNode self) ^. js "context") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/disconnect MDN AudioNode.disconnect documentation>
+disconnect' :: (MonadDOM m, IsAudioNode self) => self -> m ()
+disconnect' self = liftDOM (void ((Types.toAudioNode self) ^. jsf "disconnect" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.numberOfInputs Mozilla AudioNode.numberOfInputs documentation> 
-getNumberOfInputs ::
-                  (MonadDOM m, IsAudioNode self) => self -> m Word
-getNumberOfInputs self
-  = liftDOM
-      (round <$>
-         (((toAudioNode self) ^. js "numberOfInputs") >>= valToNumber))
+-- | <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 ((Types.toAudioNode self) ^. jsf "disconnect" [toJSVal output]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.numberOfOutputs Mozilla AudioNode.numberOfOutputs documentation> 
-getNumberOfOutputs ::
-                   (MonadDOM m, IsAudioNode self) => self -> m Word
-getNumberOfOutputs self
-  = liftDOM
-      (round <$>
-         (((toAudioNode self) ^. js "numberOfOutputs") >>= valToNumber))
+-- | <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 ((Types.toAudioNode self) ^. jsf "disconnect" [toJSVal destinationNode]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCount Mozilla AudioNode.channelCount documentation> 
-setChannelCount ::
-                (MonadDOM m, IsAudioNode self) => self -> Word -> m ()
-setChannelCount self val
-  = liftDOM ((toAudioNode self) ^. jss "channelCount" (toJSVal val))
+-- | <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 ((Types.toAudioNode self) ^. jsf "disconnect" [toJSVal destinationNode, toJSVal output]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCount Mozilla AudioNode.channelCount documentation> 
+-- | <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 ((Types.toAudioNode self) ^. jsf "disconnect" [toJSVal destinationNode, toJSVal output, toJSVal input]))
+
+-- | <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 ((Types.toAudioNode self) ^. jsf "disconnect" [toJSVal destinationParam]))
+
+-- | <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 ((Types.toAudioNode self) ^. jsf "disconnect" [toJSVal destinationParam, toJSVal output]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/context MDN AudioNode.context documentation>
+getContext :: (MonadDOM m, IsAudioNode self) => self -> m BaseAudioContext
+getContext self = liftDOM ((((Types.toAudioNode self) ^. js "context") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/numberOfInputs MDN AudioNode.numberOfInputs documentation>
+getNumberOfInputs :: (MonadDOM m, IsAudioNode self) => self -> m Word
+getNumberOfInputs self = liftDOM ((P.round <$> (((Types.toAudioNode self) ^. js "numberOfInputs") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/numberOfOutputs MDN AudioNode.numberOfOutputs documentation>
+getNumberOfOutputs :: (MonadDOM m, IsAudioNode self) => self -> m Word
+getNumberOfOutputs self = liftDOM ((P.round <$> (((Types.toAudioNode self) ^. js "numberOfOutputs") >>= valToNumber)))
+
+-- | <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 ((Types.toAudioNode self) ^. jss "channelCount" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/channelCount MDN AudioNode.channelCount documentation>
 getChannelCount :: (MonadDOM m, IsAudioNode self) => self -> m Word
-getChannelCount self
-  = liftDOM
-      (round <$>
-         (((toAudioNode self) ^. js "channelCount") >>= valToNumber))
+getChannelCount self = liftDOM ((P.round <$> (((Types.toAudioNode self) ^. js "channelCount") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCountMode Mozilla AudioNode.channelCountMode documentation> 
-setChannelCountMode ::
-                    (MonadDOM m, IsAudioNode self, ToJSString val) =>
-                      self -> val -> m ()
-setChannelCountMode self val
-  = liftDOM
-      ((toAudioNode self) ^. jss "channelCountMode" (toJSVal val))
+-- | <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 ((Types.toAudioNode self) ^. jss "channelCountMode" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCountMode Mozilla AudioNode.channelCountMode documentation> 
-getChannelCountMode ::
-                    (MonadDOM m, IsAudioNode self, FromJSString result) =>
-                      self -> m result
-getChannelCountMode self
-  = liftDOM
-      (((toAudioNode self) ^. js "channelCountMode") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/channelCountMode MDN AudioNode.channelCountMode documentation>
+getChannelCountMode :: (MonadDOM m, IsAudioNode self) => self -> m ChannelCountMode
+getChannelCountMode self = liftDOM ((((Types.toAudioNode self) ^. js "channelCountMode") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelInterpretation Mozilla AudioNode.channelInterpretation documentation> 
-setChannelInterpretation ::
-                         (MonadDOM m, IsAudioNode self, ToJSString val) =>
-                           self -> val -> m ()
-setChannelInterpretation self val
-  = liftDOM
-      ((toAudioNode self) ^. jss "channelInterpretation" (toJSVal val))
+-- | <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 ((Types.toAudioNode self) ^. jss "channelInterpretation" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelInterpretation Mozilla AudioNode.channelInterpretation documentation> 
-getChannelInterpretation ::
-                         (MonadDOM m, IsAudioNode self, FromJSString result) =>
-                           self -> m result
-getChannelInterpretation self
-  = liftDOM
-      (((toAudioNode self) ^. js "channelInterpretation") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioNode/channelInterpretation MDN AudioNode.channelInterpretation documentation>
+getChannelInterpretation :: (MonadDOM m, IsAudioNode self) => self -> m ChannelInterpretation
+getChannelInterpretation self = liftDOM ((((Types.toAudioNode self) ^. js "channelInterpretation") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AudioNodeOptions.hs b/src/JSDOM/Generated/AudioNodeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioNodeOptions.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.AudioNodeOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#AudioNodeOptions AudioNodeOptions specification>
+newAudioNodeOptions :: (MonadDOM m) => m AudioNodeOptions
+newAudioNodeOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toAudioNodeOptions self) ^. jss "channelCount" (toJSVal val)))
+
+-- | <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 ((((Types.toAudioNodeOptions self) ^. js "channelCount") >>= 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 (((((Types.toAudioNodeOptions self) ^. js "channelCount") >>= 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 ((P.round <$> (((Types.toAudioNodeOptions self) ^. js "channelCount") >>= valToNumber)))
+
+-- | <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 ((Types.toAudioNodeOptions self) ^. jss "channelCountMode" (toJSVal val)))
+
+-- | <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 ((((Types.toAudioNodeOptions self) ^. js "channelCountMode") >>= 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 (((((Types.toAudioNodeOptions self) ^. js "channelCountMode") >>= 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 ((((Types.toAudioNodeOptions self) ^. js "channelCountMode") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toAudioNodeOptions self) ^. jss "channelInterpretation" (toJSVal val)))
+
+-- | <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 ((((Types.toAudioNodeOptions self) ^. js "channelInterpretation") >>= 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 (((((Types.toAudioNodeOptions self) ^. js "channelInterpretation") >>= 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 ((((Types.toAudioNodeOptions self) ^. js "channelInterpretation") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AudioParam.hs b/src/JSDOM/Generated/AudioParam.hs
--- a/src/JSDOM/Generated/AudioParam.hs
+++ b/src/JSDOM/Generated/AudioParam.hs
@@ -1,112 +1,100 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.AudioParam
-       (setValueAtTime, linearRampToValueAtTime,
-        exponentialRampToValueAtTime, setTargetAtTime, setValueCurveAtTime,
-        cancelScheduledValues, setValue, getValue, getMinValue,
-        getMaxValue, getDefaultValue, getName, getUnits, AudioParam(..),
-        gTypeAudioParam)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setValueAtTime Mozilla AudioParam.setValueAtTime documentation> 
-setValueAtTime ::
-               (MonadDOM m) => AudioParam -> Float -> Float -> m ()
-setValueAtTime self value time
-  = liftDOM
-      (void (self ^. jsf "setValueAtTime" [toJSVal value, toJSVal time]))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/cancelAndHoldAtTime MDN AudioParam.cancelAndHoldAtTime documentation>
+cancelAndHoldAtTime :: (MonadDOM m) => AudioParam -> Double -> m AudioParam
+cancelAndHoldAtTime self cancelTime = liftDOM (((self ^. jsf "cancelAndHoldAtTime" [toJSVal cancelTime]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.linearRampToValueAtTime Mozilla AudioParam.linearRampToValueAtTime documentation> 
-linearRampToValueAtTime ::
-                        (MonadDOM m) => AudioParam -> Float -> Float -> m ()
-linearRampToValueAtTime self value time
-  = liftDOM
-      (void
-         (self ^. jsf "linearRampToValueAtTime"
-            [toJSVal value, toJSVal time]))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/cancelAndHoldAtTime MDN AudioParam.cancelAndHoldAtTime documentation>
+cancelAndHoldAtTime_ :: (MonadDOM m) => AudioParam -> Double -> m ()
+cancelAndHoldAtTime_ self cancelTime = liftDOM (void (self ^. jsf "cancelAndHoldAtTime" [toJSVal cancelTime]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.exponentialRampToValueAtTime Mozilla AudioParam.exponentialRampToValueAtTime documentation> 
-exponentialRampToValueAtTime ::
-                             (MonadDOM m) => AudioParam -> Float -> Float -> m ()
-exponentialRampToValueAtTime self value time
-  = liftDOM
-      (void
-         (self ^. jsf "exponentialRampToValueAtTime"
-            [toJSVal value, toJSVal time]))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/cancelScheduledValues MDN AudioParam.cancelScheduledValues documentation>
+cancelScheduledValues :: (MonadDOM m) => AudioParam -> Double -> m AudioParam
+cancelScheduledValues self cancelTime = liftDOM (((self ^. jsf "cancelScheduledValues" [toJSVal cancelTime]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setTargetAtTime Mozilla AudioParam.setTargetAtTime documentation> 
-setTargetAtTime ::
-                (MonadDOM m) => AudioParam -> Float -> Float -> Float -> m ()
-setTargetAtTime self target time timeConstant
-  = liftDOM
-      (void
-         (self ^. jsf "setTargetAtTime"
-            [toJSVal target, toJSVal time, toJSVal timeConstant]))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/cancelScheduledValues MDN AudioParam.cancelScheduledValues documentation>
+cancelScheduledValues_ :: (MonadDOM m) => AudioParam -> Double -> m ()
+cancelScheduledValues_ self cancelTime = liftDOM (void (self ^. jsf "cancelScheduledValues" [toJSVal cancelTime]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setValueCurveAtTime Mozilla AudioParam.setValueCurveAtTime documentation> 
-setValueCurveAtTime ::
-                    (MonadDOM m, IsFloat32Array values) =>
-                      AudioParam -> Maybe values -> Float -> Float -> m ()
-setValueCurveAtTime self values time duration
-  = liftDOM
-      (void
-         (self ^. jsf "setValueCurveAtTime"
-            [toJSVal values, toJSVal time, toJSVal duration]))
+-- | <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 (((self ^. jsf "exponentialRampToValueAtTime" [toJSVal value, toJSVal endTime]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.cancelScheduledValues Mozilla AudioParam.cancelScheduledValues documentation> 
-cancelScheduledValues ::
-                      (MonadDOM m) => AudioParam -> Float -> m ()
-cancelScheduledValues self startTime
-  = liftDOM
-      (void (self ^. jsf "cancelScheduledValues" [toJSVal startTime]))
+-- | <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 (self ^. jsf "exponentialRampToValueAtTime" [toJSVal value, toJSVal endTime]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.value Mozilla AudioParam.value documentation> 
+-- | <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 (((self ^. jsf "linearRampToValueAtTime" [toJSVal value, toJSVal endTime]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "linearRampToValueAtTime" [toJSVal value, toJSVal endTime]))
+
+-- | <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 (((self ^. jsf "setTargetAtTime" [toJSVal target, toJSVal startTime, toJSVal timeConstant]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "setTargetAtTime" [toJSVal target, toJSVal startTime, toJSVal timeConstant]))
+
+-- | <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 (((self ^. jsf "setValueAtTime" [toJSVal value, toJSVal startTime]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "setValueAtTime" [toJSVal value, toJSVal startTime]))
+
+-- | <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 (((self ^. jsf "setValueCurveAtTime" [toJSVal values, toJSVal startTime, toJSVal duration]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "setValueCurveAtTime" [toJSVal values, toJSVal startTime, toJSVal duration]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/value MDN AudioParam.value documentation>
 setValue :: (MonadDOM m) => AudioParam -> Float -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+setValue self val = liftDOM (void (self ^. jss "value" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.value Mozilla AudioParam.value documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/value MDN AudioParam.value documentation>
 getValue :: (MonadDOM m) => AudioParam -> m Float
-getValue self
-  = liftDOM (realToFrac <$> ((self ^. js "value") >>= valToNumber))
+getValue self = liftDOM ((P.realToFrac <$> ((self ^. js "value") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.minValue Mozilla AudioParam.minValue documentation> 
-getMinValue :: (MonadDOM m) => AudioParam -> m Float
-getMinValue self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "minValue") >>= valToNumber))
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioparam-automationrate AudioParam.automationRate specification>
+setAutomationRate :: (MonadDOM m) => AudioParam -> AutomationRate -> m ()
+setAutomationRate self val = liftDOM (void (self ^. jss "automationRate" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.maxValue Mozilla AudioParam.maxValue documentation> 
-getMaxValue :: (MonadDOM m) => AudioParam -> m Float
-getMaxValue self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "maxValue") >>= valToNumber))
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioparam-automationrate AudioParam.automationRate specification>
+getAutomationRate :: (MonadDOM m) => AudioParam -> m AutomationRate
+getAutomationRate self = liftDOM (((self ^. js "automationRate") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.defaultValue Mozilla AudioParam.defaultValue documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/defaultValue MDN AudioParam.defaultValue documentation>
 getDefaultValue :: (MonadDOM m) => AudioParam -> m Float
-getDefaultValue self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "defaultValue") >>= valToNumber))
+getDefaultValue self = liftDOM ((P.realToFrac <$> ((self ^. js "defaultValue") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.name Mozilla AudioParam.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => AudioParam -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/minValue MDN AudioParam.minValue documentation>
+getMinValue :: (MonadDOM m) => AudioParam -> m Float
+getMinValue self = liftDOM ((P.realToFrac <$> ((self ^. js "minValue") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.units Mozilla AudioParam.units documentation> 
-getUnits :: (MonadDOM m) => AudioParam -> m Word
-getUnits self
-  = liftDOM (round <$> ((self ^. js "units") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioParam/maxValue MDN AudioParam.maxValue documentation>
+getMaxValue :: (MonadDOM m) => AudioParam -> m Float
+getMaxValue self = liftDOM ((P.realToFrac <$> ((self ^. js "maxValue") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/AudioParamMap.hs b/src/JSDOM/Generated/AudioParamMap.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioParamMap.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.AudioParamMap
+       (AudioParamMap(..), gTypeAudioParamMap)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/AudioProcessingEvent.hs b/src/JSDOM/Generated/AudioProcessingEvent.hs
--- a/src/JSDOM/Generated/AudioProcessingEvent.hs
+++ b/src/JSDOM/Generated/AudioProcessingEvent.hs
@@ -1,38 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.AudioProcessingEvent
-       (getPlaybackTime, getInputBuffer, getOutputBuffer,
-        AudioProcessingEvent(..), gTypeAudioProcessingEvent)
+       (newAudioProcessingEvent, getPlaybackTime, getInputBuffer, getOutputBuffer, AudioProcessingEvent(..), gTypeAudioProcessingEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.playbackTime Mozilla AudioProcessingEvent.playbackTime documentation> 
+-- | <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 (((new (jsg "AudioProcessingEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioProcessingEvent/playbackTime MDN AudioProcessingEvent.playbackTime documentation>
 getPlaybackTime :: (MonadDOM m) => AudioProcessingEvent -> m Double
-getPlaybackTime self
-  = liftDOM ((self ^. js "playbackTime") >>= valToNumber)
+getPlaybackTime self = liftDOM (((self ^. js "playbackTime") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.inputBuffer Mozilla AudioProcessingEvent.inputBuffer documentation> 
-getInputBuffer ::
-               (MonadDOM m) => AudioProcessingEvent -> m AudioBuffer
-getInputBuffer self
-  = liftDOM ((self ^. js "inputBuffer") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioProcessingEvent/inputBuffer MDN AudioProcessingEvent.inputBuffer documentation>
+getInputBuffer :: (MonadDOM m) => AudioProcessingEvent -> m AudioBuffer
+getInputBuffer self = liftDOM (((self ^. js "inputBuffer") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.outputBuffer Mozilla AudioProcessingEvent.outputBuffer documentation> 
-getOutputBuffer ::
-                (MonadDOM m) => AudioProcessingEvent -> m AudioBuffer
-getOutputBuffer self
-  = liftDOM ((self ^. js "outputBuffer") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioProcessingEvent/outputBuffer MDN AudioProcessingEvent.outputBuffer documentation>
+getOutputBuffer :: (MonadDOM m) => AudioProcessingEvent -> m AudioBuffer
+getOutputBuffer self = liftDOM (((self ^. js "outputBuffer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AudioProcessingEventInit.hs b/src/JSDOM/Generated/AudioProcessingEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioProcessingEventInit.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.AudioProcessingEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#AudioProcessingEventInit AudioProcessingEventInit specification>
+newAudioProcessingEventInit :: (MonadDOM m) => Double -> AudioBuffer -> AudioBuffer -> m AudioProcessingEventInit
+newAudioProcessingEventInit playbackTime inputBuffer outputBuffer = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "playbackTime" (toJSVal playbackTime)) P.>> (o ^. jss "inputBuffer" (toJSVal inputBuffer)) P.>> (o ^. jss "outputBuffer" (toJSVal outputBuffer)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioprocessingeventinit-playbacktime AudioProcessingEventInit.playbackTime specification>
+setPlaybackTime :: (MonadDOM m) => AudioProcessingEventInit -> Double -> m ()
+setPlaybackTime self val = liftDOM (void (self ^. jss "playbackTime" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioprocessingeventinit-playbacktime AudioProcessingEventInit.playbackTime specification>
+getPlaybackTime :: (MonadDOM m) => AudioProcessingEventInit -> m Double
+getPlaybackTime self = liftDOM (((self ^. js "playbackTime") >>= valToNumber))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioprocessingeventinit-inputbuffer AudioProcessingEventInit.inputBuffer specification>
+setInputBuffer :: (MonadDOM m) => AudioProcessingEventInit -> AudioBuffer -> m ()
+setInputBuffer self val = liftDOM (void (self ^. jss "inputBuffer" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioprocessingeventinit-inputbuffer AudioProcessingEventInit.inputBuffer specification>
+getInputBuffer :: (MonadDOM m) => AudioProcessingEventInit -> m AudioBuffer
+getInputBuffer self = liftDOM (((self ^. js "inputBuffer") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioprocessingeventinit-outputbuffer AudioProcessingEventInit.outputBuffer specification>
+setOutputBuffer :: (MonadDOM m) => AudioProcessingEventInit -> AudioBuffer -> m ()
+setOutputBuffer self val = liftDOM (void (self ^. jss "outputBuffer" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioprocessingeventinit-outputbuffer AudioProcessingEventInit.outputBuffer specification>
+getOutputBuffer :: (MonadDOM m) => AudioProcessingEventInit -> m AudioBuffer
+getOutputBuffer self = liftDOM (((self ^. js "outputBuffer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AudioScheduledSourceNode.hs b/src/JSDOM/Generated/AudioScheduledSourceNode.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioScheduledSourceNode.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.AudioScheduledSourceNode
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toAudioScheduledSourceNode self) ^. jsf "start" [P.maybe (P.return jsUndefined) toJSVal when]))
+
+-- | <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 ((Types.toAudioScheduledSourceNode self) ^. jsf "stop" [P.maybe (P.return jsUndefined) toJSVal when]))
+
+-- | <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/JSDOM/Generated/AudioSinkOptions.hs b/src/JSDOM/Generated/AudioSinkOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioSinkOptions.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.AudioSinkOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#AudioSinkOptions AudioSinkOptions specification>
+newAudioSinkOptions :: (MonadDOM m) => AudioSinkType -> m AudioSinkOptions
+newAudioSinkOptions type' = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "type" (toJSVal type')) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiosinkoptions-type AudioSinkOptions.type specification>
+setType :: (MonadDOM m) => AudioSinkOptions -> AudioSinkType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiosinkoptions-type AudioSinkOptions.type specification>
+getType :: (MonadDOM m) => AudioSinkOptions -> m AudioSinkType
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AudioTimestamp.hs b/src/JSDOM/Generated/AudioTimestamp.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioTimestamp.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.AudioTimestamp
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#AudioTimestamp AudioTimestamp specification>
+newAudioTimestamp :: (MonadDOM m) => m AudioTimestamp
+newAudioTimestamp = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiotimestamp-contexttime AudioTimestamp.contextTime specification>
+setContextTime :: (MonadDOM m) => AudioTimestamp -> Double -> m ()
+setContextTime self val = liftDOM (void (self ^. jss "contextTime" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiotimestamp-contexttime AudioTimestamp.contextTime specification>
+getContextTime :: (MonadDOM m) => AudioTimestamp -> m (Maybe Double)
+getContextTime self = liftDOM (((self ^. js "contextTime") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiotimestamp-contexttime AudioTimestamp.contextTime specification>
+getContextTimeUnsafe :: (MonadDOM m, HasCallStack) => AudioTimestamp -> m Double
+getContextTimeUnsafe self = liftDOM ((((self ^. js "contextTime") >>= 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 (((self ^. js "contextTime") >>= valToNumber))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiotimestamp-performancetime AudioTimestamp.performanceTime specification>
+setPerformanceTime :: (MonadDOM m) => AudioTimestamp -> Double -> m ()
+setPerformanceTime self val = liftDOM (void (self ^. jss "performanceTime" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiotimestamp-performancetime AudioTimestamp.performanceTime specification>
+getPerformanceTime :: (MonadDOM m) => AudioTimestamp -> m (Maybe Double)
+getPerformanceTime self = liftDOM (((self ^. js "performanceTime") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audiotimestamp-performancetime AudioTimestamp.performanceTime specification>
+getPerformanceTimeUnsafe :: (MonadDOM m, HasCallStack) => AudioTimestamp -> m Double
+getPerformanceTimeUnsafe self = liftDOM ((((self ^. js "performanceTime") >>= 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 (((self ^. js "performanceTime") >>= valToNumber))
diff --git a/src/JSDOM/Generated/AudioTrack.hs b/src/JSDOM/Generated/AudioTrack.hs
--- a/src/JSDOM/Generated/AudioTrack.hs
+++ b/src/JSDOM/Generated/AudioTrack.hs
@@ -1,68 +1,52 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.AudioTrack
-       (getId, setKind, getKind, getLabel, setLanguage, getLanguage,
-        setEnabled, getEnabled, getSourceBuffer, AudioTrack(..),
-        gTypeAudioTrack)
+       (getId, getKind, getLabel, getLanguage, setEnabled, getEnabled, getSourceBuffer, getSourceBufferUnsafe, getSourceBufferUnchecked, AudioTrack(..), gTypeAudioTrack)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.id Mozilla AudioTrack.id documentation> 
-getId ::
-      (MonadDOM m, FromJSString result) => AudioTrack -> m result
-getId self = liftDOM ((self ^. js "id") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.kind Mozilla AudioTrack.kind documentation> 
-setKind ::
-        (MonadDOM m, ToJSString val) => AudioTrack -> val -> m ()
-setKind self val = liftDOM (self ^. jss "kind" (toJSVal val))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.kind Mozilla AudioTrack.kind documentation> 
-getKind ::
-        (MonadDOM m, FromJSString result) => AudioTrack -> m result
-getKind self = liftDOM ((self ^. js "kind") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrack/id MDN AudioTrack.id documentation>
+getId :: (MonadDOM m, FromJSString result) => AudioTrack -> m result
+getId self = liftDOM (((self ^. js "id") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.label Mozilla AudioTrack.label documentation> 
-getLabel ::
-         (MonadDOM m, FromJSString result) => AudioTrack -> m result
-getLabel self
-  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrack/kind MDN AudioTrack.kind documentation>
+getKind :: (MonadDOM m, FromJSString result) => AudioTrack -> m result
+getKind self = liftDOM (((self ^. js "kind") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.language Mozilla AudioTrack.language documentation> 
-setLanguage ::
-            (MonadDOM m, ToJSString val) => AudioTrack -> val -> m ()
-setLanguage self val
-  = liftDOM (self ^. jss "language" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrack/label MDN AudioTrack.label documentation>
+getLabel :: (MonadDOM m, FromJSString result) => AudioTrack -> m result
+getLabel self = liftDOM (((self ^. js "label") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.language Mozilla AudioTrack.language documentation> 
-getLanguage ::
-            (MonadDOM m, FromJSString result) => AudioTrack -> m result
-getLanguage self
-  = liftDOM ((self ^. js "language") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrack/language MDN AudioTrack.language documentation>
+getLanguage :: (MonadDOM m, FromJSString result) => AudioTrack -> m result
+getLanguage self = liftDOM (((self ^. js "language") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.enabled Mozilla AudioTrack.enabled documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrack/enabled MDN AudioTrack.enabled documentation>
 setEnabled :: (MonadDOM m) => AudioTrack -> Bool -> m ()
-setEnabled self val = liftDOM (self ^. jss "enabled" (toJSVal val))
+setEnabled self val = liftDOM (void (self ^. jss "enabled" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.enabled Mozilla AudioTrack.enabled documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrack/enabled MDN AudioTrack.enabled documentation>
 getEnabled :: (MonadDOM m) => AudioTrack -> m Bool
-getEnabled self = liftDOM ((self ^. js "enabled") >>= valToBool)
+getEnabled self = liftDOM (((self ^. js "enabled") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.sourceBuffer Mozilla AudioTrack.sourceBuffer documentation> 
-getSourceBuffer :: (MonadDOM m) => AudioTrack -> m SourceBuffer
-getSourceBuffer self
-  = liftDOM ((self ^. js "sourceBuffer") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrack/sourceBuffer MDN AudioTrack.sourceBuffer documentation>
+getSourceBuffer :: (MonadDOM m) => AudioTrack -> m (Maybe SourceBuffer)
+getSourceBuffer self = liftDOM (((self ^. js "sourceBuffer") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrack/sourceBuffer MDN AudioTrack.sourceBuffer documentation>
+getSourceBufferUnsafe :: (MonadDOM m, HasCallStack) => AudioTrack -> m SourceBuffer
+getSourceBufferUnsafe self = liftDOM ((((self ^. js "sourceBuffer") >>= 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 (((self ^. js "sourceBuffer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AudioTrackList.hs b/src/JSDOM/Generated/AudioTrackList.hs
--- a/src/JSDOM/Generated/AudioTrackList.hs
+++ b/src/JSDOM/Generated/AudioTrackList.hs
@@ -1,62 +1,48 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.AudioTrackList
-       (item, item_, getTrackById, getTrackById_, getLength, change,
-        addTrack, removeTrack, AudioTrackList(..), gTypeAudioTrackList)
+       (getTrackById, getTrackById_, getTrackByIdUnsafe, getTrackByIdUnchecked, getLength, change, addTrack, removeTrack, AudioTrackList(..), gTypeAudioTrackList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.item Mozilla AudioTrackList.item documentation> 
-item :: (MonadDOM m) => AudioTrackList -> Word -> m AudioTrack
-item self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "getTrackById" [toJSVal id]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.item Mozilla AudioTrackList.item documentation> 
-item_ :: (MonadDOM m) => AudioTrackList -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+-- | <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 (self ^. jsf "getTrackById" [toJSVal id]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.getTrackById Mozilla AudioTrackList.getTrackById documentation> 
-getTrackById ::
-             (MonadDOM m, ToJSString id) => AudioTrackList -> id -> m AudioTrack
-getTrackById self id
-  = liftDOM
-      ((self ^. jsf "getTrackById" [toJSVal id]) >>= fromJSValUnchecked)
+-- | <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 ((((self ^. jsf "getTrackById" [toJSVal 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_ ::
-              (MonadDOM m, ToJSString id) => AudioTrackList -> id -> m ()
-getTrackById_ self id
-  = liftDOM (void (self ^. jsf "getTrackById" [toJSVal id]))
+-- | <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 (((self ^. jsf "getTrackById" [toJSVal id]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.length Mozilla AudioTrackList.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/AudioTrackList/length MDN AudioTrackList.length documentation>
 getLength :: (MonadDOM m) => AudioTrackList -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
 
--- | <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/JSDOM/Generated/AudioWorklet.hs b/src/JSDOM/Generated/AudioWorklet.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioWorklet.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.AudioWorklet
+       (AudioWorklet(..), gTypeAudioWorklet)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/AudioWorkletGlobalScope.hs b/src/JSDOM/Generated/AudioWorkletGlobalScope.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioWorkletGlobalScope.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.AudioWorkletGlobalScope
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "registerProcessor" [toJSVal name, toJSVal processorCtor]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioWorkletGlobalScope/currentFrame MDN AudioWorkletGlobalScope.currentFrame documentation>
+getCurrentFrame :: (MonadDOM m) => AudioWorkletGlobalScope -> m Word53
+getCurrentFrame self = liftDOM (((self ^. js "currentFrame") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioWorkletGlobalScope/currentTime MDN AudioWorkletGlobalScope.currentTime documentation>
+getCurrentTime :: (MonadDOM m) => AudioWorkletGlobalScope -> m Double
+getCurrentTime self = liftDOM (((self ^. js "currentTime") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioWorkletGlobalScope/sampleRate MDN AudioWorkletGlobalScope.sampleRate documentation>
+getSampleRate :: (MonadDOM m) => AudioWorkletGlobalScope -> m Float
+getSampleRate self = liftDOM ((P.realToFrac <$> ((self ^. js "sampleRate") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/AudioWorkletNode.hs b/src/JSDOM/Generated/AudioWorkletNode.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioWorkletNode.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.AudioWorkletNode
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "AudioWorkletNode") [toJSVal context, toJSVal name, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioWorkletNode/parameters MDN AudioWorkletNode.parameters documentation>
+getParameters :: (MonadDOM m) => AudioWorkletNode -> m AudioParamMap
+getParameters self = liftDOM (((self ^. js "parameters") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioWorkletNode/port MDN AudioWorkletNode.port documentation>
+getPort :: (MonadDOM m) => AudioWorkletNode -> m MessagePort
+getPort self = liftDOM (((self ^. js "port") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnode-onprocessorerror processorerror event>
+processorerror :: EventName AudioWorkletNode ErrorEvent
+processorerror = unsafeEventName (toJSString "processorerror")
diff --git a/src/JSDOM/Generated/AudioWorkletNodeOptions.hs b/src/JSDOM/Generated/AudioWorkletNodeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioWorkletNodeOptions.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.AudioWorkletNodeOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#AudioWorkletNodeOptions AudioWorkletNodeOptions specification>
+newAudioWorkletNodeOptions :: (MonadDOM m) => m AudioWorkletNodeOptions
+newAudioWorkletNodeOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-numberofinputs AudioWorkletNodeOptions.numberOfInputs specification>
+setNumberOfInputs :: (MonadDOM m) => AudioWorkletNodeOptions -> Word -> m ()
+setNumberOfInputs self val = liftDOM (void (self ^. jss "numberOfInputs" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-numberofinputs AudioWorkletNodeOptions.numberOfInputs specification>
+getNumberOfInputs :: (MonadDOM m) => AudioWorkletNodeOptions -> m (Maybe Word)
+getNumberOfInputs self = liftDOM (((self ^. js "numberOfInputs") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-numberofinputs AudioWorkletNodeOptions.numberOfInputs specification>
+getNumberOfInputsUnsafe :: (MonadDOM m, HasCallStack) => AudioWorkletNodeOptions -> m Word
+getNumberOfInputsUnsafe self = liftDOM ((((self ^. js "numberOfInputs") >>= 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 ((P.round <$> ((self ^. js "numberOfInputs") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-numberofoutputs AudioWorkletNodeOptions.numberOfOutputs specification>
+setNumberOfOutputs :: (MonadDOM m) => AudioWorkletNodeOptions -> Word -> m ()
+setNumberOfOutputs self val = liftDOM (void (self ^. jss "numberOfOutputs" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-numberofoutputs AudioWorkletNodeOptions.numberOfOutputs specification>
+getNumberOfOutputs :: (MonadDOM m) => AudioWorkletNodeOptions -> m (Maybe Word)
+getNumberOfOutputs self = liftDOM (((self ^. js "numberOfOutputs") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-numberofoutputs AudioWorkletNodeOptions.numberOfOutputs specification>
+getNumberOfOutputsUnsafe :: (MonadDOM m, HasCallStack) => AudioWorkletNodeOptions -> m Word
+getNumberOfOutputsUnsafe self = liftDOM ((((self ^. js "numberOfOutputs") >>= 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 ((P.round <$> ((self ^. js "numberOfOutputs") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-outputchannelcount AudioWorkletNodeOptions.outputChannelCount specification>
+setOutputChannelCount :: (MonadDOM m) => AudioWorkletNodeOptions -> [Word] -> m ()
+setOutputChannelCount self val = liftDOM (void (self ^. jss "outputChannelCount" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-outputchannelcount AudioWorkletNodeOptions.outputChannelCount specification>
+getOutputChannelCount :: (MonadDOM m) => AudioWorkletNodeOptions -> m (Maybe [Word])
+getOutputChannelCount self = liftDOM (((self ^. js "outputChannelCount") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-outputchannelcount AudioWorkletNodeOptions.outputChannelCount specification>
+getOutputChannelCountUnsafe :: (MonadDOM m, HasCallStack) => AudioWorkletNodeOptions -> m [Word]
+getOutputChannelCountUnsafe self = liftDOM ((((self ^. js "outputChannelCount") >>= 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 (((self ^. js "outputChannelCount") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "parameterData" (toJSVal val)))
+
+-- | <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 (((self ^. js "parameterData") >>= 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 ((((self ^. js "parameterData") >>= 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 (((self ^. js "parameterData") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-processoroptions AudioWorkletNodeOptions.processorOptions specification>
+setProcessorOptions :: (MonadDOM m) => AudioWorkletNodeOptions -> GObject -> m ()
+setProcessorOptions self val = liftDOM (void (self ^. jss "processorOptions" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-processoroptions AudioWorkletNodeOptions.processorOptions specification>
+getProcessorOptions :: (MonadDOM m) => AudioWorkletNodeOptions -> m (Maybe GObject)
+getProcessorOptions self = liftDOM (((self ^. js "processorOptions") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-audioworkletnodeoptions-processoroptions AudioWorkletNodeOptions.processorOptions specification>
+getProcessorOptionsUnsafe :: (MonadDOM m, HasCallStack) => AudioWorkletNodeOptions -> m GObject
+getProcessorOptionsUnsafe self = liftDOM ((((self ^. js "processorOptions") >>= 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 (((self ^. js "processorOptions") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AudioWorkletProcessor.hs b/src/JSDOM/Generated/AudioWorkletProcessor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioWorkletProcessor.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.AudioWorkletProcessor
+       (newAudioWorkletProcessor, getPort, AudioWorkletProcessor(..), gTypeAudioWorkletProcessor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioWorkletProcessor/AudioWorkletProcessor MDN AudioWorkletProcessor. documentation>
+newAudioWorkletProcessor :: (MonadDOM m) => m AudioWorkletProcessor
+newAudioWorkletProcessor = liftDOM (((new (jsg "AudioWorkletProcessor") ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AudioWorkletProcessor/port MDN AudioWorkletProcessor.port documentation>
+getPort :: (MonadDOM m) => AudioWorkletProcessor -> m MessagePort
+getPort self = liftDOM (((self ^. js "port") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AudioWorkletProcessorConstructor.hs b/src/JSDOM/Generated/AudioWorkletProcessorConstructor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AudioWorkletProcessorConstructor.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newAudioWorkletProcessorConstructor :: (MonadDOM m) => (GObject -> JSM ()) -> m AudioWorkletProcessorConstructor
+newAudioWorkletProcessorConstructor callback = liftDOM (AudioWorkletProcessorConstructor . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (options : _) -> do
+          options' <- fromJSValUnchecked options
+          callback options'))
+
+newAudioWorkletProcessorConstructorSync :: (MonadDOM m) => (GObject -> JSM ()) -> m AudioWorkletProcessorConstructor
+newAudioWorkletProcessorConstructorSync callback = liftDOM (AudioWorkletProcessorConstructor . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (options : _) -> do
+          options' <- fromJSValUnchecked options
+          callback options'))
+
+newAudioWorkletProcessorConstructorAsync :: (MonadDOM m) => (GObject -> JSM ()) -> m AudioWorkletProcessorConstructor
+newAudioWorkletProcessorConstructorAsync callback = liftDOM (AudioWorkletProcessorConstructor . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (options : _) -> do
+          options' <- fromJSValUnchecked options
+          callback options'))
diff --git a/src/JSDOM/Generated/AuthenticationExtensionsClientInputs.hs b/src/JSDOM/Generated/AuthenticationExtensionsClientInputs.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AuthenticationExtensionsClientInputs.hs
@@ -0,0 +1,260 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.AuthenticationExtensionsClientInputs
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionsclientinputs AuthenticationExtensionsClientInputs specification>
+newAuthenticationExtensionsClientInputs :: (MonadDOM m) => m AuthenticationExtensionsClientInputs
+newAuthenticationExtensionsClientInputs = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "credentialProtectionPolicy" (toJSVal val)))
+
+-- | <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 (((self ^. js "credentialProtectionPolicy") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "credentialProtectionPolicy") >>= fromMaybeJSString) >>= 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 (((self ^. js "credentialProtectionPolicy") >>= 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>
+setEnforceCredentialProtectionPolicy :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> Bool -> m ()
+setEnforceCredentialProtectionPolicy self val = liftDOM (void (self ^. jss "enforceCredentialProtectionPolicy" (toJSVal val)))
+
+-- | <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 (((self ^. js "enforceCredentialProtectionPolicy") >>= 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 ((((self ^. js "enforceCredentialProtectionPolicy") >>= 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 (((self ^. js "enforceCredentialProtectionPolicy") >>= valToBool))
+
+-- | <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 (self ^. jss "credBlob" (toJSVal val)))
+
+-- | <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 (((self ^. js "credBlob") >>= 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 ((((self ^. js "credBlob") >>= 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 (((self ^. js "credBlob") >>= 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>
+setGetCredBlob :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> Bool -> m ()
+setGetCredBlob self val = liftDOM (void (self ^. jss "getCredBlob" (toJSVal val)))
+
+-- | <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 (((self ^. js "getCredBlob") >>= 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 ((((self ^. js "getCredBlob") >>= 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 (((self ^. js "getCredBlob") >>= valToBool))
+
+-- | <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 (self ^. jss "minPinLength" (toJSVal val)))
+
+-- | <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 (((self ^. js "minPinLength") >>= 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 ((((self ^. js "minPinLength") >>= 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 (((self ^. js "minPinLength") >>= valToBool))
+
+-- | <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 (self ^. jss "pinComplexityPolicy" (toJSVal val)))
+
+-- | <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 (((self ^. js "pinComplexityPolicy") >>= 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 ((((self ^. js "pinComplexityPolicy") >>= 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 (((self ^. js "pinComplexityPolicy") >>= valToBool))
+
+-- | <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 (self ^. jss "hmacCreateSecret" (toJSVal val)))
+
+-- | <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 (((self ^. js "hmacCreateSecret") >>= 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 ((((self ^. js "hmacCreateSecret") >>= 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 (((self ^. js "hmacCreateSecret") >>= valToBool))
+
+-- | <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 (self ^. jss "hmacGetSecret" (toJSVal val)))
+
+-- | <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 (((self ^. js "hmacGetSecret") >>= 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 ((((self ^. js "hmacGetSecret") >>= 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 (((self ^. js "hmacGetSecret") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionsclientinputs-payment AuthenticationExtensionsClientInputs.payment specification>
+setPayment :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> AuthenticationExtensionsPaymentInputs -> m ()
+setPayment self val = liftDOM (void (self ^. jss "payment" (toJSVal val)))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionsclientinputs-payment AuthenticationExtensionsClientInputs.payment specification>
+getPayment :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m (Maybe AuthenticationExtensionsPaymentInputs)
+getPayment self = liftDOM (((self ^. js "payment") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionsclientinputs-payment AuthenticationExtensionsClientInputs.payment specification>
+getPaymentUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputs -> m AuthenticationExtensionsPaymentInputs
+getPaymentUnsafe self = liftDOM ((((self ^. js "payment") >>= 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 (((self ^. js "payment") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-appid AuthenticationExtensionsClientInputs.appid specification>
+setAppid :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsClientInputs -> val -> m ()
+setAppid self val = liftDOM (void (self ^. jss "appid" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-appid AuthenticationExtensionsClientInputs.appid specification>
+getAppid :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputs -> m (Maybe result)
+getAppid self = liftDOM (((self ^. js "appid") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-appid AuthenticationExtensionsClientInputs.appid specification>
+getAppidUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsClientInputs -> m result
+getAppidUnsafe self = liftDOM ((((self ^. js "appid") >>= fromMaybeJSString) >>= 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 (((self ^. js "appid") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-appidexclude AuthenticationExtensionsClientInputs.appidExclude specification>
+setAppidExclude :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsClientInputs -> val -> m ()
+setAppidExclude self val = liftDOM (void (self ^. jss "appidExclude" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-appidexclude AuthenticationExtensionsClientInputs.appidExclude specification>
+getAppidExclude :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputs -> m (Maybe result)
+getAppidExclude self = liftDOM (((self ^. js "appidExclude") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-appidexclude AuthenticationExtensionsClientInputs.appidExclude specification>
+getAppidExcludeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsClientInputs -> m result
+getAppidExcludeUnsafe self = liftDOM ((((self ^. js "appidExclude") >>= fromMaybeJSString) >>= 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 (((self ^. js "appidExclude") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-credprops AuthenticationExtensionsClientInputs.credProps specification>
+setCredProps :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> Bool -> m ()
+setCredProps self val = liftDOM (void (self ^. jss "credProps" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-credprops AuthenticationExtensionsClientInputs.credProps specification>
+getCredProps :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m (Maybe Bool)
+getCredProps self = liftDOM (((self ^. js "credProps") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-credprops AuthenticationExtensionsClientInputs.credProps specification>
+getCredPropsUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputs -> m Bool
+getCredPropsUnsafe self = liftDOM ((((self ^. js "credProps") >>= 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 (((self ^. js "credProps") >>= valToBool))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-prf AuthenticationExtensionsClientInputs.prf specification>
+setPrf :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> AuthenticationExtensionsPRFInputs -> m ()
+setPrf self val = liftDOM (void (self ^. jss "prf" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-prf AuthenticationExtensionsClientInputs.prf specification>
+getPrf :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m (Maybe AuthenticationExtensionsPRFInputs)
+getPrf self = liftDOM (((self ^. js "prf") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-prf AuthenticationExtensionsClientInputs.prf specification>
+getPrfUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputs -> m AuthenticationExtensionsPRFInputs
+getPrfUnsafe self = liftDOM ((((self ^. js "prf") >>= 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 (((self ^. js "prf") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-largeblob AuthenticationExtensionsClientInputs.largeBlob specification>
+setLargeBlob :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> AuthenticationExtensionsLargeBlobInputs -> m ()
+setLargeBlob self val = liftDOM (void (self ^. jss "largeBlob" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-largeblob AuthenticationExtensionsClientInputs.largeBlob specification>
+getLargeBlob :: (MonadDOM m) => AuthenticationExtensionsClientInputs -> m (Maybe AuthenticationExtensionsLargeBlobInputs)
+getLargeBlob self = liftDOM (((self ^. js "largeBlob") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-largeblob AuthenticationExtensionsClientInputs.largeBlob specification>
+getLargeBlobUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputs -> m AuthenticationExtensionsLargeBlobInputs
+getLargeBlobUnsafe self = liftDOM ((((self ^. js "largeBlob") >>= 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 (((self ^. js "largeBlob") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-remoteclientdatajson AuthenticationExtensionsClientInputs.remoteClientDataJSON specification>
+setRemoteClientDataJSON :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsClientInputs -> val -> m ()
+setRemoteClientDataJSON self val = liftDOM (void (self ^. jss "remoteClientDataJSON" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-remoteclientdatajson AuthenticationExtensionsClientInputs.remoteClientDataJSON specification>
+getRemoteClientDataJSON :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputs -> m (Maybe result)
+getRemoteClientDataJSON self = liftDOM (((self ^. js "remoteClientDataJSON") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputs-remoteclientdatajson AuthenticationExtensionsClientInputs.remoteClientDataJSON specification>
+getRemoteClientDataJSONUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsClientInputs -> m result
+getRemoteClientDataJSONUnsafe self = liftDOM ((((self ^. js "remoteClientDataJSON") >>= fromMaybeJSString) >>= 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 (((self ^. js "remoteClientDataJSON") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AuthenticationExtensionsClientInputsJSON.hs b/src/JSDOM/Generated/AuthenticationExtensionsClientInputsJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AuthenticationExtensionsClientInputsJSON.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.AuthenticationExtensionsClientInputsJSON
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionsclientinputsjson AuthenticationExtensionsClientInputsJSON specification>
+newAuthenticationExtensionsClientInputsJSON :: (MonadDOM m) => m AuthenticationExtensionsClientInputsJSON
+newAuthenticationExtensionsClientInputsJSON = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-appid AuthenticationExtensionsClientInputsJSON.appid specification>
+setAppid :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsClientInputsJSON -> val -> m ()
+setAppid self val = liftDOM (void (self ^. jss "appid" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-appid AuthenticationExtensionsClientInputsJSON.appid specification>
+getAppid :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputsJSON -> m (Maybe result)
+getAppid self = liftDOM (((self ^. js "appid") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-appid AuthenticationExtensionsClientInputsJSON.appid specification>
+getAppidUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsClientInputsJSON -> m result
+getAppidUnsafe self = liftDOM ((((self ^. js "appid") >>= fromMaybeJSString) >>= 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 (((self ^. js "appid") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-appidexclude AuthenticationExtensionsClientInputsJSON.appidExclude specification>
+setAppidExclude :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsClientInputsJSON -> val -> m ()
+setAppidExclude self val = liftDOM (void (self ^. jss "appidExclude" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-appidexclude AuthenticationExtensionsClientInputsJSON.appidExclude specification>
+getAppidExclude :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputsJSON -> m (Maybe result)
+getAppidExclude self = liftDOM (((self ^. js "appidExclude") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-appidexclude AuthenticationExtensionsClientInputsJSON.appidExclude specification>
+getAppidExcludeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsClientInputsJSON -> m result
+getAppidExcludeUnsafe self = liftDOM ((((self ^. js "appidExclude") >>= fromMaybeJSString) >>= 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 (((self ^. js "appidExclude") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-credprops AuthenticationExtensionsClientInputsJSON.credProps specification>
+setCredProps :: (MonadDOM m) => AuthenticationExtensionsClientInputsJSON -> Bool -> m ()
+setCredProps self val = liftDOM (void (self ^. jss "credProps" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-credprops AuthenticationExtensionsClientInputsJSON.credProps specification>
+getCredProps :: (MonadDOM m) => AuthenticationExtensionsClientInputsJSON -> m (Maybe Bool)
+getCredProps self = liftDOM (((self ^. js "credProps") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-credprops AuthenticationExtensionsClientInputsJSON.credProps specification>
+getCredPropsUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputsJSON -> m Bool
+getCredPropsUnsafe self = liftDOM ((((self ^. js "credProps") >>= 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 (((self ^. js "credProps") >>= valToBool))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-prf AuthenticationExtensionsClientInputsJSON.prf specification>
+setPrf :: (MonadDOM m) => AuthenticationExtensionsClientInputsJSON -> AuthenticationExtensionsPRFInputsJSON -> m ()
+setPrf self val = liftDOM (void (self ^. jss "prf" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-prf AuthenticationExtensionsClientInputsJSON.prf specification>
+getPrf :: (MonadDOM m) => AuthenticationExtensionsClientInputsJSON -> m (Maybe AuthenticationExtensionsPRFInputsJSON)
+getPrf self = liftDOM (((self ^. js "prf") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-prf AuthenticationExtensionsClientInputsJSON.prf specification>
+getPrfUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputsJSON -> m AuthenticationExtensionsPRFInputsJSON
+getPrfUnsafe self = liftDOM ((((self ^. js "prf") >>= 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 (((self ^. js "prf") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-largeblob AuthenticationExtensionsClientInputsJSON.largeBlob specification>
+setLargeBlob :: (MonadDOM m) => AuthenticationExtensionsClientInputsJSON -> AuthenticationExtensionsLargeBlobInputsJSON -> m ()
+setLargeBlob self val = liftDOM (void (self ^. jss "largeBlob" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-largeblob AuthenticationExtensionsClientInputsJSON.largeBlob specification>
+getLargeBlob :: (MonadDOM m) => AuthenticationExtensionsClientInputsJSON -> m (Maybe AuthenticationExtensionsLargeBlobInputsJSON)
+getLargeBlob self = liftDOM (((self ^. js "largeBlob") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-largeblob AuthenticationExtensionsClientInputsJSON.largeBlob specification>
+getLargeBlobUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientInputsJSON -> m AuthenticationExtensionsLargeBlobInputsJSON
+getLargeBlobUnsafe self = liftDOM ((((self ^. js "largeBlob") >>= 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 (((self ^. js "largeBlob") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-remoteclientdatajson AuthenticationExtensionsClientInputsJSON.remoteClientDataJSON specification>
+setRemoteClientDataJSON :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsClientInputsJSON -> val -> m ()
+setRemoteClientDataJSON self val = liftDOM (void (self ^. jss "remoteClientDataJSON" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-remoteclientdatajson AuthenticationExtensionsClientInputsJSON.remoteClientDataJSON specification>
+getRemoteClientDataJSON :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsClientInputsJSON -> m (Maybe result)
+getRemoteClientDataJSON self = liftDOM (((self ^. js "remoteClientDataJSON") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientinputsjson-remoteclientdatajson AuthenticationExtensionsClientInputsJSON.remoteClientDataJSON specification>
+getRemoteClientDataJSONUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsClientInputsJSON -> m result
+getRemoteClientDataJSONUnsafe self = liftDOM ((((self ^. js "remoteClientDataJSON") >>= fromMaybeJSString) >>= 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 (((self ^. js "remoteClientDataJSON") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AuthenticationExtensionsClientOutputs.hs b/src/JSDOM/Generated/AuthenticationExtensionsClientOutputs.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AuthenticationExtensionsClientOutputs.hs
@@ -0,0 +1,196 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.AuthenticationExtensionsClientOutputs
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionsclientoutputs AuthenticationExtensionsClientOutputs specification>
+newAuthenticationExtensionsClientOutputs :: (MonadDOM m) => m AuthenticationExtensionsClientOutputs
+newAuthenticationExtensionsClientOutputs = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= 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>
+setCredBlob :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> Bool -> m ()
+setCredBlob self val = liftDOM (void (self ^. jss "credBlob" (toJSVal val)))
+
+-- | <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 (((self ^. js "credBlob") >>= 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 ((((self ^. js "credBlob") >>= 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 (((self ^. js "credBlob") >>= valToBool))
+
+-- | <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 (self ^. jss "getCredBlob" (toJSVal val)))
+
+-- | <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 (((self ^. js "getCredBlob") >>= 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 ((((self ^. js "getCredBlob") >>= 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 (((self ^. js "getCredBlob") >>= 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>
+setHmacCreateSecret :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> Bool -> m ()
+setHmacCreateSecret self val = liftDOM (void (self ^. jss "hmacCreateSecret" (toJSVal val)))
+
+-- | <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 (((self ^. js "hmacCreateSecret") >>= 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 ((((self ^. js "hmacCreateSecret") >>= 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 (((self ^. js "hmacCreateSecret") >>= valToBool))
+
+-- | <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 (self ^. jss "hmacGetSecret" (toJSVal val)))
+
+-- | <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 (((self ^. js "hmacGetSecret") >>= 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 ((((self ^. js "hmacGetSecret") >>= 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 (((self ^. js "hmacGetSecret") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionsclientoutputs-payment AuthenticationExtensionsClientOutputs.payment specification>
+setPayment :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> AuthenticationExtensionsPaymentOutputs -> m ()
+setPayment self val = liftDOM (void (self ^. jss "payment" (toJSVal val)))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionsclientoutputs-payment AuthenticationExtensionsClientOutputs.payment specification>
+getPayment :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe AuthenticationExtensionsPaymentOutputs)
+getPayment self = liftDOM (((self ^. js "payment") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionsclientoutputs-payment AuthenticationExtensionsClientOutputs.payment specification>
+getPaymentUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m AuthenticationExtensionsPaymentOutputs
+getPaymentUnsafe self = liftDOM ((((self ^. js "payment") >>= 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 (((self ^. js "payment") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-appid AuthenticationExtensionsClientOutputs.appid specification>
+setAppid :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> Bool -> m ()
+setAppid self val = liftDOM (void (self ^. jss "appid" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-appid AuthenticationExtensionsClientOutputs.appid specification>
+getAppid :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe Bool)
+getAppid self = liftDOM (((self ^. js "appid") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-appid AuthenticationExtensionsClientOutputs.appid specification>
+getAppidUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m Bool
+getAppidUnsafe self = liftDOM ((((self ^. js "appid") >>= 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 (((self ^. js "appid") >>= valToBool))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-appidexclude AuthenticationExtensionsClientOutputs.appidExclude specification>
+setAppidExclude :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> Bool -> m ()
+setAppidExclude self val = liftDOM (void (self ^. jss "appidExclude" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-appidexclude AuthenticationExtensionsClientOutputs.appidExclude specification>
+getAppidExclude :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe Bool)
+getAppidExclude self = liftDOM (((self ^. js "appidExclude") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-appidexclude AuthenticationExtensionsClientOutputs.appidExclude specification>
+getAppidExcludeUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m Bool
+getAppidExcludeUnsafe self = liftDOM ((((self ^. js "appidExclude") >>= 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 (((self ^. js "appidExclude") >>= valToBool))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-credprops AuthenticationExtensionsClientOutputs.credProps specification>
+setCredProps :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> CredentialPropertiesOutput -> m ()
+setCredProps self val = liftDOM (void (self ^. jss "credProps" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-credprops AuthenticationExtensionsClientOutputs.credProps specification>
+getCredProps :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe CredentialPropertiesOutput)
+getCredProps self = liftDOM (((self ^. js "credProps") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-credprops AuthenticationExtensionsClientOutputs.credProps specification>
+getCredPropsUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m CredentialPropertiesOutput
+getCredPropsUnsafe self = liftDOM ((((self ^. js "credProps") >>= 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 (((self ^. js "credProps") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-prf AuthenticationExtensionsClientOutputs.prf specification>
+setPrf :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> AuthenticationExtensionsPRFOutputs -> m ()
+setPrf self val = liftDOM (void (self ^. jss "prf" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-prf AuthenticationExtensionsClientOutputs.prf specification>
+getPrf :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe AuthenticationExtensionsPRFOutputs)
+getPrf self = liftDOM (((self ^. js "prf") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-prf AuthenticationExtensionsClientOutputs.prf specification>
+getPrfUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m AuthenticationExtensionsPRFOutputs
+getPrfUnsafe self = liftDOM ((((self ^. js "prf") >>= 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 (((self ^. js "prf") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-largeblob AuthenticationExtensionsClientOutputs.largeBlob specification>
+setLargeBlob :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> AuthenticationExtensionsLargeBlobOutputs -> m ()
+setLargeBlob self val = liftDOM (void (self ^. jss "largeBlob" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-largeblob AuthenticationExtensionsClientOutputs.largeBlob specification>
+getLargeBlob :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe AuthenticationExtensionsLargeBlobOutputs)
+getLargeBlob self = liftDOM (((self ^. js "largeBlob") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-largeblob AuthenticationExtensionsClientOutputs.largeBlob specification>
+getLargeBlobUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m AuthenticationExtensionsLargeBlobOutputs
+getLargeBlobUnsafe self = liftDOM ((((self ^. js "largeBlob") >>= 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 (((self ^. js "largeBlob") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-remoteclientdatajson AuthenticationExtensionsClientOutputs.remoteClientDataJSON specification>
+setRemoteClientDataJSON :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> Bool -> m ()
+setRemoteClientDataJSON self val = liftDOM (void (self ^. jss "remoteClientDataJSON" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-remoteclientdatajson AuthenticationExtensionsClientOutputs.remoteClientDataJSON specification>
+getRemoteClientDataJSON :: (MonadDOM m) => AuthenticationExtensionsClientOutputs -> m (Maybe Bool)
+getRemoteClientDataJSON self = liftDOM (((self ^. js "remoteClientDataJSON") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsclientoutputs-remoteclientdatajson AuthenticationExtensionsClientOutputs.remoteClientDataJSON specification>
+getRemoteClientDataJSONUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsClientOutputs -> m Bool
+getRemoteClientDataJSONUnsafe self = liftDOM ((((self ^. js "remoteClientDataJSON") >>= 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 (((self ^. js "remoteClientDataJSON") >>= valToBool))
diff --git a/src/JSDOM/Generated/AuthenticationExtensionsLargeBlobInputs.hs b/src/JSDOM/Generated/AuthenticationExtensionsLargeBlobInputs.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AuthenticationExtensionsLargeBlobInputs.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.AuthenticationExtensionsLargeBlobInputs
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionslargeblobinputs AuthenticationExtensionsLargeBlobInputs specification>
+newAuthenticationExtensionsLargeBlobInputs :: (MonadDOM m) => m AuthenticationExtensionsLargeBlobInputs
+newAuthenticationExtensionsLargeBlobInputs = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-support AuthenticationExtensionsLargeBlobInputs.support specification>
+setSupport :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsLargeBlobInputs -> val -> m ()
+setSupport self val = liftDOM (void (self ^. jss "support" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-support AuthenticationExtensionsLargeBlobInputs.support specification>
+getSupport :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsLargeBlobInputs -> m (Maybe result)
+getSupport self = liftDOM (((self ^. js "support") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-support AuthenticationExtensionsLargeBlobInputs.support specification>
+getSupportUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsLargeBlobInputs -> m result
+getSupportUnsafe self = liftDOM ((((self ^. js "support") >>= fromMaybeJSString) >>= 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 (((self ^. js "support") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-read AuthenticationExtensionsLargeBlobInputs.read specification>
+setRead :: (MonadDOM m) => AuthenticationExtensionsLargeBlobInputs -> Bool -> m ()
+setRead self val = liftDOM (void (self ^. jss "read" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-read AuthenticationExtensionsLargeBlobInputs.read specification>
+getRead :: (MonadDOM m) => AuthenticationExtensionsLargeBlobInputs -> m (Maybe Bool)
+getRead self = liftDOM (((self ^. js "read") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-read AuthenticationExtensionsLargeBlobInputs.read specification>
+getReadUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsLargeBlobInputs -> m Bool
+getReadUnsafe self = liftDOM ((((self ^. js "read") >>= 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 (((self ^. js "read") >>= valToBool))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-write AuthenticationExtensionsLargeBlobInputs.write specification>
+setWrite :: (MonadDOM m, IsBufferSource val) => AuthenticationExtensionsLargeBlobInputs -> val -> m ()
+setWrite self val = liftDOM (void (self ^. jss "write" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-write AuthenticationExtensionsLargeBlobInputs.write specification>
+getWrite :: (MonadDOM m) => AuthenticationExtensionsLargeBlobInputs -> m (Maybe BufferSource)
+getWrite self = liftDOM (((self ^. js "write") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputs-write AuthenticationExtensionsLargeBlobInputs.write specification>
+getWriteUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsLargeBlobInputs -> m BufferSource
+getWriteUnsafe self = liftDOM ((((self ^. js "write") >>= 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 (((self ^. js "write") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AuthenticationExtensionsLargeBlobInputsJSON.hs b/src/JSDOM/Generated/AuthenticationExtensionsLargeBlobInputsJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AuthenticationExtensionsLargeBlobInputsJSON.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.AuthenticationExtensionsLargeBlobInputsJSON
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionslargeblobinputsjson AuthenticationExtensionsLargeBlobInputsJSON specification>
+newAuthenticationExtensionsLargeBlobInputsJSON :: (MonadDOM m) => m AuthenticationExtensionsLargeBlobInputsJSON
+newAuthenticationExtensionsLargeBlobInputsJSON = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-support AuthenticationExtensionsLargeBlobInputsJSON.support specification>
+setSupport :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsLargeBlobInputsJSON -> val -> m ()
+setSupport self val = liftDOM (void (self ^. jss "support" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-support AuthenticationExtensionsLargeBlobInputsJSON.support specification>
+getSupport :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsLargeBlobInputsJSON -> m (Maybe result)
+getSupport self = liftDOM (((self ^. js "support") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-support AuthenticationExtensionsLargeBlobInputsJSON.support specification>
+getSupportUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsLargeBlobInputsJSON -> m result
+getSupportUnsafe self = liftDOM ((((self ^. js "support") >>= fromMaybeJSString) >>= 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 (((self ^. js "support") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-read AuthenticationExtensionsLargeBlobInputsJSON.read specification>
+setRead :: (MonadDOM m) => AuthenticationExtensionsLargeBlobInputsJSON -> Bool -> m ()
+setRead self val = liftDOM (void (self ^. jss "read" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-read AuthenticationExtensionsLargeBlobInputsJSON.read specification>
+getRead :: (MonadDOM m) => AuthenticationExtensionsLargeBlobInputsJSON -> m (Maybe Bool)
+getRead self = liftDOM (((self ^. js "read") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-read AuthenticationExtensionsLargeBlobInputsJSON.read specification>
+getReadUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsLargeBlobInputsJSON -> m Bool
+getReadUnsafe self = liftDOM ((((self ^. js "read") >>= 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 (((self ^. js "read") >>= valToBool))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-write AuthenticationExtensionsLargeBlobInputsJSON.write specification>
+setWrite :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsLargeBlobInputsJSON -> val -> m ()
+setWrite self val = liftDOM (void (self ^. jss "write" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-write AuthenticationExtensionsLargeBlobInputsJSON.write specification>
+getWrite :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsLargeBlobInputsJSON -> m (Maybe result)
+getWrite self = liftDOM (((self ^. js "write") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargeblobinputsjson-write AuthenticationExtensionsLargeBlobInputsJSON.write specification>
+getWriteUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsLargeBlobInputsJSON -> m result
+getWriteUnsafe self = liftDOM ((((self ^. js "write") >>= fromMaybeJSString) >>= 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 (((self ^. js "write") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AuthenticationExtensionsLargeBlobOutputs.hs b/src/JSDOM/Generated/AuthenticationExtensionsLargeBlobOutputs.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AuthenticationExtensionsLargeBlobOutputs.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.AuthenticationExtensionsLargeBlobOutputs
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionslargebloboutputs AuthenticationExtensionsLargeBlobOutputs specification>
+newAuthenticationExtensionsLargeBlobOutputs :: (MonadDOM m) => m AuthenticationExtensionsLargeBlobOutputs
+newAuthenticationExtensionsLargeBlobOutputs = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-supported AuthenticationExtensionsLargeBlobOutputs.supported specification>
+setSupported :: (MonadDOM m) => AuthenticationExtensionsLargeBlobOutputs -> Bool -> m ()
+setSupported self val = liftDOM (void (self ^. jss "supported" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-supported AuthenticationExtensionsLargeBlobOutputs.supported specification>
+getSupported :: (MonadDOM m) => AuthenticationExtensionsLargeBlobOutputs -> m (Maybe Bool)
+getSupported self = liftDOM (((self ^. js "supported") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-supported AuthenticationExtensionsLargeBlobOutputs.supported specification>
+getSupportedUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsLargeBlobOutputs -> m Bool
+getSupportedUnsafe self = liftDOM ((((self ^. js "supported") >>= 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 (((self ^. js "supported") >>= valToBool))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-blob AuthenticationExtensionsLargeBlobOutputs.blob specification>
+setBlob :: (MonadDOM m, IsArrayBuffer val) => AuthenticationExtensionsLargeBlobOutputs -> val -> m ()
+setBlob self val = liftDOM (void (self ^. jss "blob" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-blob AuthenticationExtensionsLargeBlobOutputs.blob specification>
+getBlob :: (MonadDOM m) => AuthenticationExtensionsLargeBlobOutputs -> m (Maybe ArrayBuffer)
+getBlob self = liftDOM (((self ^. js "blob") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-blob AuthenticationExtensionsLargeBlobOutputs.blob specification>
+getBlobUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsLargeBlobOutputs -> m ArrayBuffer
+getBlobUnsafe self = liftDOM ((((self ^. js "blob") >>= 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 (((self ^. js "blob") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-written AuthenticationExtensionsLargeBlobOutputs.written specification>
+setWritten :: (MonadDOM m) => AuthenticationExtensionsLargeBlobOutputs -> Bool -> m ()
+setWritten self val = liftDOM (void (self ^. jss "written" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-written AuthenticationExtensionsLargeBlobOutputs.written specification>
+getWritten :: (MonadDOM m) => AuthenticationExtensionsLargeBlobOutputs -> m (Maybe Bool)
+getWritten self = liftDOM (((self ^. js "written") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionslargebloboutputs-written AuthenticationExtensionsLargeBlobOutputs.written specification>
+getWrittenUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsLargeBlobOutputs -> m Bool
+getWrittenUnsafe self = liftDOM ((((self ^. js "written") >>= 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 (((self ^. js "written") >>= valToBool))
diff --git a/src/JSDOM/Generated/AuthenticationExtensionsPRFInputs.hs b/src/JSDOM/Generated/AuthenticationExtensionsPRFInputs.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AuthenticationExtensionsPRFInputs.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.AuthenticationExtensionsPRFInputs
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionsprfinputs AuthenticationExtensionsPRFInputs specification>
+newAuthenticationExtensionsPRFInputs :: (MonadDOM m) => m AuthenticationExtensionsPRFInputs
+newAuthenticationExtensionsPRFInputs = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputs-eval AuthenticationExtensionsPRFInputs.eval specification>
+setEval :: (MonadDOM m) => AuthenticationExtensionsPRFInputs -> AuthenticationExtensionsPRFValues -> m ()
+setEval self val = liftDOM (void (self ^. jss "eval" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputs-eval AuthenticationExtensionsPRFInputs.eval specification>
+getEval :: (MonadDOM m) => AuthenticationExtensionsPRFInputs -> m (Maybe AuthenticationExtensionsPRFValues)
+getEval self = liftDOM (((self ^. js "eval") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputs-eval AuthenticationExtensionsPRFInputs.eval specification>
+getEvalUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPRFInputs -> m AuthenticationExtensionsPRFValues
+getEvalUnsafe self = liftDOM ((((self ^. js "eval") >>= 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 (((self ^. js "eval") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputs-evalbycredential AuthenticationExtensionsPRFInputs.evalByCredential specification>
+setEvalByCredential :: (MonadDOM m) => AuthenticationExtensionsPRFInputs -> (Record JSString JSVal) -> m ()
+setEvalByCredential self val = liftDOM (void (self ^. jss "evalByCredential" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputs-evalbycredential AuthenticationExtensionsPRFInputs.evalByCredential specification>
+getEvalByCredential :: (MonadDOM m) => AuthenticationExtensionsPRFInputs -> m (Maybe (Record JSString JSVal))
+getEvalByCredential self = liftDOM (((self ^. js "evalByCredential") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputs-evalbycredential AuthenticationExtensionsPRFInputs.evalByCredential specification>
+getEvalByCredentialUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPRFInputs -> m (Record JSString JSVal)
+getEvalByCredentialUnsafe self = liftDOM ((((self ^. js "evalByCredential") >>= 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 (((self ^. js "evalByCredential") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AuthenticationExtensionsPRFInputsJSON.hs b/src/JSDOM/Generated/AuthenticationExtensionsPRFInputsJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AuthenticationExtensionsPRFInputsJSON.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.AuthenticationExtensionsPRFInputsJSON
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionsprfinputsjson AuthenticationExtensionsPRFInputsJSON specification>
+newAuthenticationExtensionsPRFInputsJSON :: (MonadDOM m) => m AuthenticationExtensionsPRFInputsJSON
+newAuthenticationExtensionsPRFInputsJSON = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputsjson-eval AuthenticationExtensionsPRFInputsJSON.eval specification>
+setEval :: (MonadDOM m) => AuthenticationExtensionsPRFInputsJSON -> AuthenticationExtensionsPRFValuesJSON -> m ()
+setEval self val = liftDOM (void (self ^. jss "eval" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputsjson-eval AuthenticationExtensionsPRFInputsJSON.eval specification>
+getEval :: (MonadDOM m) => AuthenticationExtensionsPRFInputsJSON -> m (Maybe AuthenticationExtensionsPRFValuesJSON)
+getEval self = liftDOM (((self ^. js "eval") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputsjson-eval AuthenticationExtensionsPRFInputsJSON.eval specification>
+getEvalUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPRFInputsJSON -> m AuthenticationExtensionsPRFValuesJSON
+getEvalUnsafe self = liftDOM ((((self ^. js "eval") >>= 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 (((self ^. js "eval") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputsjson-evalbycredential AuthenticationExtensionsPRFInputsJSON.evalByCredential specification>
+setEvalByCredential :: (MonadDOM m) => AuthenticationExtensionsPRFInputsJSON -> (Record JSString JSVal) -> m ()
+setEvalByCredential self val = liftDOM (void (self ^. jss "evalByCredential" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputsjson-evalbycredential AuthenticationExtensionsPRFInputsJSON.evalByCredential specification>
+getEvalByCredential :: (MonadDOM m) => AuthenticationExtensionsPRFInputsJSON -> m (Maybe (Record JSString JSVal))
+getEvalByCredential self = liftDOM (((self ^. js "evalByCredential") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfinputsjson-evalbycredential AuthenticationExtensionsPRFInputsJSON.evalByCredential specification>
+getEvalByCredentialUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPRFInputsJSON -> m (Record JSString JSVal)
+getEvalByCredentialUnsafe self = liftDOM ((((self ^. js "evalByCredential") >>= 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 (((self ^. js "evalByCredential") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AuthenticationExtensionsPRFOutputs.hs b/src/JSDOM/Generated/AuthenticationExtensionsPRFOutputs.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AuthenticationExtensionsPRFOutputs.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.AuthenticationExtensionsPRFOutputs
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionsprfoutputs AuthenticationExtensionsPRFOutputs specification>
+newAuthenticationExtensionsPRFOutputs :: (MonadDOM m) => m AuthenticationExtensionsPRFOutputs
+newAuthenticationExtensionsPRFOutputs = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfoutputs-enabled AuthenticationExtensionsPRFOutputs.enabled specification>
+setEnabled :: (MonadDOM m) => AuthenticationExtensionsPRFOutputs -> Bool -> m ()
+setEnabled self val = liftDOM (void (self ^. jss "enabled" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfoutputs-enabled AuthenticationExtensionsPRFOutputs.enabled specification>
+getEnabled :: (MonadDOM m) => AuthenticationExtensionsPRFOutputs -> m (Maybe Bool)
+getEnabled self = liftDOM (((self ^. js "enabled") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfoutputs-enabled AuthenticationExtensionsPRFOutputs.enabled specification>
+getEnabledUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPRFOutputs -> m Bool
+getEnabledUnsafe self = liftDOM ((((self ^. js "enabled") >>= 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 (((self ^. js "enabled") >>= valToBool))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfoutputs-results AuthenticationExtensionsPRFOutputs.results specification>
+setResults :: (MonadDOM m) => AuthenticationExtensionsPRFOutputs -> AuthenticationExtensionsPRFValues -> m ()
+setResults self val = liftDOM (void (self ^. jss "results" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfoutputs-results AuthenticationExtensionsPRFOutputs.results specification>
+getResults :: (MonadDOM m) => AuthenticationExtensionsPRFOutputs -> m (Maybe AuthenticationExtensionsPRFValues)
+getResults self = liftDOM (((self ^. js "results") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfoutputs-results AuthenticationExtensionsPRFOutputs.results specification>
+getResultsUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPRFOutputs -> m AuthenticationExtensionsPRFValues
+getResultsUnsafe self = liftDOM ((((self ^. js "results") >>= 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 (((self ^. js "results") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AuthenticationExtensionsPRFValues.hs b/src/JSDOM/Generated/AuthenticationExtensionsPRFValues.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AuthenticationExtensionsPRFValues.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.AuthenticationExtensionsPRFValues
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionsprfvalues AuthenticationExtensionsPRFValues specification>
+newAuthenticationExtensionsPRFValues :: (MonadDOM m, IsBufferSource first) => first -> m AuthenticationExtensionsPRFValues
+newAuthenticationExtensionsPRFValues first = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "first" (toJSVal first)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvalues-first AuthenticationExtensionsPRFValues.first specification>
+setFirst :: (MonadDOM m, IsBufferSource val) => AuthenticationExtensionsPRFValues -> val -> m ()
+setFirst self val = liftDOM (void (self ^. jss "first" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvalues-first AuthenticationExtensionsPRFValues.first specification>
+getFirst :: (MonadDOM m) => AuthenticationExtensionsPRFValues -> m BufferSource
+getFirst self = liftDOM (((self ^. js "first") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvalues-second AuthenticationExtensionsPRFValues.second specification>
+setSecond :: (MonadDOM m, IsBufferSource val) => AuthenticationExtensionsPRFValues -> val -> m ()
+setSecond self val = liftDOM (void (self ^. jss "second" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvalues-second AuthenticationExtensionsPRFValues.second specification>
+getSecond :: (MonadDOM m) => AuthenticationExtensionsPRFValues -> m (Maybe BufferSource)
+getSecond self = liftDOM (((self ^. js "second") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvalues-second AuthenticationExtensionsPRFValues.second specification>
+getSecondUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPRFValues -> m BufferSource
+getSecondUnsafe self = liftDOM ((((self ^. js "second") >>= 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 (((self ^. js "second") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AuthenticationExtensionsPRFValuesJSON.hs b/src/JSDOM/Generated/AuthenticationExtensionsPRFValuesJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AuthenticationExtensionsPRFValuesJSON.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.AuthenticationExtensionsPRFValuesJSON
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticationextensionsprfvaluesjson AuthenticationExtensionsPRFValuesJSON specification>
+newAuthenticationExtensionsPRFValuesJSON :: (MonadDOM m, ToJSString first) => first -> m AuthenticationExtensionsPRFValuesJSON
+newAuthenticationExtensionsPRFValuesJSON first = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "first" (toJSVal first)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvaluesjson-first AuthenticationExtensionsPRFValuesJSON.first specification>
+setFirst :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsPRFValuesJSON -> val -> m ()
+setFirst self val = liftDOM (void (self ^. jss "first" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvaluesjson-first AuthenticationExtensionsPRFValuesJSON.first specification>
+getFirst :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsPRFValuesJSON -> m result
+getFirst self = liftDOM (((self ^. js "first") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvaluesjson-second AuthenticationExtensionsPRFValuesJSON.second specification>
+setSecond :: (MonadDOM m, ToJSString val) => AuthenticationExtensionsPRFValuesJSON -> val -> m ()
+setSecond self val = liftDOM (void (self ^. jss "second" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvaluesjson-second AuthenticationExtensionsPRFValuesJSON.second specification>
+getSecond :: (MonadDOM m, FromJSString result) => AuthenticationExtensionsPRFValuesJSON -> m (Maybe result)
+getSecond self = liftDOM (((self ^. js "second") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticationextensionsprfvaluesjson-second AuthenticationExtensionsPRFValuesJSON.second specification>
+getSecondUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticationExtensionsPRFValuesJSON -> m result
+getSecondUnsafe self = liftDOM ((((self ^. js "second") >>= fromMaybeJSString) >>= 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 (((self ^. js "second") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AuthenticationExtensionsPaymentInputs.hs b/src/JSDOM/Generated/AuthenticationExtensionsPaymentInputs.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AuthenticationExtensionsPaymentInputs.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from secure-payment-confirmation (webref). Do not edit.
+module JSDOM.Generated.AuthenticationExtensionsPaymentInputs
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dictdef-authenticationextensionspaymentinputs AuthenticationExtensionsPaymentInputs specification>
+newAuthenticationExtensionsPaymentInputs :: (MonadDOM m) => m AuthenticationExtensionsPaymentInputs
+newAuthenticationExtensionsPaymentInputs = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-ispayment AuthenticationExtensionsPaymentInputs.isPayment specification>
+setIsPayment :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> Bool -> m ()
+setIsPayment self val = liftDOM (void (self ^. jss "isPayment" (toJSVal val)))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-ispayment AuthenticationExtensionsPaymentInputs.isPayment specification>
+getIsPayment :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> m (Maybe Bool)
+getIsPayment self = liftDOM (((self ^. js "isPayment") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-ispayment AuthenticationExtensionsPaymentInputs.isPayment specification>
+getIsPaymentUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPaymentInputs -> m Bool
+getIsPaymentUnsafe self = liftDOM ((((self ^. js "isPayment") >>= 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 (((self ^. js "isPayment") >>= valToBool))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-browserboundpubkeycredparams AuthenticationExtensionsPaymentInputs.browserBoundPubKeyCredParams specification>
+setBrowserBoundPubKeyCredParams :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> [PublicKeyCredentialParameters] -> m ()
+setBrowserBoundPubKeyCredParams self val = liftDOM (void (self ^. jss "browserBoundPubKeyCredParams" (toJSVal val)))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-browserboundpubkeycredparams AuthenticationExtensionsPaymentInputs.browserBoundPubKeyCredParams specification>
+getBrowserBoundPubKeyCredParams :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> m (Maybe [PublicKeyCredentialParameters])
+getBrowserBoundPubKeyCredParams self = liftDOM (((self ^. js "browserBoundPubKeyCredParams") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-browserboundpubkeycredparams AuthenticationExtensionsPaymentInputs.browserBoundPubKeyCredParams specification>
+getBrowserBoundPubKeyCredParamsUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPaymentInputs -> m [PublicKeyCredentialParameters]
+getBrowserBoundPubKeyCredParamsUnsafe self = liftDOM ((((self ^. js "browserBoundPubKeyCredParams") >>= 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 (((self ^. js "browserBoundPubKeyCredParams") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "rpId" (toJSVal val)))
+
+-- | <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 (((self ^. js "rpId") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "rpId") >>= fromMaybeJSString) >>= 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 (((self ^. js "rpId") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "topOrigin" (toJSVal val)))
+
+-- | <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 (((self ^. js "topOrigin") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "topOrigin") >>= fromMaybeJSString) >>= 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 (((self ^. js "topOrigin") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "payeeName" (toJSVal val)))
+
+-- | <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 (((self ^. js "payeeName") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "payeeName") >>= fromMaybeJSString) >>= 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 (((self ^. js "payeeName") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "payeeOrigin" (toJSVal val)))
+
+-- | <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 (((self ^. js "payeeOrigin") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "payeeOrigin") >>= fromMaybeJSString) >>= 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 (((self ^. js "payeeOrigin") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-paymententitieslogos AuthenticationExtensionsPaymentInputs.paymentEntitiesLogos specification>
+setPaymentEntitiesLogos :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> [PaymentEntityLogo] -> m ()
+setPaymentEntitiesLogos self val = liftDOM (void (self ^. jss "paymentEntitiesLogos" (toJSVal val)))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-paymententitieslogos AuthenticationExtensionsPaymentInputs.paymentEntitiesLogos specification>
+getPaymentEntitiesLogos :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> m (Maybe [PaymentEntityLogo])
+getPaymentEntitiesLogos self = liftDOM (((self ^. js "paymentEntitiesLogos") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-paymententitieslogos AuthenticationExtensionsPaymentInputs.paymentEntitiesLogos specification>
+getPaymentEntitiesLogosUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPaymentInputs -> m [PaymentEntityLogo]
+getPaymentEntitiesLogosUnsafe self = liftDOM ((((self ^. js "paymentEntitiesLogos") >>= 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 (((self ^. js "paymentEntitiesLogos") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-total AuthenticationExtensionsPaymentInputs.total specification>
+setTotal :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> PaymentCurrencyAmount -> m ()
+setTotal self val = liftDOM (void (self ^. jss "total" (toJSVal val)))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-total AuthenticationExtensionsPaymentInputs.total specification>
+getTotal :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> m (Maybe PaymentCurrencyAmount)
+getTotal self = liftDOM (((self ^. js "total") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-total AuthenticationExtensionsPaymentInputs.total specification>
+getTotalUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPaymentInputs -> m PaymentCurrencyAmount
+getTotalUnsafe self = liftDOM ((((self ^. js "total") >>= 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 (((self ^. js "total") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-instrument AuthenticationExtensionsPaymentInputs.instrument specification>
+setInstrument :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> PaymentCredentialInstrument -> m ()
+setInstrument self val = liftDOM (void (self ^. jss "instrument" (toJSVal val)))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-instrument AuthenticationExtensionsPaymentInputs.instrument specification>
+getInstrument :: (MonadDOM m) => AuthenticationExtensionsPaymentInputs -> m (Maybe PaymentCredentialInstrument)
+getInstrument self = liftDOM (((self ^. js "instrument") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentinputs-instrument AuthenticationExtensionsPaymentInputs.instrument specification>
+getInstrumentUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPaymentInputs -> m PaymentCredentialInstrument
+getInstrumentUnsafe self = liftDOM ((((self ^. js "instrument") >>= 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 (((self ^. js "instrument") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AuthenticationExtensionsPaymentOutputs.hs b/src/JSDOM/Generated/AuthenticationExtensionsPaymentOutputs.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AuthenticationExtensionsPaymentOutputs.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from secure-payment-confirmation (webref). Do not edit.
+module JSDOM.Generated.AuthenticationExtensionsPaymentOutputs
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dictdef-authenticationextensionspaymentoutputs AuthenticationExtensionsPaymentOutputs specification>
+newAuthenticationExtensionsPaymentOutputs :: (MonadDOM m) => m AuthenticationExtensionsPaymentOutputs
+newAuthenticationExtensionsPaymentOutputs = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentoutputs-browserboundsignature AuthenticationExtensionsPaymentOutputs.browserBoundSignature specification>
+setBrowserBoundSignature :: (MonadDOM m) => AuthenticationExtensionsPaymentOutputs -> BrowserBoundSignature -> m ()
+setBrowserBoundSignature self val = liftDOM (void (self ^. jss "browserBoundSignature" (toJSVal val)))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentoutputs-browserboundsignature AuthenticationExtensionsPaymentOutputs.browserBoundSignature specification>
+getBrowserBoundSignature :: (MonadDOM m) => AuthenticationExtensionsPaymentOutputs -> m (Maybe BrowserBoundSignature)
+getBrowserBoundSignature self = liftDOM (((self ^. js "browserBoundSignature") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-authenticationextensionspaymentoutputs-browserboundsignature AuthenticationExtensionsPaymentOutputs.browserBoundSignature specification>
+getBrowserBoundSignatureUnsafe :: (MonadDOM m, HasCallStack) => AuthenticationExtensionsPaymentOutputs -> m BrowserBoundSignature
+getBrowserBoundSignatureUnsafe self = liftDOM ((((self ^. js "browserBoundSignature") >>= 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 (((self ^. js "browserBoundSignature") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AuthenticatorAssertionResponse.hs b/src/JSDOM/Generated/AuthenticatorAssertionResponse.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AuthenticatorAssertionResponse.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.AuthenticatorAssertionResponse
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAssertionResponse/authenticatorData MDN AuthenticatorAssertionResponse.authenticatorData documentation>
+getAuthenticatorData :: (MonadDOM m) => AuthenticatorAssertionResponse -> m ArrayBuffer
+getAuthenticatorData self = liftDOM (((self ^. js "authenticatorData") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAssertionResponse/signature MDN AuthenticatorAssertionResponse.signature documentation>
+getSignature :: (MonadDOM m) => AuthenticatorAssertionResponse -> m ArrayBuffer
+getSignature self = liftDOM (((self ^. js "signature") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAssertionResponse/userHandle MDN AuthenticatorAssertionResponse.userHandle documentation>
+getUserHandle :: (MonadDOM m) => AuthenticatorAssertionResponse -> m (Maybe ArrayBuffer)
+getUserHandle self = liftDOM (((self ^. js "userHandle") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAssertionResponse/userHandle MDN AuthenticatorAssertionResponse.userHandle documentation>
+getUserHandleUnsafe :: (MonadDOM m, HasCallStack) => AuthenticatorAssertionResponse -> m ArrayBuffer
+getUserHandleUnsafe self = liftDOM ((((self ^. js "userHandle") >>= 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 (((self ^. js "userHandle") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AuthenticatorAttestationResponse.hs b/src/JSDOM/Generated/AuthenticatorAttestationResponse.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AuthenticatorAttestationResponse.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.AuthenticatorAttestationResponse
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getAuthenticatorData MDN AuthenticatorAttestationResponse.getAuthenticatorData documentation>
+getAuthenticatorData :: (MonadDOM m) => AuthenticatorAttestationResponse -> m ArrayBuffer
+getAuthenticatorData self = liftDOM (((self ^. jsf "getAuthenticatorData" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getAuthenticatorData MDN AuthenticatorAttestationResponse.getAuthenticatorData documentation>
+getAuthenticatorData_ :: (MonadDOM m) => AuthenticatorAttestationResponse -> m ()
+getAuthenticatorData_ self = liftDOM (void (self ^. jsf "getAuthenticatorData" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getPublicKey MDN AuthenticatorAttestationResponse.getPublicKey documentation>
+getPublicKey :: (MonadDOM m) => AuthenticatorAttestationResponse -> m (Maybe ArrayBuffer)
+getPublicKey self = liftDOM (((self ^. jsf "getPublicKey" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getPublicKey MDN AuthenticatorAttestationResponse.getPublicKey documentation>
+getPublicKey_ :: (MonadDOM m) => AuthenticatorAttestationResponse -> m ()
+getPublicKey_ self = liftDOM (void (self ^. jsf "getPublicKey" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getPublicKey MDN AuthenticatorAttestationResponse.getPublicKey documentation>
+getPublicKeyUnsafe :: (MonadDOM m, HasCallStack) => AuthenticatorAttestationResponse -> m ArrayBuffer
+getPublicKeyUnsafe self = liftDOM ((((self ^. jsf "getPublicKey" ()) >>= 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 (((self ^. jsf "getPublicKey" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getPublicKeyAlgorithm MDN AuthenticatorAttestationResponse.getPublicKeyAlgorithm documentation>
+getPublicKeyAlgorithm :: (MonadDOM m) => AuthenticatorAttestationResponse -> m Int
+getPublicKeyAlgorithm self = liftDOM ((P.round <$> ((self ^. jsf "getPublicKeyAlgorithm" ()) >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getPublicKeyAlgorithm MDN AuthenticatorAttestationResponse.getPublicKeyAlgorithm documentation>
+getPublicKeyAlgorithm_ :: (MonadDOM m) => AuthenticatorAttestationResponse -> m ()
+getPublicKeyAlgorithm_ self = liftDOM (void (self ^. jsf "getPublicKeyAlgorithm" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getTransports MDN AuthenticatorAttestationResponse.getTransports documentation>
+getTransports :: (MonadDOM m, FromJSString result) => AuthenticatorAttestationResponse -> m [result]
+getTransports self = liftDOM (((self ^. jsf "getTransports" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getTransports MDN AuthenticatorAttestationResponse.getTransports documentation>
+getTransports_ :: (MonadDOM m) => AuthenticatorAttestationResponse -> m ()
+getTransports_ self = liftDOM (void (self ^. jsf "getTransports" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/attestationObject MDN AuthenticatorAttestationResponse.attestationObject documentation>
+getAttestationObject :: (MonadDOM m) => AuthenticatorAttestationResponse -> m ArrayBuffer
+getAttestationObject self = liftDOM (((self ^. js "attestationObject") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AuthenticatorResponse.hs b/src/JSDOM/Generated/AuthenticatorResponse.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AuthenticatorResponse.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.AuthenticatorResponse
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/AuthenticatorResponse/clientDataJSON MDN AuthenticatorResponse.clientDataJSON documentation>
+getClientDataJSON :: (MonadDOM m, IsAuthenticatorResponse self) => self -> m ArrayBuffer
+getClientDataJSON self = liftDOM ((((Types.toAuthenticatorResponse self) ^. js "clientDataJSON") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AuthenticatorSelectionCriteria.hs b/src/JSDOM/Generated/AuthenticatorSelectionCriteria.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AuthenticatorSelectionCriteria.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.AuthenticatorSelectionCriteria
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-authenticatorselectioncriteria AuthenticatorSelectionCriteria specification>
+newAuthenticatorSelectionCriteria :: (MonadDOM m) => m AuthenticatorSelectionCriteria
+newAuthenticatorSelectionCriteria = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-authenticatorattachment AuthenticatorSelectionCriteria.authenticatorAttachment specification>
+setAuthenticatorAttachment :: (MonadDOM m, ToJSString val) => AuthenticatorSelectionCriteria -> val -> m ()
+setAuthenticatorAttachment self val = liftDOM (void (self ^. jss "authenticatorAttachment" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-authenticatorattachment AuthenticatorSelectionCriteria.authenticatorAttachment specification>
+getAuthenticatorAttachment :: (MonadDOM m, FromJSString result) => AuthenticatorSelectionCriteria -> m (Maybe result)
+getAuthenticatorAttachment self = liftDOM (((self ^. js "authenticatorAttachment") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-authenticatorattachment AuthenticatorSelectionCriteria.authenticatorAttachment specification>
+getAuthenticatorAttachmentUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticatorSelectionCriteria -> m result
+getAuthenticatorAttachmentUnsafe self = liftDOM ((((self ^. js "authenticatorAttachment") >>= fromMaybeJSString) >>= 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 (((self ^. js "authenticatorAttachment") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-residentkey AuthenticatorSelectionCriteria.residentKey specification>
+setResidentKey :: (MonadDOM m, ToJSString val) => AuthenticatorSelectionCriteria -> val -> m ()
+setResidentKey self val = liftDOM (void (self ^. jss "residentKey" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-residentkey AuthenticatorSelectionCriteria.residentKey specification>
+getResidentKey :: (MonadDOM m, FromJSString result) => AuthenticatorSelectionCriteria -> m (Maybe result)
+getResidentKey self = liftDOM (((self ^. js "residentKey") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-residentkey AuthenticatorSelectionCriteria.residentKey specification>
+getResidentKeyUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticatorSelectionCriteria -> m result
+getResidentKeyUnsafe self = liftDOM ((((self ^. js "residentKey") >>= fromMaybeJSString) >>= 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 (((self ^. js "residentKey") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-requireresidentkey AuthenticatorSelectionCriteria.requireResidentKey specification>
+setRequireResidentKey :: (MonadDOM m) => AuthenticatorSelectionCriteria -> Bool -> m ()
+setRequireResidentKey self val = liftDOM (void (self ^. jss "requireResidentKey" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-requireresidentkey AuthenticatorSelectionCriteria.requireResidentKey specification>
+getRequireResidentKey :: (MonadDOM m) => AuthenticatorSelectionCriteria -> m (Maybe Bool)
+getRequireResidentKey self = liftDOM (((self ^. js "requireResidentKey") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-requireresidentkey AuthenticatorSelectionCriteria.requireResidentKey specification>
+getRequireResidentKeyUnsafe :: (MonadDOM m, HasCallStack) => AuthenticatorSelectionCriteria -> m Bool
+getRequireResidentKeyUnsafe self = liftDOM ((((self ^. js "requireResidentKey") >>= 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 (((self ^. js "requireResidentKey") >>= valToBool))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-userverification AuthenticatorSelectionCriteria.userVerification specification>
+setUserVerification :: (MonadDOM m, ToJSString val) => AuthenticatorSelectionCriteria -> val -> m ()
+setUserVerification self val = liftDOM (void (self ^. jss "userVerification" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-userverification AuthenticatorSelectionCriteria.userVerification specification>
+getUserVerification :: (MonadDOM m, FromJSString result) => AuthenticatorSelectionCriteria -> m (Maybe result)
+getUserVerification self = liftDOM (((self ^. js "userVerification") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-authenticatorselectioncriteria-userverification AuthenticatorSelectionCriteria.userVerification specification>
+getUserVerificationUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => AuthenticatorSelectionCriteria -> m result
+getUserVerificationUnsafe self = liftDOM ((((self ^. js "userVerification") >>= fromMaybeJSString) >>= 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 (((self ^. js "userVerification") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/AutocompleteErrorEvent.hs b/src/JSDOM/Generated/AutocompleteErrorEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/AutocompleteErrorEvent.hs
+++ /dev/null
@@ -1,39 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.AutocompleteErrorEvent
-       (newAutocompleteErrorEvent, getReason, AutocompleteErrorEvent(..),
-        gTypeAutocompleteErrorEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AutocompleteErrorEvent Mozilla AutocompleteErrorEvent documentation> 
-newAutocompleteErrorEvent ::
-                          (MonadDOM m, ToJSString type') =>
-                            type' ->
-                              Maybe AutocompleteErrorEventInit -> m AutocompleteErrorEvent
-newAutocompleteErrorEvent type' eventInitDict
-  = liftDOM
-      (AutocompleteErrorEvent <$>
-         new (jsg "AutocompleteErrorEvent")
-           [toJSVal type', toJSVal eventInitDict])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/AutocompleteErrorEvent.reason Mozilla AutocompleteErrorEvent.reason documentation> 
-getReason ::
-          (MonadDOM m, FromJSString result) =>
-            AutocompleteErrorEvent -> m result
-getReason self
-  = liftDOM ((self ^. js "reason") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/AutofillEvent.hs b/src/JSDOM/Generated/AutofillEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AutofillEvent.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from autofill-event (webref). Do not edit.
+module JSDOM.Generated.AutofillEvent
+       (AutofillEvent(..), gTypeAutofillEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/AvcEncoderConfig.hs b/src/JSDOM/Generated/AvcEncoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/AvcEncoderConfig.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-avc-codec-registration (webref). Do not edit.
+module JSDOM.Generated.AvcEncoderConfig
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dictdef-avcencoderconfig AvcEncoderConfig specification>
+newAvcEncoderConfig :: (MonadDOM m) => m AvcEncoderConfig
+newAvcEncoderConfig = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "format" (toJSVal val)))
+
+-- | <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 (((self ^. js "format") >>= 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 ((((self ^. js "format") >>= 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 (((self ^. js "format") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/BackgroundBlur.hs b/src/JSDOM/Generated/BackgroundBlur.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/BackgroundBlur.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-extensions (webref). Do not edit.
+module JSDOM.Generated.BackgroundBlur
+       (newBackgroundBlur, BackgroundBlur(..), gTypeBackgroundBlur)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-backgroundblur BackgroundBlur specification>
+newBackgroundBlur :: (MonadDOM m) => Bool -> m BackgroundBlur
+newBackgroundBlur enabled = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "enabled" (toJSVal enabled)) P.>> P.return o)) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/BarProp.hs b/src/JSDOM/Generated/BarProp.hs
--- a/src/JSDOM/Generated/BarProp.hs
+++ b/src/JSDOM/Generated/BarProp.hs
@@ -1,23 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.BarProp
-       (getVisible, BarProp(..), gTypeBarProp) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (getVisible, BarProp(..), gTypeBarProp)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BarProp.visible Mozilla BarProp.visible documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/BarProp/visible MDN BarProp.visible documentation>
 getVisible :: (MonadDOM m) => BarProp -> m Bool
-getVisible self = liftDOM ((self ^. js "visible") >>= valToBool)
+getVisible self = liftDOM (((self ^. js "visible") >>= valToBool))
diff --git a/src/JSDOM/Generated/BaseAudioContext.hs b/src/JSDOM/Generated/BaseAudioContext.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/BaseAudioContext.hs
@@ -0,0 +1,196 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.BaseAudioContext
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createAnalyser MDN BaseAudioContext.createAnalyser documentation>
+createAnalyser :: (MonadDOM m, IsBaseAudioContext self) => self -> m AnalyserNode
+createAnalyser self = liftDOM ((((Types.toBaseAudioContext self) ^. jsf "createAnalyser" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createAnalyser MDN BaseAudioContext.createAnalyser documentation>
+createAnalyser_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createAnalyser_ self = liftDOM (void ((Types.toBaseAudioContext self) ^. jsf "createAnalyser" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createBiquadFilter MDN BaseAudioContext.createBiquadFilter documentation>
+createBiquadFilter :: (MonadDOM m, IsBaseAudioContext self) => self -> m BiquadFilterNode
+createBiquadFilter self = liftDOM ((((Types.toBaseAudioContext self) ^. jsf "createBiquadFilter" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createBiquadFilter MDN BaseAudioContext.createBiquadFilter documentation>
+createBiquadFilter_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createBiquadFilter_ self = liftDOM (void ((Types.toBaseAudioContext self) ^. jsf "createBiquadFilter" ()))
+
+-- | <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 ((((Types.toBaseAudioContext self) ^. jsf "createBuffer" [toJSVal numberOfChannels, toJSVal length, toJSVal sampleRate]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toBaseAudioContext self) ^. jsf "createBuffer" [toJSVal numberOfChannels, toJSVal length, toJSVal sampleRate]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createBufferSource MDN BaseAudioContext.createBufferSource documentation>
+createBufferSource :: (MonadDOM m, IsBaseAudioContext self) => self -> m AudioBufferSourceNode
+createBufferSource self = liftDOM ((((Types.toBaseAudioContext self) ^. jsf "createBufferSource" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createBufferSource MDN BaseAudioContext.createBufferSource documentation>
+createBufferSource_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createBufferSource_ self = liftDOM (void ((Types.toBaseAudioContext self) ^. jsf "createBufferSource" ()))
+
+-- | <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 ((((Types.toBaseAudioContext self) ^. jsf "createChannelMerger" [P.maybe (P.return jsUndefined) toJSVal numberOfInputs]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toBaseAudioContext self) ^. jsf "createChannelMerger" [P.maybe (P.return jsUndefined) toJSVal numberOfInputs]))
+
+-- | <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 ((((Types.toBaseAudioContext self) ^. jsf "createChannelSplitter" [P.maybe (P.return jsUndefined) toJSVal numberOfOutputs]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toBaseAudioContext self) ^. jsf "createChannelSplitter" [P.maybe (P.return jsUndefined) toJSVal numberOfOutputs]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createConstantSource MDN BaseAudioContext.createConstantSource documentation>
+createConstantSource :: (MonadDOM m, IsBaseAudioContext self) => self -> m ConstantSourceNode
+createConstantSource self = liftDOM ((((Types.toBaseAudioContext self) ^. jsf "createConstantSource" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createConstantSource MDN BaseAudioContext.createConstantSource documentation>
+createConstantSource_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createConstantSource_ self = liftDOM (void ((Types.toBaseAudioContext self) ^. jsf "createConstantSource" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createConvolver MDN BaseAudioContext.createConvolver documentation>
+createConvolver :: (MonadDOM m, IsBaseAudioContext self) => self -> m ConvolverNode
+createConvolver self = liftDOM ((((Types.toBaseAudioContext self) ^. jsf "createConvolver" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createConvolver MDN BaseAudioContext.createConvolver documentation>
+createConvolver_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createConvolver_ self = liftDOM (void ((Types.toBaseAudioContext self) ^. jsf "createConvolver" ()))
+
+-- | <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 ((((Types.toBaseAudioContext self) ^. jsf "createDelay" [P.maybe (P.return jsUndefined) toJSVal maxDelayTime]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toBaseAudioContext self) ^. jsf "createDelay" [P.maybe (P.return jsUndefined) toJSVal maxDelayTime]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createDynamicsCompressor MDN BaseAudioContext.createDynamicsCompressor documentation>
+createDynamicsCompressor :: (MonadDOM m, IsBaseAudioContext self) => self -> m DynamicsCompressorNode
+createDynamicsCompressor self = liftDOM ((((Types.toBaseAudioContext self) ^. jsf "createDynamicsCompressor" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createDynamicsCompressor MDN BaseAudioContext.createDynamicsCompressor documentation>
+createDynamicsCompressor_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createDynamicsCompressor_ self = liftDOM (void ((Types.toBaseAudioContext self) ^. jsf "createDynamicsCompressor" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createGain MDN BaseAudioContext.createGain documentation>
+createGain :: (MonadDOM m, IsBaseAudioContext self) => self -> m GainNode
+createGain self = liftDOM ((((Types.toBaseAudioContext self) ^. jsf "createGain" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createGain MDN BaseAudioContext.createGain documentation>
+createGain_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createGain_ self = liftDOM (void ((Types.toBaseAudioContext self) ^. jsf "createGain" ()))
+
+-- | <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 ((((Types.toBaseAudioContext self) ^. jsf "createIIRFilter" [toJSVal feedforward, toJSVal feedback]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toBaseAudioContext self) ^. jsf "createIIRFilter" [toJSVal feedforward, toJSVal feedback]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createOscillator MDN BaseAudioContext.createOscillator documentation>
+createOscillator :: (MonadDOM m, IsBaseAudioContext self) => self -> m OscillatorNode
+createOscillator self = liftDOM ((((Types.toBaseAudioContext self) ^. jsf "createOscillator" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createOscillator MDN BaseAudioContext.createOscillator documentation>
+createOscillator_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createOscillator_ self = liftDOM (void ((Types.toBaseAudioContext self) ^. jsf "createOscillator" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createPanner MDN BaseAudioContext.createPanner documentation>
+createPanner :: (MonadDOM m, IsBaseAudioContext self) => self -> m PannerNode
+createPanner self = liftDOM ((((Types.toBaseAudioContext self) ^. jsf "createPanner" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createPanner MDN BaseAudioContext.createPanner documentation>
+createPanner_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createPanner_ self = liftDOM (void ((Types.toBaseAudioContext self) ^. jsf "createPanner" ()))
+
+-- | <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 ((((Types.toBaseAudioContext self) ^. jsf "createPeriodicWave" [toJSVal real, toJSVal imag, P.maybe (P.return jsUndefined) toJSVal constraints]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toBaseAudioContext self) ^. jsf "createPeriodicWave" [toJSVal real, toJSVal imag, P.maybe (P.return jsUndefined) toJSVal constraints]))
+
+-- | <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 ((((Types.toBaseAudioContext self) ^. jsf "createScriptProcessor" [P.maybe (P.return jsUndefined) toJSVal bufferSize, P.maybe (P.return jsUndefined) toJSVal numberOfInputChannels, P.maybe (P.return jsUndefined) toJSVal numberOfOutputChannels]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toBaseAudioContext self) ^. jsf "createScriptProcessor" [P.maybe (P.return jsUndefined) toJSVal bufferSize, P.maybe (P.return jsUndefined) toJSVal numberOfInputChannels, P.maybe (P.return jsUndefined) toJSVal numberOfOutputChannels]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createStereoPanner MDN BaseAudioContext.createStereoPanner documentation>
+createStereoPanner :: (MonadDOM m, IsBaseAudioContext self) => self -> m StereoPannerNode
+createStereoPanner self = liftDOM ((((Types.toBaseAudioContext self) ^. jsf "createStereoPanner" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createStereoPanner MDN BaseAudioContext.createStereoPanner documentation>
+createStereoPanner_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createStereoPanner_ self = liftDOM (void ((Types.toBaseAudioContext self) ^. jsf "createStereoPanner" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createWaveShaper MDN BaseAudioContext.createWaveShaper documentation>
+createWaveShaper :: (MonadDOM m, IsBaseAudioContext self) => self -> m WaveShaperNode
+createWaveShaper self = liftDOM ((((Types.toBaseAudioContext self) ^. jsf "createWaveShaper" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createWaveShaper MDN BaseAudioContext.createWaveShaper documentation>
+createWaveShaper_ :: (MonadDOM m, IsBaseAudioContext self) => self -> m ()
+createWaveShaper_ self = liftDOM (void ((Types.toBaseAudioContext self) ^. jsf "createWaveShaper" ()))
+
+-- | <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 ((((((Types.toBaseAudioContext self) ^. jsf "decodeAudioData" [toJSVal audioData, toJSVal successCallback, toJSVal errorCallback]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toBaseAudioContext self) ^. jsf "decodeAudioData" [toJSVal audioData, toJSVal successCallback, toJSVal errorCallback]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/destination MDN BaseAudioContext.destination documentation>
+getDestination :: (MonadDOM m, IsBaseAudioContext self) => self -> m AudioDestinationNode
+getDestination self = liftDOM ((((Types.toBaseAudioContext self) ^. js "destination") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/sampleRate MDN BaseAudioContext.sampleRate documentation>
+getSampleRate :: (MonadDOM m, IsBaseAudioContext self) => self -> m Float
+getSampleRate self = liftDOM ((P.realToFrac <$> (((Types.toBaseAudioContext self) ^. js "sampleRate") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/currentTime MDN BaseAudioContext.currentTime documentation>
+getCurrentTime :: (MonadDOM m, IsBaseAudioContext self) => self -> m Double
+getCurrentTime self = liftDOM ((((Types.toBaseAudioContext self) ^. js "currentTime") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/listener MDN BaseAudioContext.listener documentation>
+getListener :: (MonadDOM m, IsBaseAudioContext self) => self -> m AudioListener
+getListener self = liftDOM ((((Types.toBaseAudioContext self) ^. js "listener") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/state MDN BaseAudioContext.state documentation>
+getState :: (MonadDOM m, IsBaseAudioContext self) => self -> m AudioContextState
+getState self = liftDOM ((((Types.toBaseAudioContext self) ^. js "state") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BaseAudioContext/audioWorklet MDN BaseAudioContext.audioWorklet documentation>
+getAudioWorklet :: (MonadDOM m, IsBaseAudioContext self) => self -> m AudioWorklet
+getAudioWorklet self = liftDOM ((((Types.toBaseAudioContext self) ^. js "audioWorklet") >>= fromJSValUnchecked))
+
+-- | <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/JSDOM/Generated/BasicCredential.hs b/src/JSDOM/Generated/BasicCredential.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/BasicCredential.hs
+++ /dev/null
@@ -1,37 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.BasicCredential
-       (getId, getType, BasicCredential(..), gTypeBasicCredential,
-        IsBasicCredential, toBasicCredential)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BasicCredential.id Mozilla BasicCredential.id documentation> 
-getId ::
-      (MonadDOM m, IsBasicCredential self, FromJSString result) =>
-        self -> m result
-getId self
-  = liftDOM
-      (((toBasicCredential self) ^. js "id") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BasicCredential.type Mozilla BasicCredential.type documentation> 
-getType ::
-        (MonadDOM m, IsBasicCredential self, FromJSString result) =>
-          self -> m result
-getType self
-  = liftDOM
-      (((toBasicCredential self) ^. js "type") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/BeforeLoadEvent.hs b/src/JSDOM/Generated/BeforeLoadEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/BeforeLoadEvent.hs
+++ /dev/null
@@ -1,35 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.BeforeLoadEvent
-       (newBeforeLoadEvent, getUrl, BeforeLoadEvent(..),
-        gTypeBeforeLoadEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeLoadEvent Mozilla BeforeLoadEvent documentation> 
-newBeforeLoadEvent ::
-                   (MonadDOM m, ToJSString type') =>
-                     type' -> Maybe BeforeLoadEventInit -> m BeforeLoadEvent
-newBeforeLoadEvent type' eventInitDict
-  = liftDOM
-      (BeforeLoadEvent <$>
-         new (jsg "BeforeLoadEvent") [toJSVal type', toJSVal eventInitDict])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeLoadEvent.url Mozilla BeforeLoadEvent.url documentation> 
-getUrl ::
-       (MonadDOM m, FromJSString result) => BeforeLoadEvent -> m result
-getUrl self = liftDOM ((self ^. js "url") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/BeforeUnloadEvent.hs b/src/JSDOM/Generated/BeforeUnloadEvent.hs
--- a/src/JSDOM/Generated/BeforeUnloadEvent.hs
+++ b/src/JSDOM/Generated/BeforeUnloadEvent.hs
@@ -1,33 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.BeforeUnloadEvent
-       (setReturnValue, getReturnValue, BeforeUnloadEvent(..),
-        gTypeBeforeUnloadEvent)
+       (setReturnValue, getReturnValue, BeforeUnloadEvent(..), gTypeBeforeUnloadEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeUnloadEvent.returnValue Mozilla BeforeUnloadEvent.returnValue documentation> 
-setReturnValue ::
-               (MonadDOM m, ToJSString val) => BeforeUnloadEvent -> val -> m ()
-setReturnValue self val
-  = liftDOM (self ^. jss "returnValue" (toJSVal val))
+-- | <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 (self ^. jss "returnValue" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeUnloadEvent.returnValue Mozilla BeforeUnloadEvent.returnValue documentation> 
-getReturnValue ::
-               (MonadDOM m, FromJSString result) => BeforeUnloadEvent -> m result
-getReturnValue self
-  = liftDOM ((self ^. js "returnValue") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/BeforeUnloadEvent/returnValue MDN BeforeUnloadEvent.returnValue documentation>
+getReturnValue :: (MonadDOM m, FromJSString result) => BeforeUnloadEvent -> m result
+getReturnValue self = liftDOM (((self ^. js "returnValue") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/BiquadFilterNode.hs b/src/JSDOM/Generated/BiquadFilterNode.hs
--- a/src/JSDOM/Generated/BiquadFilterNode.hs
+++ b/src/JSDOM/Generated/BiquadFilterNode.hs
@@ -1,61 +1,48 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.BiquadFilterNode
-       (getFrequencyResponse, setType, getType, getFrequency, getDetune,
-        getQ, getGain, BiquadFilterNode(..), gTypeBiquadFilterNode)
+       (newBiquadFilterNode, getFrequencyResponse, setType, getType, getFrequency, getDetune, getQ, getGain, BiquadFilterNode(..), gTypeBiquadFilterNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.getFrequencyResponse Mozilla BiquadFilterNode.getFrequencyResponse documentation> 
-getFrequencyResponse ::
-                     (MonadDOM m, IsFloat32Array frequencyHz,
-                      IsFloat32Array magResponse, IsFloat32Array phaseResponse) =>
-                       BiquadFilterNode ->
-                         Maybe frequencyHz ->
-                           Maybe magResponse -> Maybe phaseResponse -> m ()
-getFrequencyResponse self frequencyHz magResponse phaseResponse
-  = liftDOM
-      (void
-         (self ^. jsf "getFrequencyResponse"
-            [toJSVal frequencyHz, toJSVal magResponse, toJSVal phaseResponse]))
+-- | <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 (((new (jsg "BiquadFilterNode") [toJSVal context, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.type Mozilla BiquadFilterNode.type documentation> 
-setType ::
-        (MonadDOM m) => BiquadFilterNode -> BiquadFilterType -> m ()
-setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+-- | <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 (self ^. jsf "getFrequencyResponse" [toJSVal frequencyHz, toJSVal magResponse, toJSVal phaseResponse]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.type Mozilla BiquadFilterNode.type documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/type MDN BiquadFilterNode.type documentation>
+setType :: (MonadDOM m) => BiquadFilterNode -> BiquadFilterType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/type MDN BiquadFilterNode.type documentation>
 getType :: (MonadDOM m) => BiquadFilterNode -> m BiquadFilterType
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.frequency Mozilla BiquadFilterNode.frequency documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/frequency MDN BiquadFilterNode.frequency documentation>
 getFrequency :: (MonadDOM m) => BiquadFilterNode -> m AudioParam
-getFrequency self
-  = liftDOM ((self ^. js "frequency") >>= fromJSValUnchecked)
+getFrequency self = liftDOM (((self ^. js "frequency") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.detune Mozilla BiquadFilterNode.detune documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/detune MDN BiquadFilterNode.detune documentation>
 getDetune :: (MonadDOM m) => BiquadFilterNode -> m AudioParam
-getDetune self
-  = liftDOM ((self ^. js "detune") >>= fromJSValUnchecked)
+getDetune self = liftDOM (((self ^. js "detune") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.Q Mozilla BiquadFilterNode.Q documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/Q MDN BiquadFilterNode.Q documentation>
 getQ :: (MonadDOM m) => BiquadFilterNode -> m AudioParam
-getQ self = liftDOM ((self ^. js "Q") >>= fromJSValUnchecked)
+getQ self = liftDOM (((self ^. js "Q") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.gain Mozilla BiquadFilterNode.gain documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/gain MDN BiquadFilterNode.gain documentation>
 getGain :: (MonadDOM m) => BiquadFilterNode -> m AudioParam
-getGain self = liftDOM ((self ^. js "gain") >>= fromJSValUnchecked)
+getGain self = liftDOM (((self ^. js "gain") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/BiquadFilterOptions.hs b/src/JSDOM/Generated/BiquadFilterOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/BiquadFilterOptions.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.BiquadFilterOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#BiquadFilterOptions BiquadFilterOptions specification>
+newBiquadFilterOptions :: (MonadDOM m) => m BiquadFilterOptions
+newBiquadFilterOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-type BiquadFilterOptions.type specification>
+setType :: (MonadDOM m) => BiquadFilterOptions -> BiquadFilterType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-type BiquadFilterOptions.type specification>
+getType :: (MonadDOM m) => BiquadFilterOptions -> m (Maybe BiquadFilterType)
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-type BiquadFilterOptions.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => BiquadFilterOptions -> m BiquadFilterType
+getTypeUnsafe self = liftDOM ((((self ^. js "type") >>= 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 (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-q BiquadFilterOptions.Q specification>
+setQ :: (MonadDOM m) => BiquadFilterOptions -> Float -> m ()
+setQ self val = liftDOM (void (self ^. jss "Q" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-q BiquadFilterOptions.Q specification>
+getQ :: (MonadDOM m) => BiquadFilterOptions -> m (Maybe Float)
+getQ self = liftDOM (((self ^. js "Q") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-q BiquadFilterOptions.Q specification>
+getQUnsafe :: (MonadDOM m, HasCallStack) => BiquadFilterOptions -> m Float
+getQUnsafe self = liftDOM ((((self ^. js "Q") >>= 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 ((P.realToFrac <$> ((self ^. js "Q") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-detune BiquadFilterOptions.detune specification>
+setDetune :: (MonadDOM m) => BiquadFilterOptions -> Float -> m ()
+setDetune self val = liftDOM (void (self ^. jss "detune" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-detune BiquadFilterOptions.detune specification>
+getDetune :: (MonadDOM m) => BiquadFilterOptions -> m (Maybe Float)
+getDetune self = liftDOM (((self ^. js "detune") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-detune BiquadFilterOptions.detune specification>
+getDetuneUnsafe :: (MonadDOM m, HasCallStack) => BiquadFilterOptions -> m Float
+getDetuneUnsafe self = liftDOM ((((self ^. js "detune") >>= 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 ((P.realToFrac <$> ((self ^. js "detune") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-frequency BiquadFilterOptions.frequency specification>
+setFrequency :: (MonadDOM m) => BiquadFilterOptions -> Float -> m ()
+setFrequency self val = liftDOM (void (self ^. jss "frequency" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-frequency BiquadFilterOptions.frequency specification>
+getFrequency :: (MonadDOM m) => BiquadFilterOptions -> m (Maybe Float)
+getFrequency self = liftDOM (((self ^. js "frequency") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-frequency BiquadFilterOptions.frequency specification>
+getFrequencyUnsafe :: (MonadDOM m, HasCallStack) => BiquadFilterOptions -> m Float
+getFrequencyUnsafe self = liftDOM ((((self ^. js "frequency") >>= 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 ((P.realToFrac <$> ((self ^. js "frequency") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-gain BiquadFilterOptions.gain specification>
+setGain :: (MonadDOM m) => BiquadFilterOptions -> Float -> m ()
+setGain self val = liftDOM (void (self ^. jss "gain" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-gain BiquadFilterOptions.gain specification>
+getGain :: (MonadDOM m) => BiquadFilterOptions -> m (Maybe Float)
+getGain self = liftDOM (((self ^. js "gain") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-biquadfilteroptions-gain BiquadFilterOptions.gain specification>
+getGainUnsafe :: (MonadDOM m, HasCallStack) => BiquadFilterOptions -> m Float
+getGainUnsafe self = liftDOM ((((self ^. js "gain") >>= 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 ((P.realToFrac <$> ((self ^. js "gain") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/Blob.hs b/src/JSDOM/Generated/Blob.hs
--- a/src/JSDOM/Generated/Blob.hs
+++ b/src/JSDOM/Generated/Blob.hs
@@ -1,66 +1,68 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from FileAPI (webref). Do not edit.
 module JSDOM.Generated.Blob
-       (newBlob, slice, slice_, getSize, getType, Blob(..), gTypeBlob,
-        IsBlob, toBlob)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob Mozilla Blob documentation> 
-newBlob ::
-        (MonadDOM m, IsBlobPart blobParts, IsBlobPropertyBag options) =>
-          [blobParts] -> Maybe options -> m Blob
-newBlob blobParts options
-  = liftDOM
-      (Blob <$>
-         new (jsg "Blob") [toJSVal (array blobParts), toJSVal options])
+-- | <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 (((new (jsg "Blob") [P.maybe (P.return jsUndefined) toJSVal blobParts, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.slice Mozilla Blob.slice documentation> 
-slice ::
-      (MonadDOM m, IsBlob self, ToJSString contentType) =>
-        self -> Maybe Int64 -> Maybe Int64 -> Maybe contentType -> m Blob
-slice self start end contentType
-  = liftDOM
-      (((toBlob self) ^. jsf "slice"
-          [maybe (return jsUndefined) integralToDoubleToJSVal start,
-           maybe (return jsUndefined) integralToDoubleToJSVal end,
-           toJSVal contentType])
-         >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/arrayBuffer MDN Blob.arrayBuffer documentation>
+arrayBuffer :: (MonadDOM m, IsBlob self) => self -> m ArrayBuffer
+arrayBuffer self = liftDOM ((((((Types.toBlob self) ^. jsf "arrayBuffer" ()) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.slice Mozilla Blob.slice documentation> 
-slice_ ::
-       (MonadDOM m, IsBlob self, ToJSString contentType) =>
-         self -> Maybe Int64 -> Maybe Int64 -> Maybe contentType -> m ()
-slice_ self start end contentType
-  = liftDOM
-      (void
-         ((toBlob self) ^. jsf "slice"
-            [maybe (return jsUndefined) integralToDoubleToJSVal start,
-             maybe (return jsUndefined) integralToDoubleToJSVal end,
-             toJSVal contentType]))
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/arrayBuffer MDN Blob.arrayBuffer documentation>
+arrayBuffer_ :: (MonadDOM m, IsBlob self) => self -> m ()
+arrayBuffer_ self = liftDOM (void ((((Types.toBlob self) ^. jsf "arrayBuffer" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.size Mozilla Blob.size documentation> 
-getSize :: (MonadDOM m, IsBlob self) => self -> m Word64
-getSize self
-  = liftDOM
-      (round <$> (((toBlob self) ^. js "size") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/bytes MDN Blob.bytes documentation>
+bytes :: (MonadDOM m, IsBlob self) => self -> m Uint8Array
+bytes self = liftDOM ((((((Types.toBlob self) ^. jsf "bytes" ()) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.type Mozilla Blob.type documentation> 
-getType ::
-        (MonadDOM m, IsBlob self, FromJSString result) => self -> m result
-getType self
-  = liftDOM (((toBlob self) ^. js "type") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/bytes MDN Blob.bytes documentation>
+bytes_ :: (MonadDOM m, IsBlob self) => self -> m ()
+bytes_ self = liftDOM (void ((((Types.toBlob self) ^. jsf "bytes" ()) >>= readPromise)))
+
+-- | <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 ((((Types.toBlob self) ^. jsf "slice" [P.maybe (P.return jsUndefined) toJSVal start, P.maybe (P.return jsUndefined) toJSVal end, P.maybe (P.return jsUndefined) toJSVal contentType]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toBlob self) ^. jsf "slice" [P.maybe (P.return jsUndefined) toJSVal start, P.maybe (P.return jsUndefined) toJSVal end, P.maybe (P.return jsUndefined) toJSVal contentType]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/stream MDN Blob.stream documentation>
+stream :: (MonadDOM m, IsBlob self) => self -> m ReadableStream
+stream self = liftDOM ((((Types.toBlob self) ^. jsf "stream" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/stream MDN Blob.stream documentation>
+stream_ :: (MonadDOM m, IsBlob self) => self -> m ()
+stream_ self = liftDOM (void ((Types.toBlob self) ^. jsf "stream" ()))
+
+-- | <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 ((((((Types.toBlob self) ^. jsf "text" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/text MDN Blob.text documentation>
+text_ :: (MonadDOM m, IsBlob self) => self -> m ()
+text_ self = liftDOM (void ((((Types.toBlob self) ^. jsf "text" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Blob/size MDN Blob.size documentation>
+getSize :: (MonadDOM m, IsBlob self) => self -> m Word53
+getSize self = liftDOM ((((Types.toBlob self) ^. js "size") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toBlob self) ^. js "type") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/BlobCallback.hs b/src/JSDOM/Generated/BlobCallback.hs
--- a/src/JSDOM/Generated/BlobCallback.hs
+++ b/src/JSDOM/Generated/BlobCallback.hs
@@ -1,48 +1,30 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.BlobCallback
-       (newBlobCallback, newBlobCallbackSync, newBlobCallbackAsync,
-        BlobCallback)
+       (newBlobCallback, newBlobCallbackSync, newBlobCallbackAsync, BlobCallback)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BlobCallback Mozilla BlobCallback documentation> 
-newBlobCallback ::
-                (MonadDOM m) => (Maybe Blob -> JSM ()) -> m BlobCallback
-newBlobCallback callback
-  = liftDOM
-      (BlobCallback . Callback <$>
-         function
-           (\ _ _ [blob] -> fromJSVal blob >>= \ blob' -> callback blob'))
+newBlobCallback :: (MonadDOM m) => (Maybe Blob -> JSM ()) -> m BlobCallback
+newBlobCallback callback = liftDOM (BlobCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (blob : _) -> do
+          blob' <- fromJSValUnchecked blob
+          callback blob'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BlobCallback Mozilla BlobCallback documentation> 
-newBlobCallbackSync ::
-                    (MonadDOM m) => (Maybe Blob -> JSM ()) -> m BlobCallback
-newBlobCallbackSync callback
-  = liftDOM
-      (BlobCallback . Callback <$>
-         function
-           (\ _ _ [blob] -> fromJSVal blob >>= \ blob' -> callback blob'))
+newBlobCallbackSync :: (MonadDOM m) => (Maybe Blob -> JSM ()) -> m BlobCallback
+newBlobCallbackSync callback = liftDOM (BlobCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (blob : _) -> do
+          blob' <- fromJSValUnchecked blob
+          callback blob'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/BlobCallback Mozilla BlobCallback documentation> 
-newBlobCallbackAsync ::
-                     (MonadDOM m) => (Maybe Blob -> JSM ()) -> m BlobCallback
-newBlobCallbackAsync callback
-  = liftDOM
-      (BlobCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [blob] -> fromJSVal blob >>= \ blob' -> callback blob'))
+newBlobCallbackAsync :: (MonadDOM m) => (Maybe Blob -> JSM ()) -> m BlobCallback
+newBlobCallbackAsync callback = liftDOM (BlobCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (blob : _) -> do
+          blob' <- fromJSValUnchecked blob
+          callback blob'))
diff --git a/src/JSDOM/Generated/BlobEvent.hs b/src/JSDOM/Generated/BlobEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/BlobEvent.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediastream-recording (webref). Do not edit.
+module JSDOM.Generated.BlobEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "BlobEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BlobEvent/data MDN BlobEvent.data documentation>
+getData :: (MonadDOM m) => BlobEvent -> m Blob
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BlobEvent/timecode MDN BlobEvent.timecode documentation>
+getTimecode :: (MonadDOM m) => BlobEvent -> m Double
+getTimecode self = liftDOM (((self ^. js "timecode") >>= valToNumber))
diff --git a/src/JSDOM/Generated/BlobEventInit.hs b/src/JSDOM/Generated/BlobEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/BlobEventInit.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediastream-recording (webref). Do not edit.
+module JSDOM.Generated.BlobEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-record/#dictdef-blobeventinit BlobEventInit specification>
+newBlobEventInit :: (MonadDOM m, IsBlob data') => data' -> m BlobEventInit
+newBlobEventInit data' = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "data" (toJSVal data')) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "data" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-blobeventinit-data BlobEventInit.data specification>
+getData :: (MonadDOM m) => BlobEventInit -> m Blob
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-blobeventinit-timecode BlobEventInit.timecode specification>
+setTimecode :: (MonadDOM m) => BlobEventInit -> Double -> m ()
+setTimecode self val = liftDOM (void (self ^. jss "timecode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-blobeventinit-timecode BlobEventInit.timecode specification>
+getTimecode :: (MonadDOM m) => BlobEventInit -> m (Maybe Double)
+getTimecode self = liftDOM (((self ^. js "timecode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-blobeventinit-timecode BlobEventInit.timecode specification>
+getTimecodeUnsafe :: (MonadDOM m, HasCallStack) => BlobEventInit -> m Double
+getTimecodeUnsafe self = liftDOM ((((self ^. js "timecode") >>= 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 (((self ^. js "timecode") >>= valToNumber))
diff --git a/src/JSDOM/Generated/BlobPropertyBag.hs b/src/JSDOM/Generated/BlobPropertyBag.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/BlobPropertyBag.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from FileAPI (webref). Do not edit.
+module JSDOM.Generated.BlobPropertyBag
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/FileAPI/#dfn-BlobPropertyBag BlobPropertyBag specification>
+newBlobPropertyBag :: (MonadDOM m) => m BlobPropertyBag
+newBlobPropertyBag = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toBlobPropertyBag self) ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/FileAPI/#dfn-BPtype BlobPropertyBag.type specification>
+getType :: (MonadDOM m, IsBlobPropertyBag self, FromJSString result) => self -> m (Maybe result)
+getType self = liftDOM ((((Types.toBlobPropertyBag self) ^. js "type") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/FileAPI/#dfn-BPtype BlobPropertyBag.type specification>
+getTypeUnsafe :: (MonadDOM m, IsBlobPropertyBag self, HasCallStack, FromJSString result) => self -> m result
+getTypeUnsafe self = liftDOM (((((Types.toBlobPropertyBag self) ^. js "type") >>= fromMaybeJSString) >>= 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 ((((Types.toBlobPropertyBag self) ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/FileAPI/#dom-blobpropertybag-endings BlobPropertyBag.endings specification>
+setEndings :: (MonadDOM m, IsBlobPropertyBag self) => self -> EndingType -> m ()
+setEndings self val = liftDOM (void ((Types.toBlobPropertyBag self) ^. jss "endings" (toJSVal val)))
+
+-- | <https://w3c.github.io/FileAPI/#dom-blobpropertybag-endings BlobPropertyBag.endings specification>
+getEndings :: (MonadDOM m, IsBlobPropertyBag self) => self -> m (Maybe EndingType)
+getEndings self = liftDOM ((((Types.toBlobPropertyBag self) ^. js "endings") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/FileAPI/#dom-blobpropertybag-endings BlobPropertyBag.endings specification>
+getEndingsUnsafe :: (MonadDOM m, IsBlobPropertyBag self, HasCallStack) => self -> m EndingType
+getEndingsUnsafe self = liftDOM (((((Types.toBlobPropertyBag self) ^. js "endings") >>= 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 ((((Types.toBlobPropertyBag self) ^. js "endings") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Body.hs b/src/JSDOM/Generated/Body.hs
--- a/src/JSDOM/Generated/Body.hs
+++ b/src/JSDOM/Generated/Body.hs
@@ -1,71 +1,80 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fetch (webref). Do not edit.
 module JSDOM.Generated.Body
-       (arrayBuffer, arrayBuffer_, blob, blob_, json, json_, text, text_,
-        getBodyUsed, Body(..), gTypeBody, IsBody, toBody)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.arrayBuffer Mozilla Body.arrayBuffer documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Request/arrayBuffer MDN Body.arrayBuffer documentation>
 arrayBuffer :: (MonadDOM m, IsBody self) => self -> m ArrayBuffer
-arrayBuffer self
-  = liftDOM
-      ((((toBody self) ^. jsf "arrayBuffer" ()) >>= readPromise) >>=
-         fromJSValUnchecked)
+arrayBuffer self = liftDOM ((((((Types.toBody self) ^. jsf "arrayBuffer" ()) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.arrayBuffer Mozilla Body.arrayBuffer documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Request/arrayBuffer MDN Body.arrayBuffer documentation>
 arrayBuffer_ :: (MonadDOM m, IsBody self) => self -> m ()
-arrayBuffer_ self
-  = liftDOM (void ((toBody self) ^. jsf "arrayBuffer" ()))
+arrayBuffer_ self = liftDOM (void ((((Types.toBody self) ^. jsf "arrayBuffer" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.blob Mozilla Body.blob documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Request/blob MDN Body.blob documentation>
 blob :: (MonadDOM m, IsBody self) => self -> m Blob
-blob self
-  = liftDOM
-      ((((toBody self) ^. jsf "blob" ()) >>= readPromise) >>=
-         fromJSValUnchecked)
+blob self = liftDOM ((((((Types.toBody self) ^. jsf "blob" ()) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.blob Mozilla Body.blob documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Request/blob MDN Body.blob documentation>
 blob_ :: (MonadDOM m, IsBody self) => self -> m ()
-blob_ self = liftDOM (void ((toBody self) ^. jsf "blob" ()))
+blob_ self = liftDOM (void ((((Types.toBody self) ^. jsf "blob" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.json Mozilla Body.json documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Request/bytes MDN Body.bytes documentation>
+bytes :: (MonadDOM m, IsBody self) => self -> m Uint8Array
+bytes self = liftDOM ((((((Types.toBody self) ^. jsf "bytes" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Request/bytes MDN Body.bytes documentation>
+bytes_ :: (MonadDOM m, IsBody self) => self -> m ()
+bytes_ self = liftDOM (void ((((Types.toBody self) ^. jsf "bytes" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Request/formData MDN Body.formData documentation>
+formData :: (MonadDOM m, IsBody self) => self -> m FormData
+formData self = liftDOM ((((((Types.toBody self) ^. jsf "formData" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Request/formData MDN Body.formData documentation>
+formData_ :: (MonadDOM m, IsBody self) => self -> m ()
+formData_ self = liftDOM (void ((((Types.toBody self) ^. jsf "formData" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Request/json MDN Body.json documentation>
 json :: (MonadDOM m, IsBody self) => self -> m JSVal
-json self
-  = liftDOM
-      ((((toBody self) ^. jsf "json" ()) >>= readPromise) >>= toJSVal)
+json self = liftDOM ((((Types.toBody self) ^. jsf "json" ()) >>= readPromise))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.json Mozilla Body.json documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Request/json MDN Body.json documentation>
 json_ :: (MonadDOM m, IsBody self) => self -> m ()
-json_ self = liftDOM (void ((toBody self) ^. jsf "json" ()))
+json_ self = liftDOM (void ((((Types.toBody self) ^. jsf "json" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.text Mozilla Body.text documentation> 
-text ::
-     (MonadDOM m, IsBody self, FromJSString result) => self -> m result
-text self
-  = liftDOM
-      ((((toBody self) ^. jsf "text" ()) >>= readPromise) >>=
-         fromJSValUnchecked)
+-- | <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 ((((((Types.toBody self) ^. jsf "text" ()) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.text Mozilla Body.text documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Request/text MDN Body.text documentation>
 text_ :: (MonadDOM m, IsBody self) => self -> m ()
-text_ self = liftDOM (void ((toBody self) ^. jsf "text" ()))
+text_ self = liftDOM (void ((((Types.toBody self) ^. jsf "text" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.bodyUsed Mozilla Body.bodyUsed documentation> 
+-- | <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 ((((Types.toBody self) ^. js "body") >>= fromJSValUnchecked))
+
+-- | <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 (((((Types.toBody self) ^. js "body") >>= 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 ((((Types.toBody self) ^. js "body") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Request/bodyUsed MDN Body.bodyUsed documentation>
 getBodyUsed :: (MonadDOM m, IsBody self) => self -> m Bool
-getBodyUsed self
-  = liftDOM (((toBody self) ^. js "bodyUsed") >>= valToBool)
+getBodyUsed self = liftDOM ((((Types.toBody self) ^. js "bodyUsed") >>= valToBool))
diff --git a/src/JSDOM/Generated/BroadcastChannel.hs b/src/JSDOM/Generated/BroadcastChannel.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/BroadcastChannel.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.BroadcastChannel
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/BroadcastChannel/BroadcastChannel MDN BroadcastChannel. documentation>
+newBroadcastChannel :: (MonadDOM m, ToJSString name) => name -> m BroadcastChannel
+newBroadcastChannel name = liftDOM (((new (jsg "BroadcastChannel") [toJSVal name]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BroadcastChannel/close MDN BroadcastChannel.close documentation>
+close :: (MonadDOM m) => BroadcastChannel -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BroadcastChannel/postMessage MDN BroadcastChannel.postMessage documentation>
+postMessage :: (MonadDOM m) => BroadcastChannel -> JSVal -> m ()
+postMessage self message = liftDOM (void (self ^. jsf "postMessage" [toJSVal message]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/BroadcastChannel/name MDN BroadcastChannel.name documentation>
+getName :: (MonadDOM m, FromJSString result) => BroadcastChannel -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <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/JSDOM/Generated/BrowserBoundSignature.hs b/src/JSDOM/Generated/BrowserBoundSignature.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/BrowserBoundSignature.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from secure-payment-confirmation (webref). Do not edit.
+module JSDOM.Generated.BrowserBoundSignature
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dictdef-browserboundsignature BrowserBoundSignature specification>
+newBrowserBoundSignature :: (MonadDOM m, IsArrayBuffer signature) => signature -> m BrowserBoundSignature
+newBrowserBoundSignature signature = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "signature" (toJSVal signature)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "signature" (toJSVal val)))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-browserboundsignature-signature BrowserBoundSignature.signature specification>
+getSignature :: (MonadDOM m) => BrowserBoundSignature -> m ArrayBuffer
+getSignature self = liftDOM (((self ^. js "signature") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ByteLengthQueuingStrategy.hs b/src/JSDOM/Generated/ByteLengthQueuingStrategy.hs
--- a/src/JSDOM/Generated/ByteLengthQueuingStrategy.hs
+++ b/src/JSDOM/Generated/ByteLengthQueuingStrategy.hs
@@ -1,37 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module JSDOM.Generated.ByteLengthQueuingStrategy
-       (newByteLengthQueuingStrategy, size, size_,
-        ByteLengthQueuingStrategy(..), gTypeByteLengthQueuingStrategy)
+       (newByteLengthQueuingStrategy, getHighWaterMark, getSize, ByteLengthQueuingStrategy(..), gTypeByteLengthQueuingStrategy)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ByteLengthQueuingStrategy Mozilla ByteLengthQueuingStrategy documentation> 
-newByteLengthQueuingStrategy ::
-                             (MonadDOM m) => m ByteLengthQueuingStrategy
-newByteLengthQueuingStrategy
-  = liftDOM
-      (ByteLengthQueuingStrategy <$>
-         new (jsg "ByteLengthQueuingStrategy") ())
+-- | <https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy/ByteLengthQueuingStrategy MDN ByteLengthQueuingStrategy. documentation>
+newByteLengthQueuingStrategy :: (MonadDOM m) => QueuingStrategyInit -> m ByteLengthQueuingStrategy
+newByteLengthQueuingStrategy init = liftDOM (((new (jsg "ByteLengthQueuingStrategy") [toJSVal init]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ByteLengthQueuingStrategy.size Mozilla ByteLengthQueuingStrategy.size documentation> 
-size :: (MonadDOM m) => ByteLengthQueuingStrategy -> m Double
-size self = liftDOM ((self ^. jsf "size" ()) >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy/highWaterMark MDN ByteLengthQueuingStrategy.highWaterMark documentation>
+getHighWaterMark :: (MonadDOM m) => ByteLengthQueuingStrategy -> m Double
+getHighWaterMark self = liftDOM (((self ^. js "highWaterMark") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ByteLengthQueuingStrategy.size Mozilla ByteLengthQueuingStrategy.size documentation> 
-size_ :: (MonadDOM m) => ByteLengthQueuingStrategy -> m ()
-size_ self = liftDOM (void (self ^. jsf "size" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy/size MDN ByteLengthQueuingStrategy.size documentation>
+getSize :: (MonadDOM m) => ByteLengthQueuingStrategy -> m Function
+getSize self = liftDOM (((self ^. js "size") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CDATASection.hs b/src/JSDOM/Generated/CDATASection.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CDATASection.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.CDATASection
+       (CDATASection(..), gTypeCDATASection)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/CSS.hs b/src/JSDOM/Generated/CSS.hs
--- a/src/JSDOM/Generated/CSS.hs
+++ b/src/JSDOM/Generated/CSS.hs
@@ -1,68 +1,552 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module JSDOM.Generated.CSS
-       (supports2, supports2_, supports, supports_, escape, escape_,
-        CSS(..), gTypeCSS)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
-supports2 ::
-          (MonadDOM m, ToJSString property, ToJSString value) =>
-            property -> value -> m Bool
-supports2 property value
-  = liftDOM
-      (((jsg "CSS") ^. jsf "supports" [toJSVal property, toJSVal value])
-         >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.Hz documentation>
+hz :: (MonadDOM m) => Double -> m CSSUnitValue
+hz value = liftDOM ((((jsg "CSS") ^. jsf "Hz" [toJSVal value]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
-supports2_ ::
-           (MonadDOM m, ToJSString property, ToJSString value) =>
-             property -> value -> m ()
-supports2_ property value
-  = liftDOM
-      (void
-         ((jsg "CSS") ^. jsf "supports" [toJSVal property, toJSVal value]))
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.Hz documentation>
+hz_ :: (MonadDOM m) => Double -> m ()
+hz_ value = liftDOM (void ((jsg "CSS") ^. jsf "Hz" [toJSVal value]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
-supports ::
-         (MonadDOM m, ToJSString conditionText) => conditionText -> m Bool
-supports conditionText
-  = liftDOM
-      (((jsg "CSS") ^. jsf "supports" [toJSVal conditionText]) >>=
-         valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.Q documentation>
+q :: (MonadDOM m) => Double -> m CSSUnitValue
+q value = liftDOM ((((jsg "CSS") ^. jsf "Q" [toJSVal value]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
-supports_ ::
-          (MonadDOM m, ToJSString conditionText) => conditionText -> m ()
-supports_ conditionText
-  = liftDOM
-      (void ((jsg "CSS") ^. jsf "supports" [toJSVal conditionText]))
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.Q documentation>
+q_ :: (MonadDOM m) => Double -> m ()
+q_ value = liftDOM (void ((jsg "CSS") ^. jsf "Q" [toJSVal value]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.escape Mozilla CSS.escape documentation> 
-escape ::
-       (MonadDOM m, ToJSString ident, FromJSString result) =>
-         ident -> m result
-escape ident
-  = liftDOM
-      (((jsg "CSS") ^. jsf "escape" [toJSVal ident]) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cap documentation>
+cap :: (MonadDOM m) => Double -> m CSSUnitValue
+cap value = liftDOM ((((jsg "CSS") ^. jsf "cap" [toJSVal value]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.escape Mozilla CSS.escape documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cap documentation>
+cap_ :: (MonadDOM m) => Double -> m ()
+cap_ value = liftDOM (void ((jsg "CSS") ^. jsf "cap" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ch documentation>
+ch :: (MonadDOM m) => Double -> m CSSUnitValue
+ch value = liftDOM ((((jsg "CSS") ^. jsf "ch" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ch documentation>
+ch_ :: (MonadDOM m) => Double -> m ()
+ch_ value = liftDOM (void ((jsg "CSS") ^. jsf "ch" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cm documentation>
+cm :: (MonadDOM m) => Double -> m CSSUnitValue
+cm value = liftDOM ((((jsg "CSS") ^. jsf "cm" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cm documentation>
+cm_ :: (MonadDOM m) => Double -> m ()
+cm_ value = liftDOM (void ((jsg "CSS") ^. jsf "cm" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqb documentation>
+cqb :: (MonadDOM m) => Double -> m CSSUnitValue
+cqb value = liftDOM ((((jsg "CSS") ^. jsf "cqb" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqb documentation>
+cqb_ :: (MonadDOM m) => Double -> m ()
+cqb_ value = liftDOM (void ((jsg "CSS") ^. jsf "cqb" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqh documentation>
+cqh :: (MonadDOM m) => Double -> m CSSUnitValue
+cqh value = liftDOM ((((jsg "CSS") ^. jsf "cqh" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqh documentation>
+cqh_ :: (MonadDOM m) => Double -> m ()
+cqh_ value = liftDOM (void ((jsg "CSS") ^. jsf "cqh" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqi documentation>
+cqi :: (MonadDOM m) => Double -> m CSSUnitValue
+cqi value = liftDOM ((((jsg "CSS") ^. jsf "cqi" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqi documentation>
+cqi_ :: (MonadDOM m) => Double -> m ()
+cqi_ value = liftDOM (void ((jsg "CSS") ^. jsf "cqi" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqmax documentation>
+cqmax :: (MonadDOM m) => Double -> m CSSUnitValue
+cqmax value = liftDOM ((((jsg "CSS") ^. jsf "cqmax" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqmax documentation>
+cqmax_ :: (MonadDOM m) => Double -> m ()
+cqmax_ value = liftDOM (void ((jsg "CSS") ^. jsf "cqmax" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqmin documentation>
+cqmin :: (MonadDOM m) => Double -> m CSSUnitValue
+cqmin value = liftDOM ((((jsg "CSS") ^. jsf "cqmin" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqmin documentation>
+cqmin_ :: (MonadDOM m) => Double -> m ()
+cqmin_ value = liftDOM (void ((jsg "CSS") ^. jsf "cqmin" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqw documentation>
+cqw :: (MonadDOM m) => Double -> m CSSUnitValue
+cqw value = liftDOM ((((jsg "CSS") ^. jsf "cqw" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.cqw documentation>
+cqw_ :: (MonadDOM m) => Double -> m ()
+cqw_ value = liftDOM (void ((jsg "CSS") ^. jsf "cqw" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.deg documentation>
+deg :: (MonadDOM m) => Double -> m CSSUnitValue
+deg value = liftDOM ((((jsg "CSS") ^. jsf "deg" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.deg documentation>
+deg_ :: (MonadDOM m) => Double -> m ()
+deg_ value = liftDOM (void ((jsg "CSS") ^. jsf "deg" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dpcm documentation>
+dpcm :: (MonadDOM m) => Double -> m CSSUnitValue
+dpcm value = liftDOM ((((jsg "CSS") ^. jsf "dpcm" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dpcm documentation>
+dpcm_ :: (MonadDOM m) => Double -> m ()
+dpcm_ value = liftDOM (void ((jsg "CSS") ^. jsf "dpcm" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dpi documentation>
+dpi :: (MonadDOM m) => Double -> m CSSUnitValue
+dpi value = liftDOM ((((jsg "CSS") ^. jsf "dpi" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dpi documentation>
+dpi_ :: (MonadDOM m) => Double -> m ()
+dpi_ value = liftDOM (void ((jsg "CSS") ^. jsf "dpi" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dppx documentation>
+dppx :: (MonadDOM m) => Double -> m CSSUnitValue
+dppx value = liftDOM ((((jsg "CSS") ^. jsf "dppx" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dppx documentation>
+dppx_ :: (MonadDOM m) => Double -> m ()
+dppx_ value = liftDOM (void ((jsg "CSS") ^. jsf "dppx" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvb documentation>
+dvb :: (MonadDOM m) => Double -> m CSSUnitValue
+dvb value = liftDOM ((((jsg "CSS") ^. jsf "dvb" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvb documentation>
+dvb_ :: (MonadDOM m) => Double -> m ()
+dvb_ value = liftDOM (void ((jsg "CSS") ^. jsf "dvb" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvh documentation>
+dvh :: (MonadDOM m) => Double -> m CSSUnitValue
+dvh value = liftDOM ((((jsg "CSS") ^. jsf "dvh" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvh documentation>
+dvh_ :: (MonadDOM m) => Double -> m ()
+dvh_ value = liftDOM (void ((jsg "CSS") ^. jsf "dvh" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvi documentation>
+dvi :: (MonadDOM m) => Double -> m CSSUnitValue
+dvi value = liftDOM ((((jsg "CSS") ^. jsf "dvi" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvi documentation>
+dvi_ :: (MonadDOM m) => Double -> m ()
+dvi_ value = liftDOM (void ((jsg "CSS") ^. jsf "dvi" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvmax documentation>
+dvmax :: (MonadDOM m) => Double -> m CSSUnitValue
+dvmax value = liftDOM ((((jsg "CSS") ^. jsf "dvmax" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvmax documentation>
+dvmax_ :: (MonadDOM m) => Double -> m ()
+dvmax_ value = liftDOM (void ((jsg "CSS") ^. jsf "dvmax" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvmin documentation>
+dvmin :: (MonadDOM m) => Double -> m CSSUnitValue
+dvmin value = liftDOM ((((jsg "CSS") ^. jsf "dvmin" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvmin documentation>
+dvmin_ :: (MonadDOM m) => Double -> m ()
+dvmin_ value = liftDOM (void ((jsg "CSS") ^. jsf "dvmin" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvw documentation>
+dvw :: (MonadDOM m) => Double -> m CSSUnitValue
+dvw value = liftDOM ((((jsg "CSS") ^. jsf "dvw" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.dvw documentation>
+dvw_ :: (MonadDOM m) => Double -> m ()
+dvw_ value = liftDOM (void ((jsg "CSS") ^. jsf "dvw" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.em documentation>
+em :: (MonadDOM m) => Double -> m CSSUnitValue
+em value = liftDOM ((((jsg "CSS") ^. jsf "em" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.em documentation>
+em_ :: (MonadDOM m) => Double -> m ()
+em_ value = liftDOM (void ((jsg "CSS") ^. jsf "em" [toJSVal value]))
+
+-- | <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 ((((jsg "CSS") ^. jsf "escape" [toJSVal ident]) >>= fromJSValUnchecked))
+
+-- | <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 ((jsg "CSS") ^. jsf "escape" [toJSVal ident]))
+escape_ ident = liftDOM (void ((jsg "CSS") ^. jsf "escape" [toJSVal ident]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ex documentation>
+ex :: (MonadDOM m) => Double -> m CSSUnitValue
+ex value = liftDOM ((((jsg "CSS") ^. jsf "ex" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ex documentation>
+ex_ :: (MonadDOM m) => Double -> m ()
+ex_ value = liftDOM (void ((jsg "CSS") ^. jsf "ex" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.fr documentation>
+fr :: (MonadDOM m) => Double -> m CSSUnitValue
+fr value = liftDOM ((((jsg "CSS") ^. jsf "fr" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.fr documentation>
+fr_ :: (MonadDOM m) => Double -> m ()
+fr_ value = liftDOM (void ((jsg "CSS") ^. jsf "fr" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.grad documentation>
+grad :: (MonadDOM m) => Double -> m CSSUnitValue
+grad value = liftDOM ((((jsg "CSS") ^. jsf "grad" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.grad documentation>
+grad_ :: (MonadDOM m) => Double -> m ()
+grad_ value = liftDOM (void ((jsg "CSS") ^. jsf "grad" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ic documentation>
+ic :: (MonadDOM m) => Double -> m CSSUnitValue
+ic value = liftDOM ((((jsg "CSS") ^. jsf "ic" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ic documentation>
+ic_ :: (MonadDOM m) => Double -> m ()
+ic_ value = liftDOM (void ((jsg "CSS") ^. jsf "ic" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.in documentation>
+in' :: (MonadDOM m) => Double -> m CSSUnitValue
+in' value = liftDOM ((((jsg "CSS") ^. jsf "in" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.in documentation>
+in'_ :: (MonadDOM m) => Double -> m ()
+in'_ value = liftDOM (void ((jsg "CSS") ^. jsf "in" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.kHz documentation>
+kHz :: (MonadDOM m) => Double -> m CSSUnitValue
+kHz value = liftDOM ((((jsg "CSS") ^. jsf "kHz" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.kHz documentation>
+kHz_ :: (MonadDOM m) => Double -> m ()
+kHz_ value = liftDOM (void ((jsg "CSS") ^. jsf "kHz" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lh documentation>
+lh :: (MonadDOM m) => Double -> m CSSUnitValue
+lh value = liftDOM ((((jsg "CSS") ^. jsf "lh" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lh documentation>
+lh_ :: (MonadDOM m) => Double -> m ()
+lh_ value = liftDOM (void ((jsg "CSS") ^. jsf "lh" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvb documentation>
+lvb :: (MonadDOM m) => Double -> m CSSUnitValue
+lvb value = liftDOM ((((jsg "CSS") ^. jsf "lvb" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvb documentation>
+lvb_ :: (MonadDOM m) => Double -> m ()
+lvb_ value = liftDOM (void ((jsg "CSS") ^. jsf "lvb" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvh documentation>
+lvh :: (MonadDOM m) => Double -> m CSSUnitValue
+lvh value = liftDOM ((((jsg "CSS") ^. jsf "lvh" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvh documentation>
+lvh_ :: (MonadDOM m) => Double -> m ()
+lvh_ value = liftDOM (void ((jsg "CSS") ^. jsf "lvh" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvi documentation>
+lvi :: (MonadDOM m) => Double -> m CSSUnitValue
+lvi value = liftDOM ((((jsg "CSS") ^. jsf "lvi" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvi documentation>
+lvi_ :: (MonadDOM m) => Double -> m ()
+lvi_ value = liftDOM (void ((jsg "CSS") ^. jsf "lvi" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvmax documentation>
+lvmax :: (MonadDOM m) => Double -> m CSSUnitValue
+lvmax value = liftDOM ((((jsg "CSS") ^. jsf "lvmax" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvmax documentation>
+lvmax_ :: (MonadDOM m) => Double -> m ()
+lvmax_ value = liftDOM (void ((jsg "CSS") ^. jsf "lvmax" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvmin documentation>
+lvmin :: (MonadDOM m) => Double -> m CSSUnitValue
+lvmin value = liftDOM ((((jsg "CSS") ^. jsf "lvmin" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvmin documentation>
+lvmin_ :: (MonadDOM m) => Double -> m ()
+lvmin_ value = liftDOM (void ((jsg "CSS") ^. jsf "lvmin" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvw documentation>
+lvw :: (MonadDOM m) => Double -> m CSSUnitValue
+lvw value = liftDOM ((((jsg "CSS") ^. jsf "lvw" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.lvw documentation>
+lvw_ :: (MonadDOM m) => Double -> m ()
+lvw_ value = liftDOM (void ((jsg "CSS") ^. jsf "lvw" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.mm documentation>
+mm :: (MonadDOM m) => Double -> m CSSUnitValue
+mm value = liftDOM ((((jsg "CSS") ^. jsf "mm" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.mm documentation>
+mm_ :: (MonadDOM m) => Double -> m ()
+mm_ value = liftDOM (void ((jsg "CSS") ^. jsf "mm" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ms documentation>
+ms :: (MonadDOM m) => Double -> m CSSUnitValue
+ms value = liftDOM ((((jsg "CSS") ^. jsf "ms" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ms documentation>
+ms_ :: (MonadDOM m) => Double -> m ()
+ms_ value = liftDOM (void ((jsg "CSS") ^. jsf "ms" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.number documentation>
+number :: (MonadDOM m) => Double -> m CSSUnitValue
+number value = liftDOM ((((jsg "CSS") ^. jsf "number" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.number documentation>
+number_ :: (MonadDOM m) => Double -> m ()
+number_ value = liftDOM (void ((jsg "CSS") ^. jsf "number" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.pc documentation>
+pc :: (MonadDOM m) => Double -> m CSSUnitValue
+pc value = liftDOM ((((jsg "CSS") ^. jsf "pc" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.pc documentation>
+pc_ :: (MonadDOM m) => Double -> m ()
+pc_ value = liftDOM (void ((jsg "CSS") ^. jsf "pc" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.percent documentation>
+percent :: (MonadDOM m) => Double -> m CSSUnitValue
+percent value = liftDOM ((((jsg "CSS") ^. jsf "percent" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.percent documentation>
+percent_ :: (MonadDOM m) => Double -> m ()
+percent_ value = liftDOM (void ((jsg "CSS") ^. jsf "percent" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.pt documentation>
+pt :: (MonadDOM m) => Double -> m CSSUnitValue
+pt value = liftDOM ((((jsg "CSS") ^. jsf "pt" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.pt documentation>
+pt_ :: (MonadDOM m) => Double -> m ()
+pt_ value = liftDOM (void ((jsg "CSS") ^. jsf "pt" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.px documentation>
+px :: (MonadDOM m) => Double -> m CSSUnitValue
+px value = liftDOM ((((jsg "CSS") ^. jsf "px" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.px documentation>
+px_ :: (MonadDOM m) => Double -> m ()
+px_ value = liftDOM (void ((jsg "CSS") ^. jsf "px" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rad documentation>
+rad :: (MonadDOM m) => Double -> m CSSUnitValue
+rad value = liftDOM ((((jsg "CSS") ^. jsf "rad" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rad documentation>
+rad_ :: (MonadDOM m) => Double -> m ()
+rad_ value = liftDOM (void ((jsg "CSS") ^. jsf "rad" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rcap documentation>
+rcap :: (MonadDOM m) => Double -> m CSSUnitValue
+rcap value = liftDOM ((((jsg "CSS") ^. jsf "rcap" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rcap documentation>
+rcap_ :: (MonadDOM m) => Double -> m ()
+rcap_ value = liftDOM (void ((jsg "CSS") ^. jsf "rcap" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rch documentation>
+rch :: (MonadDOM m) => Double -> m CSSUnitValue
+rch value = liftDOM ((((jsg "CSS") ^. jsf "rch" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rch documentation>
+rch_ :: (MonadDOM m) => Double -> m ()
+rch_ value = liftDOM (void ((jsg "CSS") ^. jsf "rch" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/registerProperty_static MDN CSS.registerProperty documentation>
+registerProperty :: (MonadDOM m) => PropertyDefinition -> m ()
+registerProperty definition = liftDOM (void ((jsg "CSS") ^. jsf "registerProperty" [toJSVal definition]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rem documentation>
+rem :: (MonadDOM m) => Double -> m CSSUnitValue
+rem value = liftDOM ((((jsg "CSS") ^. jsf "rem" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rem documentation>
+rem_ :: (MonadDOM m) => Double -> m ()
+rem_ value = liftDOM (void ((jsg "CSS") ^. jsf "rem" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rex documentation>
+rex :: (MonadDOM m) => Double -> m CSSUnitValue
+rex value = liftDOM ((((jsg "CSS") ^. jsf "rex" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rex documentation>
+rex_ :: (MonadDOM m) => Double -> m ()
+rex_ value = liftDOM (void ((jsg "CSS") ^. jsf "rex" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ric documentation>
+ric :: (MonadDOM m) => Double -> m CSSUnitValue
+ric value = liftDOM ((((jsg "CSS") ^. jsf "ric" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.ric documentation>
+ric_ :: (MonadDOM m) => Double -> m ()
+ric_ value = liftDOM (void ((jsg "CSS") ^. jsf "ric" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rlh documentation>
+rlh :: (MonadDOM m) => Double -> m CSSUnitValue
+rlh value = liftDOM ((((jsg "CSS") ^. jsf "rlh" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.rlh documentation>
+rlh_ :: (MonadDOM m) => Double -> m ()
+rlh_ value = liftDOM (void ((jsg "CSS") ^. jsf "rlh" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.s documentation>
+s :: (MonadDOM m) => Double -> m CSSUnitValue
+s value = liftDOM ((((jsg "CSS") ^. jsf "s" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.s documentation>
+s_ :: (MonadDOM m) => Double -> m ()
+s_ value = liftDOM (void ((jsg "CSS") ^. jsf "s" [toJSVal 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 Bool
+supports2 property value = liftDOM ((((jsg "CSS") ^. jsf "supports" [toJSVal property, toJSVal value]) >>= valToBool))
+
+-- | <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 ((jsg "CSS") ^. jsf "supports" [toJSVal property, toJSVal value]))
+
+-- | <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 ((((jsg "CSS") ^. jsf "supports" [toJSVal conditionText]) >>= valToBool))
+
+-- | <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 ((jsg "CSS") ^. jsf "supports" [toJSVal conditionText]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svb documentation>
+svb :: (MonadDOM m) => Double -> m CSSUnitValue
+svb value = liftDOM ((((jsg "CSS") ^. jsf "svb" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svb documentation>
+svb_ :: (MonadDOM m) => Double -> m ()
+svb_ value = liftDOM (void ((jsg "CSS") ^. jsf "svb" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svh documentation>
+svh :: (MonadDOM m) => Double -> m CSSUnitValue
+svh value = liftDOM ((((jsg "CSS") ^. jsf "svh" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svh documentation>
+svh_ :: (MonadDOM m) => Double -> m ()
+svh_ value = liftDOM (void ((jsg "CSS") ^. jsf "svh" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svi documentation>
+svi :: (MonadDOM m) => Double -> m CSSUnitValue
+svi value = liftDOM ((((jsg "CSS") ^. jsf "svi" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svi documentation>
+svi_ :: (MonadDOM m) => Double -> m ()
+svi_ value = liftDOM (void ((jsg "CSS") ^. jsf "svi" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svmax documentation>
+svmax :: (MonadDOM m) => Double -> m CSSUnitValue
+svmax value = liftDOM ((((jsg "CSS") ^. jsf "svmax" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svmax documentation>
+svmax_ :: (MonadDOM m) => Double -> m ()
+svmax_ value = liftDOM (void ((jsg "CSS") ^. jsf "svmax" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svmin documentation>
+svmin :: (MonadDOM m) => Double -> m CSSUnitValue
+svmin value = liftDOM ((((jsg "CSS") ^. jsf "svmin" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svmin documentation>
+svmin_ :: (MonadDOM m) => Double -> m ()
+svmin_ value = liftDOM (void ((jsg "CSS") ^. jsf "svmin" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svw documentation>
+svw :: (MonadDOM m) => Double -> m CSSUnitValue
+svw value = liftDOM ((((jsg "CSS") ^. jsf "svw" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.svw documentation>
+svw_ :: (MonadDOM m) => Double -> m ()
+svw_ value = liftDOM (void ((jsg "CSS") ^. jsf "svw" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.turn documentation>
+turn :: (MonadDOM m) => Double -> m CSSUnitValue
+turn value = liftDOM ((((jsg "CSS") ^. jsf "turn" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.turn documentation>
+turn_ :: (MonadDOM m) => Double -> m ()
+turn_ value = liftDOM (void ((jsg "CSS") ^. jsf "turn" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vb documentation>
+vb :: (MonadDOM m) => Double -> m CSSUnitValue
+vb value = liftDOM ((((jsg "CSS") ^. jsf "vb" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vb documentation>
+vb_ :: (MonadDOM m) => Double -> m ()
+vb_ value = liftDOM (void ((jsg "CSS") ^. jsf "vb" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vh documentation>
+vh :: (MonadDOM m) => Double -> m CSSUnitValue
+vh value = liftDOM ((((jsg "CSS") ^. jsf "vh" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vh documentation>
+vh_ :: (MonadDOM m) => Double -> m ()
+vh_ value = liftDOM (void ((jsg "CSS") ^. jsf "vh" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vi documentation>
+vi :: (MonadDOM m) => Double -> m CSSUnitValue
+vi value = liftDOM ((((jsg "CSS") ^. jsf "vi" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vi documentation>
+vi_ :: (MonadDOM m) => Double -> m ()
+vi_ value = liftDOM (void ((jsg "CSS") ^. jsf "vi" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vmax documentation>
+vmax :: (MonadDOM m) => Double -> m CSSUnitValue
+vmax value = liftDOM ((((jsg "CSS") ^. jsf "vmax" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vmax documentation>
+vmax_ :: (MonadDOM m) => Double -> m ()
+vmax_ value = liftDOM (void ((jsg "CSS") ^. jsf "vmax" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vmin documentation>
+vmin :: (MonadDOM m) => Double -> m CSSUnitValue
+vmin value = liftDOM ((((jsg "CSS") ^. jsf "vmin" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vmin documentation>
+vmin_ :: (MonadDOM m) => Double -> m ()
+vmin_ value = liftDOM (void ((jsg "CSS") ^. jsf "vmin" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vw documentation>
+vw :: (MonadDOM m) => Double -> m CSSUnitValue
+vw value = liftDOM ((((jsg "CSS") ^. jsf "vw" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/factory_functions_static MDN CSS.vw documentation>
+vw_ :: (MonadDOM m) => Double -> m ()
+vw_ value = liftDOM (void ((jsg "CSS") ^. jsf "vw" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSS/highlights_static MDN CSS.highlights documentation>
+getHighlights :: (MonadDOM m) => m HighlightRegistry
+getHighlights = liftDOM ((((jsg "CSS") ^. js "highlights") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSAnimation.hs b/src/JSDOM/Generated/CSSAnimation.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSAnimation.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-animations-2 (webref). Do not edit.
+module JSDOM.Generated.CSSAnimation
+       (getAnimationName, CSSAnimation(..), gTypeCSSAnimation)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSAnimation/animationName MDN CSSAnimation.animationName documentation>
+getAnimationName :: (MonadDOM m, FromJSString result) => CSSAnimation -> m result
+getAnimationName self = liftDOM (((self ^. js "animationName") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSConditionRule.hs b/src/JSDOM/Generated/CSSConditionRule.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSConditionRule.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-conditional-3 (webref). Do not edit.
+module JSDOM.Generated.CSSConditionRule
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toCSSConditionRule self) ^. js "conditionText") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSContainerCondition.hs b/src/JSDOM/Generated/CSSContainerCondition.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSContainerCondition.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-conditional-5 (webref). Do not edit.
+module JSDOM.Generated.CSSContainerCondition
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "name" (toJSVal name)) P.>> (o ^. jss "query" (toJSVal query)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "name" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-conditional-5/#dom-csscontainercondition-name CSSContainerCondition.name specification>
+getName :: (MonadDOM m, FromJSString result) => CSSContainerCondition -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "query" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-conditional-5/#dom-csscontainercondition-query CSSContainerCondition.query specification>
+getQuery :: (MonadDOM m, FromJSString result) => CSSContainerCondition -> m result
+getQuery self = liftDOM (((self ^. js "query") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSContainerRule.hs b/src/JSDOM/Generated/CSSContainerRule.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSContainerRule.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-conditional-5 (webref). Do not edit.
+module JSDOM.Generated.CSSContainerRule
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSContainerRule/containerName MDN CSSContainerRule.containerName documentation>
+getContainerName :: (MonadDOM m, FromJSString result) => CSSContainerRule -> m result
+getContainerName self = liftDOM (((self ^. js "containerName") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSContainerRule/containerQuery MDN CSSContainerRule.containerQuery documentation>
+getContainerQuery :: (MonadDOM m, FromJSString result) => CSSContainerRule -> m result
+getContainerQuery self = liftDOM (((self ^. js "containerQuery") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSContainerRule/conditions MDN CSSContainerRule.conditions documentation>
+getConditions :: (MonadDOM m) => CSSContainerRule -> m [CSSContainerCondition]
+getConditions self = liftDOM (((self ^. js "conditions") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSCounterStyleRule.hs b/src/JSDOM/Generated/CSSCounterStyleRule.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSCounterStyleRule.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-counter-styles-3 (webref). Do not edit.
+module JSDOM.Generated.CSSCounterStyleRule
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jss "name" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/name MDN CSSCounterStyleRule.name documentation>
+getName :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "system" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/system MDN CSSCounterStyleRule.system documentation>
+getSystem :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getSystem self = liftDOM (((self ^. js "system") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "symbols" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/symbols MDN CSSCounterStyleRule.symbols documentation>
+getSymbols :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getSymbols self = liftDOM (((self ^. js "symbols") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "additiveSymbols" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/additiveSymbols MDN CSSCounterStyleRule.additiveSymbols documentation>
+getAdditiveSymbols :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getAdditiveSymbols self = liftDOM (((self ^. js "additiveSymbols") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "negative" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/negative MDN CSSCounterStyleRule.negative documentation>
+getNegative :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getNegative self = liftDOM (((self ^. js "negative") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "prefix" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/prefix MDN CSSCounterStyleRule.prefix documentation>
+getPrefix :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getPrefix self = liftDOM (((self ^. js "prefix") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "suffix" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/suffix MDN CSSCounterStyleRule.suffix documentation>
+getSuffix :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getSuffix self = liftDOM (((self ^. js "suffix") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "range" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/range MDN CSSCounterStyleRule.range documentation>
+getRange :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getRange self = liftDOM (((self ^. js "range") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "pad" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/pad MDN CSSCounterStyleRule.pad documentation>
+getPad :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getPad self = liftDOM (((self ^. js "pad") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "speakAs" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/speakAs MDN CSSCounterStyleRule.speakAs documentation>
+getSpeakAs :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getSpeakAs self = liftDOM (((self ^. js "speakAs") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "fallback" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/fallback MDN CSSCounterStyleRule.fallback documentation>
+getFallback :: (MonadDOM m, FromJSString result) => CSSCounterStyleRule -> m result
+getFallback self = liftDOM (((self ^. js "fallback") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSFontFaceDescriptors.hs b/src/JSDOM/Generated/CSSFontFaceDescriptors.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSFontFaceDescriptors.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-fonts-5 (webref). Do not edit.
+module JSDOM.Generated.CSSFontFaceDescriptors
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jss "src" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-src CSSFontFaceDescriptors.src specification>
+getSrc :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getSrc self = liftDOM (((self ^. js "src") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "fontFamily" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontfamily CSSFontFaceDescriptors.fontFamily specification>
+getFontFamily :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getFontFamily self = liftDOM (((self ^. js "fontFamily") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "fontStyle" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontstyle CSSFontFaceDescriptors.fontStyle specification>
+getFontStyle :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getFontStyle self = liftDOM (((self ^. js "fontStyle") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "fontWeight" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontweight CSSFontFaceDescriptors.fontWeight specification>
+getFontWeight :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getFontWeight self = liftDOM (((self ^. js "fontWeight") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "fontStretch" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontstretch CSSFontFaceDescriptors.fontStretch specification>
+getFontStretch :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getFontStretch self = liftDOM (((self ^. js "fontStretch") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "fontWidth" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontwidth CSSFontFaceDescriptors.fontWidth specification>
+getFontWidth :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getFontWidth self = liftDOM (((self ^. js "fontWidth") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "sizeAdjust" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-sizeadjust CSSFontFaceDescriptors.sizeAdjust specification>
+getSizeAdjust :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getSizeAdjust self = liftDOM (((self ^. js "sizeAdjust") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "unicodeRange" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-unicoderange CSSFontFaceDescriptors.unicodeRange specification>
+getUnicodeRange :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getUnicodeRange self = liftDOM (((self ^. js "unicodeRange") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "fontFeatureSettings" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontfeaturesettings CSSFontFaceDescriptors.fontFeatureSettings specification>
+getFontFeatureSettings :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getFontFeatureSettings self = liftDOM (((self ^. js "fontFeatureSettings") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "fontDisplay" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-fonts-5/#dom-cssfontfacedescriptors-fontdisplay CSSFontFaceDescriptors.fontDisplay specification>
+getFontDisplay :: (MonadDOM m, FromJSString result) => CSSFontFaceDescriptors -> m result
+getFontDisplay self = liftDOM (((self ^. js "fontDisplay") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSFontFaceLoadEvent.hs b/src/JSDOM/Generated/CSSFontFaceLoadEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/CSSFontFaceLoadEvent.hs
+++ /dev/null
@@ -1,71 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.CSSFontFaceLoadEvent
-       (newCSSFontFaceLoadEvent, getFontface, getFontfaceUnsafe,
-        getFontfaceUnchecked, getError, getErrorUnsafe, getErrorUnchecked,
-        CSSFontFaceLoadEvent(..), gTypeCSSFontFaceLoadEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent Mozilla CSSFontFaceLoadEvent documentation> 
-newCSSFontFaceLoadEvent ::
-                        (MonadDOM m, ToJSString type') =>
-                          type' -> Maybe CSSFontFaceLoadEventInit -> m CSSFontFaceLoadEvent
-newCSSFontFaceLoadEvent type' eventInit
-  = liftDOM
-      (CSSFontFaceLoadEvent <$>
-         new (jsg "CSSFontFaceLoadEvent")
-           [toJSVal type', toJSVal eventInit])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.fontface Mozilla CSSFontFaceLoadEvent.fontface documentation> 
-getFontface ::
-            (MonadDOM m) => CSSFontFaceLoadEvent -> m (Maybe CSSFontFaceRule)
-getFontface self = liftDOM ((self ^. js "fontface") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.fontface Mozilla CSSFontFaceLoadEvent.fontface documentation> 
-getFontfaceUnsafe ::
-                  (MonadDOM m, HasCallStack) =>
-                    CSSFontFaceLoadEvent -> m CSSFontFaceRule
-getFontfaceUnsafe self
-  = liftDOM
-      (((self ^. js "fontface") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.fontface Mozilla CSSFontFaceLoadEvent.fontface documentation> 
-getFontfaceUnchecked ::
-                     (MonadDOM m) => CSSFontFaceLoadEvent -> m CSSFontFaceRule
-getFontfaceUnchecked self
-  = liftDOM ((self ^. js "fontface") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.error Mozilla CSSFontFaceLoadEvent.error documentation> 
-getError ::
-         (MonadDOM m) => CSSFontFaceLoadEvent -> m (Maybe DOMError)
-getError self = liftDOM ((self ^. js "error") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.error Mozilla CSSFontFaceLoadEvent.error documentation> 
-getErrorUnsafe ::
-               (MonadDOM m, HasCallStack) => CSSFontFaceLoadEvent -> m DOMError
-getErrorUnsafe self
-  = liftDOM
-      (((self ^. js "error") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.error Mozilla CSSFontFaceLoadEvent.error documentation> 
-getErrorUnchecked ::
-                  (MonadDOM m) => CSSFontFaceLoadEvent -> m DOMError
-getErrorUnchecked self
-  = liftDOM ((self ^. js "error") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/CSSFontFaceRule.hs b/src/JSDOM/Generated/CSSFontFaceRule.hs
--- a/src/JSDOM/Generated/CSSFontFaceRule.hs
+++ b/src/JSDOM/Generated/CSSFontFaceRule.hs
@@ -1,25 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-fonts-5 (webref). Do not edit.
 module JSDOM.Generated.CSSFontFaceRule
-       (getStyle, CSSFontFaceRule(..), gTypeCSSFontFaceRule) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (getStyle, CSSFontFaceRule(..), gTypeCSSFontFaceRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceRule.style Mozilla CSSFontFaceRule.style documentation> 
-getStyle ::
-         (MonadDOM m) => CSSFontFaceRule -> m CSSStyleDeclaration
-getStyle self
-  = liftDOM ((self ^. js "style") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSFontFaceRule/style MDN CSSFontFaceRule.style documentation>
+getStyle :: (MonadDOM m) => CSSFontFaceRule -> m CSSFontFaceDescriptors
+getStyle self = liftDOM (((self ^. js "style") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSFontFeatureValuesRule.hs b/src/JSDOM/Generated/CSSFontFeatureValuesRule.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSFontFeatureValuesRule.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-fonts-4 (webref). Do not edit.
+module JSDOM.Generated.CSSFontFeatureValuesRule
+       (setFontFamily, getFontFamily, CSSFontFeatureValuesRule(..), gTypeCSSFontFeatureValuesRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jss "fontFamily" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSFontFeatureValuesRule/fontFamily MDN CSSFontFeatureValuesRule.fontFamily documentation>
+getFontFamily :: (MonadDOM m, FromJSString result) => CSSFontFeatureValuesRule -> m result
+getFontFamily self = liftDOM (((self ^. js "fontFamily") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSFontPaletteValuesRule.hs b/src/JSDOM/Generated/CSSFontPaletteValuesRule.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSFontPaletteValuesRule.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-fonts-4 (webref). Do not edit.
+module JSDOM.Generated.CSSFontPaletteValuesRule
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSFontPaletteValuesRule/name MDN CSSFontPaletteValuesRule.name documentation>
+getName :: (MonadDOM m, FromJSString result) => CSSFontPaletteValuesRule -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSFontPaletteValuesRule/fontFamily MDN CSSFontPaletteValuesRule.fontFamily documentation>
+getFontFamily :: (MonadDOM m, FromJSString result) => CSSFontPaletteValuesRule -> m result
+getFontFamily self = liftDOM (((self ^. js "fontFamily") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSFontPaletteValuesRule/basePalette MDN CSSFontPaletteValuesRule.basePalette documentation>
+getBasePalette :: (MonadDOM m, FromJSString result) => CSSFontPaletteValuesRule -> m result
+getBasePalette self = liftDOM (((self ^. js "basePalette") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSFontPaletteValuesRule/overrideColors MDN CSSFontPaletteValuesRule.overrideColors documentation>
+getOverrideColors :: (MonadDOM m, FromJSString result) => CSSFontPaletteValuesRule -> m result
+getOverrideColors self = liftDOM (((self ^. js "overrideColors") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSGroupingRule.hs b/src/JSDOM/Generated/CSSGroupingRule.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSGroupingRule.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
+module JSDOM.Generated.CSSGroupingRule
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toCSSGroupingRule self) ^. jsf "deleteRule" [toJSVal index]))
+
+-- | <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.round <$> (((Types.toCSSGroupingRule self) ^. jsf "insertRule" [toJSVal rule, P.maybe (P.return jsUndefined) toJSVal index]) >>= valToNumber)))
+
+-- | <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 ((Types.toCSSGroupingRule self) ^. jsf "insertRule" [toJSVal rule, P.maybe (P.return jsUndefined) toJSVal index]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSGroupingRule/cssRules MDN CSSGroupingRule.cssRules documentation>
+getCssRules :: (MonadDOM m, IsCSSGroupingRule self) => self -> m CSSRuleList
+getCssRules self = liftDOM ((((Types.toCSSGroupingRule self) ^. js "cssRules") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSImageValue.hs b/src/JSDOM/Generated/CSSImageValue.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSImageValue.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSImageValue
+       (CSSImageValue(..), gTypeCSSImageValue)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/CSSImportRule.hs b/src/JSDOM/Generated/CSSImportRule.hs
--- a/src/JSDOM/Generated/CSSImportRule.hs
+++ b/src/JSDOM/Generated/CSSImportRule.hs
@@ -1,52 +1,60 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module JSDOM.Generated.CSSImportRule
-       (getHref, getHrefUnsafe, getHrefUnchecked, getMedia, getStyleSheet,
-        CSSImportRule(..), gTypeCSSImportRule)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.href Mozilla CSSImportRule.href documentation> 
-getHref ::
-        (MonadDOM m, FromJSString result) =>
-          CSSImportRule -> m (Maybe result)
-getHref self = liftDOM ((self ^. js "href") >>= fromMaybeJSString)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSImportRule/href MDN CSSImportRule.href documentation>
+getHref :: (MonadDOM m, FromJSString result) => CSSImportRule -> m result
+getHref self = liftDOM (((self ^. js "href") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.href Mozilla CSSImportRule.href documentation> 
-getHrefUnsafe ::
-              (MonadDOM m, HasCallStack, FromJSString result) =>
-                CSSImportRule -> m result
-getHrefUnsafe self
-  = liftDOM
-      (((self ^. js "href") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSImportRule/media MDN CSSImportRule.media documentation>
+getMedia :: (MonadDOM m) => CSSImportRule -> m MediaList
+getMedia self = liftDOM (((self ^. js "media") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.href Mozilla CSSImportRule.href documentation> 
-getHrefUnchecked ::
-                 (MonadDOM m, FromJSString result) => CSSImportRule -> m result
-getHrefUnchecked self
-  = liftDOM ((self ^. js "href") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSImportRule/styleSheet MDN CSSImportRule.styleSheet documentation>
+getStyleSheet :: (MonadDOM m) => CSSImportRule -> m (Maybe CSSStyleSheet)
+getStyleSheet self = liftDOM (((self ^. js "styleSheet") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.media Mozilla CSSImportRule.media documentation> 
-getMedia :: (MonadDOM m) => CSSImportRule -> m MediaList
-getMedia self
-  = liftDOM ((self ^. js "media") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSImportRule/styleSheet MDN CSSImportRule.styleSheet documentation>
+getStyleSheetUnsafe :: (MonadDOM m, HasCallStack) => CSSImportRule -> m CSSStyleSheet
+getStyleSheetUnsafe self = liftDOM ((((self ^. js "styleSheet") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.styleSheet Mozilla CSSImportRule.styleSheet documentation> 
-getStyleSheet :: (MonadDOM m) => CSSImportRule -> m CSSStyleSheet
-getStyleSheet self
-  = liftDOM ((self ^. js "styleSheet") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSImportRule/styleSheet MDN CSSImportRule.styleSheet documentation>
+getStyleSheetUnchecked :: (MonadDOM m) => CSSImportRule -> m CSSStyleSheet
+getStyleSheetUnchecked self = liftDOM (((self ^. js "styleSheet") >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. js "layerName") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "layerName") >>= fromMaybeJSString) >>= 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 (((self ^. js "layerName") >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. js "supportsText") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "supportsText") >>= fromMaybeJSString) >>= 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 (((self ^. js "supportsText") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSKeyframeRule.hs b/src/JSDOM/Generated/CSSKeyframeRule.hs
--- a/src/JSDOM/Generated/CSSKeyframeRule.hs
+++ b/src/JSDOM/Generated/CSSKeyframeRule.hs
@@ -1,38 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-animations-1 (webref). Do not edit.
 module JSDOM.Generated.CSSKeyframeRule
-       (setKeyText, getKeyText, getStyle, CSSKeyframeRule(..),
-        gTypeCSSKeyframeRule)
+       (setKeyText, getKeyText, getStyle, CSSKeyframeRule(..), gTypeCSSKeyframeRule)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule.keyText Mozilla CSSKeyframeRule.keyText documentation> 
-setKeyText ::
-           (MonadDOM m, ToJSString val) => CSSKeyframeRule -> val -> m ()
-setKeyText self val = liftDOM (self ^. jss "keyText" (toJSVal val))
+-- | <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 (self ^. jss "keyText" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule.keyText Mozilla CSSKeyframeRule.keyText documentation> 
-getKeyText ::
-           (MonadDOM m, FromJSString result) => CSSKeyframeRule -> m result
-getKeyText self
-  = liftDOM ((self ^. js "keyText") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframeRule/keyText MDN CSSKeyframeRule.keyText documentation>
+getKeyText :: (MonadDOM m, FromJSString result) => CSSKeyframeRule -> m result
+getKeyText self = liftDOM (((self ^. js "keyText") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule.style Mozilla CSSKeyframeRule.style documentation> 
-getStyle ::
-         (MonadDOM m) => CSSKeyframeRule -> m CSSStyleDeclaration
-getStyle self
-  = liftDOM ((self ^. js "style") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframeRule/style MDN CSSKeyframeRule.style documentation>
+getStyle :: (MonadDOM m) => CSSKeyframeRule -> m CSSStyleProperties
+getStyle self = liftDOM (((self ^. js "style") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSKeyframesRule.hs b/src/JSDOM/Generated/CSSKeyframesRule.hs
--- a/src/JSDOM/Generated/CSSKeyframesRule.hs
+++ b/src/JSDOM/Generated/CSSKeyframesRule.hs
@@ -1,97 +1,56 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-animations-1 (webref). Do not edit.
 module JSDOM.Generated.CSSKeyframesRule
-       (insertRule, appendRule, deleteRule, findRule, findRule_,
-        findRuleUnsafe, findRuleUnchecked, get, get_, setName, getName,
-        getCssRules, CSSKeyframesRule(..), gTypeCSSKeyframesRule)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.insertRule Mozilla CSSKeyframesRule.insertRule documentation> 
-insertRule ::
-           (MonadDOM m, ToJSString rule) => CSSKeyframesRule -> rule -> m ()
-insertRule self rule
-  = liftDOM (void (self ^. jsf "insertRule" [toJSVal rule]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.appendRule Mozilla CSSKeyframesRule.appendRule documentation> 
-appendRule ::
-           (MonadDOM m, ToJSString rule) => CSSKeyframesRule -> rule -> m ()
-appendRule self rule
-  = liftDOM (void (self ^. jsf "appendRule" [toJSVal rule]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.deleteRule Mozilla CSSKeyframesRule.deleteRule documentation> 
-deleteRule ::
-           (MonadDOM m, ToJSString key) => CSSKeyframesRule -> key -> m ()
-deleteRule self key
-  = liftDOM (void (self ^. jsf "deleteRule" [toJSVal key]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.findRule Mozilla CSSKeyframesRule.findRule documentation> 
-findRule ::
-         (MonadDOM m, ToJSString key) =>
-           CSSKeyframesRule -> key -> m (Maybe CSSKeyframeRule)
-findRule self key
-  = liftDOM ((self ^. jsf "findRule" [toJSVal key]) >>= fromJSVal)
+-- | <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 (self ^. jsf "appendRule" [toJSVal rule]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.findRule Mozilla CSSKeyframesRule.findRule documentation> 
-findRule_ ::
-          (MonadDOM m, ToJSString key) => CSSKeyframesRule -> key -> m ()
-findRule_ self key
-  = liftDOM (void (self ^. jsf "findRule" [toJSVal 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 (self ^. jsf "deleteRule" [toJSVal select]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.findRule Mozilla CSSKeyframesRule.findRule documentation> 
-findRuleUnsafe ::
-               (MonadDOM m, ToJSString key, HasCallStack) =>
-                 CSSKeyframesRule -> key -> m CSSKeyframeRule
-findRuleUnsafe self key
-  = liftDOM
-      (((self ^. jsf "findRule" [toJSVal key]) >>= fromJSVal) >>=
-         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 (Maybe CSSKeyframeRule)
+findRule self select = liftDOM (((self ^. jsf "findRule" [toJSVal select]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.findRule Mozilla CSSKeyframesRule.findRule documentation> 
-findRuleUnchecked ::
-                  (MonadDOM m, ToJSString key) =>
-                    CSSKeyframesRule -> key -> m CSSKeyframeRule
-findRuleUnchecked self key
-  = liftDOM
-      ((self ^. jsf "findRule" [toJSVal key]) >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "findRule" [toJSVal select]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.get Mozilla CSSKeyframesRule.get documentation> 
-get ::
-    (MonadDOM m) => CSSKeyframesRule -> Word -> m CSSKeyframeRule
-get self index
-  = liftDOM
-      ((self ^. jsf "get" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <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 ((((self ^. jsf "findRule" [toJSVal 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_ :: (MonadDOM m) => CSSKeyframesRule -> Word -> m ()
-get_ self index
-  = liftDOM (void (self ^. jsf "get" [toJSVal 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 (((self ^. jsf "findRule" [toJSVal select]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.name Mozilla CSSKeyframesRule.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => CSSKeyframesRule -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <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 (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.name Mozilla CSSKeyframesRule.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => CSSKeyframesRule -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/name MDN CSSKeyframesRule.name documentation>
+getName :: (MonadDOM m, FromJSString result) => CSSKeyframesRule -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.cssRules Mozilla CSSKeyframesRule.cssRules documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/cssRules MDN CSSKeyframesRule.cssRules documentation>
 getCssRules :: (MonadDOM m) => CSSKeyframesRule -> m CSSRuleList
-getCssRules self
-  = liftDOM ((self ^. js "cssRules") >>= fromJSValUnchecked)
+getCssRules self = liftDOM (((self ^. js "cssRules") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/length MDN CSSKeyframesRule.length documentation>
+getLength :: (MonadDOM m) => CSSKeyframesRule -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/CSSKeywordValue.hs b/src/JSDOM/Generated/CSSKeywordValue.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSKeywordValue.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSKeywordValue
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeywordValue/CSSKeywordValue MDN CSSKeywordValue. documentation>
+newCSSKeywordValue :: (MonadDOM m, ToJSString value) => value -> m CSSKeywordValue
+newCSSKeywordValue value = liftDOM (((new (jsg "CSSKeywordValue") [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "value" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSKeywordValue/value MDN CSSKeywordValue.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => CSSKeywordValue -> m result
+getValue self = liftDOM (((self ^. js "value") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSLayerBlockRule.hs b/src/JSDOM/Generated/CSSLayerBlockRule.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSLayerBlockRule.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-cascade-5 (webref). Do not edit.
+module JSDOM.Generated.CSSLayerBlockRule
+       (getName, CSSLayerBlockRule(..), gTypeCSSLayerBlockRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSLayerBlockRule/name MDN CSSLayerBlockRule.name documentation>
+getName :: (MonadDOM m, FromJSString result) => CSSLayerBlockRule -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSLayerStatementRule.hs b/src/JSDOM/Generated/CSSLayerStatementRule.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSLayerStatementRule.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-cascade-5 (webref). Do not edit.
+module JSDOM.Generated.CSSLayerStatementRule
+       (getNameList, CSSLayerStatementRule(..), gTypeCSSLayerStatementRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSLayerStatementRule/nameList MDN CSSLayerStatementRule.nameList documentation>
+getNameList :: (MonadDOM m, FromJSString result) => CSSLayerStatementRule -> m [result]
+getNameList self = liftDOM (((self ^. js "nameList") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSMathClamp.hs b/src/JSDOM/Generated/CSSMathClamp.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSMathClamp.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSMathClamp
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "CSSMathClamp") [toJSVal lower, toJSVal value, toJSVal upper]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathClamp/lower MDN CSSMathClamp.lower documentation>
+getLower :: (MonadDOM m) => CSSMathClamp -> m CSSNumericValue
+getLower self = liftDOM (((self ^. js "lower") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathClamp/value MDN CSSMathClamp.value documentation>
+getValue :: (MonadDOM m) => CSSMathClamp -> m CSSNumericValue
+getValue self = liftDOM (((self ^. js "value") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathClamp/upper MDN CSSMathClamp.upper documentation>
+getUpper :: (MonadDOM m) => CSSMathClamp -> m CSSNumericValue
+getUpper self = liftDOM (((self ^. js "upper") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSMathInvert.hs b/src/JSDOM/Generated/CSSMathInvert.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSMathInvert.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSMathInvert
+       (newCSSMathInvert, getValue, CSSMathInvert(..), gTypeCSSMathInvert)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathInvert/CSSMathInvert MDN CSSMathInvert. documentation>
+newCSSMathInvert :: (MonadDOM m, IsCSSNumberish arg) => arg -> m CSSMathInvert
+newCSSMathInvert arg = liftDOM (((new (jsg "CSSMathInvert") [toJSVal arg]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathInvert/value MDN CSSMathInvert.value documentation>
+getValue :: (MonadDOM m) => CSSMathInvert -> m CSSNumericValue
+getValue self = liftDOM (((self ^. js "value") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSMathMax.hs b/src/JSDOM/Generated/CSSMathMax.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSMathMax.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSMathMax
+       (getValues, CSSMathMax(..), gTypeCSSMathMax)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathMax/values MDN CSSMathMax.values documentation>
+getValues :: (MonadDOM m) => CSSMathMax -> m CSSNumericArray
+getValues self = liftDOM (((self ^. js "values") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSMathMin.hs b/src/JSDOM/Generated/CSSMathMin.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSMathMin.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSMathMin
+       (getValues, CSSMathMin(..), gTypeCSSMathMin)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathMin/values MDN CSSMathMin.values documentation>
+getValues :: (MonadDOM m) => CSSMathMin -> m CSSNumericArray
+getValues self = liftDOM (((self ^. js "values") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSMathNegate.hs b/src/JSDOM/Generated/CSSMathNegate.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSMathNegate.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSMathNegate
+       (newCSSMathNegate, getValue, CSSMathNegate(..), gTypeCSSMathNegate)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathNegate/CSSMathNegate MDN CSSMathNegate. documentation>
+newCSSMathNegate :: (MonadDOM m, IsCSSNumberish arg) => arg -> m CSSMathNegate
+newCSSMathNegate arg = liftDOM (((new (jsg "CSSMathNegate") [toJSVal arg]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathNegate/value MDN CSSMathNegate.value documentation>
+getValue :: (MonadDOM m) => CSSMathNegate -> m CSSNumericValue
+getValue self = liftDOM (((self ^. js "value") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSMathProduct.hs b/src/JSDOM/Generated/CSSMathProduct.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSMathProduct.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSMathProduct
+       (getValues, CSSMathProduct(..), gTypeCSSMathProduct)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathProduct/values MDN CSSMathProduct.values documentation>
+getValues :: (MonadDOM m) => CSSMathProduct -> m CSSNumericArray
+getValues self = liftDOM (((self ^. js "values") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSMathSum.hs b/src/JSDOM/Generated/CSSMathSum.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSMathSum.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSMathSum
+       (getValues, CSSMathSum(..), gTypeCSSMathSum)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathSum/values MDN CSSMathSum.values documentation>
+getValues :: (MonadDOM m) => CSSMathSum -> m CSSNumericArray
+getValues self = liftDOM (((self ^. js "values") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSMathValue.hs b/src/JSDOM/Generated/CSSMathValue.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSMathValue.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSMathValue
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMathValue/operator MDN CSSMathValue.operator documentation>
+getOperator :: (MonadDOM m, IsCSSMathValue self) => self -> m CSSMathOperator
+getOperator self = liftDOM ((((Types.toCSSMathValue self) ^. js "operator") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSMatrixComponent.hs b/src/JSDOM/Generated/CSSMatrixComponent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSMatrixComponent.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSMatrixComponent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "CSSMatrixComponent") [toJSVal matrix, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMatrixComponent/matrix MDN CSSMatrixComponent.matrix documentation>
+setMatrix :: (MonadDOM m) => CSSMatrixComponent -> DOMMatrix -> m ()
+setMatrix self val = liftDOM (void (self ^. jss "matrix" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMatrixComponent/matrix MDN CSSMatrixComponent.matrix documentation>
+getMatrix :: (MonadDOM m) => CSSMatrixComponent -> m DOMMatrix
+getMatrix self = liftDOM (((self ^. js "matrix") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSMatrixComponentOptions.hs b/src/JSDOM/Generated/CSSMatrixComponentOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSMatrixComponentOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSMatrixComponentOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dictdef-cssmatrixcomponentoptions CSSMatrixComponentOptions specification>
+newCSSMatrixComponentOptions :: (MonadDOM m) => m CSSMatrixComponentOptions
+newCSSMatrixComponentOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "is2D" (toJSVal val)))
+
+-- | <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 (((self ^. js "is2D") >>= 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 ((((self ^. js "is2D") >>= 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 (((self ^. js "is2D") >>= valToBool))
diff --git a/src/JSDOM/Generated/CSSMediaRule.hs b/src/JSDOM/Generated/CSSMediaRule.hs
--- a/src/JSDOM/Generated/CSSMediaRule.hs
+++ b/src/JSDOM/Generated/CSSMediaRule.hs
@@ -1,54 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-conditional-3 (webref). Do not edit.
 module JSDOM.Generated.CSSMediaRule
-       (insertRule, insertRule_, deleteRule, getMedia, getCssRules,
-        CSSMediaRule(..), gTypeCSSMediaRule)
+       (getMedia, CSSMediaRule(..), gTypeCSSMediaRule)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.insertRule Mozilla CSSMediaRule.insertRule documentation> 
-insertRule ::
-           (MonadDOM m, ToJSString rule) =>
-             CSSMediaRule -> Maybe rule -> Maybe Word -> m Word
-insertRule self rule index
-  = liftDOM
-      (round <$>
-         ((self ^. jsf "insertRule" [toJSVal rule, toJSVal index]) >>=
-            valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.insertRule Mozilla CSSMediaRule.insertRule documentation> 
-insertRule_ ::
-            (MonadDOM m, ToJSString rule) =>
-              CSSMediaRule -> Maybe rule -> Maybe Word -> m ()
-insertRule_ self rule index
-  = liftDOM
-      (void (self ^. jsf "insertRule" [toJSVal rule, toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.deleteRule Mozilla CSSMediaRule.deleteRule documentation> 
-deleteRule :: (MonadDOM m) => CSSMediaRule -> Maybe Word -> m ()
-deleteRule self index
-  = liftDOM (void (self ^. jsf "deleteRule" [toJSVal index]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.media Mozilla CSSMediaRule.media documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/CSSMediaRule/media MDN CSSMediaRule.media documentation>
 getMedia :: (MonadDOM m) => CSSMediaRule -> m MediaList
-getMedia self
-  = liftDOM ((self ^. js "media") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.cssRules Mozilla CSSMediaRule.cssRules documentation> 
-getCssRules :: (MonadDOM m) => CSSMediaRule -> m CSSRuleList
-getCssRules self
-  = liftDOM ((self ^. js "cssRules") >>= fromJSValUnchecked)
+getMedia self = liftDOM (((self ^. js "media") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSNamespaceRule.hs b/src/JSDOM/Generated/CSSNamespaceRule.hs
--- a/src/JSDOM/Generated/CSSNamespaceRule.hs
+++ b/src/JSDOM/Generated/CSSNamespaceRule.hs
@@ -1,33 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module JSDOM.Generated.CSSNamespaceRule
-       (getNamespaceURI, getPrefix, CSSNamespaceRule(..),
-        gTypeCSSNamespaceRule)
+       (getNamespaceURI, getPrefix, CSSNamespaceRule(..), gTypeCSSNamespaceRule)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSNamespaceRule.namespaceURI Mozilla CSSNamespaceRule.namespaceURI documentation> 
-getNamespaceURI ::
-                (MonadDOM m, FromJSString result) => CSSNamespaceRule -> m result
-getNamespaceURI self
-  = liftDOM ((self ^. js "namespaceURI") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNamespaceRule/namespaceURI MDN CSSNamespaceRule.namespaceURI documentation>
+getNamespaceURI :: (MonadDOM m, FromJSString result) => CSSNamespaceRule -> m result
+getNamespaceURI self = liftDOM (((self ^. js "namespaceURI") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSNamespaceRule.prefix Mozilla CSSNamespaceRule.prefix documentation> 
-getPrefix ::
-          (MonadDOM m, FromJSString result) => CSSNamespaceRule -> m result
-getPrefix self
-  = liftDOM ((self ^. js "prefix") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNamespaceRule/prefix MDN CSSNamespaceRule.prefix documentation>
+getPrefix :: (MonadDOM m, FromJSString result) => CSSNamespaceRule -> m result
+getPrefix self = liftDOM (((self ^. js "prefix") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSNestedDeclarations.hs b/src/JSDOM/Generated/CSSNestedDeclarations.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSNestedDeclarations.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-nesting-1 (webref). Do not edit.
+module JSDOM.Generated.CSSNestedDeclarations
+       (getStyle, CSSNestedDeclarations(..), gTypeCSSNestedDeclarations)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNestedDeclarations/style MDN CSSNestedDeclarations.style documentation>
+getStyle :: (MonadDOM m) => CSSNestedDeclarations -> m CSSStyleProperties
+getStyle self = liftDOM (((self ^. js "style") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSNumericArray.hs b/src/JSDOM/Generated/CSSNumericArray.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSNumericArray.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSNumericArray
+       (getLength, CSSNumericArray(..), gTypeCSSNumericArray)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericArray/length MDN CSSNumericArray.length documentation>
+getLength :: (MonadDOM m) => CSSNumericArray -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/CSSNumericType.hs b/src/JSDOM/Generated/CSSNumericType.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSNumericType.hs
@@ -0,0 +1,148 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSNumericType
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.css-houdini.org/css-typed-om-1/#dictdef-cssnumerictype CSSNumericType specification>
+newCSSNumericType :: (MonadDOM m) => m CSSNumericType
+newCSSNumericType = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "length" (toJSVal val)))
+
+-- | <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 (((self ^. js "length") >>= 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 ((((self ^. js "length") >>= 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 ((P.round <$> ((self ^. js "length") >>= valToNumber)))
+
+-- | <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 (self ^. jss "angle" (toJSVal val)))
+
+-- | <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 (((self ^. js "angle") >>= 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 ((((self ^. js "angle") >>= 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 ((P.round <$> ((self ^. js "angle") >>= valToNumber)))
+
+-- | <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 (self ^. jss "time" (toJSVal val)))
+
+-- | <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 (((self ^. js "time") >>= 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 ((((self ^. js "time") >>= 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 ((P.round <$> ((self ^. js "time") >>= valToNumber)))
+
+-- | <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 (self ^. jss "frequency" (toJSVal val)))
+
+-- | <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 (((self ^. js "frequency") >>= 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 ((((self ^. js "frequency") >>= 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 ((P.round <$> ((self ^. js "frequency") >>= valToNumber)))
+
+-- | <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 (self ^. jss "resolution" (toJSVal val)))
+
+-- | <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 (((self ^. js "resolution") >>= 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 ((((self ^. js "resolution") >>= 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 ((P.round <$> ((self ^. js "resolution") >>= valToNumber)))
+
+-- | <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 (self ^. jss "flex" (toJSVal val)))
+
+-- | <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 (((self ^. js "flex") >>= 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 ((((self ^. js "flex") >>= 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 ((P.round <$> ((self ^. js "flex") >>= valToNumber)))
+
+-- | <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 (self ^. jss "percent" (toJSVal val)))
+
+-- | <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 (((self ^. js "percent") >>= 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 ((((self ^. js "percent") >>= 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 ((P.round <$> ((self ^. js "percent") >>= valToNumber)))
+
+-- | <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 (self ^. jss "percentHint" (toJSVal val)))
+
+-- | <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 (((self ^. js "percentHint") >>= 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 ((((self ^. js "percentHint") >>= 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 (((self ^. js "percentHint") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSNumericValue.hs b/src/JSDOM/Generated/CSSNumericValue.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSNumericValue.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSNumericValue
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toCSSNumericValue self) ^. jsf "add" ([] ++ P.map toJSVal values)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCSSNumericValue self) ^. jsf "add" ([] ++ P.map toJSVal values)))
+
+-- | <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 ((((Types.toCSSNumericValue self) ^. jsf "div" ([] ++ P.map toJSVal values)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCSSNumericValue self) ^. jsf "div" ([] ++ P.map toJSVal values)))
+
+-- | <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 ((((Types.toCSSNumericValue self) ^. jsf "equals" ([] ++ P.map toJSVal value)) >>= valToBool))
+
+-- | <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 ((Types.toCSSNumericValue self) ^. jsf "equals" ([] ++ P.map toJSVal value)))
+
+-- | <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 ((((Types.toCSSNumericValue self) ^. jsf "max" ([] ++ P.map toJSVal values)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCSSNumericValue self) ^. jsf "max" ([] ++ P.map toJSVal values)))
+
+-- | <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 ((((Types.toCSSNumericValue self) ^. jsf "min" ([] ++ P.map toJSVal values)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCSSNumericValue self) ^. jsf "min" ([] ++ P.map toJSVal values)))
+
+-- | <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 ((((Types.toCSSNumericValue self) ^. jsf "mul" ([] ++ P.map toJSVal values)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCSSNumericValue self) ^. jsf "mul" ([] ++ P.map toJSVal values)))
+
+-- | <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 ((((Types.toCSSNumericValue self) ^. jsf "sub" ([] ++ P.map toJSVal values)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCSSNumericValue self) ^. jsf "sub" ([] ++ P.map toJSVal values)))
+
+-- | <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 ((((Types.toCSSNumericValue self) ^. jsf "to" [toJSVal unit]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCSSNumericValue self) ^. jsf "to" [toJSVal unit]))
+
+-- | <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 ((((Types.toCSSNumericValue self) ^. jsf "toSum" ([] ++ P.map toJSVal units)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCSSNumericValue self) ^. jsf "toSum" ([] ++ P.map toJSVal units)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/type MDN CSSNumericValue.type documentation>
+type' :: (MonadDOM m, IsCSSNumericValue self) => self -> m CSSNumericType
+type' self = liftDOM ((((Types.toCSSNumericValue self) ^. jsf "type" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSNumericValue/type MDN CSSNumericValue.type documentation>
+type'_ :: (MonadDOM m, IsCSSNumericValue self) => self -> m ()
+type'_ self = liftDOM (void ((Types.toCSSNumericValue self) ^. jsf "type" ()))
+
+-- | <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 ((((jsg "CSSNumericValue") ^. jsf "parse" [toJSVal cssText]) >>= fromJSValUnchecked))
+
+-- | <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 ((jsg "CSSNumericValue") ^. jsf "parse" [toJSVal cssText]))
diff --git a/src/JSDOM/Generated/CSSPageDescriptors.hs b/src/JSDOM/Generated/CSSPageDescriptors.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSPageDescriptors.hs
@@ -0,0 +1,64 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
+module JSDOM.Generated.CSSPageDescriptors
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jss "margin" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#margin MDN CSSPageDescriptors.margin documentation>
+getMargin :: (MonadDOM m, FromJSString result) => CSSPageDescriptors -> m result
+getMargin self = liftDOM (((self ^. js "margin") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "marginTop" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#margintop MDN CSSPageDescriptors.marginTop documentation>
+getMarginTop :: (MonadDOM m, FromJSString result) => CSSPageDescriptors -> m result
+getMarginTop self = liftDOM (((self ^. js "marginTop") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "marginRight" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#marginright MDN CSSPageDescriptors.marginRight documentation>
+getMarginRight :: (MonadDOM m, FromJSString result) => CSSPageDescriptors -> m result
+getMarginRight self = liftDOM (((self ^. js "marginRight") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "marginBottom" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#marginbottom MDN CSSPageDescriptors.marginBottom documentation>
+getMarginBottom :: (MonadDOM m, FromJSString result) => CSSPageDescriptors -> m result
+getMarginBottom self = liftDOM (((self ^. js "marginBottom") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "marginLeft" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#marginleft MDN CSSPageDescriptors.marginLeft documentation>
+getMarginLeft :: (MonadDOM m, FromJSString result) => CSSPageDescriptors -> m result
+getMarginLeft self = liftDOM (((self ^. js "marginLeft") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "size" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageDescriptors#size MDN CSSPageDescriptors.size documentation>
+getSize :: (MonadDOM m, FromJSString result) => CSSPageDescriptors -> m result
+getSize self = liftDOM (((self ^. js "size") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSPageRule.hs b/src/JSDOM/Generated/CSSPageRule.hs
--- a/src/JSDOM/Generated/CSSPageRule.hs
+++ b/src/JSDOM/Generated/CSSPageRule.hs
@@ -1,55 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module JSDOM.Generated.CSSPageRule
-       (setSelectorText, getSelectorText, getSelectorTextUnsafe,
-        getSelectorTextUnchecked, getStyle, CSSPageRule(..),
-        gTypeCSSPageRule)
+       (setSelectorText, getSelectorText, getStyle, CSSPageRule(..), gTypeCSSPageRule)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
-setSelectorText ::
-                (MonadDOM m, ToJSString val) => CSSPageRule -> Maybe val -> m ()
-setSelectorText self val
-  = liftDOM (self ^. jss "selectorText" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
-getSelectorText ::
-                (MonadDOM m, FromJSString result) =>
-                  CSSPageRule -> m (Maybe result)
-getSelectorText self
-  = liftDOM ((self ^. js "selectorText") >>= fromMaybeJSString)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
-getSelectorTextUnsafe ::
-                      (MonadDOM m, HasCallStack, FromJSString result) =>
-                        CSSPageRule -> m result
-getSelectorTextUnsafe self
-  = liftDOM
-      (((self ^. js "selectorText") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (self ^. jss "selectorText" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
-getSelectorTextUnchecked ::
-                         (MonadDOM m, FromJSString result) => CSSPageRule -> m result
-getSelectorTextUnchecked self
-  = liftDOM ((self ^. js "selectorText") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageRule/selectorText MDN CSSPageRule.selectorText documentation>
+getSelectorText :: (MonadDOM m, FromJSString result) => CSSPageRule -> m result
+getSelectorText self = liftDOM (((self ^. js "selectorText") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.style Mozilla CSSPageRule.style documentation> 
-getStyle :: (MonadDOM m) => CSSPageRule -> m CSSStyleDeclaration
-getStyle self
-  = liftDOM ((self ^. js "style") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPageRule/style MDN CSSPageRule.style documentation>
+getStyle :: (MonadDOM m) => CSSPageRule -> m CSSPageDescriptors
+getStyle self = liftDOM (((self ^. js "style") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSPerspective.hs b/src/JSDOM/Generated/CSSPerspective.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSPerspective.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSPerspective
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPerspective/CSSPerspective MDN CSSPerspective. documentation>
+newCSSPerspective :: (MonadDOM m, IsCSSPerspectiveValue length) => length -> m CSSPerspective
+newCSSPerspective length = liftDOM (((new (jsg "CSSPerspective") [toJSVal length]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "length" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPerspective/length MDN CSSPerspective.length documentation>
+getLength :: (MonadDOM m) => CSSPerspective -> m CSSPerspectiveValue
+getLength self = liftDOM (((self ^. js "length") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSPositionTryDescriptors.hs b/src/JSDOM/Generated/CSSPositionTryDescriptors.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSPositionTryDescriptors.hs
@@ -0,0 +1,328 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-anchor-position-1 (webref). Do not edit.
+module JSDOM.Generated.CSSPositionTryDescriptors
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jss "margin" (toJSVal val)))
+
+-- | <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 (((self ^. js "margin") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "marginTop" (toJSVal val)))
+
+-- | <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 (((self ^. js "marginTop") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "marginRight" (toJSVal val)))
+
+-- | <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 (((self ^. js "marginRight") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "marginBottom" (toJSVal val)))
+
+-- | <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 (((self ^. js "marginBottom") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "marginLeft" (toJSVal val)))
+
+-- | <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 (((self ^. js "marginLeft") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "marginBlock" (toJSVal val)))
+
+-- | <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 (((self ^. js "marginBlock") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "marginBlockStart" (toJSVal val)))
+
+-- | <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 (((self ^. js "marginBlockStart") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "marginBlockEnd" (toJSVal val)))
+
+-- | <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 (((self ^. js "marginBlockEnd") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "marginInline" (toJSVal val)))
+
+-- | <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 (((self ^. js "marginInline") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "marginInlineStart" (toJSVal val)))
+
+-- | <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 (((self ^. js "marginInlineStart") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "marginInlineEnd" (toJSVal val)))
+
+-- | <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 (((self ^. js "marginInlineEnd") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "inset" (toJSVal val)))
+
+-- | <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 (((self ^. js "inset") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "insetBlock" (toJSVal val)))
+
+-- | <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 (((self ^. js "insetBlock") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "insetBlockStart" (toJSVal val)))
+
+-- | <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 (((self ^. js "insetBlockStart") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "insetBlockEnd" (toJSVal val)))
+
+-- | <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 (((self ^. js "insetBlockEnd") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "insetInline" (toJSVal val)))
+
+-- | <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 (((self ^. js "insetInline") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "insetInlineStart" (toJSVal val)))
+
+-- | <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 (((self ^. js "insetInlineStart") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "insetInlineEnd" (toJSVal val)))
+
+-- | <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 (((self ^. js "insetInlineEnd") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "top" (toJSVal val)))
+
+-- | <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 (((self ^. js "top") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "left" (toJSVal val)))
+
+-- | <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 (((self ^. js "left") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "right" (toJSVal val)))
+
+-- | <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 (((self ^. js "right") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "bottom" (toJSVal val)))
+
+-- | <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 (((self ^. js "bottom") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "width" (toJSVal val)))
+
+-- | <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 (((self ^. js "width") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "minWidth" (toJSVal val)))
+
+-- | <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 (((self ^. js "minWidth") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "maxWidth" (toJSVal val)))
+
+-- | <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 (((self ^. js "maxWidth") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "height" (toJSVal val)))
+
+-- | <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 (((self ^. js "height") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "minHeight" (toJSVal val)))
+
+-- | <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 (((self ^. js "minHeight") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "maxHeight" (toJSVal val)))
+
+-- | <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 (((self ^. js "maxHeight") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "blockSize" (toJSVal val)))
+
+-- | <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 (((self ^. js "blockSize") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "minBlockSize" (toJSVal val)))
+
+-- | <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 (((self ^. js "minBlockSize") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "maxBlockSize" (toJSVal val)))
+
+-- | <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 (((self ^. js "maxBlockSize") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "inlineSize" (toJSVal val)))
+
+-- | <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 (((self ^. js "inlineSize") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "minInlineSize" (toJSVal val)))
+
+-- | <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 (((self ^. js "minInlineSize") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "maxInlineSize" (toJSVal val)))
+
+-- | <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 (((self ^. js "maxInlineSize") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "placeSelf" (toJSVal val)))
+
+-- | <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 (((self ^. js "placeSelf") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "alignSelf" (toJSVal val)))
+
+-- | <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 (((self ^. js "alignSelf") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "justifySelf" (toJSVal val)))
+
+-- | <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 (((self ^. js "justifySelf") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "positionAnchor" (toJSVal val)))
+
+-- | <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 (((self ^. js "positionAnchor") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "positionArea" (toJSVal val)))
+
+-- | <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 (((self ^. js "positionArea") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSPositionTryRule.hs b/src/JSDOM/Generated/CSSPositionTryRule.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSPositionTryRule.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-anchor-position-1 (webref). Do not edit.
+module JSDOM.Generated.CSSPositionTryRule
+       (getName, getStyle, CSSPositionTryRule(..), gTypeCSSPositionTryRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryRule/name MDN CSSPositionTryRule.name documentation>
+getName :: (MonadDOM m, FromJSString result) => CSSPositionTryRule -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPositionTryRule/style MDN CSSPositionTryRule.style documentation>
+getStyle :: (MonadDOM m) => CSSPositionTryRule -> m CSSPositionTryDescriptors
+getStyle self = liftDOM (((self ^. js "style") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSPrimitiveValue.hs b/src/JSDOM/Generated/CSSPrimitiveValue.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/CSSPrimitiveValue.hs
+++ /dev/null
@@ -1,145 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.CSSPrimitiveValue
-       (setFloatValue, getFloatValue, getFloatValue_, setStringValue,
-        getStringValue, getStringValue_, getCounterValue, getCounterValue_,
-        getRectValue, getRectValue_, 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,
-        getPrimitiveType, CSSPrimitiveValue(..), gTypeCSSPrimitiveValue)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.setFloatValue Mozilla CSSPrimitiveValue.setFloatValue documentation> 
-setFloatValue ::
-              (MonadDOM m) =>
-                CSSPrimitiveValue -> Maybe Word -> Maybe Float -> m ()
-setFloatValue self unitType floatValue
-  = liftDOM
-      (void
-         (self ^. jsf "setFloatValue"
-            [toJSVal unitType, toJSVal floatValue]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getFloatValue Mozilla CSSPrimitiveValue.getFloatValue documentation> 
-getFloatValue ::
-              (MonadDOM m) => CSSPrimitiveValue -> Maybe Word -> m Float
-getFloatValue self unitType
-  = liftDOM
-      (realToFrac <$>
-         ((self ^. jsf "getFloatValue" [toJSVal unitType]) >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getFloatValue Mozilla CSSPrimitiveValue.getFloatValue documentation> 
-getFloatValue_ ::
-               (MonadDOM m) => CSSPrimitiveValue -> Maybe Word -> m ()
-getFloatValue_ self unitType
-  = liftDOM (void (self ^. jsf "getFloatValue" [toJSVal unitType]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.setStringValue Mozilla CSSPrimitiveValue.setStringValue documentation> 
-setStringValue ::
-               (MonadDOM m, ToJSString stringValue) =>
-                 CSSPrimitiveValue -> Maybe Word -> Maybe stringValue -> m ()
-setStringValue self stringType stringValue
-  = liftDOM
-      (void
-         (self ^. jsf "setStringValue"
-            [toJSVal stringType, toJSVal stringValue]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getStringValue Mozilla CSSPrimitiveValue.getStringValue documentation> 
-getStringValue ::
-               (MonadDOM m, FromJSString result) => CSSPrimitiveValue -> m result
-getStringValue self
-  = liftDOM
-      ((self ^. jsf "getStringValue" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getStringValue Mozilla CSSPrimitiveValue.getStringValue documentation> 
-getStringValue_ :: (MonadDOM m) => CSSPrimitiveValue -> m ()
-getStringValue_ self
-  = liftDOM (void (self ^. jsf "getStringValue" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getCounterValue Mozilla CSSPrimitiveValue.getCounterValue documentation> 
-getCounterValue :: (MonadDOM m) => CSSPrimitiveValue -> m Counter
-getCounterValue self
-  = liftDOM
-      ((self ^. jsf "getCounterValue" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getCounterValue Mozilla CSSPrimitiveValue.getCounterValue documentation> 
-getCounterValue_ :: (MonadDOM m) => CSSPrimitiveValue -> m ()
-getCounterValue_ self
-  = liftDOM (void (self ^. jsf "getCounterValue" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRectValue Mozilla CSSPrimitiveValue.getRectValue documentation> 
-getRectValue :: (MonadDOM m) => CSSPrimitiveValue -> m Rect
-getRectValue self
-  = liftDOM ((self ^. jsf "getRectValue" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRectValue Mozilla CSSPrimitiveValue.getRectValue documentation> 
-getRectValue_ :: (MonadDOM m) => CSSPrimitiveValue -> m ()
-getRectValue_ self = liftDOM (void (self ^. jsf "getRectValue" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRGBColorValue Mozilla CSSPrimitiveValue.getRGBColorValue documentation> 
-getRGBColorValue :: (MonadDOM m) => CSSPrimitiveValue -> m RGBColor
-getRGBColorValue self
-  = liftDOM
-      ((self ^. jsf "getRGBColorValue" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRGBColorValue Mozilla CSSPrimitiveValue.getRGBColorValue documentation> 
-getRGBColorValue_ :: (MonadDOM m) => CSSPrimitiveValue -> m ()
-getRGBColorValue_ self
-  = liftDOM (void (self ^. jsf "getRGBColorValue" ()))
-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
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.primitiveType Mozilla CSSPrimitiveValue.primitiveType documentation> 
-getPrimitiveType :: (MonadDOM m) => CSSPrimitiveValue -> m Word
-getPrimitiveType self
-  = liftDOM
-      (round <$> ((self ^. js "primitiveType") >>= valToNumber))
diff --git a/src/JSDOM/Generated/CSSPropertyRule.hs b/src/JSDOM/Generated/CSSPropertyRule.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSPropertyRule.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# 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 JSDOM.Generated.CSSPropertyRule
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPropertyRule/name MDN CSSPropertyRule.name documentation>
+getName :: (MonadDOM m, FromJSString result) => CSSPropertyRule -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPropertyRule/syntax MDN CSSPropertyRule.syntax documentation>
+getSyntax :: (MonadDOM m, FromJSString result) => CSSPropertyRule -> m result
+getSyntax self = liftDOM (((self ^. js "syntax") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSPropertyRule/inherits MDN CSSPropertyRule.inherits documentation>
+getInherits :: (MonadDOM m) => CSSPropertyRule -> m Bool
+getInherits self = liftDOM (((self ^. js "inherits") >>= valToBool))
+
+-- | <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 (((self ^. js "initialValue") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "initialValue") >>= fromMaybeJSString) >>= 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 (((self ^. js "initialValue") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSRotate.hs b/src/JSDOM/Generated/CSSRotate.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSRotate.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSRotate
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRotate/CSSRotate MDN CSSRotate. documentation>
+newCSSRotate :: (MonadDOM m, IsCSSNumericValue angle) => angle -> m CSSRotate
+newCSSRotate angle = liftDOM (((new (jsg "CSSRotate") [toJSVal angle]) >>= fromJSValUnchecked))
+
+-- | <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 (((new (jsg "CSSRotate") [toJSVal x, toJSVal y, toJSVal z, toJSVal angle]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "x" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRotate/x MDN CSSRotate.x documentation>
+getX :: (MonadDOM m) => CSSRotate -> m CSSNumberish
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "y" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRotate/y MDN CSSRotate.y documentation>
+getY :: (MonadDOM m) => CSSRotate -> m CSSNumberish
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "z" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRotate/z MDN CSSRotate.z documentation>
+getZ :: (MonadDOM m) => CSSRotate -> m CSSNumberish
+getZ self = liftDOM (((self ^. js "z") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "angle" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRotate/angle MDN CSSRotate.angle documentation>
+getAngle :: (MonadDOM m) => CSSRotate -> m CSSNumericValue
+getAngle self = liftDOM (((self ^. js "angle") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSRule.hs b/src/JSDOM/Generated/CSSRule.hs
--- a/src/JSDOM/Generated/CSSRule.hs
+++ b/src/JSDOM/Generated/CSSRule.hs
@@ -1,128 +1,78 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module JSDOM.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,
-        getType, setCssText, getCssText, getCssTextUnsafe,
-        getCssTextUnchecked, getParentStyleSheet,
-        getParentStyleSheetUnsafe, getParentStyleSheetUnchecked,
-        getParentRule, getParentRuleUnsafe, getParentRuleUnchecked,
-        CSSRule(..), gTypeCSSRule, IsCSSRule, toCSSRule)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-pattern UNKNOWN_RULE = 0
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toCSSRule self) ^. jss "cssText" (toJSVal val)))
+
+-- | <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 ((((Types.toCSSRule self) ^. js "cssText") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toCSSRule self) ^. js "parentRule") >>= fromJSValUnchecked))
+
+-- | <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 (((((Types.toCSSRule self) ^. js "parentRule") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRule/parentRule MDN CSSRule.parentRule documentation>
+getParentRuleUnchecked :: (MonadDOM m, IsCSSRule self) => self -> m CSSRule
+getParentRuleUnchecked self = liftDOM ((((Types.toCSSRule self) ^. js "parentRule") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toCSSRule self) ^. js "parentStyleSheet") >>= fromJSValUnchecked))
+
+-- | <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 (((((Types.toCSSRule self) ^. js "parentStyleSheet") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.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 ((((Types.toCSSRule self) ^. js "parentStyleSheet") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRule/type MDN CSSRule.type documentation>
+getType :: (MonadDOM m, IsCSSRule self) => self -> m Word
+getType self = liftDOM ((P.round <$> (((Types.toCSSRule self) ^. js "type") >>= valToNumber)))
+
 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
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.type Mozilla CSSRule.type documentation> 
-getType :: (MonadDOM m, IsCSSRule self) => self -> m Word
-getType self
-  = liftDOM
-      (round <$> (((toCSSRule self) ^. js "type") >>= valToNumber))
+pattern IMPORT_RULE = 3
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
-setCssText ::
-           (MonadDOM m, IsCSSRule self, ToJSString val) =>
-             self -> Maybe val -> m ()
-setCssText self val
-  = liftDOM ((toCSSRule self) ^. jss "cssText" (toJSVal val))
+pattern MEDIA_RULE = 4
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
-getCssText ::
-           (MonadDOM m, IsCSSRule self, FromJSString result) =>
-             self -> m (Maybe result)
-getCssText self
-  = liftDOM
-      (((toCSSRule self) ^. js "cssText") >>= fromMaybeJSString)
+pattern FONT_FACE_RULE = 5
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
-getCssTextUnsafe ::
-                 (MonadDOM m, IsCSSRule self, HasCallStack, FromJSString result) =>
-                   self -> m result
-getCssTextUnsafe self
-  = liftDOM
-      ((((toCSSRule self) ^. js "cssText") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+pattern PAGE_RULE = 6
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
-getCssTextUnchecked ::
-                    (MonadDOM m, IsCSSRule self, FromJSString result) =>
-                      self -> m result
-getCssTextUnchecked self
-  = liftDOM
-      (((toCSSRule self) ^. js "cssText") >>= fromJSValUnchecked)
+pattern MARGIN_RULE = 9
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentStyleSheet Mozilla CSSRule.parentStyleSheet documentation> 
-getParentStyleSheet ::
-                    (MonadDOM m, IsCSSRule self) => self -> m (Maybe CSSStyleSheet)
-getParentStyleSheet self
-  = liftDOM
-      (((toCSSRule self) ^. js "parentStyleSheet") >>= fromJSVal)
+pattern NAMESPACE_RULE = 10
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentStyleSheet Mozilla CSSRule.parentStyleSheet documentation> 
-getParentStyleSheetUnsafe ::
-                          (MonadDOM m, IsCSSRule self, HasCallStack) =>
-                            self -> m CSSStyleSheet
-getParentStyleSheetUnsafe self
-  = liftDOM
-      ((((toCSSRule self) ^. js "parentStyleSheet") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+pattern KEYFRAMES_RULE = 7
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentStyleSheet Mozilla CSSRule.parentStyleSheet documentation> 
-getParentStyleSheetUnchecked ::
-                             (MonadDOM m, IsCSSRule self) => self -> m CSSStyleSheet
-getParentStyleSheetUnchecked self
-  = liftDOM
-      (((toCSSRule self) ^. js "parentStyleSheet") >>=
-         fromJSValUnchecked)
+pattern KEYFRAME_RULE = 8
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentRule Mozilla CSSRule.parentRule documentation> 
-getParentRule ::
-              (MonadDOM m, IsCSSRule self) => self -> m (Maybe CSSRule)
-getParentRule self
-  = liftDOM (((toCSSRule self) ^. js "parentRule") >>= fromJSVal)
+pattern SUPPORTS_RULE = 12
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentRule Mozilla CSSRule.parentRule documentation> 
-getParentRuleUnsafe ::
-                    (MonadDOM m, IsCSSRule self, HasCallStack) => self -> m CSSRule
-getParentRuleUnsafe self
-  = liftDOM
-      ((((toCSSRule self) ^. js "parentRule") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+pattern COUNTER_STYLE_RULE = 11
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentRule Mozilla CSSRule.parentRule documentation> 
-getParentRuleUnchecked ::
-                       (MonadDOM m, IsCSSRule self) => self -> m CSSRule
-getParentRuleUnchecked self
-  = liftDOM
-      (((toCSSRule self) ^. js "parentRule") >>= fromJSValUnchecked)
+pattern FONT_FEATURE_VALUES_RULE = 14
diff --git a/src/JSDOM/Generated/CSSRuleList.hs b/src/JSDOM/Generated/CSSRuleList.hs
--- a/src/JSDOM/Generated/CSSRuleList.hs
+++ b/src/JSDOM/Generated/CSSRuleList.hs
@@ -1,35 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module JSDOM.Generated.CSSRuleList
-       (item, item_, getLength, CSSRuleList(..), gTypeCSSRuleList) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (item, item_, itemUnsafe, itemUnchecked, getLength, CSSRuleList(..), gTypeCSSRuleList)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList.item Mozilla CSSRuleList.item documentation> 
-item :: (MonadDOM m) => CSSRuleList -> Word -> m CSSRule
-item self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList.item Mozilla CSSRuleList.item documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRuleList/item MDN CSSRuleList.item documentation>
 item_ :: (MonadDOM m) => CSSRuleList -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+item_ self index = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList.length Mozilla CSSRuleList.length documentation> 
+-- | <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 ((((self ^. jsf "item" [toJSVal 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 (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSRuleList/length MDN CSSRuleList.length documentation>
 getLength :: (MonadDOM m) => CSSRuleList -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/CSSScale.hs b/src/JSDOM/Generated/CSSScale.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSScale.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSScale
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "CSSScale") [toJSVal x, toJSVal y, P.maybe (P.return jsUndefined) toJSVal z]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "x" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSScale/x MDN CSSScale.x documentation>
+getX :: (MonadDOM m) => CSSScale -> m CSSNumberish
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "y" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSScale/y MDN CSSScale.y documentation>
+getY :: (MonadDOM m) => CSSScale -> m CSSNumberish
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "z" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSScale/z MDN CSSScale.z documentation>
+getZ :: (MonadDOM m) => CSSScale -> m CSSNumberish
+getZ self = liftDOM (((self ^. js "z") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSScopeRule.hs b/src/JSDOM/Generated/CSSScopeRule.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSScopeRule.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-cascade-6 (webref). Do not edit.
+module JSDOM.Generated.CSSScopeRule
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. js "start") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "start") >>= fromMaybeJSString) >>= 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 (((self ^. js "start") >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. js "end") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "end") >>= fromMaybeJSString) >>= 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 (((self ^. js "end") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSSkew.hs b/src/JSDOM/Generated/CSSSkew.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSSkew.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSSkew
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "CSSSkew") [toJSVal ax, toJSVal ay]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "ax" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSSkew/ax MDN CSSSkew.ax documentation>
+getAx :: (MonadDOM m) => CSSSkew -> m CSSNumericValue
+getAx self = liftDOM (((self ^. js "ax") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "ay" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSSkew/ay MDN CSSSkew.ay documentation>
+getAy :: (MonadDOM m) => CSSSkew -> m CSSNumericValue
+getAy self = liftDOM (((self ^. js "ay") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSSkewX.hs b/src/JSDOM/Generated/CSSSkewX.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSSkewX.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSSkewX
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSSkewX/CSSSkewX MDN CSSSkewX. documentation>
+newCSSSkewX :: (MonadDOM m, IsCSSNumericValue ax) => ax -> m CSSSkewX
+newCSSSkewX ax = liftDOM (((new (jsg "CSSSkewX") [toJSVal ax]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "ax" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSSkewX/ax MDN CSSSkewX.ax documentation>
+getAx :: (MonadDOM m) => CSSSkewX -> m CSSNumericValue
+getAx self = liftDOM (((self ^. js "ax") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSSkewY.hs b/src/JSDOM/Generated/CSSSkewY.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSSkewY.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSSkewY
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSSkewY/CSSSkewY MDN CSSSkewY. documentation>
+newCSSSkewY :: (MonadDOM m, IsCSSNumericValue ay) => ay -> m CSSSkewY
+newCSSSkewY ay = liftDOM (((new (jsg "CSSSkewY") [toJSVal ay]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "ay" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSSkewY/ay MDN CSSSkewY.ay documentation>
+getAy :: (MonadDOM m) => CSSSkewY -> m CSSNumericValue
+getAy self = liftDOM (((self ^. js "ay") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSStartingStyleRule.hs b/src/JSDOM/Generated/CSSStartingStyleRule.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSStartingStyleRule.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-transitions-2 (webref). Do not edit.
+module JSDOM.Generated.CSSStartingStyleRule
+       (CSSStartingStyleRule(..), gTypeCSSStartingStyleRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/CSSStyleDeclaration.hs b/src/JSDOM/Generated/CSSStyleDeclaration.hs
--- a/src/JSDOM/Generated/CSSStyleDeclaration.hs
+++ b/src/JSDOM/Generated/CSSStyleDeclaration.hs
@@ -1,253 +1,76 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module JSDOM.Generated.CSSStyleDeclaration
-       (getPropertyValue, getPropertyValue_, getPropertyCSSValue,
-        getPropertyCSSValue_, getPropertyCSSValueUnsafe,
-        getPropertyCSSValueUnchecked, removeProperty, removeProperty_,
-        getPropertyPriority, getPropertyPriority_,
-        getPropertyPriorityUnsafe, getPropertyPriorityUnchecked,
-        setProperty, item, item_, getPropertyShorthand,
-        getPropertyShorthand_, getPropertyShorthandUnsafe,
-        getPropertyShorthandUnchecked, isPropertyImplicit,
-        isPropertyImplicit_, setCssText, getCssText, getLength,
-        getParentRule, getParentRuleUnsafe, getParentRuleUnchecked,
-        CSSStyleDeclaration(..), gTypeCSSStyleDeclaration)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyValue Mozilla CSSStyleDeclaration.getPropertyValue documentation> 
-getPropertyValue ::
-                 (MonadDOM m, ToJSString propertyName, FromJSString result) =>
-                   CSSStyleDeclaration -> propertyName -> m result
-getPropertyValue self propertyName
-  = liftDOM
-      ((self ^. jsf "getPropertyValue" [toJSVal propertyName]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyValue Mozilla CSSStyleDeclaration.getPropertyValue documentation> 
-getPropertyValue_ ::
-                  (MonadDOM m, ToJSString propertyName) =>
-                    CSSStyleDeclaration -> propertyName -> m ()
-getPropertyValue_ self propertyName
-  = liftDOM
-      (void (self ^. jsf "getPropertyValue" [toJSVal propertyName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyCSSValue Mozilla CSSStyleDeclaration.getPropertyCSSValue documentation> 
-getPropertyCSSValue ::
-                    (MonadDOM m, ToJSString propertyName) =>
-                      CSSStyleDeclaration -> propertyName -> m (Maybe CSSValue)
-getPropertyCSSValue self propertyName
-  = liftDOM
-      ((self ^. jsf "getPropertyCSSValue" [toJSVal propertyName]) >>=
-         fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyCSSValue Mozilla CSSStyleDeclaration.getPropertyCSSValue documentation> 
-getPropertyCSSValue_ ::
-                     (MonadDOM m, ToJSString propertyName) =>
-                       CSSStyleDeclaration -> propertyName -> m ()
-getPropertyCSSValue_ self propertyName
-  = liftDOM
-      (void (self ^. jsf "getPropertyCSSValue" [toJSVal propertyName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyCSSValue Mozilla CSSStyleDeclaration.getPropertyCSSValue documentation> 
-getPropertyCSSValueUnsafe ::
-                          (MonadDOM m, ToJSString propertyName, HasCallStack) =>
-                            CSSStyleDeclaration -> propertyName -> m CSSValue
-getPropertyCSSValueUnsafe self propertyName
-  = liftDOM
-      (((self ^. jsf "getPropertyCSSValue" [toJSVal propertyName]) >>=
-          fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyCSSValue Mozilla CSSStyleDeclaration.getPropertyCSSValue documentation> 
-getPropertyCSSValueUnchecked ::
-                             (MonadDOM m, ToJSString propertyName) =>
-                               CSSStyleDeclaration -> propertyName -> m CSSValue
-getPropertyCSSValueUnchecked self propertyName
-  = liftDOM
-      ((self ^. jsf "getPropertyCSSValue" [toJSVal propertyName]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.removeProperty Mozilla CSSStyleDeclaration.removeProperty documentation> 
-removeProperty ::
-               (MonadDOM m, ToJSString propertyName, FromJSString result) =>
-                 CSSStyleDeclaration -> propertyName -> m result
-removeProperty self propertyName
-  = liftDOM
-      ((self ^. jsf "removeProperty" [toJSVal propertyName]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.removeProperty Mozilla CSSStyleDeclaration.removeProperty documentation> 
-removeProperty_ ::
-                (MonadDOM m, ToJSString propertyName) =>
-                  CSSStyleDeclaration -> propertyName -> m ()
-removeProperty_ self propertyName
-  = liftDOM
-      (void (self ^. jsf "removeProperty" [toJSVal propertyName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyPriority Mozilla CSSStyleDeclaration.getPropertyPriority documentation> 
-getPropertyPriority ::
-                    (MonadDOM m, ToJSString propertyName, FromJSString result) =>
-                      CSSStyleDeclaration -> propertyName -> m (Maybe result)
-getPropertyPriority self propertyName
-  = liftDOM
-      ((self ^. jsf "getPropertyPriority" [toJSVal propertyName]) >>=
-         fromMaybeJSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyPriority Mozilla CSSStyleDeclaration.getPropertyPriority documentation> 
-getPropertyPriority_ ::
-                     (MonadDOM m, ToJSString propertyName) =>
-                       CSSStyleDeclaration -> propertyName -> m ()
-getPropertyPriority_ self propertyName
-  = liftDOM
-      (void (self ^. jsf "getPropertyPriority" [toJSVal propertyName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyPriority Mozilla CSSStyleDeclaration.getPropertyPriority documentation> 
-getPropertyPriorityUnsafe ::
-                          (MonadDOM m, ToJSString propertyName, HasCallStack,
-                           FromJSString result) =>
-                            CSSStyleDeclaration -> propertyName -> m result
-getPropertyPriorityUnsafe self propertyName
-  = liftDOM
-      (((self ^. jsf "getPropertyPriority" [toJSVal propertyName]) >>=
-          fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyPriority Mozilla CSSStyleDeclaration.getPropertyPriority documentation> 
-getPropertyPriorityUnchecked ::
-                             (MonadDOM m, ToJSString propertyName, FromJSString result) =>
-                               CSSStyleDeclaration -> propertyName -> m result
-getPropertyPriorityUnchecked self propertyName
-  = liftDOM
-      ((self ^. jsf "getPropertyPriority" [toJSVal propertyName]) >>=
-         fromJSValUnchecked)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.setProperty Mozilla CSSStyleDeclaration.setProperty documentation> 
-setProperty ::
-            (MonadDOM m, ToJSString propertyName, ToJSString value,
-             ToJSString priority) =>
-              CSSStyleDeclaration ->
-                propertyName -> value -> Maybe priority -> m ()
-setProperty self propertyName value priority
-  = liftDOM
-      (void
-         (self ^. jsf "setProperty"
-            [toJSVal propertyName, toJSVal value, toJSVal priority]))
+-- | <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 ((((Types.toCSSStyleDeclaration self) ^. jsf "getPropertyPriority" [toJSVal property]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.item Mozilla CSSStyleDeclaration.item documentation> 
-item ::
-     (MonadDOM m, FromJSString result) =>
-       CSSStyleDeclaration -> Word -> m result
-item self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <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 ((Types.toCSSStyleDeclaration self) ^. jsf "getPropertyPriority" [toJSVal property]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.item Mozilla CSSStyleDeclaration.item documentation> 
-item_ :: (MonadDOM m) => CSSStyleDeclaration -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+-- | <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 ((((Types.toCSSStyleDeclaration self) ^. jsf "getPropertyValue" [toJSVal property]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyShorthand Mozilla CSSStyleDeclaration.getPropertyShorthand documentation> 
-getPropertyShorthand ::
-                     (MonadDOM m, ToJSString propertyName, FromJSString result) =>
-                       CSSStyleDeclaration -> Maybe propertyName -> m (Maybe result)
-getPropertyShorthand self propertyName
-  = liftDOM
-      ((self ^. jsf "getPropertyShorthand" [toJSVal propertyName]) >>=
-         fromMaybeJSString)
+-- | <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 ((Types.toCSSStyleDeclaration self) ^. jsf "getPropertyValue" [toJSVal property]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyShorthand Mozilla CSSStyleDeclaration.getPropertyShorthand documentation> 
-getPropertyShorthand_ ::
-                      (MonadDOM m, ToJSString propertyName) =>
-                        CSSStyleDeclaration -> Maybe propertyName -> m ()
-getPropertyShorthand_ self propertyName
-  = liftDOM
-      (void (self ^. jsf "getPropertyShorthand" [toJSVal propertyName]))
+-- | <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 ((((Types.toCSSStyleDeclaration self) ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyShorthand Mozilla CSSStyleDeclaration.getPropertyShorthand documentation> 
-getPropertyShorthandUnsafe ::
-                           (MonadDOM m, ToJSString propertyName, HasCallStack,
-                            FromJSString result) =>
-                             CSSStyleDeclaration -> Maybe propertyName -> m result
-getPropertyShorthandUnsafe self propertyName
-  = liftDOM
-      (((self ^. jsf "getPropertyShorthand" [toJSVal propertyName]) >>=
-          fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <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 ((Types.toCSSStyleDeclaration self) ^. jsf "item" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyShorthand Mozilla CSSStyleDeclaration.getPropertyShorthand documentation> 
-getPropertyShorthandUnchecked ::
-                              (MonadDOM m, ToJSString propertyName, FromJSString result) =>
-                                CSSStyleDeclaration -> Maybe propertyName -> m result
-getPropertyShorthandUnchecked self propertyName
-  = liftDOM
-      ((self ^. jsf "getPropertyShorthand" [toJSVal propertyName]) >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toCSSStyleDeclaration self) ^. jsf "removeProperty" [toJSVal property]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.isPropertyImplicit Mozilla CSSStyleDeclaration.isPropertyImplicit documentation> 
-isPropertyImplicit ::
-                   (MonadDOM m, ToJSString propertyName) =>
-                     CSSStyleDeclaration -> Maybe propertyName -> m Bool
-isPropertyImplicit self propertyName
-  = liftDOM
-      ((self ^. jsf "isPropertyImplicit" [toJSVal propertyName]) >>=
-         valToBool)
+-- | <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 ((Types.toCSSStyleDeclaration self) ^. jsf "removeProperty" [toJSVal property]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.isPropertyImplicit Mozilla CSSStyleDeclaration.isPropertyImplicit documentation> 
-isPropertyImplicit_ ::
-                    (MonadDOM m, ToJSString propertyName) =>
-                      CSSStyleDeclaration -> Maybe propertyName -> m ()
-isPropertyImplicit_ self propertyName
-  = liftDOM
-      (void (self ^. jsf "isPropertyImplicit" [toJSVal propertyName]))
+-- | <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 ((Types.toCSSStyleDeclaration self) ^. jsf "setProperty" [toJSVal property, toJSVal value, P.maybe (P.return jsUndefined) toJSVal priority]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.cssText Mozilla CSSStyleDeclaration.cssText documentation> 
-setCssText ::
-           (MonadDOM m, ToJSString val) => CSSStyleDeclaration -> val -> m ()
-setCssText self val = liftDOM (self ^. jss "cssText" (toJSVal val))
+-- | <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 ((Types.toCSSStyleDeclaration self) ^. jss "cssText" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.cssText Mozilla CSSStyleDeclaration.cssText documentation> 
-getCssText ::
-           (MonadDOM m, FromJSString result) =>
-             CSSStyleDeclaration -> m result
-getCssText self
-  = liftDOM ((self ^. js "cssText") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toCSSStyleDeclaration self) ^. js "cssText") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.length Mozilla CSSStyleDeclaration.length documentation> 
-getLength :: (MonadDOM m) => CSSStyleDeclaration -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/length MDN CSSStyleDeclaration.length documentation>
+getLength :: (MonadDOM m, IsCSSStyleDeclaration self) => self -> m Word
+getLength self = liftDOM ((P.round <$> (((Types.toCSSStyleDeclaration self) ^. js "length") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.parentRule Mozilla CSSStyleDeclaration.parentRule documentation> 
-getParentRule ::
-              (MonadDOM m) => CSSStyleDeclaration -> m (Maybe CSSRule)
-getParentRule self
-  = liftDOM ((self ^. js "parentRule") >>= fromJSVal)
+-- | <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 ((((Types.toCSSStyleDeclaration self) ^. js "parentRule") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.parentRule Mozilla CSSStyleDeclaration.parentRule documentation> 
-getParentRuleUnsafe ::
-                    (MonadDOM m, HasCallStack) => CSSStyleDeclaration -> m CSSRule
-getParentRuleUnsafe self
-  = liftDOM
-      (((self ^. js "parentRule") >>= fromJSVal) >>=
-         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 (((((Types.toCSSStyleDeclaration self) ^. js "parentRule") >>= 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 ::
-                       (MonadDOM m) => CSSStyleDeclaration -> m CSSRule
-getParentRuleUnchecked self
-  = liftDOM ((self ^. js "parentRule") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/parentRule MDN CSSStyleDeclaration.parentRule documentation>
+getParentRuleUnchecked :: (MonadDOM m, IsCSSStyleDeclaration self) => self -> m CSSRule
+getParentRuleUnchecked self = liftDOM ((((Types.toCSSStyleDeclaration self) ^. js "parentRule") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSStyleProperties.hs b/src/JSDOM/Generated/CSSStyleProperties.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSStyleProperties.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
+module JSDOM.Generated.CSSStyleProperties
+       (setCssFloat, getCssFloat, CSSStyleProperties(..), gTypeCSSStyleProperties)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jss "cssFloat" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleProperties/cssFloat MDN CSSStyleProperties.cssFloat documentation>
+getCssFloat :: (MonadDOM m, FromJSString result) => CSSStyleProperties -> m result
+getCssFloat self = liftDOM (((self ^. js "cssFloat") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSStyleRule.hs b/src/JSDOM/Generated/CSSStyleRule.hs
--- a/src/JSDOM/Generated/CSSStyleRule.hs
+++ b/src/JSDOM/Generated/CSSStyleRule.hs
@@ -1,55 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module JSDOM.Generated.CSSStyleRule
-       (setSelectorText, getSelectorText, getSelectorTextUnsafe,
-        getSelectorTextUnchecked, getStyle, CSSStyleRule(..),
-        gTypeCSSStyleRule)
+       (setSelectorText, getSelectorText, getStyle, getStyleMap, CSSStyleRule(..), gTypeCSSStyleRule)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
-setSelectorText ::
-                (MonadDOM m, ToJSString val) => CSSStyleRule -> Maybe val -> m ()
-setSelectorText self val
-  = liftDOM (self ^. jss "selectorText" (toJSVal val))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
-getSelectorText ::
-                (MonadDOM m, FromJSString result) =>
-                  CSSStyleRule -> m (Maybe result)
-getSelectorText self
-  = liftDOM ((self ^. js "selectorText") >>= fromMaybeJSString)
+-- | <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 (self ^. jss "selectorText" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
-getSelectorTextUnsafe ::
-                      (MonadDOM m, HasCallStack, FromJSString result) =>
-                        CSSStyleRule -> m result
-getSelectorTextUnsafe self
-  = liftDOM
-      (((self ^. js "selectorText") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleRule/selectorText MDN CSSStyleRule.selectorText documentation>
+getSelectorText :: (MonadDOM m, FromJSString result) => CSSStyleRule -> m result
+getSelectorText self = liftDOM (((self ^. js "selectorText") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
-getSelectorTextUnchecked ::
-                         (MonadDOM m, FromJSString result) => CSSStyleRule -> m result
-getSelectorTextUnchecked self
-  = liftDOM ((self ^. js "selectorText") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleRule/style MDN CSSStyleRule.style documentation>
+getStyle :: (MonadDOM m) => CSSStyleRule -> m CSSStyleProperties
+getStyle self = liftDOM (((self ^. js "style") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.style Mozilla CSSStyleRule.style documentation> 
-getStyle :: (MonadDOM m) => CSSStyleRule -> m CSSStyleDeclaration
-getStyle self
-  = liftDOM ((self ^. js "style") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleRule/styleMap MDN CSSStyleRule.styleMap documentation>
+getStyleMap :: (MonadDOM m) => CSSStyleRule -> m StylePropertyMap
+getStyleMap self = liftDOM (((self ^. js "styleMap") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSStyleSheet.hs b/src/JSDOM/Generated/CSSStyleSheet.hs
--- a/src/JSDOM/Generated/CSSStyleSheet.hs
+++ b/src/JSDOM/Generated/CSSStyleSheet.hs
@@ -1,103 +1,84 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module JSDOM.Generated.CSSStyleSheet
-       (insertRuleDeprecated, insertRuleDeprecated_, insertRule,
-        insertRule_, deleteRule, addRule, addRule_, removeRule,
-        getOwnerRule, getCssRules, getRules, CSSStyleSheet(..),
-        gTypeCSSStyleSheet)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
-insertRuleDeprecated ::
-                     (MonadDOM m, ToJSString rule) =>
-                       CSSStyleSheet -> rule -> Word -> m Word
-insertRuleDeprecated self rule index
-  = liftDOM
-      (round <$>
-         ((self ^. jsf "insertRule" [toJSVal rule, toJSVal index]) >>=
-            valToNumber))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
-insertRuleDeprecated_ ::
-                      (MonadDOM m, ToJSString rule) =>
-                        CSSStyleSheet -> rule -> Word -> m ()
-insertRuleDeprecated_ self rule index
-  = liftDOM
-      (void (self ^. jsf "insertRule" [toJSVal rule, toJSVal index]))
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/CSSStyleSheet MDN CSSStyleSheet. documentation>
+newCSSStyleSheet :: (MonadDOM m) => Maybe CSSStyleSheetInit -> m CSSStyleSheet
+newCSSStyleSheet options = liftDOM (((new (jsg "CSSStyleSheet") [P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
-insertRule ::
-           (MonadDOM m, ToJSString rule) => CSSStyleSheet -> rule -> m Word
-insertRule self rule
-  = liftDOM
-      (round <$>
-         ((self ^. jsf "insertRule" [toJSVal rule]) >>= valToNumber))
+-- | <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.round <$> ((self ^. jsf "addRule" [P.maybe (P.return jsUndefined) toJSVal selector, P.maybe (P.return jsUndefined) toJSVal style, P.maybe (P.return jsUndefined) toJSVal index]) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
-insertRule_ ::
-            (MonadDOM m, ToJSString rule) => CSSStyleSheet -> rule -> m ()
-insertRule_ self rule
-  = liftDOM (void (self ^. jsf "insertRule" [toJSVal 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 (self ^. jsf "addRule" [P.maybe (P.return jsUndefined) toJSVal selector, P.maybe (P.return jsUndefined) toJSVal style, P.maybe (P.return jsUndefined) toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.deleteRule Mozilla CSSStyleSheet.deleteRule documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/deleteRule MDN CSSStyleSheet.deleteRule documentation>
 deleteRule :: (MonadDOM m) => CSSStyleSheet -> Word -> m ()
-deleteRule self index
-  = liftDOM (void (self ^. jsf "deleteRule" [toJSVal index]))
+deleteRule self index = liftDOM (void (self ^. jsf "deleteRule" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.addRule Mozilla 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
-      (round <$>
-         ((self ^. jsf "addRule"
-             [toJSVal selector, toJSVal style, toJSVal index])
-            >>= valToNumber))
+-- | <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 ((P.round <$> ((self ^. jsf "insertRule" [toJSVal rule]) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.addRule Mozilla 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
-         (self ^. jsf "addRule"
-            [toJSVal selector, toJSVal style, toJSVal 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 (self ^. jsf "insertRule" [toJSVal rule]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.removeRule Mozilla CSSStyleSheet.removeRule documentation> 
+-- | <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.round <$> ((self ^. jsf "insertRule" [toJSVal rule, P.maybe (P.return jsUndefined) toJSVal index]) >>= valToNumber)))
+
+-- | <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 (self ^. jsf "insertRule" [toJSVal rule, P.maybe (P.return jsUndefined) toJSVal index]))
+
+-- | <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 (self ^. jsf "removeRule" [toJSVal index]))
+removeRule self index = liftDOM (void (self ^. jsf "removeRule" [P.maybe (P.return jsUndefined) toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.ownerRule Mozilla CSSStyleSheet.ownerRule documentation> 
-getOwnerRule :: (MonadDOM m) => CSSStyleSheet -> m CSSRule
-getOwnerRule self
-  = liftDOM ((self ^. js "ownerRule") >>= fromJSValUnchecked)
+-- | <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 (((((self ^. jsf "replace" [toJSVal text]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.cssRules Mozilla CSSStyleSheet.cssRules documentation> 
+-- | <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 (((self ^. jsf "replace" [toJSVal text]) >>= readPromise)))
+
+-- | <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 (self ^. jsf "replaceSync" [toJSVal text]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/ownerRule MDN CSSStyleSheet.ownerRule documentation>
+getOwnerRule :: (MonadDOM m) => CSSStyleSheet -> m (Maybe CSSRule)
+getOwnerRule self = liftDOM (((self ^. js "ownerRule") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/ownerRule MDN CSSStyleSheet.ownerRule documentation>
+getOwnerRuleUnsafe :: (MonadDOM m, HasCallStack) => CSSStyleSheet -> m CSSRule
+getOwnerRuleUnsafe self = liftDOM ((((self ^. js "ownerRule") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/ownerRule MDN CSSStyleSheet.ownerRule documentation>
+getOwnerRuleUnchecked :: (MonadDOM m) => CSSStyleSheet -> m CSSRule
+getOwnerRuleUnchecked self = liftDOM (((self ^. js "ownerRule") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/cssRules MDN CSSStyleSheet.cssRules documentation>
 getCssRules :: (MonadDOM m) => CSSStyleSheet -> m CSSRuleList
-getCssRules self
-  = liftDOM ((self ^. js "cssRules") >>= fromJSValUnchecked)
+getCssRules self = liftDOM (((self ^. js "cssRules") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.rules Mozilla CSSStyleSheet.rules documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/rules MDN CSSStyleSheet.rules documentation>
 getRules :: (MonadDOM m) => CSSStyleSheet -> m CSSRuleList
-getRules self
-  = liftDOM ((self ^. js "rules") >>= fromJSValUnchecked)
+getRules self = liftDOM (((self ^. js "rules") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSStyleSheetInit.hs b/src/JSDOM/Generated/CSSStyleSheetInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSStyleSheetInit.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
+module JSDOM.Generated.CSSStyleSheetInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/cssom-1/#dictdef-cssstylesheetinit CSSStyleSheetInit specification>
+newCSSStyleSheetInit :: (MonadDOM m) => m CSSStyleSheetInit
+newCSSStyleSheetInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "baseURL" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-baseurl CSSStyleSheetInit.baseURL specification>
+getBaseURL :: (MonadDOM m, FromJSString result) => CSSStyleSheetInit -> m (Maybe result)
+getBaseURL self = liftDOM (((self ^. js "baseURL") >>= fromMaybeJSString))
+
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-baseurl CSSStyleSheetInit.baseURL specification>
+getBaseURLUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CSSStyleSheetInit -> m result
+getBaseURLUnsafe self = liftDOM ((((self ^. js "baseURL") >>= fromMaybeJSString) >>= 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 (((self ^. js "baseURL") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "media" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-media CSSStyleSheetInit.media specification>
+getMedia :: (MonadDOM m) => CSSStyleSheetInit -> m (Maybe MediaListOrString)
+getMedia self = liftDOM (((self ^. js "media") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-media CSSStyleSheetInit.media specification>
+getMediaUnsafe :: (MonadDOM m, HasCallStack) => CSSStyleSheetInit -> m MediaListOrString
+getMediaUnsafe self = liftDOM ((((self ^. js "media") >>= 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 (((self ^. js "media") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-disabled CSSStyleSheetInit.disabled specification>
+setDisabled :: (MonadDOM m) => CSSStyleSheetInit -> Bool -> m ()
+setDisabled self val = liftDOM (void (self ^. jss "disabled" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-disabled CSSStyleSheetInit.disabled specification>
+getDisabled :: (MonadDOM m) => CSSStyleSheetInit -> m (Maybe Bool)
+getDisabled self = liftDOM (((self ^. js "disabled") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-disabled CSSStyleSheetInit.disabled specification>
+getDisabledUnsafe :: (MonadDOM m, HasCallStack) => CSSStyleSheetInit -> m Bool
+getDisabledUnsafe self = liftDOM ((((self ^. js "disabled") >>= 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 (((self ^. js "disabled") >>= valToBool))
diff --git a/src/JSDOM/Generated/CSSStyleValue.hs b/src/JSDOM/Generated/CSSStyleValue.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSStyleValue.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSStyleValue
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((jsg "CSSStyleValue") ^. jsf "parse" [toJSVal property, toJSVal cssText]) >>= fromJSValUnchecked))
+
+-- | <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 ((jsg "CSSStyleValue") ^. jsf "parse" [toJSVal property, toJSVal cssText]))
+
+-- | <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 ((((jsg "CSSStyleValue") ^. jsf "parseAll" [toJSVal property, toJSVal 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 ((jsg "CSSStyleValue") ^. jsf "parseAll" [toJSVal property, toJSVal cssText]))
diff --git a/src/JSDOM/Generated/CSSSupportsRule.hs b/src/JSDOM/Generated/CSSSupportsRule.hs
--- a/src/JSDOM/Generated/CSSSupportsRule.hs
+++ b/src/JSDOM/Generated/CSSSupportsRule.hs
@@ -1,55 +1,17 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-conditional-3 (webref). Do not edit.
 module JSDOM.Generated.CSSSupportsRule
-       (insertRule, insertRule_, deleteRule, getCssRules,
-        getConditionText, CSSSupportsRule(..), gTypeCSSSupportsRule)
+       (CSSSupportsRule(..), gTypeCSSSupportsRule)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.insertRule Mozilla CSSSupportsRule.insertRule documentation> 
-insertRule ::
-           (MonadDOM m, ToJSString rule) =>
-             CSSSupportsRule -> rule -> Word -> m Word
-insertRule self rule index
-  = liftDOM
-      (round <$>
-         ((self ^. jsf "insertRule" [toJSVal rule, toJSVal index]) >>=
-            valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.insertRule Mozilla CSSSupportsRule.insertRule documentation> 
-insertRule_ ::
-            (MonadDOM m, ToJSString rule) =>
-              CSSSupportsRule -> rule -> Word -> m ()
-insertRule_ self rule index
-  = liftDOM
-      (void (self ^. jsf "insertRule" [toJSVal rule, toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.deleteRule Mozilla CSSSupportsRule.deleteRule documentation> 
-deleteRule :: (MonadDOM m) => CSSSupportsRule -> Word -> m ()
-deleteRule self index
-  = liftDOM (void (self ^. jsf "deleteRule" [toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.cssRules Mozilla CSSSupportsRule.cssRules documentation> 
-getCssRules :: (MonadDOM m) => CSSSupportsRule -> m CSSRuleList
-getCssRules self
-  = liftDOM ((self ^. js "cssRules") >>= fromJSValUnchecked)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.conditionText Mozilla CSSSupportsRule.conditionText documentation> 
-getConditionText ::
-                 (MonadDOM m, FromJSString result) => CSSSupportsRule -> m result
-getConditionText self
-  = liftDOM ((self ^. js "conditionText") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/CSSTransformComponent.hs b/src/JSDOM/Generated/CSSTransformComponent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSTransformComponent.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSTransformComponent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransformComponent/toMatrix MDN CSSTransformComponent.toMatrix documentation>
+toMatrix :: (MonadDOM m, IsCSSTransformComponent self) => self -> m DOMMatrix
+toMatrix self = liftDOM ((((Types.toCSSTransformComponent self) ^. jsf "toMatrix" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransformComponent/toMatrix MDN CSSTransformComponent.toMatrix documentation>
+toMatrix_ :: (MonadDOM m, IsCSSTransformComponent self) => self -> m ()
+toMatrix_ self = liftDOM (void ((Types.toCSSTransformComponent self) ^. jsf "toMatrix" ()))
+
+-- | <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 ((Types.toCSSTransformComponent self) ^. jss "is2D" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransformComponent/is2D MDN CSSTransformComponent.is2D documentation>
+getIs2D :: (MonadDOM m, IsCSSTransformComponent self) => self -> m Bool
+getIs2D self = liftDOM ((((Types.toCSSTransformComponent self) ^. js "is2D") >>= valToBool))
diff --git a/src/JSDOM/Generated/CSSTransformValue.hs b/src/JSDOM/Generated/CSSTransformValue.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSTransformValue.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSTransformValue
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransformValue/CSSTransformValue MDN CSSTransformValue. documentation>
+newCSSTransformValue :: (MonadDOM m, IsCSSTransformComponent transforms) => [transforms] -> m CSSTransformValue
+newCSSTransformValue transforms = liftDOM (((new (jsg "CSSTransformValue") [toJSVal transforms]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransformValue/toMatrix MDN CSSTransformValue.toMatrix documentation>
+toMatrix :: (MonadDOM m) => CSSTransformValue -> m DOMMatrix
+toMatrix self = liftDOM (((self ^. jsf "toMatrix" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransformValue/toMatrix MDN CSSTransformValue.toMatrix documentation>
+toMatrix_ :: (MonadDOM m) => CSSTransformValue -> m ()
+toMatrix_ self = liftDOM (void (self ^. jsf "toMatrix" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransformValue/length MDN CSSTransformValue.length documentation>
+getLength :: (MonadDOM m) => CSSTransformValue -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransformValue/is2D MDN CSSTransformValue.is2D documentation>
+getIs2D :: (MonadDOM m) => CSSTransformValue -> m Bool
+getIs2D self = liftDOM (((self ^. js "is2D") >>= valToBool))
diff --git a/src/JSDOM/Generated/CSSTransition.hs b/src/JSDOM/Generated/CSSTransition.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSTransition.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-transitions-2 (webref). Do not edit.
+module JSDOM.Generated.CSSTransition
+       (getTransitionProperty, CSSTransition(..), gTypeCSSTransition)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTransition/transitionProperty MDN CSSTransition.transitionProperty documentation>
+getTransitionProperty :: (MonadDOM m, FromJSString result) => CSSTransition -> m result
+getTransitionProperty self = liftDOM (((self ^. js "transitionProperty") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSTranslate.hs b/src/JSDOM/Generated/CSSTranslate.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSTranslate.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSTranslate
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "CSSTranslate") [toJSVal x, toJSVal y, P.maybe (P.return jsUndefined) toJSVal z]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "x" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTranslate/x MDN CSSTranslate.x documentation>
+getX :: (MonadDOM m) => CSSTranslate -> m CSSNumericValue
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "y" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTranslate/y MDN CSSTranslate.y documentation>
+getY :: (MonadDOM m) => CSSTranslate -> m CSSNumericValue
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "z" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSTranslate/z MDN CSSTranslate.z documentation>
+getZ :: (MonadDOM m) => CSSTranslate -> m CSSNumericValue
+getZ self = liftDOM (((self ^. js "z") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSUnitValue.hs b/src/JSDOM/Generated/CSSUnitValue.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSUnitValue.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSUnitValue
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "CSSUnitValue") [toJSVal value, toJSVal unit]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSUnitValue/value MDN CSSUnitValue.value documentation>
+setValue :: (MonadDOM m) => CSSUnitValue -> Double -> m ()
+setValue self val = liftDOM (void (self ^. jss "value" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSUnitValue/value MDN CSSUnitValue.value documentation>
+getValue :: (MonadDOM m) => CSSUnitValue -> m Double
+getValue self = liftDOM (((self ^. js "value") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSUnitValue/unit MDN CSSUnitValue.unit documentation>
+getUnit :: (MonadDOM m, FromJSString result) => CSSUnitValue -> m result
+getUnit self = liftDOM (((self ^. js "unit") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSUnparsedValue.hs b/src/JSDOM/Generated/CSSUnparsedValue.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSUnparsedValue.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSUnparsedValue
+       (newCSSUnparsedValue, getLength, CSSUnparsedValue(..), gTypeCSSUnparsedValue)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSUnparsedValue/CSSUnparsedValue MDN CSSUnparsedValue. documentation>
+newCSSUnparsedValue :: (MonadDOM m, IsCSSUnparsedSegment members) => [members] -> m CSSUnparsedValue
+newCSSUnparsedValue members = liftDOM (((new (jsg "CSSUnparsedValue") [toJSVal members]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSUnparsedValue/length MDN CSSUnparsedValue.length documentation>
+getLength :: (MonadDOM m) => CSSUnparsedValue -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/CSSValue.hs b/src/JSDOM/Generated/CSSValue.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/CSSValue.hs
+++ /dev/null
@@ -1,66 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.CSSValue
-       (pattern CSS_INHERIT, pattern CSS_PRIMITIVE_VALUE,
-        pattern CSS_VALUE_LIST, pattern CSS_CUSTOM, setCssText, getCssText,
-        getCssTextUnsafe, getCssTextUnchecked, getCssValueType,
-        CSSValue(..), gTypeCSSValue, IsCSSValue, toCSSValue)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-pattern CSS_INHERIT = 0
-pattern CSS_PRIMITIVE_VALUE = 1
-pattern CSS_VALUE_LIST = 2
-pattern CSS_CUSTOM = 3
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
-setCssText ::
-           (MonadDOM m, IsCSSValue self, ToJSString val) =>
-             self -> Maybe val -> m ()
-setCssText self val
-  = liftDOM ((toCSSValue self) ^. jss "cssText" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
-getCssText ::
-           (MonadDOM m, IsCSSValue self, FromJSString result) =>
-             self -> m (Maybe result)
-getCssText self
-  = liftDOM
-      (((toCSSValue self) ^. js "cssText") >>= fromMaybeJSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
-getCssTextUnsafe ::
-                 (MonadDOM m, IsCSSValue self, HasCallStack, FromJSString result) =>
-                   self -> m result
-getCssTextUnsafe self
-  = liftDOM
-      ((((toCSSValue self) ^. js "cssText") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
-getCssTextUnchecked ::
-                    (MonadDOM m, IsCSSValue self, FromJSString result) =>
-                      self -> m result
-getCssTextUnchecked self
-  = liftDOM
-      (((toCSSValue self) ^. js "cssText") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssValueType Mozilla CSSValue.cssValueType documentation> 
-getCssValueType :: (MonadDOM m, IsCSSValue self) => self -> m Word
-getCssValueType self
-  = liftDOM
-      (round <$>
-         (((toCSSValue self) ^. js "cssValueType") >>= valToNumber))
diff --git a/src/JSDOM/Generated/CSSValueList.hs b/src/JSDOM/Generated/CSSValueList.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/CSSValueList.hs
+++ /dev/null
@@ -1,35 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.CSSValueList
-       (item, item_, getLength, CSSValueList(..), gTypeCSSValueList) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList.item Mozilla CSSValueList.item documentation> 
-item :: (MonadDOM m) => CSSValueList -> Word -> m CSSValue
-item self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList.item Mozilla CSSValueList.item documentation> 
-item_ :: (MonadDOM m) => CSSValueList -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList.length Mozilla CSSValueList.length documentation> 
-getLength :: (MonadDOM m) => CSSValueList -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/JSDOM/Generated/CSSVariableReferenceValue.hs b/src/JSDOM/Generated/CSSVariableReferenceValue.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSVariableReferenceValue.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.CSSVariableReferenceValue
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "CSSVariableReferenceValue") [toJSVal variable, toJSVal fallback]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "variable" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSVariableReferenceValue/variable MDN CSSVariableReferenceValue.variable documentation>
+getVariable :: (MonadDOM m, FromJSString result) => CSSVariableReferenceValue -> m result
+getVariable self = liftDOM (((self ^. js "variable") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSVariableReferenceValue/fallback MDN CSSVariableReferenceValue.fallback documentation>
+getFallback :: (MonadDOM m) => CSSVariableReferenceValue -> m (Maybe CSSUnparsedValue)
+getFallback self = liftDOM (((self ^. js "fallback") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSVariableReferenceValue/fallback MDN CSSVariableReferenceValue.fallback documentation>
+getFallbackUnsafe :: (MonadDOM m, HasCallStack) => CSSVariableReferenceValue -> m CSSUnparsedValue
+getFallbackUnsafe self = liftDOM ((((self ^. js "fallback") >>= 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 (((self ^. js "fallback") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CSSViewTransitionRule.hs b/src/JSDOM/Generated/CSSViewTransitionRule.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CSSViewTransitionRule.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-view-transitions-2 (webref). Do not edit.
+module JSDOM.Generated.CSSViewTransitionRule
+       (getNavigation, getTypes, CSSViewTransitionRule(..), gTypeCSSViewTransitionRule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSViewTransitionRule/navigation MDN CSSViewTransitionRule.navigation documentation>
+getNavigation :: (MonadDOM m, FromJSString result) => CSSViewTransitionRule -> m result
+getNavigation self = liftDOM (((self ^. js "navigation") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CSSViewTransitionRule/types MDN CSSViewTransitionRule.types documentation>
+getTypes :: (MonadDOM m, FromJSString result) => CSSViewTransitionRule -> m [result]
+getTypes self = liftDOM (((self ^. js "types") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Cache.hs b/src/JSDOM/Generated/Cache.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Cache.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.Cache
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "add" [toJSVal request]) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "addAll" [toJSVal requests]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "delete" [toJSVal request, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= valToBool))
+
+-- | <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 (((self ^. jsf "delete" [toJSVal request, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "keys" [P.maybe (P.return jsUndefined) toJSVal request, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= 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 (((self ^. jsf "keys" [P.maybe (P.return jsUndefined) toJSVal request, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "match" [toJSVal request, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "match" [toJSVal request, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "matchAll" [P.maybe (P.return jsUndefined) toJSVal request, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= 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 (((self ^. jsf "matchAll" [P.maybe (P.return jsUndefined) toJSVal request, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "put" [toJSVal request, toJSVal response]) >>= readPromise)))
diff --git a/src/JSDOM/Generated/CacheQueryOptions.hs b/src/JSDOM/Generated/CacheQueryOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CacheQueryOptions.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.CacheQueryOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions CacheQueryOptions specification>
+newCacheQueryOptions :: (MonadDOM m) => m CacheQueryOptions
+newCacheQueryOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignoresearch CacheQueryOptions.ignoreSearch specification>
+setIgnoreSearch :: (MonadDOM m, IsCacheQueryOptions self) => self -> Bool -> m ()
+setIgnoreSearch self val = liftDOM (void ((Types.toCacheQueryOptions self) ^. jss "ignoreSearch" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignoresearch CacheQueryOptions.ignoreSearch specification>
+getIgnoreSearch :: (MonadDOM m, IsCacheQueryOptions self) => self -> m (Maybe Bool)
+getIgnoreSearch self = liftDOM ((((Types.toCacheQueryOptions self) ^. js "ignoreSearch") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignoresearch CacheQueryOptions.ignoreSearch specification>
+getIgnoreSearchUnsafe :: (MonadDOM m, IsCacheQueryOptions self, HasCallStack) => self -> m Bool
+getIgnoreSearchUnsafe self = liftDOM (((((Types.toCacheQueryOptions self) ^. js "ignoreSearch") >>= 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 ((((Types.toCacheQueryOptions self) ^. js "ignoreSearch") >>= valToBool))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignoremethod CacheQueryOptions.ignoreMethod specification>
+setIgnoreMethod :: (MonadDOM m, IsCacheQueryOptions self) => self -> Bool -> m ()
+setIgnoreMethod self val = liftDOM (void ((Types.toCacheQueryOptions self) ^. jss "ignoreMethod" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignoremethod CacheQueryOptions.ignoreMethod specification>
+getIgnoreMethod :: (MonadDOM m, IsCacheQueryOptions self) => self -> m (Maybe Bool)
+getIgnoreMethod self = liftDOM ((((Types.toCacheQueryOptions self) ^. js "ignoreMethod") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignoremethod CacheQueryOptions.ignoreMethod specification>
+getIgnoreMethodUnsafe :: (MonadDOM m, IsCacheQueryOptions self, HasCallStack) => self -> m Bool
+getIgnoreMethodUnsafe self = liftDOM (((((Types.toCacheQueryOptions self) ^. js "ignoreMethod") >>= 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 ((((Types.toCacheQueryOptions self) ^. js "ignoreMethod") >>= valToBool))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignorevary CacheQueryOptions.ignoreVary specification>
+setIgnoreVary :: (MonadDOM m, IsCacheQueryOptions self) => self -> Bool -> m ()
+setIgnoreVary self val = liftDOM (void ((Types.toCacheQueryOptions self) ^. jss "ignoreVary" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignorevary CacheQueryOptions.ignoreVary specification>
+getIgnoreVary :: (MonadDOM m, IsCacheQueryOptions self) => self -> m (Maybe Bool)
+getIgnoreVary self = liftDOM ((((Types.toCacheQueryOptions self) ^. js "ignoreVary") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-cachequeryoptions-ignorevary CacheQueryOptions.ignoreVary specification>
+getIgnoreVaryUnsafe :: (MonadDOM m, IsCacheQueryOptions self, HasCallStack) => self -> m Bool
+getIgnoreVaryUnsafe self = liftDOM (((((Types.toCacheQueryOptions self) ^. js "ignoreVary") >>= 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 ((((Types.toCacheQueryOptions self) ^. js "ignoreVary") >>= valToBool))
diff --git a/src/JSDOM/Generated/CacheStorage.hs b/src/JSDOM/Generated/CacheStorage.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CacheStorage.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.CacheStorage
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((((self ^. jsf "delete" [toJSVal cacheName]) >>= readPromise)) >>= valToBool))
+
+-- | <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 (((self ^. jsf "delete" [toJSVal cacheName]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "has" [toJSVal cacheName]) >>= readPromise)) >>= valToBool))
+
+-- | <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 (((self ^. jsf "has" [toJSVal cacheName]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CacheStorage/keys MDN CacheStorage.keys documentation>
+keys :: (MonadDOM m, FromJSString result) => CacheStorage -> m [result]
+keys self = liftDOM (((((self ^. jsf "keys" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CacheStorage/keys MDN CacheStorage.keys documentation>
+keys_ :: (MonadDOM m) => CacheStorage -> m ()
+keys_ self = liftDOM (void (((self ^. jsf "keys" ()) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "match" [toJSVal request, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "match" [toJSVal request, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "open" [toJSVal cacheName]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "open" [toJSVal cacheName]) >>= readPromise)))
diff --git a/src/JSDOM/Generated/CanvasCaptureMediaStreamTrack.hs b/src/JSDOM/Generated/CanvasCaptureMediaStreamTrack.hs
--- a/src/JSDOM/Generated/CanvasCaptureMediaStreamTrack.hs
+++ b/src/JSDOM/Generated/CanvasCaptureMediaStreamTrack.hs
@@ -1,33 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-fromelement (webref). Do not edit.
 module JSDOM.Generated.CanvasCaptureMediaStreamTrack
-       (requestFrame, getCanvas, CanvasCaptureMediaStreamTrack(..),
-        gTypeCanvasCaptureMediaStreamTrack)
+       (requestFrame, getCanvas, CanvasCaptureMediaStreamTrack(..), gTypeCanvasCaptureMediaStreamTrack)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasCaptureMediaStreamTrack.requestFrame Mozilla CanvasCaptureMediaStreamTrack.requestFrame documentation> 
-requestFrame ::
-             (MonadDOM m) => CanvasCaptureMediaStreamTrack -> m ()
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasCaptureMediaStreamTrack/requestFrame MDN CanvasCaptureMediaStreamTrack.requestFrame documentation>
+requestFrame :: (MonadDOM m) => CanvasCaptureMediaStreamTrack -> m ()
 requestFrame self = liftDOM (void (self ^. jsf "requestFrame" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasCaptureMediaStreamTrack.canvas Mozilla CanvasCaptureMediaStreamTrack.canvas documentation> 
-getCanvas ::
-          (MonadDOM m) =>
-            CanvasCaptureMediaStreamTrack -> m HTMLCanvasElement
-getCanvas self
-  = liftDOM ((self ^. js "canvas") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasCaptureMediaStreamTrack/canvas MDN CanvasCaptureMediaStreamTrack.canvas documentation>
+getCanvas :: (MonadDOM m) => CanvasCaptureMediaStreamTrack -> m HTMLCanvasElement
+getCanvas self = liftDOM (((self ^. js "canvas") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CanvasCompositing.hs b/src/JSDOM/Generated/CanvasCompositing.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasCompositing.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasCompositing
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toCanvasCompositing self) ^. jss "globalAlpha" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/globalAlpha MDN CanvasCompositing.globalAlpha documentation>
+getGlobalAlpha :: (MonadDOM m, IsCanvasCompositing self) => self -> m Double
+getGlobalAlpha self = liftDOM ((((Types.toCanvasCompositing self) ^. js "globalAlpha") >>= valToNumber))
+
+-- | <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 ((Types.toCanvasCompositing self) ^. jss "globalCompositeOperation" (toJSVal val)))
+
+-- | <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 ((((Types.toCanvasCompositing self) ^. js "globalCompositeOperation") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CanvasDrawImage.hs b/src/JSDOM/Generated/CanvasDrawImage.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasDrawImage.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasDrawImage
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toCanvasDrawImage self) ^. jsf "drawImage" [toJSVal image, toJSVal dx, toJSVal dy]))
+
+-- | <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 ((Types.toCanvasDrawImage self) ^. jsf "drawImage" [toJSVal image, toJSVal dx, toJSVal dy, toJSVal dw, toJSVal dh]))
+
+-- | <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 ((Types.toCanvasDrawImage self) ^. jsf "drawImage" [toJSVal image, toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh, toJSVal dx, toJSVal dy, toJSVal dw, toJSVal dh]))
diff --git a/src/JSDOM/Generated/CanvasDrawPath.hs b/src/JSDOM/Generated/CanvasDrawPath.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasDrawPath.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasDrawPath
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/beginPath MDN CanvasDrawPath.beginPath documentation>
+beginPath :: (MonadDOM m, IsCanvasDrawPath self) => self -> m ()
+beginPath self = liftDOM (void ((Types.toCanvasDrawPath self) ^. jsf "beginPath" ()))
+
+-- | <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 ((Types.toCanvasDrawPath self) ^. jsf "clip" [P.maybe (P.return jsUndefined) toJSVal fillRule]))
+
+-- | <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 ((Types.toCanvasDrawPath self) ^. jsf "clip" [toJSVal path, P.maybe (P.return jsUndefined) toJSVal fillRule]))
+
+-- | <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 ((Types.toCanvasDrawPath self) ^. jsf "fill" [P.maybe (P.return jsUndefined) toJSVal fillRule]))
+
+-- | <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 ((Types.toCanvasDrawPath self) ^. jsf "fill" [toJSVal path, P.maybe (P.return jsUndefined) toJSVal fillRule]))
+
+-- | <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 ((((Types.toCanvasDrawPath self) ^. jsf "isPointInPath" [toJSVal x, toJSVal y, P.maybe (P.return jsUndefined) toJSVal fillRule]) >>= valToBool))
+
+-- | <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 ((Types.toCanvasDrawPath self) ^. jsf "isPointInPath" [toJSVal x, toJSVal y, P.maybe (P.return jsUndefined) toJSVal fillRule]))
+
+-- | <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 ((((Types.toCanvasDrawPath self) ^. jsf "isPointInPath" [toJSVal path, toJSVal x, toJSVal y, P.maybe (P.return jsUndefined) toJSVal fillRule]) >>= valToBool))
+
+-- | <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 ((Types.toCanvasDrawPath self) ^. jsf "isPointInPath" [toJSVal path, toJSVal x, toJSVal y, P.maybe (P.return jsUndefined) toJSVal fillRule]))
+
+-- | <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 ((((Types.toCanvasDrawPath self) ^. jsf "isPointInStroke" [toJSVal x, toJSVal y]) >>= valToBool))
+
+-- | <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 ((Types.toCanvasDrawPath self) ^. jsf "isPointInStroke" [toJSVal x, toJSVal y]))
+
+-- | <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 ((((Types.toCanvasDrawPath self) ^. jsf "isPointInStroke" [toJSVal path, toJSVal x, toJSVal y]) >>= valToBool))
+
+-- | <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 ((Types.toCanvasDrawPath self) ^. jsf "isPointInStroke" [toJSVal path, toJSVal x, toJSVal y]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/stroke MDN CanvasDrawPath.stroke documentation>
+stroke :: (MonadDOM m, IsCanvasDrawPath self) => self -> m ()
+stroke self = liftDOM (void ((Types.toCanvasDrawPath self) ^. jsf "stroke" ()))
+
+-- | <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 ((Types.toCanvasDrawPath self) ^. jsf "stroke" [toJSVal path]))
diff --git a/src/JSDOM/Generated/CanvasFillStrokeStyles.hs b/src/JSDOM/Generated/CanvasFillStrokeStyles.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasFillStrokeStyles.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasFillStrokeStyles
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toCanvasFillStrokeStyles self) ^. jsf "createConicGradient" [toJSVal startAngle, toJSVal x, toJSVal y]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasFillStrokeStyles self) ^. jsf "createConicGradient" [toJSVal startAngle, toJSVal x, toJSVal y]))
+
+-- | <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 ((((Types.toCanvasFillStrokeStyles self) ^. jsf "createLinearGradient" [toJSVal x0, toJSVal y0, toJSVal x1, toJSVal y1]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasFillStrokeStyles self) ^. jsf "createLinearGradient" [toJSVal x0, toJSVal y0, toJSVal x1, toJSVal y1]))
+
+-- | <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 ((((Types.toCanvasFillStrokeStyles self) ^. jsf "createPattern" [toJSVal image, toJSVal 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 ((Types.toCanvasFillStrokeStyles self) ^. jsf "createPattern" [toJSVal image, toJSVal 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 (((((Types.toCanvasFillStrokeStyles self) ^. jsf "createPattern" [toJSVal image, toJSVal 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 ((((Types.toCanvasFillStrokeStyles self) ^. jsf "createPattern" [toJSVal image, toJSVal repetition]) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toCanvasFillStrokeStyles self) ^. jsf "createRadialGradient" [toJSVal x0, toJSVal y0, toJSVal r0, toJSVal x1, toJSVal y1, toJSVal r1]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasFillStrokeStyles self) ^. jsf "createRadialGradient" [toJSVal x0, toJSVal y0, toJSVal r0, toJSVal x1, toJSVal y1, toJSVal r1]))
+
+-- | <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 ((Types.toCanvasFillStrokeStyles self) ^. jss "strokeStyle" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/strokeStyle MDN CanvasFillStrokeStyles.strokeStyle documentation>
+getStrokeStyle :: (MonadDOM m, IsCanvasFillStrokeStyles self) => self -> m StringOrCanvasGradientOrCanvasPattern
+getStrokeStyle self = liftDOM ((((Types.toCanvasFillStrokeStyles self) ^. js "strokeStyle") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasFillStrokeStyles self) ^. jss "fillStyle" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fillStyle MDN CanvasFillStrokeStyles.fillStyle documentation>
+getFillStyle :: (MonadDOM m, IsCanvasFillStrokeStyles self) => self -> m StringOrCanvasGradientOrCanvasPattern
+getFillStyle self = liftDOM ((((Types.toCanvasFillStrokeStyles self) ^. js "fillStyle") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CanvasFilters.hs b/src/JSDOM/Generated/CanvasFilters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasFilters.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasFilters
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toCanvasFilters self) ^. jss "filter" (toJSVal val)))
+
+-- | <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 ((((Types.toCanvasFilters self) ^. js "filter") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CanvasGradient.hs b/src/JSDOM/Generated/CanvasGradient.hs
--- a/src/JSDOM/Generated/CanvasGradient.hs
+++ b/src/JSDOM/Generated/CanvasGradient.hs
@@ -1,27 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.CanvasGradient
-       (addColorStop, CanvasGradient(..), gTypeCanvasGradient) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (addColorStop, CanvasGradient(..), gTypeCanvasGradient)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasGradient.addColorStop Mozilla CanvasGradient.addColorStop documentation> 
-addColorStop ::
-             (MonadDOM m, ToJSString color) =>
-               CanvasGradient -> Float -> color -> m ()
-addColorStop self offset color
-  = liftDOM
-      (void (self ^. jsf "addColorStop" [toJSVal offset, toJSVal color]))
+-- | <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 (self ^. jsf "addColorStop" [toJSVal offset, toJSVal color]))
diff --git a/src/JSDOM/Generated/CanvasImageData.hs b/src/JSDOM/Generated/CanvasImageData.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasImageData.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasImageData
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toCanvasImageData self) ^. jsf "createImageData" [toJSVal sw, toJSVal sh, P.maybe (P.return jsUndefined) toJSVal settings]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasImageData self) ^. jsf "createImageData" [toJSVal sw, toJSVal sh, P.maybe (P.return jsUndefined) toJSVal settings]))
+
+-- | <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 ((((Types.toCanvasImageData self) ^. jsf "createImageData" [toJSVal imageData]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasImageData self) ^. jsf "createImageData" [toJSVal 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 ((((Types.toCanvasImageData self) ^. jsf "getImageData" [toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasImageData self) ^. jsf "getImageData" [toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh]))
+
+-- | <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 ((((Types.toCanvasImageData self) ^. jsf "getImageData" [toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh, P.maybe (P.return jsUndefined) toJSVal settings]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasImageData self) ^. jsf "getImageData" [toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh, P.maybe (P.return jsUndefined) toJSVal settings]))
+
+-- | <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 ((Types.toCanvasImageData self) ^. jsf "putImageData" [toJSVal imageData, toJSVal dx, toJSVal dy]))
+
+-- | <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 ((Types.toCanvasImageData self) ^. jsf "putImageData" [toJSVal imageData, toJSVal dx, toJSVal dy, toJSVal dirtyX, toJSVal dirtyY, toJSVal dirtyWidth, toJSVal dirtyHeight]))
diff --git a/src/JSDOM/Generated/CanvasImageSmoothing.hs b/src/JSDOM/Generated/CanvasImageSmoothing.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasImageSmoothing.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasImageSmoothing
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toCanvasImageSmoothing self) ^. jss "imageSmoothingEnabled" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/imageSmoothingEnabled MDN CanvasImageSmoothing.imageSmoothingEnabled documentation>
+getImageSmoothingEnabled :: (MonadDOM m, IsCanvasImageSmoothing self) => self -> m Bool
+getImageSmoothingEnabled self = liftDOM ((((Types.toCanvasImageSmoothing self) ^. js "imageSmoothingEnabled") >>= valToBool))
+
+-- | <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 ((Types.toCanvasImageSmoothing self) ^. jss "imageSmoothingQuality" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality MDN CanvasImageSmoothing.imageSmoothingQuality documentation>
+getImageSmoothingQuality :: (MonadDOM m, IsCanvasImageSmoothing self) => self -> m ImageSmoothingQuality
+getImageSmoothingQuality self = liftDOM ((((Types.toCanvasImageSmoothing self) ^. js "imageSmoothingQuality") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CanvasPath.hs b/src/JSDOM/Generated/CanvasPath.hs
--- a/src/JSDOM/Generated/CanvasPath.hs
+++ b/src/JSDOM/Generated/CanvasPath.hs
@@ -1,111 +1,56 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.CanvasPath
-       (closePath, moveTo, lineTo, quadraticCurveTo, bezierCurveTo, arcTo,
-        rect, arc, ellipse, CanvasPath(..), gTypeCanvasPath, IsCanvasPath,
-        toCanvasPath)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.closePath Mozilla CanvasPath.closePath documentation> 
-closePath :: (MonadDOM m, IsCanvasPath self) => self -> m ()
-closePath self
-  = liftDOM (void ((toCanvasPath self) ^. jsf "closePath" ()))
+-- | <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 ((Types.toCanvasPath self) ^. jsf "arc" [toJSVal x, toJSVal y, toJSVal radius, toJSVal startAngle, toJSVal endAngle, P.maybe (P.return jsUndefined) toJSVal counterclockwise]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.moveTo Mozilla CanvasPath.moveTo documentation> 
-moveTo ::
-       (MonadDOM m, IsCanvasPath self) => self -> Double -> Double -> m ()
-moveTo self x y
-  = liftDOM
-      (void ((toCanvasPath self) ^. jsf "moveTo" [toJSVal x, toJSVal y]))
+-- | <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 ((Types.toCanvasPath self) ^. jsf "arcTo" [toJSVal x1, toJSVal y1, toJSVal x2, toJSVal y2, toJSVal radius]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.lineTo Mozilla CanvasPath.lineTo documentation> 
-lineTo ::
-       (MonadDOM m, IsCanvasPath self) => self -> Double -> Double -> m ()
-lineTo self x y
-  = liftDOM
-      (void ((toCanvasPath self) ^. jsf "lineTo" [toJSVal x, toJSVal y]))
+-- | <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 ((Types.toCanvasPath self) ^. jsf "bezierCurveTo" [toJSVal cp1x, toJSVal cp1y, toJSVal cp2x, toJSVal cp2y, toJSVal x, toJSVal y]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.quadraticCurveTo Mozilla CanvasPath.quadraticCurveTo documentation> 
-quadraticCurveTo ::
-                 (MonadDOM m, IsCanvasPath self) =>
-                   self -> Double -> Double -> Double -> Double -> m ()
-quadraticCurveTo self cpx cpy x y
-  = liftDOM
-      (void
-         ((toCanvasPath self) ^. jsf "quadraticCurveTo"
-            [toJSVal cpx, toJSVal cpy, toJSVal x, toJSVal y]))
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/closePath MDN CanvasPath.closePath documentation>
+closePath :: (MonadDOM m, IsCanvasPath self) => self -> m ()
+closePath self = liftDOM (void ((Types.toCanvasPath self) ^. jsf "closePath" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.bezierCurveTo Mozilla 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
-         ((toCanvasPath self) ^. jsf "bezierCurveTo"
-            [toJSVal cp1x, toJSVal cp1y, toJSVal cp2x, toJSVal cp2y, toJSVal x,
-             toJSVal y]))
+-- | <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 ((Types.toCanvasPath self) ^. jsf "ellipse" [toJSVal x, toJSVal y, toJSVal radiusX, toJSVal radiusY, toJSVal rotation, toJSVal startAngle, toJSVal endAngle, P.maybe (P.return jsUndefined) toJSVal counterclockwise]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.arcTo Mozilla CanvasPath.arcTo documentation> 
-arcTo ::
-      (MonadDOM m, IsCanvasPath self) =>
-        self -> Double -> Double -> Double -> Double -> Double -> m ()
-arcTo self x1 y1 x2 y2 radius
-  = liftDOM
-      (void
-         ((toCanvasPath self) ^. jsf "arcTo"
-            [toJSVal x1, toJSVal y1, toJSVal x2, toJSVal y2, toJSVal radius]))
+-- | <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 ((Types.toCanvasPath self) ^. jsf "lineTo" [toJSVal x, toJSVal y]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.rect Mozilla CanvasPath.rect documentation> 
-rect ::
-     (MonadDOM m, IsCanvasPath self) =>
-       self -> Double -> Double -> Double -> Double -> m ()
-rect self x y w h
-  = liftDOM
-      (void
-         ((toCanvasPath self) ^. jsf "rect"
-            [toJSVal x, toJSVal y, toJSVal w, toJSVal h]))
+-- | <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 ((Types.toCanvasPath self) ^. jsf "moveTo" [toJSVal x, toJSVal y]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.arc Mozilla CanvasPath.arc documentation> 
-arc ::
-    (MonadDOM m, IsCanvasPath self) =>
-      self ->
-        Double -> Double -> Double -> Double -> Double -> Bool -> m ()
-arc self x y radius startAngle endAngle anticlockwise
-  = liftDOM
-      (void
-         ((toCanvasPath self) ^. jsf "arc"
-            [toJSVal x, toJSVal y, toJSVal radius, toJSVal startAngle,
-             toJSVal endAngle, toJSVal anticlockwise]))
+-- | <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 ((Types.toCanvasPath self) ^. jsf "quadraticCurveTo" [toJSVal cpx, toJSVal cpy, toJSVal x, toJSVal y]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.ellipse Mozilla CanvasPath.ellipse documentation> 
-ellipse ::
-        (MonadDOM m, IsCanvasPath self) =>
-          self ->
-            Double ->
-              Double ->
-                Double -> Double -> Double -> Double -> Double -> Bool -> m ()
-ellipse self x y radiusX radiusY rotation startAngle endAngle
-  anticlockwise
-  = liftDOM
-      (void
-         ((toCanvasPath self) ^. jsf "ellipse"
-            [toJSVal x, toJSVal y, toJSVal radiusX, toJSVal radiusY,
-             toJSVal rotation, toJSVal startAngle, toJSVal endAngle,
-             toJSVal anticlockwise]))
+-- | <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 ((Types.toCanvasPath self) ^. jsf "rect" [toJSVal x, toJSVal y, toJSVal w, toJSVal h]))
+
+-- | <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 ((Types.toCanvasPath self) ^. jsf "roundRect" [toJSVal x, toJSVal y, toJSVal w, toJSVal h, P.maybe (P.return jsUndefined) toJSVal radii]))
diff --git a/src/JSDOM/Generated/CanvasPathDrawingStyles.hs b/src/JSDOM/Generated/CanvasPathDrawingStyles.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasPathDrawingStyles.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasPathDrawingStyles
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getLineDash MDN CanvasPathDrawingStyles.getLineDash documentation>
+getLineDash :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> m [Double]
+getLineDash self = liftDOM ((((Types.toCanvasPathDrawingStyles self) ^. jsf "getLineDash" ()) >>= 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 ((Types.toCanvasPathDrawingStyles self) ^. jsf "getLineDash" ()))
+
+-- | <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 ((Types.toCanvasPathDrawingStyles self) ^. jsf "setLineDash" [toJSVal segments]))
+
+-- | <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 ((Types.toCanvasPathDrawingStyles self) ^. jss "lineWidth" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineWidth MDN CanvasPathDrawingStyles.lineWidth documentation>
+getLineWidth :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> m Double
+getLineWidth self = liftDOM ((((Types.toCanvasPathDrawingStyles self) ^. js "lineWidth") >>= valToNumber))
+
+-- | <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 ((Types.toCanvasPathDrawingStyles self) ^. jss "lineCap" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineCap MDN CanvasPathDrawingStyles.lineCap documentation>
+getLineCap :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> m CanvasLineCap
+getLineCap self = liftDOM ((((Types.toCanvasPathDrawingStyles self) ^. js "lineCap") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasPathDrawingStyles self) ^. jss "lineJoin" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineJoin MDN CanvasPathDrawingStyles.lineJoin documentation>
+getLineJoin :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> m CanvasLineJoin
+getLineJoin self = liftDOM ((((Types.toCanvasPathDrawingStyles self) ^. js "lineJoin") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasPathDrawingStyles self) ^. jss "miterLimit" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/miterLimit MDN CanvasPathDrawingStyles.miterLimit documentation>
+getMiterLimit :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> m Double
+getMiterLimit self = liftDOM ((((Types.toCanvasPathDrawingStyles self) ^. js "miterLimit") >>= valToNumber))
+
+-- | <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 ((Types.toCanvasPathDrawingStyles self) ^. jss "lineDashOffset" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineDashOffset MDN CanvasPathDrawingStyles.lineDashOffset documentation>
+getLineDashOffset :: (MonadDOM m, IsCanvasPathDrawingStyles self) => self -> m Double
+getLineDashOffset self = liftDOM ((((Types.toCanvasPathDrawingStyles self) ^. js "lineDashOffset") >>= valToNumber))
diff --git a/src/JSDOM/Generated/CanvasPattern.hs b/src/JSDOM/Generated/CanvasPattern.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasPattern.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasPattern
+       (setTransform, CanvasPattern(..), gTypeCanvasPattern)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "setTransform" [P.maybe (P.return jsUndefined) toJSVal transform]))
diff --git a/src/JSDOM/Generated/CanvasRect.hs b/src/JSDOM/Generated/CanvasRect.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasRect.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasRect
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toCanvasRect self) ^. jsf "clearRect" [toJSVal x, toJSVal y, toJSVal w, toJSVal h]))
+
+-- | <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 ((Types.toCanvasRect self) ^. jsf "fillRect" [toJSVal x, toJSVal y, toJSVal w, toJSVal h]))
+
+-- | <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 ((Types.toCanvasRect self) ^. jsf "strokeRect" [toJSVal x, toJSVal y, toJSVal w, toJSVal h]))
diff --git a/src/JSDOM/Generated/CanvasRenderingContext2D.hs b/src/JSDOM/Generated/CanvasRenderingContext2D.hs
--- a/src/JSDOM/Generated/CanvasRenderingContext2D.hs
+++ b/src/JSDOM/Generated/CanvasRenderingContext2D.hs
@@ -1,1087 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.CanvasRenderingContext2D
-       (save, restore, commit, scale, rotate, translate, transform,
-        setTransform, resetTransform, setLineDash, getLineDash,
-        getLineDash_, clearRect, fillRect, beginPath, fillPath, strokePath,
-        clipPath, fill, stroke, clip, isPointInPathPath,
-        isPointInPathPath_, isPointInStrokePath, isPointInStrokePath_,
-        isPointInPath, isPointInPath_, isPointInStroke, isPointInStroke_,
-        measureText, measureText_, setAlpha, setCompositeOperation,
-        setLineWidthFunction, setLineCapFunction, setLineJoinFunction,
-        setMiterLimitFunction, clearShadow, fillText, strokeText,
-        setStrokeColor, setStrokeColorGray, setStrokeColorRGB,
-        setStrokeColorCYMK, setFillColor, setFillColorGray,
-        setFillColorRGB, setFillColorCYMK, strokeRect, drawImage,
-        drawImageScaled, drawImagePart, drawImageFromRect, setShadow,
-        setShadowGray, setShadowRGB, setShadowCYMK, putImageData,
-        putImageDataDirty, webkitPutImageDataHD, webkitPutImageDataHDDirty,
-        createImageData, createImageData_, createImageDataSize,
-        createImageDataSize_, createLinearGradient, createLinearGradient_,
-        createRadialGradient, createRadialGradient_, createPattern,
-        createPattern_, createPatternUnsafe, createPatternUnchecked,
-        getImageData, getImageData_, webkitGetImageDataHD,
-        webkitGetImageDataHD_, drawFocusIfNeeded, drawFocusIfNeededPath,
-        getCanvas, setGlobalAlpha, getGlobalAlpha,
-        setGlobalCompositeOperation, getGlobalCompositeOperation,
-        setLineWidth, getLineWidth, setLineCap, getLineCap, setLineJoin,
-        getLineJoin, setMiterLimit, getMiterLimit, setShadowOffsetX,
-        getShadowOffsetX, setShadowOffsetY, getShadowOffsetY,
-        setShadowBlur, getShadowBlur, setShadowColor, getShadowColor,
-        setLineDashOffset, getLineDashOffset, setWebkitLineDash,
-        getWebkitLineDash, setWebkitLineDashOffset,
-        getWebkitLineDashOffset, setFont, getFont, setTextAlign,
-        getTextAlign, setTextBaseline, getTextBaseline, setDirection,
-        getDirection, setStrokeStyle, getStrokeStyle, setFillStyle,
-        getFillStyle, getWebkitBackingStorePixelRatio,
-        setImageSmoothingEnabled, getImageSmoothingEnabled,
-        setWebkitImageSmoothingEnabled, getWebkitImageSmoothingEnabled,
-        setImageSmoothingQuality, getImageSmoothingQuality,
-        CanvasRenderingContext2D(..), gTypeCanvasRenderingContext2D)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.save Mozilla CanvasRenderingContext2D.save documentation> 
-save :: (MonadDOM m) => CanvasRenderingContext2D -> m ()
-save self = liftDOM (void (self ^. jsf "save" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.restore Mozilla CanvasRenderingContext2D.restore documentation> 
-restore :: (MonadDOM m) => CanvasRenderingContext2D -> m ()
-restore self = liftDOM (void (self ^. jsf "restore" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.commit Mozilla CanvasRenderingContext2D.commit documentation> 
-commit :: (MonadDOM m) => CanvasRenderingContext2D -> m ()
-commit self = liftDOM (void (self ^. jsf "commit" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.scale Mozilla CanvasRenderingContext2D.scale documentation> 
-scale ::
-      (MonadDOM m) => CanvasRenderingContext2D -> Float -> Float -> m ()
-scale self sx sy
-  = liftDOM (void (self ^. jsf "scale" [toJSVal sx, toJSVal sy]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.rotate Mozilla CanvasRenderingContext2D.rotate documentation> 
-rotate :: (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
-rotate self angle
-  = liftDOM (void (self ^. jsf "rotate" [toJSVal angle]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.translate Mozilla CanvasRenderingContext2D.translate documentation> 
-translate ::
-          (MonadDOM m) => CanvasRenderingContext2D -> Float -> Float -> m ()
-translate self tx ty
-  = liftDOM (void (self ^. jsf "translate" [toJSVal tx, toJSVal ty]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.transform Mozilla CanvasRenderingContext2D.transform documentation> 
-transform ::
-          (MonadDOM m) =>
-            CanvasRenderingContext2D ->
-              Float -> Float -> Float -> Float -> Float -> Float -> m ()
-transform self m11 m12 m21 m22 dx dy
-  = liftDOM
-      (void
-         (self ^. jsf "transform"
-            [toJSVal m11, toJSVal m12, toJSVal m21, toJSVal m22, toJSVal dx,
-             toJSVal dy]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setTransform Mozilla CanvasRenderingContext2D.setTransform documentation> 
-setTransform ::
-             (MonadDOM m) =>
-               CanvasRenderingContext2D ->
-                 Float -> Float -> Float -> Float -> Float -> Float -> m ()
-setTransform self m11 m12 m21 m22 dx dy
-  = liftDOM
-      (void
-         (self ^. jsf "setTransform"
-            [toJSVal m11, toJSVal m12, toJSVal m21, toJSVal m22, toJSVal dx,
-             toJSVal dy]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.resetTransform Mozilla CanvasRenderingContext2D.resetTransform documentation> 
-resetTransform :: (MonadDOM m) => CanvasRenderingContext2D -> m ()
-resetTransform self
-  = liftDOM (void (self ^. jsf "resetTransform" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineDash Mozilla CanvasRenderingContext2D.setLineDash documentation> 
-setLineDash ::
-            (MonadDOM m) => CanvasRenderingContext2D -> [Float] -> m ()
-setLineDash self dash
-  = liftDOM (void (self ^. jsf "setLineDash" [toJSVal (array dash)]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.getLineDash Mozilla CanvasRenderingContext2D.getLineDash documentation> 
-getLineDash ::
-            (MonadDOM m) => CanvasRenderingContext2D -> m [Float]
-getLineDash self
-  = liftDOM ((self ^. jsf "getLineDash" ()) >>= fromJSArrayUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.getLineDash Mozilla CanvasRenderingContext2D.getLineDash documentation> 
-getLineDash_ :: (MonadDOM m) => CanvasRenderingContext2D -> m ()
-getLineDash_ self = liftDOM (void (self ^. jsf "getLineDash" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clearRect Mozilla CanvasRenderingContext2D.clearRect documentation> 
-clearRect ::
-          (MonadDOM m) =>
-            CanvasRenderingContext2D ->
-              Float -> Float -> Float -> Float -> m ()
-clearRect self x y width height
-  = liftDOM
-      (void
-         (self ^. jsf "clearRect"
-            [toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillRect Mozilla CanvasRenderingContext2D.fillRect documentation> 
-fillRect ::
-         (MonadDOM m) =>
-           CanvasRenderingContext2D ->
-             Float -> Float -> Float -> Float -> m ()
-fillRect self x y width height
-  = liftDOM
-      (void
-         (self ^. jsf "fillRect"
-            [toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.beginPath Mozilla CanvasRenderingContext2D.beginPath documentation> 
-beginPath :: (MonadDOM m) => CanvasRenderingContext2D -> m ()
-beginPath self = liftDOM (void (self ^. jsf "beginPath" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fill Mozilla CanvasRenderingContext2D.fill documentation> 
-fillPath ::
-         (MonadDOM m) =>
-           CanvasRenderingContext2D ->
-             Path2D -> Maybe CanvasWindingRule -> m ()
-fillPath self path winding
-  = liftDOM
-      (void (self ^. jsf "fill" [toJSVal path, toJSVal winding]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.stroke Mozilla CanvasRenderingContext2D.stroke documentation> 
-strokePath ::
-           (MonadDOM m) => CanvasRenderingContext2D -> Path2D -> m ()
-strokePath self path
-  = liftDOM (void (self ^. jsf "stroke" [toJSVal path]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clip Mozilla CanvasRenderingContext2D.clip documentation> 
-clipPath ::
-         (MonadDOM m) =>
-           CanvasRenderingContext2D ->
-             Path2D -> Maybe CanvasWindingRule -> m ()
-clipPath self path winding
-  = liftDOM
-      (void (self ^. jsf "clip" [toJSVal path, toJSVal winding]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fill Mozilla CanvasRenderingContext2D.fill documentation> 
-fill ::
-     (MonadDOM m) =>
-       CanvasRenderingContext2D -> Maybe CanvasWindingRule -> m ()
-fill self winding
-  = liftDOM (void (self ^. jsf "fill" [toJSVal winding]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.stroke Mozilla CanvasRenderingContext2D.stroke documentation> 
-stroke :: (MonadDOM m) => CanvasRenderingContext2D -> m ()
-stroke self = liftDOM (void (self ^. jsf "stroke" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clip Mozilla CanvasRenderingContext2D.clip documentation> 
-clip ::
-     (MonadDOM m) =>
-       CanvasRenderingContext2D -> Maybe CanvasWindingRule -> m ()
-clip self winding
-  = liftDOM (void (self ^. jsf "clip" [toJSVal winding]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInPath Mozilla CanvasRenderingContext2D.isPointInPath documentation> 
-isPointInPathPath ::
-                  (MonadDOM m) =>
-                    CanvasRenderingContext2D ->
-                      Path2D -> Float -> Float -> Maybe CanvasWindingRule -> m Bool
-isPointInPathPath self path x y winding
-  = liftDOM
-      ((self ^. jsf "isPointInPath"
-          [toJSVal path, toJSVal x, toJSVal y, toJSVal winding])
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInPath Mozilla CanvasRenderingContext2D.isPointInPath documentation> 
-isPointInPathPath_ ::
-                   (MonadDOM m) =>
-                     CanvasRenderingContext2D ->
-                       Path2D -> Float -> Float -> Maybe CanvasWindingRule -> m ()
-isPointInPathPath_ self path x y winding
-  = liftDOM
-      (void
-         (self ^. jsf "isPointInPath"
-            [toJSVal path, toJSVal x, toJSVal y, toJSVal winding]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInStroke Mozilla CanvasRenderingContext2D.isPointInStroke documentation> 
-isPointInStrokePath ::
-                    (MonadDOM m) =>
-                      CanvasRenderingContext2D -> Path2D -> Float -> Float -> m Bool
-isPointInStrokePath self path x y
-  = liftDOM
-      ((self ^. jsf "isPointInStroke"
-          [toJSVal path, toJSVal x, toJSVal y])
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInStroke Mozilla CanvasRenderingContext2D.isPointInStroke documentation> 
-isPointInStrokePath_ ::
-                     (MonadDOM m) =>
-                       CanvasRenderingContext2D -> Path2D -> Float -> Float -> m ()
-isPointInStrokePath_ self path x y
-  = liftDOM
-      (void
-         (self ^. jsf "isPointInStroke"
-            [toJSVal path, toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInPath Mozilla CanvasRenderingContext2D.isPointInPath documentation> 
-isPointInPath ::
-              (MonadDOM m) =>
-                CanvasRenderingContext2D ->
-                  Float -> Float -> Maybe CanvasWindingRule -> m Bool
-isPointInPath self x y winding
-  = liftDOM
-      ((self ^. jsf "isPointInPath"
-          [toJSVal x, toJSVal y, toJSVal winding])
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInPath Mozilla CanvasRenderingContext2D.isPointInPath documentation> 
-isPointInPath_ ::
-               (MonadDOM m) =>
-                 CanvasRenderingContext2D ->
-                   Float -> Float -> Maybe CanvasWindingRule -> m ()
-isPointInPath_ self x y winding
-  = liftDOM
-      (void
-         (self ^. jsf "isPointInPath"
-            [toJSVal x, toJSVal y, toJSVal winding]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInStroke Mozilla CanvasRenderingContext2D.isPointInStroke documentation> 
-isPointInStroke ::
-                (MonadDOM m) =>
-                  CanvasRenderingContext2D -> Float -> Float -> m Bool
-isPointInStroke self x y
-  = liftDOM
-      ((self ^. jsf "isPointInStroke" [toJSVal x, toJSVal y]) >>=
-         valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInStroke Mozilla CanvasRenderingContext2D.isPointInStroke documentation> 
-isPointInStroke_ ::
-                 (MonadDOM m) => CanvasRenderingContext2D -> Float -> Float -> m ()
-isPointInStroke_ self x y
-  = liftDOM
-      (void (self ^. jsf "isPointInStroke" [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.measureText Mozilla CanvasRenderingContext2D.measureText documentation> 
-measureText ::
-            (MonadDOM m, ToJSString text) =>
-              CanvasRenderingContext2D -> text -> m TextMetrics
-measureText self text
-  = liftDOM
-      ((self ^. jsf "measureText" [toJSVal text]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.measureText Mozilla CanvasRenderingContext2D.measureText documentation> 
-measureText_ ::
-             (MonadDOM m, ToJSString text) =>
-               CanvasRenderingContext2D -> text -> m ()
-measureText_ self text
-  = liftDOM (void (self ^. jsf "measureText" [toJSVal text]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setAlpha Mozilla CanvasRenderingContext2D.setAlpha documentation> 
-setAlpha ::
-         (MonadDOM m) => CanvasRenderingContext2D -> Maybe Float -> m ()
-setAlpha self alpha
-  = liftDOM (void (self ^. jsf "setAlpha" [toJSVal alpha]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setCompositeOperation Mozilla CanvasRenderingContext2D.setCompositeOperation documentation> 
-setCompositeOperation ::
-                      (MonadDOM m, ToJSString compositeOperation) =>
-                        CanvasRenderingContext2D -> Maybe compositeOperation -> m ()
-setCompositeOperation self compositeOperation
-  = liftDOM
-      (void
-         (self ^. jsf "setCompositeOperation" [toJSVal compositeOperation]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineWidth Mozilla CanvasRenderingContext2D.setLineWidth documentation> 
-setLineWidthFunction ::
-                     (MonadDOM m) => CanvasRenderingContext2D -> Maybe Float -> m ()
-setLineWidthFunction self width
-  = liftDOM (void (self ^. jsf "setLineWidth" [toJSVal width]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineCap Mozilla CanvasRenderingContext2D.setLineCap documentation> 
-setLineCapFunction ::
-                   (MonadDOM m, ToJSString cap) =>
-                     CanvasRenderingContext2D -> Maybe cap -> m ()
-setLineCapFunction self cap
-  = liftDOM (void (self ^. jsf "setLineCap" [toJSVal cap]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineJoin Mozilla CanvasRenderingContext2D.setLineJoin documentation> 
-setLineJoinFunction ::
-                    (MonadDOM m, ToJSString join) =>
-                      CanvasRenderingContext2D -> Maybe join -> m ()
-setLineJoinFunction self join
-  = liftDOM (void (self ^. jsf "setLineJoin" [toJSVal join]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setMiterLimit Mozilla CanvasRenderingContext2D.setMiterLimit documentation> 
-setMiterLimitFunction ::
-                      (MonadDOM m) => CanvasRenderingContext2D -> Maybe Float -> m ()
-setMiterLimitFunction self limit
-  = liftDOM (void (self ^. jsf "setMiterLimit" [toJSVal limit]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clearShadow Mozilla CanvasRenderingContext2D.clearShadow documentation> 
-clearShadow :: (MonadDOM m) => CanvasRenderingContext2D -> m ()
-clearShadow self = liftDOM (void (self ^. jsf "clearShadow" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillText Mozilla CanvasRenderingContext2D.fillText documentation> 
-fillText ::
-         (MonadDOM m, ToJSString text) =>
-           CanvasRenderingContext2D ->
-             text -> Float -> Float -> Maybe Float -> m ()
-fillText self text x y maxWidth
-  = liftDOM
-      (void
-         (self ^. jsf "fillText"
-            [toJSVal text, toJSVal x, toJSVal y, toJSVal maxWidth]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeText Mozilla CanvasRenderingContext2D.strokeText documentation> 
-strokeText ::
-           (MonadDOM m, ToJSString text) =>
-             CanvasRenderingContext2D ->
-               text -> Float -> Float -> Maybe Float -> m ()
-strokeText self text x y maxWidth
-  = liftDOM
-      (void
-         (self ^. jsf "strokeText"
-            [toJSVal text, toJSVal x, toJSVal y, toJSVal maxWidth]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
-setStrokeColor ::
-               (MonadDOM m, ToJSString color) =>
-                 CanvasRenderingContext2D -> color -> Maybe Float -> m ()
-setStrokeColor self color alpha
-  = liftDOM
-      (void
-         (self ^. jsf "setStrokeColor" [toJSVal color, toJSVal alpha]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
-setStrokeColorGray ::
-                   (MonadDOM m) =>
-                     CanvasRenderingContext2D -> Float -> Maybe Float -> m ()
-setStrokeColorGray self grayLevel alpha
-  = liftDOM
-      (void
-         (self ^. jsf "setStrokeColor" [toJSVal grayLevel, toJSVal alpha]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
-setStrokeColorRGB ::
-                  (MonadDOM m) =>
-                    CanvasRenderingContext2D ->
-                      Float -> Float -> Float -> Float -> m ()
-setStrokeColorRGB self r g b a
-  = liftDOM
-      (void
-         (self ^. jsf "setStrokeColor"
-            [toJSVal r, toJSVal g, toJSVal b, toJSVal a]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
-setStrokeColorCYMK ::
-                   (MonadDOM m) =>
-                     CanvasRenderingContext2D ->
-                       Float -> Float -> Float -> Float -> Float -> m ()
-setStrokeColorCYMK self c m y k a
-  = liftDOM
-      (void
-         (self ^. jsf "setStrokeColor"
-            [toJSVal c, toJSVal m, toJSVal y, toJSVal k, toJSVal a]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
-setFillColor ::
-             (MonadDOM m, ToJSString color) =>
-               CanvasRenderingContext2D -> color -> Maybe Float -> m ()
-setFillColor self color alpha
-  = liftDOM
-      (void (self ^. jsf "setFillColor" [toJSVal color, toJSVal alpha]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
-setFillColorGray ::
-                 (MonadDOM m) =>
-                   CanvasRenderingContext2D -> Float -> Maybe Float -> m ()
-setFillColorGray self grayLevel alpha
-  = liftDOM
-      (void
-         (self ^. jsf "setFillColor" [toJSVal grayLevel, toJSVal alpha]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
-setFillColorRGB ::
-                (MonadDOM m) =>
-                  CanvasRenderingContext2D ->
-                    Float -> Float -> Float -> Float -> m ()
-setFillColorRGB self r g b a
-  = liftDOM
-      (void
-         (self ^. jsf "setFillColor"
-            [toJSVal r, toJSVal g, toJSVal b, toJSVal a]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
-setFillColorCYMK ::
-                 (MonadDOM m) =>
-                   CanvasRenderingContext2D ->
-                     Float -> Float -> Float -> Float -> Float -> m ()
-setFillColorCYMK self c m y k a
-  = liftDOM
-      (void
-         (self ^. jsf "setFillColor"
-            [toJSVal c, toJSVal m, toJSVal y, toJSVal k, toJSVal a]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeRect Mozilla CanvasRenderingContext2D.strokeRect documentation> 
-strokeRect ::
-           (MonadDOM m) =>
-             CanvasRenderingContext2D ->
-               Float -> Float -> Float -> Float -> m ()
-strokeRect self x y width height
-  = liftDOM
-      (void
-         (self ^. jsf "strokeRect"
-            [toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
-drawImage ::
-          (MonadDOM m, IsCanvasImageSource image) =>
-            CanvasRenderingContext2D -> image -> Float -> Float -> m ()
-drawImage self image x y
-  = liftDOM
-      (void
-         (self ^. jsf "drawImage" [toJSVal image, toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
-drawImageScaled ::
-                (MonadDOM m, IsCanvasImageSource image) =>
-                  CanvasRenderingContext2D ->
-                    image -> Float -> Float -> Float -> Float -> m ()
-drawImageScaled self image x y width height
-  = liftDOM
-      (void
-         (self ^. jsf "drawImage"
-            [toJSVal image, toJSVal x, toJSVal y, toJSVal width,
-             toJSVal height]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
-drawImagePart ::
-              (MonadDOM 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
-  = liftDOM
-      (void
-         (self ^. jsf "drawImage"
-            [toJSVal image, toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh,
-             toJSVal dx, toJSVal dy, toJSVal dw, toJSVal dh]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImageFromRect Mozilla CanvasRenderingContext2D.drawImageFromRect documentation> 
-drawImageFromRect ::
-                  (MonadDOM 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
-  = liftDOM
-      (void
-         (self ^. jsf "drawImageFromRect"
-            [toJSVal image, toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh,
-             toJSVal dx, toJSVal dy, toJSVal dw, toJSVal dh,
-             toJSVal compositeOperation]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setShadow Mozilla CanvasRenderingContext2D.setShadow documentation> 
-setShadow ::
-          (MonadDOM m, ToJSString color) =>
-            CanvasRenderingContext2D ->
-              Float -> Float -> Float -> Maybe color -> Maybe Float -> m ()
-setShadow self width height blur color alpha
-  = liftDOM
-      (void
-         (self ^. jsf "setShadow"
-            [toJSVal width, toJSVal height, toJSVal blur, toJSVal color,
-             toJSVal alpha]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setShadow Mozilla CanvasRenderingContext2D.setShadow documentation> 
-setShadowGray ::
-              (MonadDOM m) =>
-                CanvasRenderingContext2D ->
-                  Float -> Float -> Float -> Float -> Maybe Float -> m ()
-setShadowGray self width height blur grayLevel alpha
-  = liftDOM
-      (void
-         (self ^. jsf "setShadow"
-            [toJSVal width, toJSVal height, toJSVal blur, toJSVal grayLevel,
-             toJSVal alpha]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setShadow Mozilla CanvasRenderingContext2D.setShadow documentation> 
-setShadowRGB ::
-             (MonadDOM m) =>
-               CanvasRenderingContext2D ->
-                 Float -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
-setShadowRGB self width height blur r g b a
-  = liftDOM
-      (void
-         (self ^. jsf "setShadow"
-            [toJSVal width, toJSVal height, toJSVal blur, toJSVal r, toJSVal g,
-             toJSVal b, toJSVal a]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setShadow Mozilla CanvasRenderingContext2D.setShadow documentation> 
-setShadowCYMK ::
-              (MonadDOM m) =>
-                CanvasRenderingContext2D ->
-                  Float ->
-                    Float -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
-setShadowCYMK self width height blur c m y k a
-  = liftDOM
-      (void
-         (self ^. jsf "setShadow"
-            [toJSVal width, toJSVal height, toJSVal blur, toJSVal c, toJSVal m,
-             toJSVal y, toJSVal k, toJSVal a]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.putImageData Mozilla CanvasRenderingContext2D.putImageData documentation> 
-putImageData ::
-             (MonadDOM m) =>
-               CanvasRenderingContext2D -> ImageData -> Float -> Float -> m ()
-putImageData self imagedata dx dy
-  = liftDOM
-      (void
-         (self ^. jsf "putImageData"
-            [toJSVal imagedata, toJSVal dx, toJSVal dy]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.putImageData Mozilla CanvasRenderingContext2D.putImageData documentation> 
-putImageDataDirty ::
-                  (MonadDOM m) =>
-                    CanvasRenderingContext2D ->
-                      ImageData ->
-                        Float -> Float -> Float -> Float -> Float -> Float -> m ()
-putImageDataDirty self imagedata dx dy dirtyX dirtyY dirtyWidth
-  dirtyHeight
-  = liftDOM
-      (void
-         (self ^. jsf "putImageData"
-            [toJSVal imagedata, toJSVal dx, toJSVal dy, toJSVal dirtyX,
-             toJSVal dirtyY, toJSVal dirtyWidth, toJSVal dirtyHeight]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitPutImageDataHD Mozilla CanvasRenderingContext2D.webkitPutImageDataHD documentation> 
-webkitPutImageDataHD ::
-                     (MonadDOM m) =>
-                       CanvasRenderingContext2D -> ImageData -> Float -> Float -> m ()
-webkitPutImageDataHD self imagedata dx dy
-  = liftDOM
-      (void
-         (self ^. jsf "webkitPutImageDataHD"
-            [toJSVal imagedata, toJSVal dx, toJSVal dy]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitPutImageDataHD Mozilla CanvasRenderingContext2D.webkitPutImageDataHD documentation> 
-webkitPutImageDataHDDirty ::
-                          (MonadDOM m) =>
-                            CanvasRenderingContext2D ->
-                              ImageData ->
-                                Float -> Float -> Float -> Float -> Float -> Float -> m ()
-webkitPutImageDataHDDirty self imagedata dx dy dirtyX dirtyY
-  dirtyWidth dirtyHeight
-  = liftDOM
-      (void
-         (self ^. jsf "webkitPutImageDataHD"
-            [toJSVal imagedata, toJSVal dx, toJSVal dy, toJSVal dirtyX,
-             toJSVal dirtyY, toJSVal dirtyWidth, toJSVal dirtyHeight]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
-createImageData ::
-                (MonadDOM m) =>
-                  CanvasRenderingContext2D -> Maybe ImageData -> m ImageData
-createImageData self imagedata
-  = liftDOM
-      ((self ^. jsf "createImageData" [toJSVal imagedata]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
-createImageData_ ::
-                 (MonadDOM m) => CanvasRenderingContext2D -> Maybe ImageData -> m ()
-createImageData_ self imagedata
-  = liftDOM
-      (void (self ^. jsf "createImageData" [toJSVal imagedata]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
-createImageDataSize ::
-                    (MonadDOM m) =>
-                      CanvasRenderingContext2D -> Float -> Float -> m ImageData
-createImageDataSize self sw sh
-  = liftDOM
-      ((self ^. jsf "createImageData" [toJSVal sw, toJSVal sh]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
-createImageDataSize_ ::
-                     (MonadDOM m) => CanvasRenderingContext2D -> Float -> Float -> m ()
-createImageDataSize_ self sw sh
-  = liftDOM
-      (void (self ^. jsf "createImageData" [toJSVal sw, toJSVal sh]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createLinearGradient Mozilla CanvasRenderingContext2D.createLinearGradient documentation> 
-createLinearGradient ::
-                     (MonadDOM m) =>
-                       CanvasRenderingContext2D ->
-                         Float -> Float -> Float -> Float -> m CanvasGradient
-createLinearGradient self x0 y0 x1 y1
-  = liftDOM
-      ((self ^. jsf "createLinearGradient"
-          [toJSVal x0, toJSVal y0, toJSVal x1, toJSVal y1])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createLinearGradient Mozilla CanvasRenderingContext2D.createLinearGradient documentation> 
-createLinearGradient_ ::
-                      (MonadDOM m) =>
-                        CanvasRenderingContext2D ->
-                          Float -> Float -> Float -> Float -> m ()
-createLinearGradient_ self x0 y0 x1 y1
-  = liftDOM
-      (void
-         (self ^. jsf "createLinearGradient"
-            [toJSVal x0, toJSVal y0, toJSVal x1, toJSVal y1]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createRadialGradient Mozilla CanvasRenderingContext2D.createRadialGradient documentation> 
-createRadialGradient ::
-                     (MonadDOM m) =>
-                       CanvasRenderingContext2D ->
-                         Float ->
-                           Float -> Float -> Float -> Float -> Float -> m CanvasGradient
-createRadialGradient self x0 y0 r0 x1 y1 r1
-  = liftDOM
-      ((self ^. jsf "createRadialGradient"
-          [toJSVal x0, toJSVal y0, toJSVal r0, toJSVal x1, toJSVal y1,
-           toJSVal r1])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createRadialGradient Mozilla CanvasRenderingContext2D.createRadialGradient documentation> 
-createRadialGradient_ ::
-                      (MonadDOM m) =>
-                        CanvasRenderingContext2D ->
-                          Float -> Float -> Float -> Float -> Float -> Float -> m ()
-createRadialGradient_ self x0 y0 r0 x1 y1 r1
-  = liftDOM
-      (void
-         (self ^. jsf "createRadialGradient"
-            [toJSVal x0, toJSVal y0, toJSVal r0, toJSVal x1, toJSVal y1,
-             toJSVal r1]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
-createPattern ::
-              (MonadDOM m, IsCanvasImageSource image, ToJSString repetition) =>
-                CanvasRenderingContext2D ->
-                  image -> repetition -> m (Maybe CanvasPattern)
-createPattern self image repetition
-  = liftDOM
-      ((self ^. jsf "createPattern" [toJSVal image, toJSVal repetition])
-         >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
-createPattern_ ::
-               (MonadDOM m, IsCanvasImageSource image, ToJSString repetition) =>
-                 CanvasRenderingContext2D -> image -> repetition -> m ()
-createPattern_ self image repetition
-  = liftDOM
-      (void
-         (self ^. jsf "createPattern" [toJSVal image, toJSVal repetition]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
-createPatternUnsafe ::
-                    (MonadDOM m, IsCanvasImageSource image, ToJSString repetition,
-                     HasCallStack) =>
-                      CanvasRenderingContext2D -> image -> repetition -> m CanvasPattern
-createPatternUnsafe self image repetition
-  = liftDOM
-      (((self ^. jsf "createPattern" [toJSVal image, toJSVal repetition])
-          >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
-createPatternUnchecked ::
-                       (MonadDOM m, IsCanvasImageSource image, ToJSString repetition) =>
-                         CanvasRenderingContext2D -> image -> repetition -> m CanvasPattern
-createPatternUnchecked self image repetition
-  = liftDOM
-      ((self ^. jsf "createPattern" [toJSVal image, toJSVal repetition])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.getImageData Mozilla CanvasRenderingContext2D.getImageData documentation> 
-getImageData ::
-             (MonadDOM m) =>
-               CanvasRenderingContext2D ->
-                 Float -> Float -> Float -> Float -> m ImageData
-getImageData self sx sy sw sh
-  = liftDOM
-      ((self ^. jsf "getImageData"
-          [toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.getImageData Mozilla CanvasRenderingContext2D.getImageData documentation> 
-getImageData_ ::
-              (MonadDOM m) =>
-                CanvasRenderingContext2D ->
-                  Float -> Float -> Float -> Float -> m ()
-getImageData_ self sx sy sw sh
-  = liftDOM
-      (void
-         (self ^. jsf "getImageData"
-            [toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitGetImageDataHD Mozilla CanvasRenderingContext2D.webkitGetImageDataHD documentation> 
-webkitGetImageDataHD ::
-                     (MonadDOM m) =>
-                       CanvasRenderingContext2D ->
-                         Float -> Float -> Float -> Float -> m ImageData
-webkitGetImageDataHD self sx sy sw sh
-  = liftDOM
-      ((self ^. jsf "webkitGetImageDataHD"
-          [toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitGetImageDataHD Mozilla CanvasRenderingContext2D.webkitGetImageDataHD documentation> 
-webkitGetImageDataHD_ ::
-                      (MonadDOM m) =>
-                        CanvasRenderingContext2D ->
-                          Float -> Float -> Float -> Float -> m ()
-webkitGetImageDataHD_ self sx sy sw sh
-  = liftDOM
-      (void
-         (self ^. jsf "webkitGetImageDataHD"
-            [toJSVal sx, toJSVal sy, toJSVal sw, toJSVal sh]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawFocusIfNeeded Mozilla CanvasRenderingContext2D.drawFocusIfNeeded documentation> 
-drawFocusIfNeeded ::
-                  (MonadDOM m, IsElement element) =>
-                    CanvasRenderingContext2D -> element -> m ()
-drawFocusIfNeeded self element
-  = liftDOM
-      (void (self ^. jsf "drawFocusIfNeeded" [toJSVal element]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawFocusIfNeeded Mozilla CanvasRenderingContext2D.drawFocusIfNeeded documentation> 
-drawFocusIfNeededPath ::
-                      (MonadDOM m, IsElement element) =>
-                        CanvasRenderingContext2D -> Path2D -> element -> m ()
-drawFocusIfNeededPath self path element
-  = liftDOM
-      (void
-         (self ^. jsf "drawFocusIfNeeded" [toJSVal path, toJSVal element]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.canvas Mozilla CanvasRenderingContext2D.canvas documentation> 
-getCanvas ::
-          (MonadDOM m) => CanvasRenderingContext2D -> m HTMLCanvasElement
-getCanvas self
-  = liftDOM ((self ^. js "canvas") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalAlpha Mozilla CanvasRenderingContext2D.globalAlpha documentation> 
-setGlobalAlpha ::
-               (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
-setGlobalAlpha self val
-  = liftDOM (self ^. jss "globalAlpha" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalAlpha Mozilla CanvasRenderingContext2D.globalAlpha documentation> 
-getGlobalAlpha ::
-               (MonadDOM m) => CanvasRenderingContext2D -> m Float
-getGlobalAlpha self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "globalAlpha") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalCompositeOperation Mozilla CanvasRenderingContext2D.globalCompositeOperation documentation> 
-setGlobalCompositeOperation ::
-                            (MonadDOM m, ToJSString val) =>
-                              CanvasRenderingContext2D -> val -> m ()
-setGlobalCompositeOperation self val
-  = liftDOM (self ^. jss "globalCompositeOperation" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalCompositeOperation Mozilla CanvasRenderingContext2D.globalCompositeOperation documentation> 
-getGlobalCompositeOperation ::
-                            (MonadDOM m, FromJSString result) =>
-                              CanvasRenderingContext2D -> m result
-getGlobalCompositeOperation self
-  = liftDOM
-      ((self ^. js "globalCompositeOperation") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineWidth Mozilla CanvasRenderingContext2D.lineWidth documentation> 
-setLineWidth ::
-             (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
-setLineWidth self val
-  = liftDOM (self ^. jss "lineWidth" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineWidth Mozilla CanvasRenderingContext2D.lineWidth documentation> 
-getLineWidth :: (MonadDOM m) => CanvasRenderingContext2D -> m Float
-getLineWidth self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "lineWidth") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineCap Mozilla CanvasRenderingContext2D.lineCap documentation> 
-setLineCap ::
-           (MonadDOM m, ToJSString val) =>
-             CanvasRenderingContext2D -> val -> m ()
-setLineCap self val = liftDOM (self ^. jss "lineCap" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineCap Mozilla CanvasRenderingContext2D.lineCap documentation> 
-getLineCap ::
-           (MonadDOM m, FromJSString result) =>
-             CanvasRenderingContext2D -> m result
-getLineCap self
-  = liftDOM ((self ^. js "lineCap") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineJoin Mozilla CanvasRenderingContext2D.lineJoin documentation> 
-setLineJoin ::
-            (MonadDOM m, ToJSString val) =>
-              CanvasRenderingContext2D -> val -> m ()
-setLineJoin self val
-  = liftDOM (self ^. jss "lineJoin" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineJoin Mozilla CanvasRenderingContext2D.lineJoin documentation> 
-getLineJoin ::
-            (MonadDOM m, FromJSString result) =>
-              CanvasRenderingContext2D -> m result
-getLineJoin self
-  = liftDOM ((self ^. js "lineJoin") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.miterLimit Mozilla CanvasRenderingContext2D.miterLimit documentation> 
-setMiterLimit ::
-              (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
-setMiterLimit self val
-  = liftDOM (self ^. jss "miterLimit" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.miterLimit Mozilla CanvasRenderingContext2D.miterLimit documentation> 
-getMiterLimit ::
-              (MonadDOM m) => CanvasRenderingContext2D -> m Float
-getMiterLimit self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "miterLimit") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowOffsetX Mozilla CanvasRenderingContext2D.shadowOffsetX documentation> 
-setShadowOffsetX ::
-                 (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
-setShadowOffsetX self val
-  = liftDOM (self ^. jss "shadowOffsetX" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowOffsetX Mozilla CanvasRenderingContext2D.shadowOffsetX documentation> 
-getShadowOffsetX ::
-                 (MonadDOM m) => CanvasRenderingContext2D -> m Float
-getShadowOffsetX self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "shadowOffsetX") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowOffsetY Mozilla CanvasRenderingContext2D.shadowOffsetY documentation> 
-setShadowOffsetY ::
-                 (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
-setShadowOffsetY self val
-  = liftDOM (self ^. jss "shadowOffsetY" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowOffsetY Mozilla CanvasRenderingContext2D.shadowOffsetY documentation> 
-getShadowOffsetY ::
-                 (MonadDOM m) => CanvasRenderingContext2D -> m Float
-getShadowOffsetY self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "shadowOffsetY") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowBlur Mozilla CanvasRenderingContext2D.shadowBlur documentation> 
-setShadowBlur ::
-              (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
-setShadowBlur self val
-  = liftDOM (self ^. jss "shadowBlur" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowBlur Mozilla CanvasRenderingContext2D.shadowBlur documentation> 
-getShadowBlur ::
-              (MonadDOM m) => CanvasRenderingContext2D -> m Float
-getShadowBlur self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "shadowBlur") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowColor Mozilla CanvasRenderingContext2D.shadowColor documentation> 
-setShadowColor ::
-               (MonadDOM m, ToJSString val) =>
-                 CanvasRenderingContext2D -> val -> m ()
-setShadowColor self val
-  = liftDOM (self ^. jss "shadowColor" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowColor Mozilla CanvasRenderingContext2D.shadowColor documentation> 
-getShadowColor ::
-               (MonadDOM m, FromJSString result) =>
-                 CanvasRenderingContext2D -> m result
-getShadowColor self
-  = liftDOM ((self ^. js "shadowColor") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineDashOffset Mozilla CanvasRenderingContext2D.lineDashOffset documentation> 
-setLineDashOffset ::
-                  (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
-setLineDashOffset self val
-  = liftDOM (self ^. jss "lineDashOffset" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineDashOffset Mozilla CanvasRenderingContext2D.lineDashOffset documentation> 
-getLineDashOffset ::
-                  (MonadDOM m) => CanvasRenderingContext2D -> m Float
-getLineDashOffset self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "lineDashOffset") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDash Mozilla CanvasRenderingContext2D.webkitLineDash documentation> 
-setWebkitLineDash ::
-                  (MonadDOM m) => CanvasRenderingContext2D -> [Float] -> m ()
-setWebkitLineDash self val
-  = liftDOM (self ^. jss "webkitLineDash" (toJSVal (array val)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDash Mozilla CanvasRenderingContext2D.webkitLineDash documentation> 
-getWebkitLineDash ::
-                  (MonadDOM m) => CanvasRenderingContext2D -> m [Float]
-getWebkitLineDash self
-  = liftDOM ((self ^. js "webkitLineDash") >>= fromJSArrayUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDashOffset Mozilla CanvasRenderingContext2D.webkitLineDashOffset documentation> 
-setWebkitLineDashOffset ::
-                        (MonadDOM m) => CanvasRenderingContext2D -> Float -> m ()
-setWebkitLineDashOffset self val
-  = liftDOM (self ^. jss "webkitLineDashOffset" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDashOffset Mozilla CanvasRenderingContext2D.webkitLineDashOffset documentation> 
-getWebkitLineDashOffset ::
-                        (MonadDOM m) => CanvasRenderingContext2D -> m Float
-getWebkitLineDashOffset self
-  = liftDOM
-      (realToFrac <$>
-         ((self ^. js "webkitLineDashOffset") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.font Mozilla CanvasRenderingContext2D.font documentation> 
-setFont ::
-        (MonadDOM m, ToJSString val) =>
-          CanvasRenderingContext2D -> val -> m ()
-setFont self val = liftDOM (self ^. jss "font" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.font Mozilla CanvasRenderingContext2D.font documentation> 
-getFont ::
-        (MonadDOM m, FromJSString result) =>
-          CanvasRenderingContext2D -> m result
-getFont self = liftDOM ((self ^. js "font") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.textAlign Mozilla CanvasRenderingContext2D.textAlign documentation> 
-setTextAlign ::
-             (MonadDOM m, ToJSString val) =>
-               CanvasRenderingContext2D -> val -> m ()
-setTextAlign self val
-  = liftDOM (self ^. jss "textAlign" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.textAlign Mozilla CanvasRenderingContext2D.textAlign documentation> 
-getTextAlign ::
-             (MonadDOM m, FromJSString result) =>
-               CanvasRenderingContext2D -> m result
-getTextAlign self
-  = liftDOM ((self ^. js "textAlign") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.textBaseline Mozilla CanvasRenderingContext2D.textBaseline documentation> 
-setTextBaseline ::
-                (MonadDOM m, ToJSString val) =>
-                  CanvasRenderingContext2D -> val -> m ()
-setTextBaseline self val
-  = liftDOM (self ^. jss "textBaseline" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.textBaseline Mozilla CanvasRenderingContext2D.textBaseline documentation> 
-getTextBaseline ::
-                (MonadDOM m, FromJSString result) =>
-                  CanvasRenderingContext2D -> m result
-getTextBaseline self
-  = liftDOM ((self ^. js "textBaseline") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.direction Mozilla CanvasRenderingContext2D.direction documentation> 
-setDirection ::
-             (MonadDOM m, ToJSString val) =>
-               CanvasRenderingContext2D -> val -> m ()
-setDirection self val
-  = liftDOM (self ^. jss "direction" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.direction Mozilla CanvasRenderingContext2D.direction documentation> 
-getDirection ::
-             (MonadDOM m, FromJSString result) =>
-               CanvasRenderingContext2D -> m result
-getDirection self
-  = liftDOM ((self ^. js "direction") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeStyle Mozilla CanvasRenderingContext2D.strokeStyle documentation> 
-setStrokeStyle ::
-               (MonadDOM m, IsCanvasStyle val) =>
-                 CanvasRenderingContext2D -> val -> m ()
-setStrokeStyle self val
-  = liftDOM (self ^. jss "strokeStyle" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeStyle Mozilla CanvasRenderingContext2D.strokeStyle documentation> 
-getStrokeStyle ::
-               (MonadDOM m) => CanvasRenderingContext2D -> m CanvasStyle
-getStrokeStyle self
-  = liftDOM ((self ^. js "strokeStyle") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillStyle Mozilla CanvasRenderingContext2D.fillStyle documentation> 
-setFillStyle ::
-             (MonadDOM m, IsCanvasStyle val) =>
-               CanvasRenderingContext2D -> val -> m ()
-setFillStyle self val
-  = liftDOM (self ^. jss "fillStyle" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillStyle Mozilla CanvasRenderingContext2D.fillStyle documentation> 
-getFillStyle ::
-             (MonadDOM m) => CanvasRenderingContext2D -> m CanvasStyle
-getFillStyle self
-  = liftDOM ((self ^. js "fillStyle") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitBackingStorePixelRatio Mozilla CanvasRenderingContext2D.webkitBackingStorePixelRatio documentation> 
-getWebkitBackingStorePixelRatio ::
-                                (MonadDOM m) => CanvasRenderingContext2D -> m Float
-getWebkitBackingStorePixelRatio self
-  = liftDOM
-      (realToFrac <$>
-         ((self ^. js "webkitBackingStorePixelRatio") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.imageSmoothingEnabled Mozilla CanvasRenderingContext2D.imageSmoothingEnabled documentation> 
-setImageSmoothingEnabled ::
-                         (MonadDOM m) => CanvasRenderingContext2D -> Bool -> m ()
-setImageSmoothingEnabled self val
-  = liftDOM (self ^. jss "imageSmoothingEnabled" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.imageSmoothingEnabled Mozilla CanvasRenderingContext2D.imageSmoothingEnabled documentation> 
-getImageSmoothingEnabled ::
-                         (MonadDOM m) => CanvasRenderingContext2D -> m Bool
-getImageSmoothingEnabled self
-  = liftDOM ((self ^. js "imageSmoothingEnabled") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitImageSmoothingEnabled Mozilla CanvasRenderingContext2D.webkitImageSmoothingEnabled documentation> 
-setWebkitImageSmoothingEnabled ::
-                               (MonadDOM m) => CanvasRenderingContext2D -> Bool -> m ()
-setWebkitImageSmoothingEnabled self val
-  = liftDOM (self ^. jss "webkitImageSmoothingEnabled" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitImageSmoothingEnabled Mozilla CanvasRenderingContext2D.webkitImageSmoothingEnabled documentation> 
-getWebkitImageSmoothingEnabled ::
-                               (MonadDOM m) => CanvasRenderingContext2D -> m Bool
-getWebkitImageSmoothingEnabled self
-  = liftDOM
-      ((self ^. js "webkitImageSmoothingEnabled") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.imageSmoothingQuality Mozilla CanvasRenderingContext2D.imageSmoothingQuality documentation> 
-setImageSmoothingQuality ::
-                         (MonadDOM m) =>
-                           CanvasRenderingContext2D -> ImageSmoothingQuality -> m ()
-setImageSmoothingQuality self val
-  = liftDOM (self ^. jss "imageSmoothingQuality" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.imageSmoothingQuality Mozilla CanvasRenderingContext2D.imageSmoothingQuality documentation> 
-getImageSmoothingQuality ::
-                         (MonadDOM m) => CanvasRenderingContext2D -> m ImageSmoothingQuality
-getImageSmoothingQuality self
-  = liftDOM
-      ((self ^. js "imageSmoothingQuality") >>= fromJSValUnchecked)
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasRenderingContext2D
+       (getCanvas, CanvasRenderingContext2D(..), gTypeCanvasRenderingContext2D)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/canvas MDN CanvasRenderingContext2D.canvas documentation>
+getCanvas :: (MonadDOM m) => CanvasRenderingContext2D -> m HTMLCanvasElement
+getCanvas self = liftDOM (((self ^. js "canvas") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CanvasRenderingContext2DSettings.hs b/src/JSDOM/Generated/CanvasRenderingContext2DSettings.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasRenderingContext2DSettings.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasRenderingContext2DSettings
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#canvasrenderingcontext2dsettings CanvasRenderingContext2DSettings specification>
+newCanvasRenderingContext2DSettings :: (MonadDOM m) => m CanvasRenderingContext2DSettings
+newCanvasRenderingContext2DSettings = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "alpha" (toJSVal val)))
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-alpha CanvasRenderingContext2DSettings.alpha specification>
+getAlpha :: (MonadDOM m) => CanvasRenderingContext2DSettings -> m (Maybe Bool)
+getAlpha self = liftDOM (((self ^. js "alpha") >>= 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 ((((self ^. js "alpha") >>= 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 (((self ^. js "alpha") >>= valToBool))
+
+-- | <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 (self ^. jss "desynchronized" (toJSVal val)))
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-desynchronized CanvasRenderingContext2DSettings.desynchronized specification>
+getDesynchronized :: (MonadDOM m) => CanvasRenderingContext2DSettings -> m (Maybe Bool)
+getDesynchronized self = liftDOM (((self ^. js "desynchronized") >>= 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 ((((self ^. js "desynchronized") >>= 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 (((self ^. js "desynchronized") >>= valToBool))
+
+-- | <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 (self ^. jss "colorSpace" (toJSVal val)))
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-colorspace CanvasRenderingContext2DSettings.colorSpace specification>
+getColorSpace :: (MonadDOM m) => CanvasRenderingContext2DSettings -> m (Maybe PredefinedColorSpace)
+getColorSpace self = liftDOM (((self ^. js "colorSpace") >>= 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 ((((self ^. js "colorSpace") >>= 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 (((self ^. js "colorSpace") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "colorType" (toJSVal val)))
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-colortype CanvasRenderingContext2DSettings.colorType specification>
+getColorType :: (MonadDOM m) => CanvasRenderingContext2DSettings -> m (Maybe CanvasColorType)
+getColorType self = liftDOM (((self ^. js "colorType") >>= 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 ((((self ^. js "colorType") >>= 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 (((self ^. js "colorType") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "willReadFrequently" (toJSVal val)))
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#dom-canvasrenderingcontext2dsettings-willreadfrequently CanvasRenderingContext2DSettings.willReadFrequently specification>
+getWillReadFrequently :: (MonadDOM m) => CanvasRenderingContext2DSettings -> m (Maybe Bool)
+getWillReadFrequently self = liftDOM (((self ^. js "willReadFrequently") >>= 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 ((((self ^. js "willReadFrequently") >>= 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 (((self ^. js "willReadFrequently") >>= valToBool))
diff --git a/src/JSDOM/Generated/CanvasSettings.hs b/src/JSDOM/Generated/CanvasSettings.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasSettings.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasSettings
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getContextAttributes MDN CanvasSettings.getContextAttributes documentation>
+getContextAttributes :: (MonadDOM m, IsCanvasSettings self) => self -> m CanvasRenderingContext2DSettings
+getContextAttributes self = liftDOM ((((Types.toCanvasSettings self) ^. jsf "getContextAttributes" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getContextAttributes MDN CanvasSettings.getContextAttributes documentation>
+getContextAttributes_ :: (MonadDOM m, IsCanvasSettings self) => self -> m ()
+getContextAttributes_ self = liftDOM (void ((Types.toCanvasSettings self) ^. jsf "getContextAttributes" ()))
diff --git a/src/JSDOM/Generated/CanvasShadowStyles.hs b/src/JSDOM/Generated/CanvasShadowStyles.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasShadowStyles.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasShadowStyles
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toCanvasShadowStyles self) ^. jss "shadowOffsetX" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowOffsetX MDN CanvasShadowStyles.shadowOffsetX documentation>
+getShadowOffsetX :: (MonadDOM m, IsCanvasShadowStyles self) => self -> m Double
+getShadowOffsetX self = liftDOM ((((Types.toCanvasShadowStyles self) ^. js "shadowOffsetX") >>= valToNumber))
+
+-- | <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 ((Types.toCanvasShadowStyles self) ^. jss "shadowOffsetY" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowOffsetY MDN CanvasShadowStyles.shadowOffsetY documentation>
+getShadowOffsetY :: (MonadDOM m, IsCanvasShadowStyles self) => self -> m Double
+getShadowOffsetY self = liftDOM ((((Types.toCanvasShadowStyles self) ^. js "shadowOffsetY") >>= valToNumber))
+
+-- | <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 ((Types.toCanvasShadowStyles self) ^. jss "shadowBlur" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowBlur MDN CanvasShadowStyles.shadowBlur documentation>
+getShadowBlur :: (MonadDOM m, IsCanvasShadowStyles self) => self -> m Double
+getShadowBlur self = liftDOM ((((Types.toCanvasShadowStyles self) ^. js "shadowBlur") >>= valToNumber))
+
+-- | <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 ((Types.toCanvasShadowStyles self) ^. jss "shadowColor" (toJSVal val)))
+
+-- | <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 ((((Types.toCanvasShadowStyles self) ^. js "shadowColor") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CanvasState.hs b/src/JSDOM/Generated/CanvasState.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasState.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasState
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/isContextLost MDN CanvasState.isContextLost documentation>
+isContextLost :: (MonadDOM m, IsCanvasState self) => self -> m Bool
+isContextLost self = liftDOM ((((Types.toCanvasState self) ^. jsf "isContextLost" ()) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/isContextLost MDN CanvasState.isContextLost documentation>
+isContextLost_ :: (MonadDOM m, IsCanvasState self) => self -> m ()
+isContextLost_ self = liftDOM (void ((Types.toCanvasState self) ^. jsf "isContextLost" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/reset MDN CanvasState.reset documentation>
+reset :: (MonadDOM m, IsCanvasState self) => self -> m ()
+reset self = liftDOM (void ((Types.toCanvasState self) ^. jsf "reset" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/restore MDN CanvasState.restore documentation>
+restore :: (MonadDOM m, IsCanvasState self) => self -> m ()
+restore self = liftDOM (void ((Types.toCanvasState self) ^. jsf "restore" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/save MDN CanvasState.save documentation>
+save :: (MonadDOM m, IsCanvasState self) => self -> m ()
+save self = liftDOM (void ((Types.toCanvasState self) ^. jsf "save" ()))
diff --git a/src/JSDOM/Generated/CanvasText.hs b/src/JSDOM/Generated/CanvasText.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasText.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasText
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toCanvasText self) ^. jsf "fillText" [toJSVal text, toJSVal x, toJSVal y, P.maybe (P.return jsUndefined) toJSVal maxWidth]))
+
+-- | <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 ((((Types.toCanvasText self) ^. jsf "measureText" [toJSVal text]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasText self) ^. jsf "measureText" [toJSVal text]))
+
+-- | <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 ((Types.toCanvasText self) ^. jsf "strokeText" [toJSVal text, toJSVal x, toJSVal y, P.maybe (P.return jsUndefined) toJSVal maxWidth]))
diff --git a/src/JSDOM/Generated/CanvasTextDrawingStyles.hs b/src/JSDOM/Generated/CanvasTextDrawingStyles.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasTextDrawingStyles.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasTextDrawingStyles
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toCanvasTextDrawingStyles self) ^. jss "lang" (toJSVal val)))
+
+-- | <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 ((((Types.toCanvasTextDrawingStyles self) ^. js "lang") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasTextDrawingStyles self) ^. jss "font" (toJSVal val)))
+
+-- | <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 ((((Types.toCanvasTextDrawingStyles self) ^. js "font") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasTextDrawingStyles self) ^. jss "textAlign" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/textAlign MDN CanvasTextDrawingStyles.textAlign documentation>
+getTextAlign :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> m CanvasTextAlign
+getTextAlign self = liftDOM ((((Types.toCanvasTextDrawingStyles self) ^. js "textAlign") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasTextDrawingStyles self) ^. jss "textBaseline" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/textBaseline MDN CanvasTextDrawingStyles.textBaseline documentation>
+getTextBaseline :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> m CanvasTextBaseline
+getTextBaseline self = liftDOM ((((Types.toCanvasTextDrawingStyles self) ^. js "textBaseline") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasTextDrawingStyles self) ^. jss "direction" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/direction MDN CanvasTextDrawingStyles.direction documentation>
+getDirection :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> m CanvasDirection
+getDirection self = liftDOM ((((Types.toCanvasTextDrawingStyles self) ^. js "direction") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasTextDrawingStyles self) ^. jss "letterSpacing" (toJSVal val)))
+
+-- | <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 ((((Types.toCanvasTextDrawingStyles self) ^. js "letterSpacing") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasTextDrawingStyles self) ^. jss "fontKerning" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fontKerning MDN CanvasTextDrawingStyles.fontKerning documentation>
+getFontKerning :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> m CanvasFontKerning
+getFontKerning self = liftDOM ((((Types.toCanvasTextDrawingStyles self) ^. js "fontKerning") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasTextDrawingStyles self) ^. jss "fontStretch" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fontStretch MDN CanvasTextDrawingStyles.fontStretch documentation>
+getFontStretch :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> m CanvasFontStretch
+getFontStretch self = liftDOM ((((Types.toCanvasTextDrawingStyles self) ^. js "fontStretch") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasTextDrawingStyles self) ^. jss "fontVariantCaps" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fontVariantCaps MDN CanvasTextDrawingStyles.fontVariantCaps documentation>
+getFontVariantCaps :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> m CanvasFontVariantCaps
+getFontVariantCaps self = liftDOM ((((Types.toCanvasTextDrawingStyles self) ^. js "fontVariantCaps") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasTextDrawingStyles self) ^. jss "textRendering" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/textRendering MDN CanvasTextDrawingStyles.textRendering documentation>
+getTextRendering :: (MonadDOM m, IsCanvasTextDrawingStyles self) => self -> m CanvasTextRendering
+getTextRendering self = liftDOM ((((Types.toCanvasTextDrawingStyles self) ^. js "textRendering") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCanvasTextDrawingStyles self) ^. jss "wordSpacing" (toJSVal val)))
+
+-- | <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 ((((Types.toCanvasTextDrawingStyles self) ^. js "wordSpacing") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CanvasTransform.hs b/src/JSDOM/Generated/CanvasTransform.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasTransform.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasTransform
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getTransform MDN CanvasTransform.getTransform documentation>
+getTransform :: (MonadDOM m, IsCanvasTransform self) => self -> m DOMMatrix
+getTransform self = liftDOM ((((Types.toCanvasTransform self) ^. jsf "getTransform" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getTransform MDN CanvasTransform.getTransform documentation>
+getTransform_ :: (MonadDOM m, IsCanvasTransform self) => self -> m ()
+getTransform_ self = liftDOM (void ((Types.toCanvasTransform self) ^. jsf "getTransform" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/resetTransform MDN CanvasTransform.resetTransform documentation>
+resetTransform :: (MonadDOM m, IsCanvasTransform self) => self -> m ()
+resetTransform self = liftDOM (void ((Types.toCanvasTransform self) ^. jsf "resetTransform" ()))
+
+-- | <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 ((Types.toCanvasTransform self) ^. jsf "rotate" [toJSVal angle]))
+
+-- | <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 ((Types.toCanvasTransform self) ^. jsf "scale" [toJSVal x, toJSVal y]))
+
+-- | <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 ((Types.toCanvasTransform self) ^. jsf "setTransform" [toJSVal a, toJSVal b, toJSVal c, toJSVal d, toJSVal e, toJSVal f]))
+
+-- | <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 ((Types.toCanvasTransform self) ^. jsf "setTransform" [P.maybe (P.return jsUndefined) toJSVal transform]))
+
+-- | <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 ((Types.toCanvasTransform self) ^. jsf "transform" [toJSVal a, toJSVal b, toJSVal c, toJSVal d, toJSVal e, toJSVal f]))
+
+-- | <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 ((Types.toCanvasTransform self) ^. jsf "translate" [toJSVal x, toJSVal y]))
diff --git a/src/JSDOM/Generated/CanvasUserInterface.hs b/src/JSDOM/Generated/CanvasUserInterface.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CanvasUserInterface.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CanvasUserInterface
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toCanvasUserInterface self) ^. jsf "drawFocusIfNeeded" [toJSVal element]))
+
+-- | <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 ((Types.toCanvasUserInterface self) ^. jsf "drawFocusIfNeeded" [toJSVal path, toJSVal element]))
diff --git a/src/JSDOM/Generated/CaptureController.hs b/src/JSDOM/Generated/CaptureController.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CaptureController.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from screen-capture (webref). Do not edit.
+module JSDOM.Generated.CaptureController
+       (CaptureController(..), gTypeCaptureController)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/CaretPosition.hs b/src/JSDOM/Generated/CaretPosition.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CaretPosition.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module JSDOM.Generated.CaretPosition
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CaretPosition/getClientRect MDN CaretPosition.getClientRect documentation>
+getClientRect :: (MonadDOM m) => CaretPosition -> m (Maybe DOMRect)
+getClientRect self = liftDOM (((self ^. jsf "getClientRect" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CaretPosition/getClientRect MDN CaretPosition.getClientRect documentation>
+getClientRect_ :: (MonadDOM m) => CaretPosition -> m ()
+getClientRect_ self = liftDOM (void (self ^. jsf "getClientRect" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CaretPosition/getClientRect MDN CaretPosition.getClientRect documentation>
+getClientRectUnsafe :: (MonadDOM m, HasCallStack) => CaretPosition -> m DOMRect
+getClientRectUnsafe self = liftDOM ((((self ^. jsf "getClientRect" ()) >>= 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 (((self ^. jsf "getClientRect" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CaretPosition/offsetNode MDN CaretPosition.offsetNode documentation>
+getOffsetNode :: (MonadDOM m) => CaretPosition -> m Node
+getOffsetNode self = liftDOM (((self ^. js "offsetNode") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CaretPosition/offset MDN CaretPosition.offset documentation>
+getOffset :: (MonadDOM m) => CaretPosition -> m Word
+getOffset self = liftDOM ((P.round <$> ((self ^. js "offset") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/CaretPositionFromPointOptions.hs b/src/JSDOM/Generated/CaretPositionFromPointOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CaretPositionFromPointOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module JSDOM.Generated.CaretPositionFromPointOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dictdef-caretpositionfrompointoptions CaretPositionFromPointOptions specification>
+newCaretPositionFromPointOptions :: (MonadDOM m) => m CaretPositionFromPointOptions
+newCaretPositionFromPointOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-caretpositionfrompointoptions-shadowroots CaretPositionFromPointOptions.shadowRoots specification>
+setShadowRoots :: (MonadDOM m) => CaretPositionFromPointOptions -> [ShadowRoot] -> m ()
+setShadowRoots self val = liftDOM (void (self ^. jss "shadowRoots" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-caretpositionfrompointoptions-shadowroots CaretPositionFromPointOptions.shadowRoots specification>
+getShadowRoots :: (MonadDOM m) => CaretPositionFromPointOptions -> m (Maybe [ShadowRoot])
+getShadowRoots self = liftDOM (((self ^. js "shadowRoots") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-caretpositionfrompointoptions-shadowroots CaretPositionFromPointOptions.shadowRoots specification>
+getShadowRootsUnsafe :: (MonadDOM m, HasCallStack) => CaretPositionFromPointOptions -> m [ShadowRoot]
+getShadowRootsUnsafe self = liftDOM ((((self ^. js "shadowRoots") >>= 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 (((self ^. js "shadowRoots") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ChannelMergerNode.hs b/src/JSDOM/Generated/ChannelMergerNode.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ChannelMergerNode.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.ChannelMergerNode
+       (newChannelMergerNode, ChannelMergerNode(..), gTypeChannelMergerNode)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "ChannelMergerNode") [toJSVal context, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ChannelMergerOptions.hs b/src/JSDOM/Generated/ChannelMergerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ChannelMergerOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.ChannelMergerOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#ChannelMergerOptions ChannelMergerOptions specification>
+newChannelMergerOptions :: (MonadDOM m) => m ChannelMergerOptions
+newChannelMergerOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-channelmergeroptions-numberofinputs ChannelMergerOptions.numberOfInputs specification>
+setNumberOfInputs :: (MonadDOM m) => ChannelMergerOptions -> Word -> m ()
+setNumberOfInputs self val = liftDOM (void (self ^. jss "numberOfInputs" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-channelmergeroptions-numberofinputs ChannelMergerOptions.numberOfInputs specification>
+getNumberOfInputs :: (MonadDOM m) => ChannelMergerOptions -> m (Maybe Word)
+getNumberOfInputs self = liftDOM (((self ^. js "numberOfInputs") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-channelmergeroptions-numberofinputs ChannelMergerOptions.numberOfInputs specification>
+getNumberOfInputsUnsafe :: (MonadDOM m, HasCallStack) => ChannelMergerOptions -> m Word
+getNumberOfInputsUnsafe self = liftDOM ((((self ^. js "numberOfInputs") >>= 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 ((P.round <$> ((self ^. js "numberOfInputs") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/ChannelSplitterNode.hs b/src/JSDOM/Generated/ChannelSplitterNode.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ChannelSplitterNode.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.ChannelSplitterNode
+       (newChannelSplitterNode, ChannelSplitterNode(..), gTypeChannelSplitterNode)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "ChannelSplitterNode") [toJSVal context, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ChannelSplitterOptions.hs b/src/JSDOM/Generated/ChannelSplitterOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ChannelSplitterOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.ChannelSplitterOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#ChannelSplitterOptions ChannelSplitterOptions specification>
+newChannelSplitterOptions :: (MonadDOM m) => m ChannelSplitterOptions
+newChannelSplitterOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-channelsplitteroptions-numberofoutputs ChannelSplitterOptions.numberOfOutputs specification>
+setNumberOfOutputs :: (MonadDOM m) => ChannelSplitterOptions -> Word -> m ()
+setNumberOfOutputs self val = liftDOM (void (self ^. jss "numberOfOutputs" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-channelsplitteroptions-numberofoutputs ChannelSplitterOptions.numberOfOutputs specification>
+getNumberOfOutputs :: (MonadDOM m) => ChannelSplitterOptions -> m (Maybe Word)
+getNumberOfOutputs self = liftDOM (((self ^. js "numberOfOutputs") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-channelsplitteroptions-numberofoutputs ChannelSplitterOptions.numberOfOutputs specification>
+getNumberOfOutputsUnsafe :: (MonadDOM m, HasCallStack) => ChannelSplitterOptions -> m Word
+getNumberOfOutputsUnsafe self = liftDOM ((((self ^. js "numberOfOutputs") >>= 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 ((P.round <$> ((self ^. js "numberOfOutputs") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/ChapterInformationInit.hs b/src/JSDOM/Generated/ChapterInformationInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ChapterInformationInit.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediasession (webref). Do not edit.
+module JSDOM.Generated.ChapterInformationInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediasession/#dictdef-chapterinformationinit ChapterInformationInit specification>
+newChapterInformationInit :: (MonadDOM m) => m ChapterInformationInit
+newChapterInformationInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-title ChapterInformationInit.title specification>
+setTitle :: (MonadDOM m, ToJSString val) => ChapterInformationInit -> val -> m ()
+setTitle self val = liftDOM (void (self ^. jss "title" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-title ChapterInformationInit.title specification>
+getTitle :: (MonadDOM m, FromJSString result) => ChapterInformationInit -> m (Maybe result)
+getTitle self = liftDOM (((self ^. js "title") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-title ChapterInformationInit.title specification>
+getTitleUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ChapterInformationInit -> m result
+getTitleUnsafe self = liftDOM ((((self ^. js "title") >>= fromMaybeJSString) >>= 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 (((self ^. js "title") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-starttime ChapterInformationInit.startTime specification>
+setStartTime :: (MonadDOM m) => ChapterInformationInit -> Double -> m ()
+setStartTime self val = liftDOM (void (self ^. jss "startTime" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-starttime ChapterInformationInit.startTime specification>
+getStartTime :: (MonadDOM m) => ChapterInformationInit -> m (Maybe Double)
+getStartTime self = liftDOM (((self ^. js "startTime") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-starttime ChapterInformationInit.startTime specification>
+getStartTimeUnsafe :: (MonadDOM m, HasCallStack) => ChapterInformationInit -> m Double
+getStartTimeUnsafe self = liftDOM ((((self ^. js "startTime") >>= 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 (((self ^. js "startTime") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-artwork ChapterInformationInit.artwork specification>
+setArtwork :: (MonadDOM m) => ChapterInformationInit -> [MediaImage] -> m ()
+setArtwork self val = liftDOM (void (self ^. jss "artwork" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-artwork ChapterInformationInit.artwork specification>
+getArtwork :: (MonadDOM m) => ChapterInformationInit -> m (Maybe [MediaImage])
+getArtwork self = liftDOM (((self ^. js "artwork") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-chapterinformationinit-artwork ChapterInformationInit.artwork specification>
+getArtworkUnsafe :: (MonadDOM m, HasCallStack) => ChapterInformationInit -> m [MediaImage]
+getArtworkUnsafe self = liftDOM ((((self ^. js "artwork") >>= 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 (((self ^. js "artwork") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CharacterData.hs b/src/JSDOM/Generated/CharacterData.hs
--- a/src/JSDOM/Generated/CharacterData.hs
+++ b/src/JSDOM/Generated/CharacterData.hs
@@ -1,100 +1,52 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.CharacterData
-       (substringData, substringData_, appendData, insertData, deleteData,
-        replaceData, setData, getData, getLength, CharacterData(..),
-        gTypeCharacterData, IsCharacterData, toCharacterData)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.substringData Mozilla CharacterData.substringData documentation> 
-substringData ::
-              (MonadDOM m, IsCharacterData self, FromJSString result) =>
-                self -> Word -> Word -> m result
-substringData self offset count
-  = liftDOM
-      (((toCharacterData self) ^. jsf "substringData"
-          [toJSVal offset, toJSVal count])
-         >>= fromJSValUnchecked)
+-- | <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 ((Types.toCharacterData self) ^. jsf "appendData" [toJSVal data']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.substringData Mozilla CharacterData.substringData documentation> 
-substringData_ ::
-               (MonadDOM m, IsCharacterData self) => self -> Word -> Word -> m ()
-substringData_ self offset count
-  = liftDOM
-      (void
-         ((toCharacterData self) ^. jsf "substringData"
-            [toJSVal offset, toJSVal count]))
+-- | <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 ((Types.toCharacterData self) ^. jsf "deleteData" [toJSVal offset, toJSVal count]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.appendData Mozilla CharacterData.appendData documentation> 
-appendData ::
-           (MonadDOM m, IsCharacterData self, ToJSString data') =>
-             self -> data' -> m ()
-appendData self data'
-  = liftDOM
-      (void ((toCharacterData self) ^. jsf "appendData" [toJSVal data']))
+-- | <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 ((Types.toCharacterData self) ^. jsf "insertData" [toJSVal offset, toJSVal data']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.insertData Mozilla CharacterData.insertData documentation> 
-insertData ::
-           (MonadDOM m, IsCharacterData self, ToJSString data') =>
-             self -> Word -> data' -> m ()
-insertData self offset data'
-  = liftDOM
-      (void
-         ((toCharacterData self) ^. jsf "insertData"
-            [toJSVal offset, toJSVal data']))
+-- | <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 ((Types.toCharacterData self) ^. jsf "replaceData" [toJSVal offset, toJSVal count, toJSVal data']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.deleteData Mozilla CharacterData.deleteData documentation> 
-deleteData ::
-           (MonadDOM m, IsCharacterData self) => self -> Word -> Word -> m ()
-deleteData self offset count
-  = liftDOM
-      (void
-         ((toCharacterData self) ^. jsf "deleteData"
-            [toJSVal offset, toJSVal count]))
+-- | <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 ((((Types.toCharacterData self) ^. jsf "substringData" [toJSVal offset, toJSVal count]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.replaceData Mozilla CharacterData.replaceData documentation> 
-replaceData ::
-            (MonadDOM m, IsCharacterData self, ToJSString data') =>
-              self -> Word -> Word -> data' -> m ()
-replaceData self offset count data'
-  = liftDOM
-      (void
-         ((toCharacterData self) ^. jsf "replaceData"
-            [toJSVal offset, toJSVal count, toJSVal data']))
+-- | <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 ((Types.toCharacterData self) ^. jsf "substringData" [toJSVal offset, toJSVal count]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.data Mozilla CharacterData.data documentation> 
-setData ::
-        (MonadDOM m, IsCharacterData self, ToJSString val) =>
-          self -> val -> m ()
-setData self val
-  = liftDOM ((toCharacterData self) ^. jss "data" (toJSVal val))
+-- | <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 ((Types.toCharacterData self) ^. jss "data" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.data Mozilla CharacterData.data documentation> 
-getData ::
-        (MonadDOM m, IsCharacterData self, FromJSString result) =>
-          self -> m result
-getData self
-  = liftDOM
-      (((toCharacterData self) ^. js "data") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toCharacterData self) ^. js "data") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.length Mozilla CharacterData.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/length MDN CharacterData.length documentation>
 getLength :: (MonadDOM m, IsCharacterData self) => self -> m Word
-getLength self
-  = liftDOM
-      (round <$>
-         (((toCharacterData self) ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> (((Types.toCharacterData self) ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/CheckVisibilityOptions.hs b/src/JSDOM/Generated/CheckVisibilityOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CheckVisibilityOptions.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module JSDOM.Generated.CheckVisibilityOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dictdef-checkvisibilityoptions CheckVisibilityOptions specification>
+newCheckVisibilityOptions :: (MonadDOM m) => m CheckVisibilityOptions
+newCheckVisibilityOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-checkopacity CheckVisibilityOptions.checkOpacity specification>
+setCheckOpacity :: (MonadDOM m) => CheckVisibilityOptions -> Bool -> m ()
+setCheckOpacity self val = liftDOM (void (self ^. jss "checkOpacity" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-checkopacity CheckVisibilityOptions.checkOpacity specification>
+getCheckOpacity :: (MonadDOM m) => CheckVisibilityOptions -> m (Maybe Bool)
+getCheckOpacity self = liftDOM (((self ^. js "checkOpacity") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-checkopacity CheckVisibilityOptions.checkOpacity specification>
+getCheckOpacityUnsafe :: (MonadDOM m, HasCallStack) => CheckVisibilityOptions -> m Bool
+getCheckOpacityUnsafe self = liftDOM ((((self ^. js "checkOpacity") >>= 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 (((self ^. js "checkOpacity") >>= valToBool))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-checkvisibilitycss CheckVisibilityOptions.checkVisibilityCSS specification>
+setCheckVisibilityCSS :: (MonadDOM m) => CheckVisibilityOptions -> Bool -> m ()
+setCheckVisibilityCSS self val = liftDOM (void (self ^. jss "checkVisibilityCSS" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-checkvisibilitycss CheckVisibilityOptions.checkVisibilityCSS specification>
+getCheckVisibilityCSS :: (MonadDOM m) => CheckVisibilityOptions -> m (Maybe Bool)
+getCheckVisibilityCSS self = liftDOM (((self ^. js "checkVisibilityCSS") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-checkvisibilitycss CheckVisibilityOptions.checkVisibilityCSS specification>
+getCheckVisibilityCSSUnsafe :: (MonadDOM m, HasCallStack) => CheckVisibilityOptions -> m Bool
+getCheckVisibilityCSSUnsafe self = liftDOM ((((self ^. js "checkVisibilityCSS") >>= 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 (((self ^. js "checkVisibilityCSS") >>= valToBool))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-contentvisibilityauto CheckVisibilityOptions.contentVisibilityAuto specification>
+setContentVisibilityAuto :: (MonadDOM m) => CheckVisibilityOptions -> Bool -> m ()
+setContentVisibilityAuto self val = liftDOM (void (self ^. jss "contentVisibilityAuto" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-contentvisibilityauto CheckVisibilityOptions.contentVisibilityAuto specification>
+getContentVisibilityAuto :: (MonadDOM m) => CheckVisibilityOptions -> m (Maybe Bool)
+getContentVisibilityAuto self = liftDOM (((self ^. js "contentVisibilityAuto") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-contentvisibilityauto CheckVisibilityOptions.contentVisibilityAuto specification>
+getContentVisibilityAutoUnsafe :: (MonadDOM m, HasCallStack) => CheckVisibilityOptions -> m Bool
+getContentVisibilityAutoUnsafe self = liftDOM ((((self ^. js "contentVisibilityAuto") >>= 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 (((self ^. js "contentVisibilityAuto") >>= valToBool))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-opacityproperty CheckVisibilityOptions.opacityProperty specification>
+setOpacityProperty :: (MonadDOM m) => CheckVisibilityOptions -> Bool -> m ()
+setOpacityProperty self val = liftDOM (void (self ^. jss "opacityProperty" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-opacityproperty CheckVisibilityOptions.opacityProperty specification>
+getOpacityProperty :: (MonadDOM m) => CheckVisibilityOptions -> m (Maybe Bool)
+getOpacityProperty self = liftDOM (((self ^. js "opacityProperty") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-opacityproperty CheckVisibilityOptions.opacityProperty specification>
+getOpacityPropertyUnsafe :: (MonadDOM m, HasCallStack) => CheckVisibilityOptions -> m Bool
+getOpacityPropertyUnsafe self = liftDOM ((((self ^. js "opacityProperty") >>= 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 (((self ^. js "opacityProperty") >>= valToBool))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-visibilityproperty CheckVisibilityOptions.visibilityProperty specification>
+setVisibilityProperty :: (MonadDOM m) => CheckVisibilityOptions -> Bool -> m ()
+setVisibilityProperty self val = liftDOM (void (self ^. jss "visibilityProperty" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-visibilityproperty CheckVisibilityOptions.visibilityProperty specification>
+getVisibilityProperty :: (MonadDOM m) => CheckVisibilityOptions -> m (Maybe Bool)
+getVisibilityProperty self = liftDOM (((self ^. js "visibilityProperty") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-checkvisibilityoptions-visibilityproperty CheckVisibilityOptions.visibilityProperty specification>
+getVisibilityPropertyUnsafe :: (MonadDOM m, HasCallStack) => CheckVisibilityOptions -> m Bool
+getVisibilityPropertyUnsafe self = liftDOM ((((self ^. js "visibilityProperty") >>= 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 (((self ^. js "visibilityProperty") >>= valToBool))
diff --git a/src/JSDOM/Generated/ChildNode.hs b/src/JSDOM/Generated/ChildNode.hs
--- a/src/JSDOM/Generated/ChildNode.hs
+++ b/src/JSDOM/Generated/ChildNode.hs
@@ -1,51 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.ChildNode
-       (before, after, replaceWith, remove, ChildNode(..), gTypeChildNode,
-        IsChildNode, toChildNode)
+       (after, before, remove, replaceWith, ChildNode(..), gTypeChildNode, IsChildNode, toChildNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.before Mozilla ChildNode.before documentation> 
-before ::
-       (MonadDOM m, IsChildNode self, IsNodeOrString nodes) =>
-         self -> [nodes] -> m ()
-before self nodes
-  = liftDOM
-      (void ((toChildNode self) ^. jsf "before" [toJSVal (array nodes)]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.after Mozilla ChildNode.after documentation> 
-after ::
-      (MonadDOM m, IsChildNode self, IsNodeOrString nodes) =>
-        self -> [nodes] -> m ()
-after self nodes
-  = liftDOM
-      (void ((toChildNode self) ^. jsf "after" [toJSVal (array nodes)]))
+-- | <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 ((Types.toChildNode self) ^. jsf "after" ([] ++ P.map toJSVal nodes)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.replaceWith Mozilla ChildNode.replaceWith documentation> 
-replaceWith ::
-            (MonadDOM m, IsChildNode self, IsNodeOrString nodes) =>
-              self -> [nodes] -> m ()
-replaceWith self nodes
-  = liftDOM
-      (void
-         ((toChildNode self) ^. jsf "replaceWith" [toJSVal (array nodes)]))
+-- | <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 ((Types.toChildNode self) ^. jsf "before" ([] ++ P.map toJSVal nodes)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.remove Mozilla ChildNode.remove documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/remove MDN ChildNode.remove documentation>
 remove :: (MonadDOM m, IsChildNode self) => self -> m ()
-remove self
-  = liftDOM (void ((toChildNode self) ^. jsf "remove" ()))
+remove self = liftDOM (void ((Types.toChildNode self) ^. jsf "remove" ()))
+
+-- | <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 ((Types.toChildNode self) ^. jsf "replaceWith" ([] ++ P.map toJSVal nodes)))
diff --git a/src/JSDOM/Generated/Client.hs b/src/JSDOM/Generated/Client.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Client.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.Client
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toClient self) ^. jsf "postMessage" [toJSVal message, toJSVal transfer]))
+
+-- | <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 ((Types.toClient self) ^. jsf "postMessage" [toJSVal message, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 ((((Types.toClient self) ^. js "url") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Client/frameType MDN Client.frameType documentation>
+getFrameType :: (MonadDOM m, IsClient self) => self -> m FrameType
+getFrameType self = liftDOM ((((Types.toClient self) ^. js "frameType") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toClient self) ^. js "id") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Client/type MDN Client.type documentation>
+getType :: (MonadDOM m, IsClient self) => self -> m ClientType
+getType self = liftDOM ((((Types.toClient self) ^. js "type") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ClientQueryOptions.hs b/src/JSDOM/Generated/ClientQueryOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ClientQueryOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.ClientQueryOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-clientqueryoptions ClientQueryOptions specification>
+newClientQueryOptions :: (MonadDOM m) => m ClientQueryOptions
+newClientQueryOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-clientqueryoptions-includeuncontrolled ClientQueryOptions.includeUncontrolled specification>
+setIncludeUncontrolled :: (MonadDOM m) => ClientQueryOptions -> Bool -> m ()
+setIncludeUncontrolled self val = liftDOM (void (self ^. jss "includeUncontrolled" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-clientqueryoptions-includeuncontrolled ClientQueryOptions.includeUncontrolled specification>
+getIncludeUncontrolled :: (MonadDOM m) => ClientQueryOptions -> m (Maybe Bool)
+getIncludeUncontrolled self = liftDOM (((self ^. js "includeUncontrolled") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-clientqueryoptions-includeuncontrolled ClientQueryOptions.includeUncontrolled specification>
+getIncludeUncontrolledUnsafe :: (MonadDOM m, HasCallStack) => ClientQueryOptions -> m Bool
+getIncludeUncontrolledUnsafe self = liftDOM ((((self ^. js "includeUncontrolled") >>= 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 (((self ^. js "includeUncontrolled") >>= valToBool))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-clientqueryoptions-type ClientQueryOptions.type specification>
+setType :: (MonadDOM m) => ClientQueryOptions -> ClientType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-clientqueryoptions-type ClientQueryOptions.type specification>
+getType :: (MonadDOM m) => ClientQueryOptions -> m (Maybe ClientType)
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-clientqueryoptions-type ClientQueryOptions.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => ClientQueryOptions -> m ClientType
+getTypeUnsafe self = liftDOM ((((self ^. js "type") >>= 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 (((self ^. js "type") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Clients.hs b/src/JSDOM/Generated/Clients.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Clients.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.Clients
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Clients/claim MDN Clients.claim documentation>
+claim :: (MonadDOM m) => Clients -> m ()
+claim self = liftDOM (void (((self ^. jsf "claim" ()) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "get" [toJSVal id]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "get" [toJSVal id]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "matchAll" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= 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 (((self ^. jsf "matchAll" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "openWindow" [toJSVal url]) >>= readPromise)) >>= 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 (((self ^. jsf "openWindow" [toJSVal url]) >>= readPromise)))
+
+-- | <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 ((((((self ^. jsf "openWindow" [toJSVal url]) >>= readPromise)) >>= 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 (((((self ^. jsf "openWindow" [toJSVal url]) >>= readPromise)) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Clipboard.hs b/src/JSDOM/Generated/Clipboard.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Clipboard.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from clipboard-apis (webref). Do not edit.
+module JSDOM.Generated.Clipboard
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((((self ^. jsf "read" [P.maybe (P.return jsUndefined) toJSVal formats]) >>= readPromise)) >>= 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 (((self ^. jsf "read" [P.maybe (P.return jsUndefined) toJSVal formats]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Clipboard/readText MDN Clipboard.readText documentation>
+readText :: (MonadDOM m, FromJSString result) => Clipboard -> m result
+readText self = liftDOM (((((self ^. jsf "readText" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Clipboard/readText MDN Clipboard.readText documentation>
+readText_ :: (MonadDOM m) => Clipboard -> m ()
+readText_ self = liftDOM (void (((self ^. jsf "readText" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Clipboard/write MDN Clipboard.write documentation>
+write :: (MonadDOM m) => Clipboard -> [ClipboardItem] -> m ()
+write self data' = liftDOM (void (((self ^. jsf "write" [toJSVal data']) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "writeText" [toJSVal data']) >>= readPromise)))
diff --git a/src/JSDOM/Generated/ClipboardChangeEvent.hs b/src/JSDOM/Generated/ClipboardChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ClipboardChangeEvent.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from clipboard-apis (webref). Do not edit.
+module JSDOM.Generated.ClipboardChangeEvent
+       (ClipboardChangeEvent(..), gTypeClipboardChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/ClipboardEvent.hs b/src/JSDOM/Generated/ClipboardEvent.hs
--- a/src/JSDOM/Generated/ClipboardEvent.hs
+++ b/src/JSDOM/Generated/ClipboardEvent.hs
@@ -1,50 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from clipboard-apis (webref). Do not edit.
 module JSDOM.Generated.ClipboardEvent
-       (newClipboardEvent, getClipboardData, getClipboardDataUnsafe,
-        getClipboardDataUnchecked, ClipboardEvent(..), gTypeClipboardEvent)
+       (newClipboardEvent, getClipboardData, getClipboardDataUnsafe, getClipboardDataUnchecked, ClipboardEvent(..), gTypeClipboardEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent Mozilla ClipboardEvent documentation> 
-newClipboardEvent ::
-                  (MonadDOM m, ToJSString type') =>
-                    type' -> Maybe ClipboardEventInit -> m ClipboardEvent
-newClipboardEvent type' eventInitDict
-  = liftDOM
-      (ClipboardEvent <$>
-         new (jsg "ClipboardEvent") [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "ClipboardEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent.clipboardData Mozilla ClipboardEvent.clipboardData documentation> 
-getClipboardData ::
-                 (MonadDOM m) => ClipboardEvent -> m (Maybe DataTransfer)
-getClipboardData self
-  = liftDOM ((self ^. js "clipboardData") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/ClipboardEvent/clipboardData MDN ClipboardEvent.clipboardData documentation>
+getClipboardData :: (MonadDOM m) => ClipboardEvent -> m (Maybe DataTransfer)
+getClipboardData self = liftDOM (((self ^. js "clipboardData") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent.clipboardData Mozilla ClipboardEvent.clipboardData documentation> 
-getClipboardDataUnsafe ::
-                       (MonadDOM m, HasCallStack) => ClipboardEvent -> m DataTransfer
-getClipboardDataUnsafe self
-  = liftDOM
-      (((self ^. js "clipboardData") >>= fromJSVal) >>=
-         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 ((((self ^. js "clipboardData") >>= 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 ::
-                          (MonadDOM m) => ClipboardEvent -> m DataTransfer
-getClipboardDataUnchecked self
-  = liftDOM ((self ^. js "clipboardData") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/ClipboardEvent/clipboardData MDN ClipboardEvent.clipboardData documentation>
+getClipboardDataUnchecked :: (MonadDOM m) => ClipboardEvent -> m DataTransfer
+getClipboardDataUnchecked self = liftDOM (((self ^. js "clipboardData") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ClipboardEventInit.hs b/src/JSDOM/Generated/ClipboardEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ClipboardEventInit.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from clipboard-apis (webref). Do not edit.
+module JSDOM.Generated.ClipboardEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/clipboard-apis/#dictdef-clipboardeventinit ClipboardEventInit specification>
+newClipboardEventInit :: (MonadDOM m) => m ClipboardEventInit
+newClipboardEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboardeventinit-clipboarddata ClipboardEventInit.clipboardData specification>
+setClipboardData :: (MonadDOM m) => ClipboardEventInit -> Maybe DataTransfer -> m ()
+setClipboardData self val = liftDOM (void (self ^. jss "clipboardData" (toJSVal val)))
+
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboardeventinit-clipboarddata ClipboardEventInit.clipboardData specification>
+getClipboardData :: (MonadDOM m) => ClipboardEventInit -> m (Maybe DataTransfer)
+getClipboardData self = liftDOM (((self ^. js "clipboardData") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboardeventinit-clipboarddata ClipboardEventInit.clipboardData specification>
+getClipboardDataUnsafe :: (MonadDOM m, HasCallStack) => ClipboardEventInit -> m DataTransfer
+getClipboardDataUnsafe self = liftDOM ((((self ^. js "clipboardData") >>= 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 (((self ^. js "clipboardData") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ClipboardItem.hs b/src/JSDOM/Generated/ClipboardItem.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ClipboardItem.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from clipboard-apis (webref). Do not edit.
+module JSDOM.Generated.ClipboardItem
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "ClipboardItem") [toJSVal items, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 (((((self ^. jsf "getType" [toJSVal type']) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "getType" [toJSVal type']) >>= readPromise)))
+
+-- | <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 ((((jsg "ClipboardItem") ^. jsf "supports" [toJSVal type']) >>= valToBool))
+
+-- | <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 ((jsg "ClipboardItem") ^. jsf "supports" [toJSVal type']))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ClipboardItem/presentationStyle MDN ClipboardItem.presentationStyle documentation>
+getPresentationStyle :: (MonadDOM m) => ClipboardItem -> m PresentationStyle
+getPresentationStyle self = liftDOM (((self ^. js "presentationStyle") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ClipboardItem/types MDN ClipboardItem.types documentation>
+getTypes :: (MonadDOM m, FromJSString result) => ClipboardItem -> m [result]
+getTypes self = liftDOM (((self ^. js "types") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ClipboardItemOptions.hs b/src/JSDOM/Generated/ClipboardItemOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ClipboardItemOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from clipboard-apis (webref). Do not edit.
+module JSDOM.Generated.ClipboardItemOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/clipboard-apis/#dictdef-clipboarditemoptions ClipboardItemOptions specification>
+newClipboardItemOptions :: (MonadDOM m) => m ClipboardItemOptions
+newClipboardItemOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboarditemoptions-presentationstyle ClipboardItemOptions.presentationStyle specification>
+setPresentationStyle :: (MonadDOM m) => ClipboardItemOptions -> PresentationStyle -> m ()
+setPresentationStyle self val = liftDOM (void (self ^. jss "presentationStyle" (toJSVal val)))
+
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboarditemoptions-presentationstyle ClipboardItemOptions.presentationStyle specification>
+getPresentationStyle :: (MonadDOM m) => ClipboardItemOptions -> m (Maybe PresentationStyle)
+getPresentationStyle self = liftDOM (((self ^. js "presentationStyle") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboarditemoptions-presentationstyle ClipboardItemOptions.presentationStyle specification>
+getPresentationStyleUnsafe :: (MonadDOM m, HasCallStack) => ClipboardItemOptions -> m PresentationStyle
+getPresentationStyleUnsafe self = liftDOM ((((self ^. js "presentationStyle") >>= 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 (((self ^. js "presentationStyle") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ClipboardUnsanitizedFormats.hs b/src/JSDOM/Generated/ClipboardUnsanitizedFormats.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ClipboardUnsanitizedFormats.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from clipboard-apis (webref). Do not edit.
+module JSDOM.Generated.ClipboardUnsanitizedFormats
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/clipboard-apis/#dictdef-clipboardunsanitizedformats ClipboardUnsanitizedFormats specification>
+newClipboardUnsanitizedFormats :: (MonadDOM m) => m ClipboardUnsanitizedFormats
+newClipboardUnsanitizedFormats = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "unsanitized" (toJSVal val)))
+
+-- | <https://w3c.github.io/clipboard-apis/#dom-clipboardunsanitizedformats-unsanitized ClipboardUnsanitizedFormats.unsanitized specification>
+getUnsanitized :: (MonadDOM m, FromJSString result) => ClipboardUnsanitizedFormats -> m (Maybe [result])
+getUnsanitized self = liftDOM (((self ^. js "unsanitized") >>= 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 ((((self ^. js "unsanitized") >>= 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 (((self ^. js "unsanitized") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CloseEvent.hs b/src/JSDOM/Generated/CloseEvent.hs
--- a/src/JSDOM/Generated/CloseEvent.hs
+++ b/src/JSDOM/Generated/CloseEvent.hs
@@ -1,45 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from websockets (webref). Do not edit.
 module JSDOM.Generated.CloseEvent
-       (newCloseEvent, getWasClean, getCode, getReason, CloseEvent(..),
-        gTypeCloseEvent)
+       (newCloseEvent, getWasClean, getCode, getReason, CloseEvent(..), gTypeCloseEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent Mozilla CloseEvent documentation> 
-newCloseEvent ::
-              (MonadDOM m, ToJSString type') =>
-                type' -> Maybe CloseEventInit -> m CloseEvent
-newCloseEvent type' eventInitDict
-  = liftDOM
-      (CloseEvent <$>
-         new (jsg "CloseEvent") [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "CloseEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent.wasClean Mozilla CloseEvent.wasClean documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/CloseEvent/wasClean MDN CloseEvent.wasClean documentation>
 getWasClean :: (MonadDOM m) => CloseEvent -> m Bool
-getWasClean self = liftDOM ((self ^. js "wasClean") >>= valToBool)
+getWasClean self = liftDOM (((self ^. js "wasClean") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent.code Mozilla CloseEvent.code documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/CloseEvent/code MDN CloseEvent.code documentation>
 getCode :: (MonadDOM m) => CloseEvent -> m Word
-getCode self
-  = liftDOM (round <$> ((self ^. js "code") >>= valToNumber))
+getCode self = liftDOM ((P.round <$> ((self ^. js "code") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent.reason Mozilla CloseEvent.reason documentation> 
-getReason ::
-          (MonadDOM m, FromJSString result) => CloseEvent -> m result
-getReason self
-  = liftDOM ((self ^. js "reason") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CloseEvent/reason MDN CloseEvent.reason documentation>
+getReason :: (MonadDOM m, FromJSString result) => CloseEvent -> m result
+getReason self = liftDOM (((self ^. js "reason") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CloseEventInit.hs b/src/JSDOM/Generated/CloseEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CloseEventInit.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from websockets (webref). Do not edit.
+module JSDOM.Generated.CloseEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://websockets.spec.whatwg.org/#dictdef-closeeventinit CloseEventInit specification>
+newCloseEventInit :: (MonadDOM m) => m CloseEventInit
+newCloseEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-wasclean CloseEventInit.wasClean specification>
+setWasClean :: (MonadDOM m) => CloseEventInit -> Bool -> m ()
+setWasClean self val = liftDOM (void (self ^. jss "wasClean" (toJSVal val)))
+
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-wasclean CloseEventInit.wasClean specification>
+getWasClean :: (MonadDOM m) => CloseEventInit -> m (Maybe Bool)
+getWasClean self = liftDOM (((self ^. js "wasClean") >>= fromJSValUnchecked))
+
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-wasclean CloseEventInit.wasClean specification>
+getWasCleanUnsafe :: (MonadDOM m, HasCallStack) => CloseEventInit -> m Bool
+getWasCleanUnsafe self = liftDOM ((((self ^. js "wasClean") >>= 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 (((self ^. js "wasClean") >>= valToBool))
+
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-code CloseEventInit.code specification>
+setCode :: (MonadDOM m) => CloseEventInit -> Word -> m ()
+setCode self val = liftDOM (void (self ^. jss "code" (toJSVal val)))
+
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-code CloseEventInit.code specification>
+getCode :: (MonadDOM m) => CloseEventInit -> m (Maybe Word)
+getCode self = liftDOM (((self ^. js "code") >>= fromJSValUnchecked))
+
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-code CloseEventInit.code specification>
+getCodeUnsafe :: (MonadDOM m, HasCallStack) => CloseEventInit -> m Word
+getCodeUnsafe self = liftDOM ((((self ^. js "code") >>= 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 ((P.round <$> ((self ^. js "code") >>= valToNumber)))
+
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-reason CloseEventInit.reason specification>
+setReason :: (MonadDOM m, ToJSString val) => CloseEventInit -> val -> m ()
+setReason self val = liftDOM (void (self ^. jss "reason" (toJSVal val)))
+
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-reason CloseEventInit.reason specification>
+getReason :: (MonadDOM m, FromJSString result) => CloseEventInit -> m (Maybe result)
+getReason self = liftDOM (((self ^. js "reason") >>= fromMaybeJSString))
+
+-- | <https://websockets.spec.whatwg.org/#dom-closeeventinit-reason CloseEventInit.reason specification>
+getReasonUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CloseEventInit -> m result
+getReasonUnsafe self = liftDOM ((((self ^. js "reason") >>= fromMaybeJSString) >>= 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 (((self ^. js "reason") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CloseWatcher.hs b/src/JSDOM/Generated/CloseWatcher.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CloseWatcher.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CloseWatcher
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CloseWatcher/CloseWatcher MDN CloseWatcher. documentation>
+newCloseWatcher :: (MonadDOM m) => Maybe CloseWatcherOptions -> m CloseWatcher
+newCloseWatcher options = liftDOM (((new (jsg "CloseWatcher") [P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CloseWatcher/close MDN CloseWatcher.close documentation>
+close :: (MonadDOM m) => CloseWatcher -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CloseWatcher/destroy MDN CloseWatcher.destroy documentation>
+destroy :: (MonadDOM m) => CloseWatcher -> m ()
+destroy self = liftDOM (void (self ^. jsf "destroy" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CloseWatcher/requestClose MDN CloseWatcher.requestClose documentation>
+requestClose :: (MonadDOM m) => CloseWatcher -> m ()
+requestClose self = liftDOM (void (self ^. jsf "requestClose" ()))
+
+-- | <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/JSDOM/Generated/CloseWatcherOptions.hs b/src/JSDOM/Generated/CloseWatcherOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CloseWatcherOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CloseWatcherOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#closewatcheroptions CloseWatcherOptions specification>
+newCloseWatcherOptions :: (MonadDOM m) => m CloseWatcherOptions
+newCloseWatcherOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "signal" (toJSVal val)))
+
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#dom-closewatcheroptions-signal CloseWatcherOptions.signal specification>
+getSignal :: (MonadDOM m) => CloseWatcherOptions -> m (Maybe AbortSignal)
+getSignal self = liftDOM (((self ^. js "signal") >>= 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 ((((self ^. js "signal") >>= 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 (((self ^. js "signal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CommandEvent.hs b/src/JSDOM/Generated/CommandEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CommandEvent.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CommandEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "CommandEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CommandEvent/source MDN CommandEvent.source documentation>
+getSource :: (MonadDOM m) => CommandEvent -> m (Maybe Element)
+getSource self = liftDOM (((self ^. js "source") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CommandEvent/source MDN CommandEvent.source documentation>
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => CommandEvent -> m Element
+getSourceUnsafe self = liftDOM ((((self ^. js "source") >>= 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 (((self ^. js "source") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CommandEvent/command MDN CommandEvent.command documentation>
+getCommand :: (MonadDOM m, FromJSString result) => CommandEvent -> m result
+getCommand self = liftDOM (((self ^. js "command") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CommandEventInit.hs b/src/JSDOM/Generated/CommandEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CommandEventInit.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CommandEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#commandeventinit CommandEventInit specification>
+newCommandEventInit :: (MonadDOM m) => m CommandEventInit
+newCommandEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+setSource :: (MonadDOM m, IsElement val) => CommandEventInit -> Maybe val -> m ()
+setSource self val = liftDOM (void (self ^. jss "source" (toJSVal val)))
+
+getSource :: (MonadDOM m) => CommandEventInit -> m (Maybe Element)
+getSource self = liftDOM (((self ^. js "source") >>= fromJSValUnchecked))
+
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => CommandEventInit -> m Element
+getSourceUnsafe self = liftDOM ((((self ^. js "source") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getSourceUnchecked :: (MonadDOM m) => CommandEventInit -> m Element
+getSourceUnchecked self = liftDOM (((self ^. js "source") >>= fromJSValUnchecked))
+
+setCommand :: (MonadDOM m, ToJSString val) => CommandEventInit -> val -> m ()
+setCommand self val = liftDOM (void (self ^. jss "command" (toJSVal val)))
+
+getCommand :: (MonadDOM m, FromJSString result) => CommandEventInit -> m (Maybe result)
+getCommand self = liftDOM (((self ^. js "command") >>= fromMaybeJSString))
+
+getCommandUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CommandEventInit -> m result
+getCommandUnsafe self = liftDOM ((((self ^. js "command") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getCommandUnchecked :: (MonadDOM m, FromJSString result) => CommandEventInit -> m result
+getCommandUnchecked self = liftDOM (((self ^. js "command") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CommandLineAPIHost.hs b/src/JSDOM/Generated/CommandLineAPIHost.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/CommandLineAPIHost.hs
+++ /dev/null
@@ -1,98 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.CommandLineAPIHost
-       (clearConsoleMessages, copyText, inspect, inspectedObject,
-        inspectedObject_, getEventListeners, getEventListeners_,
-        databaseId, databaseId_, storageId, storageId_,
-        CommandLineAPIHost(..), gTypeCommandLineAPIHost)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.clearConsoleMessages Mozilla CommandLineAPIHost.clearConsoleMessages documentation> 
-clearConsoleMessages :: (MonadDOM m) => CommandLineAPIHost -> m ()
-clearConsoleMessages self
-  = liftDOM (void (self ^. jsf "clearConsoleMessages" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.copyText Mozilla CommandLineAPIHost.copyText documentation> 
-copyText ::
-         (MonadDOM m, ToJSString text) => CommandLineAPIHost -> text -> m ()
-copyText self text
-  = liftDOM (void (self ^. jsf "copyText" [toJSVal text]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.inspect Mozilla CommandLineAPIHost.inspect documentation> 
-inspect ::
-        (MonadDOM m, ToJSVal objectId, ToJSVal hints) =>
-          CommandLineAPIHost -> objectId -> hints -> m ()
-inspect self objectId hints
-  = liftDOM
-      (void (self ^. jsf "inspect" [toJSVal objectId, toJSVal hints]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.inspectedObject Mozilla CommandLineAPIHost.inspectedObject documentation> 
-inspectedObject :: (MonadDOM m) => CommandLineAPIHost -> m JSVal
-inspectedObject self
-  = liftDOM ((self ^. jsf "inspectedObject" ()) >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.inspectedObject Mozilla CommandLineAPIHost.inspectedObject documentation> 
-inspectedObject_ :: (MonadDOM m) => CommandLineAPIHost -> m ()
-inspectedObject_ self
-  = liftDOM (void (self ^. jsf "inspectedObject" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.getEventListeners Mozilla CommandLineAPIHost.getEventListeners documentation> 
-getEventListeners ::
-                  (MonadDOM m, IsNode node) => CommandLineAPIHost -> node -> m Array
-getEventListeners self node
-  = liftDOM
-      ((self ^. jsf "getEventListeners" [toJSVal node]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.getEventListeners Mozilla CommandLineAPIHost.getEventListeners documentation> 
-getEventListeners_ ::
-                   (MonadDOM m, IsNode node) => CommandLineAPIHost -> node -> m ()
-getEventListeners_ self node
-  = liftDOM (void (self ^. jsf "getEventListeners" [toJSVal node]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.databaseId Mozilla CommandLineAPIHost.databaseId documentation> 
-databaseId ::
-           (MonadDOM m, ToJSVal database, FromJSString result) =>
-             CommandLineAPIHost -> database -> m result
-databaseId self database
-  = liftDOM
-      ((self ^. jsf "databaseId" [toJSVal database]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.databaseId Mozilla CommandLineAPIHost.databaseId documentation> 
-databaseId_ ::
-            (MonadDOM m, ToJSVal database) =>
-              CommandLineAPIHost -> database -> m ()
-databaseId_ self database
-  = liftDOM (void (self ^. jsf "databaseId" [toJSVal database]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.storageId Mozilla CommandLineAPIHost.storageId documentation> 
-storageId ::
-          (MonadDOM m, ToJSVal storage, FromJSString result) =>
-            CommandLineAPIHost -> storage -> m result
-storageId self storage
-  = liftDOM
-      ((self ^. jsf "storageId" [toJSVal storage]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.storageId Mozilla CommandLineAPIHost.storageId documentation> 
-storageId_ ::
-           (MonadDOM m, ToJSVal storage) =>
-             CommandLineAPIHost -> storage -> m ()
-storageId_ self storage
-  = liftDOM (void (self ^. jsf "storageId" [toJSVal storage]))
diff --git a/src/JSDOM/Generated/Comment.hs b/src/JSDOM/Generated/Comment.hs
--- a/src/JSDOM/Generated/Comment.hs
+++ b/src/JSDOM/Generated/Comment.hs
@@ -1,25 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.Comment
-       (newComment, Comment(..), gTypeComment) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (newComment, Comment(..), gTypeComment)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Comment Mozilla Comment documentation> 
-newComment ::
-           (MonadDOM m, ToJSString data') => Maybe data' -> m Comment
-newComment data'
-  = liftDOM (Comment <$> new (jsg "Comment") [toJSVal data'])
+-- | <https://developer.mozilla.org/docs/Web/API/Comment/Comment MDN Comment. documentation>
+newComment :: (MonadDOM m, ToJSString data') => Maybe data' -> m Comment
+newComment data' = liftDOM (((new (jsg "Comment") [P.maybe (P.return jsUndefined) toJSVal data']) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CompositionEvent.hs b/src/JSDOM/Generated/CompositionEvent.hs
--- a/src/JSDOM/Generated/CompositionEvent.hs
+++ b/src/JSDOM/Generated/CompositionEvent.hs
@@ -1,50 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
 module JSDOM.Generated.CompositionEvent
-       (newCompositionEvent, initCompositionEvent, getData,
-        CompositionEvent(..), gTypeCompositionEvent)
+       (newCompositionEvent, initCompositionEvent, getData, CompositionEvent(..), gTypeCompositionEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent Mozilla CompositionEvent documentation> 
-newCompositionEvent ::
-                    (MonadDOM m, ToJSString type') =>
-                      type' -> Maybe CompositionEventInit -> m CompositionEvent
-newCompositionEvent type' eventInitDict
-  = liftDOM
-      (CompositionEvent <$>
-         new (jsg "CompositionEvent")
-           [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "CompositionEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent.initCompositionEvent Mozilla CompositionEvent.initCompositionEvent documentation> 
-initCompositionEvent ::
-                     (MonadDOM m, ToJSString typeArg, ToJSString dataArg) =>
-                       CompositionEvent ->
-                         Maybe typeArg ->
-                           Bool -> Bool -> Maybe Window -> Maybe dataArg -> m ()
-initCompositionEvent self typeArg canBubbleArg cancelableArg
-  viewArg dataArg
-  = liftDOM
-      (void
-         (self ^. jsf "initCompositionEvent"
-            [toJSVal typeArg, toJSVal canBubbleArg, toJSVal cancelableArg,
-             toJSVal viewArg, toJSVal dataArg]))
+-- | <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 (self ^. jsf "initCompositionEvent" [toJSVal typeArg, P.maybe (P.return jsUndefined) toJSVal bubblesArg, P.maybe (P.return jsUndefined) toJSVal cancelableArg, toJSVal viewArg, P.maybe (P.return jsUndefined) toJSVal dataArg]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent.data Mozilla CompositionEvent.data documentation> 
-getData ::
-        (MonadDOM m, FromJSString result) => CompositionEvent -> m result
-getData self = liftDOM ((self ^. js "data") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CompositionEvent/data MDN CompositionEvent.data documentation>
+getData :: (MonadDOM m, FromJSString result) => CompositionEvent -> m result
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CompositionEventInit.hs b/src/JSDOM/Generated/CompositionEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CompositionEventInit.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
+module JSDOM.Generated.CompositionEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/uievents/#dictdef-compositioneventinit CompositionEventInit specification>
+newCompositionEventInit :: (MonadDOM m) => m CompositionEventInit
+newCompositionEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-compositioneventinit-data CompositionEventInit.data specification>
+setData :: (MonadDOM m, ToJSString val) => CompositionEventInit -> val -> m ()
+setData self val = liftDOM (void (self ^. jss "data" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-compositioneventinit-data CompositionEventInit.data specification>
+getData :: (MonadDOM m, FromJSString result) => CompositionEventInit -> m (Maybe result)
+getData self = liftDOM (((self ^. js "data") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/uievents/#dom-compositioneventinit-data CompositionEventInit.data specification>
+getDataUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CompositionEventInit -> m result
+getDataUnsafe self = liftDOM ((((self ^. js "data") >>= fromMaybeJSString) >>= 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 (((self ^. js "data") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CompressionStream.hs b/src/JSDOM/Generated/CompressionStream.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CompressionStream.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from compression (webref). Do not edit.
+module JSDOM.Generated.CompressionStream
+       (newCompressionStream, CompressionStream(..), gTypeCompressionStream)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CompressionStream/CompressionStream MDN CompressionStream. documentation>
+newCompressionStream :: (MonadDOM m) => CompressionFormat -> m CompressionStream
+newCompressionStream format = liftDOM (((new (jsg "CompressionStream") [toJSVal format]) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ComputedEffectTiming.hs b/src/JSDOM/Generated/ComputedEffectTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ComputedEffectTiming.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module JSDOM.Generated.ComputedEffectTiming
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/web-animations-1/#dictdef-computedeffecttiming ComputedEffectTiming specification>
+newComputedEffectTiming :: (MonadDOM m) => m ComputedEffectTiming
+newComputedEffectTiming = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "progress" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-computedeffecttiming-progress ComputedEffectTiming.progress specification>
+getProgress :: (MonadDOM m) => ComputedEffectTiming -> m (Maybe Double)
+getProgress self = liftDOM (((self ^. js "progress") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-computedeffecttiming-progress ComputedEffectTiming.progress specification>
+getProgressUnsafe :: (MonadDOM m, HasCallStack) => ComputedEffectTiming -> m Double
+getProgressUnsafe self = liftDOM ((((self ^. js "progress") >>= 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 (((self ^. js "progress") >>= valToNumber))
+
+-- | <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 (self ^. jss "currentIteration" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-computedeffecttiming-currentiteration ComputedEffectTiming.currentIteration specification>
+getCurrentIteration :: (MonadDOM m) => ComputedEffectTiming -> m (Maybe Double)
+getCurrentIteration self = liftDOM (((self ^. js "currentIteration") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-computedeffecttiming-currentiteration ComputedEffectTiming.currentIteration specification>
+getCurrentIterationUnsafe :: (MonadDOM m, HasCallStack) => ComputedEffectTiming -> m Double
+getCurrentIterationUnsafe self = liftDOM ((((self ^. js "currentIteration") >>= 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 (((self ^. js "currentIteration") >>= valToNumber))
+
+-- | <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 (self ^. jss "startTime" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-starttime ComputedEffectTiming.startTime specification>
+getStartTime :: (MonadDOM m) => ComputedEffectTiming -> m (Maybe CSSNumberish)
+getStartTime self = liftDOM (((self ^. js "startTime") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-starttime ComputedEffectTiming.startTime specification>
+getStartTimeUnsafe :: (MonadDOM m, HasCallStack) => ComputedEffectTiming -> m CSSNumberish
+getStartTimeUnsafe self = liftDOM ((((self ^. js "startTime") >>= 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 (((self ^. js "startTime") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "endTime" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-endtime ComputedEffectTiming.endTime specification>
+getEndTime :: (MonadDOM m) => ComputedEffectTiming -> m (Maybe CSSNumberish)
+getEndTime self = liftDOM (((self ^. js "endTime") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-endtime ComputedEffectTiming.endTime specification>
+getEndTimeUnsafe :: (MonadDOM m, HasCallStack) => ComputedEffectTiming -> m CSSNumberish
+getEndTimeUnsafe self = liftDOM ((((self ^. js "endTime") >>= 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 (((self ^. js "endTime") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "activeDuration" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-activeduration ComputedEffectTiming.activeDuration specification>
+getActiveDuration :: (MonadDOM m) => ComputedEffectTiming -> m (Maybe CSSNumberish)
+getActiveDuration self = liftDOM (((self ^. js "activeDuration") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-activeduration ComputedEffectTiming.activeDuration specification>
+getActiveDurationUnsafe :: (MonadDOM m, HasCallStack) => ComputedEffectTiming -> m CSSNumberish
+getActiveDurationUnsafe self = liftDOM ((((self ^. js "activeDuration") >>= 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 (((self ^. js "activeDuration") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "localTime" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-localtime ComputedEffectTiming.localTime specification>
+getLocalTime :: (MonadDOM m) => ComputedEffectTiming -> m (Maybe CSSNumberish)
+getLocalTime self = liftDOM (((self ^. js "localTime") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-computedeffecttiming-localtime ComputedEffectTiming.localTime specification>
+getLocalTimeUnsafe :: (MonadDOM m, HasCallStack) => ComputedEffectTiming -> m CSSNumberish
+getLocalTimeUnsafe self = liftDOM ((((self ^. js "localTime") >>= 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 (((self ^. js "localTime") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Console.hs b/src/JSDOM/Generated/Console.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Console.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from console (webref). Do not edit.
+module JSDOM.Generated.Console
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((jsg "console") ^. jsf "assert" ([P.maybe (P.return jsUndefined) toJSVal condition] ++ P.map toJSVal data')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/console/clear_static MDN console.clear documentation>
+clear :: (MonadDOM m) => m ()
+clear = liftDOM (void ((jsg "console") ^. jsf "clear" ()))
+
+-- | <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 ((jsg "console") ^. jsf "count" [P.maybe (P.return jsUndefined) toJSVal label]))
+
+-- | <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 ((jsg "console") ^. jsf "countReset" [P.maybe (P.return jsUndefined) toJSVal label]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/console/debug_static MDN console.debug documentation>
+debug :: (MonadDOM m) => [JSVal] -> m ()
+debug data' = liftDOM (void ((jsg "console") ^. jsf "debug" ([] ++ P.map toJSVal data')))
+
+-- | <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 ((jsg "console") ^. jsf "dir" [toJSVal item, toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/console/dirxml_static MDN console.dirxml documentation>
+dirxml :: (MonadDOM m) => [JSVal] -> m ()
+dirxml data' = liftDOM (void ((jsg "console") ^. jsf "dirxml" ([] ++ P.map toJSVal data')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/console/error_static MDN console.error documentation>
+error :: (MonadDOM m) => [JSVal] -> m ()
+error data' = liftDOM (void ((jsg "console") ^. jsf "error" ([] ++ P.map toJSVal data')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/console/group_static MDN console.group documentation>
+group :: (MonadDOM m) => [JSVal] -> m ()
+group data' = liftDOM (void ((jsg "console") ^. jsf "group" ([] ++ P.map toJSVal data')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/console/groupCollapsed_static MDN console.groupCollapsed documentation>
+groupCollapsed :: (MonadDOM m) => [JSVal] -> m ()
+groupCollapsed data' = liftDOM (void ((jsg "console") ^. jsf "groupCollapsed" ([] ++ P.map toJSVal data')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/console/groupEnd_static MDN console.groupEnd documentation>
+groupEnd :: (MonadDOM m) => m ()
+groupEnd = liftDOM (void ((jsg "console") ^. jsf "groupEnd" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/console/info_static MDN console.info documentation>
+info :: (MonadDOM m) => [JSVal] -> m ()
+info data' = liftDOM (void ((jsg "console") ^. jsf "info" ([] ++ P.map toJSVal data')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/console/log_static MDN console.log documentation>
+log :: (MonadDOM m) => [JSVal] -> m ()
+log data' = liftDOM (void ((jsg "console") ^. jsf "log" ([] ++ P.map toJSVal data')))
+
+-- | <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 ((jsg "console") ^. jsf "table" [toJSVal tabularData, P.maybe (P.return jsUndefined) toJSVal properties]))
+
+-- | <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 ((jsg "console") ^. jsf "time" [P.maybe (P.return jsUndefined) toJSVal label]))
+
+-- | <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 ((jsg "console") ^. jsf "timeEnd" [P.maybe (P.return jsUndefined) toJSVal label]))
+
+-- | <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 ((jsg "console") ^. jsf "timeLog" ([P.maybe (P.return jsUndefined) toJSVal label] ++ P.map toJSVal data')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/console/trace_static MDN console.trace documentation>
+trace :: (MonadDOM m) => [JSVal] -> m ()
+trace data' = liftDOM (void ((jsg "console") ^. jsf "trace" ([] ++ P.map toJSVal data')))
+
+-- | <https://developer.mozilla.org/docs/Web/API/console/warn_static MDN console.warn documentation>
+warn :: (MonadDOM m) => [JSVal] -> m ()
+warn data' = liftDOM (void ((jsg "console") ^. jsf "warn" ([] ++ P.map toJSVal data')))
diff --git a/src/JSDOM/Generated/ConstantSourceNode.hs b/src/JSDOM/Generated/ConstantSourceNode.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ConstantSourceNode.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.ConstantSourceNode
+       (newConstantSourceNode, getOffset, ConstantSourceNode(..), gTypeConstantSourceNode)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "ConstantSourceNode") [toJSVal context, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ConstantSourceNode/offset MDN ConstantSourceNode.offset documentation>
+getOffset :: (MonadDOM m) => ConstantSourceNode -> m AudioParam
+getOffset self = liftDOM (((self ^. js "offset") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ConstantSourceOptions.hs b/src/JSDOM/Generated/ConstantSourceOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ConstantSourceOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.ConstantSourceOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#ConstantSourceOptions ConstantSourceOptions specification>
+newConstantSourceOptions :: (MonadDOM m) => m ConstantSourceOptions
+newConstantSourceOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-constantsourceoptions-offset ConstantSourceOptions.offset specification>
+setOffset :: (MonadDOM m) => ConstantSourceOptions -> Float -> m ()
+setOffset self val = liftDOM (void (self ^. jss "offset" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-constantsourceoptions-offset ConstantSourceOptions.offset specification>
+getOffset :: (MonadDOM m) => ConstantSourceOptions -> m (Maybe Float)
+getOffset self = liftDOM (((self ^. js "offset") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-constantsourceoptions-offset ConstantSourceOptions.offset specification>
+getOffsetUnsafe :: (MonadDOM m, HasCallStack) => ConstantSourceOptions -> m Float
+getOffsetUnsafe self = liftDOM ((((self ^. js "offset") >>= 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 ((P.realToFrac <$> ((self ^. js "offset") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/ConstrainBooleanOrDOMStringParameters.hs b/src/JSDOM/Generated/ConstrainBooleanOrDOMStringParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ConstrainBooleanOrDOMStringParameters.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module JSDOM.Generated.ConstrainBooleanOrDOMStringParameters
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanordomstringparameters ConstrainBooleanOrDOMStringParameters specification>
+newConstrainBooleanOrDOMStringParameters :: (MonadDOM m) => m ConstrainBooleanOrDOMStringParameters
+newConstrainBooleanOrDOMStringParameters = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "exact" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanordomstringparameters-exact ConstrainBooleanOrDOMStringParameters.exact specification>
+getExact :: (MonadDOM m) => ConstrainBooleanOrDOMStringParameters -> m (Maybe BoolOrString)
+getExact self = liftDOM (((self ^. js "exact") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanordomstringparameters-exact ConstrainBooleanOrDOMStringParameters.exact specification>
+getExactUnsafe :: (MonadDOM m, HasCallStack) => ConstrainBooleanOrDOMStringParameters -> m BoolOrString
+getExactUnsafe self = liftDOM ((((self ^. js "exact") >>= 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 (((self ^. js "exact") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "ideal" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanordomstringparameters-ideal ConstrainBooleanOrDOMStringParameters.ideal specification>
+getIdeal :: (MonadDOM m) => ConstrainBooleanOrDOMStringParameters -> m (Maybe BoolOrString)
+getIdeal self = liftDOM (((self ^. js "ideal") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanordomstringparameters-ideal ConstrainBooleanOrDOMStringParameters.ideal specification>
+getIdealUnsafe :: (MonadDOM m, HasCallStack) => ConstrainBooleanOrDOMStringParameters -> m BoolOrString
+getIdealUnsafe self = liftDOM ((((self ^. js "ideal") >>= 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 (((self ^. js "ideal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ConstrainBooleanParameters.hs b/src/JSDOM/Generated/ConstrainBooleanParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ConstrainBooleanParameters.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module JSDOM.Generated.ConstrainBooleanParameters
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanparameters ConstrainBooleanParameters specification>
+newConstrainBooleanParameters :: (MonadDOM m) => m ConstrainBooleanParameters
+newConstrainBooleanParameters = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanparameters-exact ConstrainBooleanParameters.exact specification>
+setExact :: (MonadDOM m) => ConstrainBooleanParameters -> Bool -> m ()
+setExact self val = liftDOM (void (self ^. jss "exact" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanparameters-exact ConstrainBooleanParameters.exact specification>
+getExact :: (MonadDOM m) => ConstrainBooleanParameters -> m (Maybe Bool)
+getExact self = liftDOM (((self ^. js "exact") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanparameters-exact ConstrainBooleanParameters.exact specification>
+getExactUnsafe :: (MonadDOM m, HasCallStack) => ConstrainBooleanParameters -> m Bool
+getExactUnsafe self = liftDOM ((((self ^. js "exact") >>= 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 (((self ^. js "exact") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanparameters-ideal ConstrainBooleanParameters.ideal specification>
+setIdeal :: (MonadDOM m) => ConstrainBooleanParameters -> Bool -> m ()
+setIdeal self val = liftDOM (void (self ^. jss "ideal" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanparameters-ideal ConstrainBooleanParameters.ideal specification>
+getIdeal :: (MonadDOM m) => ConstrainBooleanParameters -> m (Maybe Bool)
+getIdeal self = liftDOM (((self ^. js "ideal") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainbooleanparameters-ideal ConstrainBooleanParameters.ideal specification>
+getIdealUnsafe :: (MonadDOM m, HasCallStack) => ConstrainBooleanParameters -> m Bool
+getIdealUnsafe self = liftDOM ((((self ^. js "ideal") >>= 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 (((self ^. js "ideal") >>= valToBool))
diff --git a/src/JSDOM/Generated/ConstrainDOMStringParameters.hs b/src/JSDOM/Generated/ConstrainDOMStringParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ConstrainDOMStringParameters.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module JSDOM.Generated.ConstrainDOMStringParameters
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindomstringparameters ConstrainDOMStringParameters specification>
+newConstrainDOMStringParameters :: (MonadDOM m) => m ConstrainDOMStringParameters
+newConstrainDOMStringParameters = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "exact" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindomstringparameters-exact ConstrainDOMStringParameters.exact specification>
+getExact :: (MonadDOM m) => ConstrainDOMStringParameters -> m (Maybe StringOrSequenceString)
+getExact self = liftDOM (((self ^. js "exact") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindomstringparameters-exact ConstrainDOMStringParameters.exact specification>
+getExactUnsafe :: (MonadDOM m, HasCallStack) => ConstrainDOMStringParameters -> m StringOrSequenceString
+getExactUnsafe self = liftDOM ((((self ^. js "exact") >>= 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 (((self ^. js "exact") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "ideal" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindomstringparameters-ideal ConstrainDOMStringParameters.ideal specification>
+getIdeal :: (MonadDOM m) => ConstrainDOMStringParameters -> m (Maybe StringOrSequenceString)
+getIdeal self = liftDOM (((self ^. js "ideal") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindomstringparameters-ideal ConstrainDOMStringParameters.ideal specification>
+getIdealUnsafe :: (MonadDOM m, HasCallStack) => ConstrainDOMStringParameters -> m StringOrSequenceString
+getIdealUnsafe self = liftDOM ((((self ^. js "ideal") >>= 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 (((self ^. js "ideal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ConstrainDoubleRange.hs b/src/JSDOM/Generated/ConstrainDoubleRange.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ConstrainDoubleRange.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module JSDOM.Generated.ConstrainDoubleRange
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindoublerange ConstrainDoubleRange specification>
+newConstrainDoubleRange :: (MonadDOM m) => m ConstrainDoubleRange
+newConstrainDoubleRange = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindoublerange-exact ConstrainDoubleRange.exact specification>
+setExact :: (MonadDOM m) => ConstrainDoubleRange -> Double -> m ()
+setExact self val = liftDOM (void (self ^. jss "exact" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindoublerange-exact ConstrainDoubleRange.exact specification>
+getExact :: (MonadDOM m) => ConstrainDoubleRange -> m (Maybe Double)
+getExact self = liftDOM (((self ^. js "exact") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindoublerange-exact ConstrainDoubleRange.exact specification>
+getExactUnsafe :: (MonadDOM m, HasCallStack) => ConstrainDoubleRange -> m Double
+getExactUnsafe self = liftDOM ((((self ^. js "exact") >>= 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 (((self ^. js "exact") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindoublerange-ideal ConstrainDoubleRange.ideal specification>
+setIdeal :: (MonadDOM m) => ConstrainDoubleRange -> Double -> m ()
+setIdeal self val = liftDOM (void (self ^. jss "ideal" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindoublerange-ideal ConstrainDoubleRange.ideal specification>
+getIdeal :: (MonadDOM m) => ConstrainDoubleRange -> m (Maybe Double)
+getIdeal self = liftDOM (((self ^. js "ideal") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constraindoublerange-ideal ConstrainDoubleRange.ideal specification>
+getIdealUnsafe :: (MonadDOM m, HasCallStack) => ConstrainDoubleRange -> m Double
+getIdealUnsafe self = liftDOM ((((self ^. js "ideal") >>= 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 (((self ^. js "ideal") >>= valToNumber))
diff --git a/src/JSDOM/Generated/ConstrainPoint2DParameters.hs b/src/JSDOM/Generated/ConstrainPoint2DParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ConstrainPoint2DParameters.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from image-capture (webref). Do not edit.
+module JSDOM.Generated.ConstrainPoint2DParameters
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-image/#dictdef-constrainpoint2dparameters ConstrainPoint2DParameters specification>
+newConstrainPoint2DParameters :: (MonadDOM m) => m ConstrainPoint2DParameters
+newConstrainPoint2DParameters = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-constrainpoint2dparameters-exact ConstrainPoint2DParameters.exact specification>
+setExact :: (MonadDOM m) => ConstrainPoint2DParameters -> [Point2D] -> m ()
+setExact self val = liftDOM (void (self ^. jss "exact" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-constrainpoint2dparameters-exact ConstrainPoint2DParameters.exact specification>
+getExact :: (MonadDOM m) => ConstrainPoint2DParameters -> m (Maybe [Point2D])
+getExact self = liftDOM (((self ^. js "exact") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-constrainpoint2dparameters-exact ConstrainPoint2DParameters.exact specification>
+getExactUnsafe :: (MonadDOM m, HasCallStack) => ConstrainPoint2DParameters -> m [Point2D]
+getExactUnsafe self = liftDOM ((((self ^. js "exact") >>= 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 (((self ^. js "exact") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-constrainpoint2dparameters-ideal ConstrainPoint2DParameters.ideal specification>
+setIdeal :: (MonadDOM m) => ConstrainPoint2DParameters -> [Point2D] -> m ()
+setIdeal self val = liftDOM (void (self ^. jss "ideal" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-constrainpoint2dparameters-ideal ConstrainPoint2DParameters.ideal specification>
+getIdeal :: (MonadDOM m) => ConstrainPoint2DParameters -> m (Maybe [Point2D])
+getIdeal self = liftDOM (((self ^. js "ideal") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-constrainpoint2dparameters-ideal ConstrainPoint2DParameters.ideal specification>
+getIdealUnsafe :: (MonadDOM m, HasCallStack) => ConstrainPoint2DParameters -> m [Point2D]
+getIdealUnsafe self = liftDOM ((((self ^. js "ideal") >>= 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 (((self ^. js "ideal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ConstrainULongRange.hs b/src/JSDOM/Generated/ConstrainULongRange.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ConstrainULongRange.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module JSDOM.Generated.ConstrainULongRange
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainulongrange ConstrainULongRange specification>
+newConstrainULongRange :: (MonadDOM m) => m ConstrainULongRange
+newConstrainULongRange = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainulongrange-exact ConstrainULongRange.exact specification>
+setExact :: (MonadDOM m) => ConstrainULongRange -> Word -> m ()
+setExact self val = liftDOM (void (self ^. jss "exact" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainulongrange-exact ConstrainULongRange.exact specification>
+getExact :: (MonadDOM m) => ConstrainULongRange -> m (Maybe Word)
+getExact self = liftDOM (((self ^. js "exact") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainulongrange-exact ConstrainULongRange.exact specification>
+getExactUnsafe :: (MonadDOM m, HasCallStack) => ConstrainULongRange -> m Word
+getExactUnsafe self = liftDOM ((((self ^. js "exact") >>= 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 ((P.round <$> ((self ^. js "exact") >>= valToNumber)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainulongrange-ideal ConstrainULongRange.ideal specification>
+setIdeal :: (MonadDOM m) => ConstrainULongRange -> Word -> m ()
+setIdeal self val = liftDOM (void (self ^. jss "ideal" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainulongrange-ideal ConstrainULongRange.ideal specification>
+getIdeal :: (MonadDOM m) => ConstrainULongRange -> m (Maybe Word)
+getIdeal self = liftDOM (((self ^. js "ideal") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-constrainulongrange-ideal ConstrainULongRange.ideal specification>
+getIdealUnsafe :: (MonadDOM m, HasCallStack) => ConstrainULongRange -> m Word
+getIdealUnsafe self = liftDOM ((((self ^. js "ideal") >>= 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 ((P.round <$> ((self ^. js "ideal") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/ContactAddress.hs b/src/JSDOM/Generated/ContactAddress.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ContactAddress.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from contact-picker (webref). Do not edit.
+module JSDOM.Generated.ContactAddress
+       (ContactAddress(..), gTypeContactAddress)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/ContentVisibilityAutoStateChangeEvent.hs b/src/JSDOM/Generated/ContentVisibilityAutoStateChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ContentVisibilityAutoStateChangeEvent.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-contain-2 (webref). Do not edit.
+module JSDOM.Generated.ContentVisibilityAutoStateChangeEvent
+       (newContentVisibilityAutoStateChangeEvent, getSkipped, ContentVisibilityAutoStateChangeEvent(..), gTypeContentVisibilityAutoStateChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "ContentVisibilityAutoStateChangeEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ContentVisibilityAutoStateChangeEvent/skipped MDN ContentVisibilityAutoStateChangeEvent.skipped documentation>
+getSkipped :: (MonadDOM m) => ContentVisibilityAutoStateChangeEvent -> m Bool
+getSkipped self = liftDOM (((self ^. js "skipped") >>= valToBool))
diff --git a/src/JSDOM/Generated/ContentVisibilityAutoStateChangeEventInit.hs b/src/JSDOM/Generated/ContentVisibilityAutoStateChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ContentVisibilityAutoStateChangeEventInit.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-contain-2 (webref). Do not edit.
+module JSDOM.Generated.ContentVisibilityAutoStateChangeEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/css-contain-2/#dictdef-contentvisibilityautostatechangeeventinit ContentVisibilityAutoStateChangeEventInit specification>
+newContentVisibilityAutoStateChangeEventInit :: (MonadDOM m) => m ContentVisibilityAutoStateChangeEventInit
+newContentVisibilityAutoStateChangeEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-contain-2/#dom-contentvisibilityautostatechangeeventinit-skipped ContentVisibilityAutoStateChangeEventInit.skipped specification>
+setSkipped :: (MonadDOM m) => ContentVisibilityAutoStateChangeEventInit -> Bool -> m ()
+setSkipped self val = liftDOM (void (self ^. jss "skipped" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-contain-2/#dom-contentvisibilityautostatechangeeventinit-skipped ContentVisibilityAutoStateChangeEventInit.skipped specification>
+getSkipped :: (MonadDOM m) => ContentVisibilityAutoStateChangeEventInit -> m (Maybe Bool)
+getSkipped self = liftDOM (((self ^. js "skipped") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-contain-2/#dom-contentvisibilityautostatechangeeventinit-skipped ContentVisibilityAutoStateChangeEventInit.skipped specification>
+getSkippedUnsafe :: (MonadDOM m, HasCallStack) => ContentVisibilityAutoStateChangeEventInit -> m Bool
+getSkippedUnsafe self = liftDOM ((((self ^. js "skipped") >>= 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 (((self ^. js "skipped") >>= valToBool))
diff --git a/src/JSDOM/Generated/ConvolverNode.hs b/src/JSDOM/Generated/ConvolverNode.hs
--- a/src/JSDOM/Generated/ConvolverNode.hs
+++ b/src/JSDOM/Generated/ConvolverNode.hs
@@ -1,54 +1,44 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.ConvolverNode
-       (setBuffer, getBuffer, getBufferUnsafe, getBufferUnchecked,
-        setNormalize, getNormalize, ConvolverNode(..), gTypeConvolverNode)
+       (newConvolverNode, setBuffer, getBuffer, getBufferUnsafe, getBufferUnchecked, setNormalize, getNormalize, ConvolverNode(..), gTypeConvolverNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
-setBuffer ::
-          (MonadDOM m) => ConvolverNode -> Maybe AudioBuffer -> m ()
-setBuffer self val = liftDOM (self ^. jss "buffer" (toJSVal val))
+-- | <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 (((new (jsg "ConvolverNode") [toJSVal context, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
+-- | <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 (self ^. jss "buffer" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ConvolverNode/buffer MDN ConvolverNode.buffer documentation>
 getBuffer :: (MonadDOM m) => ConvolverNode -> m (Maybe AudioBuffer)
-getBuffer self = liftDOM ((self ^. js "buffer") >>= fromJSVal)
+getBuffer self = liftDOM (((self ^. js "buffer") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
-getBufferUnsafe ::
-                (MonadDOM m, HasCallStack) => ConvolverNode -> m AudioBuffer
-getBufferUnsafe self
-  = liftDOM
-      (((self ^. js "buffer") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/ConvolverNode/buffer MDN ConvolverNode.buffer documentation>
+getBufferUnsafe :: (MonadDOM m, HasCallStack) => ConvolverNode -> m AudioBuffer
+getBufferUnsafe self = liftDOM ((((self ^. js "buffer") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
-getBufferUnchecked ::
-                   (MonadDOM m) => ConvolverNode -> m AudioBuffer
-getBufferUnchecked self
-  = liftDOM ((self ^. js "buffer") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/ConvolverNode/buffer MDN ConvolverNode.buffer documentation>
+getBufferUnchecked :: (MonadDOM m) => ConvolverNode -> m AudioBuffer
+getBufferUnchecked self = liftDOM (((self ^. js "buffer") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.normalize Mozilla ConvolverNode.normalize documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ConvolverNode/normalize MDN ConvolverNode.normalize documentation>
 setNormalize :: (MonadDOM m) => ConvolverNode -> Bool -> m ()
-setNormalize self val
-  = liftDOM (self ^. jss "normalize" (toJSVal val))
+setNormalize self val = liftDOM (void (self ^. jss "normalize" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.normalize Mozilla ConvolverNode.normalize documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ConvolverNode/normalize MDN ConvolverNode.normalize documentation>
 getNormalize :: (MonadDOM m) => ConvolverNode -> m Bool
-getNormalize self
-  = liftDOM ((self ^. js "normalize") >>= valToBool)
+getNormalize self = liftDOM (((self ^. js "normalize") >>= valToBool))
diff --git a/src/JSDOM/Generated/ConvolverOptions.hs b/src/JSDOM/Generated/ConvolverOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ConvolverOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.ConvolverOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#ConvolverOptions ConvolverOptions specification>
+newConvolverOptions :: (MonadDOM m) => m ConvolverOptions
+newConvolverOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "buffer" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-convolveroptions-buffer ConvolverOptions.buffer specification>
+getBuffer :: (MonadDOM m) => ConvolverOptions -> m (Maybe AudioBuffer)
+getBuffer self = liftDOM (((self ^. js "buffer") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-convolveroptions-buffer ConvolverOptions.buffer specification>
+getBufferUnsafe :: (MonadDOM m, HasCallStack) => ConvolverOptions -> m AudioBuffer
+getBufferUnsafe self = liftDOM ((((self ^. js "buffer") >>= 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 (((self ^. js "buffer") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-convolveroptions-disablenormalization ConvolverOptions.disableNormalization specification>
+setDisableNormalization :: (MonadDOM m) => ConvolverOptions -> Bool -> m ()
+setDisableNormalization self val = liftDOM (void (self ^. jss "disableNormalization" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-convolveroptions-disablenormalization ConvolverOptions.disableNormalization specification>
+getDisableNormalization :: (MonadDOM m) => ConvolverOptions -> m (Maybe Bool)
+getDisableNormalization self = liftDOM (((self ^. js "disableNormalization") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-convolveroptions-disablenormalization ConvolverOptions.disableNormalization specification>
+getDisableNormalizationUnsafe :: (MonadDOM m, HasCallStack) => ConvolverOptions -> m Bool
+getDisableNormalizationUnsafe self = liftDOM ((((self ^. js "disableNormalization") >>= 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 (((self ^. js "disableNormalization") >>= valToBool))
diff --git a/src/JSDOM/Generated/CookieChangeEvent.hs b/src/JSDOM/Generated/CookieChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CookieChangeEvent.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module JSDOM.Generated.CookieChangeEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "CookieChangeEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CookieChangeEvent/changed MDN CookieChangeEvent.changed documentation>
+getChanged :: (MonadDOM m) => CookieChangeEvent -> m [CookieListItem]
+getChanged self = liftDOM (((self ^. js "changed") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CookieChangeEvent/deleted MDN CookieChangeEvent.deleted documentation>
+getDeleted :: (MonadDOM m) => CookieChangeEvent -> m [CookieListItem]
+getDeleted self = liftDOM (((self ^. js "deleted") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CookieChangeEventInit.hs b/src/JSDOM/Generated/CookieChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CookieChangeEventInit.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module JSDOM.Generated.CookieChangeEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://cookiestore.spec.whatwg.org/#dictdef-cookiechangeeventinit CookieChangeEventInit specification>
+newCookieChangeEventInit :: (MonadDOM m) => m CookieChangeEventInit
+newCookieChangeEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiechangeeventinit-changed CookieChangeEventInit.changed specification>
+setChanged :: (MonadDOM m) => CookieChangeEventInit -> [CookieListItem] -> m ()
+setChanged self val = liftDOM (void (self ^. jss "changed" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiechangeeventinit-changed CookieChangeEventInit.changed specification>
+getChanged :: (MonadDOM m) => CookieChangeEventInit -> m (Maybe [CookieListItem])
+getChanged self = liftDOM (((self ^. js "changed") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiechangeeventinit-changed CookieChangeEventInit.changed specification>
+getChangedUnsafe :: (MonadDOM m, HasCallStack) => CookieChangeEventInit -> m [CookieListItem]
+getChangedUnsafe self = liftDOM ((((self ^. js "changed") >>= 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 (((self ^. js "changed") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiechangeeventinit-deleted CookieChangeEventInit.deleted specification>
+setDeleted :: (MonadDOM m) => CookieChangeEventInit -> [CookieListItem] -> m ()
+setDeleted self val = liftDOM (void (self ^. jss "deleted" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiechangeeventinit-deleted CookieChangeEventInit.deleted specification>
+getDeleted :: (MonadDOM m) => CookieChangeEventInit -> m (Maybe [CookieListItem])
+getDeleted self = liftDOM (((self ^. js "deleted") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiechangeeventinit-deleted CookieChangeEventInit.deleted specification>
+getDeletedUnsafe :: (MonadDOM m, HasCallStack) => CookieChangeEventInit -> m [CookieListItem]
+getDeletedUnsafe self = liftDOM ((((self ^. js "deleted") >>= 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 (((self ^. js "deleted") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CookieInit.hs b/src/JSDOM/Generated/CookieInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CookieInit.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module JSDOM.Generated.CookieInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://cookiestore.spec.whatwg.org/#dictdef-cookieinit CookieInit specification>
+newCookieInit :: (MonadDOM m, ToJSString name, ToJSString value) => name -> value -> m CookieInit
+newCookieInit name value = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "name" (toJSVal name)) P.>> (o ^. jss "value" (toJSVal value)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-name CookieInit.name specification>
+setName :: (MonadDOM m, ToJSString val) => CookieInit -> val -> m ()
+setName self val = liftDOM (void (self ^. jss "name" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-name CookieInit.name specification>
+getName :: (MonadDOM m, FromJSString result) => CookieInit -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-value CookieInit.value specification>
+setValue :: (MonadDOM m, ToJSString val) => CookieInit -> val -> m ()
+setValue self val = liftDOM (void (self ^. jss "value" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-value CookieInit.value specification>
+getValue :: (MonadDOM m, FromJSString result) => CookieInit -> m result
+getValue self = liftDOM (((self ^. js "value") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-expires CookieInit.expires specification>
+setExpires :: (MonadDOM m) => CookieInit -> Maybe Double -> m ()
+setExpires self val = liftDOM (void (self ^. jss "expires" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-expires CookieInit.expires specification>
+getExpires :: (MonadDOM m) => CookieInit -> m (Maybe Double)
+getExpires self = liftDOM (((self ^. js "expires") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-expires CookieInit.expires specification>
+getExpiresUnsafe :: (MonadDOM m, HasCallStack) => CookieInit -> m Double
+getExpiresUnsafe self = liftDOM ((((self ^. js "expires") >>= 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 (((self ^. js "expires") >>= valToNumber))
+
+-- | <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 (self ^. jss "domain" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-domain CookieInit.domain specification>
+getDomain :: (MonadDOM m, FromJSString result) => CookieInit -> m (Maybe result)
+getDomain self = liftDOM (((self ^. js "domain") >>= fromMaybeJSString))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-domain CookieInit.domain specification>
+getDomainUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CookieInit -> m result
+getDomainUnsafe self = liftDOM ((((self ^. js "domain") >>= fromMaybeJSString) >>= 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 (((self ^. js "domain") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-path CookieInit.path specification>
+setPath :: (MonadDOM m, ToJSString val) => CookieInit -> val -> m ()
+setPath self val = liftDOM (void (self ^. jss "path" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-path CookieInit.path specification>
+getPath :: (MonadDOM m, FromJSString result) => CookieInit -> m (Maybe result)
+getPath self = liftDOM (((self ^. js "path") >>= fromMaybeJSString))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-path CookieInit.path specification>
+getPathUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CookieInit -> m result
+getPathUnsafe self = liftDOM ((((self ^. js "path") >>= fromMaybeJSString) >>= 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 (((self ^. js "path") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-samesite CookieInit.sameSite specification>
+setSameSite :: (MonadDOM m) => CookieInit -> CookieSameSite -> m ()
+setSameSite self val = liftDOM (void (self ^. jss "sameSite" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-samesite CookieInit.sameSite specification>
+getSameSite :: (MonadDOM m) => CookieInit -> m (Maybe CookieSameSite)
+getSameSite self = liftDOM (((self ^. js "sameSite") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-samesite CookieInit.sameSite specification>
+getSameSiteUnsafe :: (MonadDOM m, HasCallStack) => CookieInit -> m CookieSameSite
+getSameSiteUnsafe self = liftDOM ((((self ^. js "sameSite") >>= 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 (((self ^. js "sameSite") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-partitioned CookieInit.partitioned specification>
+setPartitioned :: (MonadDOM m) => CookieInit -> Bool -> m ()
+setPartitioned self val = liftDOM (void (self ^. jss "partitioned" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-partitioned CookieInit.partitioned specification>
+getPartitioned :: (MonadDOM m) => CookieInit -> m (Maybe Bool)
+getPartitioned self = liftDOM (((self ^. js "partitioned") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-partitioned CookieInit.partitioned specification>
+getPartitionedUnsafe :: (MonadDOM m, HasCallStack) => CookieInit -> m Bool
+getPartitionedUnsafe self = liftDOM ((((self ^. js "partitioned") >>= 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 (((self ^. js "partitioned") >>= valToBool))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-maxage CookieInit.maxAge specification>
+setMaxAge :: (MonadDOM m) => CookieInit -> Maybe Int53 -> m ()
+setMaxAge self val = liftDOM (void (self ^. jss "maxAge" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-maxage CookieInit.maxAge specification>
+getMaxAge :: (MonadDOM m) => CookieInit -> m (Maybe Int53)
+getMaxAge self = liftDOM (((self ^. js "maxAge") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookieinit-maxage CookieInit.maxAge specification>
+getMaxAgeUnsafe :: (MonadDOM m, HasCallStack) => CookieInit -> m Int53
+getMaxAgeUnsafe self = liftDOM ((((self ^. js "maxAge") >>= 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 (((self ^. js "maxAge") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CookieListItem.hs b/src/JSDOM/Generated/CookieListItem.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CookieListItem.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module JSDOM.Generated.CookieListItem
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://cookiestore.spec.whatwg.org/#dictdef-cookielistitem CookieListItem specification>
+newCookieListItem :: (MonadDOM m) => m CookieListItem
+newCookieListItem = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookielistitem-name CookieListItem.name specification>
+setName :: (MonadDOM m, ToJSString val) => CookieListItem -> val -> m ()
+setName self val = liftDOM (void (self ^. jss "name" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookielistitem-name CookieListItem.name specification>
+getName :: (MonadDOM m, FromJSString result) => CookieListItem -> m (Maybe result)
+getName self = liftDOM (((self ^. js "name") >>= fromMaybeJSString))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookielistitem-name CookieListItem.name specification>
+getNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CookieListItem -> m result
+getNameUnsafe self = liftDOM ((((self ^. js "name") >>= fromMaybeJSString) >>= 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 (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookielistitem-value CookieListItem.value specification>
+setValue :: (MonadDOM m, ToJSString val) => CookieListItem -> val -> m ()
+setValue self val = liftDOM (void (self ^. jss "value" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookielistitem-value CookieListItem.value specification>
+getValue :: (MonadDOM m, FromJSString result) => CookieListItem -> m (Maybe result)
+getValue self = liftDOM (((self ^. js "value") >>= fromMaybeJSString))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookielistitem-value CookieListItem.value specification>
+getValueUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CookieListItem -> m result
+getValueUnsafe self = liftDOM ((((self ^. js "value") >>= fromMaybeJSString) >>= 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 (((self ^. js "value") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CookieStore.hs b/src/JSDOM/Generated/CookieStore.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CookieStore.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module JSDOM.Generated.CookieStore
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "delete" [toJSVal name]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/delete MDN CookieStore.delete documentation>
+deleteOptions :: (MonadDOM m) => CookieStore -> CookieStoreDeleteOptions -> m ()
+deleteOptions self options = liftDOM (void (((self ^. jsf "delete" [toJSVal options]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "get" [toJSVal name]) >>= readPromise)) >>= 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 (((self ^. jsf "get" [toJSVal name]) >>= readPromise)))
+
+-- | <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 ((((((self ^. jsf "get" [toJSVal name]) >>= readPromise)) >>= 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 (((((self ^. jsf "get" [toJSVal name]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((((self ^. jsf "get" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= 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 (((self ^. jsf "get" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 ((((((self ^. jsf "get" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= 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 (((((self ^. jsf "get" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((((self ^. jsf "getAll" [toJSVal name]) >>= readPromise)) >>= 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 (((self ^. jsf "getAll" [toJSVal name]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "getAll" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= 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 (((self ^. jsf "getAll" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "set" [toJSVal name, toJSVal value]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStore/set MDN CookieStore.set documentation>
+setOptions :: (MonadDOM m) => CookieStore -> CookieInit -> m ()
+setOptions self options = liftDOM (void (((self ^. jsf "set" [toJSVal options]) >>= readPromise)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestore-onchange change event>
+change :: EventName CookieStore CookieChangeEvent
+change = unsafeEventName (toJSString "change")
diff --git a/src/JSDOM/Generated/CookieStoreDeleteOptions.hs b/src/JSDOM/Generated/CookieStoreDeleteOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CookieStoreDeleteOptions.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module JSDOM.Generated.CookieStoreDeleteOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://cookiestore.spec.whatwg.org/#dictdef-cookiestoredeleteoptions CookieStoreDeleteOptions specification>
+newCookieStoreDeleteOptions :: (MonadDOM m, ToJSString name) => name -> m CookieStoreDeleteOptions
+newCookieStoreDeleteOptions name = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "name" (toJSVal name)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-name CookieStoreDeleteOptions.name specification>
+setName :: (MonadDOM m, ToJSString val) => CookieStoreDeleteOptions -> val -> m ()
+setName self val = liftDOM (void (self ^. jss "name" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-name CookieStoreDeleteOptions.name specification>
+getName :: (MonadDOM m, FromJSString result) => CookieStoreDeleteOptions -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "domain" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-domain CookieStoreDeleteOptions.domain specification>
+getDomain :: (MonadDOM m, FromJSString result) => CookieStoreDeleteOptions -> m (Maybe result)
+getDomain self = liftDOM (((self ^. js "domain") >>= fromMaybeJSString))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-domain CookieStoreDeleteOptions.domain specification>
+getDomainUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CookieStoreDeleteOptions -> m result
+getDomainUnsafe self = liftDOM ((((self ^. js "domain") >>= fromMaybeJSString) >>= 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 (((self ^. js "domain") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-path CookieStoreDeleteOptions.path specification>
+setPath :: (MonadDOM m, ToJSString val) => CookieStoreDeleteOptions -> val -> m ()
+setPath self val = liftDOM (void (self ^. jss "path" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-path CookieStoreDeleteOptions.path specification>
+getPath :: (MonadDOM m, FromJSString result) => CookieStoreDeleteOptions -> m (Maybe result)
+getPath self = liftDOM (((self ^. js "path") >>= fromMaybeJSString))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-path CookieStoreDeleteOptions.path specification>
+getPathUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CookieStoreDeleteOptions -> m result
+getPathUnsafe self = liftDOM ((((self ^. js "path") >>= fromMaybeJSString) >>= 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 (((self ^. js "path") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-partitioned CookieStoreDeleteOptions.partitioned specification>
+setPartitioned :: (MonadDOM m) => CookieStoreDeleteOptions -> Bool -> m ()
+setPartitioned self val = liftDOM (void (self ^. jss "partitioned" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-partitioned CookieStoreDeleteOptions.partitioned specification>
+getPartitioned :: (MonadDOM m) => CookieStoreDeleteOptions -> m (Maybe Bool)
+getPartitioned self = liftDOM (((self ^. js "partitioned") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoredeleteoptions-partitioned CookieStoreDeleteOptions.partitioned specification>
+getPartitionedUnsafe :: (MonadDOM m, HasCallStack) => CookieStoreDeleteOptions -> m Bool
+getPartitionedUnsafe self = liftDOM ((((self ^. js "partitioned") >>= 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 (((self ^. js "partitioned") >>= valToBool))
diff --git a/src/JSDOM/Generated/CookieStoreGetOptions.hs b/src/JSDOM/Generated/CookieStoreGetOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CookieStoreGetOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module JSDOM.Generated.CookieStoreGetOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://cookiestore.spec.whatwg.org/#dictdef-cookiestoregetoptions CookieStoreGetOptions specification>
+newCookieStoreGetOptions :: (MonadDOM m) => m CookieStoreGetOptions
+newCookieStoreGetOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoregetoptions-name CookieStoreGetOptions.name specification>
+setName :: (MonadDOM m, ToJSString val) => CookieStoreGetOptions -> val -> m ()
+setName self val = liftDOM (void (self ^. jss "name" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoregetoptions-name CookieStoreGetOptions.name specification>
+getName :: (MonadDOM m, FromJSString result) => CookieStoreGetOptions -> m (Maybe result)
+getName self = liftDOM (((self ^. js "name") >>= fromMaybeJSString))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoregetoptions-name CookieStoreGetOptions.name specification>
+getNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CookieStoreGetOptions -> m result
+getNameUnsafe self = liftDOM ((((self ^. js "name") >>= fromMaybeJSString) >>= 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 (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoregetoptions-url CookieStoreGetOptions.url specification>
+setUrl :: (MonadDOM m, ToJSString val) => CookieStoreGetOptions -> val -> m ()
+setUrl self val = liftDOM (void (self ^. jss "url" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoregetoptions-url CookieStoreGetOptions.url specification>
+getUrl :: (MonadDOM m, FromJSString result) => CookieStoreGetOptions -> m (Maybe result)
+getUrl self = liftDOM (((self ^. js "url") >>= fromMaybeJSString))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-cookiestoregetoptions-url CookieStoreGetOptions.url specification>
+getUrlUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => CookieStoreGetOptions -> m result
+getUrlUnsafe self = liftDOM ((((self ^. js "url") >>= fromMaybeJSString) >>= 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 (((self ^. js "url") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CookieStoreManager.hs b/src/JSDOM/Generated/CookieStoreManager.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CookieStoreManager.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module JSDOM.Generated.CookieStoreManager
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStoreManager/getSubscriptions MDN CookieStoreManager.getSubscriptions documentation>
+getSubscriptions :: (MonadDOM m) => CookieStoreManager -> m [CookieStoreGetOptions]
+getSubscriptions self = liftDOM (((((self ^. jsf "getSubscriptions" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStoreManager/getSubscriptions MDN CookieStoreManager.getSubscriptions documentation>
+getSubscriptions_ :: (MonadDOM m) => CookieStoreManager -> m ()
+getSubscriptions_ self = liftDOM (void (((self ^. jsf "getSubscriptions" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStoreManager/subscribe MDN CookieStoreManager.subscribe documentation>
+subscribe :: (MonadDOM m) => CookieStoreManager -> [CookieStoreGetOptions] -> m ()
+subscribe self subscriptions = liftDOM (void (((self ^. jsf "subscribe" [toJSVal subscriptions]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CookieStoreManager/unsubscribe MDN CookieStoreManager.unsubscribe documentation>
+unsubscribe :: (MonadDOM m) => CookieStoreManager -> [CookieStoreGetOptions] -> m ()
+unsubscribe self subscriptions = liftDOM (void (((self ^. jsf "unsubscribe" [toJSVal subscriptions]) >>= readPromise)))
diff --git a/src/JSDOM/Generated/Coordinates.hs b/src/JSDOM/Generated/Coordinates.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/Coordinates.hs
+++ /dev/null
@@ -1,111 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.Coordinates
-       (getLatitude, getLongitude, getAltitude, getAltitudeUnsafe,
-        getAltitudeUnchecked, getAccuracy, getAltitudeAccuracy,
-        getAltitudeAccuracyUnsafe, getAltitudeAccuracyUnchecked,
-        getHeading, getHeadingUnsafe, getHeadingUnchecked, getSpeed,
-        getSpeedUnsafe, getSpeedUnchecked, Coordinates(..),
-        gTypeCoordinates)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.latitude Mozilla Coordinates.latitude documentation> 
-getLatitude :: (MonadDOM m) => Coordinates -> m Double
-getLatitude self
-  = liftDOM ((self ^. js "latitude") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.longitude Mozilla Coordinates.longitude documentation> 
-getLongitude :: (MonadDOM m) => Coordinates -> m Double
-getLongitude self
-  = liftDOM ((self ^. js "longitude") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitude Mozilla Coordinates.altitude documentation> 
-getAltitude :: (MonadDOM m) => Coordinates -> m (Maybe Double)
-getAltitude self = liftDOM ((self ^. js "altitude") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitude Mozilla Coordinates.altitude documentation> 
-getAltitudeUnsafe ::
-                  (MonadDOM m, HasCallStack) => Coordinates -> m Double
-getAltitudeUnsafe self
-  = liftDOM
-      (((self ^. js "altitude") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitude Mozilla Coordinates.altitude documentation> 
-getAltitudeUnchecked :: (MonadDOM m) => Coordinates -> m Double
-getAltitudeUnchecked self
-  = liftDOM ((self ^. js "altitude") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.accuracy Mozilla Coordinates.accuracy documentation> 
-getAccuracy :: (MonadDOM m) => Coordinates -> m Double
-getAccuracy self
-  = liftDOM ((self ^. js "accuracy") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitudeAccuracy Mozilla Coordinates.altitudeAccuracy documentation> 
-getAltitudeAccuracy ::
-                    (MonadDOM m) => Coordinates -> m (Maybe Double)
-getAltitudeAccuracy self
-  = liftDOM ((self ^. js "altitudeAccuracy") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitudeAccuracy Mozilla Coordinates.altitudeAccuracy documentation> 
-getAltitudeAccuracyUnsafe ::
-                          (MonadDOM m, HasCallStack) => Coordinates -> m Double
-getAltitudeAccuracyUnsafe self
-  = liftDOM
-      (((self ^. js "altitudeAccuracy") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitudeAccuracy Mozilla Coordinates.altitudeAccuracy documentation> 
-getAltitudeAccuracyUnchecked ::
-                             (MonadDOM m) => Coordinates -> m Double
-getAltitudeAccuracyUnchecked self
-  = liftDOM ((self ^. js "altitudeAccuracy") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.heading Mozilla Coordinates.heading documentation> 
-getHeading :: (MonadDOM m) => Coordinates -> m (Maybe Double)
-getHeading self = liftDOM ((self ^. js "heading") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.heading Mozilla Coordinates.heading documentation> 
-getHeadingUnsafe ::
-                 (MonadDOM m, HasCallStack) => Coordinates -> m Double
-getHeadingUnsafe self
-  = liftDOM
-      (((self ^. js "heading") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.heading Mozilla Coordinates.heading documentation> 
-getHeadingUnchecked :: (MonadDOM m) => Coordinates -> m Double
-getHeadingUnchecked self
-  = liftDOM ((self ^. js "heading") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.speed Mozilla Coordinates.speed documentation> 
-getSpeed :: (MonadDOM m) => Coordinates -> m (Maybe Double)
-getSpeed self = liftDOM ((self ^. js "speed") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.speed Mozilla Coordinates.speed documentation> 
-getSpeedUnsafe ::
-               (MonadDOM m, HasCallStack) => Coordinates -> m Double
-getSpeedUnsafe self
-  = liftDOM
-      (((self ^. js "speed") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.speed Mozilla Coordinates.speed documentation> 
-getSpeedUnchecked :: (MonadDOM m) => Coordinates -> m Double
-getSpeedUnchecked self
-  = liftDOM ((self ^. js "speed") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/CountQueuingStrategy.hs b/src/JSDOM/Generated/CountQueuingStrategy.hs
--- a/src/JSDOM/Generated/CountQueuingStrategy.hs
+++ b/src/JSDOM/Generated/CountQueuingStrategy.hs
@@ -1,35 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module JSDOM.Generated.CountQueuingStrategy
-       (newCountQueuingStrategy, size, size_, CountQueuingStrategy(..),
-        gTypeCountQueuingStrategy)
+       (newCountQueuingStrategy, getHighWaterMark, getSize, CountQueuingStrategy(..), gTypeCountQueuingStrategy)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CountQueuingStrategy Mozilla CountQueuingStrategy documentation> 
-newCountQueuingStrategy :: (MonadDOM m) => m CountQueuingStrategy
-newCountQueuingStrategy
-  = liftDOM
-      (CountQueuingStrategy <$> new (jsg "CountQueuingStrategy") ())
+-- | <https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy/CountQueuingStrategy MDN CountQueuingStrategy. documentation>
+newCountQueuingStrategy :: (MonadDOM m) => QueuingStrategyInit -> m CountQueuingStrategy
+newCountQueuingStrategy init = liftDOM (((new (jsg "CountQueuingStrategy") [toJSVal init]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CountQueuingStrategy.size Mozilla CountQueuingStrategy.size documentation> 
-size :: (MonadDOM m) => CountQueuingStrategy -> m Double
-size self = liftDOM ((self ^. jsf "size" ()) >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy/highWaterMark MDN CountQueuingStrategy.highWaterMark documentation>
+getHighWaterMark :: (MonadDOM m) => CountQueuingStrategy -> m Double
+getHighWaterMark self = liftDOM (((self ^. js "highWaterMark") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CountQueuingStrategy.size Mozilla CountQueuingStrategy.size documentation> 
-size_ :: (MonadDOM m) => CountQueuingStrategy -> m ()
-size_ self = liftDOM (void (self ^. jsf "size" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy/size MDN CountQueuingStrategy.size documentation>
+getSize :: (MonadDOM m) => CountQueuingStrategy -> m Function
+getSize self = liftDOM (((self ^. js "size") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Counter.hs b/src/JSDOM/Generated/Counter.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/Counter.hs
+++ /dev/null
@@ -1,39 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.Counter
-       (getIdentifier, getListStyle, getSeparator, Counter(..),
-        gTypeCounter)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Counter.identifier Mozilla Counter.identifier documentation> 
-getIdentifier ::
-              (MonadDOM m, FromJSString result) => Counter -> m result
-getIdentifier self
-  = liftDOM ((self ^. js "identifier") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Counter.listStyle Mozilla Counter.listStyle documentation> 
-getListStyle ::
-             (MonadDOM m, FromJSString result) => Counter -> m result
-getListStyle self
-  = liftDOM ((self ^. js "listStyle") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Counter.separator Mozilla Counter.separator documentation> 
-getSeparator ::
-             (MonadDOM m, FromJSString result) => Counter -> m result
-getSeparator self
-  = liftDOM ((self ^. js "separator") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/CreateHTMLCallback.hs b/src/JSDOM/Generated/CreateHTMLCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CreateHTMLCallback.hs
@@ -0,0 +1,33 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newCreateHTMLCallback :: (MonadDOM m) => (JSString -> JSVal -> JSM ()) -> m CreateHTMLCallback
+newCreateHTMLCallback callback = liftDOM (CreateHTMLCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (input : arguments : _) -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
+
+newCreateHTMLCallbackSync :: (MonadDOM m) => (JSString -> JSVal -> JSM ()) -> m CreateHTMLCallback
+newCreateHTMLCallbackSync callback = liftDOM (CreateHTMLCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (input : arguments : _) -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
+
+newCreateHTMLCallbackAsync :: (MonadDOM m) => (JSString -> JSVal -> JSM ()) -> m CreateHTMLCallback
+newCreateHTMLCallbackAsync callback = liftDOM (CreateHTMLCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (input : arguments : _) -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
diff --git a/src/JSDOM/Generated/CreateParserOptionsCallback.hs b/src/JSDOM/Generated/CreateParserOptionsCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CreateParserOptionsCallback.hs
@@ -0,0 +1,33 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newCreateParserOptionsCallback :: (MonadDOM m) => (SetHTMLUnsafeOptions -> JSVal -> JSM ()) -> m CreateParserOptionsCallback
+newCreateParserOptionsCallback callback = liftDOM (CreateParserOptionsCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (options : arguments : _) -> do
+          options' <- fromJSValUnchecked options
+          arguments' <- P.return arguments
+          callback options' arguments'))
+
+newCreateParserOptionsCallbackSync :: (MonadDOM m) => (SetHTMLUnsafeOptions -> JSVal -> JSM ()) -> m CreateParserOptionsCallback
+newCreateParserOptionsCallbackSync callback = liftDOM (CreateParserOptionsCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (options : arguments : _) -> do
+          options' <- fromJSValUnchecked options
+          arguments' <- P.return arguments
+          callback options' arguments'))
+
+newCreateParserOptionsCallbackAsync :: (MonadDOM m) => (SetHTMLUnsafeOptions -> JSVal -> JSM ()) -> m CreateParserOptionsCallback
+newCreateParserOptionsCallbackAsync callback = liftDOM (CreateParserOptionsCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (options : arguments : _) -> do
+          options' <- fromJSValUnchecked options
+          arguments' <- P.return arguments
+          callback options' arguments'))
diff --git a/src/JSDOM/Generated/CreateScriptCallback.hs b/src/JSDOM/Generated/CreateScriptCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CreateScriptCallback.hs
@@ -0,0 +1,33 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newCreateScriptCallback :: (MonadDOM m) => (JSString -> JSVal -> JSM ()) -> m CreateScriptCallback
+newCreateScriptCallback callback = liftDOM (CreateScriptCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (input : arguments : _) -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
+
+newCreateScriptCallbackSync :: (MonadDOM m) => (JSString -> JSVal -> JSM ()) -> m CreateScriptCallback
+newCreateScriptCallbackSync callback = liftDOM (CreateScriptCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (input : arguments : _) -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
+
+newCreateScriptCallbackAsync :: (MonadDOM m) => (JSString -> JSVal -> JSM ()) -> m CreateScriptCallback
+newCreateScriptCallbackAsync callback = liftDOM (CreateScriptCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (input : arguments : _) -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
diff --git a/src/JSDOM/Generated/CreateScriptURLCallback.hs b/src/JSDOM/Generated/CreateScriptURLCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CreateScriptURLCallback.hs
@@ -0,0 +1,33 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newCreateScriptURLCallback :: (MonadDOM m) => (JSString -> JSVal -> JSM ()) -> m CreateScriptURLCallback
+newCreateScriptURLCallback callback = liftDOM (CreateScriptURLCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (input : arguments : _) -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
+
+newCreateScriptURLCallbackSync :: (MonadDOM m) => (JSString -> JSVal -> JSM ()) -> m CreateScriptURLCallback
+newCreateScriptURLCallbackSync callback = liftDOM (CreateScriptURLCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (input : arguments : _) -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
+
+newCreateScriptURLCallbackAsync :: (MonadDOM m) => (JSString -> JSVal -> JSM ()) -> m CreateScriptURLCallback
+newCreateScriptURLCallbackAsync callback = liftDOM (CreateScriptURLCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (input : arguments : _) -> do
+          input' <- fromJSValUnchecked input
+          arguments' <- P.return arguments
+          callback input' arguments'))
diff --git a/src/JSDOM/Generated/Credential.hs b/src/JSDOM/Generated/Credential.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Credential.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
+module JSDOM.Generated.Credential
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Credential/isConditionalMediationAvailable_static MDN Credential.isConditionalMediationAvailable documentation>
+isConditionalMediationAvailable :: (MonadDOM m) => m Bool
+isConditionalMediationAvailable = liftDOM ((((((jsg "Credential") ^. jsf "isConditionalMediationAvailable" ()) >>= readPromise)) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Credential/isConditionalMediationAvailable_static MDN Credential.isConditionalMediationAvailable documentation>
+isConditionalMediationAvailable_ :: (MonadDOM m) => m ()
+isConditionalMediationAvailable_ = liftDOM (void ((((jsg "Credential") ^. jsf "isConditionalMediationAvailable" ()) >>= readPromise)))
+
+-- | <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 ((((Types.toCredential self) ^. js "id") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toCredential self) ^. js "type") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CredentialCreationOptions.hs b/src/JSDOM/Generated/CredentialCreationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CredentialCreationOptions.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
+module JSDOM.Generated.CredentialCreationOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dictdef-credentialcreationoptions CredentialCreationOptions specification>
+newCredentialCreationOptions :: (MonadDOM m) => m CredentialCreationOptions
+newCredentialCreationOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-mediation CredentialCreationOptions.mediation specification>
+setMediation :: (MonadDOM m) => CredentialCreationOptions -> CredentialMediationRequirement -> m ()
+setMediation self val = liftDOM (void (self ^. jss "mediation" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-mediation CredentialCreationOptions.mediation specification>
+getMediation :: (MonadDOM m) => CredentialCreationOptions -> m (Maybe CredentialMediationRequirement)
+getMediation self = liftDOM (((self ^. js "mediation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-mediation CredentialCreationOptions.mediation specification>
+getMediationUnsafe :: (MonadDOM m, HasCallStack) => CredentialCreationOptions -> m CredentialMediationRequirement
+getMediationUnsafe self = liftDOM ((((self ^. js "mediation") >>= 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 (((self ^. js "mediation") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "signal" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-signal CredentialCreationOptions.signal specification>
+getSignal :: (MonadDOM m) => CredentialCreationOptions -> m (Maybe AbortSignal)
+getSignal self = liftDOM (((self ^. js "signal") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-signal CredentialCreationOptions.signal specification>
+getSignalUnsafe :: (MonadDOM m, HasCallStack) => CredentialCreationOptions -> m AbortSignal
+getSignalUnsafe self = liftDOM ((((self ^. js "signal") >>= 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 (((self ^. js "signal") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "password" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-password CredentialCreationOptions.password specification>
+getPassword :: (MonadDOM m) => CredentialCreationOptions -> m (Maybe PasswordCredentialInit)
+getPassword self = liftDOM (((self ^. js "password") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-password CredentialCreationOptions.password specification>
+getPasswordUnsafe :: (MonadDOM m, HasCallStack) => CredentialCreationOptions -> m PasswordCredentialInit
+getPasswordUnsafe self = liftDOM ((((self ^. js "password") >>= 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 (((self ^. js "password") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-federated CredentialCreationOptions.federated specification>
+setFederated :: (MonadDOM m) => CredentialCreationOptions -> FederatedCredentialInit -> m ()
+setFederated self val = liftDOM (void (self ^. jss "federated" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-federated CredentialCreationOptions.federated specification>
+getFederated :: (MonadDOM m) => CredentialCreationOptions -> m (Maybe FederatedCredentialInit)
+getFederated self = liftDOM (((self ^. js "federated") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialcreationoptions-federated CredentialCreationOptions.federated specification>
+getFederatedUnsafe :: (MonadDOM m, HasCallStack) => CredentialCreationOptions -> m FederatedCredentialInit
+getFederatedUnsafe self = liftDOM ((((self ^. js "federated") >>= 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 (((self ^. js "federated") >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-credentialcreationoptions-digital CredentialCreationOptions.digital specification>
+setDigital :: (MonadDOM m) => CredentialCreationOptions -> DigitalCredentialCreationOptions -> m ()
+setDigital self val = liftDOM (void (self ^. jss "digital" (toJSVal val)))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-credentialcreationoptions-digital CredentialCreationOptions.digital specification>
+getDigital :: (MonadDOM m) => CredentialCreationOptions -> m (Maybe DigitalCredentialCreationOptions)
+getDigital self = liftDOM (((self ^. js "digital") >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-credentialcreationoptions-digital CredentialCreationOptions.digital specification>
+getDigitalUnsafe :: (MonadDOM m, HasCallStack) => CredentialCreationOptions -> m DigitalCredentialCreationOptions
+getDigitalUnsafe self = liftDOM ((((self ^. js "digital") >>= 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 (((self ^. js "digital") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-credentialcreationoptions-publickey CredentialCreationOptions.publicKey specification>
+setPublicKey :: (MonadDOM m) => CredentialCreationOptions -> PublicKeyCredentialCreationOptions -> m ()
+setPublicKey self val = liftDOM (void (self ^. jss "publicKey" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-credentialcreationoptions-publickey CredentialCreationOptions.publicKey specification>
+getPublicKey :: (MonadDOM m) => CredentialCreationOptions -> m (Maybe PublicKeyCredentialCreationOptions)
+getPublicKey self = liftDOM (((self ^. js "publicKey") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-credentialcreationoptions-publickey CredentialCreationOptions.publicKey specification>
+getPublicKeyUnsafe :: (MonadDOM m, HasCallStack) => CredentialCreationOptions -> m PublicKeyCredentialCreationOptions
+getPublicKeyUnsafe self = liftDOM ((((self ^. js "publicKey") >>= 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 (((self ^. js "publicKey") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CredentialData.hs b/src/JSDOM/Generated/CredentialData.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CredentialData.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
+module JSDOM.Generated.CredentialData
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dictdef-credentialdata CredentialData specification>
+newCredentialData :: (MonadDOM m, ToJSString id) => id -> m CredentialData
+newCredentialData id = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "id" (toJSVal id)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toCredentialData self) ^. jss "id" (toJSVal val)))
+
+-- | <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 ((((Types.toCredentialData self) ^. js "id") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CredentialPropertiesOutput.hs b/src/JSDOM/Generated/CredentialPropertiesOutput.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CredentialPropertiesOutput.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.CredentialPropertiesOutput
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-credentialpropertiesoutput CredentialPropertiesOutput specification>
+newCredentialPropertiesOutput :: (MonadDOM m) => m CredentialPropertiesOutput
+newCredentialPropertiesOutput = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-credentialpropertiesoutput-rk CredentialPropertiesOutput.rk specification>
+setRk :: (MonadDOM m) => CredentialPropertiesOutput -> Bool -> m ()
+setRk self val = liftDOM (void (self ^. jss "rk" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-credentialpropertiesoutput-rk CredentialPropertiesOutput.rk specification>
+getRk :: (MonadDOM m) => CredentialPropertiesOutput -> m (Maybe Bool)
+getRk self = liftDOM (((self ^. js "rk") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-credentialpropertiesoutput-rk CredentialPropertiesOutput.rk specification>
+getRkUnsafe :: (MonadDOM m, HasCallStack) => CredentialPropertiesOutput -> m Bool
+getRkUnsafe self = liftDOM ((((self ^. js "rk") >>= 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 (((self ^. js "rk") >>= valToBool))
diff --git a/src/JSDOM/Generated/CredentialRequestOptions.hs b/src/JSDOM/Generated/CredentialRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CredentialRequestOptions.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
+module JSDOM.Generated.CredentialRequestOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dictdef-credentialrequestoptions CredentialRequestOptions specification>
+newCredentialRequestOptions :: (MonadDOM m) => m CredentialRequestOptions
+newCredentialRequestOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-mediation CredentialRequestOptions.mediation specification>
+setMediation :: (MonadDOM m) => CredentialRequestOptions -> CredentialMediationRequirement -> m ()
+setMediation self val = liftDOM (void (self ^. jss "mediation" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-mediation CredentialRequestOptions.mediation specification>
+getMediation :: (MonadDOM m) => CredentialRequestOptions -> m (Maybe CredentialMediationRequirement)
+getMediation self = liftDOM (((self ^. js "mediation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-mediation CredentialRequestOptions.mediation specification>
+getMediationUnsafe :: (MonadDOM m, HasCallStack) => CredentialRequestOptions -> m CredentialMediationRequirement
+getMediationUnsafe self = liftDOM ((((self ^. js "mediation") >>= 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 (((self ^. js "mediation") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "uiMode" (toJSVal val)))
+
+-- | <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 (((self ^. js "uiMode") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "uiMode") >>= fromMaybeJSString) >>= 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 (((self ^. js "uiMode") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "signal" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-signal CredentialRequestOptions.signal specification>
+getSignal :: (MonadDOM m) => CredentialRequestOptions -> m (Maybe AbortSignal)
+getSignal self = liftDOM (((self ^. js "signal") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-signal CredentialRequestOptions.signal specification>
+getSignalUnsafe :: (MonadDOM m, HasCallStack) => CredentialRequestOptions -> m AbortSignal
+getSignalUnsafe self = liftDOM ((((self ^. js "signal") >>= 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 (((self ^. js "signal") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-password CredentialRequestOptions.password specification>
+setPassword :: (MonadDOM m) => CredentialRequestOptions -> Bool -> m ()
+setPassword self val = liftDOM (void (self ^. jss "password" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-password CredentialRequestOptions.password specification>
+getPassword :: (MonadDOM m) => CredentialRequestOptions -> m (Maybe Bool)
+getPassword self = liftDOM (((self ^. js "password") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-password CredentialRequestOptions.password specification>
+getPasswordUnsafe :: (MonadDOM m, HasCallStack) => CredentialRequestOptions -> m Bool
+getPasswordUnsafe self = liftDOM ((((self ^. js "password") >>= 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 (((self ^. js "password") >>= valToBool))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-federated CredentialRequestOptions.federated specification>
+setFederated :: (MonadDOM m) => CredentialRequestOptions -> FederatedCredentialRequestOptions -> m ()
+setFederated self val = liftDOM (void (self ^. jss "federated" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-federated CredentialRequestOptions.federated specification>
+getFederated :: (MonadDOM m) => CredentialRequestOptions -> m (Maybe FederatedCredentialRequestOptions)
+getFederated self = liftDOM (((self ^. js "federated") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-credentialrequestoptions-federated CredentialRequestOptions.federated specification>
+getFederatedUnsafe :: (MonadDOM m, HasCallStack) => CredentialRequestOptions -> m FederatedCredentialRequestOptions
+getFederatedUnsafe self = liftDOM ((((self ^. js "federated") >>= 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 (((self ^. js "federated") >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-credentialrequestoptions-digital CredentialRequestOptions.digital specification>
+setDigital :: (MonadDOM m) => CredentialRequestOptions -> DigitalCredentialRequestOptions -> m ()
+setDigital self val = liftDOM (void (self ^. jss "digital" (toJSVal val)))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-credentialrequestoptions-digital CredentialRequestOptions.digital specification>
+getDigital :: (MonadDOM m) => CredentialRequestOptions -> m (Maybe DigitalCredentialRequestOptions)
+getDigital self = liftDOM (((self ^. js "digital") >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-credentialrequestoptions-digital CredentialRequestOptions.digital specification>
+getDigitalUnsafe :: (MonadDOM m, HasCallStack) => CredentialRequestOptions -> m DigitalCredentialRequestOptions
+getDigitalUnsafe self = liftDOM ((((self ^. js "digital") >>= 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 (((self ^. js "digital") >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-credentialrequestoptions-identity CredentialRequestOptions.identity specification>
+setIdentity :: (MonadDOM m) => CredentialRequestOptions -> IdentityCredentialRequestOptions -> m ()
+setIdentity self val = liftDOM (void (self ^. jss "identity" (toJSVal val)))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-credentialrequestoptions-identity CredentialRequestOptions.identity specification>
+getIdentity :: (MonadDOM m) => CredentialRequestOptions -> m (Maybe IdentityCredentialRequestOptions)
+getIdentity self = liftDOM (((self ^. js "identity") >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-credentialrequestoptions-identity CredentialRequestOptions.identity specification>
+getIdentityUnsafe :: (MonadDOM m, HasCallStack) => CredentialRequestOptions -> m IdentityCredentialRequestOptions
+getIdentityUnsafe self = liftDOM ((((self ^. js "identity") >>= 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 (((self ^. js "identity") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/web-otp/#dom-credentialrequestoptions-otp CredentialRequestOptions.otp specification>
+setOtp :: (MonadDOM m) => CredentialRequestOptions -> OTPCredentialRequestOptions -> m ()
+setOtp self val = liftDOM (void (self ^. jss "otp" (toJSVal val)))
+
+-- | <https://wicg.github.io/web-otp/#dom-credentialrequestoptions-otp CredentialRequestOptions.otp specification>
+getOtp :: (MonadDOM m) => CredentialRequestOptions -> m (Maybe OTPCredentialRequestOptions)
+getOtp self = liftDOM (((self ^. js "otp") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/web-otp/#dom-credentialrequestoptions-otp CredentialRequestOptions.otp specification>
+getOtpUnsafe :: (MonadDOM m, HasCallStack) => CredentialRequestOptions -> m OTPCredentialRequestOptions
+getOtpUnsafe self = liftDOM ((((self ^. js "otp") >>= 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 (((self ^. js "otp") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-credentialrequestoptions-publickey CredentialRequestOptions.publicKey specification>
+setPublicKey :: (MonadDOM m) => CredentialRequestOptions -> PublicKeyCredentialRequestOptions -> m ()
+setPublicKey self val = liftDOM (void (self ^. jss "publicKey" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-credentialrequestoptions-publickey CredentialRequestOptions.publicKey specification>
+getPublicKey :: (MonadDOM m) => CredentialRequestOptions -> m (Maybe PublicKeyCredentialRequestOptions)
+getPublicKey self = liftDOM (((self ^. js "publicKey") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-credentialrequestoptions-publickey CredentialRequestOptions.publicKey specification>
+getPublicKeyUnsafe :: (MonadDOM m, HasCallStack) => CredentialRequestOptions -> m PublicKeyCredentialRequestOptions
+getPublicKeyUnsafe self = liftDOM ((((self ^. js "publicKey") >>= 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 (((self ^. js "publicKey") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CredentialsContainer.hs b/src/JSDOM/Generated/CredentialsContainer.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CredentialsContainer.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
+module JSDOM.Generated.CredentialsContainer
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((((self ^. jsf "create" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= 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 (((self ^. jsf "create" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 ((((((self ^. jsf "create" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= 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 (((((self ^. jsf "create" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((((self ^. jsf "get" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= 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 (((self ^. jsf "get" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 ((((((self ^. jsf "get" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= 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 (((((self ^. jsf "get" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CredentialsContainer/preventSilentAccess MDN CredentialsContainer.preventSilentAccess documentation>
+preventSilentAccess :: (MonadDOM m) => CredentialsContainer -> m ()
+preventSilentAccess self = liftDOM (void (((self ^. jsf "preventSilentAccess" ()) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "store" [toJSVal credential]) >>= readPromise)))
diff --git a/src/JSDOM/Generated/Crypto.hs b/src/JSDOM/Generated/Crypto.hs
--- a/src/JSDOM/Generated/Crypto.hs
+++ b/src/JSDOM/Generated/Crypto.hs
@@ -1,46 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcrypto-2 (webref). Do not edit.
 module JSDOM.Generated.Crypto
-       (getRandomValues, getRandomValues_, getSubtle, getWebkitSubtle,
-        Crypto(..), gTypeCrypto)
+       (getRandomValues, getRandomValues_, randomUUID, randomUUID_, getSubtle, Crypto(..), gTypeCrypto)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.getRandomValues Mozilla Crypto.getRandomValues documentation> 
-getRandomValues ::
-                (MonadDOM m, IsArrayBufferView array) =>
-                  Crypto -> array -> m ArrayBufferView
-getRandomValues self array
-  = liftDOM
-      ((self ^. jsf "getRandomValues" [toJSVal array]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "getRandomValues" [toJSVal array]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.getRandomValues Mozilla Crypto.getRandomValues documentation> 
-getRandomValues_ ::
-                 (MonadDOM m, IsArrayBufferView array) => Crypto -> array -> m ()
-getRandomValues_ self array
-  = liftDOM (void (self ^. jsf "getRandomValues" [toJSVal 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 (self ^. jsf "getRandomValues" [toJSVal array]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.subtle Mozilla Crypto.subtle documentation> 
-getSubtle :: (MonadDOM m) => Crypto -> m SubtleCrypto
-getSubtle self
-  = liftDOM ((self ^. js "subtle") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Crypto/randomUUID MDN Crypto.randomUUID documentation>
+randomUUID :: (MonadDOM m, FromJSString result) => Crypto -> m result
+randomUUID self = liftDOM (((self ^. jsf "randomUUID" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.webkitSubtle Mozilla Crypto.webkitSubtle documentation> 
-getWebkitSubtle :: (MonadDOM m) => Crypto -> m WebKitSubtleCrypto
-getWebkitSubtle self
-  = liftDOM ((self ^. js "webkitSubtle") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Crypto/randomUUID MDN Crypto.randomUUID documentation>
+randomUUID_ :: (MonadDOM m) => Crypto -> m ()
+randomUUID_ self = liftDOM (void (self ^. jsf "randomUUID" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Crypto/subtle MDN Crypto.subtle documentation>
+getSubtle :: (MonadDOM m) => Crypto -> m SubtleCrypto
+getSubtle self = liftDOM (((self ^. js "subtle") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CryptoKey.hs b/src/JSDOM/Generated/CryptoKey.hs
--- a/src/JSDOM/Generated/CryptoKey.hs
+++ b/src/JSDOM/Generated/CryptoKey.hs
@@ -1,40 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcrypto-2 (webref). Do not edit.
 module JSDOM.Generated.CryptoKey
-       (getType, getExtractable, getAlgorithm, getUsages, CryptoKey(..),
-        gTypeCryptoKey)
+       (getType, getExtractable, getAlgorithm, getUsages, CryptoKey(..), gTypeCryptoKey)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.type Mozilla CryptoKey.type documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/CryptoKey/type MDN CryptoKey.type documentation>
 getType :: (MonadDOM m) => CryptoKey -> m KeyType
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.extractable Mozilla CryptoKey.extractable documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/CryptoKey/extractable MDN CryptoKey.extractable documentation>
 getExtractable :: (MonadDOM m) => CryptoKey -> m Bool
-getExtractable self
-  = liftDOM ((self ^. js "extractable") >>= valToBool)
+getExtractable self = liftDOM (((self ^. js "extractable") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.algorithm Mozilla CryptoKey.algorithm documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/CryptoKey/algorithm MDN CryptoKey.algorithm documentation>
 getAlgorithm :: (MonadDOM m) => CryptoKey -> m GObject
-getAlgorithm self
-  = liftDOM ((self ^. js "algorithm") >>= fromJSValUnchecked)
+getAlgorithm self = liftDOM (((self ^. js "algorithm") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.usages Mozilla CryptoKey.usages documentation> 
-getUsages :: (MonadDOM m) => CryptoKey -> m [CryptoKeyUsage]
-getUsages self
-  = liftDOM ((self ^. js "usages") >>= fromJSArrayUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CryptoKey/usages MDN CryptoKey.usages documentation>
+getUsages :: (MonadDOM m) => CryptoKey -> m GObject
+getUsages self = liftDOM (((self ^. js "usages") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CryptoKeyPair.hs b/src/JSDOM/Generated/CryptoKeyPair.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CryptoKeyPair.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcrypto-2 (webref). Do not edit.
+module JSDOM.Generated.CryptoKeyPair
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcrypto/#dfn-CryptoKeyPair CryptoKeyPair specification>
+newCryptoKeyPair :: (MonadDOM m) => m CryptoKeyPair
+newCryptoKeyPair = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dfn-CryptoKeyPair-publicKey CryptoKeyPair.publicKey specification>
+setPublicKey :: (MonadDOM m) => CryptoKeyPair -> CryptoKey -> m ()
+setPublicKey self val = liftDOM (void (self ^. jss "publicKey" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dfn-CryptoKeyPair-publicKey CryptoKeyPair.publicKey specification>
+getPublicKey :: (MonadDOM m) => CryptoKeyPair -> m (Maybe CryptoKey)
+getPublicKey self = liftDOM (((self ^. js "publicKey") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dfn-CryptoKeyPair-publicKey CryptoKeyPair.publicKey specification>
+getPublicKeyUnsafe :: (MonadDOM m, HasCallStack) => CryptoKeyPair -> m CryptoKey
+getPublicKeyUnsafe self = liftDOM ((((self ^. js "publicKey") >>= 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 (((self ^. js "publicKey") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dfn-CryptoKeyPair-privateKey CryptoKeyPair.privateKey specification>
+setPrivateKey :: (MonadDOM m) => CryptoKeyPair -> CryptoKey -> m ()
+setPrivateKey self val = liftDOM (void (self ^. jss "privateKey" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dfn-CryptoKeyPair-privateKey CryptoKeyPair.privateKey specification>
+getPrivateKey :: (MonadDOM m) => CryptoKeyPair -> m (Maybe CryptoKey)
+getPrivateKey self = liftDOM (((self ^. js "privateKey") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dfn-CryptoKeyPair-privateKey CryptoKeyPair.privateKey specification>
+getPrivateKeyUnsafe :: (MonadDOM m, HasCallStack) => CryptoKeyPair -> m CryptoKey
+getPrivateKeyUnsafe self = liftDOM ((((self ^. js "privateKey") >>= 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 (((self ^. js "privateKey") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CurrentUserDetailsOptions.hs b/src/JSDOM/Generated/CurrentUserDetailsOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CurrentUserDetailsOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.CurrentUserDetailsOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "rpId" (toJSVal rpId)) P.>> (o ^. jss "userId" (toJSVal userId)) P.>> (o ^. jss "name" (toJSVal name)) P.>> (o ^. jss "displayName" (toJSVal displayName)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-currentuserdetailsoptions-rpid CurrentUserDetailsOptions.rpId specification>
+setRpId :: (MonadDOM m, ToJSString val) => CurrentUserDetailsOptions -> val -> m ()
+setRpId self val = liftDOM (void (self ^. jss "rpId" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-currentuserdetailsoptions-rpid CurrentUserDetailsOptions.rpId specification>
+getRpId :: (MonadDOM m, FromJSString result) => CurrentUserDetailsOptions -> m result
+getRpId self = liftDOM (((self ^. js "rpId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-currentuserdetailsoptions-userid CurrentUserDetailsOptions.userId specification>
+setUserId :: (MonadDOM m, ToJSString val) => CurrentUserDetailsOptions -> val -> m ()
+setUserId self val = liftDOM (void (self ^. jss "userId" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-currentuserdetailsoptions-userid CurrentUserDetailsOptions.userId specification>
+getUserId :: (MonadDOM m, FromJSString result) => CurrentUserDetailsOptions -> m result
+getUserId self = liftDOM (((self ^. js "userId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-currentuserdetailsoptions-name CurrentUserDetailsOptions.name specification>
+setName :: (MonadDOM m, ToJSString val) => CurrentUserDetailsOptions -> val -> m ()
+setName self val = liftDOM (void (self ^. jss "name" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-currentuserdetailsoptions-name CurrentUserDetailsOptions.name specification>
+getName :: (MonadDOM m, FromJSString result) => CurrentUserDetailsOptions -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-currentuserdetailsoptions-displayname CurrentUserDetailsOptions.displayName specification>
+setDisplayName :: (MonadDOM m, ToJSString val) => CurrentUserDetailsOptions -> val -> m ()
+setDisplayName self val = liftDOM (void (self ^. jss "displayName" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-currentuserdetailsoptions-displayname CurrentUserDetailsOptions.displayName specification>
+getDisplayName :: (MonadDOM m, FromJSString result) => CurrentUserDetailsOptions -> m result
+getDisplayName self = liftDOM (((self ^. js "displayName") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/CustomElementConstructor.hs b/src/JSDOM/Generated/CustomElementConstructor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CustomElementConstructor.hs
@@ -0,0 +1,27 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newCustomElementConstructor :: (MonadDOM m) => (JSM ()) -> m CustomElementConstructor
+newCustomElementConstructor callback = liftDOM (CustomElementConstructor . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        _ -> do
+          callback ))
+
+newCustomElementConstructorSync :: (MonadDOM m) => (JSM ()) -> m CustomElementConstructor
+newCustomElementConstructorSync callback = liftDOM (CustomElementConstructor . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        _ -> do
+          callback ))
+
+newCustomElementConstructorAsync :: (MonadDOM m) => (JSM ()) -> m CustomElementConstructor
+newCustomElementConstructorAsync callback = liftDOM (CustomElementConstructor . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        _ -> do
+          callback ))
diff --git a/src/JSDOM/Generated/CustomElementRegistry.hs b/src/JSDOM/Generated/CustomElementRegistry.hs
--- a/src/JSDOM/Generated/CustomElementRegistry.hs
+++ b/src/JSDOM/Generated/CustomElementRegistry.hs
@@ -1,50 +1,68 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.CustomElementRegistry
-       (define, get, get_, whenDefined, CustomElementRegistry(..),
-        gTypeCustomElementRegistry)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry.define Mozilla CustomElementRegistry.define documentation> 
-define ::
-       (MonadDOM m, ToJSString name, IsFunction constructor) =>
-         CustomElementRegistry -> name -> constructor -> m ()
-define self name constructor
-  = liftDOM
-      (void (self ^. jsf "define" [toJSVal name, toJSVal constructor]))
+-- | <https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/CustomElementRegistry MDN CustomElementRegistry. documentation>
+newCustomElementRegistry :: (MonadDOM m) => m CustomElementRegistry
+newCustomElementRegistry = liftDOM (((new (jsg "CustomElementRegistry") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry.get Mozilla CustomElementRegistry.get documentation> 
-get ::
-    (MonadDOM m, ToJSString name) =>
-      CustomElementRegistry -> name -> m JSVal
-get self name
-  = liftDOM ((self ^. jsf "get" [toJSVal name]) >>= toJSVal)
+-- | <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 (self ^. jsf "define" [toJSVal name, toJSVal constructor]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry.get Mozilla CustomElementRegistry.get documentation> 
-get_ ::
-     (MonadDOM m, ToJSString name) =>
-       CustomElementRegistry -> name -> m ()
+-- | <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 (self ^. jsf "define" [toJSVal name, toJSVal constructor, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 (((self ^. jsf "get" [toJSVal name]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "get" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry.whenDefined Mozilla CustomElementRegistry.whenDefined documentation> 
-whenDefined ::
-            (MonadDOM m, ToJSString name) =>
-              CustomElementRegistry -> name -> m ()
-whenDefined self name
-  = liftDOM
-      (void ((self ^. jsf "whenDefined" [toJSVal name]) >>= readPromise))
+-- | <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 (((self ^. jsf "getName" [toJSVal constructor]) >>= fromMaybeJSString))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/getName MDN CustomElementRegistry.getName documentation>
+getName_ :: (MonadDOM m) => CustomElementRegistry -> CustomElementConstructor -> m ()
+getName_ self constructor = liftDOM (void (self ^. jsf "getName" [toJSVal constructor]))
+
+-- | <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 ((((self ^. jsf "getName" [toJSVal constructor]) >>= fromMaybeJSString) >>= 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 (((self ^. jsf "getName" [toJSVal constructor]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "initialize" [toJSVal root]))
+
+-- | <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 (self ^. jsf "upgrade" [toJSVal root]))
+
+-- | <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 (self ^. jsf "whenDefined" [toJSVal name])
+
+-- | <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 (self ^. jsf "whenDefined" [toJSVal name]))
diff --git a/src/JSDOM/Generated/CustomEvent.hs b/src/JSDOM/Generated/CustomEvent.hs
--- a/src/JSDOM/Generated/CustomEvent.hs
+++ b/src/JSDOM/Generated/CustomEvent.hs
@@ -1,45 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.CustomEvent
-       (newCustomEvent, initCustomEvent, getDetail, CustomEvent(..),
-        gTypeCustomEvent)
+       (newCustomEvent, initCustomEvent, getDetail, CustomEvent(..), gTypeCustomEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent Mozilla CustomEvent documentation> 
-newCustomEvent ::
-               (MonadDOM m, ToJSString type') =>
-                 type' -> Maybe CustomEventInit -> m CustomEvent
-newCustomEvent type' eventInitDict
-  = liftDOM
-      (CustomEvent <$>
-         new (jsg "CustomEvent") [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "CustomEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.initCustomEvent Mozilla CustomEvent.initCustomEvent documentation> 
-initCustomEvent ::
-                (MonadDOM m, ToJSString type', ToJSVal detail) =>
-                  CustomEvent -> type' -> Bool -> Bool -> Maybe detail -> m ()
-initCustomEvent self type' bubbles cancelable detail
-  = liftDOM
-      (void
-         (self ^. jsf "initCustomEvent"
-            [toJSVal type', toJSVal bubbles, toJSVal cancelable,
-             toJSVal detail]))
+-- | <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 (self ^. jsf "initCustomEvent" [toJSVal type', P.maybe (P.return jsUndefined) toJSVal bubbles, P.maybe (P.return jsUndefined) toJSVal cancelable, toJSVal detail]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.detail Mozilla CustomEvent.detail documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/CustomEvent/detail MDN CustomEvent.detail documentation>
 getDetail :: (MonadDOM m) => CustomEvent -> m JSVal
-getDetail self = liftDOM ((self ^. js "detail") >>= toJSVal)
+getDetail self = liftDOM (self ^. js "detail")
diff --git a/src/JSDOM/Generated/CustomEventInit.hs b/src/JSDOM/Generated/CustomEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CustomEventInit.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.CustomEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://dom.spec.whatwg.org/#dictdef-customeventinit CustomEventInit specification>
+newCustomEventInit :: (MonadDOM m) => m CustomEventInit
+newCustomEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-customeventinit-detail CustomEventInit.detail specification>
+setDetail :: (MonadDOM m) => CustomEventInit -> JSVal -> m ()
+setDetail self val = liftDOM (void (self ^. jss "detail" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-customeventinit-detail CustomEventInit.detail specification>
+getDetail :: (MonadDOM m) => CustomEventInit -> m JSVal
+getDetail self = liftDOM (self ^. js "detail")
diff --git a/src/JSDOM/Generated/CustomStateSet.hs b/src/JSDOM/Generated/CustomStateSet.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/CustomStateSet.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.CustomStateSet
+       (CustomStateSet(..), gTypeCustomStateSet)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/DOMError.hs b/src/JSDOM/Generated/DOMError.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/DOMError.hs
+++ /dev/null
@@ -1,36 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.DOMError
-       (getName, getMessage, DOMError(..), gTypeDOMError, IsDOMError,
-        toDOMError)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMError.name Mozilla DOMError.name documentation> 
-getName ::
-        (MonadDOM m, IsDOMError self, FromJSString result) =>
-          self -> m result
-getName self
-  = liftDOM (((toDOMError self) ^. js "name") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMError.message Mozilla DOMError.message documentation> 
-getMessage ::
-           (MonadDOM m, IsDOMError self, FromJSString result) =>
-             self -> m result
-getMessage self
-  = liftDOM
-      (((toDOMError self) ^. js "message") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/DOMException.hs b/src/JSDOM/Generated/DOMException.hs
--- a/src/JSDOM/Generated/DOMException.hs
+++ b/src/JSDOM/Generated/DOMException.hs
@@ -1,93 +1,82 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webidl (webref). Do not edit.
 module JSDOM.Generated.DOMException
-       (newDOMException, 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, getCode, getName, getMessage,
-        DOMException(..), gTypeDOMException)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException Mozilla DOMException documentation> 
-newDOMException ::
-                (MonadDOM m, ToJSString message, ToJSString name) =>
-                  Maybe message -> Maybe name -> m DOMException
-newDOMException message name
-  = liftDOM
-      (DOMException <$>
-         new (jsg "DOMException") [toJSVal message, toJSVal name])
+-- | <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 (((new (jsg "DOMException") [P.maybe (P.return jsUndefined) toJSVal message, P.maybe (P.return jsUndefined) toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException.toString Mozilla DOMException.toString documentation> 
-toString ::
-         (MonadDOM m, FromJSString result) => DOMException -> m result
-toString self
-  = liftDOM ((self ^. jsf "toString" ()) >>= fromJSValUnchecked)
+-- | <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 ((((Types.toDOMException self) ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException.toString Mozilla DOMException.toString documentation> 
-toString_ :: (MonadDOM m) => DOMException -> m ()
-toString_ self = liftDOM (void (self ^. jsf "toString" ()))
+-- | <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 ((((Types.toDOMException self) ^. js "message") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMException/code MDN DOMException.code documentation>
+getCode :: (MonadDOM m, IsDOMException self) => self -> m Word
+getCode self = liftDOM ((P.round <$> (((Types.toDOMException self) ^. js "code") >>= valToNumber)))
+
 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
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException.code Mozilla DOMException.code documentation> 
-getCode :: (MonadDOM m) => DOMException -> m Word
-getCode self
-  = liftDOM (round <$> ((self ^. js "code") >>= valToNumber))
+pattern TIMEOUT_ERR = 23
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException.name Mozilla DOMException.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => DOMException -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+pattern INVALID_NODE_TYPE_ERR = 24
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException.message Mozilla DOMException.message documentation> 
-getMessage ::
-           (MonadDOM m, FromJSString result) => DOMException -> m result
-getMessage self
-  = liftDOM ((self ^. js "message") >>= fromJSValUnchecked)
+pattern DATA_CLONE_ERR = 25
diff --git a/src/JSDOM/Generated/DOMImplementation.hs b/src/JSDOM/Generated/DOMImplementation.hs
--- a/src/JSDOM/Generated/DOMImplementation.hs
+++ b/src/JSDOM/Generated/DOMImplementation.hs
@@ -1,94 +1,48 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.DOMImplementation
-       (createDocumentType, createDocumentType_, createDocument,
-        createDocument_, createHTMLDocument, createHTMLDocument_,
-        hasFeature, hasFeature_, DOMImplementation(..),
-        gTypeDOMImplementation)
+       (createDocument, createDocument_, createDocumentType, createDocumentType_, createHTMLDocument, createHTMLDocument_, hasFeature, hasFeature_, DOMImplementation(..), gTypeDOMImplementation)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocumentType Mozilla DOMImplementation.createDocumentType documentation> 
-createDocumentType ::
-                   (MonadDOM m, ToJSString qualifiedName, ToJSString publicId,
-                    ToJSString systemId) =>
-                     DOMImplementation ->
-                       qualifiedName -> publicId -> systemId -> m DocumentType
-createDocumentType self qualifiedName publicId systemId
-  = liftDOM
-      ((self ^. jsf "createDocumentType"
-          [toJSVal qualifiedName, toJSVal publicId, toJSVal systemId])
-         >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "createDocument" [toJSVal namespace, toJSVal qualifiedName, toJSVal doctype]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocumentType Mozilla DOMImplementation.createDocumentType documentation> 
-createDocumentType_ ::
-                    (MonadDOM m, ToJSString qualifiedName, ToJSString publicId,
-                     ToJSString systemId) =>
-                      DOMImplementation -> qualifiedName -> publicId -> systemId -> m ()
-createDocumentType_ self qualifiedName publicId systemId
-  = liftDOM
-      (void
-         (self ^. jsf "createDocumentType"
-            [toJSVal qualifiedName, toJSVal publicId, toJSVal systemId]))
+-- | <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 (self ^. jsf "createDocument" [toJSVal namespace, toJSVal qualifiedName, toJSVal doctype]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocument Mozilla DOMImplementation.createDocument documentation> 
-createDocument ::
-               (MonadDOM m, ToJSString namespaceURI, ToJSString qualifiedName) =>
-                 DOMImplementation ->
-                   Maybe namespaceURI ->
-                     qualifiedName -> Maybe DocumentType -> m XMLDocument
-createDocument self namespaceURI qualifiedName doctype
-  = liftDOM
-      ((self ^. jsf "createDocument"
-          [toJSVal namespaceURI, toJSVal qualifiedName, toJSVal doctype])
-         >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "createDocumentType" [toJSVal name, toJSVal publicId, toJSVal systemId]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocument Mozilla DOMImplementation.createDocument documentation> 
-createDocument_ ::
-                (MonadDOM m, ToJSString namespaceURI, ToJSString qualifiedName) =>
-                  DOMImplementation ->
-                    Maybe namespaceURI -> qualifiedName -> Maybe DocumentType -> m ()
-createDocument_ self namespaceURI qualifiedName doctype
-  = liftDOM
-      (void
-         (self ^. jsf "createDocument"
-            [toJSVal namespaceURI, toJSVal qualifiedName, toJSVal doctype]))
+-- | <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 (self ^. jsf "createDocumentType" [toJSVal name, toJSVal publicId, toJSVal systemId]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument Mozilla DOMImplementation.createHTMLDocument documentation> 
-createHTMLDocument ::
-                   (MonadDOM m, ToJSString title) =>
-                     DOMImplementation -> Maybe title -> m HTMLDocument
-createHTMLDocument self title
-  = liftDOM
-      ((self ^. jsf "createHTMLDocument" [toJSVal title]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "createHTMLDocument" [P.maybe (P.return jsUndefined) toJSVal title]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument Mozilla DOMImplementation.createHTMLDocument documentation> 
-createHTMLDocument_ ::
-                    (MonadDOM m, ToJSString title) =>
-                      DOMImplementation -> Maybe title -> m ()
-createHTMLDocument_ self title
-  = liftDOM (void (self ^. jsf "createHTMLDocument" [toJSVal title]))
+-- | <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 (self ^. jsf "createHTMLDocument" [P.maybe (P.return jsUndefined) toJSVal title]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.hasFeature Mozilla DOMImplementation.hasFeature documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMImplementation/hasFeature MDN DOMImplementation.hasFeature documentation>
 hasFeature :: (MonadDOM m) => DOMImplementation -> m Bool
-hasFeature self
-  = liftDOM ((self ^. jsf "hasFeature" ()) >>= valToBool)
+hasFeature self = liftDOM (((self ^. jsf "hasFeature" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.hasFeature Mozilla DOMImplementation.hasFeature documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMImplementation/hasFeature MDN DOMImplementation.hasFeature documentation>
 hasFeature_ :: (MonadDOM m) => DOMImplementation -> m ()
 hasFeature_ self = liftDOM (void (self ^. jsf "hasFeature" ()))
diff --git a/src/JSDOM/Generated/DOMMatrix.hs b/src/JSDOM/Generated/DOMMatrix.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DOMMatrix.hs
@@ -0,0 +1,316 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module JSDOM.Generated.DOMMatrix
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/DOMMatrix MDN DOMMatrix. documentation>
+newDOMMatrix :: (MonadDOM m, IsStringOrSequenceDouble init) => Maybe init -> m DOMMatrix
+newDOMMatrix init = liftDOM (((new (jsg "DOMMatrix") [P.maybe (P.return jsUndefined) toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/invertSelf MDN DOMMatrix.invertSelf documentation>
+invertSelf :: (MonadDOM m) => DOMMatrix -> m DOMMatrix
+invertSelf self = liftDOM (((self ^. jsf "invertSelf" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/invertSelf MDN DOMMatrix.invertSelf documentation>
+invertSelf_ :: (MonadDOM m) => DOMMatrix -> m ()
+invertSelf_ self = liftDOM (void (self ^. jsf "invertSelf" ()))
+
+-- | <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 (((self ^. jsf "multiplySelf" [P.maybe (P.return jsUndefined) toJSVal other]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "multiplySelf" [P.maybe (P.return jsUndefined) toJSVal other]))
+
+-- | <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 (((self ^. jsf "preMultiplySelf" [P.maybe (P.return jsUndefined) toJSVal other]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "preMultiplySelf" [P.maybe (P.return jsUndefined) toJSVal other]))
+
+-- | <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 (((self ^. jsf "rotateAxisAngleSelf" [P.maybe (P.return jsUndefined) toJSVal x, P.maybe (P.return jsUndefined) toJSVal y, P.maybe (P.return jsUndefined) toJSVal z, P.maybe (P.return jsUndefined) toJSVal angle]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "rotateAxisAngleSelf" [P.maybe (P.return jsUndefined) toJSVal x, P.maybe (P.return jsUndefined) toJSVal y, P.maybe (P.return jsUndefined) toJSVal z, P.maybe (P.return jsUndefined) toJSVal angle]))
+
+-- | <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 (((self ^. jsf "rotateFromVectorSelf" [P.maybe (P.return jsUndefined) toJSVal x, P.maybe (P.return jsUndefined) toJSVal y]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "rotateFromVectorSelf" [P.maybe (P.return jsUndefined) toJSVal x, P.maybe (P.return jsUndefined) toJSVal y]))
+
+-- | <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 (((self ^. jsf "rotateSelf" [P.maybe (P.return jsUndefined) toJSVal rotX, P.maybe (P.return jsUndefined) toJSVal rotY, P.maybe (P.return jsUndefined) toJSVal rotZ]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "rotateSelf" [P.maybe (P.return jsUndefined) toJSVal rotX, P.maybe (P.return jsUndefined) toJSVal rotY, P.maybe (P.return jsUndefined) toJSVal rotZ]))
+
+-- | <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 (((self ^. jsf "scale3dSelf" [P.maybe (P.return jsUndefined) toJSVal scale, P.maybe (P.return jsUndefined) toJSVal originX, P.maybe (P.return jsUndefined) toJSVal originY, P.maybe (P.return jsUndefined) toJSVal originZ]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "scale3dSelf" [P.maybe (P.return jsUndefined) toJSVal scale, P.maybe (P.return jsUndefined) toJSVal originX, P.maybe (P.return jsUndefined) toJSVal originY, P.maybe (P.return jsUndefined) toJSVal originZ]))
+
+-- | <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 (((self ^. jsf "scaleSelf" [P.maybe (P.return jsUndefined) toJSVal scaleX, P.maybe (P.return jsUndefined) toJSVal scaleY, P.maybe (P.return jsUndefined) toJSVal scaleZ, P.maybe (P.return jsUndefined) toJSVal originX, P.maybe (P.return jsUndefined) toJSVal originY, P.maybe (P.return jsUndefined) toJSVal originZ]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "scaleSelf" [P.maybe (P.return jsUndefined) toJSVal scaleX, P.maybe (P.return jsUndefined) toJSVal scaleY, P.maybe (P.return jsUndefined) toJSVal scaleZ, P.maybe (P.return jsUndefined) toJSVal originX, P.maybe (P.return jsUndefined) toJSVal originY, P.maybe (P.return jsUndefined) toJSVal originZ]))
+
+-- | <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 (((self ^. jsf "setMatrixValue" [toJSVal transformList]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "setMatrixValue" [toJSVal transformList]))
+
+-- | <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 (((self ^. jsf "skewXSelf" [P.maybe (P.return jsUndefined) toJSVal sx]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "skewXSelf" [P.maybe (P.return jsUndefined) toJSVal sx]))
+
+-- | <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 (((self ^. jsf "skewYSelf" [P.maybe (P.return jsUndefined) toJSVal sy]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "skewYSelf" [P.maybe (P.return jsUndefined) toJSVal sy]))
+
+-- | <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 (((self ^. jsf "translateSelf" [P.maybe (P.return jsUndefined) toJSVal tx, P.maybe (P.return jsUndefined) toJSVal ty, P.maybe (P.return jsUndefined) toJSVal tz]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "translateSelf" [P.maybe (P.return jsUndefined) toJSVal tx, P.maybe (P.return jsUndefined) toJSVal ty, P.maybe (P.return jsUndefined) toJSVal tz]))
+
+-- | <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 ((((jsg "DOMMatrix") ^. jsf "fromFloat32Array" [toJSVal array32]) >>= fromJSValUnchecked))
+
+-- | <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 ((jsg "DOMMatrix") ^. jsf "fromFloat32Array" [toJSVal array32]))
+
+-- | <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 ((((jsg "DOMMatrix") ^. jsf "fromFloat64Array" [toJSVal array64]) >>= fromJSValUnchecked))
+
+-- | <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 ((jsg "DOMMatrix") ^. jsf "fromFloat64Array" [toJSVal array64]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/fromMatrix_static MDN DOMMatrix.fromMatrix documentation>
+fromMatrix :: (MonadDOM m) => Maybe DOMMatrixInit -> m DOMMatrix
+fromMatrix other = liftDOM ((((jsg "DOMMatrix") ^. jsf "fromMatrix" [P.maybe (P.return jsUndefined) toJSVal other]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix/fromMatrix_static MDN DOMMatrix.fromMatrix documentation>
+fromMatrix_ :: (MonadDOM m) => Maybe DOMMatrixInit -> m ()
+fromMatrix_ other = liftDOM (void ((jsg "DOMMatrix") ^. jsf "fromMatrix" [P.maybe (P.return jsUndefined) toJSVal other]))
+
+-- | <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 (self ^. jss "a" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.a documentation>
+getA :: (MonadDOM m) => DOMMatrix -> m Double
+getA self = liftDOM (((self ^. js "a") >>= valToNumber))
+
+-- | <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 (self ^. jss "b" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.b documentation>
+getB :: (MonadDOM m) => DOMMatrix -> m Double
+getB self = liftDOM (((self ^. js "b") >>= valToNumber))
+
+-- | <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 (self ^. jss "c" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.c documentation>
+getC :: (MonadDOM m) => DOMMatrix -> m Double
+getC self = liftDOM (((self ^. js "c") >>= valToNumber))
+
+-- | <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 (self ^. jss "d" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.d documentation>
+getD :: (MonadDOM m) => DOMMatrix -> m Double
+getD self = liftDOM (((self ^. js "d") >>= valToNumber))
+
+-- | <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 (self ^. jss "e" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.e documentation>
+getE :: (MonadDOM m) => DOMMatrix -> m Double
+getE self = liftDOM (((self ^. js "e") >>= valToNumber))
+
+-- | <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 (self ^. jss "f" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.f documentation>
+getF :: (MonadDOM m) => DOMMatrix -> m Double
+getF self = liftDOM (((self ^. js "f") >>= valToNumber))
+
+-- | <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 (self ^. jss "m11" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m11 documentation>
+getM11 :: (MonadDOM m) => DOMMatrix -> m Double
+getM11 self = liftDOM (((self ^. js "m11") >>= valToNumber))
+
+-- | <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 (self ^. jss "m12" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m12 documentation>
+getM12 :: (MonadDOM m) => DOMMatrix -> m Double
+getM12 self = liftDOM (((self ^. js "m12") >>= valToNumber))
+
+-- | <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 (self ^. jss "m13" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m13 documentation>
+getM13 :: (MonadDOM m) => DOMMatrix -> m Double
+getM13 self = liftDOM (((self ^. js "m13") >>= valToNumber))
+
+-- | <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 (self ^. jss "m14" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m14 documentation>
+getM14 :: (MonadDOM m) => DOMMatrix -> m Double
+getM14 self = liftDOM (((self ^. js "m14") >>= valToNumber))
+
+-- | <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 (self ^. jss "m21" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m21 documentation>
+getM21 :: (MonadDOM m) => DOMMatrix -> m Double
+getM21 self = liftDOM (((self ^. js "m21") >>= valToNumber))
+
+-- | <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 (self ^. jss "m22" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m22 documentation>
+getM22 :: (MonadDOM m) => DOMMatrix -> m Double
+getM22 self = liftDOM (((self ^. js "m22") >>= valToNumber))
+
+-- | <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 (self ^. jss "m23" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m23 documentation>
+getM23 :: (MonadDOM m) => DOMMatrix -> m Double
+getM23 self = liftDOM (((self ^. js "m23") >>= valToNumber))
+
+-- | <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 (self ^. jss "m24" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m24 documentation>
+getM24 :: (MonadDOM m) => DOMMatrix -> m Double
+getM24 self = liftDOM (((self ^. js "m24") >>= valToNumber))
+
+-- | <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 (self ^. jss "m31" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m31 documentation>
+getM31 :: (MonadDOM m) => DOMMatrix -> m Double
+getM31 self = liftDOM (((self ^. js "m31") >>= valToNumber))
+
+-- | <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 (self ^. jss "m32" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m32 documentation>
+getM32 :: (MonadDOM m) => DOMMatrix -> m Double
+getM32 self = liftDOM (((self ^. js "m32") >>= valToNumber))
+
+-- | <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 (self ^. jss "m33" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m33 documentation>
+getM33 :: (MonadDOM m) => DOMMatrix -> m Double
+getM33 self = liftDOM (((self ^. js "m33") >>= valToNumber))
+
+-- | <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 (self ^. jss "m34" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m34 documentation>
+getM34 :: (MonadDOM m) => DOMMatrix -> m Double
+getM34 self = liftDOM (((self ^. js "m34") >>= valToNumber))
+
+-- | <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 (self ^. jss "m41" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m41 documentation>
+getM41 :: (MonadDOM m) => DOMMatrix -> m Double
+getM41 self = liftDOM (((self ^. js "m41") >>= valToNumber))
+
+-- | <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 (self ^. jss "m42" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m42 documentation>
+getM42 :: (MonadDOM m) => DOMMatrix -> m Double
+getM42 self = liftDOM (((self ^. js "m42") >>= valToNumber))
+
+-- | <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 (self ^. jss "m43" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m43 documentation>
+getM43 :: (MonadDOM m) => DOMMatrix -> m Double
+getM43 self = liftDOM (((self ^. js "m43") >>= valToNumber))
+
+-- | <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 (self ^. jss "m44" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrix#instance_properties MDN DOMMatrix.m44 documentation>
+getM44 :: (MonadDOM m) => DOMMatrix -> m Double
+getM44 self = liftDOM (((self ^. js "m44") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DOMMatrix2DInit.hs b/src/JSDOM/Generated/DOMMatrix2DInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DOMMatrix2DInit.hs
@@ -0,0 +1,212 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module JSDOM.Generated.DOMMatrix2DInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/geometry-1/#dictdef-dommatrix2dinit DOMMatrix2DInit specification>
+newDOMMatrix2DInit :: (MonadDOM m) => m DOMMatrix2DInit
+newDOMMatrix2DInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDOMMatrix2DInit self) ^. jss "a" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-a DOMMatrix2DInit.a specification>
+getA :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getA self = liftDOM ((((Types.toDOMMatrix2DInit self) ^. js "a") >>= 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 (((((Types.toDOMMatrix2DInit self) ^. js "a") >>= 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 ((((Types.toDOMMatrix2DInit self) ^. js "a") >>= valToNumber))
+
+-- | <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 ((Types.toDOMMatrix2DInit self) ^. jss "b" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-b DOMMatrix2DInit.b specification>
+getB :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getB self = liftDOM ((((Types.toDOMMatrix2DInit self) ^. js "b") >>= 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 (((((Types.toDOMMatrix2DInit self) ^. js "b") >>= 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 ((((Types.toDOMMatrix2DInit self) ^. js "b") >>= valToNumber))
+
+-- | <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 ((Types.toDOMMatrix2DInit self) ^. jss "c" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-c DOMMatrix2DInit.c specification>
+getC :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getC self = liftDOM ((((Types.toDOMMatrix2DInit self) ^. js "c") >>= 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 (((((Types.toDOMMatrix2DInit self) ^. js "c") >>= 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 ((((Types.toDOMMatrix2DInit self) ^. js "c") >>= valToNumber))
+
+-- | <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 ((Types.toDOMMatrix2DInit self) ^. jss "d" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-d DOMMatrix2DInit.d specification>
+getD :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getD self = liftDOM ((((Types.toDOMMatrix2DInit self) ^. js "d") >>= 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 (((((Types.toDOMMatrix2DInit self) ^. js "d") >>= 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 ((((Types.toDOMMatrix2DInit self) ^. js "d") >>= valToNumber))
+
+-- | <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 ((Types.toDOMMatrix2DInit self) ^. jss "e" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-e DOMMatrix2DInit.e specification>
+getE :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getE self = liftDOM ((((Types.toDOMMatrix2DInit self) ^. js "e") >>= 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 (((((Types.toDOMMatrix2DInit self) ^. js "e") >>= 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 ((((Types.toDOMMatrix2DInit self) ^. js "e") >>= valToNumber))
+
+-- | <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 ((Types.toDOMMatrix2DInit self) ^. jss "f" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-f DOMMatrix2DInit.f specification>
+getF :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getF self = liftDOM ((((Types.toDOMMatrix2DInit self) ^. js "f") >>= 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 (((((Types.toDOMMatrix2DInit self) ^. js "f") >>= 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 ((((Types.toDOMMatrix2DInit self) ^. js "f") >>= valToNumber))
+
+-- | <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 ((Types.toDOMMatrix2DInit self) ^. jss "m11" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m11 DOMMatrix2DInit.m11 specification>
+getM11 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getM11 self = liftDOM ((((Types.toDOMMatrix2DInit self) ^. js "m11") >>= 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 (((((Types.toDOMMatrix2DInit self) ^. js "m11") >>= 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 ((((Types.toDOMMatrix2DInit self) ^. js "m11") >>= valToNumber))
+
+-- | <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 ((Types.toDOMMatrix2DInit self) ^. jss "m12" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m12 DOMMatrix2DInit.m12 specification>
+getM12 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getM12 self = liftDOM ((((Types.toDOMMatrix2DInit self) ^. js "m12") >>= 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 (((((Types.toDOMMatrix2DInit self) ^. js "m12") >>= 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 ((((Types.toDOMMatrix2DInit self) ^. js "m12") >>= valToNumber))
+
+-- | <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 ((Types.toDOMMatrix2DInit self) ^. jss "m21" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m21 DOMMatrix2DInit.m21 specification>
+getM21 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getM21 self = liftDOM ((((Types.toDOMMatrix2DInit self) ^. js "m21") >>= 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 (((((Types.toDOMMatrix2DInit self) ^. js "m21") >>= 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 ((((Types.toDOMMatrix2DInit self) ^. js "m21") >>= valToNumber))
+
+-- | <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 ((Types.toDOMMatrix2DInit self) ^. jss "m22" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m22 DOMMatrix2DInit.m22 specification>
+getM22 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getM22 self = liftDOM ((((Types.toDOMMatrix2DInit self) ^. js "m22") >>= 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 (((((Types.toDOMMatrix2DInit self) ^. js "m22") >>= 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 ((((Types.toDOMMatrix2DInit self) ^. js "m22") >>= valToNumber))
+
+-- | <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 ((Types.toDOMMatrix2DInit self) ^. jss "m41" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m41 DOMMatrix2DInit.m41 specification>
+getM41 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getM41 self = liftDOM ((((Types.toDOMMatrix2DInit self) ^. js "m41") >>= 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 (((((Types.toDOMMatrix2DInit self) ^. js "m41") >>= 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 ((((Types.toDOMMatrix2DInit self) ^. js "m41") >>= valToNumber))
+
+-- | <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 ((Types.toDOMMatrix2DInit self) ^. jss "m42" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrix2dinit-m42 DOMMatrix2DInit.m42 specification>
+getM42 :: (MonadDOM m, IsDOMMatrix2DInit self) => self -> m (Maybe Double)
+getM42 self = liftDOM ((((Types.toDOMMatrix2DInit self) ^. js "m42") >>= 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 (((((Types.toDOMMatrix2DInit self) ^. js "m42") >>= 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 ((((Types.toDOMMatrix2DInit self) ^. js "m42") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DOMMatrixInit.hs b/src/JSDOM/Generated/DOMMatrixInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DOMMatrixInit.hs
@@ -0,0 +1,196 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module JSDOM.Generated.DOMMatrixInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/geometry-1/#dictdef-dommatrixinit DOMMatrixInit specification>
+newDOMMatrixInit :: (MonadDOM m) => m DOMMatrixInit
+newDOMMatrixInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m13 DOMMatrixInit.m13 specification>
+setM13 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM13 self val = liftDOM (void (self ^. jss "m13" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m13 DOMMatrixInit.m13 specification>
+getM13 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM13 self = liftDOM (((self ^. js "m13") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m13 DOMMatrixInit.m13 specification>
+getM13Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM13Unsafe self = liftDOM ((((self ^. js "m13") >>= 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 (((self ^. js "m13") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m14 DOMMatrixInit.m14 specification>
+setM14 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM14 self val = liftDOM (void (self ^. jss "m14" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m14 DOMMatrixInit.m14 specification>
+getM14 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM14 self = liftDOM (((self ^. js "m14") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m14 DOMMatrixInit.m14 specification>
+getM14Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM14Unsafe self = liftDOM ((((self ^. js "m14") >>= 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 (((self ^. js "m14") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m23 DOMMatrixInit.m23 specification>
+setM23 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM23 self val = liftDOM (void (self ^. jss "m23" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m23 DOMMatrixInit.m23 specification>
+getM23 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM23 self = liftDOM (((self ^. js "m23") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m23 DOMMatrixInit.m23 specification>
+getM23Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM23Unsafe self = liftDOM ((((self ^. js "m23") >>= 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 (((self ^. js "m23") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m24 DOMMatrixInit.m24 specification>
+setM24 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM24 self val = liftDOM (void (self ^. jss "m24" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m24 DOMMatrixInit.m24 specification>
+getM24 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM24 self = liftDOM (((self ^. js "m24") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m24 DOMMatrixInit.m24 specification>
+getM24Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM24Unsafe self = liftDOM ((((self ^. js "m24") >>= 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 (((self ^. js "m24") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m31 DOMMatrixInit.m31 specification>
+setM31 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM31 self val = liftDOM (void (self ^. jss "m31" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m31 DOMMatrixInit.m31 specification>
+getM31 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM31 self = liftDOM (((self ^. js "m31") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m31 DOMMatrixInit.m31 specification>
+getM31Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM31Unsafe self = liftDOM ((((self ^. js "m31") >>= 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 (((self ^. js "m31") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m32 DOMMatrixInit.m32 specification>
+setM32 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM32 self val = liftDOM (void (self ^. jss "m32" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m32 DOMMatrixInit.m32 specification>
+getM32 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM32 self = liftDOM (((self ^. js "m32") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m32 DOMMatrixInit.m32 specification>
+getM32Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM32Unsafe self = liftDOM ((((self ^. js "m32") >>= 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 (((self ^. js "m32") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m33 DOMMatrixInit.m33 specification>
+setM33 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM33 self val = liftDOM (void (self ^. jss "m33" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m33 DOMMatrixInit.m33 specification>
+getM33 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM33 self = liftDOM (((self ^. js "m33") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m33 DOMMatrixInit.m33 specification>
+getM33Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM33Unsafe self = liftDOM ((((self ^. js "m33") >>= 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 (((self ^. js "m33") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m34 DOMMatrixInit.m34 specification>
+setM34 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM34 self val = liftDOM (void (self ^. jss "m34" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m34 DOMMatrixInit.m34 specification>
+getM34 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM34 self = liftDOM (((self ^. js "m34") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m34 DOMMatrixInit.m34 specification>
+getM34Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM34Unsafe self = liftDOM ((((self ^. js "m34") >>= 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 (((self ^. js "m34") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m43 DOMMatrixInit.m43 specification>
+setM43 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM43 self val = liftDOM (void (self ^. jss "m43" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m43 DOMMatrixInit.m43 specification>
+getM43 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM43 self = liftDOM (((self ^. js "m43") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m43 DOMMatrixInit.m43 specification>
+getM43Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM43Unsafe self = liftDOM ((((self ^. js "m43") >>= 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 (((self ^. js "m43") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m44 DOMMatrixInit.m44 specification>
+setM44 :: (MonadDOM m) => DOMMatrixInit -> Double -> m ()
+setM44 self val = liftDOM (void (self ^. jss "m44" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m44 DOMMatrixInit.m44 specification>
+getM44 :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Double)
+getM44 self = liftDOM (((self ^. js "m44") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-m44 DOMMatrixInit.m44 specification>
+getM44Unsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Double
+getM44Unsafe self = liftDOM ((((self ^. js "m44") >>= 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 (((self ^. js "m44") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-is2d DOMMatrixInit.is2D specification>
+setIs2D :: (MonadDOM m) => DOMMatrixInit -> Bool -> m ()
+setIs2D self val = liftDOM (void (self ^. jss "is2D" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-is2d DOMMatrixInit.is2D specification>
+getIs2D :: (MonadDOM m) => DOMMatrixInit -> m (Maybe Bool)
+getIs2D self = liftDOM (((self ^. js "is2D") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dommatrixinit-is2d DOMMatrixInit.is2D specification>
+getIs2DUnsafe :: (MonadDOM m, HasCallStack) => DOMMatrixInit -> m Bool
+getIs2DUnsafe self = liftDOM ((((self ^. js "is2D") >>= 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 (((self ^. js "is2D") >>= valToBool))
diff --git a/src/JSDOM/Generated/DOMMatrixReadOnly.hs b/src/JSDOM/Generated/DOMMatrixReadOnly.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DOMMatrixReadOnly.hs
@@ -0,0 +1,276 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module JSDOM.Generated.DOMMatrixReadOnly
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types hiding (toFloat32Array, toFloat64Array)
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/DOMMatrixReadOnly MDN DOMMatrixReadOnly. documentation>
+newDOMMatrixReadOnly :: (MonadDOM m, IsStringOrSequenceDouble init) => Maybe init -> m DOMMatrixReadOnly
+newDOMMatrixReadOnly init = liftDOM (((new (jsg "DOMMatrixReadOnly") [P.maybe (P.return jsUndefined) toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/flipX MDN DOMMatrixReadOnly.flipX documentation>
+flipX :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m DOMMatrix
+flipX self = liftDOM ((((Types.toDOMMatrixReadOnly self) ^. jsf "flipX" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/flipX MDN DOMMatrixReadOnly.flipX documentation>
+flipX_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m ()
+flipX_ self = liftDOM (void ((Types.toDOMMatrixReadOnly self) ^. jsf "flipX" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/flipY MDN DOMMatrixReadOnly.flipY documentation>
+flipY :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m DOMMatrix
+flipY self = liftDOM ((((Types.toDOMMatrixReadOnly self) ^. jsf "flipY" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/flipY MDN DOMMatrixReadOnly.flipY documentation>
+flipY_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m ()
+flipY_ self = liftDOM (void ((Types.toDOMMatrixReadOnly self) ^. jsf "flipY" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/inverse MDN DOMMatrixReadOnly.inverse documentation>
+inverse :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m DOMMatrix
+inverse self = liftDOM ((((Types.toDOMMatrixReadOnly self) ^. jsf "inverse" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/inverse MDN DOMMatrixReadOnly.inverse documentation>
+inverse_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m ()
+inverse_ self = liftDOM (void ((Types.toDOMMatrixReadOnly self) ^. jsf "inverse" ()))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. jsf "multiply" [P.maybe (P.return jsUndefined) toJSVal other]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDOMMatrixReadOnly self) ^. jsf "multiply" [P.maybe (P.return jsUndefined) toJSVal other]))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. jsf "rotate" [P.maybe (P.return jsUndefined) toJSVal rotX, P.maybe (P.return jsUndefined) toJSVal rotY, P.maybe (P.return jsUndefined) toJSVal rotZ]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDOMMatrixReadOnly self) ^. jsf "rotate" [P.maybe (P.return jsUndefined) toJSVal rotX, P.maybe (P.return jsUndefined) toJSVal rotY, P.maybe (P.return jsUndefined) toJSVal rotZ]))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. jsf "rotateAxisAngle" [P.maybe (P.return jsUndefined) toJSVal x, P.maybe (P.return jsUndefined) toJSVal y, P.maybe (P.return jsUndefined) toJSVal z, P.maybe (P.return jsUndefined) toJSVal angle]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDOMMatrixReadOnly self) ^. jsf "rotateAxisAngle" [P.maybe (P.return jsUndefined) toJSVal x, P.maybe (P.return jsUndefined) toJSVal y, P.maybe (P.return jsUndefined) toJSVal z, P.maybe (P.return jsUndefined) toJSVal angle]))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. jsf "rotateFromVector" [P.maybe (P.return jsUndefined) toJSVal x, P.maybe (P.return jsUndefined) toJSVal y]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDOMMatrixReadOnly self) ^. jsf "rotateFromVector" [P.maybe (P.return jsUndefined) toJSVal x, P.maybe (P.return jsUndefined) toJSVal y]))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. jsf "scale" [P.maybe (P.return jsUndefined) toJSVal scaleX, P.maybe (P.return jsUndefined) toJSVal scaleY, P.maybe (P.return jsUndefined) toJSVal scaleZ, P.maybe (P.return jsUndefined) toJSVal originX, P.maybe (P.return jsUndefined) toJSVal originY, P.maybe (P.return jsUndefined) toJSVal originZ]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDOMMatrixReadOnly self) ^. jsf "scale" [P.maybe (P.return jsUndefined) toJSVal scaleX, P.maybe (P.return jsUndefined) toJSVal scaleY, P.maybe (P.return jsUndefined) toJSVal scaleZ, P.maybe (P.return jsUndefined) toJSVal originX, P.maybe (P.return jsUndefined) toJSVal originY, P.maybe (P.return jsUndefined) toJSVal originZ]))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. jsf "scale3d" [P.maybe (P.return jsUndefined) toJSVal scale, P.maybe (P.return jsUndefined) toJSVal originX, P.maybe (P.return jsUndefined) toJSVal originY, P.maybe (P.return jsUndefined) toJSVal originZ]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDOMMatrixReadOnly self) ^. jsf "scale3d" [P.maybe (P.return jsUndefined) toJSVal scale, P.maybe (P.return jsUndefined) toJSVal originX, P.maybe (P.return jsUndefined) toJSVal originY, P.maybe (P.return jsUndefined) toJSVal originZ]))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. jsf "scaleNonUniform" [P.maybe (P.return jsUndefined) toJSVal scaleX, P.maybe (P.return jsUndefined) toJSVal scaleY]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDOMMatrixReadOnly self) ^. jsf "scaleNonUniform" [P.maybe (P.return jsUndefined) toJSVal scaleX, P.maybe (P.return jsUndefined) toJSVal scaleY]))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. jsf "skewX" [P.maybe (P.return jsUndefined) toJSVal sx]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDOMMatrixReadOnly self) ^. jsf "skewX" [P.maybe (P.return jsUndefined) toJSVal sx]))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. jsf "skewY" [P.maybe (P.return jsUndefined) toJSVal sy]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDOMMatrixReadOnly self) ^. jsf "skewY" [P.maybe (P.return jsUndefined) toJSVal sy]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/toFloat32Array MDN DOMMatrixReadOnly.toFloat32Array documentation>
+toFloat32Array :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Float32Array
+toFloat32Array self = liftDOM ((((Types.toDOMMatrixReadOnly self) ^. jsf "toFloat32Array" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/toFloat32Array MDN DOMMatrixReadOnly.toFloat32Array documentation>
+toFloat32Array_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m ()
+toFloat32Array_ self = liftDOM (void ((Types.toDOMMatrixReadOnly self) ^. jsf "toFloat32Array" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/toFloat64Array MDN DOMMatrixReadOnly.toFloat64Array documentation>
+toFloat64Array :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Float64Array
+toFloat64Array self = liftDOM ((((Types.toDOMMatrixReadOnly self) ^. jsf "toFloat64Array" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/toFloat64Array MDN DOMMatrixReadOnly.toFloat64Array documentation>
+toFloat64Array_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m ()
+toFloat64Array_ self = liftDOM (void ((Types.toDOMMatrixReadOnly self) ^. jsf "toFloat64Array" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/toJSON MDN DOMMatrixReadOnly.toJSON documentation>
+toJSON :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m GObject
+toJSON self = liftDOM ((((Types.toDOMMatrixReadOnly self) ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/toJSON MDN DOMMatrixReadOnly.toJSON documentation>
+toJSON_ :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m ()
+toJSON_ self = liftDOM (void ((Types.toDOMMatrixReadOnly self) ^. jsf "toJSON" ()))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. jsf "transformPoint" [P.maybe (P.return jsUndefined) toJSVal point]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDOMMatrixReadOnly self) ^. jsf "transformPoint" [P.maybe (P.return jsUndefined) toJSVal point]))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. jsf "translate" [P.maybe (P.return jsUndefined) toJSVal tx, P.maybe (P.return jsUndefined) toJSVal ty, P.maybe (P.return jsUndefined) toJSVal tz]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDOMMatrixReadOnly self) ^. jsf "translate" [P.maybe (P.return jsUndefined) toJSVal tx, P.maybe (P.return jsUndefined) toJSVal ty, P.maybe (P.return jsUndefined) toJSVal tz]))
+
+-- | <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 ((((jsg "DOMMatrixReadOnly") ^. jsf "fromFloat32Array" [toJSVal array32]) >>= fromJSValUnchecked))
+
+-- | <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 ((jsg "DOMMatrixReadOnly") ^. jsf "fromFloat32Array" [toJSVal array32]))
+
+-- | <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 ((((jsg "DOMMatrixReadOnly") ^. jsf "fromFloat64Array" [toJSVal array64]) >>= fromJSValUnchecked))
+
+-- | <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 ((jsg "DOMMatrixReadOnly") ^. jsf "fromFloat64Array" [toJSVal array64]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/fromMatrix_static MDN DOMMatrixReadOnly.fromMatrix documentation>
+fromMatrix :: (MonadDOM m) => Maybe DOMMatrixInit -> m DOMMatrixReadOnly
+fromMatrix other = liftDOM ((((jsg "DOMMatrixReadOnly") ^. jsf "fromMatrix" [P.maybe (P.return jsUndefined) toJSVal other]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/fromMatrix_static MDN DOMMatrixReadOnly.fromMatrix documentation>
+fromMatrix_ :: (MonadDOM m) => Maybe DOMMatrixInit -> m ()
+fromMatrix_ other = liftDOM (void ((jsg "DOMMatrixReadOnly") ^. jsf "fromMatrix" [P.maybe (P.return jsUndefined) toJSVal other]))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "a") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "b") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "c") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "d") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "e") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "f") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "m11") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "m12") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "m13") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "m14") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "m21") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "m22") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "m23") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "m24") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "m31") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "m32") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "m33") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "m34") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "m41") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "m42") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "m43") >>= valToNumber))
+
+-- | <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 ((((Types.toDOMMatrixReadOnly self) ^. js "m44") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/is2D MDN DOMMatrixReadOnly.is2D documentation>
+getIs2D :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Bool
+getIs2D self = liftDOM ((((Types.toDOMMatrixReadOnly self) ^. js "is2D") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/isIdentity MDN DOMMatrixReadOnly.isIdentity documentation>
+getIsIdentity :: (MonadDOM m, IsDOMMatrixReadOnly self) => self -> m Bool
+getIsIdentity self = liftDOM ((((Types.toDOMMatrixReadOnly self) ^. js "isIdentity") >>= valToBool))
diff --git a/src/JSDOM/Generated/DOMNamedFlowCollection.hs b/src/JSDOM/Generated/DOMNamedFlowCollection.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/DOMNamedFlowCollection.hs
+++ /dev/null
@@ -1,83 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.DOMNamedFlowCollection
-       (item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_,
-        namedItemUnsafe, namedItemUnchecked, getLength,
-        DOMNamedFlowCollection(..), gTypeDOMNamedFlowCollection)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.item Mozilla WebKitNamedFlowCollection.item documentation> 
-item ::
-     (MonadDOM m) =>
-       DOMNamedFlowCollection -> Word -> m (Maybe WebKitNamedFlow)
-item self index
-  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.item Mozilla WebKitNamedFlowCollection.item documentation> 
-item_ :: (MonadDOM m) => DOMNamedFlowCollection -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.item Mozilla WebKitNamedFlowCollection.item documentation> 
-itemUnsafe ::
-           (MonadDOM m, HasCallStack) =>
-             DOMNamedFlowCollection -> Word -> m WebKitNamedFlow
-itemUnsafe self index
-  = liftDOM
-      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.item Mozilla WebKitNamedFlowCollection.item documentation> 
-itemUnchecked ::
-              (MonadDOM m) => DOMNamedFlowCollection -> Word -> m WebKitNamedFlow
-itemUnchecked self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.namedItem Mozilla WebKitNamedFlowCollection.namedItem documentation> 
-namedItem ::
-          (MonadDOM m, ToJSString name) =>
-            DOMNamedFlowCollection -> name -> m (Maybe WebKitNamedFlow)
-namedItem self name = liftDOM ((self ! name) >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.namedItem Mozilla WebKitNamedFlowCollection.namedItem documentation> 
-namedItem_ ::
-           (MonadDOM m, ToJSString name) =>
-             DOMNamedFlowCollection -> name -> m ()
-namedItem_ self name = liftDOM (void (self ! name))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.namedItem Mozilla WebKitNamedFlowCollection.namedItem documentation> 
-namedItemUnsafe ::
-                (MonadDOM m, ToJSString name, HasCallStack) =>
-                  DOMNamedFlowCollection -> name -> m WebKitNamedFlow
-namedItemUnsafe self name
-  = liftDOM
-      (((self ! name) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.namedItem Mozilla WebKitNamedFlowCollection.namedItem documentation> 
-namedItemUnchecked ::
-                   (MonadDOM m, ToJSString name) =>
-                     DOMNamedFlowCollection -> name -> m WebKitNamedFlow
-namedItemUnchecked self name
-  = liftDOM ((self ! name) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.length Mozilla WebKitNamedFlowCollection.length documentation> 
-getLength :: (MonadDOM m) => DOMNamedFlowCollection -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DOMParser.hs b/src/JSDOM/Generated/DOMParser.hs
--- a/src/JSDOM/Generated/DOMParser.hs
+++ b/src/JSDOM/Generated/DOMParser.hs
@@ -1,45 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.DOMParser
-       (newDOMParser, parseFromString, parseFromString_, DOMParser(..),
-        gTypeDOMParser)
+       (newDOMParser, parseFromString, parseFromString_, DOMParser(..), gTypeDOMParser)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser Mozilla DOMParser documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMParser/DOMParser MDN DOMParser. documentation>
 newDOMParser :: (MonadDOM m) => m DOMParser
-newDOMParser = liftDOM (DOMParser <$> new (jsg "DOMParser") ())
+newDOMParser = liftDOM (((new (jsg "DOMParser") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser.parseFromString Mozilla DOMParser.parseFromString documentation> 
-parseFromString ::
-                (MonadDOM m, ToJSString string, ToJSString contentType) =>
-                  DOMParser -> string -> contentType -> m Document
-parseFromString self string contentType
-  = liftDOM
-      ((self ^. jsf "parseFromString"
-          [toJSVal string, toJSVal contentType])
-         >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "parseFromString" [toJSVal string, toJSVal type']) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser.parseFromString Mozilla DOMParser.parseFromString documentation> 
-parseFromString_ ::
-                 (MonadDOM m, ToJSString string, ToJSString contentType) =>
-                   DOMParser -> string -> contentType -> m ()
-parseFromString_ self string contentType
-  = liftDOM
-      (void
-         (self ^. jsf "parseFromString"
-            [toJSVal string, toJSVal 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 (self ^. jsf "parseFromString" [toJSVal string, toJSVal type']))
diff --git a/src/JSDOM/Generated/DOMPoint.hs b/src/JSDOM/Generated/DOMPoint.hs
--- a/src/JSDOM/Generated/DOMPoint.hs
+++ b/src/JSDOM/Generated/DOMPoint.hs
@@ -1,81 +1,64 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
 module JSDOM.Generated.DOMPoint
-       (newDOMPoint, newDOMPoint', fromPoint, fromPoint_, setX, getX,
-        setY, getY, setZ, getZ, setW, getW, DOMPoint(..), gTypeDOMPoint)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint Mozilla DOMPoint documentation> 
-newDOMPoint :: (MonadDOM m) => DOMPointInit -> m DOMPoint
-newDOMPoint point
-  = liftDOM (DOMPoint <$> new (jsg "DOMPoint") [toJSVal point])
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/DOMPoint MDN DOMPoint. documentation>
+newDOMPoint :: (MonadDOM m) => Maybe Double -> m DOMPoint
+newDOMPoint x = liftDOM (((new (jsg "DOMPoint") [P.maybe (P.return jsUndefined) toJSVal x]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint Mozilla DOMPoint documentation> 
-newDOMPoint' ::
-             (MonadDOM m) =>
-               Maybe Double ->
-                 Maybe Double -> Maybe Double -> Maybe Double -> m DOMPoint
-newDOMPoint' x y z w
-  = liftDOM
-      (DOMPoint <$>
-         new (jsg "DOMPoint") [toJSVal x, toJSVal y, toJSVal z, toJSVal w])
+-- | <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 (((new (jsg "DOMPoint") [P.maybe (P.return jsUndefined) toJSVal x, P.maybe (P.return jsUndefined) toJSVal y, P.maybe (P.return jsUndefined) toJSVal z, P.maybe (P.return jsUndefined) toJSVal w]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.fromPoint Mozilla DOMPoint.fromPoint documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/fromPoint_static MDN DOMPoint.fromPoint documentation>
 fromPoint :: (MonadDOM m) => Maybe DOMPointInit -> m DOMPoint
-fromPoint other
-  = liftDOM
-      (((jsg "DOMPoint") ^. jsf "fromPoint" [toJSVal other]) >>=
-         fromJSValUnchecked)
+fromPoint other = liftDOM ((((jsg "DOMPoint") ^. jsf "fromPoint" [P.maybe (P.return jsUndefined) toJSVal other]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.fromPoint Mozilla DOMPoint.fromPoint documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/fromPoint_static MDN DOMPoint.fromPoint documentation>
 fromPoint_ :: (MonadDOM m) => Maybe DOMPointInit -> m ()
-fromPoint_ other
-  = liftDOM
-      (void ((jsg "DOMPoint") ^. jsf "fromPoint" [toJSVal other]))
+fromPoint_ other = liftDOM (void ((jsg "DOMPoint") ^. jsf "fromPoint" [P.maybe (P.return jsUndefined) toJSVal other]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.x Mozilla DOMPoint.x documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/x MDN DOMPoint.x documentation>
 setX :: (MonadDOM m) => DOMPoint -> Double -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+setX self val = liftDOM (void (self ^. jss "x" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.x Mozilla DOMPoint.x documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/x MDN DOMPoint.x documentation>
 getX :: (MonadDOM m) => DOMPoint -> m Double
-getX self = liftDOM ((self ^. js "x") >>= valToNumber)
+getX self = liftDOM (((self ^. js "x") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.y Mozilla DOMPoint.y documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/y MDN DOMPoint.y documentation>
 setY :: (MonadDOM m) => DOMPoint -> Double -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+setY self val = liftDOM (void (self ^. jss "y" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.y Mozilla DOMPoint.y documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/y MDN DOMPoint.y documentation>
 getY :: (MonadDOM m) => DOMPoint -> m Double
-getY self = liftDOM ((self ^. js "y") >>= valToNumber)
+getY self = liftDOM (((self ^. js "y") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.z Mozilla DOMPoint.z documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/z MDN DOMPoint.z documentation>
 setZ :: (MonadDOM m) => DOMPoint -> Double -> m ()
-setZ self val = liftDOM (self ^. jss "z" (toJSVal val))
+setZ self val = liftDOM (void (self ^. jss "z" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.z Mozilla DOMPoint.z documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/z MDN DOMPoint.z documentation>
 getZ :: (MonadDOM m) => DOMPoint -> m Double
-getZ self = liftDOM ((self ^. js "z") >>= valToNumber)
+getZ self = liftDOM (((self ^. js "z") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.w Mozilla DOMPoint.w documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/w MDN DOMPoint.w documentation>
 setW :: (MonadDOM m) => DOMPoint -> Double -> m ()
-setW self val = liftDOM (self ^. jss "w" (toJSVal val))
+setW self val = liftDOM (void (self ^. jss "w" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.w Mozilla DOMPoint.w documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPoint/w MDN DOMPoint.w documentation>
 getW :: (MonadDOM m) => DOMPoint -> m Double
-getW self = liftDOM ((self ^. js "w") >>= valToNumber)
+getW self = liftDOM (((self ^. js "w") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DOMPointInit.hs b/src/JSDOM/Generated/DOMPointInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DOMPointInit.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module JSDOM.Generated.DOMPointInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/geometry-1/#dictdef-dompointinit DOMPointInit specification>
+newDOMPointInit :: (MonadDOM m) => m DOMPointInit
+newDOMPointInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-x DOMPointInit.x specification>
+setX :: (MonadDOM m) => DOMPointInit -> Double -> m ()
+setX self val = liftDOM (void (self ^. jss "x" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-x DOMPointInit.x specification>
+getX :: (MonadDOM m) => DOMPointInit -> m (Maybe Double)
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-x DOMPointInit.x specification>
+getXUnsafe :: (MonadDOM m, HasCallStack) => DOMPointInit -> m Double
+getXUnsafe self = liftDOM ((((self ^. js "x") >>= 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 (((self ^. js "x") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-y DOMPointInit.y specification>
+setY :: (MonadDOM m) => DOMPointInit -> Double -> m ()
+setY self val = liftDOM (void (self ^. jss "y" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-y DOMPointInit.y specification>
+getY :: (MonadDOM m) => DOMPointInit -> m (Maybe Double)
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-y DOMPointInit.y specification>
+getYUnsafe :: (MonadDOM m, HasCallStack) => DOMPointInit -> m Double
+getYUnsafe self = liftDOM ((((self ^. js "y") >>= 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 (((self ^. js "y") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-z DOMPointInit.z specification>
+setZ :: (MonadDOM m) => DOMPointInit -> Double -> m ()
+setZ self val = liftDOM (void (self ^. jss "z" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-z DOMPointInit.z specification>
+getZ :: (MonadDOM m) => DOMPointInit -> m (Maybe Double)
+getZ self = liftDOM (((self ^. js "z") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-z DOMPointInit.z specification>
+getZUnsafe :: (MonadDOM m, HasCallStack) => DOMPointInit -> m Double
+getZUnsafe self = liftDOM ((((self ^. js "z") >>= 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 (((self ^. js "z") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-w DOMPointInit.w specification>
+setW :: (MonadDOM m) => DOMPointInit -> Double -> m ()
+setW self val = liftDOM (void (self ^. jss "w" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-w DOMPointInit.w specification>
+getW :: (MonadDOM m) => DOMPointInit -> m (Maybe Double)
+getW self = liftDOM (((self ^. js "w") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-dompointinit-w DOMPointInit.w specification>
+getWUnsafe :: (MonadDOM m, HasCallStack) => DOMPointInit -> m Double
+getWUnsafe self = liftDOM ((((self ^. js "w") >>= 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 (((self ^. js "w") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DOMPointReadOnly.hs b/src/JSDOM/Generated/DOMPointReadOnly.hs
--- a/src/JSDOM/Generated/DOMPointReadOnly.hs
+++ b/src/JSDOM/Generated/DOMPointReadOnly.hs
@@ -1,75 +1,64 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
 module JSDOM.Generated.DOMPointReadOnly
-       (newDOMPointReadOnly, newDOMPointReadOnly', fromPoint, fromPoint_,
-        getX, getY, getZ, getW, DOMPointReadOnly(..),
-        gTypeDOMPointReadOnly, IsDOMPointReadOnly, toDOMPointReadOnly)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly Mozilla DOMPointReadOnly documentation> 
-newDOMPointReadOnly ::
-                    (MonadDOM m) => DOMPointInit -> m DOMPointReadOnly
-newDOMPointReadOnly point
-  = liftDOM
-      (DOMPointReadOnly <$> new (jsg "DOMPointReadOnly") [toJSVal point])
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/DOMPointReadOnly MDN DOMPointReadOnly. documentation>
+newDOMPointReadOnly :: (MonadDOM m) => Maybe Double -> m DOMPointReadOnly
+newDOMPointReadOnly x = liftDOM (((new (jsg "DOMPointReadOnly") [P.maybe (P.return jsUndefined) toJSVal x]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly Mozilla DOMPointReadOnly documentation> 
-newDOMPointReadOnly' ::
-                     (MonadDOM m) =>
-                       Maybe Double ->
-                         Maybe Double -> Maybe Double -> Maybe Double -> m DOMPointReadOnly
-newDOMPointReadOnly' x y z w
-  = liftDOM
-      (DOMPointReadOnly <$>
-         new (jsg "DOMPointReadOnly")
-           [toJSVal x, toJSVal y, toJSVal z, toJSVal w])
+-- | <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 (((new (jsg "DOMPointReadOnly") [P.maybe (P.return jsUndefined) toJSVal x, P.maybe (P.return jsUndefined) toJSVal y, P.maybe (P.return jsUndefined) toJSVal z, P.maybe (P.return jsUndefined) toJSVal w]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.fromPoint Mozilla DOMPointReadOnly.fromPoint documentation> 
-fromPoint ::
-          (MonadDOM m) => Maybe DOMPointInit -> m DOMPointReadOnly
-fromPoint other
-  = liftDOM
-      (((jsg "DOMPointReadOnly") ^. jsf "fromPoint" [toJSVal other]) >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toDOMPointReadOnly self) ^. jsf "matrixTransform" [P.maybe (P.return jsUndefined) toJSVal matrix]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.fromPoint Mozilla DOMPointReadOnly.fromPoint documentation> 
+-- | <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 ((Types.toDOMPointReadOnly self) ^. jsf "matrixTransform" [P.maybe (P.return jsUndefined) toJSVal matrix]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/toJSON MDN DOMPointReadOnly.toJSON documentation>
+toJSON :: (MonadDOM m, IsDOMPointReadOnly self) => self -> m GObject
+toJSON self = liftDOM ((((Types.toDOMPointReadOnly self) ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/toJSON MDN DOMPointReadOnly.toJSON documentation>
+toJSON_ :: (MonadDOM m, IsDOMPointReadOnly self) => self -> m ()
+toJSON_ self = liftDOM (void ((Types.toDOMPointReadOnly self) ^. jsf "toJSON" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/fromPoint_static MDN DOMPointReadOnly.fromPoint documentation>
+fromPoint :: (MonadDOM m) => Maybe DOMPointInit -> m DOMPointReadOnly
+fromPoint other = liftDOM ((((jsg "DOMPointReadOnly") ^. jsf "fromPoint" [P.maybe (P.return jsUndefined) toJSVal other]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/fromPoint_static MDN DOMPointReadOnly.fromPoint documentation>
 fromPoint_ :: (MonadDOM m) => Maybe DOMPointInit -> m ()
-fromPoint_ other
-  = liftDOM
-      (void
-         ((jsg "DOMPointReadOnly") ^. jsf "fromPoint" [toJSVal other]))
+fromPoint_ other = liftDOM (void ((jsg "DOMPointReadOnly") ^. jsf "fromPoint" [P.maybe (P.return jsUndefined) toJSVal other]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.x Mozilla DOMPointReadOnly.x documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/x MDN DOMPointReadOnly.x documentation>
 getX :: (MonadDOM m, IsDOMPointReadOnly self) => self -> m Double
-getX self
-  = liftDOM (((toDOMPointReadOnly self) ^. js "x") >>= valToNumber)
+getX self = liftDOM ((((Types.toDOMPointReadOnly self) ^. js "x") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.y Mozilla DOMPointReadOnly.y documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/y MDN DOMPointReadOnly.y documentation>
 getY :: (MonadDOM m, IsDOMPointReadOnly self) => self -> m Double
-getY self
-  = liftDOM (((toDOMPointReadOnly self) ^. js "y") >>= valToNumber)
+getY self = liftDOM ((((Types.toDOMPointReadOnly self) ^. js "y") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.z Mozilla DOMPointReadOnly.z documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/z MDN DOMPointReadOnly.z documentation>
 getZ :: (MonadDOM m, IsDOMPointReadOnly self) => self -> m Double
-getZ self
-  = liftDOM (((toDOMPointReadOnly self) ^. js "z") >>= valToNumber)
+getZ self = liftDOM ((((Types.toDOMPointReadOnly self) ^. js "z") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.w Mozilla DOMPointReadOnly.w documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/w MDN DOMPointReadOnly.w documentation>
 getW :: (MonadDOM m, IsDOMPointReadOnly self) => self -> m Double
-getW self
-  = liftDOM (((toDOMPointReadOnly self) ^. js "w") >>= valToNumber)
+getW self = liftDOM ((((Types.toDOMPointReadOnly self) ^. js "w") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DOMQuad.hs b/src/JSDOM/Generated/DOMQuad.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DOMQuad.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module JSDOM.Generated.DOMQuad
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "DOMQuad") [P.maybe (P.return jsUndefined) toJSVal p1, P.maybe (P.return jsUndefined) toJSVal p2, P.maybe (P.return jsUndefined) toJSVal p3, P.maybe (P.return jsUndefined) toJSVal p4]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/getBounds MDN DOMQuad.getBounds documentation>
+getBounds :: (MonadDOM m) => DOMQuad -> m DOMRect
+getBounds self = liftDOM (((self ^. jsf "getBounds" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/getBounds MDN DOMQuad.getBounds documentation>
+getBounds_ :: (MonadDOM m) => DOMQuad -> m ()
+getBounds_ self = liftDOM (void (self ^. jsf "getBounds" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/toJSON MDN DOMQuad.toJSON documentation>
+toJSON :: (MonadDOM m) => DOMQuad -> m GObject
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/toJSON MDN DOMQuad.toJSON documentation>
+toJSON_ :: (MonadDOM m) => DOMQuad -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/fromQuad_static MDN DOMQuad.fromQuad documentation>
+fromQuad :: (MonadDOM m) => Maybe DOMQuadInit -> m DOMQuad
+fromQuad other = liftDOM ((((jsg "DOMQuad") ^. jsf "fromQuad" [P.maybe (P.return jsUndefined) toJSVal other]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/fromQuad_static MDN DOMQuad.fromQuad documentation>
+fromQuad_ :: (MonadDOM m) => Maybe DOMQuadInit -> m ()
+fromQuad_ other = liftDOM (void ((jsg "DOMQuad") ^. jsf "fromQuad" [P.maybe (P.return jsUndefined) toJSVal other]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/fromRect_static MDN DOMQuad.fromRect documentation>
+fromRect :: (MonadDOM m) => Maybe DOMRectInit -> m DOMQuad
+fromRect other = liftDOM ((((jsg "DOMQuad") ^. jsf "fromRect" [P.maybe (P.return jsUndefined) toJSVal other]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/fromRect_static MDN DOMQuad.fromRect documentation>
+fromRect_ :: (MonadDOM m) => Maybe DOMRectInit -> m ()
+fromRect_ other = liftDOM (void ((jsg "DOMQuad") ^. jsf "fromRect" [P.maybe (P.return jsUndefined) toJSVal other]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/p1 MDN DOMQuad.p1 documentation>
+getP1 :: (MonadDOM m) => DOMQuad -> m DOMPoint
+getP1 self = liftDOM (((self ^. js "p1") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/p2 MDN DOMQuad.p2 documentation>
+getP2 :: (MonadDOM m) => DOMQuad -> m DOMPoint
+getP2 self = liftDOM (((self ^. js "p2") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/p3 MDN DOMQuad.p3 documentation>
+getP3 :: (MonadDOM m) => DOMQuad -> m DOMPoint
+getP3 self = liftDOM (((self ^. js "p3") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMQuad/p4 MDN DOMQuad.p4 documentation>
+getP4 :: (MonadDOM m) => DOMQuad -> m DOMPoint
+getP4 self = liftDOM (((self ^. js "p4") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DOMQuadInit.hs b/src/JSDOM/Generated/DOMQuadInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DOMQuadInit.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module JSDOM.Generated.DOMQuadInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/geometry-1/#dictdef-domquadinit DOMQuadInit specification>
+newDOMQuadInit :: (MonadDOM m) => m DOMQuadInit
+newDOMQuadInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p1 DOMQuadInit.p1 specification>
+setP1 :: (MonadDOM m) => DOMQuadInit -> DOMPointInit -> m ()
+setP1 self val = liftDOM (void (self ^. jss "p1" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p1 DOMQuadInit.p1 specification>
+getP1 :: (MonadDOM m) => DOMQuadInit -> m (Maybe DOMPointInit)
+getP1 self = liftDOM (((self ^. js "p1") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p1 DOMQuadInit.p1 specification>
+getP1Unsafe :: (MonadDOM m, HasCallStack) => DOMQuadInit -> m DOMPointInit
+getP1Unsafe self = liftDOM ((((self ^. js "p1") >>= 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 (((self ^. js "p1") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p2 DOMQuadInit.p2 specification>
+setP2 :: (MonadDOM m) => DOMQuadInit -> DOMPointInit -> m ()
+setP2 self val = liftDOM (void (self ^. jss "p2" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p2 DOMQuadInit.p2 specification>
+getP2 :: (MonadDOM m) => DOMQuadInit -> m (Maybe DOMPointInit)
+getP2 self = liftDOM (((self ^. js "p2") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p2 DOMQuadInit.p2 specification>
+getP2Unsafe :: (MonadDOM m, HasCallStack) => DOMQuadInit -> m DOMPointInit
+getP2Unsafe self = liftDOM ((((self ^. js "p2") >>= 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 (((self ^. js "p2") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p3 DOMQuadInit.p3 specification>
+setP3 :: (MonadDOM m) => DOMQuadInit -> DOMPointInit -> m ()
+setP3 self val = liftDOM (void (self ^. jss "p3" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p3 DOMQuadInit.p3 specification>
+getP3 :: (MonadDOM m) => DOMQuadInit -> m (Maybe DOMPointInit)
+getP3 self = liftDOM (((self ^. js "p3") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p3 DOMQuadInit.p3 specification>
+getP3Unsafe :: (MonadDOM m, HasCallStack) => DOMQuadInit -> m DOMPointInit
+getP3Unsafe self = liftDOM ((((self ^. js "p3") >>= 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 (((self ^. js "p3") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p4 DOMQuadInit.p4 specification>
+setP4 :: (MonadDOM m) => DOMQuadInit -> DOMPointInit -> m ()
+setP4 self val = liftDOM (void (self ^. jss "p4" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p4 DOMQuadInit.p4 specification>
+getP4 :: (MonadDOM m) => DOMQuadInit -> m (Maybe DOMPointInit)
+getP4 self = liftDOM (((self ^. js "p4") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domquadinit-p4 DOMQuadInit.p4 specification>
+getP4Unsafe :: (MonadDOM m, HasCallStack) => DOMQuadInit -> m DOMPointInit
+getP4Unsafe self = liftDOM ((((self ^. js "p4") >>= 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 (((self ^. js "p4") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DOMRect.hs b/src/JSDOM/Generated/DOMRect.hs
--- a/src/JSDOM/Generated/DOMRect.hs
+++ b/src/JSDOM/Generated/DOMRect.hs
@@ -1,77 +1,60 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
 module JSDOM.Generated.DOMRect
-       (newDOMRect, fromRect, fromRect_, setX, getX, setY, getY, setWidth,
-        getWidth, setHeight, getHeight, DOMRect(..), gTypeDOMRect)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect Mozilla DOMRect documentation> 
-newDOMRect ::
-           (MonadDOM m) =>
-             Maybe Double ->
-               Maybe Double -> Maybe Double -> Maybe Double -> m DOMRect
-newDOMRect x y width height
-  = liftDOM
-      (DOMRect <$>
-         new (jsg "DOMRect")
-           [toJSVal x, toJSVal y, toJSVal width, toJSVal height])
+-- | <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 (((new (jsg "DOMRect") [P.maybe (P.return jsUndefined) toJSVal x, P.maybe (P.return jsUndefined) toJSVal y, P.maybe (P.return jsUndefined) toJSVal width, P.maybe (P.return jsUndefined) toJSVal height]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.fromRect Mozilla DOMRect.fromRect documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/fromRect_static MDN DOMRect.fromRect documentation>
 fromRect :: (MonadDOM m) => Maybe DOMRectInit -> m DOMRect
-fromRect other
-  = liftDOM
-      (((jsg "DOMRect") ^. jsf "fromRect" [toJSVal other]) >>=
-         fromJSValUnchecked)
+fromRect other = liftDOM ((((jsg "DOMRect") ^. jsf "fromRect" [P.maybe (P.return jsUndefined) toJSVal other]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.fromRect Mozilla DOMRect.fromRect documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/fromRect_static MDN DOMRect.fromRect documentation>
 fromRect_ :: (MonadDOM m) => Maybe DOMRectInit -> m ()
-fromRect_ other
-  = liftDOM
-      (void ((jsg "DOMRect") ^. jsf "fromRect" [toJSVal other]))
+fromRect_ other = liftDOM (void ((jsg "DOMRect") ^. jsf "fromRect" [P.maybe (P.return jsUndefined) toJSVal other]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.x Mozilla DOMRect.x documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/x MDN DOMRect.x documentation>
 setX :: (MonadDOM m) => DOMRect -> Double -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
+setX self val = liftDOM (void (self ^. jss "x" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.x Mozilla DOMRect.x documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/x MDN DOMRect.x documentation>
 getX :: (MonadDOM m) => DOMRect -> m Double
-getX self = liftDOM ((self ^. js "x") >>= valToNumber)
+getX self = liftDOM (((self ^. js "x") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.y Mozilla DOMRect.y documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/y MDN DOMRect.y documentation>
 setY :: (MonadDOM m) => DOMRect -> Double -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
+setY self val = liftDOM (void (self ^. jss "y" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.y Mozilla DOMRect.y documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/y MDN DOMRect.y documentation>
 getY :: (MonadDOM m) => DOMRect -> m Double
-getY self = liftDOM ((self ^. js "y") >>= valToNumber)
+getY self = liftDOM (((self ^. js "y") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.width Mozilla DOMRect.width documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/width MDN DOMRect.width documentation>
 setWidth :: (MonadDOM m) => DOMRect -> Double -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.width Mozilla DOMRect.width documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/width MDN DOMRect.width documentation>
 getWidth :: (MonadDOM m) => DOMRect -> m Double
-getWidth self = liftDOM ((self ^. js "width") >>= valToNumber)
+getWidth self = liftDOM (((self ^. js "width") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.height Mozilla DOMRect.height documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/height MDN DOMRect.height documentation>
 setHeight :: (MonadDOM m) => DOMRect -> Double -> m ()
-setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+setHeight self val = liftDOM (void (self ^. jss "height" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.height Mozilla DOMRect.height documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRect/height MDN DOMRect.height documentation>
 getHeight :: (MonadDOM m) => DOMRect -> m Double
-getHeight self = liftDOM ((self ^. js "height") >>= valToNumber)
+getHeight self = liftDOM (((self ^. js "height") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DOMRectInit.hs b/src/JSDOM/Generated/DOMRectInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DOMRectInit.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module JSDOM.Generated.DOMRectInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/geometry-1/#dictdef-domrectinit DOMRectInit specification>
+newDOMRectInit :: (MonadDOM m) => m DOMRectInit
+newDOMRectInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-x DOMRectInit.x specification>
+setX :: (MonadDOM m) => DOMRectInit -> Double -> m ()
+setX self val = liftDOM (void (self ^. jss "x" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-x DOMRectInit.x specification>
+getX :: (MonadDOM m) => DOMRectInit -> m (Maybe Double)
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-x DOMRectInit.x specification>
+getXUnsafe :: (MonadDOM m, HasCallStack) => DOMRectInit -> m Double
+getXUnsafe self = liftDOM ((((self ^. js "x") >>= 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 (((self ^. js "x") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-y DOMRectInit.y specification>
+setY :: (MonadDOM m) => DOMRectInit -> Double -> m ()
+setY self val = liftDOM (void (self ^. jss "y" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-y DOMRectInit.y specification>
+getY :: (MonadDOM m) => DOMRectInit -> m (Maybe Double)
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-y DOMRectInit.y specification>
+getYUnsafe :: (MonadDOM m, HasCallStack) => DOMRectInit -> m Double
+getYUnsafe self = liftDOM ((((self ^. js "y") >>= 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 (((self ^. js "y") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-width DOMRectInit.width specification>
+setWidth :: (MonadDOM m) => DOMRectInit -> Double -> m ()
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-width DOMRectInit.width specification>
+getWidth :: (MonadDOM m) => DOMRectInit -> m (Maybe Double)
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-width DOMRectInit.width specification>
+getWidthUnsafe :: (MonadDOM m, HasCallStack) => DOMRectInit -> m Double
+getWidthUnsafe self = liftDOM ((((self ^. js "width") >>= 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 (((self ^. js "width") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-height DOMRectInit.height specification>
+setHeight :: (MonadDOM m) => DOMRectInit -> Double -> m ()
+setHeight self val = liftDOM (void (self ^. jss "height" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-height DOMRectInit.height specification>
+getHeight :: (MonadDOM m) => DOMRectInit -> m (Maybe Double)
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/geometry-1/#dom-domrectinit-height DOMRectInit.height specification>
+getHeightUnsafe :: (MonadDOM m, HasCallStack) => DOMRectInit -> m Double
+getHeightUnsafe self = liftDOM ((((self ^. js "height") >>= 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 (((self ^. js "height") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DOMRectList.hs b/src/JSDOM/Generated/DOMRectList.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DOMRectList.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
+module JSDOM.Generated.DOMRectList
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "item" [toJSVal 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 (self ^. jsf "item" [toJSVal 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 ((((self ^. jsf "item" [toJSVal 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 (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectList/length MDN DOMRectList.length documentation>
+getLength :: (MonadDOM m) => DOMRectList -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/DOMRectReadOnly.hs b/src/JSDOM/Generated/DOMRectReadOnly.hs
--- a/src/JSDOM/Generated/DOMRectReadOnly.hs
+++ b/src/JSDOM/Generated/DOMRectReadOnly.hs
@@ -1,95 +1,68 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geometry-1 (webref). Do not edit.
 module JSDOM.Generated.DOMRectReadOnly
-       (newDOMRectReadOnly, fromRect, fromRect_, getX, getY, getWidth,
-        getHeight, getTop, getRight, getBottom, getLeft,
-        DOMRectReadOnly(..), gTypeDOMRectReadOnly, IsDOMRectReadOnly,
-        toDOMRectReadOnly)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly Mozilla DOMRectReadOnly documentation> 
-newDOMRectReadOnly ::
-                   (MonadDOM m) =>
-                     Maybe Double ->
-                       Maybe Double -> Maybe Double -> Maybe Double -> m DOMRectReadOnly
-newDOMRectReadOnly x y width height
-  = liftDOM
-      (DOMRectReadOnly <$>
-         new (jsg "DOMRectReadOnly")
-           [toJSVal x, toJSVal y, toJSVal width, toJSVal height])
+-- | <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 (((new (jsg "DOMRectReadOnly") [P.maybe (P.return jsUndefined) toJSVal x, P.maybe (P.return jsUndefined) toJSVal y, P.maybe (P.return jsUndefined) toJSVal width, P.maybe (P.return jsUndefined) toJSVal height]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.fromRect Mozilla DOMRectReadOnly.fromRect documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/toJSON MDN DOMRectReadOnly.toJSON documentation>
+toJSON :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m GObject
+toJSON self = liftDOM ((((Types.toDOMRectReadOnly self) ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/toJSON MDN DOMRectReadOnly.toJSON documentation>
+toJSON_ :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m ()
+toJSON_ self = liftDOM (void ((Types.toDOMRectReadOnly self) ^. jsf "toJSON" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/fromRect_static MDN DOMRectReadOnly.fromRect documentation>
 fromRect :: (MonadDOM m) => Maybe DOMRectInit -> m DOMRectReadOnly
-fromRect other
-  = liftDOM
-      (((jsg "DOMRectReadOnly") ^. jsf "fromRect" [toJSVal other]) >>=
-         fromJSValUnchecked)
+fromRect other = liftDOM ((((jsg "DOMRectReadOnly") ^. jsf "fromRect" [P.maybe (P.return jsUndefined) toJSVal other]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.fromRect Mozilla DOMRectReadOnly.fromRect documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/fromRect_static MDN DOMRectReadOnly.fromRect documentation>
 fromRect_ :: (MonadDOM m) => Maybe DOMRectInit -> m ()
-fromRect_ other
-  = liftDOM
-      (void ((jsg "DOMRectReadOnly") ^. jsf "fromRect" [toJSVal other]))
+fromRect_ other = liftDOM (void ((jsg "DOMRectReadOnly") ^. jsf "fromRect" [P.maybe (P.return jsUndefined) toJSVal other]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.x Mozilla DOMRectReadOnly.x documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/x MDN DOMRectReadOnly.x documentation>
 getX :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
-getX self
-  = liftDOM (((toDOMRectReadOnly self) ^. js "x") >>= valToNumber)
+getX self = liftDOM ((((Types.toDOMRectReadOnly self) ^. js "x") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.y Mozilla DOMRectReadOnly.y documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/y MDN DOMRectReadOnly.y documentation>
 getY :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
-getY self
-  = liftDOM (((toDOMRectReadOnly self) ^. js "y") >>= valToNumber)
+getY self = liftDOM ((((Types.toDOMRectReadOnly self) ^. js "y") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.width Mozilla DOMRectReadOnly.width documentation> 
-getWidth ::
-         (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
-getWidth self
-  = liftDOM
-      (((toDOMRectReadOnly self) ^. js "width") >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/width MDN DOMRectReadOnly.width documentation>
+getWidth :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
+getWidth self = liftDOM ((((Types.toDOMRectReadOnly self) ^. js "width") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.height Mozilla DOMRectReadOnly.height documentation> 
-getHeight ::
-          (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
-getHeight self
-  = liftDOM
-      (((toDOMRectReadOnly self) ^. js "height") >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/height MDN DOMRectReadOnly.height documentation>
+getHeight :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
+getHeight self = liftDOM ((((Types.toDOMRectReadOnly self) ^. js "height") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.top Mozilla DOMRectReadOnly.top documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/top MDN DOMRectReadOnly.top documentation>
 getTop :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
-getTop self
-  = liftDOM (((toDOMRectReadOnly self) ^. js "top") >>= valToNumber)
+getTop self = liftDOM ((((Types.toDOMRectReadOnly self) ^. js "top") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.right Mozilla DOMRectReadOnly.right documentation> 
-getRight ::
-         (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
-getRight self
-  = liftDOM
-      (((toDOMRectReadOnly self) ^. js "right") >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/right MDN DOMRectReadOnly.right documentation>
+getRight :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
+getRight self = liftDOM ((((Types.toDOMRectReadOnly self) ^. js "right") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.bottom Mozilla DOMRectReadOnly.bottom documentation> 
-getBottom ::
-          (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
-getBottom self
-  = liftDOM
-      (((toDOMRectReadOnly self) ^. js "bottom") >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/bottom MDN DOMRectReadOnly.bottom documentation>
+getBottom :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
+getBottom self = liftDOM ((((Types.toDOMRectReadOnly self) ^. js "bottom") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.left Mozilla DOMRectReadOnly.left documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/left MDN DOMRectReadOnly.left documentation>
 getLeft :: (MonadDOM m, IsDOMRectReadOnly self) => self -> m Double
-getLeft self
-  = liftDOM (((toDOMRectReadOnly self) ^. js "left") >>= valToNumber)
+getLeft self = liftDOM ((((Types.toDOMRectReadOnly self) ^. js "left") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DOMStringList.hs b/src/JSDOM/Generated/DOMStringList.hs
--- a/src/JSDOM/Generated/DOMStringList.hs
+++ b/src/JSDOM/Generated/DOMStringList.hs
@@ -1,69 +1,44 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.DOMStringList
-       (item, item_, itemUnsafe, itemUnchecked, contains, contains_,
-        getLength, DOMStringList(..), gTypeDOMStringList)
+       (contains, contains_, item, item_, itemUnsafe, itemUnchecked, getLength, DOMStringList(..), gTypeDOMStringList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
-item ::
-     (MonadDOM m, FromJSString result) =>
-       DOMStringList -> Word -> m (Maybe result)
-item self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString)
+-- | <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 (((self ^. jsf "contains" [toJSVal string]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
-item_ :: (MonadDOM m) => DOMStringList -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal 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 (self ^. jsf "contains" [toJSVal string]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
-itemUnsafe ::
-           (MonadDOM m, HasCallStack, FromJSString result) =>
-             DOMStringList -> Word -> m result
-itemUnsafe self index
-  = liftDOM
-      (((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
-itemUnchecked ::
-              (MonadDOM m, FromJSString result) =>
-                DOMStringList -> Word -> m result
-itemUnchecked self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DOMStringList/item MDN DOMStringList.item documentation>
+item_ :: (MonadDOM m) => DOMStringList -> Word -> m ()
+item_ self index = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.contains Mozilla DOMStringList.contains documentation> 
-contains ::
-         (MonadDOM m, ToJSString string) =>
-           DOMStringList -> string -> m Bool
-contains self string
-  = liftDOM ((self ^. jsf "contains" [toJSVal string]) >>= valToBool)
+-- | <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 ((((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString) >>= 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_ ::
-          (MonadDOM m, ToJSString string) => DOMStringList -> string -> m ()
-contains_ self string
-  = liftDOM (void (self ^. jsf "contains" [toJSVal string]))
+-- | <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 (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.length Mozilla DOMStringList.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DOMStringList/length MDN DOMStringList.length documentation>
 getLength :: (MonadDOM m) => DOMStringList -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/DOMStringMap.hs b/src/JSDOM/Generated/DOMStringMap.hs
--- a/src/JSDOM/Generated/DOMStringMap.hs
+++ b/src/JSDOM/Generated/DOMStringMap.hs
@@ -1,30 +1,17 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.DOMStringMap
-       (get, get_, DOMStringMap(..), gTypeDOMStringMap) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (DOMStringMap(..), gTypeDOMStringMap)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringMap.get Mozilla DOMStringMap.get documentation> 
-get ::
-    (MonadDOM m, ToJSString name, FromJSString result) =>
-      DOMStringMap -> name -> m result
-get self name = liftDOM ((self ! name) >>= fromJSValUnchecked)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringMap.get Mozilla DOMStringMap.get documentation> 
-get_ ::
-     (MonadDOM m, ToJSString name) => DOMStringMap -> name -> m ()
-get_ self name = liftDOM (void (self ! name))
diff --git a/src/JSDOM/Generated/DOMTokenList.hs b/src/JSDOM/Generated/DOMTokenList.hs
--- a/src/JSDOM/Generated/DOMTokenList.hs
+++ b/src/JSDOM/Generated/DOMTokenList.hs
@@ -1,129 +1,84 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.DOMTokenList
-       (item, item_, itemUnsafe, itemUnchecked, contains, contains_, add,
-        remove, toggle, toggle_, replace, supports, supports_, getLength,
-        setValue, getValue, DOMTokenList(..), gTypeDOMTokenList)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
-item ::
-     (MonadDOM m, FromJSString result) =>
-       DOMTokenList -> Word -> m (Maybe result)
-item self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString)
+-- | <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 (self ^. jsf "add" ([] ++ P.map toJSVal tokens)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
-item_ :: (MonadDOM m) => DOMTokenList -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+-- | <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 (((self ^. jsf "contains" [toJSVal token]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
-itemUnsafe ::
-           (MonadDOM m, HasCallStack, FromJSString result) =>
-             DOMTokenList -> Word -> m result
-itemUnsafe self index
-  = liftDOM
-      (((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString) >>=
-         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 (self ^. jsf "contains" [toJSVal token]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
-itemUnchecked ::
-              (MonadDOM m, FromJSString result) =>
-                DOMTokenList -> Word -> m result
-itemUnchecked self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.contains Mozilla DOMTokenList.contains documentation> 
-contains ::
-         (MonadDOM m, ToJSString token) => DOMTokenList -> token -> m Bool
-contains self token
-  = liftDOM ((self ^. jsf "contains" [toJSVal token]) >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/item MDN DOMTokenList.item documentation>
+item_ :: (MonadDOM m) => DOMTokenList -> Word -> m ()
+item_ self index = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.contains Mozilla DOMTokenList.contains documentation> 
-contains_ ::
-          (MonadDOM m, ToJSString token) => DOMTokenList -> token -> m ()
-contains_ self token
-  = liftDOM (void (self ^. jsf "contains" [toJSVal token]))
+-- | <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 ((((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString) >>= 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 ::
-    (MonadDOM m, ToJSString tokens) => DOMTokenList -> [tokens] -> m ()
-add self tokens
-  = liftDOM (void (self ^. jsf "add" [toJSVal (array tokens)]))
+-- | <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 (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.remove Mozilla DOMTokenList.remove documentation> 
-remove ::
-       (MonadDOM m, ToJSString tokens) => DOMTokenList -> [tokens] -> m ()
-remove self tokens
-  = liftDOM (void (self ^. jsf "remove" [toJSVal (array tokens)]))
+-- | <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 (self ^. jsf "remove" ([] ++ P.map toJSVal tokens)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.toggle Mozilla DOMTokenList.toggle documentation> 
-toggle ::
-       (MonadDOM m, ToJSString token) =>
-         DOMTokenList -> token -> Bool -> m Bool
-toggle self token force
-  = liftDOM
-      ((self ^. jsf "toggle" [toJSVal token, toJSVal force]) >>=
-         valToBool)
+-- | <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 (((self ^. jsf "replace" [toJSVal token, toJSVal newToken]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.toggle Mozilla DOMTokenList.toggle documentation> 
-toggle_ ::
-        (MonadDOM m, ToJSString token) =>
-          DOMTokenList -> token -> Bool -> m ()
-toggle_ self token force
-  = liftDOM
-      (void (self ^. jsf "toggle" [toJSVal token, toJSVal force]))
+-- | <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 (self ^. jsf "replace" [toJSVal token, toJSVal newToken]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.replace Mozilla DOMTokenList.replace documentation> 
-replace ::
-        (MonadDOM m, ToJSString token, ToJSString newToken) =>
-          DOMTokenList -> token -> newToken -> m ()
-replace self token newToken
-  = liftDOM
-      (void (self ^. jsf "replace" [toJSVal token, toJSVal newToken]))
+-- | <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 (((self ^. jsf "supports" [toJSVal token]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.supports Mozilla DOMTokenList.supports documentation> 
-supports ::
-         (MonadDOM m, ToJSString token) => DOMTokenList -> token -> m Bool
-supports self token
-  = liftDOM ((self ^. jsf "supports" [toJSVal token]) >>= valToBool)
+-- | <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 (self ^. jsf "supports" [toJSVal token]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.supports Mozilla DOMTokenList.supports documentation> 
-supports_ ::
-          (MonadDOM m, ToJSString token) => DOMTokenList -> token -> m ()
-supports_ self token
-  = liftDOM (void (self ^. jsf "supports" [toJSVal token]))
+-- | <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 (((self ^. jsf "toggle" [toJSVal token, P.maybe (P.return jsUndefined) toJSVal force]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.length Mozilla DOMTokenList.length documentation> 
+-- | <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 (self ^. jsf "toggle" [toJSVal token, P.maybe (P.return jsUndefined) toJSVal force]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/length MDN DOMTokenList.length documentation>
 getLength :: (MonadDOM m) => DOMTokenList -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.value Mozilla DOMTokenList.value documentation> 
-setValue ::
-         (MonadDOM m, ToJSString val) => DOMTokenList -> val -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+-- | <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 (self ^. jss "value" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.value Mozilla DOMTokenList.value documentation> 
-getValue ::
-         (MonadDOM m, FromJSString result) => DOMTokenList -> m result
-getValue self
-  = liftDOM ((self ^. js "value") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DOMTokenList/value MDN DOMTokenList.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => DOMTokenList -> m result
+getValue self = liftDOM (((self ^. js "value") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DataCue.hs b/src/JSDOM/Generated/DataCue.hs
--- a/src/JSDOM/Generated/DataCue.hs
+++ b/src/JSDOM/Generated/DataCue.hs
@@ -1,62 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from datacue (webref). Do not edit.
 module JSDOM.Generated.DataCue
-       (newDataCue, newDataCue', setData, getData, setValue, getValue,
-        getType, DataCue(..), gTypeDataCue)
+       (newDataCue, newDataCue', setValue, getValue, getType, DataCue(..), gTypeDataCue)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation> 
-newDataCue ::
-           (MonadDOM m, IsArrayBuffer data') =>
-             Double -> Double -> data' -> m DataCue
-newDataCue startTime endTime data'
-  = liftDOM
-      (DataCue <$>
-         new (jsg "DataCue")
-           [toJSVal startTime, toJSVal endTime, toJSVal data'])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation> 
-newDataCue' ::
-            (MonadDOM m, ToJSVal value, ToJSString type') =>
-              Double -> Double -> value -> Maybe type' -> m DataCue
-newDataCue' startTime endTime value type'
-  = liftDOM
-      (DataCue <$>
-         new (jsg "DataCue")
-           [toJSVal startTime, toJSVal endTime, toJSVal value, toJSVal type'])
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.data Mozilla WebKitDataCue.data documentation> 
-setData ::
-        (MonadDOM m, IsArrayBuffer val) => DataCue -> val -> m ()
-setData self val = liftDOM (self ^. jss "data" (toJSVal val))
+-- | <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 (((new (jsg "DataCue") [toJSVal startTime, toJSVal endTime, toJSVal value]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.data Mozilla WebKitDataCue.data documentation> 
-getData :: (MonadDOM m) => DataCue -> m ArrayBuffer
-getData self = liftDOM ((self ^. js "data") >>= fromJSValUnchecked)
+-- | <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 (((new (jsg "DataCue") [toJSVal startTime, toJSVal endTime, toJSVal value, P.maybe (P.return jsUndefined) toJSVal type']) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.value Mozilla WebKitDataCue.value documentation> 
-setValue :: (MonadDOM m, ToJSVal val) => DataCue -> val -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/DataCue/value MDN DataCue.value documentation>
+setValue :: (MonadDOM m) => DataCue -> JSVal -> m ()
+setValue self val = liftDOM (void (self ^. jss "value" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.value Mozilla WebKitDataCue.value documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DataCue/value MDN DataCue.value documentation>
 getValue :: (MonadDOM m) => DataCue -> m JSVal
-getValue self = liftDOM ((self ^. js "value") >>= toJSVal)
+getValue self = liftDOM (self ^. js "value")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.type Mozilla WebKitDataCue.type documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DataCue/type MDN DataCue.type documentation>
 getType :: (MonadDOM m, FromJSString result) => DataCue -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DataTransfer.hs b/src/JSDOM/Generated/DataTransfer.hs
--- a/src/JSDOM/Generated/DataTransfer.hs
+++ b/src/JSDOM/Generated/DataTransfer.hs
@@ -1,100 +1,68 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.DataTransfer
-       (setDragImage, getData, getData_, setData, clearData,
-        setDropEffect, getDropEffect, setEffectAllowed, getEffectAllowed,
-        getItems, getTypes, getFiles, DataTransfer(..), gTypeDataTransfer)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.setDragImage Mozilla DataTransfer.setDragImage documentation> 
-setDragImage ::
-             (MonadDOM m, IsElement image) =>
-               DataTransfer -> Maybe image -> Int -> Int -> m ()
-setDragImage self image x y
-  = liftDOM
-      (void
-         (self ^. jsf "setDragImage" [toJSVal image, toJSVal x, toJSVal y]))
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/DataTransfer MDN DataTransfer. documentation>
+newDataTransfer :: (MonadDOM m) => m DataTransfer
+newDataTransfer = liftDOM (((new (jsg "DataTransfer") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.getData Mozilla DataTransfer.getData documentation> 
-getData ::
-        (MonadDOM m, ToJSString format, FromJSString result) =>
-          DataTransfer -> format -> m result
-getData self format
-  = liftDOM
-      ((self ^. jsf "getData" [toJSVal format]) >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "clearData" [P.maybe (P.return jsUndefined) toJSVal format]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.getData Mozilla DataTransfer.getData documentation> 
-getData_ ::
-         (MonadDOM m, ToJSString format) => DataTransfer -> format -> m ()
-getData_ self format
-  = liftDOM (void (self ^. jsf "getData" [toJSVal format]))
+-- | <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 (((self ^. jsf "getData" [toJSVal format]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.setData Mozilla DataTransfer.setData documentation> 
-setData ::
-        (MonadDOM m, ToJSString format, ToJSString data') =>
-          DataTransfer -> format -> data' -> m ()
-setData self format data'
-  = liftDOM
-      (void (self ^. jsf "setData" [toJSVal format, toJSVal data']))
+-- | <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 (self ^. jsf "getData" [toJSVal format]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.clearData Mozilla DataTransfer.clearData documentation> 
-clearData ::
-          (MonadDOM m, ToJSString format) =>
-            DataTransfer -> Maybe format -> m ()
-clearData self format
-  = liftDOM (void (self ^. jsf "clearData" [toJSVal format]))
+-- | <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 (self ^. jsf "setData" [toJSVal format, toJSVal data']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.dropEffect Mozilla DataTransfer.dropEffect documentation> 
-setDropEffect ::
-              (MonadDOM m, ToJSString val) => DataTransfer -> val -> m ()
-setDropEffect self val
-  = liftDOM (self ^. jss "dropEffect" (toJSVal val))
+-- | <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 (self ^. jsf "setDragImage" [toJSVal image, toJSVal x, toJSVal y]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.dropEffect Mozilla DataTransfer.dropEffect documentation> 
-getDropEffect ::
-              (MonadDOM m, FromJSString result) => DataTransfer -> m result
-getDropEffect self
-  = liftDOM ((self ^. js "dropEffect") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "dropEffect" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.effectAllowed Mozilla DataTransfer.effectAllowed documentation> 
-setEffectAllowed ::
-                 (MonadDOM m, ToJSString val) => DataTransfer -> val -> m ()
-setEffectAllowed self val
-  = liftDOM (self ^. jss "effectAllowed" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/dropEffect MDN DataTransfer.dropEffect documentation>
+getDropEffect :: (MonadDOM m, FromJSString result) => DataTransfer -> m result
+getDropEffect self = liftDOM (((self ^. js "dropEffect") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.effectAllowed Mozilla DataTransfer.effectAllowed documentation> 
-getEffectAllowed ::
-                 (MonadDOM m, FromJSString result) => DataTransfer -> m result
-getEffectAllowed self
-  = liftDOM ((self ^. js "effectAllowed") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "effectAllowed" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.items Mozilla DataTransfer.items documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/effectAllowed MDN DataTransfer.effectAllowed documentation>
+getEffectAllowed :: (MonadDOM m, FromJSString result) => DataTransfer -> m result
+getEffectAllowed self = liftDOM (((self ^. js "effectAllowed") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/items MDN DataTransfer.items documentation>
 getItems :: (MonadDOM m) => DataTransfer -> m DataTransferItemList
-getItems self
-  = liftDOM ((self ^. js "items") >>= fromJSValUnchecked)
+getItems self = liftDOM (((self ^. js "items") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.types Mozilla DataTransfer.types documentation> 
-getTypes ::
-         (MonadDOM m, FromJSString result) => DataTransfer -> m [result]
-getTypes self
-  = liftDOM ((self ^. js "types") >>= fromJSArrayUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/types MDN DataTransfer.types documentation>
+getTypes :: (MonadDOM m, FromJSString result) => DataTransfer -> m [result]
+getTypes self = liftDOM (((self ^. js "types") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.files Mozilla DataTransfer.files documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransfer/files MDN DataTransfer.files documentation>
 getFiles :: (MonadDOM m) => DataTransfer -> m FileList
-getFiles self
-  = liftDOM ((self ^. js "files") >>= fromJSValUnchecked)
+getFiles self = liftDOM (((self ^. js "files") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DataTransferItem.hs b/src/JSDOM/Generated/DataTransferItem.hs
--- a/src/JSDOM/Generated/DataTransferItem.hs
+++ b/src/JSDOM/Generated/DataTransferItem.hs
@@ -1,61 +1,60 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.DataTransferItem
-       (getAsString, getAsFile, getAsFile_, getAsFileUnsafe,
-        getAsFileUnchecked, getKind, getType, DataTransferItem(..),
-        gTypeDataTransferItem)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsString Mozilla DataTransferItem.getAsString documentation> 
-getAsString ::
-            (MonadDOM m, ToJSString callback) =>
-              DataTransferItem -> Maybe (StringCallback callback) -> m ()
-getAsString self callback
-  = liftDOM (void (self ^. jsf "getAsString" [toJSVal callback]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
-getAsFile :: (MonadDOM m) => DataTransferItem -> m (Maybe Blob)
-getAsFile self
-  = liftDOM ((self ^. jsf "getAsFile" ()) >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/getAsFile MDN DataTransferItem.getAsFile documentation>
+getAsFile :: (MonadDOM m) => DataTransferItem -> m (Maybe File)
+getAsFile self = liftDOM (((self ^. jsf "getAsFile" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/getAsFile MDN DataTransferItem.getAsFile documentation>
 getAsFile_ :: (MonadDOM m) => DataTransferItem -> m ()
 getAsFile_ self = liftDOM (void (self ^. jsf "getAsFile" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
-getAsFileUnsafe ::
-                (MonadDOM m, HasCallStack) => DataTransferItem -> m Blob
-getAsFileUnsafe self
-  = liftDOM
-      (((self ^. jsf "getAsFile" ()) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/getAsFile MDN DataTransferItem.getAsFile documentation>
+getAsFileUnsafe :: (MonadDOM m, HasCallStack) => DataTransferItem -> m File
+getAsFileUnsafe self = liftDOM ((((self ^. jsf "getAsFile" ()) >>= 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> 
-getAsFileUnchecked :: (MonadDOM m) => DataTransferItem -> m Blob
-getAsFileUnchecked self
-  = liftDOM ((self ^. jsf "getAsFile" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/getAsFile MDN DataTransferItem.getAsFile documentation>
+getAsFileUnchecked :: (MonadDOM m) => DataTransferItem -> m File
+getAsFileUnchecked self = liftDOM (((self ^. jsf "getAsFile" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.kind Mozilla DataTransferItem.kind documentation> 
-getKind ::
-        (MonadDOM m, FromJSString result) => DataTransferItem -> m result
-getKind self = liftDOM ((self ^. js "kind") >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "getAsString" [toJSVal callback']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.type Mozilla DataTransferItem.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => DataTransferItem -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/webkitGetAsEntry MDN DataTransferItem.webkitGetAsEntry documentation>
+webkitGetAsEntry :: (MonadDOM m) => DataTransferItem -> m (Maybe FileSystemEntry)
+webkitGetAsEntry self = liftDOM (((self ^. jsf "webkitGetAsEntry" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/webkitGetAsEntry MDN DataTransferItem.webkitGetAsEntry documentation>
+webkitGetAsEntry_ :: (MonadDOM m) => DataTransferItem -> m ()
+webkitGetAsEntry_ self = liftDOM (void (self ^. jsf "webkitGetAsEntry" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/webkitGetAsEntry MDN DataTransferItem.webkitGetAsEntry documentation>
+webkitGetAsEntryUnsafe :: (MonadDOM m, HasCallStack) => DataTransferItem -> m FileSystemEntry
+webkitGetAsEntryUnsafe self = liftDOM ((((self ^. jsf "webkitGetAsEntry" ()) >>= 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 (((self ^. jsf "webkitGetAsEntry" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/kind MDN DataTransferItem.kind documentation>
+getKind :: (MonadDOM m, FromJSString result) => DataTransferItem -> m result
+getKind self = liftDOM (((self ^. js "kind") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItem/type MDN DataTransferItem.type documentation>
+getType :: (MonadDOM m, FromJSString result) => DataTransferItem -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DataTransferItemList.hs b/src/JSDOM/Generated/DataTransferItemList.hs
--- a/src/JSDOM/Generated/DataTransferItemList.hs
+++ b/src/JSDOM/Generated/DataTransferItemList.hs
@@ -1,55 +1,60 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.DataTransferItemList
-       (item, item_, clear, addFile, add, getLength,
-        DataTransferItemList(..), gTypeDataTransferItemList)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.item Mozilla DataTransferItemList.item documentation> 
-item ::
-     (MonadDOM m) => DataTransferItemList -> Word -> m DataTransferItem
-item self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "add" [toJSVal data', toJSVal type']) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.item Mozilla DataTransferItemList.item documentation> 
-item_ :: (MonadDOM m) => DataTransferItemList -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+-- | <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 (self ^. jsf "add" [toJSVal data', toJSVal type']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.clear Mozilla DataTransferItemList.clear documentation> 
+-- | <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 ((((self ^. jsf "add" [toJSVal data', toJSVal type']) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <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 (((self ^. jsf "add" [toJSVal data', toJSVal type']) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "add" [toJSVal data']) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItemList/add MDN DataTransferItemList.add documentation>
+addFile_ :: (MonadDOM m) => DataTransferItemList -> File -> m ()
+addFile_ self data' = liftDOM (void (self ^. jsf "add" [toJSVal 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 ((((self ^. jsf "add" [toJSVal 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 (((self ^. jsf "add" [toJSVal data']) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItemList/clear MDN DataTransferItemList.clear documentation>
 clear :: (MonadDOM m) => DataTransferItemList -> m ()
 clear self = liftDOM (void (self ^. jsf "clear" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.add Mozilla DataTransferItemList.add documentation> 
-addFile ::
-        (MonadDOM m) => DataTransferItemList -> Maybe File -> m ()
-addFile self file
-  = liftDOM (void (self ^. jsf "add" [toJSVal file]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.add Mozilla DataTransferItemList.add documentation> 
-add ::
-    (MonadDOM m, ToJSString data', ToJSString type') =>
-      DataTransferItemList -> Maybe data' -> Maybe type' -> m ()
-add self data' type'
-  = liftDOM (void (self ^. jsf "add" [toJSVal data', toJSVal type']))
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItemList/remove MDN DataTransferItemList.remove documentation>
+remove :: (MonadDOM m) => DataTransferItemList -> Word -> m ()
+remove self index = liftDOM (void (self ^. jsf "remove" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.length Mozilla DataTransferItemList.length documentation> 
-getLength :: (MonadDOM m) => DataTransferItemList -> m Int
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/DataTransferItemList/length MDN DataTransferItemList.length documentation>
+getLength :: (MonadDOM m) => DataTransferItemList -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/Database.hs b/src/JSDOM/Generated/Database.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/Database.hs
+++ /dev/null
@@ -1,69 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.Database
-       (changeVersion, transaction, readTransaction, getVersion,
-        Database(..), gTypeDatabase)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.changeVersion Mozilla Database.changeVersion documentation> 
-changeVersion ::
-              (MonadDOM m, ToJSString oldVersion, ToJSString newVersion) =>
-                Database ->
-                  oldVersion ->
-                    newVersion ->
-                      Maybe SQLTransactionCallback ->
-                        Maybe SQLTransactionErrorCallback -> Maybe VoidCallback -> m ()
-changeVersion self oldVersion newVersion callback errorCallback
-  successCallback
-  = liftDOM
-      (void
-         (self ^. jsf "changeVersion"
-            [toJSVal oldVersion, toJSVal newVersion, toJSVal callback,
-             toJSVal errorCallback, toJSVal successCallback]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.transaction Mozilla Database.transaction documentation> 
-transaction ::
-            (MonadDOM m) =>
-              Database ->
-                SQLTransactionCallback ->
-                  Maybe SQLTransactionErrorCallback -> Maybe VoidCallback -> m ()
-transaction self callback errorCallback successCallback
-  = liftDOM
-      (void
-         (self ^. jsf "transaction"
-            [toJSVal callback, toJSVal errorCallback,
-             toJSVal successCallback]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.readTransaction Mozilla Database.readTransaction documentation> 
-readTransaction ::
-                (MonadDOM m) =>
-                  Database ->
-                    SQLTransactionCallback ->
-                      Maybe SQLTransactionErrorCallback -> Maybe VoidCallback -> m ()
-readTransaction self callback errorCallback successCallback
-  = liftDOM
-      (void
-         (self ^. jsf "readTransaction"
-            [toJSVal callback, toJSVal errorCallback,
-             toJSVal successCallback]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.version Mozilla Database.version documentation> 
-getVersion ::
-           (MonadDOM m, FromJSString result) => Database -> m result
-getVersion self
-  = liftDOM ((self ^. js "version") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/DatabaseCallback.hs b/src/JSDOM/Generated/DatabaseCallback.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/DatabaseCallback.hs
+++ /dev/null
@@ -1,51 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.DatabaseCallback
-       (newDatabaseCallback, newDatabaseCallbackSync,
-        newDatabaseCallbackAsync, DatabaseCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DatabaseCallback Mozilla DatabaseCallback documentation> 
-newDatabaseCallback ::
-                    (MonadDOM m) => (Database -> JSM ()) -> m DatabaseCallback
-newDatabaseCallback callback
-  = liftDOM
-      (DatabaseCallback . Callback <$>
-         function
-           (\ _ _ [database] ->
-              fromJSValUnchecked database >>= \ database' -> callback database'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DatabaseCallback Mozilla DatabaseCallback documentation> 
-newDatabaseCallbackSync ::
-                        (MonadDOM m) => (Database -> JSM ()) -> m DatabaseCallback
-newDatabaseCallbackSync callback
-  = liftDOM
-      (DatabaseCallback . Callback <$>
-         function
-           (\ _ _ [database] ->
-              fromJSValUnchecked database >>= \ database' -> callback database'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DatabaseCallback Mozilla DatabaseCallback documentation> 
-newDatabaseCallbackAsync ::
-                         (MonadDOM m) => (Database -> JSM ()) -> m DatabaseCallback
-newDatabaseCallbackAsync callback
-  = liftDOM
-      (DatabaseCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [database] ->
-              fromJSValUnchecked database >>= \ database' -> callback database'))
diff --git a/src/JSDOM/Generated/DecodeErrorCallback.hs b/src/JSDOM/Generated/DecodeErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DecodeErrorCallback.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newDecodeErrorCallback :: (MonadDOM m) => (DOMException -> JSM ()) -> m DecodeErrorCallback
+newDecodeErrorCallback callback = liftDOM (DecodeErrorCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (error : _) -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
+
+newDecodeErrorCallbackSync :: (MonadDOM m) => (DOMException -> JSM ()) -> m DecodeErrorCallback
+newDecodeErrorCallbackSync callback = liftDOM (DecodeErrorCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (error : _) -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
+
+newDecodeErrorCallbackAsync :: (MonadDOM m) => (DOMException -> JSM ()) -> m DecodeErrorCallback
+newDecodeErrorCallbackAsync callback = liftDOM (DecodeErrorCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (error : _) -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
diff --git a/src/JSDOM/Generated/DecodeSuccessCallback.hs b/src/JSDOM/Generated/DecodeSuccessCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DecodeSuccessCallback.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newDecodeSuccessCallback :: (MonadDOM m) => (AudioBuffer -> JSM ()) -> m DecodeSuccessCallback
+newDecodeSuccessCallback callback = liftDOM (DecodeSuccessCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (decodedData : _) -> do
+          decodedData' <- fromJSValUnchecked decodedData
+          callback decodedData'))
+
+newDecodeSuccessCallbackSync :: (MonadDOM m) => (AudioBuffer -> JSM ()) -> m DecodeSuccessCallback
+newDecodeSuccessCallbackSync callback = liftDOM (DecodeSuccessCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (decodedData : _) -> do
+          decodedData' <- fromJSValUnchecked decodedData
+          callback decodedData'))
+
+newDecodeSuccessCallbackAsync :: (MonadDOM m) => (AudioBuffer -> JSM ()) -> m DecodeSuccessCallback
+newDecodeSuccessCallbackAsync callback = liftDOM (DecodeSuccessCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (decodedData : _) -> do
+          decodedData' <- fromJSValUnchecked decodedData
+          callback decodedData'))
diff --git a/src/JSDOM/Generated/DecompressionStream.hs b/src/JSDOM/Generated/DecompressionStream.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DecompressionStream.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from compression (webref). Do not edit.
+module JSDOM.Generated.DecompressionStream
+       (newDecompressionStream, DecompressionStream(..), gTypeDecompressionStream)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/DecompressionStream/DecompressionStream MDN DecompressionStream. documentation>
+newDecompressionStream :: (MonadDOM m) => CompressionFormat -> m DecompressionStream
+newDecompressionStream format = liftDOM (((new (jsg "DecompressionStream") [toJSVal format]) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DedicatedWorkerGlobalScope.hs b/src/JSDOM/Generated/DedicatedWorkerGlobalScope.hs
--- a/src/JSDOM/Generated/DedicatedWorkerGlobalScope.hs
+++ b/src/JSDOM/Generated/DedicatedWorkerGlobalScope.hs
@@ -1,35 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.DedicatedWorkerGlobalScope
-       (postMessage, message, DedicatedWorkerGlobalScope(..),
-        gTypeDedicatedWorkerGlobalScope)
+       (close, postMessage, postMessageOptions, getName, rtctransform, DedicatedWorkerGlobalScope(..), gTypeDedicatedWorkerGlobalScope)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope.postMessage Mozilla DedicatedWorkerGlobalScope.postMessage documentation> 
-postMessage ::
-            (MonadDOM m, ToJSVal message, IsGObject transfer) =>
-              DedicatedWorkerGlobalScope -> message -> [transfer] -> m ()
-postMessage self message transfer
-  = liftDOM
-      (void
-         (self ^. jsf "postMessage"
-            [toJSVal message, toJSVal (array transfer)]))
+-- | <https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/close MDN DedicatedWorkerGlobalScope.close documentation>
+close :: (MonadDOM m) => DedicatedWorkerGlobalScope -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope.onmessage Mozilla DedicatedWorkerGlobalScope.onmessage documentation> 
-message :: EventName DedicatedWorkerGlobalScope MessageEvent
-message = unsafeEventNameAsync (toJSString "message")
+-- | <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 (self ^. jsf "postMessage" [toJSVal message, toJSVal transfer]))
+
+-- | <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 (self ^. jsf "postMessage" [toJSVal message, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DedicatedWorkerGlobalScope/name MDN DedicatedWorkerGlobalScope.name documentation>
+getName :: (MonadDOM m, FromJSString result) => DedicatedWorkerGlobalScope -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-dedicatedworkerglobalscope-onrtctransform rtctransform event>
+rtctransform :: EventName DedicatedWorkerGlobalScope RTCTransformEvent
+rtctransform = unsafeEventName (toJSString "rtctransform")
diff --git a/src/JSDOM/Generated/DelayNode.hs b/src/JSDOM/Generated/DelayNode.hs
--- a/src/JSDOM/Generated/DelayNode.hs
+++ b/src/JSDOM/Generated/DelayNode.hs
@@ -1,24 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.DelayNode
-       (getDelayTime, DelayNode(..), gTypeDelayNode) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (newDelayNode, getDelayTime, DelayNode(..), gTypeDelayNode)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DelayNode.delayTime Mozilla DelayNode.delayTime documentation> 
+-- | <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 (((new (jsg "DelayNode") [toJSVal context, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DelayNode/delayTime MDN DelayNode.delayTime documentation>
 getDelayTime :: (MonadDOM m) => DelayNode -> m AudioParam
-getDelayTime self
-  = liftDOM ((self ^. js "delayTime") >>= fromJSValUnchecked)
+getDelayTime self = liftDOM (((self ^. js "delayTime") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DelayOptions.hs b/src/JSDOM/Generated/DelayOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DelayOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.DelayOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#DelayOptions DelayOptions specification>
+newDelayOptions :: (MonadDOM m) => m DelayOptions
+newDelayOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-delayoptions-maxdelaytime DelayOptions.maxDelayTime specification>
+setMaxDelayTime :: (MonadDOM m) => DelayOptions -> Double -> m ()
+setMaxDelayTime self val = liftDOM (void (self ^. jss "maxDelayTime" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-delayoptions-maxdelaytime DelayOptions.maxDelayTime specification>
+getMaxDelayTime :: (MonadDOM m) => DelayOptions -> m (Maybe Double)
+getMaxDelayTime self = liftDOM (((self ^. js "maxDelayTime") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-delayoptions-maxdelaytime DelayOptions.maxDelayTime specification>
+getMaxDelayTimeUnsafe :: (MonadDOM m, HasCallStack) => DelayOptions -> m Double
+getMaxDelayTimeUnsafe self = liftDOM ((((self ^. js "maxDelayTime") >>= 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 (((self ^. js "maxDelayTime") >>= valToNumber))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-delayoptions-delaytime DelayOptions.delayTime specification>
+setDelayTime :: (MonadDOM m) => DelayOptions -> Double -> m ()
+setDelayTime self val = liftDOM (void (self ^. jss "delayTime" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-delayoptions-delaytime DelayOptions.delayTime specification>
+getDelayTime :: (MonadDOM m) => DelayOptions -> m (Maybe Double)
+getDelayTime self = liftDOM (((self ^. js "delayTime") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-delayoptions-delaytime DelayOptions.delayTime specification>
+getDelayTimeUnsafe :: (MonadDOM m, HasCallStack) => DelayOptions -> m Double
+getDelayTimeUnsafe self = liftDOM ((((self ^. js "delayTime") >>= 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 (((self ^. js "delayTime") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DeviceChangeEvent.hs b/src/JSDOM/Generated/DeviceChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DeviceChangeEvent.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module JSDOM.Generated.DeviceChangeEvent
+       (DeviceChangeEvent(..), gTypeDeviceChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/DeviceMotionEvent.hs b/src/JSDOM/Generated/DeviceMotionEvent.hs
--- a/src/JSDOM/Generated/DeviceMotionEvent.hs
+++ b/src/JSDOM/Generated/DeviceMotionEvent.hs
@@ -1,127 +1,60 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from orientation-event (webref). Do not edit.
 module JSDOM.Generated.DeviceMotionEvent
-       (initDeviceMotionEvent, getAcceleration, getAccelerationUnsafe,
-        getAccelerationUnchecked, getAccelerationIncludingGravity,
-        getAccelerationIncludingGravityUnsafe,
-        getAccelerationIncludingGravityUnchecked, getRotationRate,
-        getRotationRateUnsafe, getRotationRateUnchecked, getInterval,
-        getIntervalUnsafe, getIntervalUnchecked, DeviceMotionEvent(..),
-        gTypeDeviceMotionEvent)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.initDeviceMotionEvent Mozilla DeviceMotionEvent.initDeviceMotionEvent documentation> 
-initDeviceMotionEvent ::
-                      (MonadDOM 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
-  = liftDOM
-      (void
-         (self ^. jsf "initDeviceMotionEvent"
-            [toJSVal type', toJSVal bubbles, toJSVal cancelable,
-             toJSVal acceleration, toJSVal accelerationIncludingGravity,
-             toJSVal rotationRate, toJSVal interval]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.acceleration Mozilla DeviceMotionEvent.acceleration documentation> 
-getAcceleration ::
-                (MonadDOM m) => DeviceMotionEvent -> m (Maybe Acceleration)
-getAcceleration self
-  = liftDOM ((self ^. js "acceleration") >>= fromJSVal)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.acceleration Mozilla DeviceMotionEvent.acceleration documentation> 
-getAccelerationUnsafe ::
-                      (MonadDOM m, HasCallStack) => DeviceMotionEvent -> m Acceleration
-getAccelerationUnsafe self
-  = liftDOM
-      (((self ^. js "acceleration") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((new (jsg "DeviceMotionEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.acceleration Mozilla DeviceMotionEvent.acceleration documentation> 
-getAccelerationUnchecked ::
-                         (MonadDOM m) => DeviceMotionEvent -> m Acceleration
-getAccelerationUnchecked self
-  = liftDOM ((self ^. js "acceleration") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/acceleration MDN DeviceMotionEvent.acceleration documentation>
+getAcceleration :: (MonadDOM m) => DeviceMotionEvent -> m (Maybe DeviceMotionEventAcceleration)
+getAcceleration self = liftDOM (((self ^. js "acceleration") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.accelerationIncludingGravity Mozilla DeviceMotionEvent.accelerationIncludingGravity documentation> 
-getAccelerationIncludingGravity ::
-                                (MonadDOM m) => DeviceMotionEvent -> m (Maybe Acceleration)
-getAccelerationIncludingGravity self
-  = liftDOM
-      ((self ^. js "accelerationIncludingGravity") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/acceleration MDN DeviceMotionEvent.acceleration documentation>
+getAccelerationUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEvent -> m DeviceMotionEventAcceleration
+getAccelerationUnsafe self = liftDOM ((((self ^. js "acceleration") >>= 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 ::
-                                      (MonadDOM m, HasCallStack) =>
-                                        DeviceMotionEvent -> m Acceleration
-getAccelerationIncludingGravityUnsafe self
-  = liftDOM
-      (((self ^. js "accelerationIncludingGravity") >>= fromJSVal) >>=
-         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 (((self ^. js "acceleration") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.accelerationIncludingGravity Mozilla DeviceMotionEvent.accelerationIncludingGravity documentation> 
-getAccelerationIncludingGravityUnchecked ::
-                                         (MonadDOM m) => DeviceMotionEvent -> m Acceleration
-getAccelerationIncludingGravityUnchecked self
-  = liftDOM
-      ((self ^. js "accelerationIncludingGravity") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/accelerationIncludingGravity MDN DeviceMotionEvent.accelerationIncludingGravity documentation>
+getAccelerationIncludingGravity :: (MonadDOM m) => DeviceMotionEvent -> m (Maybe DeviceMotionEventAcceleration)
+getAccelerationIncludingGravity self = liftDOM (((self ^. js "accelerationIncludingGravity") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.rotationRate Mozilla DeviceMotionEvent.rotationRate documentation> 
-getRotationRate ::
-                (MonadDOM m) => DeviceMotionEvent -> m (Maybe RotationRate)
-getRotationRate self
-  = liftDOM ((self ^. js "rotationRate") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/accelerationIncludingGravity MDN DeviceMotionEvent.accelerationIncludingGravity documentation>
+getAccelerationIncludingGravityUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEvent -> m DeviceMotionEventAcceleration
+getAccelerationIncludingGravityUnsafe self = liftDOM ((((self ^. js "accelerationIncludingGravity") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.rotationRate Mozilla DeviceMotionEvent.rotationRate documentation> 
-getRotationRateUnsafe ::
-                      (MonadDOM m, HasCallStack) => DeviceMotionEvent -> m RotationRate
-getRotationRateUnsafe self
-  = liftDOM
-      (((self ^. js "rotationRate") >>= fromJSVal) >>=
-         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 (((self ^. js "accelerationIncludingGravity") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.rotationRate Mozilla DeviceMotionEvent.rotationRate documentation> 
-getRotationRateUnchecked ::
-                         (MonadDOM m) => DeviceMotionEvent -> m RotationRate
-getRotationRateUnchecked self
-  = liftDOM ((self ^. js "rotationRate") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/rotationRate MDN DeviceMotionEvent.rotationRate documentation>
+getRotationRate :: (MonadDOM m) => DeviceMotionEvent -> m (Maybe DeviceMotionEventRotationRate)
+getRotationRate self = liftDOM (((self ^. js "rotationRate") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.interval Mozilla DeviceMotionEvent.interval documentation> 
-getInterval ::
-            (MonadDOM m) => DeviceMotionEvent -> m (Maybe Double)
-getInterval self = liftDOM ((self ^. js "interval") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/rotationRate MDN DeviceMotionEvent.rotationRate documentation>
+getRotationRateUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEvent -> m DeviceMotionEventRotationRate
+getRotationRateUnsafe self = liftDOM ((((self ^. js "rotationRate") >>= 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 ::
-                  (MonadDOM m, HasCallStack) => DeviceMotionEvent -> m Double
-getIntervalUnsafe self
-  = liftDOM
-      (((self ^. js "interval") >>= fromJSVal) >>=
-         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 (((self ^. js "rotationRate") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.interval Mozilla DeviceMotionEvent.interval documentation> 
-getIntervalUnchecked ::
-                     (MonadDOM m) => DeviceMotionEvent -> m Double
-getIntervalUnchecked self
-  = liftDOM ((self ^. js "interval") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/interval MDN DeviceMotionEvent.interval documentation>
+getInterval :: (MonadDOM m) => DeviceMotionEvent -> m Double
+getInterval self = liftDOM (((self ^. js "interval") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DeviceMotionEventAcceleration.hs b/src/JSDOM/Generated/DeviceMotionEventAcceleration.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DeviceMotionEventAcceleration.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from orientation-event (webref). Do not edit.
+module JSDOM.Generated.DeviceMotionEventAcceleration
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/x MDN DeviceMotionEventAcceleration.x documentation>
+getX :: (MonadDOM m) => DeviceMotionEventAcceleration -> m (Maybe Double)
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/x MDN DeviceMotionEventAcceleration.x documentation>
+getXUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventAcceleration -> m Double
+getXUnsafe self = liftDOM ((((self ^. js "x") >>= 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 (((self ^. js "x") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/y MDN DeviceMotionEventAcceleration.y documentation>
+getY :: (MonadDOM m) => DeviceMotionEventAcceleration -> m (Maybe Double)
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/y MDN DeviceMotionEventAcceleration.y documentation>
+getYUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventAcceleration -> m Double
+getYUnsafe self = liftDOM ((((self ^. js "y") >>= 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 (((self ^. js "y") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/z MDN DeviceMotionEventAcceleration.z documentation>
+getZ :: (MonadDOM m) => DeviceMotionEventAcceleration -> m (Maybe Double)
+getZ self = liftDOM (((self ^. js "z") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/z MDN DeviceMotionEventAcceleration.z documentation>
+getZUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventAcceleration -> m Double
+getZUnsafe self = liftDOM ((((self ^. js "z") >>= 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 (((self ^. js "z") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DeviceMotionEventAccelerationInit.hs b/src/JSDOM/Generated/DeviceMotionEventAccelerationInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DeviceMotionEventAccelerationInit.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from orientation-event (webref). Do not edit.
+module JSDOM.Generated.DeviceMotionEventAccelerationInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/deviceorientation/#dictdef-devicemotioneventaccelerationinit DeviceMotionEventAccelerationInit specification>
+newDeviceMotionEventAccelerationInit :: (MonadDOM m) => m DeviceMotionEventAccelerationInit
+newDeviceMotionEventAccelerationInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-x DeviceMotionEventAccelerationInit.x specification>
+setX :: (MonadDOM m) => DeviceMotionEventAccelerationInit -> Maybe Double -> m ()
+setX self val = liftDOM (void (self ^. jss "x" (toJSVal val)))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-x DeviceMotionEventAccelerationInit.x specification>
+getX :: (MonadDOM m) => DeviceMotionEventAccelerationInit -> m (Maybe Double)
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-x DeviceMotionEventAccelerationInit.x specification>
+getXUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventAccelerationInit -> m Double
+getXUnsafe self = liftDOM ((((self ^. js "x") >>= 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 (((self ^. js "x") >>= valToNumber))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-y DeviceMotionEventAccelerationInit.y specification>
+setY :: (MonadDOM m) => DeviceMotionEventAccelerationInit -> Maybe Double -> m ()
+setY self val = liftDOM (void (self ^. jss "y" (toJSVal val)))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-y DeviceMotionEventAccelerationInit.y specification>
+getY :: (MonadDOM m) => DeviceMotionEventAccelerationInit -> m (Maybe Double)
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-y DeviceMotionEventAccelerationInit.y specification>
+getYUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventAccelerationInit -> m Double
+getYUnsafe self = liftDOM ((((self ^. js "y") >>= 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 (((self ^. js "y") >>= valToNumber))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-z DeviceMotionEventAccelerationInit.z specification>
+setZ :: (MonadDOM m) => DeviceMotionEventAccelerationInit -> Maybe Double -> m ()
+setZ self val = liftDOM (void (self ^. jss "z" (toJSVal val)))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-z DeviceMotionEventAccelerationInit.z specification>
+getZ :: (MonadDOM m) => DeviceMotionEventAccelerationInit -> m (Maybe Double)
+getZ self = liftDOM (((self ^. js "z") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventaccelerationinit-z DeviceMotionEventAccelerationInit.z specification>
+getZUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventAccelerationInit -> m Double
+getZUnsafe self = liftDOM ((((self ^. js "z") >>= 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 (((self ^. js "z") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DeviceMotionEventInit.hs b/src/JSDOM/Generated/DeviceMotionEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DeviceMotionEventInit.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from orientation-event (webref). Do not edit.
+module JSDOM.Generated.DeviceMotionEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/deviceorientation/#dictdef-devicemotioneventinit DeviceMotionEventInit specification>
+newDeviceMotionEventInit :: (MonadDOM m) => m DeviceMotionEventInit
+newDeviceMotionEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-acceleration DeviceMotionEventInit.acceleration specification>
+setAcceleration :: (MonadDOM m) => DeviceMotionEventInit -> DeviceMotionEventAccelerationInit -> m ()
+setAcceleration self val = liftDOM (void (self ^. jss "acceleration" (toJSVal val)))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-acceleration DeviceMotionEventInit.acceleration specification>
+getAcceleration :: (MonadDOM m) => DeviceMotionEventInit -> m (Maybe DeviceMotionEventAccelerationInit)
+getAcceleration self = liftDOM (((self ^. js "acceleration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-acceleration DeviceMotionEventInit.acceleration specification>
+getAccelerationUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventInit -> m DeviceMotionEventAccelerationInit
+getAccelerationUnsafe self = liftDOM ((((self ^. js "acceleration") >>= 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 (((self ^. js "acceleration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-accelerationincludinggravity DeviceMotionEventInit.accelerationIncludingGravity specification>
+setAccelerationIncludingGravity :: (MonadDOM m) => DeviceMotionEventInit -> DeviceMotionEventAccelerationInit -> m ()
+setAccelerationIncludingGravity self val = liftDOM (void (self ^. jss "accelerationIncludingGravity" (toJSVal val)))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-accelerationincludinggravity DeviceMotionEventInit.accelerationIncludingGravity specification>
+getAccelerationIncludingGravity :: (MonadDOM m) => DeviceMotionEventInit -> m (Maybe DeviceMotionEventAccelerationInit)
+getAccelerationIncludingGravity self = liftDOM (((self ^. js "accelerationIncludingGravity") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-accelerationincludinggravity DeviceMotionEventInit.accelerationIncludingGravity specification>
+getAccelerationIncludingGravityUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventInit -> m DeviceMotionEventAccelerationInit
+getAccelerationIncludingGravityUnsafe self = liftDOM ((((self ^. js "accelerationIncludingGravity") >>= 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 (((self ^. js "accelerationIncludingGravity") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-rotationrate DeviceMotionEventInit.rotationRate specification>
+setRotationRate :: (MonadDOM m) => DeviceMotionEventInit -> DeviceMotionEventRotationRateInit -> m ()
+setRotationRate self val = liftDOM (void (self ^. jss "rotationRate" (toJSVal val)))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-rotationrate DeviceMotionEventInit.rotationRate specification>
+getRotationRate :: (MonadDOM m) => DeviceMotionEventInit -> m (Maybe DeviceMotionEventRotationRateInit)
+getRotationRate self = liftDOM (((self ^. js "rotationRate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-rotationrate DeviceMotionEventInit.rotationRate specification>
+getRotationRateUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventInit -> m DeviceMotionEventRotationRateInit
+getRotationRateUnsafe self = liftDOM ((((self ^. js "rotationRate") >>= 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 (((self ^. js "rotationRate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-interval DeviceMotionEventInit.interval specification>
+setInterval :: (MonadDOM m) => DeviceMotionEventInit -> Double -> m ()
+setInterval self val = liftDOM (void (self ^. jss "interval" (toJSVal val)))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-interval DeviceMotionEventInit.interval specification>
+getInterval :: (MonadDOM m) => DeviceMotionEventInit -> m (Maybe Double)
+getInterval self = liftDOM (((self ^. js "interval") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventinit-interval DeviceMotionEventInit.interval specification>
+getIntervalUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventInit -> m Double
+getIntervalUnsafe self = liftDOM ((((self ^. js "interval") >>= 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 (((self ^. js "interval") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DeviceMotionEventRotationRate.hs b/src/JSDOM/Generated/DeviceMotionEventRotationRate.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DeviceMotionEventRotationRate.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from orientation-event (webref). Do not edit.
+module JSDOM.Generated.DeviceMotionEventRotationRate
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/alpha MDN DeviceMotionEventRotationRate.alpha documentation>
+getAlpha :: (MonadDOM m) => DeviceMotionEventRotationRate -> m (Maybe Double)
+getAlpha self = liftDOM (((self ^. js "alpha") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/alpha MDN DeviceMotionEventRotationRate.alpha documentation>
+getAlphaUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventRotationRate -> m Double
+getAlphaUnsafe self = liftDOM ((((self ^. js "alpha") >>= 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 (((self ^. js "alpha") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/beta MDN DeviceMotionEventRotationRate.beta documentation>
+getBeta :: (MonadDOM m) => DeviceMotionEventRotationRate -> m (Maybe Double)
+getBeta self = liftDOM (((self ^. js "beta") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/beta MDN DeviceMotionEventRotationRate.beta documentation>
+getBetaUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventRotationRate -> m Double
+getBetaUnsafe self = liftDOM ((((self ^. js "beta") >>= 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 (((self ^. js "beta") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/gamma MDN DeviceMotionEventRotationRate.gamma documentation>
+getGamma :: (MonadDOM m) => DeviceMotionEventRotationRate -> m (Maybe Double)
+getGamma self = liftDOM (((self ^. js "gamma") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/gamma MDN DeviceMotionEventRotationRate.gamma documentation>
+getGammaUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventRotationRate -> m Double
+getGammaUnsafe self = liftDOM ((((self ^. js "gamma") >>= 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 (((self ^. js "gamma") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DeviceMotionEventRotationRateInit.hs b/src/JSDOM/Generated/DeviceMotionEventRotationRateInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DeviceMotionEventRotationRateInit.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from orientation-event (webref). Do not edit.
+module JSDOM.Generated.DeviceMotionEventRotationRateInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/deviceorientation/#dictdef-devicemotioneventrotationrateinit DeviceMotionEventRotationRateInit specification>
+newDeviceMotionEventRotationRateInit :: (MonadDOM m) => m DeviceMotionEventRotationRateInit
+newDeviceMotionEventRotationRateInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-alpha DeviceMotionEventRotationRateInit.alpha specification>
+setAlpha :: (MonadDOM m) => DeviceMotionEventRotationRateInit -> Maybe Double -> m ()
+setAlpha self val = liftDOM (void (self ^. jss "alpha" (toJSVal val)))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-alpha DeviceMotionEventRotationRateInit.alpha specification>
+getAlpha :: (MonadDOM m) => DeviceMotionEventRotationRateInit -> m (Maybe Double)
+getAlpha self = liftDOM (((self ^. js "alpha") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-alpha DeviceMotionEventRotationRateInit.alpha specification>
+getAlphaUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventRotationRateInit -> m Double
+getAlphaUnsafe self = liftDOM ((((self ^. js "alpha") >>= 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 (((self ^. js "alpha") >>= valToNumber))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-beta DeviceMotionEventRotationRateInit.beta specification>
+setBeta :: (MonadDOM m) => DeviceMotionEventRotationRateInit -> Maybe Double -> m ()
+setBeta self val = liftDOM (void (self ^. jss "beta" (toJSVal val)))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-beta DeviceMotionEventRotationRateInit.beta specification>
+getBeta :: (MonadDOM m) => DeviceMotionEventRotationRateInit -> m (Maybe Double)
+getBeta self = liftDOM (((self ^. js "beta") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-beta DeviceMotionEventRotationRateInit.beta specification>
+getBetaUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventRotationRateInit -> m Double
+getBetaUnsafe self = liftDOM ((((self ^. js "beta") >>= 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 (((self ^. js "beta") >>= valToNumber))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-gamma DeviceMotionEventRotationRateInit.gamma specification>
+setGamma :: (MonadDOM m) => DeviceMotionEventRotationRateInit -> Maybe Double -> m ()
+setGamma self val = liftDOM (void (self ^. jss "gamma" (toJSVal val)))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-gamma DeviceMotionEventRotationRateInit.gamma specification>
+getGamma :: (MonadDOM m) => DeviceMotionEventRotationRateInit -> m (Maybe Double)
+getGamma self = liftDOM (((self ^. js "gamma") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-devicemotioneventrotationrateinit-gamma DeviceMotionEventRotationRateInit.gamma specification>
+getGammaUnsafe :: (MonadDOM m, HasCallStack) => DeviceMotionEventRotationRateInit -> m Double
+getGammaUnsafe self = liftDOM ((((self ^. js "gamma") >>= 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 (((self ^. js "gamma") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DeviceOrientationEvent.hs b/src/JSDOM/Generated/DeviceOrientationEvent.hs
--- a/src/JSDOM/Generated/DeviceOrientationEvent.hs
+++ b/src/JSDOM/Generated/DeviceOrientationEvent.hs
@@ -1,117 +1,60 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from orientation-event (webref). Do not edit.
 module JSDOM.Generated.DeviceOrientationEvent
-       (initDeviceOrientationEvent, getAlpha, getAlphaUnsafe,
-        getAlphaUnchecked, getBeta, getBetaUnsafe, getBetaUnchecked,
-        getGamma, getGammaUnsafe, getGammaUnchecked, getAbsolute,
-        getAbsoluteUnsafe, getAbsoluteUnchecked,
-        DeviceOrientationEvent(..), gTypeDeviceOrientationEvent)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.initDeviceOrientationEvent Mozilla DeviceOrientationEvent.initDeviceOrientationEvent documentation> 
-initDeviceOrientationEvent ::
-                           (MonadDOM 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
-  = liftDOM
-      (void
-         (self ^. jsf "initDeviceOrientationEvent"
-            [toJSVal type', toJSVal bubbles, toJSVal cancelable, toJSVal alpha,
-             toJSVal beta, toJSVal gamma, toJSVal absolute]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.alpha Mozilla DeviceOrientationEvent.alpha documentation> 
-getAlpha ::
-         (MonadDOM m) => DeviceOrientationEvent -> m (Maybe Double)
-getAlpha self = liftDOM ((self ^. js "alpha") >>= fromJSVal)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.alpha Mozilla DeviceOrientationEvent.alpha documentation> 
-getAlphaUnsafe ::
-               (MonadDOM m, HasCallStack) => DeviceOrientationEvent -> m Double
-getAlphaUnsafe self
-  = liftDOM
-      (((self ^. js "alpha") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((new (jsg "DeviceOrientationEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.alpha Mozilla DeviceOrientationEvent.alpha documentation> 
-getAlphaUnchecked ::
-                  (MonadDOM m) => DeviceOrientationEvent -> m Double
-getAlphaUnchecked self
-  = liftDOM ((self ^. js "alpha") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/alpha MDN DeviceOrientationEvent.alpha documentation>
+getAlpha :: (MonadDOM m) => DeviceOrientationEvent -> m (Maybe Double)
+getAlpha self = liftDOM (((self ^. js "alpha") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.beta Mozilla DeviceOrientationEvent.beta documentation> 
-getBeta ::
-        (MonadDOM m) => DeviceOrientationEvent -> m (Maybe Double)
-getBeta self = liftDOM ((self ^. js "beta") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/alpha MDN DeviceOrientationEvent.alpha documentation>
+getAlphaUnsafe :: (MonadDOM m, HasCallStack) => DeviceOrientationEvent -> m Double
+getAlphaUnsafe self = liftDOM ((((self ^. js "alpha") >>= 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 ::
-              (MonadDOM m, HasCallStack) => DeviceOrientationEvent -> m Double
-getBetaUnsafe self
-  = liftDOM
-      (((self ^. js "beta") >>= fromJSVal) >>=
-         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 (((self ^. js "alpha") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.beta Mozilla DeviceOrientationEvent.beta documentation> 
-getBetaUnchecked ::
-                 (MonadDOM m) => DeviceOrientationEvent -> m Double
-getBetaUnchecked self
-  = liftDOM ((self ^. js "beta") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/beta MDN DeviceOrientationEvent.beta documentation>
+getBeta :: (MonadDOM m) => DeviceOrientationEvent -> m (Maybe Double)
+getBeta self = liftDOM (((self ^. js "beta") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.gamma Mozilla DeviceOrientationEvent.gamma documentation> 
-getGamma ::
-         (MonadDOM m) => DeviceOrientationEvent -> m (Maybe Double)
-getGamma self = liftDOM ((self ^. js "gamma") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/beta MDN DeviceOrientationEvent.beta documentation>
+getBetaUnsafe :: (MonadDOM m, HasCallStack) => DeviceOrientationEvent -> m Double
+getBetaUnsafe self = liftDOM ((((self ^. js "beta") >>= 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 ::
-               (MonadDOM m, HasCallStack) => DeviceOrientationEvent -> m Double
-getGammaUnsafe self
-  = liftDOM
-      (((self ^. js "gamma") >>= fromJSVal) >>=
-         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 (((self ^. js "beta") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.gamma Mozilla DeviceOrientationEvent.gamma documentation> 
-getGammaUnchecked ::
-                  (MonadDOM m) => DeviceOrientationEvent -> m Double
-getGammaUnchecked self
-  = liftDOM ((self ^. js "gamma") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/gamma MDN DeviceOrientationEvent.gamma documentation>
+getGamma :: (MonadDOM m) => DeviceOrientationEvent -> m (Maybe Double)
+getGamma self = liftDOM (((self ^. js "gamma") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.absolute Mozilla DeviceOrientationEvent.absolute documentation> 
-getAbsolute ::
-            (MonadDOM m) => DeviceOrientationEvent -> m (Maybe Bool)
-getAbsolute self = liftDOM ((self ^. js "absolute") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/gamma MDN DeviceOrientationEvent.gamma documentation>
+getGammaUnsafe :: (MonadDOM m, HasCallStack) => DeviceOrientationEvent -> m Double
+getGammaUnsafe self = liftDOM ((((self ^. js "gamma") >>= 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 ::
-                  (MonadDOM m, HasCallStack) => DeviceOrientationEvent -> m Bool
-getAbsoluteUnsafe self
-  = liftDOM
-      (((self ^. js "absolute") >>= fromJSVal) >>=
-         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 (((self ^. js "gamma") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.absolute Mozilla DeviceOrientationEvent.absolute documentation> 
-getAbsoluteUnchecked ::
-                     (MonadDOM m) => DeviceOrientationEvent -> m Bool
-getAbsoluteUnchecked self
-  = liftDOM ((self ^. js "absolute") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/absolute MDN DeviceOrientationEvent.absolute documentation>
+getAbsolute :: (MonadDOM m) => DeviceOrientationEvent -> m Bool
+getAbsolute self = liftDOM (((self ^. js "absolute") >>= valToBool))
diff --git a/src/JSDOM/Generated/DeviceOrientationEventInit.hs b/src/JSDOM/Generated/DeviceOrientationEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DeviceOrientationEventInit.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from orientation-event (webref). Do not edit.
+module JSDOM.Generated.DeviceOrientationEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/deviceorientation/#dictdef-deviceorientationeventinit DeviceOrientationEventInit specification>
+newDeviceOrientationEventInit :: (MonadDOM m) => m DeviceOrientationEventInit
+newDeviceOrientationEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-alpha DeviceOrientationEventInit.alpha specification>
+setAlpha :: (MonadDOM m) => DeviceOrientationEventInit -> Maybe Double -> m ()
+setAlpha self val = liftDOM (void (self ^. jss "alpha" (toJSVal val)))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-alpha DeviceOrientationEventInit.alpha specification>
+getAlpha :: (MonadDOM m) => DeviceOrientationEventInit -> m (Maybe Double)
+getAlpha self = liftDOM (((self ^. js "alpha") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-alpha DeviceOrientationEventInit.alpha specification>
+getAlphaUnsafe :: (MonadDOM m, HasCallStack) => DeviceOrientationEventInit -> m Double
+getAlphaUnsafe self = liftDOM ((((self ^. js "alpha") >>= 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 (((self ^. js "alpha") >>= valToNumber))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-beta DeviceOrientationEventInit.beta specification>
+setBeta :: (MonadDOM m) => DeviceOrientationEventInit -> Maybe Double -> m ()
+setBeta self val = liftDOM (void (self ^. jss "beta" (toJSVal val)))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-beta DeviceOrientationEventInit.beta specification>
+getBeta :: (MonadDOM m) => DeviceOrientationEventInit -> m (Maybe Double)
+getBeta self = liftDOM (((self ^. js "beta") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-beta DeviceOrientationEventInit.beta specification>
+getBetaUnsafe :: (MonadDOM m, HasCallStack) => DeviceOrientationEventInit -> m Double
+getBetaUnsafe self = liftDOM ((((self ^. js "beta") >>= 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 (((self ^. js "beta") >>= valToNumber))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-gamma DeviceOrientationEventInit.gamma specification>
+setGamma :: (MonadDOM m) => DeviceOrientationEventInit -> Maybe Double -> m ()
+setGamma self val = liftDOM (void (self ^. jss "gamma" (toJSVal val)))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-gamma DeviceOrientationEventInit.gamma specification>
+getGamma :: (MonadDOM m) => DeviceOrientationEventInit -> m (Maybe Double)
+getGamma self = liftDOM (((self ^. js "gamma") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-gamma DeviceOrientationEventInit.gamma specification>
+getGammaUnsafe :: (MonadDOM m, HasCallStack) => DeviceOrientationEventInit -> m Double
+getGammaUnsafe self = liftDOM ((((self ^. js "gamma") >>= 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 (((self ^. js "gamma") >>= valToNumber))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-absolute DeviceOrientationEventInit.absolute specification>
+setAbsolute :: (MonadDOM m) => DeviceOrientationEventInit -> Bool -> m ()
+setAbsolute self val = liftDOM (void (self ^. jss "absolute" (toJSVal val)))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-absolute DeviceOrientationEventInit.absolute specification>
+getAbsolute :: (MonadDOM m) => DeviceOrientationEventInit -> m (Maybe Bool)
+getAbsolute self = liftDOM (((self ^. js "absolute") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/deviceorientation/#dom-deviceorientationeventinit-absolute DeviceOrientationEventInit.absolute specification>
+getAbsoluteUnsafe :: (MonadDOM m, HasCallStack) => DeviceOrientationEventInit -> m Bool
+getAbsoluteUnsafe self = liftDOM ((((self ^. js "absolute") >>= 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 (((self ^. js "absolute") >>= valToBool))
diff --git a/src/JSDOM/Generated/DeviceProximityEvent.hs b/src/JSDOM/Generated/DeviceProximityEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/DeviceProximityEvent.hs
+++ /dev/null
@@ -1,43 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.DeviceProximityEvent
-       (newDeviceProximityEvent, getValue, getMin, getMax,
-        DeviceProximityEvent(..), gTypeDeviceProximityEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent Mozilla DeviceProximityEvent documentation> 
-newDeviceProximityEvent ::
-                        (MonadDOM m, ToJSString type') =>
-                          type' -> Maybe DeviceProximityEventInit -> m DeviceProximityEvent
-newDeviceProximityEvent type' eventInitDict
-  = liftDOM
-      (DeviceProximityEvent <$>
-         new (jsg "DeviceProximityEvent")
-           [toJSVal type', toJSVal eventInitDict])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent.value Mozilla DeviceProximityEvent.value documentation> 
-getValue :: (MonadDOM m) => DeviceProximityEvent -> m Double
-getValue self = liftDOM ((self ^. js "value") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent.min Mozilla DeviceProximityEvent.min documentation> 
-getMin :: (MonadDOM m) => DeviceProximityEvent -> m Double
-getMin self = liftDOM ((self ^. js "min") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent.max Mozilla DeviceProximityEvent.max documentation> 
-getMax :: (MonadDOM m) => DeviceProximityEvent -> m Double
-getMax self = liftDOM ((self ^. js "max") >>= valToNumber)
diff --git a/src/JSDOM/Generated/DigitalCredential.hs b/src/JSDOM/Generated/DigitalCredential.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DigitalCredential.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from digital-credentials (webref). Do not edit.
+module JSDOM.Generated.DigitalCredential
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+toJSON :: (MonadDOM m) => DigitalCredential -> m GObject
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+toJSON_ :: (MonadDOM m) => DigitalCredential -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredential-useragentallowsprotocol DigitalCredential.userAgentAllowsProtocol specification>
+userAgentAllowsProtocol :: (MonadDOM m, ToJSString protocol) => protocol -> m Bool
+userAgentAllowsProtocol protocol = liftDOM ((((jsg "DigitalCredential") ^. jsf "userAgentAllowsProtocol" [toJSVal protocol]) >>= valToBool))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredential-useragentallowsprotocol DigitalCredential.userAgentAllowsProtocol specification>
+userAgentAllowsProtocol_ :: (MonadDOM m, ToJSString protocol) => protocol -> m ()
+userAgentAllowsProtocol_ protocol = liftDOM (void ((jsg "DigitalCredential") ^. jsf "userAgentAllowsProtocol" [toJSVal protocol]))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredential-protocol DigitalCredential.protocol specification>
+getProtocol :: (MonadDOM m) => DigitalCredential -> m DigitalCredentialProtocol
+getProtocol self = liftDOM (((self ^. js "protocol") >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredential-data DigitalCredential.data specification>
+getData :: (MonadDOM m) => DigitalCredential -> m GObject
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DigitalCredentialCreateRequest.hs b/src/JSDOM/Generated/DigitalCredentialCreateRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DigitalCredentialCreateRequest.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from digital-credentials (webref). Do not edit.
+module JSDOM.Generated.DigitalCredentialCreateRequest
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialcreaterequest DigitalCredentialCreateRequest specification>
+newDigitalCredentialCreateRequest :: (MonadDOM m, ToJSString protocol) => protocol -> GObject -> m DigitalCredentialCreateRequest
+newDigitalCredentialCreateRequest protocol data' = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "protocol" (toJSVal protocol)) P.>> (o ^. jss "data" (toJSVal data')) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "protocol" (toJSVal val)))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialcreaterequest-protocol DigitalCredentialCreateRequest.protocol specification>
+getProtocol :: (MonadDOM m, FromJSString result) => DigitalCredentialCreateRequest -> m result
+getProtocol self = liftDOM (((self ^. js "protocol") >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialcreaterequest-data DigitalCredentialCreateRequest.data specification>
+setData :: (MonadDOM m) => DigitalCredentialCreateRequest -> GObject -> m ()
+setData self val = liftDOM (void (self ^. jss "data" (toJSVal val)))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialcreaterequest-data DigitalCredentialCreateRequest.data specification>
+getData :: (MonadDOM m) => DigitalCredentialCreateRequest -> m GObject
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DigitalCredentialCreationOptions.hs b/src/JSDOM/Generated/DigitalCredentialCreationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DigitalCredentialCreationOptions.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from digital-credentials (webref). Do not edit.
+module JSDOM.Generated.DigitalCredentialCreationOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialcreationoptions DigitalCredentialCreationOptions specification>
+newDigitalCredentialCreationOptions :: (MonadDOM m) => [DigitalCredentialCreateRequest] -> m DigitalCredentialCreationOptions
+newDigitalCredentialCreationOptions requests = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "requests" (toJSVal requests)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialcreationoptions-requests DigitalCredentialCreationOptions.requests specification>
+setRequests :: (MonadDOM m) => DigitalCredentialCreationOptions -> [DigitalCredentialCreateRequest] -> m ()
+setRequests self val = liftDOM (void (self ^. jss "requests" (toJSVal val)))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialcreationoptions-requests DigitalCredentialCreationOptions.requests specification>
+getRequests :: (MonadDOM m) => DigitalCredentialCreationOptions -> m [DigitalCredentialCreateRequest]
+getRequests self = liftDOM (((self ^. js "requests") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DigitalCredentialGetRequest.hs b/src/JSDOM/Generated/DigitalCredentialGetRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DigitalCredentialGetRequest.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from digital-credentials (webref). Do not edit.
+module JSDOM.Generated.DigitalCredentialGetRequest
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialgetrequest DigitalCredentialGetRequest specification>
+newDigitalCredentialGetRequest :: (MonadDOM m, ToJSString protocol) => protocol -> GObject -> m DigitalCredentialGetRequest
+newDigitalCredentialGetRequest protocol data' = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "protocol" (toJSVal protocol)) P.>> (o ^. jss "data" (toJSVal data')) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "protocol" (toJSVal val)))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialgetrequest-protocol DigitalCredentialGetRequest.protocol specification>
+getProtocol :: (MonadDOM m, FromJSString result) => DigitalCredentialGetRequest -> m result
+getProtocol self = liftDOM (((self ^. js "protocol") >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialgetrequest-data DigitalCredentialGetRequest.data specification>
+setData :: (MonadDOM m) => DigitalCredentialGetRequest -> GObject -> m ()
+setData self val = liftDOM (void (self ^. jss "data" (toJSVal val)))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialgetrequest-data DigitalCredentialGetRequest.data specification>
+getData :: (MonadDOM m) => DigitalCredentialGetRequest -> m GObject
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DigitalCredentialRequestOptions.hs b/src/JSDOM/Generated/DigitalCredentialRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DigitalCredentialRequestOptions.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from digital-credentials (webref). Do not edit.
+module JSDOM.Generated.DigitalCredentialRequestOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialrequestoptions DigitalCredentialRequestOptions specification>
+newDigitalCredentialRequestOptions :: (MonadDOM m) => [DigitalCredentialGetRequest] -> m DigitalCredentialRequestOptions
+newDigitalCredentialRequestOptions requests = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "requests" (toJSVal requests)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialrequestoptions-requests DigitalCredentialRequestOptions.requests specification>
+setRequests :: (MonadDOM m) => DigitalCredentialRequestOptions -> [DigitalCredentialGetRequest] -> m ()
+setRequests self val = liftDOM (void (self ^. jss "requests" (toJSVal val)))
+
+-- | <https://w3c-fedid.github.io/digital-credentials/#dom-digitalcredentialrequestoptions-requests DigitalCredentialRequestOptions.requests specification>
+getRequests :: (MonadDOM m) => DigitalCredentialRequestOptions -> m [DigitalCredentialGetRequest]
+getRequests self = liftDOM (((self ^. js "requests") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DisplayMediaStreamOptions.hs b/src/JSDOM/Generated/DisplayMediaStreamOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DisplayMediaStreamOptions.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from screen-capture (webref). Do not edit.
+module JSDOM.Generated.DisplayMediaStreamOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions DisplayMediaStreamOptions specification>
+newDisplayMediaStreamOptions :: (MonadDOM m) => m DisplayMediaStreamOptions
+newDisplayMediaStreamOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "video" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-video DisplayMediaStreamOptions.video specification>
+getVideo :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe BoolOrMediaTrackConstraints)
+getVideo self = liftDOM (((self ^. js "video") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-video DisplayMediaStreamOptions.video specification>
+getVideoUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m BoolOrMediaTrackConstraints
+getVideoUnsafe self = liftDOM ((((self ^. js "video") >>= 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 (((self ^. js "video") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "audio" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-audio DisplayMediaStreamOptions.audio specification>
+getAudio :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe BoolOrMediaTrackConstraints)
+getAudio self = liftDOM (((self ^. js "audio") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-audio DisplayMediaStreamOptions.audio specification>
+getAudioUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m BoolOrMediaTrackConstraints
+getAudioUnsafe self = liftDOM ((((self ^. js "audio") >>= 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 (((self ^. js "audio") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-controller DisplayMediaStreamOptions.controller specification>
+setController :: (MonadDOM m) => DisplayMediaStreamOptions -> CaptureController -> m ()
+setController self val = liftDOM (void (self ^. jss "controller" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-controller DisplayMediaStreamOptions.controller specification>
+getController :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe CaptureController)
+getController self = liftDOM (((self ^. js "controller") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-controller DisplayMediaStreamOptions.controller specification>
+getControllerUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m CaptureController
+getControllerUnsafe self = liftDOM ((((self ^. js "controller") >>= 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 (((self ^. js "controller") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-selfbrowsersurface DisplayMediaStreamOptions.selfBrowserSurface specification>
+setSelfBrowserSurface :: (MonadDOM m) => DisplayMediaStreamOptions -> SelfCapturePreferenceEnum -> m ()
+setSelfBrowserSurface self val = liftDOM (void (self ^. jss "selfBrowserSurface" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-selfbrowsersurface DisplayMediaStreamOptions.selfBrowserSurface specification>
+getSelfBrowserSurface :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe SelfCapturePreferenceEnum)
+getSelfBrowserSurface self = liftDOM (((self ^. js "selfBrowserSurface") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-selfbrowsersurface DisplayMediaStreamOptions.selfBrowserSurface specification>
+getSelfBrowserSurfaceUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m SelfCapturePreferenceEnum
+getSelfBrowserSurfaceUnsafe self = liftDOM ((((self ^. js "selfBrowserSurface") >>= 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 (((self ^. js "selfBrowserSurface") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-systemaudio DisplayMediaStreamOptions.systemAudio specification>
+setSystemAudio :: (MonadDOM m) => DisplayMediaStreamOptions -> SystemAudioPreferenceEnum -> m ()
+setSystemAudio self val = liftDOM (void (self ^. jss "systemAudio" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-systemaudio DisplayMediaStreamOptions.systemAudio specification>
+getSystemAudio :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe SystemAudioPreferenceEnum)
+getSystemAudio self = liftDOM (((self ^. js "systemAudio") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-systemaudio DisplayMediaStreamOptions.systemAudio specification>
+getSystemAudioUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m SystemAudioPreferenceEnum
+getSystemAudioUnsafe self = liftDOM ((((self ^. js "systemAudio") >>= 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 (((self ^. js "systemAudio") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-windowaudio DisplayMediaStreamOptions.windowAudio specification>
+setWindowAudio :: (MonadDOM m) => DisplayMediaStreamOptions -> WindowAudioPreferenceEnum -> m ()
+setWindowAudio self val = liftDOM (void (self ^. jss "windowAudio" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-windowaudio DisplayMediaStreamOptions.windowAudio specification>
+getWindowAudio :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe WindowAudioPreferenceEnum)
+getWindowAudio self = liftDOM (((self ^. js "windowAudio") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-windowaudio DisplayMediaStreamOptions.windowAudio specification>
+getWindowAudioUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m WindowAudioPreferenceEnum
+getWindowAudioUnsafe self = liftDOM ((((self ^. js "windowAudio") >>= 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 (((self ^. js "windowAudio") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-surfaceswitching DisplayMediaStreamOptions.surfaceSwitching specification>
+setSurfaceSwitching :: (MonadDOM m) => DisplayMediaStreamOptions -> SurfaceSwitchingPreferenceEnum -> m ()
+setSurfaceSwitching self val = liftDOM (void (self ^. jss "surfaceSwitching" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-surfaceswitching DisplayMediaStreamOptions.surfaceSwitching specification>
+getSurfaceSwitching :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe SurfaceSwitchingPreferenceEnum)
+getSurfaceSwitching self = liftDOM (((self ^. js "surfaceSwitching") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-surfaceswitching DisplayMediaStreamOptions.surfaceSwitching specification>
+getSurfaceSwitchingUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m SurfaceSwitchingPreferenceEnum
+getSurfaceSwitchingUnsafe self = liftDOM ((((self ^. js "surfaceSwitching") >>= 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 (((self ^. js "surfaceSwitching") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-monitortypesurfaces DisplayMediaStreamOptions.monitorTypeSurfaces specification>
+setMonitorTypeSurfaces :: (MonadDOM m) => DisplayMediaStreamOptions -> MonitorTypeSurfacesEnum -> m ()
+setMonitorTypeSurfaces self val = liftDOM (void (self ^. jss "monitorTypeSurfaces" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-monitortypesurfaces DisplayMediaStreamOptions.monitorTypeSurfaces specification>
+getMonitorTypeSurfaces :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe MonitorTypeSurfacesEnum)
+getMonitorTypeSurfaces self = liftDOM (((self ^. js "monitorTypeSurfaces") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-monitortypesurfaces DisplayMediaStreamOptions.monitorTypeSurfaces specification>
+getMonitorTypeSurfacesUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m MonitorTypeSurfacesEnum
+getMonitorTypeSurfacesUnsafe self = liftDOM ((((self ^. js "monitorTypeSurfaces") >>= 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 (((self ^. js "monitorTypeSurfaces") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-audioselection DisplayMediaStreamOptions.audioSelection specification>
+setAudioSelection :: (MonadDOM m) => DisplayMediaStreamOptions -> AudioSelectionPreferenceEnum -> m ()
+setAudioSelection self val = liftDOM (void (self ^. jss "audioSelection" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-audioselection DisplayMediaStreamOptions.audioSelection specification>
+getAudioSelection :: (MonadDOM m) => DisplayMediaStreamOptions -> m (Maybe AudioSelectionPreferenceEnum)
+getAudioSelection self = liftDOM (((self ^. js "audioSelection") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-audioselection DisplayMediaStreamOptions.audioSelection specification>
+getAudioSelectionUnsafe :: (MonadDOM m, HasCallStack) => DisplayMediaStreamOptions -> m AudioSelectionPreferenceEnum
+getAudioSelectionUnsafe self = liftDOM ((((self ^. js "audioSelection") >>= 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 (((self ^. js "audioSelection") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Document.hs b/src/JSDOM/Generated/Document.hs
--- a/src/JSDOM/Generated/Document.hs
+++ b/src/JSDOM/Generated/Document.hs
@@ -1,1529 +1,739 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.Document
-       (getAnimations, getAnimations_, newDocument, getElementsByTagName,
-        getElementsByTagName_, getElementsByTagNameNS,
-        getElementsByTagNameNS_, getElementsByClassName,
-        getElementsByClassName_, createElement, createElement_,
-        createElementNS, createElementNS_, createDocumentFragment,
-        createDocumentFragment_, createTextNode, createTextNode_,
-        createCDATASection, createCDATASection_, createComment,
-        createComment_, createProcessingInstruction,
-        createProcessingInstruction_, importNode, importNode_, adoptNode,
-        adoptNode_, createAttribute, createAttribute_, createAttributeNS,
-        createAttributeNS_, createEvent, createEvent_, createRange,
-        createRange_, createNodeIterator, createNodeIterator_,
-        createTreeWalker, createTreeWalker_, getElementsByName,
-        getElementsByName_, hasFocus, hasFocus_, execCommand, execCommand_,
-        queryCommandEnabled, queryCommandEnabled_, queryCommandIndeterm,
-        queryCommandIndeterm_, queryCommandState, queryCommandState_,
-        queryCommandSupported, queryCommandSupported_, queryCommandValue,
-        queryCommandValue_, getSelection, getSelection_,
-        getSelectionUnsafe, getSelectionUnchecked, createExpression,
-        createExpression_, createNSResolver, createNSResolver_, evaluate,
-        evaluate_, webkitExitFullscreen, webkitCancelFullScreen,
-        exitPointerLock, getOverrideStyle, getOverrideStyle_,
-        caretRangeFromPoint, caretRangeFromPoint_, getCSSCanvasContext,
-        getCSSCanvasContext_, webkitGetNamedFlows, webkitGetNamedFlows_,
-        createTouch, createTouch_, createTouchList, createTouchList_,
-        getTimeline, getImplementation, getURL, getDocumentURI, getOrigin,
-        getCompatMode, getCharacterSet, getCharset, getInputEncoding,
-        getContentType, getDoctype, getDoctypeUnsafe, getDoctypeUnchecked,
-        getDocumentElement, getDocumentElementUnsafe,
-        getDocumentElementUnchecked, 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, readyStateChange, getStyleSheets,
-        getScrollingElement, getScrollingElementUnsafe,
-        getScrollingElementUnchecked, getWebkitFullscreenEnabled,
-        getWebkitFullscreenElement, getWebkitFullscreenElementUnsafe,
-        getWebkitFullscreenElementUnchecked, getWebkitIsFullScreen,
-        getWebkitFullScreenKeyboardInputAllowed,
-        getWebkitCurrentFullScreenElement, webKitFullscreenChange,
-        webKitFullscreenError, pointerlockchange, pointerlockerror,
-        getFonts, getHidden, getVisibilityState, visibilitychange,
-        getApplets, getAnchors, getPreferredStylesheetSet,
-        getPreferredStylesheetSetUnsafe,
-        getPreferredStylesheetSetUnchecked, setSelectedStylesheetSet,
-        getSelectedStylesheetSet, getSelectedStylesheetSetUnsafe,
-        getSelectedStylesheetSetUnchecked, getXmlEncoding,
-        getXmlEncodingUnsafe, getXmlEncodingUnchecked, setXmlVersion,
-        getXmlVersion, getXmlVersionUnsafe, getXmlVersionUnchecked,
-        setXmlStandalone, getXmlStandalone, selectStart, selectionchange,
-        getRootElement, getRootElementUnsafe, getRootElementUnchecked,
-        Document(..), gTypeDocument, IsDocument, toDocument)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getAnimations Mozilla Document.getAnimations documentation> 
-getAnimations ::
-              (MonadDOM m, IsDocument self) => self -> m [Animation]
-getAnimations self
-  = liftDOM
-      (((toDocument self) ^. jsf "getAnimations" ()) >>=
-         fromJSArrayUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getAnimations Mozilla Document.getAnimations documentation> 
-getAnimations_ :: (MonadDOM m, IsDocument self) => self -> m ()
-getAnimations_ self
-  = liftDOM (void ((toDocument self) ^. jsf "getAnimations" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document Mozilla Document documentation> 
-newDocument :: (MonadDOM m) => m Document
-newDocument = liftDOM (Document <$> new (jsg "Document") ())
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagName Mozilla Document.getElementsByTagName documentation> 
-getElementsByTagName ::
-                     (MonadDOM m, IsDocument self, ToJSString qualifiedName) =>
-                       self -> qualifiedName -> m HTMLCollection
-getElementsByTagName self qualifiedName
-  = liftDOM
-      (((toDocument self) ^. jsf "getElementsByTagName"
-          [toJSVal qualifiedName])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagName Mozilla Document.getElementsByTagName documentation> 
-getElementsByTagName_ ::
-                      (MonadDOM m, IsDocument self, ToJSString qualifiedName) =>
-                        self -> qualifiedName -> m ()
-getElementsByTagName_ self qualifiedName
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "getElementsByTagName"
-            [toJSVal qualifiedName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagNameNS Mozilla Document.getElementsByTagNameNS documentation> 
-getElementsByTagNameNS ::
-                       (MonadDOM m, IsDocument self, ToJSString namespaceURI,
-                        ToJSString localName) =>
-                         self -> Maybe namespaceURI -> localName -> m HTMLCollection
-getElementsByTagNameNS self namespaceURI localName
-  = liftDOM
-      (((toDocument self) ^. jsf "getElementsByTagNameNS"
-          [toJSVal namespaceURI, toJSVal localName])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagNameNS Mozilla Document.getElementsByTagNameNS documentation> 
-getElementsByTagNameNS_ ::
-                        (MonadDOM m, IsDocument self, ToJSString namespaceURI,
-                         ToJSString localName) =>
-                          self -> Maybe namespaceURI -> localName -> m ()
-getElementsByTagNameNS_ self namespaceURI localName
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "getElementsByTagNameNS"
-            [toJSVal namespaceURI, toJSVal localName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByClassName Mozilla Document.getElementsByClassName documentation> 
-getElementsByClassName ::
-                       (MonadDOM m, IsDocument self, ToJSString classNames) =>
-                         self -> classNames -> m HTMLCollection
-getElementsByClassName self classNames
-  = liftDOM
-      (((toDocument self) ^. jsf "getElementsByClassName"
-          [toJSVal classNames])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByClassName Mozilla Document.getElementsByClassName documentation> 
-getElementsByClassName_ ::
-                        (MonadDOM m, IsDocument self, ToJSString classNames) =>
-                          self -> classNames -> m ()
-getElementsByClassName_ self classNames
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "getElementsByClassName"
-            [toJSVal classNames]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElement Mozilla Document.createElement documentation> 
-createElement ::
-              (MonadDOM m, IsDocument self, ToJSString localName) =>
-                self -> localName -> m Element
-createElement self localName
-  = liftDOM
-      (((toDocument self) ^. jsf "createElement" [toJSVal localName]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElement Mozilla Document.createElement documentation> 
-createElement_ ::
-               (MonadDOM m, IsDocument self, ToJSString localName) =>
-                 self -> localName -> m ()
-createElement_ self localName
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "createElement" [toJSVal localName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElementNS Mozilla Document.createElementNS documentation> 
-createElementNS ::
-                (MonadDOM m, IsDocument self, ToJSString namespaceURI,
-                 ToJSString qualifiedName) =>
-                  self -> Maybe namespaceURI -> qualifiedName -> m Element
-createElementNS self namespaceURI qualifiedName
-  = liftDOM
-      (((toDocument self) ^. jsf "createElementNS"
-          [toJSVal namespaceURI, toJSVal qualifiedName])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElementNS Mozilla Document.createElementNS documentation> 
-createElementNS_ ::
-                 (MonadDOM m, IsDocument self, ToJSString namespaceURI,
-                  ToJSString qualifiedName) =>
-                   self -> Maybe namespaceURI -> qualifiedName -> m ()
-createElementNS_ self namespaceURI qualifiedName
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "createElementNS"
-            [toJSVal namespaceURI, toJSVal qualifiedName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createDocumentFragment Mozilla Document.createDocumentFragment documentation> 
-createDocumentFragment ::
-                       (MonadDOM m, IsDocument self) => self -> m DocumentFragment
-createDocumentFragment self
-  = liftDOM
-      (((toDocument self) ^. jsf "createDocumentFragment" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createDocumentFragment Mozilla Document.createDocumentFragment documentation> 
-createDocumentFragment_ ::
-                        (MonadDOM m, IsDocument self) => self -> m ()
-createDocumentFragment_ self
-  = liftDOM
-      (void ((toDocument self) ^. jsf "createDocumentFragment" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTextNode Mozilla Document.createTextNode documentation> 
-createTextNode ::
-               (MonadDOM m, IsDocument self, ToJSString data') =>
-                 self -> data' -> m Text
-createTextNode self data'
-  = liftDOM
-      (((toDocument self) ^. jsf "createTextNode" [toJSVal data']) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTextNode Mozilla Document.createTextNode documentation> 
-createTextNode_ ::
-                (MonadDOM m, IsDocument self, ToJSString data') =>
-                  self -> data' -> m ()
-createTextNode_ self data'
-  = liftDOM
-      (void ((toDocument self) ^. jsf "createTextNode" [toJSVal data']))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createCDATASection Mozilla Document.createCDATASection documentation> 
-createCDATASection ::
-                   (MonadDOM m, IsDocument self, ToJSString data') =>
-                     self -> data' -> m CDATASection
-createCDATASection self data'
-  = liftDOM
-      (((toDocument self) ^. jsf "createCDATASection" [toJSVal data'])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createCDATASection Mozilla Document.createCDATASection documentation> 
-createCDATASection_ ::
-                    (MonadDOM m, IsDocument self, ToJSString data') =>
-                      self -> data' -> m ()
-createCDATASection_ self data'
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "createCDATASection" [toJSVal data']))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createComment Mozilla Document.createComment documentation> 
-createComment ::
-              (MonadDOM m, IsDocument self, ToJSString data') =>
-                self -> data' -> m Comment
-createComment self data'
-  = liftDOM
-      (((toDocument self) ^. jsf "createComment" [toJSVal data']) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createComment Mozilla Document.createComment documentation> 
-createComment_ ::
-               (MonadDOM m, IsDocument self, ToJSString data') =>
-                 self -> data' -> m ()
-createComment_ self data'
-  = liftDOM
-      (void ((toDocument self) ^. jsf "createComment" [toJSVal data']))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createProcessingInstruction Mozilla Document.createProcessingInstruction documentation> 
-createProcessingInstruction ::
-                            (MonadDOM m, IsDocument self, ToJSString target,
-                             ToJSString data') =>
-                              self -> target -> data' -> m ProcessingInstruction
-createProcessingInstruction self target data'
-  = liftDOM
-      (((toDocument self) ^. jsf "createProcessingInstruction"
-          [toJSVal target, toJSVal data'])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createProcessingInstruction Mozilla Document.createProcessingInstruction documentation> 
-createProcessingInstruction_ ::
-                             (MonadDOM m, IsDocument self, ToJSString target,
-                              ToJSString data') =>
-                               self -> target -> data' -> m ()
-createProcessingInstruction_ self target data'
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "createProcessingInstruction"
-            [toJSVal target, toJSVal data']))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.importNode Mozilla Document.importNode documentation> 
-importNode ::
-           (MonadDOM m, IsDocument self, IsNode node) =>
-             self -> node -> Bool -> m Node
-importNode self node deep
-  = liftDOM
-      (((toDocument self) ^. jsf "importNode"
-          [toJSVal node, toJSVal deep])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.importNode Mozilla Document.importNode documentation> 
-importNode_ ::
-            (MonadDOM m, IsDocument self, IsNode node) =>
-              self -> node -> Bool -> m ()
-importNode_ self node deep
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "importNode"
-            [toJSVal node, toJSVal deep]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.adoptNode Mozilla Document.adoptNode documentation> 
-adoptNode ::
-          (MonadDOM m, IsDocument self, IsNode node) =>
-            self -> node -> m Node
-adoptNode self node
-  = liftDOM
-      (((toDocument self) ^. jsf "adoptNode" [toJSVal node]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.adoptNode Mozilla Document.adoptNode documentation> 
-adoptNode_ ::
-           (MonadDOM m, IsDocument self, IsNode node) => self -> node -> m ()
-adoptNode_ self node
-  = liftDOM
-      (void ((toDocument self) ^. jsf "adoptNode" [toJSVal node]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttribute Mozilla Document.createAttribute documentation> 
-createAttribute ::
-                (MonadDOM m, IsDocument self, ToJSString localName) =>
-                  self -> localName -> m Attr
-createAttribute self localName
-  = liftDOM
-      (((toDocument self) ^. jsf "createAttribute" [toJSVal localName])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttribute Mozilla Document.createAttribute documentation> 
-createAttribute_ ::
-                 (MonadDOM m, IsDocument self, ToJSString localName) =>
-                   self -> localName -> m ()
-createAttribute_ self localName
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "createAttribute" [toJSVal localName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttributeNS Mozilla Document.createAttributeNS documentation> 
-createAttributeNS ::
-                  (MonadDOM m, IsDocument self, ToJSString namespaceURI,
-                   ToJSString qualifiedName) =>
-                    self -> Maybe namespaceURI -> qualifiedName -> m Attr
-createAttributeNS self namespaceURI qualifiedName
-  = liftDOM
-      (((toDocument self) ^. jsf "createAttributeNS"
-          [toJSVal namespaceURI, toJSVal qualifiedName])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttributeNS Mozilla Document.createAttributeNS documentation> 
-createAttributeNS_ ::
-                   (MonadDOM m, IsDocument self, ToJSString namespaceURI,
-                    ToJSString qualifiedName) =>
-                     self -> Maybe namespaceURI -> qualifiedName -> m ()
-createAttributeNS_ self namespaceURI qualifiedName
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "createAttributeNS"
-            [toJSVal namespaceURI, toJSVal qualifiedName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createEvent Mozilla Document.createEvent documentation> 
-createEvent ::
-            (MonadDOM m, IsDocument self, ToJSString type') =>
-              self -> type' -> m Event
-createEvent self type'
-  = liftDOM
-      (((toDocument self) ^. jsf "createEvent" [toJSVal type']) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createEvent Mozilla Document.createEvent documentation> 
-createEvent_ ::
-             (MonadDOM m, IsDocument self, ToJSString type') =>
-               self -> type' -> m ()
-createEvent_ self type'
-  = liftDOM
-      (void ((toDocument self) ^. jsf "createEvent" [toJSVal type']))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createRange Mozilla Document.createRange documentation> 
-createRange :: (MonadDOM m, IsDocument self) => self -> m Range
-createRange self
-  = liftDOM
-      (((toDocument self) ^. jsf "createRange" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createRange Mozilla Document.createRange documentation> 
-createRange_ :: (MonadDOM m, IsDocument self) => self -> m ()
-createRange_ self
-  = liftDOM (void ((toDocument self) ^. jsf "createRange" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNodeIterator Mozilla Document.createNodeIterator documentation> 
-createNodeIterator ::
-                   (MonadDOM m, IsDocument self, IsNode root) =>
-                     self -> root -> Maybe Word -> Maybe NodeFilter -> m NodeIterator
-createNodeIterator self root whatToShow filter
-  = liftDOM
-      (((toDocument self) ^. jsf "createNodeIterator"
-          [toJSVal root, toJSVal whatToShow, toJSVal filter])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNodeIterator Mozilla Document.createNodeIterator documentation> 
-createNodeIterator_ ::
-                    (MonadDOM m, IsDocument self, IsNode root) =>
-                      self -> root -> Maybe Word -> Maybe NodeFilter -> m ()
-createNodeIterator_ self root whatToShow filter
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "createNodeIterator"
-            [toJSVal root, toJSVal whatToShow, toJSVal filter]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTreeWalker Mozilla Document.createTreeWalker documentation> 
-createTreeWalker ::
-                 (MonadDOM m, IsDocument self, IsNode root) =>
-                   self -> root -> Maybe Word -> Maybe NodeFilter -> m TreeWalker
-createTreeWalker self root whatToShow filter
-  = liftDOM
-      (((toDocument self) ^. jsf "createTreeWalker"
-          [toJSVal root, toJSVal whatToShow, toJSVal filter])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTreeWalker Mozilla Document.createTreeWalker documentation> 
-createTreeWalker_ ::
-                  (MonadDOM m, IsDocument self, IsNode root) =>
-                    self -> root -> Maybe Word -> Maybe NodeFilter -> m ()
-createTreeWalker_ self root whatToShow filter
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "createTreeWalker"
-            [toJSVal root, toJSVal whatToShow, toJSVal filter]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByName Mozilla Document.getElementsByName documentation> 
-getElementsByName ::
-                  (MonadDOM m, IsDocument self, ToJSString elementName) =>
-                    self -> elementName -> m NodeList
-getElementsByName self elementName
-  = liftDOM
-      (((toDocument self) ^. jsf "getElementsByName"
-          [toJSVal elementName])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByName Mozilla Document.getElementsByName documentation> 
-getElementsByName_ ::
-                   (MonadDOM m, IsDocument self, ToJSString elementName) =>
-                     self -> elementName -> m ()
-getElementsByName_ self elementName
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "getElementsByName"
-            [toJSVal elementName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.hasFocus Mozilla Document.hasFocus documentation> 
-hasFocus :: (MonadDOM m, IsDocument self) => self -> m Bool
-hasFocus self
-  = liftDOM (((toDocument self) ^. jsf "hasFocus" ()) >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.hasFocus Mozilla Document.hasFocus documentation> 
-hasFocus_ :: (MonadDOM m, IsDocument self) => self -> m ()
-hasFocus_ self
-  = liftDOM (void ((toDocument self) ^. jsf "hasFocus" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.execCommand Mozilla Document.execCommand documentation> 
-execCommand ::
-            (MonadDOM m, IsDocument self, ToJSString commandId,
-             ToJSString value) =>
-              self -> commandId -> Bool -> Maybe value -> m Bool
-execCommand self commandId showUI value
-  = liftDOM
-      (((toDocument self) ^. jsf "execCommand"
-          [toJSVal commandId, toJSVal showUI, toJSVal value])
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.execCommand Mozilla Document.execCommand documentation> 
-execCommand_ ::
-             (MonadDOM m, IsDocument self, ToJSString commandId,
-              ToJSString value) =>
-               self -> commandId -> Bool -> Maybe value -> m ()
-execCommand_ self commandId showUI value
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "execCommand"
-            [toJSVal commandId, toJSVal showUI, toJSVal value]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandEnabled Mozilla Document.queryCommandEnabled documentation> 
-queryCommandEnabled ::
-                    (MonadDOM m, IsDocument self, ToJSString commandId) =>
-                      self -> commandId -> m Bool
-queryCommandEnabled self commandId
-  = liftDOM
-      (((toDocument self) ^. jsf "queryCommandEnabled"
-          [toJSVal commandId])
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandEnabled Mozilla Document.queryCommandEnabled documentation> 
-queryCommandEnabled_ ::
-                     (MonadDOM m, IsDocument self, ToJSString commandId) =>
-                       self -> commandId -> m ()
-queryCommandEnabled_ self commandId
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "queryCommandEnabled"
-            [toJSVal commandId]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandIndeterm Mozilla Document.queryCommandIndeterm documentation> 
-queryCommandIndeterm ::
-                     (MonadDOM m, IsDocument self, ToJSString commandId) =>
-                       self -> commandId -> m Bool
-queryCommandIndeterm self commandId
-  = liftDOM
-      (((toDocument self) ^. jsf "queryCommandIndeterm"
-          [toJSVal commandId])
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandIndeterm Mozilla Document.queryCommandIndeterm documentation> 
-queryCommandIndeterm_ ::
-                      (MonadDOM m, IsDocument self, ToJSString commandId) =>
-                        self -> commandId -> m ()
-queryCommandIndeterm_ self commandId
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "queryCommandIndeterm"
-            [toJSVal commandId]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandState Mozilla Document.queryCommandState documentation> 
-queryCommandState ::
-                  (MonadDOM m, IsDocument self, ToJSString commandId) =>
-                    self -> commandId -> m Bool
-queryCommandState self commandId
-  = liftDOM
-      (((toDocument self) ^. jsf "queryCommandState" [toJSVal commandId])
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandState Mozilla Document.queryCommandState documentation> 
-queryCommandState_ ::
-                   (MonadDOM m, IsDocument self, ToJSString commandId) =>
-                     self -> commandId -> m ()
-queryCommandState_ self commandId
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "queryCommandState" [toJSVal commandId]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandSupported Mozilla Document.queryCommandSupported documentation> 
-queryCommandSupported ::
-                      (MonadDOM m, IsDocument self, ToJSString commandId) =>
-                        self -> commandId -> m Bool
-queryCommandSupported self commandId
-  = liftDOM
-      (((toDocument self) ^. jsf "queryCommandSupported"
-          [toJSVal commandId])
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandSupported Mozilla Document.queryCommandSupported documentation> 
-queryCommandSupported_ ::
-                       (MonadDOM m, IsDocument self, ToJSString commandId) =>
-                         self -> commandId -> m ()
-queryCommandSupported_ self commandId
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "queryCommandSupported"
-            [toJSVal commandId]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandValue Mozilla Document.queryCommandValue documentation> 
-queryCommandValue ::
-                  (MonadDOM m, IsDocument self, ToJSString commandId,
-                   FromJSString result) =>
-                    self -> commandId -> m result
-queryCommandValue self commandId
-  = liftDOM
-      (((toDocument self) ^. jsf "queryCommandValue" [toJSVal commandId])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandValue Mozilla Document.queryCommandValue documentation> 
-queryCommandValue_ ::
-                   (MonadDOM m, IsDocument self, ToJSString commandId) =>
-                     self -> commandId -> m ()
-queryCommandValue_ self commandId
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "queryCommandValue" [toJSVal commandId]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getSelection Mozilla Document.getSelection documentation> 
-getSelection ::
-             (MonadDOM m, IsDocument self) => self -> m (Maybe Selection)
-getSelection self
-  = liftDOM
-      (((toDocument self) ^. jsf "getSelection" ()) >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getSelection Mozilla Document.getSelection documentation> 
-getSelection_ :: (MonadDOM m, IsDocument self) => self -> m ()
-getSelection_ self
-  = liftDOM (void ((toDocument self) ^. jsf "getSelection" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getSelection Mozilla Document.getSelection documentation> 
-getSelectionUnsafe ::
-                   (MonadDOM m, IsDocument self, HasCallStack) => self -> m Selection
-getSelectionUnsafe self
-  = liftDOM
-      ((((toDocument self) ^. jsf "getSelection" ()) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getSelection Mozilla Document.getSelection documentation> 
-getSelectionUnchecked ::
-                      (MonadDOM m, IsDocument self) => self -> m Selection
-getSelectionUnchecked self
-  = liftDOM
-      (((toDocument self) ^. jsf "getSelection" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createExpression Mozilla Document.createExpression documentation> 
-createExpression ::
-                 (MonadDOM m, IsDocument self, ToJSString expression) =>
-                   self ->
-                     Maybe expression -> Maybe XPathNSResolver -> m XPathExpression
-createExpression self expression resolver
-  = liftDOM
-      (((toDocument self) ^. jsf "createExpression"
-          [toJSVal expression, toJSVal resolver])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createExpression Mozilla Document.createExpression documentation> 
-createExpression_ ::
-                  (MonadDOM m, IsDocument self, ToJSString expression) =>
-                    self -> Maybe expression -> Maybe XPathNSResolver -> m ()
-createExpression_ self expression resolver
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "createExpression"
-            [toJSVal expression, toJSVal resolver]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNSResolver Mozilla Document.createNSResolver documentation> 
-createNSResolver ::
-                 (MonadDOM m, IsDocument self, IsNode nodeResolver) =>
-                   self -> Maybe nodeResolver -> m XPathNSResolver
-createNSResolver self nodeResolver
-  = liftDOM
-      (((toDocument self) ^. jsf "createNSResolver"
-          [toJSVal nodeResolver])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNSResolver Mozilla Document.createNSResolver documentation> 
-createNSResolver_ ::
-                  (MonadDOM m, IsDocument self, IsNode nodeResolver) =>
-                    self -> Maybe nodeResolver -> m ()
-createNSResolver_ self nodeResolver
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "createNSResolver"
-            [toJSVal nodeResolver]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.evaluate Mozilla Document.evaluate documentation> 
-evaluate ::
-         (MonadDOM 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
-  = liftDOM
-      (((toDocument self) ^. jsf "evaluate"
-          [toJSVal expression, toJSVal contextNode, toJSVal resolver,
-           toJSVal type', toJSVal inResult])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.evaluate Mozilla Document.evaluate documentation> 
-evaluate_ ::
-          (MonadDOM 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
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "evaluate"
-            [toJSVal expression, toJSVal contextNode, toJSVal resolver,
-             toJSVal type', toJSVal inResult]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitExitFullscreen Mozilla Document.webkitExitFullscreen documentation> 
-webkitExitFullscreen ::
-                     (MonadDOM m, IsDocument self) => self -> m ()
-webkitExitFullscreen self
-  = liftDOM
-      (void ((toDocument self) ^. jsf "webkitExitFullscreen" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitCancelFullScreen Mozilla Document.webkitCancelFullScreen documentation> 
-webkitCancelFullScreen ::
-                       (MonadDOM m, IsDocument self) => self -> m ()
-webkitCancelFullScreen self
-  = liftDOM
-      (void ((toDocument self) ^. jsf "webkitCancelFullScreen" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.exitPointerLock Mozilla Document.exitPointerLock documentation> 
-exitPointerLock :: (MonadDOM m, IsDocument self) => self -> m ()
-exitPointerLock self
-  = liftDOM (void ((toDocument self) ^. jsf "exitPointerLock" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getOverrideStyle Mozilla Document.getOverrideStyle documentation> 
-getOverrideStyle ::
-                 (MonadDOM m, IsDocument self, IsElement element,
-                  ToJSString pseudoElement) =>
-                   self ->
-                     Maybe element -> Maybe pseudoElement -> m CSSStyleDeclaration
-getOverrideStyle self element pseudoElement
-  = liftDOM
-      (((toDocument self) ^. jsf "getOverrideStyle"
-          [toJSVal element, toJSVal pseudoElement])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getOverrideStyle Mozilla Document.getOverrideStyle documentation> 
-getOverrideStyle_ ::
-                  (MonadDOM m, IsDocument self, IsElement element,
-                   ToJSString pseudoElement) =>
-                    self -> Maybe element -> Maybe pseudoElement -> m ()
-getOverrideStyle_ self element pseudoElement
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "getOverrideStyle"
-            [toJSVal element, toJSVal pseudoElement]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.caretRangeFromPoint Mozilla Document.caretRangeFromPoint documentation> 
-caretRangeFromPoint ::
-                    (MonadDOM m, IsDocument self) =>
-                      self -> Maybe Int -> Maybe Int -> m Range
-caretRangeFromPoint self x y
-  = liftDOM
-      (((toDocument self) ^. jsf "caretRangeFromPoint"
-          [toJSVal x, toJSVal y])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.caretRangeFromPoint Mozilla Document.caretRangeFromPoint documentation> 
-caretRangeFromPoint_ ::
-                     (MonadDOM m, IsDocument self) =>
-                       self -> Maybe Int -> Maybe Int -> m ()
-caretRangeFromPoint_ self x y
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "caretRangeFromPoint"
-            [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getCSSCanvasContext Mozilla Document.getCSSCanvasContext documentation> 
-getCSSCanvasContext ::
-                    (MonadDOM m, IsDocument self, ToJSString contextId,
-                     ToJSString name) =>
-                      self -> contextId -> name -> Int -> Int -> m RenderingContext
-getCSSCanvasContext self contextId name width height
-  = liftDOM
-      (((toDocument self) ^. jsf "getCSSCanvasContext"
-          [toJSVal contextId, toJSVal name, toJSVal width, toJSVal height])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getCSSCanvasContext Mozilla Document.getCSSCanvasContext documentation> 
-getCSSCanvasContext_ ::
-                     (MonadDOM m, IsDocument self, ToJSString contextId,
-                      ToJSString name) =>
-                       self -> contextId -> name -> Int -> Int -> m ()
-getCSSCanvasContext_ self contextId name width height
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "getCSSCanvasContext"
-            [toJSVal contextId, toJSVal name, toJSVal width, toJSVal height]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitGetNamedFlows Mozilla Document.webkitGetNamedFlows documentation> 
-webkitGetNamedFlows ::
-                    (MonadDOM m, IsDocument self) => self -> m DOMNamedFlowCollection
-webkitGetNamedFlows self
-  = liftDOM
-      (((toDocument self) ^. jsf "webkitGetNamedFlows" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitGetNamedFlows Mozilla Document.webkitGetNamedFlows documentation> 
-webkitGetNamedFlows_ ::
-                     (MonadDOM m, IsDocument self) => self -> m ()
-webkitGetNamedFlows_ self
-  = liftDOM
-      (void ((toDocument self) ^. jsf "webkitGetNamedFlows" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouch Mozilla Document.createTouch documentation> 
-createTouch ::
-            (MonadDOM 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
-  = liftDOM
-      (((toDocument self) ^. jsf "createTouch"
-          [toJSVal window, toJSVal target, toJSVal identifier, toJSVal pageX,
-           toJSVal pageY, toJSVal screenX, toJSVal screenY,
-           toJSVal webkitRadiusX, toJSVal webkitRadiusY,
-           toJSVal webkitRotationAngle, toJSVal webkitForce])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouch Mozilla Document.createTouch documentation> 
-createTouch_ ::
-             (MonadDOM 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
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "createTouch"
-            [toJSVal window, toJSVal target, toJSVal identifier, toJSVal pageX,
-             toJSVal pageY, toJSVal screenX, toJSVal screenY,
-             toJSVal webkitRadiusX, toJSVal webkitRadiusY,
-             toJSVal webkitRotationAngle, toJSVal webkitForce]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouchList Mozilla Document.createTouchList documentation> 
-createTouchList ::
-                (MonadDOM m, IsDocument self) => self -> [Touch] -> m TouchList
-createTouchList self touches
-  = liftDOM
-      (((toDocument self) ^. jsf "createTouchList"
-          [toJSVal (array touches)])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouchList Mozilla Document.createTouchList documentation> 
-createTouchList_ ::
-                 (MonadDOM m, IsDocument self) => self -> [Touch] -> m ()
-createTouchList_ self touches
-  = liftDOM
-      (void
-         ((toDocument self) ^. jsf "createTouchList"
-            [toJSVal (array touches)]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.timeline Mozilla Document.timeline documentation> 
-getTimeline ::
-            (MonadDOM m, IsDocument self) => self -> m DocumentTimeline
-getTimeline self
-  = liftDOM
-      (((toDocument self) ^. js "timeline") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.implementation Mozilla Document.implementation documentation> 
-getImplementation ::
-                  (MonadDOM m, IsDocument self) => self -> m DOMImplementation
-getImplementation self
-  = liftDOM
-      (((toDocument self) ^. js "implementation") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.URL Mozilla Document.URL documentation> 
-getURL ::
-       (MonadDOM m, IsDocument self, FromJSString result) =>
-         self -> m result
-getURL self
-  = liftDOM (((toDocument self) ^. js "URL") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentURI Mozilla Document.documentURI documentation> 
-getDocumentURI ::
-               (MonadDOM m, IsDocument self, FromJSString result) =>
-                 self -> m result
-getDocumentURI self
-  = liftDOM
-      (((toDocument self) ^. js "documentURI") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.origin Mozilla Document.origin documentation> 
-getOrigin ::
-          (MonadDOM m, IsDocument self, FromJSString result) =>
-            self -> m result
-getOrigin self
-  = liftDOM
-      (((toDocument self) ^. js "origin") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.compatMode Mozilla Document.compatMode documentation> 
-getCompatMode ::
-              (MonadDOM m, IsDocument self, FromJSString result) =>
-                self -> m result
-getCompatMode self
-  = liftDOM
-      (((toDocument self) ^. js "compatMode") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.characterSet Mozilla Document.characterSet documentation> 
-getCharacterSet ::
-                (MonadDOM m, IsDocument self, FromJSString result) =>
-                  self -> m result
-getCharacterSet self
-  = liftDOM
-      (((toDocument self) ^. js "characterSet") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.charset Mozilla Document.charset documentation> 
-getCharset ::
-           (MonadDOM m, IsDocument self, FromJSString result) =>
-             self -> m result
-getCharset self
-  = liftDOM
-      (((toDocument self) ^. js "charset") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.inputEncoding Mozilla Document.inputEncoding documentation> 
-getInputEncoding ::
-                 (MonadDOM m, IsDocument self, FromJSString result) =>
-                   self -> m result
-getInputEncoding self
-  = liftDOM
-      (((toDocument self) ^. js "inputEncoding") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.contentType Mozilla Document.contentType documentation> 
-getContentType ::
-               (MonadDOM m, IsDocument self, FromJSString result) =>
-                 self -> m result
-getContentType self
-  = liftDOM
-      (((toDocument self) ^. js "contentType") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.doctype Mozilla Document.doctype documentation> 
-getDoctype ::
-           (MonadDOM m, IsDocument self) => self -> m (Maybe DocumentType)
-getDoctype self
-  = liftDOM (((toDocument self) ^. js "doctype") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.doctype Mozilla Document.doctype documentation> 
-getDoctypeUnsafe ::
-                 (MonadDOM m, IsDocument self, HasCallStack) =>
-                   self -> m DocumentType
-getDoctypeUnsafe self
-  = liftDOM
-      ((((toDocument self) ^. js "doctype") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.doctype Mozilla Document.doctype documentation> 
-getDoctypeUnchecked ::
-                    (MonadDOM m, IsDocument self) => self -> m DocumentType
-getDoctypeUnchecked self
-  = liftDOM
-      (((toDocument self) ^. js "doctype") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement Mozilla Document.documentElement documentation> 
-getDocumentElement ::
-                   (MonadDOM m, IsDocument self) => self -> m (Maybe Element)
-getDocumentElement self
-  = liftDOM
-      (((toDocument self) ^. js "documentElement") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement Mozilla Document.documentElement documentation> 
-getDocumentElementUnsafe ::
-                         (MonadDOM m, IsDocument self, HasCallStack) => self -> m Element
-getDocumentElementUnsafe self
-  = liftDOM
-      ((((toDocument self) ^. js "documentElement") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement Mozilla Document.documentElement documentation> 
-getDocumentElementUnchecked ::
-                            (MonadDOM m, IsDocument self) => self -> m Element
-getDocumentElementUnchecked self
-  = liftDOM
-      (((toDocument self) ^. js "documentElement") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.location Mozilla Document.location documentation> 
-getLocation ::
-            (MonadDOM m, IsDocument self) => self -> m (Maybe Location)
-getLocation self
-  = liftDOM (((toDocument self) ^. js "location") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.location Mozilla Document.location documentation> 
-getLocationUnsafe ::
-                  (MonadDOM m, IsDocument self, HasCallStack) => self -> m Location
-getLocationUnsafe self
-  = liftDOM
-      ((((toDocument self) ^. js "location") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.location Mozilla Document.location documentation> 
-getLocationUnchecked ::
-                     (MonadDOM m, IsDocument self) => self -> m Location
-getLocationUnchecked self
-  = liftDOM
-      (((toDocument self) ^. js "location") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.domain Mozilla Document.domain documentation> 
-setDomain ::
-          (MonadDOM m, IsDocument self, ToJSString val) =>
-            self -> val -> m ()
-setDomain self val
-  = liftDOM ((toDocument self) ^. jss "domain" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.domain Mozilla Document.domain documentation> 
-getDomain ::
-          (MonadDOM m, IsDocument self, FromJSString result) =>
-            self -> m result
-getDomain self
-  = liftDOM
-      (((toDocument self) ^. js "domain") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.referrer Mozilla Document.referrer documentation> 
-getReferrer ::
-            (MonadDOM m, IsDocument self, FromJSString result) =>
-              self -> m result
-getReferrer self
-  = liftDOM
-      (((toDocument self) ^. js "referrer") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.cookie Mozilla Document.cookie documentation> 
-setCookie ::
-          (MonadDOM m, IsDocument self, ToJSString val) =>
-            self -> val -> m ()
-setCookie self val
-  = liftDOM ((toDocument self) ^. jss "cookie" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.cookie Mozilla Document.cookie documentation> 
-getCookie ::
-          (MonadDOM m, IsDocument self, FromJSString result) =>
-            self -> m result
-getCookie self
-  = liftDOM
-      (((toDocument self) ^. js "cookie") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.lastModified Mozilla Document.lastModified documentation> 
-getLastModified ::
-                (MonadDOM m, IsDocument self, FromJSString result) =>
-                  self -> m result
-getLastModified self
-  = liftDOM
-      (((toDocument self) ^. js "lastModified") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.readyState Mozilla Document.readyState documentation> 
-getReadyState ::
-              (MonadDOM m, IsDocument self) => self -> m DocumentReadyState
-getReadyState self
-  = liftDOM
-      (((toDocument self) ^. js "readyState") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.title Mozilla Document.title documentation> 
-setTitle ::
-         (MonadDOM m, IsDocument self, ToJSString val) =>
-           self -> val -> m ()
-setTitle self val
-  = liftDOM ((toDocument self) ^. jss "title" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.title Mozilla Document.title documentation> 
-getTitle ::
-         (MonadDOM m, IsDocument self, FromJSString result) =>
-           self -> m result
-getTitle self
-  = liftDOM
-      (((toDocument self) ^. js "title") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.dir Mozilla Document.dir documentation> 
-setDir ::
-       (MonadDOM m, IsDocument self, ToJSString val) =>
-         self -> val -> m ()
-setDir self val
-  = liftDOM ((toDocument self) ^. jss "dir" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.dir Mozilla Document.dir documentation> 
-getDir ::
-       (MonadDOM m, IsDocument self, FromJSString result) =>
-         self -> m result
-getDir self
-  = liftDOM (((toDocument self) ^. js "dir") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.body Mozilla Document.body documentation> 
-setBody ::
-        (MonadDOM m, IsDocument self, IsHTMLElement val) =>
-          self -> Maybe val -> m ()
-setBody self val
-  = liftDOM ((toDocument self) ^. jss "body" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.body Mozilla Document.body documentation> 
-getBody ::
-        (MonadDOM m, IsDocument self) => self -> m (Maybe HTMLElement)
-getBody self
-  = liftDOM (((toDocument self) ^. js "body") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.body Mozilla Document.body documentation> 
-getBodyUnsafe ::
-              (MonadDOM m, IsDocument self, HasCallStack) =>
-                self -> m HTMLElement
-getBodyUnsafe self
-  = liftDOM
-      ((((toDocument self) ^. js "body") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.body Mozilla Document.body documentation> 
-getBodyUnchecked ::
-                 (MonadDOM m, IsDocument self) => self -> m HTMLElement
-getBodyUnchecked self
-  = liftDOM (((toDocument self) ^. js "body") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.head Mozilla Document.head documentation> 
-getHead ::
-        (MonadDOM m, IsDocument self) => self -> m (Maybe HTMLHeadElement)
-getHead self
-  = liftDOM (((toDocument self) ^. js "head") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.head Mozilla Document.head documentation> 
-getHeadUnsafe ::
-              (MonadDOM m, IsDocument self, HasCallStack) =>
-                self -> m HTMLHeadElement
-getHeadUnsafe self
-  = liftDOM
-      ((((toDocument self) ^. js "head") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.head Mozilla Document.head documentation> 
-getHeadUnchecked ::
-                 (MonadDOM m, IsDocument self) => self -> m HTMLHeadElement
-getHeadUnchecked self
-  = liftDOM (((toDocument self) ^. js "head") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.images Mozilla Document.images documentation> 
-getImages ::
-          (MonadDOM m, IsDocument self) => self -> m HTMLCollection
-getImages self
-  = liftDOM
-      (((toDocument self) ^. js "images") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.embeds Mozilla Document.embeds documentation> 
-getEmbeds ::
-          (MonadDOM m, IsDocument self) => self -> m HTMLCollection
-getEmbeds self
-  = liftDOM
-      (((toDocument self) ^. js "embeds") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.plugins Mozilla Document.plugins documentation> 
-getPlugins ::
-           (MonadDOM m, IsDocument self) => self -> m HTMLCollection
-getPlugins self
-  = liftDOM
-      (((toDocument self) ^. js "plugins") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.links Mozilla Document.links documentation> 
-getLinks ::
-         (MonadDOM m, IsDocument self) => self -> m HTMLCollection
-getLinks self
-  = liftDOM
-      (((toDocument self) ^. js "links") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.forms Mozilla Document.forms documentation> 
-getForms ::
-         (MonadDOM m, IsDocument self) => self -> m HTMLCollection
-getForms self
-  = liftDOM
-      (((toDocument self) ^. js "forms") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.scripts Mozilla Document.scripts documentation> 
-getScripts ::
-           (MonadDOM m, IsDocument self) => self -> m HTMLCollection
-getScripts self
-  = liftDOM
-      (((toDocument self) ^. js "scripts") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.currentScript Mozilla Document.currentScript documentation> 
-getCurrentScript ::
-                 (MonadDOM m, IsDocument self) =>
-                   self -> m (Maybe HTMLScriptElement)
-getCurrentScript self
-  = liftDOM (((toDocument self) ^. js "currentScript") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.currentScript Mozilla Document.currentScript documentation> 
-getCurrentScriptUnsafe ::
-                       (MonadDOM m, IsDocument self, HasCallStack) =>
-                         self -> m HTMLScriptElement
-getCurrentScriptUnsafe self
-  = liftDOM
-      ((((toDocument self) ^. js "currentScript") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.currentScript Mozilla Document.currentScript documentation> 
-getCurrentScriptUnchecked ::
-                          (MonadDOM m, IsDocument self) => self -> m HTMLScriptElement
-getCurrentScriptUnchecked self
-  = liftDOM
-      (((toDocument self) ^. js "currentScript") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.defaultView Mozilla Document.defaultView documentation> 
-getDefaultView ::
-               (MonadDOM m, IsDocument self) => self -> m (Maybe Window)
-getDefaultView self
-  = liftDOM (((toDocument self) ^. js "defaultView") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.defaultView Mozilla Document.defaultView documentation> 
-getDefaultViewUnsafe ::
-                     (MonadDOM m, IsDocument self, HasCallStack) => self -> m Window
-getDefaultViewUnsafe self
-  = liftDOM
-      ((((toDocument self) ^. js "defaultView") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.defaultView Mozilla Document.defaultView documentation> 
-getDefaultViewUnchecked ::
-                        (MonadDOM m, IsDocument self) => self -> m Window
-getDefaultViewUnchecked self
-  = liftDOM
-      (((toDocument self) ^. js "defaultView") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.designMode Mozilla Document.designMode documentation> 
-setDesignMode ::
-              (MonadDOM m, IsDocument self, ToJSString val) =>
-                self -> val -> m ()
-setDesignMode self val
-  = liftDOM ((toDocument self) ^. jss "designMode" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.designMode Mozilla Document.designMode documentation> 
-getDesignMode ::
-              (MonadDOM m, IsDocument self, FromJSString result) =>
-                self -> m result
-getDesignMode self
-  = liftDOM
-      (((toDocument self) ^. js "designMode") >>= fromJSValUnchecked)
-
--- | <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")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.styleSheets Mozilla Document.styleSheets documentation> 
-getStyleSheets ::
-               (MonadDOM m, IsDocument self) => self -> m StyleSheetList
-getStyleSheets self
-  = liftDOM
-      (((toDocument self) ^. js "styleSheets") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.scrollingElement Mozilla Document.scrollingElement documentation> 
-getScrollingElement ::
-                    (MonadDOM m, IsDocument self) => self -> m (Maybe Element)
-getScrollingElement self
-  = liftDOM
-      (((toDocument self) ^. js "scrollingElement") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.scrollingElement Mozilla Document.scrollingElement documentation> 
-getScrollingElementUnsafe ::
-                          (MonadDOM m, IsDocument self, HasCallStack) => self -> m Element
-getScrollingElementUnsafe self
-  = liftDOM
-      ((((toDocument self) ^. js "scrollingElement") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.scrollingElement Mozilla Document.scrollingElement documentation> 
-getScrollingElementUnchecked ::
-                             (MonadDOM m, IsDocument self) => self -> m Element
-getScrollingElementUnchecked self
-  = liftDOM
-      (((toDocument self) ^. js "scrollingElement") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullscreenEnabled Mozilla Document.webkitFullscreenEnabled documentation> 
-getWebkitFullscreenEnabled ::
-                           (MonadDOM m, IsDocument self) => self -> m Bool
-getWebkitFullscreenEnabled self
-  = liftDOM
-      (((toDocument self) ^. js "webkitFullscreenEnabled") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullscreenElement Mozilla Document.webkitFullscreenElement documentation> 
-getWebkitFullscreenElement ::
-                           (MonadDOM m, IsDocument self) => self -> m (Maybe Element)
-getWebkitFullscreenElement self
-  = liftDOM
-      (((toDocument self) ^. js "webkitFullscreenElement") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullscreenElement Mozilla Document.webkitFullscreenElement documentation> 
-getWebkitFullscreenElementUnsafe ::
-                                 (MonadDOM m, IsDocument self, HasCallStack) => self -> m Element
-getWebkitFullscreenElementUnsafe self
-  = liftDOM
-      ((((toDocument self) ^. js "webkitFullscreenElement") >>=
-          fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullscreenElement Mozilla Document.webkitFullscreenElement documentation> 
-getWebkitFullscreenElementUnchecked ::
-                                    (MonadDOM m, IsDocument self) => self -> m Element
-getWebkitFullscreenElementUnchecked self
-  = liftDOM
-      (((toDocument self) ^. js "webkitFullscreenElement") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitIsFullScreen Mozilla Document.webkitIsFullScreen documentation> 
-getWebkitIsFullScreen ::
-                      (MonadDOM m, IsDocument self) => self -> m Bool
-getWebkitIsFullScreen self
-  = liftDOM
-      (((toDocument self) ^. js "webkitIsFullScreen") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullScreenKeyboardInputAllowed Mozilla Document.webkitFullScreenKeyboardInputAllowed documentation> 
-getWebkitFullScreenKeyboardInputAllowed ::
-                                        (MonadDOM m, IsDocument self) => self -> m Bool
-getWebkitFullScreenKeyboardInputAllowed self
-  = liftDOM
-      (((toDocument self) ^. js "webkitFullScreenKeyboardInputAllowed")
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitCurrentFullScreenElement Mozilla Document.webkitCurrentFullScreenElement documentation> 
-getWebkitCurrentFullScreenElement ::
-                                  (MonadDOM m, IsDocument self) => self -> m Element
-getWebkitCurrentFullScreenElement self
-  = liftDOM
-      (((toDocument self) ^. js "webkitCurrentFullScreenElement") >>=
-         fromJSValUnchecked)
-
--- | <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")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.fonts Mozilla Document.fonts documentation> 
-getFonts :: (MonadDOM m, IsDocument self) => self -> m FontFaceSet
-getFonts self
-  = liftDOM
-      (((toDocument self) ^. js "fonts") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.hidden Mozilla Document.hidden documentation> 
-getHidden :: (MonadDOM m, IsDocument self) => self -> m Bool
-getHidden self
-  = liftDOM (((toDocument self) ^. js "hidden") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.visibilityState Mozilla Document.visibilityState documentation> 
-getVisibilityState ::
-                   (MonadDOM m, IsDocument self) => self -> m VisibilityState
-getVisibilityState self
-  = liftDOM
-      (((toDocument self) ^. js "visibilityState") >>=
-         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")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.applets Mozilla Document.applets documentation> 
-getApplets ::
-           (MonadDOM m, IsDocument self) => self -> m HTMLCollection
-getApplets self
-  = liftDOM
-      (((toDocument self) ^. js "applets") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.anchors Mozilla Document.anchors documentation> 
-getAnchors ::
-           (MonadDOM m, IsDocument self) => self -> m HTMLCollection
-getAnchors self
-  = liftDOM
-      (((toDocument self) ^. js "anchors") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.preferredStylesheetSet Mozilla Document.preferredStylesheetSet documentation> 
-getPreferredStylesheetSet ::
-                          (MonadDOM m, IsDocument self, FromJSString result) =>
-                            self -> m (Maybe result)
-getPreferredStylesheetSet self
-  = liftDOM
-      (((toDocument self) ^. js "preferredStylesheetSet") >>=
-         fromMaybeJSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.preferredStylesheetSet Mozilla Document.preferredStylesheetSet documentation> 
-getPreferredStylesheetSetUnsafe ::
-                                (MonadDOM m, IsDocument self, HasCallStack, FromJSString result) =>
-                                  self -> m result
-getPreferredStylesheetSetUnsafe self
-  = liftDOM
-      ((((toDocument self) ^. js "preferredStylesheetSet") >>=
-          fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.preferredStylesheetSet Mozilla Document.preferredStylesheetSet documentation> 
-getPreferredStylesheetSetUnchecked ::
-                                   (MonadDOM m, IsDocument self, FromJSString result) =>
-                                     self -> m result
-getPreferredStylesheetSetUnchecked self
-  = liftDOM
-      (((toDocument self) ^. js "preferredStylesheetSet") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
-setSelectedStylesheetSet ::
-                         (MonadDOM m, IsDocument self, ToJSString val) =>
-                           self -> Maybe val -> m ()
-setSelectedStylesheetSet self val
-  = liftDOM
-      ((toDocument self) ^. jss "selectedStylesheetSet" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
-getSelectedStylesheetSet ::
-                         (MonadDOM m, IsDocument self, FromJSString result) =>
-                           self -> m (Maybe result)
-getSelectedStylesheetSet self
-  = liftDOM
-      (((toDocument self) ^. js "selectedStylesheetSet") >>=
-         fromMaybeJSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
-getSelectedStylesheetSetUnsafe ::
-                               (MonadDOM m, IsDocument self, HasCallStack, FromJSString result) =>
-                                 self -> m result
-getSelectedStylesheetSetUnsafe self
-  = liftDOM
-      ((((toDocument self) ^. js "selectedStylesheetSet") >>=
-          fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
-getSelectedStylesheetSetUnchecked ::
-                                  (MonadDOM m, IsDocument self, FromJSString result) =>
-                                    self -> m result
-getSelectedStylesheetSetUnchecked self
-  = liftDOM
-      (((toDocument self) ^. js "selectedStylesheetSet") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlEncoding Mozilla Document.xmlEncoding documentation> 
-getXmlEncoding ::
-               (MonadDOM m, IsDocument self, FromJSString result) =>
-                 self -> m (Maybe result)
-getXmlEncoding self
-  = liftDOM
-      (((toDocument self) ^. js "xmlEncoding") >>= fromMaybeJSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlEncoding Mozilla Document.xmlEncoding documentation> 
-getXmlEncodingUnsafe ::
-                     (MonadDOM m, IsDocument self, HasCallStack, FromJSString result) =>
-                       self -> m result
-getXmlEncodingUnsafe self
-  = liftDOM
-      ((((toDocument self) ^. js "xmlEncoding") >>= fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlEncoding Mozilla Document.xmlEncoding documentation> 
-getXmlEncodingUnchecked ::
-                        (MonadDOM m, IsDocument self, FromJSString result) =>
-                          self -> m result
-getXmlEncodingUnchecked self
-  = liftDOM
-      (((toDocument self) ^. js "xmlEncoding") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
-setXmlVersion ::
-              (MonadDOM m, IsDocument self, ToJSString val) =>
-                self -> Maybe val -> m ()
-setXmlVersion self val
-  = liftDOM ((toDocument self) ^. jss "xmlVersion" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
-getXmlVersion ::
-              (MonadDOM m, IsDocument self, FromJSString result) =>
-                self -> m (Maybe result)
-getXmlVersion self
-  = liftDOM
-      (((toDocument self) ^. js "xmlVersion") >>= fromMaybeJSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
-getXmlVersionUnsafe ::
-                    (MonadDOM m, IsDocument self, HasCallStack, FromJSString result) =>
-                      self -> m result
-getXmlVersionUnsafe self
-  = liftDOM
-      ((((toDocument self) ^. js "xmlVersion") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
-getXmlVersionUnchecked ::
-                       (MonadDOM m, IsDocument self, FromJSString result) =>
-                         self -> m result
-getXmlVersionUnchecked self
-  = liftDOM
-      (((toDocument self) ^. js "xmlVersion") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlStandalone Mozilla Document.xmlStandalone documentation> 
-setXmlStandalone ::
-                 (MonadDOM m, IsDocument self) => self -> Bool -> m ()
-setXmlStandalone self val
-  = liftDOM ((toDocument self) ^. jss "xmlStandalone" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlStandalone Mozilla Document.xmlStandalone documentation> 
-getXmlStandalone :: (MonadDOM m, IsDocument self) => self -> m Bool
-getXmlStandalone self
-  = liftDOM (((toDocument self) ^. js "xmlStandalone") >>= valToBool)
-
--- | <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")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.rootElement Mozilla Document.rootElement documentation> 
-getRootElement ::
-               (MonadDOM m, IsDocument self) => self -> m (Maybe SVGSVGElement)
-getRootElement self
-  = liftDOM (((toDocument self) ^. js "rootElement") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.rootElement Mozilla Document.rootElement documentation> 
-getRootElementUnsafe ::
-                     (MonadDOM m, IsDocument self, HasCallStack) =>
-                       self -> m SVGSVGElement
-getRootElementUnsafe self
-  = liftDOM
-      ((((toDocument self) ^. js "rootElement") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.rootElement Mozilla Document.rootElement documentation> 
-getRootElementUnchecked ::
-                        (MonadDOM m, IsDocument self) => self -> m SVGSVGElement
-getRootElementUnchecked self
-  = liftDOM
-      (((toDocument self) ^. js "rootElement") >>= fromJSValUnchecked)
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.Document
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/Document MDN Document. documentation>
+newDocument :: (MonadDOM m) => m Document
+newDocument = liftDOM (((new (jsg "Document") ()) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "adoptNode" [toJSVal node]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "adoptNode" [toJSVal node]))
+
+-- | <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 ((Types.toDocument self) ^. jsf "captureEvents" ()))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "caretPositionFromPoint" [toJSVal x, toJSVal y, P.maybe (P.return jsUndefined) toJSVal options]) >>= 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 ((Types.toDocument self) ^. jsf "caretPositionFromPoint" [toJSVal x, toJSVal y, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 (((((Types.toDocument self) ^. jsf "caretPositionFromPoint" [toJSVal x, toJSVal y, P.maybe (P.return jsUndefined) toJSVal options]) >>= 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 ((((Types.toDocument self) ^. jsf "caretPositionFromPoint" [toJSVal x, toJSVal y, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/clear MDN Document.clear documentation>
+clear :: (MonadDOM m, IsDocument self) => self -> m ()
+clear self = liftDOM (void ((Types.toDocument self) ^. jsf "clear" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/close MDN Document.close documentation>
+close :: (MonadDOM m, IsDocument self) => self -> m ()
+close self = liftDOM (void ((Types.toDocument self) ^. jsf "close" ()))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "createAttribute" [toJSVal localName]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "createAttribute" [toJSVal localName]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "createAttributeNS" [toJSVal namespace, toJSVal qualifiedName]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "createAttributeNS" [toJSVal namespace, toJSVal qualifiedName]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "createCDATASection" [toJSVal data']) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "createCDATASection" [toJSVal data']))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "createComment" [toJSVal data']) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "createComment" [toJSVal data']))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createDocumentFragment MDN Document.createDocumentFragment documentation>
+createDocumentFragment :: (MonadDOM m, IsDocument self) => self -> m DocumentFragment
+createDocumentFragment self = liftDOM ((((Types.toDocument self) ^. jsf "createDocumentFragment" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createDocumentFragment MDN Document.createDocumentFragment documentation>
+createDocumentFragment_ :: (MonadDOM m, IsDocument self) => self -> m ()
+createDocumentFragment_ self = liftDOM (void ((Types.toDocument self) ^. jsf "createDocumentFragment" ()))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "createElement" [toJSVal localName]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "createElement" [toJSVal localName]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "createElement" [toJSVal localName, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "createElement" [toJSVal localName, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "createElementNS" [toJSVal namespace, toJSVal qualifiedName]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "createElementNS" [toJSVal namespace, toJSVal qualifiedName]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "createElementNS" [toJSVal namespace, toJSVal qualifiedName, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "createElementNS" [toJSVal namespace, toJSVal qualifiedName, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "createEvent" [toJSVal interface]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "createEvent" [toJSVal interface]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "createNodeIterator" [toJSVal root, P.maybe (P.return jsUndefined) toJSVal whatToShow, toJSVal filter]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "createNodeIterator" [toJSVal root, P.maybe (P.return jsUndefined) toJSVal whatToShow, toJSVal filter]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "createProcessingInstruction" [toJSVal target, toJSVal data']) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "createProcessingInstruction" [toJSVal target, toJSVal data']))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createRange MDN Document.createRange documentation>
+createRange :: (MonadDOM m, IsDocument self) => self -> m Range
+createRange self = liftDOM ((((Types.toDocument self) ^. jsf "createRange" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/createRange MDN Document.createRange documentation>
+createRange_ :: (MonadDOM m, IsDocument self) => self -> m ()
+createRange_ self = liftDOM (void ((Types.toDocument self) ^. jsf "createRange" ()))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "createTextNode" [toJSVal data']) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "createTextNode" [toJSVal data']))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "createTreeWalker" [toJSVal root, P.maybe (P.return jsUndefined) toJSVal whatToShow, toJSVal filter]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "createTreeWalker" [toJSVal root, P.maybe (P.return jsUndefined) toJSVal whatToShow, toJSVal filter]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "elementFromPoint" [toJSVal x, toJSVal 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 ((Types.toDocument self) ^. jsf "elementFromPoint" [toJSVal x, toJSVal 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 (((((Types.toDocument self) ^. jsf "elementFromPoint" [toJSVal x, toJSVal 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 ((((Types.toDocument self) ^. jsf "elementFromPoint" [toJSVal x, toJSVal y]) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "elementsFromPoint" [toJSVal x, toJSVal 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 ((Types.toDocument self) ^. jsf "elementsFromPoint" [toJSVal x, toJSVal y]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "execCommand" [toJSVal commandId, P.maybe (P.return jsUndefined) toJSVal showUI, P.maybe (P.return jsUndefined) toJSVal value]) >>= valToBool))
+
+-- | <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 ((Types.toDocument self) ^. jsf "execCommand" [toJSVal commandId, P.maybe (P.return jsUndefined) toJSVal showUI, P.maybe (P.return jsUndefined) toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/exitFullscreen MDN Document.exitFullscreen documentation>
+exitFullscreen :: (MonadDOM m, IsDocument self) => self -> m ()
+exitFullscreen self = liftDOM (void ((((Types.toDocument self) ^. jsf "exitFullscreen" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/exitPictureInPicture MDN Document.exitPictureInPicture documentation>
+exitPictureInPicture :: (MonadDOM m, IsDocument self) => self -> m ()
+exitPictureInPicture self = liftDOM (void ((((Types.toDocument self) ^. jsf "exitPictureInPicture" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/exitPointerLock MDN Document.exitPointerLock documentation>
+exitPointerLock :: (MonadDOM m, IsDocument self) => self -> m ()
+exitPointerLock self = liftDOM (void ((Types.toDocument self) ^. jsf "exitPointerLock" ()))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "getElementsByClassName" [toJSVal classNames]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "getElementsByClassName" [toJSVal classNames]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "getElementsByName" [toJSVal elementName]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "getElementsByName" [toJSVal elementName]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "getElementsByTagName" [toJSVal qualifiedName]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "getElementsByTagName" [toJSVal qualifiedName]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "getElementsByTagNameNS" [toJSVal namespace, toJSVal localName]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "getElementsByTagNameNS" [toJSVal namespace, toJSVal localName]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "getSelection" ()) >>= 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 ((Types.toDocument self) ^. jsf "getSelection" ()))
+
+-- | <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 (((((Types.toDocument self) ^. jsf "getSelection" ()) >>= 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 ((((Types.toDocument self) ^. jsf "getSelection" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/hasFocus MDN Document.hasFocus documentation>
+hasFocus :: (MonadDOM m, IsDocument self) => self -> m Bool
+hasFocus self = liftDOM ((((Types.toDocument self) ^. jsf "hasFocus" ()) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/hasFocus MDN Document.hasFocus documentation>
+hasFocus_ :: (MonadDOM m, IsDocument self) => self -> m ()
+hasFocus_ self = liftDOM (void ((Types.toDocument self) ^. jsf "hasFocus" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/hasStorageAccess MDN Document.hasStorageAccess documentation>
+hasStorageAccess :: (MonadDOM m, IsDocument self) => self -> m Bool
+hasStorageAccess self = liftDOM ((((((Types.toDocument self) ^. jsf "hasStorageAccess" ()) >>= readPromise)) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/hasStorageAccess MDN Document.hasStorageAccess documentation>
+hasStorageAccess_ :: (MonadDOM m, IsDocument self) => self -> m ()
+hasStorageAccess_ self = liftDOM (void ((((Types.toDocument self) ^. jsf "hasStorageAccess" ()) >>= readPromise)))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "importNode" [toJSVal node, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "importNode" [toJSVal node, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "open" [P.maybe (P.return jsUndefined) toJSVal unused1, P.maybe (P.return jsUndefined) toJSVal unused2]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "open" [P.maybe (P.return jsUndefined) toJSVal unused1, P.maybe (P.return jsUndefined) toJSVal unused2]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "open" [toJSVal url, toJSVal name, toJSVal 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 ((Types.toDocument self) ^. jsf "open" [toJSVal url, toJSVal name, toJSVal 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 (((((Types.toDocument self) ^. jsf "open" [toJSVal url, toJSVal name, toJSVal 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 ((((Types.toDocument self) ^. jsf "open" [toJSVal url, toJSVal name, toJSVal features]) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "queryCommandEnabled" [toJSVal commandId]) >>= valToBool))
+
+-- | <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 ((Types.toDocument self) ^. jsf "queryCommandEnabled" [toJSVal commandId]))
+
+queryCommandIndeterm :: (MonadDOM m, IsDocument self, ToJSString commandId) => self -> commandId -> m Bool
+queryCommandIndeterm self commandId = liftDOM ((((Types.toDocument self) ^. jsf "queryCommandIndeterm" [toJSVal commandId]) >>= valToBool))
+
+queryCommandIndeterm_ :: (MonadDOM m, IsDocument self, ToJSString commandId) => self -> commandId -> m ()
+queryCommandIndeterm_ self commandId = liftDOM (void ((Types.toDocument self) ^. jsf "queryCommandIndeterm" [toJSVal commandId]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "queryCommandState" [toJSVal commandId]) >>= valToBool))
+
+-- | <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 ((Types.toDocument self) ^. jsf "queryCommandState" [toJSVal commandId]))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "queryCommandSupported" [toJSVal commandId]) >>= valToBool))
+
+-- | <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 ((Types.toDocument self) ^. jsf "queryCommandSupported" [toJSVal commandId]))
+
+queryCommandValue :: (MonadDOM m, IsDocument self, ToJSString commandId, FromJSString result) => self -> commandId -> m result
+queryCommandValue self commandId = liftDOM ((((Types.toDocument self) ^. jsf "queryCommandValue" [toJSVal commandId]) >>= fromJSValUnchecked))
+
+queryCommandValue_ :: (MonadDOM m, IsDocument self, ToJSString commandId) => self -> commandId -> m ()
+queryCommandValue_ self commandId = liftDOM (void ((Types.toDocument self) ^. jsf "queryCommandValue" [toJSVal commandId]))
+
+-- | <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 ((Types.toDocument self) ^. jsf "releaseEvents" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/requestStorageAccess MDN Document.requestStorageAccess documentation>
+requestStorageAccess :: (MonadDOM m, IsDocument self) => self -> m ()
+requestStorageAccess self = liftDOM (void ((((Types.toDocument self) ^. jsf "requestStorageAccess" ()) >>= readPromise)))
+
+-- | <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 ((((Types.toDocument self) ^. jsf "startViewTransition" [P.maybe (P.return jsUndefined) toJSVal callbackOptions]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jsf "startViewTransition" [P.maybe (P.return jsUndefined) toJSVal callbackOptions]))
+
+-- | <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 ((Types.toDocument self) ^. jsf "write" ([] ++ P.map toJSVal text)))
+
+-- | <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 ((Types.toDocument self) ^. jsf "writeln" ([] ++ P.map toJSVal text)))
+
+-- | <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 ((((jsg "Document") ^. jsf "parseHTML" [toJSVal html, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 ((jsg "Document") ^. jsf "parseHTML" [toJSVal html, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 ((((jsg "Document") ^. jsf "parseHTMLUnsafe" [toJSVal html, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 ((jsg "Document") ^. jsf "parseHTMLUnsafe" [toJSVal html, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/implementation MDN Document.implementation documentation>
+getImplementation :: (MonadDOM m, IsDocument self) => self -> m DOMImplementation
+getImplementation self = liftDOM ((((Types.toDocument self) ^. js "implementation") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. js "URL") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. js "documentURI") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. js "compatMode") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. js "characterSet") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-document-charset Document.charset specification>
+getCharset :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getCharset self = liftDOM ((((Types.toDocument self) ^. js "charset") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-document-inputencoding Document.inputEncoding specification>
+getInputEncoding :: (MonadDOM m, IsDocument self, FromJSString result) => self -> m result
+getInputEncoding self = liftDOM ((((Types.toDocument self) ^. js "inputEncoding") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. js "contentType") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. js "doctype") >>= 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 (((((Types.toDocument self) ^. js "doctype") >>= 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 ((((Types.toDocument self) ^. js "doctype") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. js "documentElement") >>= 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 (((((Types.toDocument self) ^. js "documentElement") >>= 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 ((((Types.toDocument self) ^. js "documentElement") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. js "rootElement") >>= 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 (((((Types.toDocument self) ^. js "rootElement") >>= 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 ((((Types.toDocument self) ^. js "rootElement") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. js "activeViewTransition") >>= 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 (((((Types.toDocument self) ^. js "activeViewTransition") >>= 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 ((((Types.toDocument self) ^. js "activeViewTransition") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. js "scrollingElement") >>= 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 (((((Types.toDocument self) ^. js "scrollingElement") >>= 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 ((((Types.toDocument self) ^. js "scrollingElement") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/fullscreenEnabled MDN Document.fullscreenEnabled documentation>
+getFullscreenEnabled :: (MonadDOM m, IsDocument self) => self -> m Bool
+getFullscreenEnabled self = liftDOM ((((Types.toDocument self) ^. js "fullscreenEnabled") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/fullscreen MDN Document.fullscreen documentation>
+getFullscreen :: (MonadDOM m, IsDocument self) => self -> m Bool
+getFullscreen self = liftDOM ((((Types.toDocument self) ^. js "fullscreen") >>= valToBool))
+
+-- | <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 ((((Types.toDocument self) ^. js "location") >>= 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 (((((Types.toDocument self) ^. js "location") >>= 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 ((((Types.toDocument self) ^. js "location") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jss "domain" (toJSVal val)))
+
+-- | <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 ((((Types.toDocument self) ^. js "domain") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. js "referrer") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jss "cookie" (toJSVal val)))
+
+-- | <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 ((((Types.toDocument self) ^. js "cookie") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. js "lastModified") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/readyState MDN Document.readyState documentation>
+getReadyState :: (MonadDOM m, IsDocument self) => self -> m DocumentReadyState
+getReadyState self = liftDOM ((((Types.toDocument self) ^. js "readyState") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jss "title" (toJSVal val)))
+
+-- | <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 ((((Types.toDocument self) ^. js "title") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jss "dir" (toJSVal val)))
+
+-- | <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 ((((Types.toDocument self) ^. js "dir") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jss "body" (toJSVal val)))
+
+-- | <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 ((((Types.toDocument self) ^. js "body") >>= 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 (((((Types.toDocument self) ^. js "body") >>= 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 ((((Types.toDocument self) ^. js "body") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. js "head") >>= 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 (((((Types.toDocument self) ^. js "head") >>= 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 ((((Types.toDocument self) ^. js "head") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/images MDN Document.images documentation>
+getImages :: (MonadDOM m, IsDocument self) => self -> m HTMLCollection
+getImages self = liftDOM ((((Types.toDocument self) ^. js "images") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/embeds MDN Document.embeds documentation>
+getEmbeds :: (MonadDOM m, IsDocument self) => self -> m HTMLCollection
+getEmbeds self = liftDOM ((((Types.toDocument self) ^. js "embeds") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/plugins MDN Document.plugins documentation>
+getPlugins :: (MonadDOM m, IsDocument self) => self -> m HTMLCollection
+getPlugins self = liftDOM ((((Types.toDocument self) ^. js "plugins") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/links MDN Document.links documentation>
+getLinks :: (MonadDOM m, IsDocument self) => self -> m HTMLCollection
+getLinks self = liftDOM ((((Types.toDocument self) ^. js "links") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/forms MDN Document.forms documentation>
+getForms :: (MonadDOM m, IsDocument self) => self -> m HTMLCollection
+getForms self = liftDOM ((((Types.toDocument self) ^. js "forms") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/scripts MDN Document.scripts documentation>
+getScripts :: (MonadDOM m, IsDocument self) => self -> m HTMLCollection
+getScripts self = liftDOM ((((Types.toDocument self) ^. js "scripts") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. js "currentScript") >>= 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 (((((Types.toDocument self) ^. js "currentScript") >>= 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 ((((Types.toDocument self) ^. js "currentScript") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocument self) ^. js "defaultView") >>= 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 (((((Types.toDocument self) ^. js "defaultView") >>= 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 ((((Types.toDocument self) ^. js "defaultView") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jss "designMode" (toJSVal val)))
+
+-- | <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 ((((Types.toDocument self) ^. js "designMode") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/hidden MDN Document.hidden documentation>
+getHidden :: (MonadDOM m, IsDocument self) => self -> m Bool
+getHidden self = liftDOM ((((Types.toDocument self) ^. js "hidden") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/visibilityState MDN Document.visibilityState documentation>
+getVisibilityState :: (MonadDOM m, IsDocument self) => self -> m DocumentVisibilityState
+getVisibilityState self = liftDOM ((((Types.toDocument self) ^. js "visibilityState") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jss "fgColor" (toJSVal val)))
+
+-- | <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 ((((Types.toDocument self) ^. js "fgColor") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jss "linkColor" (toJSVal val)))
+
+-- | <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 ((((Types.toDocument self) ^. js "linkColor") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jss "vlinkColor" (toJSVal val)))
+
+-- | <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 ((((Types.toDocument self) ^. js "vlinkColor") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jss "alinkColor" (toJSVal val)))
+
+-- | <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 ((((Types.toDocument self) ^. js "alinkColor") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDocument self) ^. jss "bgColor" (toJSVal val)))
+
+-- | <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 ((((Types.toDocument self) ^. js "bgColor") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/anchors MDN Document.anchors documentation>
+getAnchors :: (MonadDOM m, IsDocument self) => self -> m HTMLCollection
+getAnchors self = liftDOM ((((Types.toDocument self) ^. js "anchors") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/applets MDN Document.applets documentation>
+getApplets :: (MonadDOM m, IsDocument self) => self -> m HTMLCollection
+getApplets self = liftDOM ((((Types.toDocument self) ^. js "applets") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/all MDN Document.all documentation>
+getAll :: (MonadDOM m, IsDocument self) => self -> m HTMLAllCollection
+getAll self = liftDOM ((((Types.toDocument self) ^. js "all") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/pictureInPictureEnabled MDN Document.pictureInPictureEnabled documentation>
+getPictureInPictureEnabled :: (MonadDOM m, IsDocument self) => self -> m Bool
+getPictureInPictureEnabled self = liftDOM ((((Types.toDocument self) ^. js "pictureInPictureEnabled") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/fragmentDirective MDN Document.fragmentDirective documentation>
+getFragmentDirective :: (MonadDOM m, IsDocument self) => self -> m FragmentDirective
+getFragmentDirective self = liftDOM ((((Types.toDocument self) ^. js "fragmentDirective") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/timeline MDN Document.timeline documentation>
+getTimeline :: (MonadDOM m, IsDocument self) => self -> m DocumentTimeline
+getTimeline self = liftDOM ((((Types.toDocument self) ^. js "timeline") >>= fromJSValUnchecked))
+
+-- | <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/JSDOM/Generated/DocumentAndElementEventHandlers.hs b/src/JSDOM/Generated/DocumentAndElementEventHandlers.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/DocumentAndElementEventHandlers.hs
+++ /dev/null
@@ -1,66 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.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/JSDOM/Generated/DocumentFragment.hs b/src/JSDOM/Generated/DocumentFragment.hs
--- a/src/JSDOM/Generated/DocumentFragment.hs
+++ b/src/JSDOM/Generated/DocumentFragment.hs
@@ -1,26 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.DocumentFragment
-       (newDocumentFragment, DocumentFragment(..), gTypeDocumentFragment,
-        IsDocumentFragment, toDocumentFragment)
+       (newDocumentFragment, DocumentFragment(..), gTypeDocumentFragment, IsDocumentFragment, toDocumentFragment)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment Mozilla DocumentFragment documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DocumentFragment/DocumentFragment MDN DocumentFragment. documentation>
 newDocumentFragment :: (MonadDOM m) => m DocumentFragment
-newDocumentFragment
-  = liftDOM (DocumentFragment <$> new (jsg "DocumentFragment") ())
+newDocumentFragment = liftDOM (((new (jsg "DocumentFragment") ()) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DocumentOrShadowRoot.hs b/src/JSDOM/Generated/DocumentOrShadowRoot.hs
--- a/src/JSDOM/Generated/DocumentOrShadowRoot.hs
+++ b/src/JSDOM/Generated/DocumentOrShadowRoot.hs
@@ -1,121 +1,96 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.DocumentOrShadowRoot
-       (elementFromPoint, elementFromPoint_, elementFromPointUnsafe,
-        elementFromPointUnchecked, getActiveElement,
-        getActiveElementUnsafe, getActiveElementUnchecked,
-        getPointerLockElement, getPointerLockElementUnsafe,
-        getPointerLockElementUnchecked, DocumentOrShadowRoot(..),
-        gTypeDocumentOrShadowRoot, IsDocumentOrShadowRoot,
-        toDocumentOrShadowRoot)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.elementFromPoint Mozilla DocumentOrShadowRoot.elementFromPoint documentation> 
-elementFromPoint ::
-                 (MonadDOM m, IsDocumentOrShadowRoot self) =>
-                   self -> Double -> Double -> m (Maybe Element)
-elementFromPoint self x y
-  = liftDOM
-      (((toDocumentOrShadowRoot self) ^. jsf "elementFromPoint"
-          [toJSVal x, toJSVal y])
-         >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/Document/getAnimations MDN DocumentOrShadowRoot.getAnimations documentation>
+getAnimations :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m [Animation]
+getAnimations self = liftDOM ((((Types.toDocumentOrShadowRoot self) ^. jsf "getAnimations" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.elementFromPoint Mozilla DocumentOrShadowRoot.elementFromPoint documentation> 
-elementFromPoint_ ::
-                  (MonadDOM m, IsDocumentOrShadowRoot self) =>
-                    self -> Double -> Double -> m ()
-elementFromPoint_ self x y
-  = liftDOM
-      (void
-         ((toDocumentOrShadowRoot self) ^. jsf "elementFromPoint"
-            [toJSVal x, toJSVal 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 ((Types.toDocumentOrShadowRoot self) ^. jsf "getAnimations" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.elementFromPoint Mozilla DocumentOrShadowRoot.elementFromPoint documentation> 
-elementFromPointUnsafe ::
-                       (MonadDOM m, IsDocumentOrShadowRoot self, HasCallStack) =>
-                         self -> Double -> Double -> m Element
-elementFromPointUnsafe self x y
-  = liftDOM
-      ((((toDocumentOrShadowRoot self) ^. jsf "elementFromPoint"
-           [toJSVal x, toJSVal y])
-          >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <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 ((((Types.toDocumentOrShadowRoot self) ^. js "customElementRegistry") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.elementFromPoint Mozilla DocumentOrShadowRoot.elementFromPoint documentation> 
-elementFromPointUnchecked ::
-                          (MonadDOM m, IsDocumentOrShadowRoot self) =>
-                            self -> Double -> Double -> m Element
-elementFromPointUnchecked self x y
-  = liftDOM
-      (((toDocumentOrShadowRoot self) ^. jsf "elementFromPoint"
-          [toJSVal x, toJSVal y])
-         >>= fromJSValUnchecked)
+-- | <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 (((((Types.toDocumentOrShadowRoot self) ^. js "customElementRegistry") >>= 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> 
-getActiveElement ::
-                 (MonadDOM m, IsDocumentOrShadowRoot self) =>
-                   self -> m (Maybe Element)
-getActiveElement self
-  = liftDOM
-      (((toDocumentOrShadowRoot self) ^. js "activeElement") >>=
-         fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/Document/customElementRegistry MDN DocumentOrShadowRoot.customElementRegistry documentation>
+getCustomElementRegistryUnchecked :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m CustomElementRegistry
+getCustomElementRegistryUnchecked self = liftDOM ((((Types.toDocumentOrShadowRoot self) ^. js "customElementRegistry") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.activeElement Mozilla DocumentOrShadowRoot.activeElement documentation> 
-getActiveElementUnsafe ::
-                       (MonadDOM m, IsDocumentOrShadowRoot self, HasCallStack) =>
-                         self -> m Element
-getActiveElementUnsafe self
-  = liftDOM
-      ((((toDocumentOrShadowRoot self) ^. js "activeElement") >>=
-          fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Document/styleSheets MDN DocumentOrShadowRoot.styleSheets documentation>
+getStyleSheets :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m StyleSheetList
+getStyleSheets self = liftDOM ((((Types.toDocumentOrShadowRoot self) ^. js "styleSheets") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.activeElement Mozilla DocumentOrShadowRoot.activeElement documentation> 
-getActiveElementUnchecked ::
-                          (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m Element
-getActiveElementUnchecked self
-  = liftDOM
-      (((toDocumentOrShadowRoot self) ^. js "activeElement") >>=
-         fromJSValUnchecked)
+-- | <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 ((Types.toDocumentOrShadowRoot self) ^. jss "adoptedStyleSheets" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.pointerLockElement Mozilla DocumentOrShadowRoot.pointerLockElement documentation> 
-getPointerLockElement ::
-                      (MonadDOM m, IsDocumentOrShadowRoot self) =>
-                        self -> m (Maybe Element)
-getPointerLockElement self
-  = liftDOM
-      (((toDocumentOrShadowRoot self) ^. js "pointerLockElement") >>=
-         fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/Document/adoptedStyleSheets MDN DocumentOrShadowRoot.adoptedStyleSheets documentation>
+getAdoptedStyleSheets :: (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m [CSSStyleSheet]
+getAdoptedStyleSheets self = liftDOM ((((Types.toDocumentOrShadowRoot self) ^. js "adoptedStyleSheets") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.pointerLockElement Mozilla DocumentOrShadowRoot.pointerLockElement documentation> 
-getPointerLockElementUnsafe ::
-                            (MonadDOM m, IsDocumentOrShadowRoot self, HasCallStack) =>
-                              self -> m Element
-getPointerLockElementUnsafe self
-  = liftDOM
-      ((((toDocumentOrShadowRoot self) ^. js "pointerLockElement") >>=
-          fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <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 ((((Types.toDocumentOrShadowRoot self) ^. js "fullscreenElement") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.pointerLockElement Mozilla DocumentOrShadowRoot.pointerLockElement documentation> 
-getPointerLockElementUnchecked ::
-                               (MonadDOM m, IsDocumentOrShadowRoot self) => self -> m Element
-getPointerLockElementUnchecked self
-  = liftDOM
-      (((toDocumentOrShadowRoot self) ^. js "pointerLockElement") >>=
-         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 (((((Types.toDocumentOrShadowRoot self) ^. js "fullscreenElement") >>= 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 ((((Types.toDocumentOrShadowRoot self) ^. js "fullscreenElement") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocumentOrShadowRoot self) ^. js "activeElement") >>= fromJSValUnchecked))
+
+-- | <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 (((((Types.toDocumentOrShadowRoot self) ^. js "activeElement") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.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 ((((Types.toDocumentOrShadowRoot self) ^. js "activeElement") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocumentOrShadowRoot self) ^. js "pictureInPictureElement") >>= fromJSValUnchecked))
+
+-- | <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 (((((Types.toDocumentOrShadowRoot self) ^. js "pictureInPictureElement") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.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 ((((Types.toDocumentOrShadowRoot self) ^. js "pictureInPictureElement") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toDocumentOrShadowRoot self) ^. js "pointerLockElement") >>= 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 (((((Types.toDocumentOrShadowRoot self) ^. js "pointerLockElement") >>= 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 ((((Types.toDocumentOrShadowRoot self) ^. js "pointerLockElement") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DocumentPictureInPicture.hs b/src/JSDOM/Generated/DocumentPictureInPicture.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DocumentPictureInPicture.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from document-picture-in-picture (webref). Do not edit.
+module JSDOM.Generated.DocumentPictureInPicture
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((((self ^. jsf "requestWindow" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "requestWindow" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DocumentPictureInPicture/window MDN DocumentPictureInPicture.window documentation>
+getWindow :: (MonadDOM m) => DocumentPictureInPicture -> m Window
+getWindow self = liftDOM (((self ^. js "window") >>= fromJSValUnchecked))
+
+-- | <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/JSDOM/Generated/DocumentPictureInPictureEvent.hs b/src/JSDOM/Generated/DocumentPictureInPictureEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DocumentPictureInPictureEvent.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from document-picture-in-picture (webref). Do not edit.
+module JSDOM.Generated.DocumentPictureInPictureEvent
+       (newDocumentPictureInPictureEvent, getWindow, DocumentPictureInPictureEvent(..), gTypeDocumentPictureInPictureEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "DocumentPictureInPictureEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DocumentPictureInPictureEvent/window MDN DocumentPictureInPictureEvent.window documentation>
+getWindow :: (MonadDOM m) => DocumentPictureInPictureEvent -> m Window
+getWindow self = liftDOM (((self ^. js "window") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DocumentPictureInPictureEventInit.hs b/src/JSDOM/Generated/DocumentPictureInPictureEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DocumentPictureInPictureEventInit.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from document-picture-in-picture (webref). Do not edit.
+module JSDOM.Generated.DocumentPictureInPictureEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://wicg.github.io/document-picture-in-picture/#dictdef-documentpictureinpictureeventinit DocumentPictureInPictureEventInit specification>
+newDocumentPictureInPictureEventInit :: (MonadDOM m) => Window -> m DocumentPictureInPictureEventInit
+newDocumentPictureInPictureEventInit window = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "window" (toJSVal window)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "window" (toJSVal val)))
+
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureeventinit-window DocumentPictureInPictureEventInit.window specification>
+getWindow :: (MonadDOM m) => DocumentPictureInPictureEventInit -> m Window
+getWindow self = liftDOM (((self ^. js "window") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DocumentPictureInPictureOptions.hs b/src/JSDOM/Generated/DocumentPictureInPictureOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DocumentPictureInPictureOptions.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from document-picture-in-picture (webref). Do not edit.
+module JSDOM.Generated.DocumentPictureInPictureOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://wicg.github.io/document-picture-in-picture/#dictdef-documentpictureinpictureoptions DocumentPictureInPictureOptions specification>
+newDocumentPictureInPictureOptions :: (MonadDOM m) => m DocumentPictureInPictureOptions
+newDocumentPictureInPictureOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "width" (toJSVal val)))
+
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-width DocumentPictureInPictureOptions.width specification>
+getWidth :: (MonadDOM m) => DocumentPictureInPictureOptions -> m (Maybe Word53)
+getWidth self = liftDOM (((self ^. js "width") >>= 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 ((((self ^. js "width") >>= 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 (((self ^. js "width") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "height" (toJSVal val)))
+
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-height DocumentPictureInPictureOptions.height specification>
+getHeight :: (MonadDOM m) => DocumentPictureInPictureOptions -> m (Maybe Word53)
+getHeight self = liftDOM (((self ^. js "height") >>= 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 ((((self ^. js "height") >>= 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 (((self ^. js "height") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "disallowReturnToOpener" (toJSVal val)))
+
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-disallowreturntoopener DocumentPictureInPictureOptions.disallowReturnToOpener specification>
+getDisallowReturnToOpener :: (MonadDOM m) => DocumentPictureInPictureOptions -> m (Maybe Bool)
+getDisallowReturnToOpener self = liftDOM (((self ^. js "disallowReturnToOpener") >>= 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 ((((self ^. js "disallowReturnToOpener") >>= 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 (((self ^. js "disallowReturnToOpener") >>= valToBool))
+
+-- | <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 (self ^. jss "preferInitialWindowPlacement" (toJSVal val)))
+
+-- | <https://wicg.github.io/document-picture-in-picture/#dom-documentpictureinpictureoptions-preferinitialwindowplacement DocumentPictureInPictureOptions.preferInitialWindowPlacement specification>
+getPreferInitialWindowPlacement :: (MonadDOM m) => DocumentPictureInPictureOptions -> m (Maybe Bool)
+getPreferInitialWindowPlacement self = liftDOM (((self ^. js "preferInitialWindowPlacement") >>= 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 ((((self ^. js "preferInitialWindowPlacement") >>= 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 (((self ^. js "preferInitialWindowPlacement") >>= valToBool))
diff --git a/src/JSDOM/Generated/DocumentTimeline.hs b/src/JSDOM/Generated/DocumentTimeline.hs
--- a/src/JSDOM/Generated/DocumentTimeline.hs
+++ b/src/JSDOM/Generated/DocumentTimeline.hs
@@ -1,27 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
 module JSDOM.Generated.DocumentTimeline
        (newDocumentTimeline, DocumentTimeline(..), gTypeDocumentTimeline)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentTimeline Mozilla DocumentTimeline documentation> 
-newDocumentTimeline :: (MonadDOM m) => Double -> m DocumentTimeline
-newDocumentTimeline originTime
-  = liftDOM
-      (DocumentTimeline <$>
-         new (jsg "DocumentTimeline") [toJSVal originTime])
+-- | <https://developer.mozilla.org/docs/Web/API/DocumentTimeline/DocumentTimeline MDN DocumentTimeline. documentation>
+newDocumentTimeline :: (MonadDOM m) => Maybe DocumentTimelineOptions -> m DocumentTimeline
+newDocumentTimeline options = liftDOM (((new (jsg "DocumentTimeline") [P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DocumentTimelineOptions.hs b/src/JSDOM/Generated/DocumentTimelineOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DocumentTimelineOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module JSDOM.Generated.DocumentTimelineOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/web-animations-1/#dictdef-documenttimelineoptions DocumentTimelineOptions specification>
+newDocumentTimelineOptions :: (MonadDOM m) => m DocumentTimelineOptions
+newDocumentTimelineOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-documenttimelineoptions-origintime DocumentTimelineOptions.originTime specification>
+setOriginTime :: (MonadDOM m) => DocumentTimelineOptions -> Double -> m ()
+setOriginTime self val = liftDOM (void (self ^. jss "originTime" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-documenttimelineoptions-origintime DocumentTimelineOptions.originTime specification>
+getOriginTime :: (MonadDOM m) => DocumentTimelineOptions -> m (Maybe Double)
+getOriginTime self = liftDOM (((self ^. js "originTime") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-documenttimelineoptions-origintime DocumentTimelineOptions.originTime specification>
+getOriginTimeUnsafe :: (MonadDOM m, HasCallStack) => DocumentTimelineOptions -> m Double
+getOriginTimeUnsafe self = liftDOM ((((self ^. js "originTime") >>= 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 (((self ^. js "originTime") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DocumentType.hs b/src/JSDOM/Generated/DocumentType.hs
--- a/src/JSDOM/Generated/DocumentType.hs
+++ b/src/JSDOM/Generated/DocumentType.hs
@@ -1,38 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.DocumentType
-       (getName, getPublicId, getSystemId, DocumentType(..),
-        gTypeDocumentType)
+       (getName, getPublicId, getSystemId, DocumentType(..), gTypeDocumentType)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.name Mozilla DocumentType.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => DocumentType -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DocumentType/name MDN DocumentType.name documentation>
+getName :: (MonadDOM m, FromJSString result) => DocumentType -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.publicId Mozilla DocumentType.publicId documentation> 
-getPublicId ::
-            (MonadDOM m, FromJSString result) => DocumentType -> m result
-getPublicId self
-  = liftDOM ((self ^. js "publicId") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DocumentType/publicId MDN DocumentType.publicId documentation>
+getPublicId :: (MonadDOM m, FromJSString result) => DocumentType -> m result
+getPublicId self = liftDOM (((self ^. js "publicId") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.systemId Mozilla DocumentType.systemId documentation> 
-getSystemId ::
-            (MonadDOM m, FromJSString result) => DocumentType -> m result
-getSystemId self
-  = liftDOM ((self ^. js "systemId") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DocumentType/systemId MDN DocumentType.systemId documentation>
+getSystemId :: (MonadDOM m, FromJSString result) => DocumentType -> m result
+getSystemId self = liftDOM (((self ^. js "systemId") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DoubleRange.hs b/src/JSDOM/Generated/DoubleRange.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DoubleRange.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module JSDOM.Generated.DoubleRange
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-doublerange DoubleRange specification>
+newDoubleRange :: (MonadDOM m) => m DoubleRange
+newDoubleRange = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toDoubleRange self) ^. jss "max" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-doublerange-max DoubleRange.max specification>
+getMax :: (MonadDOM m, IsDoubleRange self) => self -> m (Maybe Double)
+getMax self = liftDOM ((((Types.toDoubleRange self) ^. js "max") >>= 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 (((((Types.toDoubleRange self) ^. js "max") >>= 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 ((((Types.toDoubleRange self) ^. js "max") >>= valToNumber))
+
+-- | <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 ((Types.toDoubleRange self) ^. jss "min" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-doublerange-min DoubleRange.min specification>
+getMin :: (MonadDOM m, IsDoubleRange self) => self -> m (Maybe Double)
+getMin self = liftDOM ((((Types.toDoubleRange self) ^. js "min") >>= 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 (((((Types.toDoubleRange self) ^. js "min") >>= 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 ((((Types.toDoubleRange self) ^. js "min") >>= valToNumber))
diff --git a/src/JSDOM/Generated/DragEvent.hs b/src/JSDOM/Generated/DragEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DragEvent.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.DragEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "DragEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DragEvent/dataTransfer MDN DragEvent.dataTransfer documentation>
+getDataTransfer :: (MonadDOM m) => DragEvent -> m (Maybe DataTransfer)
+getDataTransfer self = liftDOM (((self ^. js "dataTransfer") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DragEvent/dataTransfer MDN DragEvent.dataTransfer documentation>
+getDataTransferUnsafe :: (MonadDOM m, HasCallStack) => DragEvent -> m DataTransfer
+getDataTransferUnsafe self = liftDOM ((((self ^. js "dataTransfer") >>= 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 (((self ^. js "dataTransfer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DragEventInit.hs b/src/JSDOM/Generated/DragEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DragEventInit.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.DragEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/dnd.html#drageventinit DragEventInit specification>
+newDragEventInit :: (MonadDOM m) => m DragEventInit
+newDragEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+setDataTransfer :: (MonadDOM m) => DragEventInit -> Maybe DataTransfer -> m ()
+setDataTransfer self val = liftDOM (void (self ^. jss "dataTransfer" (toJSVal val)))
+
+getDataTransfer :: (MonadDOM m) => DragEventInit -> m (Maybe DataTransfer)
+getDataTransfer self = liftDOM (((self ^. js "dataTransfer") >>= fromJSValUnchecked))
+
+getDataTransferUnsafe :: (MonadDOM m, HasCallStack) => DragEventInit -> m DataTransfer
+getDataTransferUnsafe self = liftDOM ((((self ^. js "dataTransfer") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getDataTransferUnchecked :: (MonadDOM m) => DragEventInit -> m DataTransfer
+getDataTransferUnchecked self = liftDOM (((self ^. js "dataTransfer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DynamicsCompressorNode.hs b/src/JSDOM/Generated/DynamicsCompressorNode.hs
--- a/src/JSDOM/Generated/DynamicsCompressorNode.hs
+++ b/src/JSDOM/Generated/DynamicsCompressorNode.hs
@@ -1,54 +1,44 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.DynamicsCompressorNode
-       (getThreshold, getKnee, getRatio, getReduction, getAttack,
-        getRelease, DynamicsCompressorNode(..),
-        gTypeDynamicsCompressorNode)
+       (newDynamicsCompressorNode, getThreshold, getKnee, getRatio, getReduction, getAttack, getRelease, DynamicsCompressorNode(..), gTypeDynamicsCompressorNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.threshold Mozilla DynamicsCompressorNode.threshold documentation> 
-getThreshold ::
-             (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
-getThreshold self
-  = liftDOM ((self ^. js "threshold") >>= fromJSValUnchecked)
+-- | <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 (((new (jsg "DynamicsCompressorNode") [toJSVal context, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.knee Mozilla DynamicsCompressorNode.knee documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/threshold MDN DynamicsCompressorNode.threshold documentation>
+getThreshold :: (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
+getThreshold self = liftDOM (((self ^. js "threshold") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/knee MDN DynamicsCompressorNode.knee documentation>
 getKnee :: (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
-getKnee self = liftDOM ((self ^. js "knee") >>= fromJSValUnchecked)
+getKnee self = liftDOM (((self ^. js "knee") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.ratio Mozilla DynamicsCompressorNode.ratio documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/ratio MDN DynamicsCompressorNode.ratio documentation>
 getRatio :: (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
-getRatio self
-  = liftDOM ((self ^. js "ratio") >>= fromJSValUnchecked)
+getRatio self = liftDOM (((self ^. js "ratio") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.reduction Mozilla DynamicsCompressorNode.reduction documentation> 
-getReduction ::
-             (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
-getReduction self
-  = liftDOM ((self ^. js "reduction") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/reduction MDN DynamicsCompressorNode.reduction documentation>
+getReduction :: (MonadDOM m) => DynamicsCompressorNode -> m Float
+getReduction self = liftDOM ((P.realToFrac <$> ((self ^. js "reduction") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.attack Mozilla DynamicsCompressorNode.attack documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/attack MDN DynamicsCompressorNode.attack documentation>
 getAttack :: (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
-getAttack self
-  = liftDOM ((self ^. js "attack") >>= fromJSValUnchecked)
+getAttack self = liftDOM (((self ^. js "attack") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.release Mozilla DynamicsCompressorNode.release documentation> 
-getRelease ::
-           (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
-getRelease self
-  = liftDOM ((self ^. js "release") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/release MDN DynamicsCompressorNode.release documentation>
+getRelease :: (MonadDOM m) => DynamicsCompressorNode -> m AudioParam
+getRelease self = liftDOM (((self ^. js "release") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/DynamicsCompressorOptions.hs b/src/JSDOM/Generated/DynamicsCompressorOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/DynamicsCompressorOptions.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.DynamicsCompressorOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#DynamicsCompressorOptions DynamicsCompressorOptions specification>
+newDynamicsCompressorOptions :: (MonadDOM m) => m DynamicsCompressorOptions
+newDynamicsCompressorOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-attack DynamicsCompressorOptions.attack specification>
+setAttack :: (MonadDOM m) => DynamicsCompressorOptions -> Float -> m ()
+setAttack self val = liftDOM (void (self ^. jss "attack" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-attack DynamicsCompressorOptions.attack specification>
+getAttack :: (MonadDOM m) => DynamicsCompressorOptions -> m (Maybe Float)
+getAttack self = liftDOM (((self ^. js "attack") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-attack DynamicsCompressorOptions.attack specification>
+getAttackUnsafe :: (MonadDOM m, HasCallStack) => DynamicsCompressorOptions -> m Float
+getAttackUnsafe self = liftDOM ((((self ^. js "attack") >>= 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 ((P.realToFrac <$> ((self ^. js "attack") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-knee DynamicsCompressorOptions.knee specification>
+setKnee :: (MonadDOM m) => DynamicsCompressorOptions -> Float -> m ()
+setKnee self val = liftDOM (void (self ^. jss "knee" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-knee DynamicsCompressorOptions.knee specification>
+getKnee :: (MonadDOM m) => DynamicsCompressorOptions -> m (Maybe Float)
+getKnee self = liftDOM (((self ^. js "knee") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-knee DynamicsCompressorOptions.knee specification>
+getKneeUnsafe :: (MonadDOM m, HasCallStack) => DynamicsCompressorOptions -> m Float
+getKneeUnsafe self = liftDOM ((((self ^. js "knee") >>= 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 ((P.realToFrac <$> ((self ^. js "knee") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-ratio DynamicsCompressorOptions.ratio specification>
+setRatio :: (MonadDOM m) => DynamicsCompressorOptions -> Float -> m ()
+setRatio self val = liftDOM (void (self ^. jss "ratio" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-ratio DynamicsCompressorOptions.ratio specification>
+getRatio :: (MonadDOM m) => DynamicsCompressorOptions -> m (Maybe Float)
+getRatio self = liftDOM (((self ^. js "ratio") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-ratio DynamicsCompressorOptions.ratio specification>
+getRatioUnsafe :: (MonadDOM m, HasCallStack) => DynamicsCompressorOptions -> m Float
+getRatioUnsafe self = liftDOM ((((self ^. js "ratio") >>= 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 ((P.realToFrac <$> ((self ^. js "ratio") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-release DynamicsCompressorOptions.release specification>
+setRelease :: (MonadDOM m) => DynamicsCompressorOptions -> Float -> m ()
+setRelease self val = liftDOM (void (self ^. jss "release" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-release DynamicsCompressorOptions.release specification>
+getRelease :: (MonadDOM m) => DynamicsCompressorOptions -> m (Maybe Float)
+getRelease self = liftDOM (((self ^. js "release") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-release DynamicsCompressorOptions.release specification>
+getReleaseUnsafe :: (MonadDOM m, HasCallStack) => DynamicsCompressorOptions -> m Float
+getReleaseUnsafe self = liftDOM ((((self ^. js "release") >>= 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 ((P.realToFrac <$> ((self ^. js "release") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-threshold DynamicsCompressorOptions.threshold specification>
+setThreshold :: (MonadDOM m) => DynamicsCompressorOptions -> Float -> m ()
+setThreshold self val = liftDOM (void (self ^. jss "threshold" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-threshold DynamicsCompressorOptions.threshold specification>
+getThreshold :: (MonadDOM m) => DynamicsCompressorOptions -> m (Maybe Float)
+getThreshold self = liftDOM (((self ^. js "threshold") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-dynamicscompressoroptions-threshold DynamicsCompressorOptions.threshold specification>
+getThresholdUnsafe :: (MonadDOM m, HasCallStack) => DynamicsCompressorOptions -> m Float
+getThresholdUnsafe self = liftDOM ((((self ^. js "threshold") >>= 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 ((P.realToFrac <$> ((self ^. js "threshold") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/EXTBlendMinMax.hs b/src/JSDOM/Generated/EXTBlendMinMax.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/EXTBlendMinMax.hs
+++ /dev/null
@@ -1,23 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.EXTBlendMinMax
-       (pattern MIN_EXT, pattern MAX_EXT, EXTBlendMinMax(..),
-        gTypeEXTBlendMinMax)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-pattern MIN_EXT = 32775
-pattern MAX_EXT = 32776
diff --git a/src/JSDOM/Generated/EXTTextureFilterAnisotropic.hs b/src/JSDOM/Generated/EXTTextureFilterAnisotropic.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/EXTTextureFilterAnisotropic.hs
+++ /dev/null
@@ -1,24 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-pattern TEXTURE_MAX_ANISOTROPY_EXT = 34046
-pattern MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047
diff --git a/src/JSDOM/Generated/EXT_blend_minmax.hs b/src/JSDOM/Generated/EXT_blend_minmax.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EXT_blend_minmax.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_blend_minmax (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+pattern MIN_EXT = 0x8007
+
+pattern MAX_EXT = 0x8008
diff --git a/src/JSDOM/Generated/EXT_clip_control.hs b/src/JSDOM/Generated/EXT_clip_control.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EXT_clip_control.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_clip_control (webref). Do not edit.
+module JSDOM.Generated.EXT_clip_control
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+clipControlEXT :: (MonadDOM m) => EXT_clip_control -> Word -> Word -> m ()
+clipControlEXT self origin depth = liftDOM (void (self ^. jsf "clipControlEXT" [toJSVal origin, toJSVal 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/JSDOM/Generated/EXT_color_buffer_float.hs b/src/JSDOM/Generated/EXT_color_buffer_float.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EXT_color_buffer_float.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_color_buffer_float (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/EXT_color_buffer_half_float.hs b/src/JSDOM/Generated/EXT_color_buffer_half_float.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EXT_color_buffer_half_float.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# 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 JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.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/JSDOM/Generated/EXT_float_blend.hs b/src/JSDOM/Generated/EXT_float_blend.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EXT_float_blend.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_float_blend (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/EXT_frag_depth.hs b/src/JSDOM/Generated/EXT_frag_depth.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EXT_frag_depth.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_frag_depth (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/EXT_polygon_offset_clamp.hs b/src/JSDOM/Generated/EXT_polygon_offset_clamp.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EXT_polygon_offset_clamp.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_polygon_offset_clamp (webref). Do not edit.
+module JSDOM.Generated.EXT_polygon_offset_clamp
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+polygonOffsetClampEXT :: (MonadDOM m) => EXT_polygon_offset_clamp -> Float -> Float -> Float -> m ()
+polygonOffsetClampEXT self factor units clamp = liftDOM (void (self ^. jsf "polygonOffsetClampEXT" [toJSVal factor, toJSVal units, toJSVal clamp]))
+
+pattern POLYGON_OFFSET_CLAMP_EXT = 0x8E1B
diff --git a/src/JSDOM/Generated/EXT_sRGB.hs b/src/JSDOM/Generated/EXT_sRGB.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EXT_sRGB.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_sRGB (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.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/JSDOM/Generated/EXT_shader_texture_lod.hs b/src/JSDOM/Generated/EXT_shader_texture_lod.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EXT_shader_texture_lod.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_shader_texture_lod (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/EXT_texture_compression_bptc.hs b/src/JSDOM/Generated/EXT_texture_compression_bptc.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EXT_texture_compression_bptc.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_texture_compression_bptc (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.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/JSDOM/Generated/EXT_texture_compression_rgtc.hs b/src/JSDOM/Generated/EXT_texture_compression_rgtc.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EXT_texture_compression_rgtc.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_texture_compression_rgtc (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.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/JSDOM/Generated/EXT_texture_filter_anisotropic.hs b/src/JSDOM/Generated/EXT_texture_filter_anisotropic.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EXT_texture_filter_anisotropic.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_texture_filter_anisotropic (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+pattern TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE
+
+pattern MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF
diff --git a/src/JSDOM/Generated/EXT_texture_mirror_clamp_to_edge.hs b/src/JSDOM/Generated/EXT_texture_mirror_clamp_to_edge.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EXT_texture_mirror_clamp_to_edge.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# 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 JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+pattern MIRROR_CLAMP_TO_EDGE_EXT = 0x8743
diff --git a/src/JSDOM/Generated/EXT_texture_norm16.hs b/src/JSDOM/Generated/EXT_texture_norm16.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EXT_texture_norm16.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from EXT_texture_norm16 (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.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/JSDOM/Generated/EXTsRGB.hs b/src/JSDOM/Generated/EXTsRGB.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/EXTsRGB.hs
+++ /dev/null
@@ -1,27 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.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/JSDOM/Generated/EffectTiming.hs b/src/JSDOM/Generated/EffectTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EffectTiming.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module JSDOM.Generated.EffectTiming
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/web-animations-1/#dictdef-effecttiming EffectTiming specification>
+newEffectTiming :: (MonadDOM m) => m EffectTiming
+newEffectTiming = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toEffectTiming self) ^. jss "fill" (toJSVal val)))
+
+-- | <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 ((((Types.toEffectTiming self) ^. js "fill") >>= 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 (((((Types.toEffectTiming self) ^. js "fill") >>= 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 ((((Types.toEffectTiming self) ^. js "fill") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toEffectTiming self) ^. jss "iterationStart" (toJSVal val)))
+
+-- | <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 ((((Types.toEffectTiming self) ^. js "iterationStart") >>= 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 (((((Types.toEffectTiming self) ^. js "iterationStart") >>= 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 ((((Types.toEffectTiming self) ^. js "iterationStart") >>= valToNumber))
+
+-- | <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 ((Types.toEffectTiming self) ^. jss "iterations" (toJSVal val)))
+
+-- | <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 ((((Types.toEffectTiming self) ^. js "iterations") >>= 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 (((((Types.toEffectTiming self) ^. js "iterations") >>= 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 ((((Types.toEffectTiming self) ^. js "iterations") >>= valToNumber))
+
+-- | <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 ((Types.toEffectTiming self) ^. jss "direction" (toJSVal val)))
+
+-- | <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 ((((Types.toEffectTiming self) ^. js "direction") >>= 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 (((((Types.toEffectTiming self) ^. js "direction") >>= 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 ((((Types.toEffectTiming self) ^. js "direction") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toEffectTiming self) ^. jss "easing" (toJSVal val)))
+
+-- | <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 ((((Types.toEffectTiming self) ^. js "easing") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toEffectTiming self) ^. js "easing") >>= fromMaybeJSString) >>= 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 ((((Types.toEffectTiming self) ^. js "easing") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toEffectTiming self) ^. jss "delay" (toJSVal val)))
+
+-- | <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 ((((Types.toEffectTiming self) ^. js "delay") >>= 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 (((((Types.toEffectTiming self) ^. js "delay") >>= 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 ((((Types.toEffectTiming self) ^. js "delay") >>= valToNumber))
+
+-- | <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 ((Types.toEffectTiming self) ^. jss "endDelay" (toJSVal val)))
+
+-- | <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 ((((Types.toEffectTiming self) ^. js "endDelay") >>= 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 (((((Types.toEffectTiming self) ^. js "endDelay") >>= 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 ((((Types.toEffectTiming self) ^. js "endDelay") >>= valToNumber))
+
+-- | <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 ((Types.toEffectTiming self) ^. jss "playbackRate" (toJSVal val)))
+
+-- | <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 ((((Types.toEffectTiming self) ^. js "playbackRate") >>= 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 (((((Types.toEffectTiming self) ^. js "playbackRate") >>= 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 ((((Types.toEffectTiming self) ^. js "playbackRate") >>= valToNumber))
+
+-- | <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 ((Types.toEffectTiming self) ^. jss "duration" (toJSVal val)))
+
+-- | <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 ((((Types.toEffectTiming self) ^. js "duration") >>= 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 (((((Types.toEffectTiming self) ^. js "duration") >>= 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 ((((Types.toEffectTiming self) ^. js "duration") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Element.hs b/src/JSDOM/Generated/Element.hs
--- a/src/JSDOM/Generated/Element.hs
+++ b/src/JSDOM/Generated/Element.hs
@@ -1,1100 +1,596 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.Element
-       (hasAttributes, hasAttributes_, getAttributeNames,
-        getAttributeNames_, getAttribute, getAttribute_,
-        getAttributeUnsafe, getAttributeUnchecked, getAttributeNS,
-        getAttributeNS_, getAttributeNSUnsafe, getAttributeNSUnchecked,
-        setAttribute, setAttributeNS, removeAttribute, removeAttributeNS,
-        hasAttribute, hasAttribute_, hasAttributeNS, hasAttributeNS_,
-        getAttributeNode, getAttributeNode_, getAttributeNodeUnsafe,
-        getAttributeNodeUnchecked, getAttributeNodeNS, getAttributeNodeNS_,
-        getAttributeNodeNSUnsafe, getAttributeNodeNSUnchecked,
-        setAttributeNode, setAttributeNode_, setAttributeNodeUnsafe,
-        setAttributeNodeUnchecked, setAttributeNodeNS, setAttributeNodeNS_,
-        setAttributeNodeNSUnsafe, setAttributeNodeNSUnchecked,
-        removeAttributeNode, removeAttributeNode_, attachShadow,
-        attachShadow_, closest, closest_, closestUnsafe, closestUnchecked,
-        matches, matches_, webkitMatchesSelector, webkitMatchesSelector_,
-        getElementsByTagName, getElementsByTagName_,
-        getElementsByTagNameNS, getElementsByTagNameNS_,
-        getElementsByClassName, getElementsByClassName_,
-        insertAdjacentElement, insertAdjacentElement_,
-        insertAdjacentElementUnsafe, insertAdjacentElementUnchecked,
-        insertAdjacentText, getClientRects, getClientRects_,
-        getBoundingClientRect, getBoundingClientRect_, scrollIntoView,
-        scrollOpt, scroll, scrollToOpt, scrollTo, scrollByOpt, scrollBy,
-        insertAdjacentHTML, webkitRequestFullScreen,
-        webkitRequestFullscreen, requestPointerLock,
-        webkitGetRegionFlowRanges, webkitGetRegionFlowRanges_,
-        scrollIntoViewIfNeeded, getNamespaceURI, getNamespaceURIUnsafe,
-        getNamespaceURIUnchecked, getPrefix, getPrefixUnsafe,
-        getPrefixUnchecked, getLocalName, getTagName, setId, getId,
-        setClassName, getClassName, getClassList, setSlot, getSlot,
-        getAttributes, getShadowRoot, getShadowRootUnsafe,
-        getShadowRootUnchecked, setScrollTop, getScrollTop, setScrollLeft,
-        getScrollLeft, getScrollWidth, getScrollHeight, getClientTop,
-        getClientLeft, getClientWidth, getClientHeight, setInnerHTML,
-        getInnerHTML, setOuterHTML, getOuterHTML, 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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttributes Mozilla Element.hasAttributes documentation> 
-hasAttributes :: (MonadDOM m, IsElement self) => self -> m Bool
-hasAttributes self
-  = liftDOM
-      (((toElement self) ^. jsf "hasAttributes" ()) >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttributes Mozilla Element.hasAttributes documentation> 
-hasAttributes_ :: (MonadDOM m, IsElement self) => self -> m ()
-hasAttributes_ self
-  = liftDOM (void ((toElement self) ^. jsf "hasAttributes" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNames Mozilla Element.getAttributeNames documentation> 
-getAttributeNames ::
-                  (MonadDOM m, IsElement self, FromJSString result) =>
-                    self -> m [result]
-getAttributeNames self
-  = liftDOM
-      (((toElement self) ^. jsf "getAttributeNames" ()) >>=
-         fromJSArrayUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNames Mozilla Element.getAttributeNames documentation> 
-getAttributeNames_ :: (MonadDOM m, IsElement self) => self -> m ()
-getAttributeNames_ self
-  = liftDOM (void ((toElement self) ^. jsf "getAttributeNames" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
-getAttribute ::
-             (MonadDOM m, IsElement self, ToJSString qualifiedName,
-              FromJSString result) =>
-               self -> qualifiedName -> m (Maybe result)
-getAttribute self qualifiedName
-  = liftDOM
-      (((toElement self) ^. jsf "getAttribute" [toJSVal qualifiedName])
-         >>= fromMaybeJSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
-getAttribute_ ::
-              (MonadDOM m, IsElement self, ToJSString qualifiedName) =>
-                self -> qualifiedName -> m ()
-getAttribute_ self qualifiedName
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "getAttribute" [toJSVal qualifiedName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
-getAttributeUnsafe ::
-                   (MonadDOM m, IsElement self, ToJSString qualifiedName,
-                    HasCallStack, FromJSString result) =>
-                     self -> qualifiedName -> m result
-getAttributeUnsafe self qualifiedName
-  = liftDOM
-      ((((toElement self) ^. jsf "getAttribute" [toJSVal qualifiedName])
-          >>= fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
-getAttributeUnchecked ::
-                      (MonadDOM m, IsElement self, ToJSString qualifiedName,
-                       FromJSString result) =>
-                        self -> qualifiedName -> m result
-getAttributeUnchecked self qualifiedName
-  = liftDOM
-      (((toElement self) ^. jsf "getAttribute" [toJSVal qualifiedName])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNS Mozilla Element.getAttributeNS documentation> 
-getAttributeNS ::
-               (MonadDOM m, IsElement self, ToJSString namespaceURI,
-                ToJSString localName, FromJSString result) =>
-                 self -> Maybe namespaceURI -> localName -> m (Maybe result)
-getAttributeNS self namespaceURI localName
-  = liftDOM
-      (((toElement self) ^. jsf "getAttributeNS"
-          [toJSVal namespaceURI, toJSVal localName])
-         >>= fromMaybeJSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNS Mozilla Element.getAttributeNS documentation> 
-getAttributeNS_ ::
-                (MonadDOM m, IsElement self, ToJSString namespaceURI,
-                 ToJSString localName) =>
-                  self -> Maybe namespaceURI -> localName -> m ()
-getAttributeNS_ self namespaceURI localName
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "getAttributeNS"
-            [toJSVal namespaceURI, toJSVal localName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNS Mozilla Element.getAttributeNS documentation> 
-getAttributeNSUnsafe ::
-                     (MonadDOM m, IsElement self, ToJSString namespaceURI,
-                      ToJSString localName, HasCallStack, FromJSString result) =>
-                       self -> Maybe namespaceURI -> localName -> m result
-getAttributeNSUnsafe self namespaceURI localName
-  = liftDOM
-      ((((toElement self) ^. jsf "getAttributeNS"
-           [toJSVal namespaceURI, toJSVal localName])
-          >>= fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNS Mozilla Element.getAttributeNS documentation> 
-getAttributeNSUnchecked ::
-                        (MonadDOM m, IsElement self, ToJSString namespaceURI,
-                         ToJSString localName, FromJSString result) =>
-                          self -> Maybe namespaceURI -> localName -> m result
-getAttributeNSUnchecked self namespaceURI localName
-  = liftDOM
-      (((toElement self) ^. jsf "getAttributeNS"
-          [toJSVal namespaceURI, toJSVal localName])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttribute Mozilla Element.setAttribute documentation> 
-setAttribute ::
-             (MonadDOM m, IsElement self, ToJSString qualifiedName,
-              ToJSString value) =>
-               self -> qualifiedName -> value -> m ()
-setAttribute self qualifiedName value
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "setAttribute"
-            [toJSVal qualifiedName, toJSVal value]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNS Mozilla Element.setAttributeNS documentation> 
-setAttributeNS ::
-               (MonadDOM m, IsElement self, ToJSString namespaceURI,
-                ToJSString qualifiedName, ToJSString value) =>
-                 self -> Maybe namespaceURI -> qualifiedName -> value -> m ()
-setAttributeNS self namespaceURI qualifiedName value
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "setAttributeNS"
-            [toJSVal namespaceURI, toJSVal qualifiedName, toJSVal value]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttribute Mozilla Element.removeAttribute documentation> 
-removeAttribute ::
-                (MonadDOM m, IsElement self, ToJSString qualifiedName) =>
-                  self -> qualifiedName -> m ()
-removeAttribute self qualifiedName
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "removeAttribute"
-            [toJSVal qualifiedName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttributeNS Mozilla Element.removeAttributeNS documentation> 
-removeAttributeNS ::
-                  (MonadDOM m, IsElement self, ToJSString namespaceURI,
-                   ToJSString localName) =>
-                    self -> Maybe namespaceURI -> localName -> m ()
-removeAttributeNS self namespaceURI localName
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "removeAttributeNS"
-            [toJSVal namespaceURI, toJSVal localName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttribute Mozilla Element.hasAttribute documentation> 
-hasAttribute ::
-             (MonadDOM m, IsElement self, ToJSString qualifiedName) =>
-               self -> qualifiedName -> m Bool
-hasAttribute self qualifiedName
-  = liftDOM
-      (((toElement self) ^. jsf "hasAttribute" [toJSVal qualifiedName])
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttribute Mozilla Element.hasAttribute documentation> 
-hasAttribute_ ::
-              (MonadDOM m, IsElement self, ToJSString qualifiedName) =>
-                self -> qualifiedName -> m ()
-hasAttribute_ self qualifiedName
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "hasAttribute" [toJSVal qualifiedName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttributeNS Mozilla Element.hasAttributeNS documentation> 
-hasAttributeNS ::
-               (MonadDOM m, IsElement self, ToJSString namespaceURI,
-                ToJSString localName) =>
-                 self -> Maybe namespaceURI -> localName -> m Bool
-hasAttributeNS self namespaceURI localName
-  = liftDOM
-      (((toElement self) ^. jsf "hasAttributeNS"
-          [toJSVal namespaceURI, toJSVal localName])
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttributeNS Mozilla Element.hasAttributeNS documentation> 
-hasAttributeNS_ ::
-                (MonadDOM m, IsElement self, ToJSString namespaceURI,
-                 ToJSString localName) =>
-                  self -> Maybe namespaceURI -> localName -> m ()
-hasAttributeNS_ self namespaceURI localName
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "hasAttributeNS"
-            [toJSVal namespaceURI, toJSVal localName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNode Mozilla Element.getAttributeNode documentation> 
-getAttributeNode ::
-                 (MonadDOM m, IsElement self, ToJSString qualifiedName) =>
-                   self -> qualifiedName -> m (Maybe Attr)
-getAttributeNode self qualifiedName
-  = liftDOM
-      (((toElement self) ^. jsf "getAttributeNode"
-          [toJSVal qualifiedName])
-         >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNode Mozilla Element.getAttributeNode documentation> 
-getAttributeNode_ ::
-                  (MonadDOM m, IsElement self, ToJSString qualifiedName) =>
-                    self -> qualifiedName -> m ()
-getAttributeNode_ self qualifiedName
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "getAttributeNode"
-            [toJSVal qualifiedName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNode Mozilla Element.getAttributeNode documentation> 
-getAttributeNodeUnsafe ::
-                       (MonadDOM m, IsElement self, ToJSString qualifiedName,
-                        HasCallStack) =>
-                         self -> qualifiedName -> m Attr
-getAttributeNodeUnsafe self qualifiedName
-  = liftDOM
-      ((((toElement self) ^. jsf "getAttributeNode"
-           [toJSVal qualifiedName])
-          >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNode Mozilla Element.getAttributeNode documentation> 
-getAttributeNodeUnchecked ::
-                          (MonadDOM m, IsElement self, ToJSString qualifiedName) =>
-                            self -> qualifiedName -> m Attr
-getAttributeNodeUnchecked self qualifiedName
-  = liftDOM
-      (((toElement self) ^. jsf "getAttributeNode"
-          [toJSVal qualifiedName])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNodeNS Mozilla Element.getAttributeNodeNS documentation> 
-getAttributeNodeNS ::
-                   (MonadDOM m, IsElement self, ToJSString namespaceURI,
-                    ToJSString localName) =>
-                     self -> Maybe namespaceURI -> localName -> m (Maybe Attr)
-getAttributeNodeNS self namespaceURI localName
-  = liftDOM
-      (((toElement self) ^. jsf "getAttributeNodeNS"
-          [toJSVal namespaceURI, toJSVal localName])
-         >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNodeNS Mozilla Element.getAttributeNodeNS documentation> 
-getAttributeNodeNS_ ::
-                    (MonadDOM m, IsElement self, ToJSString namespaceURI,
-                     ToJSString localName) =>
-                      self -> Maybe namespaceURI -> localName -> m ()
-getAttributeNodeNS_ self namespaceURI localName
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "getAttributeNodeNS"
-            [toJSVal namespaceURI, toJSVal localName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNodeNS Mozilla Element.getAttributeNodeNS documentation> 
-getAttributeNodeNSUnsafe ::
-                         (MonadDOM m, IsElement self, ToJSString namespaceURI,
-                          ToJSString localName, HasCallStack) =>
-                           self -> Maybe namespaceURI -> localName -> m Attr
-getAttributeNodeNSUnsafe self namespaceURI localName
-  = liftDOM
-      ((((toElement self) ^. jsf "getAttributeNodeNS"
-           [toJSVal namespaceURI, toJSVal localName])
-          >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNodeNS Mozilla Element.getAttributeNodeNS documentation> 
-getAttributeNodeNSUnchecked ::
-                            (MonadDOM m, IsElement self, ToJSString namespaceURI,
-                             ToJSString localName) =>
-                              self -> Maybe namespaceURI -> localName -> m Attr
-getAttributeNodeNSUnchecked self namespaceURI localName
-  = liftDOM
-      (((toElement self) ^. jsf "getAttributeNodeNS"
-          [toJSVal namespaceURI, toJSVal localName])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNode Mozilla Element.setAttributeNode documentation> 
-setAttributeNode ::
-                 (MonadDOM m, IsElement self) => self -> Attr -> m (Maybe Attr)
-setAttributeNode self attr
-  = liftDOM
-      (((toElement self) ^. jsf "setAttributeNode" [toJSVal attr]) >>=
-         fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNode Mozilla Element.setAttributeNode documentation> 
-setAttributeNode_ ::
-                  (MonadDOM m, IsElement self) => self -> Attr -> m ()
-setAttributeNode_ self attr
-  = liftDOM
-      (void ((toElement self) ^. jsf "setAttributeNode" [toJSVal attr]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNode Mozilla Element.setAttributeNode documentation> 
-setAttributeNodeUnsafe ::
-                       (MonadDOM m, IsElement self, HasCallStack) =>
-                         self -> Attr -> m Attr
-setAttributeNodeUnsafe self attr
-  = liftDOM
-      ((((toElement self) ^. jsf "setAttributeNode" [toJSVal attr]) >>=
-          fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNode Mozilla Element.setAttributeNode documentation> 
-setAttributeNodeUnchecked ::
-                          (MonadDOM m, IsElement self) => self -> Attr -> m Attr
-setAttributeNodeUnchecked self attr
-  = liftDOM
-      (((toElement self) ^. jsf "setAttributeNode" [toJSVal attr]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNodeNS Mozilla Element.setAttributeNodeNS documentation> 
-setAttributeNodeNS ::
-                   (MonadDOM m, IsElement self) => self -> Attr -> m (Maybe Attr)
-setAttributeNodeNS self attr
-  = liftDOM
-      (((toElement self) ^. jsf "setAttributeNodeNS" [toJSVal attr]) >>=
-         fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNodeNS Mozilla Element.setAttributeNodeNS documentation> 
-setAttributeNodeNS_ ::
-                    (MonadDOM m, IsElement self) => self -> Attr -> m ()
-setAttributeNodeNS_ self attr
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "setAttributeNodeNS" [toJSVal attr]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNodeNS Mozilla Element.setAttributeNodeNS documentation> 
-setAttributeNodeNSUnsafe ::
-                         (MonadDOM m, IsElement self, HasCallStack) =>
-                           self -> Attr -> m Attr
-setAttributeNodeNSUnsafe self attr
-  = liftDOM
-      ((((toElement self) ^. jsf "setAttributeNodeNS" [toJSVal attr]) >>=
-          fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNodeNS Mozilla Element.setAttributeNodeNS documentation> 
-setAttributeNodeNSUnchecked ::
-                            (MonadDOM m, IsElement self) => self -> Attr -> m Attr
-setAttributeNodeNSUnchecked self attr
-  = liftDOM
-      (((toElement self) ^. jsf "setAttributeNodeNS" [toJSVal attr]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttributeNode Mozilla Element.removeAttributeNode documentation> 
-removeAttributeNode ::
-                    (MonadDOM m, IsElement self) => self -> Attr -> m Attr
-removeAttributeNode self attr
-  = liftDOM
-      (((toElement self) ^. jsf "removeAttributeNode" [toJSVal attr]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttributeNode Mozilla Element.removeAttributeNode documentation> 
-removeAttributeNode_ ::
-                     (MonadDOM m, IsElement self) => self -> Attr -> m ()
-removeAttributeNode_ self attr
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "removeAttributeNode" [toJSVal attr]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.attachShadow Mozilla Element.attachShadow documentation> 
-attachShadow ::
-             (MonadDOM m, IsElement self) =>
-               self -> ShadowRootInit -> m ShadowRoot
-attachShadow self init
-  = liftDOM
-      (((toElement self) ^. jsf "attachShadow" [toJSVal init]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.attachShadow Mozilla Element.attachShadow documentation> 
-attachShadow_ ::
-              (MonadDOM m, IsElement self) => self -> ShadowRootInit -> m ()
-attachShadow_ self init
-  = liftDOM
-      (void ((toElement self) ^. jsf "attachShadow" [toJSVal init]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.closest Mozilla Element.closest documentation> 
-closest ::
-        (MonadDOM m, IsElement self, ToJSString selectors) =>
-          self -> selectors -> m (Maybe Element)
-closest self selectors
-  = liftDOM
-      (((toElement self) ^. jsf "closest" [toJSVal selectors]) >>=
-         fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.closest Mozilla Element.closest documentation> 
-closest_ ::
-         (MonadDOM m, IsElement self, ToJSString selectors) =>
-           self -> selectors -> m ()
-closest_ self selectors
-  = liftDOM
-      (void ((toElement self) ^. jsf "closest" [toJSVal selectors]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.closest Mozilla Element.closest documentation> 
-closestUnsafe ::
-              (MonadDOM m, IsElement self, ToJSString selectors, HasCallStack) =>
-                self -> selectors -> m Element
-closestUnsafe self selectors
-  = liftDOM
-      ((((toElement self) ^. jsf "closest" [toJSVal selectors]) >>=
-          fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.closest Mozilla Element.closest documentation> 
-closestUnchecked ::
-                 (MonadDOM m, IsElement self, ToJSString selectors) =>
-                   self -> selectors -> m Element
-closestUnchecked self selectors
-  = liftDOM
-      (((toElement self) ^. jsf "closest" [toJSVal selectors]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.matches Mozilla Element.matches documentation> 
-matches ::
-        (MonadDOM m, IsElement self, ToJSString selectors) =>
-          self -> selectors -> m Bool
-matches self selectors
-  = liftDOM
-      (((toElement self) ^. jsf "matches" [toJSVal selectors]) >>=
-         valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.matches Mozilla Element.matches documentation> 
-matches_ ::
-         (MonadDOM m, IsElement self, ToJSString selectors) =>
-           self -> selectors -> m ()
-matches_ self selectors
-  = liftDOM
-      (void ((toElement self) ^. jsf "matches" [toJSVal selectors]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitMatchesSelector Mozilla Element.webkitMatchesSelector documentation> 
-webkitMatchesSelector ::
-                      (MonadDOM m, IsElement self, ToJSString selectors) =>
-                        self -> selectors -> m Bool
-webkitMatchesSelector self selectors
-  = liftDOM
-      (((toElement self) ^. jsf "webkitMatchesSelector"
-          [toJSVal selectors])
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitMatchesSelector Mozilla Element.webkitMatchesSelector documentation> 
-webkitMatchesSelector_ ::
-                       (MonadDOM m, IsElement self, ToJSString selectors) =>
-                         self -> selectors -> m ()
-webkitMatchesSelector_ self selectors
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "webkitMatchesSelector"
-            [toJSVal selectors]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagName Mozilla Element.getElementsByTagName documentation> 
-getElementsByTagName ::
-                     (MonadDOM m, IsElement self, ToJSString qualifiedName) =>
-                       self -> qualifiedName -> m HTMLCollection
-getElementsByTagName self qualifiedName
-  = liftDOM
-      (((toElement self) ^. jsf "getElementsByTagName"
-          [toJSVal qualifiedName])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagName Mozilla Element.getElementsByTagName documentation> 
-getElementsByTagName_ ::
-                      (MonadDOM m, IsElement self, ToJSString qualifiedName) =>
-                        self -> qualifiedName -> m ()
-getElementsByTagName_ self qualifiedName
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "getElementsByTagName"
-            [toJSVal qualifiedName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagNameNS Mozilla Element.getElementsByTagNameNS documentation> 
-getElementsByTagNameNS ::
-                       (MonadDOM m, IsElement self, ToJSString namespaceURI,
-                        ToJSString localName) =>
-                         self -> Maybe namespaceURI -> localName -> m HTMLCollection
-getElementsByTagNameNS self namespaceURI localName
-  = liftDOM
-      (((toElement self) ^. jsf "getElementsByTagNameNS"
-          [toJSVal namespaceURI, toJSVal localName])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagNameNS Mozilla Element.getElementsByTagNameNS documentation> 
-getElementsByTagNameNS_ ::
-                        (MonadDOM m, IsElement self, ToJSString namespaceURI,
-                         ToJSString localName) =>
-                          self -> Maybe namespaceURI -> localName -> m ()
-getElementsByTagNameNS_ self namespaceURI localName
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "getElementsByTagNameNS"
-            [toJSVal namespaceURI, toJSVal localName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByClassName Mozilla Element.getElementsByClassName documentation> 
-getElementsByClassName ::
-                       (MonadDOM m, IsElement self, ToJSString name) =>
-                         self -> name -> m HTMLCollection
-getElementsByClassName self name
-  = liftDOM
-      (((toElement self) ^. jsf "getElementsByClassName" [toJSVal name])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByClassName Mozilla Element.getElementsByClassName documentation> 
-getElementsByClassName_ ::
-                        (MonadDOM m, IsElement self, ToJSString name) =>
-                          self -> name -> m ()
-getElementsByClassName_ self name
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "getElementsByClassName" [toJSVal name]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentElement Mozilla Element.insertAdjacentElement documentation> 
-insertAdjacentElement ::
-                      (MonadDOM m, IsElement self, ToJSString where',
-                       IsElement element) =>
-                        self -> where' -> element -> m (Maybe Element)
-insertAdjacentElement self where' element
-  = liftDOM
-      (((toElement self) ^. jsf "insertAdjacentElement"
-          [toJSVal where', toJSVal element])
-         >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentElement Mozilla Element.insertAdjacentElement documentation> 
-insertAdjacentElement_ ::
-                       (MonadDOM m, IsElement self, ToJSString where',
-                        IsElement element) =>
-                         self -> where' -> element -> m ()
-insertAdjacentElement_ self where' element
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "insertAdjacentElement"
-            [toJSVal where', toJSVal element]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentElement Mozilla Element.insertAdjacentElement documentation> 
-insertAdjacentElementUnsafe ::
-                            (MonadDOM m, IsElement self, ToJSString where', IsElement element,
-                             HasCallStack) =>
-                              self -> where' -> element -> m Element
-insertAdjacentElementUnsafe self where' element
-  = liftDOM
-      ((((toElement self) ^. jsf "insertAdjacentElement"
-           [toJSVal where', toJSVal element])
-          >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentElement Mozilla Element.insertAdjacentElement documentation> 
-insertAdjacentElementUnchecked ::
-                               (MonadDOM m, IsElement self, ToJSString where',
-                                IsElement element) =>
-                                 self -> where' -> element -> m Element
-insertAdjacentElementUnchecked self where' element
-  = liftDOM
-      (((toElement self) ^. jsf "insertAdjacentElement"
-          [toJSVal where', toJSVal element])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentText Mozilla Element.insertAdjacentText documentation> 
-insertAdjacentText ::
-                   (MonadDOM m, IsElement self, ToJSString where',
-                    ToJSString data') =>
-                     self -> where' -> data' -> m ()
-insertAdjacentText self where' data'
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "insertAdjacentText"
-            [toJSVal where', toJSVal data']))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getClientRects Mozilla Element.getClientRects documentation> 
-getClientRects ::
-               (MonadDOM m, IsElement self) => self -> m [DOMRect]
-getClientRects self
-  = liftDOM
-      (((toElement self) ^. jsf "getClientRects" ()) >>=
-         fromJSArrayUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getClientRects Mozilla Element.getClientRects documentation> 
-getClientRects_ :: (MonadDOM m, IsElement self) => self -> m ()
-getClientRects_ self
-  = liftDOM (void ((toElement self) ^. jsf "getClientRects" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getBoundingClientRect Mozilla Element.getBoundingClientRect documentation> 
-getBoundingClientRect ::
-                      (MonadDOM m, IsElement self) => self -> m DOMRect
-getBoundingClientRect self
-  = liftDOM
-      (((toElement self) ^. jsf "getBoundingClientRect" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getBoundingClientRect Mozilla Element.getBoundingClientRect documentation> 
-getBoundingClientRect_ ::
-                       (MonadDOM m, IsElement self) => self -> m ()
-getBoundingClientRect_ self
-  = liftDOM
-      (void ((toElement self) ^. jsf "getBoundingClientRect" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollIntoView Mozilla Element.scrollIntoView documentation> 
-scrollIntoView ::
-               (MonadDOM m, IsElement self) => self -> Bool -> m ()
-scrollIntoView self alignWithTop
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "scrollIntoView" [toJSVal alignWithTop]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scroll Mozilla Element.scroll documentation> 
-scrollOpt ::
-          (MonadDOM m, IsElement self) =>
-            self -> Maybe ScrollToOptions -> m ()
-scrollOpt self options
-  = liftDOM
-      (void ((toElement self) ^. jsf "scroll" [toJSVal options]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scroll Mozilla Element.scroll documentation> 
-scroll ::
-       (MonadDOM m, IsElement self) => self -> Double -> Double -> m ()
-scroll self x y
-  = liftDOM
-      (void ((toElement self) ^. jsf "scroll" [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTo Mozilla Element.scrollTo documentation> 
-scrollToOpt ::
-            (MonadDOM m, IsElement self) =>
-              self -> Maybe ScrollToOptions -> m ()
-scrollToOpt self options
-  = liftDOM
-      (void ((toElement self) ^. jsf "scrollTo" [toJSVal options]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTo Mozilla Element.scrollTo documentation> 
-scrollTo ::
-         (MonadDOM m, IsElement self) => self -> Double -> Double -> m ()
-scrollTo self x y
-  = liftDOM
-      (void ((toElement self) ^. jsf "scrollTo" [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollBy Mozilla Element.scrollBy documentation> 
-scrollByOpt ::
-            (MonadDOM m, IsElement self) =>
-              self -> Maybe ScrollToOptions -> m ()
-scrollByOpt self option
-  = liftDOM
-      (void ((toElement self) ^. jsf "scrollBy" [toJSVal option]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollBy Mozilla Element.scrollBy documentation> 
-scrollBy ::
-         (MonadDOM m, IsElement self) => self -> Double -> Double -> m ()
-scrollBy self x y
-  = liftDOM
-      (void ((toElement self) ^. jsf "scrollBy" [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentHTML Mozilla Element.insertAdjacentHTML documentation> 
-insertAdjacentHTML ::
-                   (MonadDOM m, IsElement self, ToJSString position,
-                    ToJSString text) =>
-                     self -> position -> text -> m ()
-insertAdjacentHTML self position text
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "insertAdjacentHTML"
-            [toJSVal position, toJSVal text]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitRequestFullScreen Mozilla Element.webkitRequestFullScreen documentation> 
-webkitRequestFullScreen ::
-                        (MonadDOM m, IsElement self) => self -> m ()
-webkitRequestFullScreen self
-  = liftDOM
-      (void ((toElement self) ^. jsf "webkitRequestFullScreen" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitRequestFullscreen Mozilla Element.webkitRequestFullscreen documentation> 
-webkitRequestFullscreen ::
-                        (MonadDOM m, IsElement self) => self -> m ()
-webkitRequestFullscreen self
-  = liftDOM
-      (void ((toElement self) ^. jsf "webkitRequestFullscreen" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.requestPointerLock Mozilla Element.requestPointerLock documentation> 
-requestPointerLock :: (MonadDOM m, IsElement self) => self -> m ()
-requestPointerLock self
-  = liftDOM (void ((toElement self) ^. jsf "requestPointerLock" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitGetRegionFlowRanges Mozilla Element.webkitGetRegionFlowRanges documentation> 
-webkitGetRegionFlowRanges ::
-                          (MonadDOM m, IsElement self) => self -> m (Maybe [Range])
-webkitGetRegionFlowRanges self
-  = liftDOM
-      (((toElement self) ^. jsf "webkitGetRegionFlowRanges" ()) >>=
-         maybeNullOrUndefined' fromJSArrayUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitGetRegionFlowRanges Mozilla Element.webkitGetRegionFlowRanges documentation> 
-webkitGetRegionFlowRanges_ ::
-                           (MonadDOM m, IsElement self) => self -> m ()
-webkitGetRegionFlowRanges_ self
-  = liftDOM
-      (void ((toElement self) ^. jsf "webkitGetRegionFlowRanges" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollIntoViewIfNeeded Mozilla Element.scrollIntoViewIfNeeded documentation> 
-scrollIntoViewIfNeeded ::
-                       (MonadDOM m, IsElement self) => self -> Bool -> m ()
-scrollIntoViewIfNeeded self centerIfNeeded
-  = liftDOM
-      (void
-         ((toElement self) ^. jsf "scrollIntoViewIfNeeded"
-            [toJSVal centerIfNeeded]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.namespaceURI Mozilla Element.namespaceURI documentation> 
-getNamespaceURI ::
-                (MonadDOM m, IsElement self, FromJSString result) =>
-                  self -> m (Maybe result)
-getNamespaceURI self
-  = liftDOM
-      (((toElement self) ^. js "namespaceURI") >>= fromMaybeJSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.namespaceURI Mozilla Element.namespaceURI documentation> 
-getNamespaceURIUnsafe ::
-                      (MonadDOM m, IsElement self, HasCallStack, FromJSString result) =>
-                        self -> m result
-getNamespaceURIUnsafe self
-  = liftDOM
-      ((((toElement self) ^. js "namespaceURI") >>= fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.namespaceURI Mozilla Element.namespaceURI documentation> 
-getNamespaceURIUnchecked ::
-                         (MonadDOM m, IsElement self, FromJSString result) =>
-                           self -> m result
-getNamespaceURIUnchecked self
-  = liftDOM
-      (((toElement self) ^. js "namespaceURI") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.prefix Mozilla Element.prefix documentation> 
-getPrefix ::
-          (MonadDOM m, IsElement self, FromJSString result) =>
-            self -> m (Maybe result)
-getPrefix self
-  = liftDOM (((toElement self) ^. js "prefix") >>= fromMaybeJSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.prefix Mozilla Element.prefix documentation> 
-getPrefixUnsafe ::
-                (MonadDOM m, IsElement self, HasCallStack, FromJSString result) =>
-                  self -> m result
-getPrefixUnsafe self
-  = liftDOM
-      ((((toElement self) ^. js "prefix") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.prefix Mozilla Element.prefix documentation> 
-getPrefixUnchecked ::
-                   (MonadDOM m, IsElement self, FromJSString result) =>
-                     self -> m result
-getPrefixUnchecked self
-  = liftDOM
-      (((toElement self) ^. js "prefix") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.localName Mozilla Element.localName documentation> 
-getLocalName ::
-             (MonadDOM m, IsElement self, FromJSString result) =>
-               self -> m result
-getLocalName self
-  = liftDOM
-      (((toElement self) ^. js "localName") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.tagName Mozilla Element.tagName documentation> 
-getTagName ::
-           (MonadDOM m, IsElement self, FromJSString result) =>
-             self -> m result
-getTagName self
-  = liftDOM
-      (((toElement self) ^. js "tagName") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.id Mozilla Element.id documentation> 
-setId ::
-      (MonadDOM m, IsElement self, ToJSString val) => self -> val -> m ()
-setId self val
-  = liftDOM ((toElement self) ^. jss "id" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.id Mozilla Element.id documentation> 
-getId ::
-      (MonadDOM m, IsElement self, FromJSString result) =>
-        self -> m result
-getId self
-  = liftDOM (((toElement self) ^. js "id") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.className Mozilla Element.className documentation> 
-setClassName ::
-             (MonadDOM m, IsElement self, ToJSString val) => self -> val -> m ()
-setClassName self val
-  = liftDOM ((toElement self) ^. jss "className" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.className Mozilla Element.className documentation> 
-getClassName ::
-             (MonadDOM m, IsElement self, FromJSString result) =>
-               self -> m result
-getClassName self
-  = liftDOM
-      (((toElement self) ^. js "className") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.classList Mozilla Element.classList documentation> 
-getClassList ::
-             (MonadDOM m, IsElement self) => self -> m DOMTokenList
-getClassList self
-  = liftDOM
-      (((toElement self) ^. js "classList") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.slot Mozilla Element.slot documentation> 
-setSlot ::
-        (MonadDOM m, IsElement self, ToJSString val) => self -> val -> m ()
-setSlot self val
-  = liftDOM ((toElement self) ^. jss "slot" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.slot Mozilla Element.slot documentation> 
-getSlot ::
-        (MonadDOM m, IsElement self, FromJSString result) =>
-          self -> m result
-getSlot self
-  = liftDOM (((toElement self) ^. js "slot") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.attributes Mozilla Element.attributes documentation> 
-getAttributes ::
-              (MonadDOM m, IsElement self) => self -> m NamedNodeMap
-getAttributes self
-  = liftDOM
-      (((toElement self) ^. js "attributes") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.shadowRoot Mozilla Element.shadowRoot documentation> 
-getShadowRoot ::
-              (MonadDOM m, IsElement self) => self -> m (Maybe ShadowRoot)
-getShadowRoot self
-  = liftDOM (((toElement self) ^. js "shadowRoot") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.shadowRoot Mozilla Element.shadowRoot documentation> 
-getShadowRootUnsafe ::
-                    (MonadDOM m, IsElement self, HasCallStack) => self -> m ShadowRoot
-getShadowRootUnsafe self
-  = liftDOM
-      ((((toElement self) ^. js "shadowRoot") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.shadowRoot Mozilla Element.shadowRoot documentation> 
-getShadowRootUnchecked ::
-                       (MonadDOM m, IsElement self) => self -> m ShadowRoot
-getShadowRootUnchecked self
-  = liftDOM
-      (((toElement self) ^. js "shadowRoot") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTop Mozilla Element.scrollTop documentation> 
-setScrollTop :: (MonadDOM m, IsElement self) => self -> Int -> m ()
-setScrollTop self val
-  = liftDOM ((toElement self) ^. jss "scrollTop" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTop Mozilla Element.scrollTop documentation> 
-getScrollTop :: (MonadDOM m, IsElement self) => self -> m Int
-getScrollTop self
-  = liftDOM
-      (round <$> (((toElement self) ^. js "scrollTop") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollLeft Mozilla Element.scrollLeft documentation> 
-setScrollLeft ::
-              (MonadDOM m, IsElement self) => self -> Int -> m ()
-setScrollLeft self val
-  = liftDOM ((toElement self) ^. jss "scrollLeft" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollLeft Mozilla Element.scrollLeft documentation> 
-getScrollLeft :: (MonadDOM m, IsElement self) => self -> m Int
-getScrollLeft self
-  = liftDOM
-      (round <$> (((toElement self) ^. js "scrollLeft") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollWidth Mozilla Element.scrollWidth documentation> 
-getScrollWidth :: (MonadDOM m, IsElement self) => self -> m Int
-getScrollWidth self
-  = liftDOM
-      (round <$>
-         (((toElement self) ^. js "scrollWidth") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollHeight Mozilla Element.scrollHeight documentation> 
-getScrollHeight :: (MonadDOM m, IsElement self) => self -> m Int
-getScrollHeight self
-  = liftDOM
-      (round <$>
-         (((toElement self) ^. js "scrollHeight") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.clientTop Mozilla Element.clientTop documentation> 
-getClientTop :: (MonadDOM m, IsElement self) => self -> m Double
-getClientTop self
-  = liftDOM (((toElement self) ^. js "clientTop") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.clientLeft Mozilla Element.clientLeft documentation> 
-getClientLeft :: (MonadDOM m, IsElement self) => self -> m Double
-getClientLeft self
-  = liftDOM (((toElement self) ^. js "clientLeft") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.clientWidth Mozilla Element.clientWidth documentation> 
-getClientWidth :: (MonadDOM m, IsElement self) => self -> m Double
-getClientWidth self
-  = liftDOM (((toElement self) ^. js "clientWidth") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.clientHeight Mozilla Element.clientHeight documentation> 
-getClientHeight :: (MonadDOM m, IsElement self) => self -> m Double
-getClientHeight self
-  = liftDOM (((toElement self) ^. js "clientHeight") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML Mozilla Element.innerHTML documentation> 
-setInnerHTML ::
-             (MonadDOM m, IsElement self, ToJSString val) => self -> val -> m ()
-setInnerHTML self val
-  = liftDOM ((toElement self) ^. jss "innerHTML" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML Mozilla Element.innerHTML documentation> 
-getInnerHTML ::
-             (MonadDOM m, IsElement self, FromJSString result) =>
-               self -> m result
-getInnerHTML self
-  = liftDOM
-      (((toElement self) ^. js "innerHTML") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.outerHTML Mozilla Element.outerHTML documentation> 
-setOuterHTML ::
-             (MonadDOM m, IsElement self, ToJSString val) => self -> val -> m ()
-setOuterHTML self val
-  = liftDOM ((toElement self) ^. jss "outerHTML" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.outerHTML Mozilla Element.outerHTML documentation> 
-getOuterHTML ::
-             (MonadDOM m, IsElement self, FromJSString result) =>
-               self -> m result
-getOuterHTML self
-  = liftDOM
-      (((toElement self) ^. js "outerHTML") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitRegionOverset Mozilla Element.webkitRegionOverset documentation> 
-getWebkitRegionOverset ::
-                       (MonadDOM m, IsElement self, FromJSString result) =>
-                         self -> m result
-getWebkitRegionOverset self
-  = liftDOM
-      (((toElement self) ^. js "webkitRegionOverset") >>=
-         fromJSValUnchecked)
-
--- | <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 ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.Element
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toElement self) ^. jsf "attachShadow" [toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toElement self) ^. jsf "attachShadow" [toJSVal init]))
+
+-- | <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 ((((Types.toElement self) ^. jsf "checkVisibility" [P.maybe (P.return jsUndefined) toJSVal options]) >>= valToBool))
+
+-- | <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 ((Types.toElement self) ^. jsf "checkVisibility" [P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 ((((Types.toElement self) ^. jsf "closest" [toJSVal 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 ((Types.toElement self) ^. jsf "closest" [toJSVal 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 (((((Types.toElement self) ^. jsf "closest" [toJSVal 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 ((((Types.toElement self) ^. jsf "closest" [toJSVal selectors]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/computedStyleMap MDN Element.computedStyleMap documentation>
+computedStyleMap :: (MonadDOM m, IsElement self) => self -> m StylePropertyMapReadOnly
+computedStyleMap self = liftDOM ((((Types.toElement self) ^. jsf "computedStyleMap" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/computedStyleMap MDN Element.computedStyleMap documentation>
+computedStyleMap_ :: (MonadDOM m, IsElement self) => self -> m ()
+computedStyleMap_ self = liftDOM (void ((Types.toElement self) ^. jsf "computedStyleMap" ()))
+
+-- | <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 ((((Types.toElement self) ^. jsf "getAttribute" [toJSVal qualifiedName]) >>= fromMaybeJSString))
+
+-- | <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 ((Types.toElement self) ^. jsf "getAttribute" [toJSVal 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 (((((Types.toElement self) ^. jsf "getAttribute" [toJSVal qualifiedName]) >>= fromMaybeJSString) >>= 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 ((((Types.toElement self) ^. jsf "getAttribute" [toJSVal qualifiedName]) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toElement self) ^. jsf "getAttributeNS" [toJSVal namespace, toJSVal localName]) >>= fromMaybeJSString))
+
+-- | <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 ((Types.toElement self) ^. jsf "getAttributeNS" [toJSVal namespace, toJSVal 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 (((((Types.toElement self) ^. jsf "getAttributeNS" [toJSVal namespace, toJSVal localName]) >>= fromMaybeJSString) >>= 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 ((((Types.toElement self) ^. jsf "getAttributeNS" [toJSVal namespace, toJSVal localName]) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toElement self) ^. jsf "getAttributeNames" ()) >>= 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 ((Types.toElement self) ^. jsf "getAttributeNames" ()))
+
+-- | <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 ((((Types.toElement self) ^. jsf "getAttributeNode" [toJSVal 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 ((Types.toElement self) ^. jsf "getAttributeNode" [toJSVal 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 (((((Types.toElement self) ^. jsf "getAttributeNode" [toJSVal 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 ((((Types.toElement self) ^. jsf "getAttributeNode" [toJSVal qualifiedName]) >>= 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 (Maybe Attr)
+getAttributeNodeNS self namespace localName = liftDOM ((((Types.toElement self) ^. jsf "getAttributeNodeNS" [toJSVal namespace, toJSVal 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 ((Types.toElement self) ^. jsf "getAttributeNodeNS" [toJSVal namespace, toJSVal 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 (((((Types.toElement self) ^. jsf "getAttributeNodeNS" [toJSVal namespace, toJSVal 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 ((((Types.toElement self) ^. jsf "getAttributeNodeNS" [toJSVal namespace, toJSVal localName]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getBoundingClientRect MDN Element.getBoundingClientRect documentation>
+getBoundingClientRect :: (MonadDOM m, IsElement self) => self -> m DOMRect
+getBoundingClientRect self = liftDOM ((((Types.toElement self) ^. jsf "getBoundingClientRect" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getBoundingClientRect MDN Element.getBoundingClientRect documentation>
+getBoundingClientRect_ :: (MonadDOM m, IsElement self) => self -> m ()
+getBoundingClientRect_ self = liftDOM (void ((Types.toElement self) ^. jsf "getBoundingClientRect" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getClientRects MDN Element.getClientRects documentation>
+getClientRects :: (MonadDOM m, IsElement self) => self -> m DOMRectList
+getClientRects self = liftDOM ((((Types.toElement self) ^. jsf "getClientRects" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/getClientRects MDN Element.getClientRects documentation>
+getClientRects_ :: (MonadDOM m, IsElement self) => self -> m ()
+getClientRects_ self = liftDOM (void ((Types.toElement self) ^. jsf "getClientRects" ()))
+
+-- | <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 ((((Types.toElement self) ^. jsf "getElementsByClassName" [toJSVal classNames]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toElement self) ^. jsf "getElementsByClassName" [toJSVal classNames]))
+
+-- | <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 ((((Types.toElement self) ^. jsf "getElementsByTagName" [toJSVal qualifiedName]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toElement self) ^. jsf "getElementsByTagName" [toJSVal qualifiedName]))
+
+-- | <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 ((((Types.toElement self) ^. jsf "getElementsByTagNameNS" [toJSVal namespace, toJSVal localName]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toElement self) ^. jsf "getElementsByTagNameNS" [toJSVal namespace, toJSVal localName]))
+
+-- | <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 ((((Types.toElement self) ^. jsf "getHTML" [P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toElement self) ^. jsf "getHTML" [P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 ((((Types.toElement self) ^. jsf "hasAttribute" [toJSVal qualifiedName]) >>= valToBool))
+
+-- | <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 ((Types.toElement self) ^. jsf "hasAttribute" [toJSVal qualifiedName]))
+
+-- | <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 ((((Types.toElement self) ^. jsf "hasAttributeNS" [toJSVal namespace, toJSVal localName]) >>= valToBool))
+
+-- | <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 ((Types.toElement self) ^. jsf "hasAttributeNS" [toJSVal namespace, toJSVal localName]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/hasAttributes MDN Element.hasAttributes documentation>
+hasAttributes :: (MonadDOM m, IsElement self) => self -> m Bool
+hasAttributes self = liftDOM ((((Types.toElement self) ^. jsf "hasAttributes" ()) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/hasAttributes MDN Element.hasAttributes documentation>
+hasAttributes_ :: (MonadDOM m, IsElement self) => self -> m ()
+hasAttributes_ self = liftDOM (void ((Types.toElement self) ^. jsf "hasAttributes" ()))
+
+-- | <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 ((((Types.toElement self) ^. jsf "hasPointerCapture" [toJSVal pointerId]) >>= valToBool))
+
+-- | <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 ((Types.toElement self) ^. jsf "hasPointerCapture" [toJSVal pointerId]))
+
+-- | <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 ((((Types.toElement self) ^. jsf "insertAdjacentElement" [toJSVal where', toJSVal 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 ((Types.toElement self) ^. jsf "insertAdjacentElement" [toJSVal where', toJSVal 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 (((((Types.toElement self) ^. jsf "insertAdjacentElement" [toJSVal where', toJSVal 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 ((((Types.toElement self) ^. jsf "insertAdjacentElement" [toJSVal where', toJSVal element]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toElement self) ^. jsf "insertAdjacentHTML" [toJSVal position, toJSVal string]))
+
+-- | <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 ((Types.toElement self) ^. jsf "insertAdjacentText" [toJSVal where', toJSVal data']))
+
+-- | <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 ((((Types.toElement self) ^. jsf "matches" [toJSVal selectors]) >>= valToBool))
+
+-- | <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 ((Types.toElement self) ^. jsf "matches" [toJSVal selectors]))
+
+-- | <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 ((Types.toElement self) ^. jsf "releasePointerCapture" [toJSVal pointerId]))
+
+-- | <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 ((Types.toElement self) ^. jsf "removeAttribute" [toJSVal qualifiedName]))
+
+-- | <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 ((Types.toElement self) ^. jsf "removeAttributeNS" [toJSVal namespace, toJSVal localName]))
+
+-- | <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 ((((Types.toElement self) ^. jsf "removeAttributeNode" [toJSVal attr]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toElement self) ^. jsf "removeAttributeNode" [toJSVal attr]))
+
+-- | <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 ((((Types.toElement self) ^. jsf "requestFullscreen" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/requestPointerLock MDN Element.requestPointerLock documentation>
+requestPointerLock :: (MonadDOM m, IsElement self) => self -> m ()
+requestPointerLock self = liftDOM (void ((((Types.toElement self) ^. jsf "requestPointerLock" ()) >>= readPromise)))
+
+-- | <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 ((((Types.toElement self) ^. jsf "requestPointerLock" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 ((((((Types.toElement self) ^. jsf "scroll" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toElement self) ^. jsf "scroll" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 ((((((Types.toElement self) ^. jsf "scroll" [toJSVal x, toJSVal y]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toElement self) ^. jsf "scroll" [toJSVal x, toJSVal y]) >>= readPromise)))
+
+-- | <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 ((((((Types.toElement self) ^. jsf "scrollBy" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toElement self) ^. jsf "scrollBy" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 ((((((Types.toElement self) ^. jsf "scrollBy" [toJSVal x, toJSVal y]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toElement self) ^. jsf "scrollBy" [toJSVal x, toJSVal y]) >>= readPromise)))
+
+-- | <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 ((((((Types.toElement self) ^. jsf "scrollIntoView" [P.maybe (P.return jsUndefined) toJSVal arg]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toElement self) ^. jsf "scrollIntoView" [P.maybe (P.return jsUndefined) toJSVal arg]) >>= readPromise)))
+
+-- | <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 ((((((Types.toElement self) ^. jsf "scrollTo" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toElement self) ^. jsf "scrollTo" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 ((((((Types.toElement self) ^. jsf "scrollTo" [toJSVal x, toJSVal y]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toElement self) ^. jsf "scrollTo" [toJSVal x, toJSVal y]) >>= readPromise)))
+
+-- | <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 ((Types.toElement self) ^. jsf "setAttribute" [toJSVal qualifiedName, toJSVal value]))
+
+-- | <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 ((Types.toElement self) ^. jsf "setAttributeNS" [toJSVal namespace, toJSVal qualifiedName, toJSVal value]))
+
+-- | <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 ((((Types.toElement self) ^. jsf "setAttributeNode" [toJSVal 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 ((Types.toElement self) ^. jsf "setAttributeNode" [toJSVal 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 (((((Types.toElement self) ^. jsf "setAttributeNode" [toJSVal 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 ((((Types.toElement self) ^. jsf "setAttributeNode" [toJSVal attr]) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toElement self) ^. jsf "setAttributeNodeNS" [toJSVal 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 ((Types.toElement self) ^. jsf "setAttributeNodeNS" [toJSVal 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 (((((Types.toElement self) ^. jsf "setAttributeNodeNS" [toJSVal 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 ((((Types.toElement self) ^. jsf "setAttributeNodeNS" [toJSVal attr]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toElement self) ^. jsf "setHTML" [toJSVal html, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 ((Types.toElement self) ^. jsf "setHTMLUnsafe" [toJSVal html, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 ((Types.toElement self) ^. jsf "setPointerCapture" [toJSVal pointerId]))
+
+-- | <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 ((((Types.toElement self) ^. jsf "toggleAttribute" [toJSVal qualifiedName, P.maybe (P.return jsUndefined) toJSVal force]) >>= valToBool))
+
+-- | <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 ((Types.toElement self) ^. jsf "toggleAttribute" [toJSVal qualifiedName, P.maybe (P.return jsUndefined) toJSVal force]))
+
+-- | <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 ((((Types.toElement self) ^. jsf "webkitMatchesSelector" [toJSVal selectors]) >>= valToBool))
+
+-- | <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 ((Types.toElement self) ^. jsf "webkitMatchesSelector" [toJSVal selectors]))
+
+-- | <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 ((((Types.toElement self) ^. js "namespaceURI") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toElement self) ^. js "namespaceURI") >>= fromMaybeJSString) >>= 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 ((((Types.toElement self) ^. js "namespaceURI") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toElement self) ^. js "prefix") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toElement self) ^. js "prefix") >>= fromMaybeJSString) >>= 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 ((((Types.toElement self) ^. js "prefix") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toElement self) ^. js "localName") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toElement self) ^. js "tagName") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toElement self) ^. jss "id" (toJSVal val)))
+
+-- | <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 ((((Types.toElement self) ^. js "id") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toElement self) ^. jss "className" (toJSVal val)))
+
+-- | <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 ((((Types.toElement self) ^. js "className") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/classList MDN Element.classList documentation>
+getClassList :: (MonadDOM m, IsElement self) => self -> m DOMTokenList
+getClassList self = liftDOM ((((Types.toElement self) ^. js "classList") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toElement self) ^. jss "slot" (toJSVal val)))
+
+-- | <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 ((((Types.toElement self) ^. js "slot") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/attributes MDN Element.attributes documentation>
+getAttributes :: (MonadDOM m, IsElement self) => self -> m NamedNodeMap
+getAttributes self = liftDOM ((((Types.toElement self) ^. js "attributes") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toElement self) ^. js "shadowRoot") >>= 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 (((((Types.toElement self) ^. js "shadowRoot") >>= 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 ((((Types.toElement self) ^. js "shadowRoot") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toElement self) ^. js "customElementRegistry") >>= 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 (((((Types.toElement self) ^. js "customElementRegistry") >>= 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 ((((Types.toElement self) ^. js "customElementRegistry") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/part MDN Element.part documentation>
+getPart :: (MonadDOM m, IsElement self) => self -> m DOMTokenList
+getPart self = liftDOM ((((Types.toElement self) ^. js "part") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toElement self) ^. jss "scrollTop" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollTop MDN Element.scrollTop documentation>
+getScrollTop :: (MonadDOM m, IsElement self) => self -> m Double
+getScrollTop self = liftDOM ((((Types.toElement self) ^. js "scrollTop") >>= valToNumber))
+
+-- | <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 ((Types.toElement self) ^. jss "scrollLeft" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollLeft MDN Element.scrollLeft documentation>
+getScrollLeft :: (MonadDOM m, IsElement self) => self -> m Double
+getScrollLeft self = liftDOM ((((Types.toElement self) ^. js "scrollLeft") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollWidth MDN Element.scrollWidth documentation>
+getScrollWidth :: (MonadDOM m, IsElement self) => self -> m Int
+getScrollWidth self = liftDOM ((P.round <$> (((Types.toElement self) ^. js "scrollWidth") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/scrollHeight MDN Element.scrollHeight documentation>
+getScrollHeight :: (MonadDOM m, IsElement self) => self -> m Int
+getScrollHeight self = liftDOM ((P.round <$> (((Types.toElement self) ^. js "scrollHeight") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/clientTop MDN Element.clientTop documentation>
+getClientTop :: (MonadDOM m, IsElement self) => self -> m Int
+getClientTop self = liftDOM ((P.round <$> (((Types.toElement self) ^. js "clientTop") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/clientLeft MDN Element.clientLeft documentation>
+getClientLeft :: (MonadDOM m, IsElement self) => self -> m Int
+getClientLeft self = liftDOM ((P.round <$> (((Types.toElement self) ^. js "clientLeft") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/clientWidth MDN Element.clientWidth documentation>
+getClientWidth :: (MonadDOM m, IsElement self) => self -> m Int
+getClientWidth self = liftDOM ((P.round <$> (((Types.toElement self) ^. js "clientWidth") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/clientHeight MDN Element.clientHeight documentation>
+getClientHeight :: (MonadDOM m, IsElement self) => self -> m Int
+getClientHeight self = liftDOM ((P.round <$> (((Types.toElement self) ^. js "clientHeight") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/currentCSSZoom MDN Element.currentCSSZoom documentation>
+getCurrentCSSZoom :: (MonadDOM m, IsElement self) => self -> m Double
+getCurrentCSSZoom self = liftDOM ((((Types.toElement self) ^. js "currentCSSZoom") >>= valToNumber))
+
+-- | <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 ((Types.toElement self) ^. jss "innerHTML" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/innerHTML MDN Element.innerHTML documentation>
+getInnerHTML :: (MonadDOM m, IsElement self) => self -> m TrustedHTMLOrString
+getInnerHTML self = liftDOM ((((Types.toElement self) ^. js "innerHTML") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toElement self) ^. jss "outerHTML" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Element/outerHTML MDN Element.outerHTML documentation>
+getOuterHTML :: (MonadDOM m, IsElement self) => self -> m TrustedHTMLOrString
+getOuterHTML self = liftDOM ((((Types.toElement self) ^. js "outerHTML") >>= fromJSValUnchecked))
+
+-- | <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/JSDOM/Generated/ElementCSSInlineStyle.hs b/src/JSDOM/Generated/ElementCSSInlineStyle.hs
--- a/src/JSDOM/Generated/ElementCSSInlineStyle.hs
+++ b/src/JSDOM/Generated/ElementCSSInlineStyle.hs
@@ -1,30 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module JSDOM.Generated.ElementCSSInlineStyle
-       (getStyle, ElementCSSInlineStyle(..), gTypeElementCSSInlineStyle,
-        IsElementCSSInlineStyle, toElementCSSInlineStyle)
+       (getStyle, getAttributeStyleMap, ElementCSSInlineStyle(..), gTypeElementCSSInlineStyle, IsElementCSSInlineStyle, toElementCSSInlineStyle)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle.style Mozilla ElementCSSInlineStyle.style documentation> 
-getStyle ::
-         (MonadDOM m, IsElementCSSInlineStyle self) =>
-           self -> m CSSStyleDeclaration
-getStyle self
-  = liftDOM
-      (((toElementCSSInlineStyle self) ^. js "style") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/style MDN ElementCSSInlineStyle.style documentation>
+getStyle :: (MonadDOM m, IsElementCSSInlineStyle self) => self -> m CSSStyleProperties
+getStyle self = liftDOM ((((Types.toElementCSSInlineStyle self) ^. js "style") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/attributeStyleMap MDN ElementCSSInlineStyle.attributeStyleMap documentation>
+getAttributeStyleMap :: (MonadDOM m, IsElementCSSInlineStyle self) => self -> m StylePropertyMap
+getAttributeStyleMap self = liftDOM ((((Types.toElementCSSInlineStyle self) ^. js "attributeStyleMap") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ElementContentEditable.hs b/src/JSDOM/Generated/ElementContentEditable.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ElementContentEditable.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.ElementContentEditable
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toElementContentEditable self) ^. jss "contentEditable" (toJSVal val)))
+
+-- | <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 ((((Types.toElementContentEditable self) ^. js "contentEditable") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toElementContentEditable self) ^. jss "enterKeyHint" (toJSVal val)))
+
+-- | <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 ((((Types.toElementContentEditable self) ^. js "enterKeyHint") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/isContentEditable MDN ElementContentEditable.isContentEditable documentation>
+getIsContentEditable :: (MonadDOM m, IsElementContentEditable self) => self -> m Bool
+getIsContentEditable self = liftDOM ((((Types.toElementContentEditable self) ^. js "isContentEditable") >>= valToBool))
+
+-- | <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 ((Types.toElementContentEditable self) ^. jss "inputMode" (toJSVal val)))
+
+-- | <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 ((((Types.toElementContentEditable self) ^. js "inputMode") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ElementCreationOptions.hs b/src/JSDOM/Generated/ElementCreationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ElementCreationOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.ElementCreationOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://dom.spec.whatwg.org/#dictdef-elementcreationoptions ElementCreationOptions specification>
+newElementCreationOptions :: (MonadDOM m) => m ElementCreationOptions
+newElementCreationOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-elementcreationoptions-customelementregistry ElementCreationOptions.customElementRegistry specification>
+setCustomElementRegistry :: (MonadDOM m) => ElementCreationOptions -> Maybe CustomElementRegistry -> m ()
+setCustomElementRegistry self val = liftDOM (void (self ^. jss "customElementRegistry" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-elementcreationoptions-customelementregistry ElementCreationOptions.customElementRegistry specification>
+getCustomElementRegistry :: (MonadDOM m) => ElementCreationOptions -> m (Maybe CustomElementRegistry)
+getCustomElementRegistry self = liftDOM (((self ^. js "customElementRegistry") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-elementcreationoptions-customelementregistry ElementCreationOptions.customElementRegistry specification>
+getCustomElementRegistryUnsafe :: (MonadDOM m, HasCallStack) => ElementCreationOptions -> m CustomElementRegistry
+getCustomElementRegistryUnsafe self = liftDOM ((((self ^. js "customElementRegistry") >>= 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 (((self ^. js "customElementRegistry") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-elementcreationoptions-is ElementCreationOptions.is specification>
+setIs :: (MonadDOM m, ToJSString val) => ElementCreationOptions -> val -> m ()
+setIs self val = liftDOM (void (self ^. jss "is" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-elementcreationoptions-is ElementCreationOptions.is specification>
+getIs :: (MonadDOM m, FromJSString result) => ElementCreationOptions -> m (Maybe result)
+getIs self = liftDOM (((self ^. js "is") >>= fromMaybeJSString))
+
+-- | <https://dom.spec.whatwg.org/#dom-elementcreationoptions-is ElementCreationOptions.is specification>
+getIsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ElementCreationOptions -> m result
+getIsUnsafe self = liftDOM ((((self ^. js "is") >>= fromMaybeJSString) >>= 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 (((self ^. js "is") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ElementDefinitionOptions.hs b/src/JSDOM/Generated/ElementDefinitionOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ElementDefinitionOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.ElementDefinitionOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/custom-elements.html#elementdefinitionoptions ElementDefinitionOptions specification>
+newElementDefinitionOptions :: (MonadDOM m) => m ElementDefinitionOptions
+newElementDefinitionOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "extends" (toJSVal val)))
+
+-- | <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 (((self ^. js "extends") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "extends") >>= fromMaybeJSString) >>= 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 (((self ^. js "extends") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ElementInternals.hs b/src/JSDOM/Generated/ElementInternals.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ElementInternals.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.ElementInternals
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/checkValidity MDN ElementInternals.checkValidity documentation>
+checkValidity :: (MonadDOM m) => ElementInternals -> m Bool
+checkValidity self = liftDOM (((self ^. jsf "checkValidity" ()) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/checkValidity MDN ElementInternals.checkValidity documentation>
+checkValidity_ :: (MonadDOM m) => ElementInternals -> m ()
+checkValidity_ self = liftDOM (void (self ^. jsf "checkValidity" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/reportValidity MDN ElementInternals.reportValidity documentation>
+reportValidity :: (MonadDOM m) => ElementInternals -> m Bool
+reportValidity self = liftDOM (((self ^. jsf "reportValidity" ()) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/reportValidity MDN ElementInternals.reportValidity documentation>
+reportValidity_ :: (MonadDOM m) => ElementInternals -> m ()
+reportValidity_ self = liftDOM (void (self ^. jsf "reportValidity" ()))
+
+-- | <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 (self ^. jsf "setFormValue" [toJSVal value, toJSVal state]))
+
+-- | <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 (self ^. jsf "setValidity" [P.maybe (P.return jsUndefined) toJSVal flags, P.maybe (P.return jsUndefined) toJSVal message, P.maybe (P.return jsUndefined) toJSVal anchor]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/shadowRoot MDN ElementInternals.shadowRoot documentation>
+getShadowRoot :: (MonadDOM m) => ElementInternals -> m (Maybe ShadowRoot)
+getShadowRoot self = liftDOM (((self ^. js "shadowRoot") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/shadowRoot MDN ElementInternals.shadowRoot documentation>
+getShadowRootUnsafe :: (MonadDOM m, HasCallStack) => ElementInternals -> m ShadowRoot
+getShadowRootUnsafe self = liftDOM ((((self ^. js "shadowRoot") >>= 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 (((self ^. js "shadowRoot") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/form MDN ElementInternals.form documentation>
+getForm :: (MonadDOM m) => ElementInternals -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/form MDN ElementInternals.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => ElementInternals -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((self ^. js "form") >>= 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 (((self ^. js "form") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/willValidate MDN ElementInternals.willValidate documentation>
+getWillValidate :: (MonadDOM m) => ElementInternals -> m Bool
+getWillValidate self = liftDOM (((self ^. js "willValidate") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/validity MDN ElementInternals.validity documentation>
+getValidity :: (MonadDOM m) => ElementInternals -> m ValidityState
+getValidity self = liftDOM (((self ^. js "validity") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/validationMessage MDN ElementInternals.validationMessage documentation>
+getValidationMessage :: (MonadDOM m, FromJSString result) => ElementInternals -> m result
+getValidationMessage self = liftDOM (((self ^. js "validationMessage") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/labels MDN ElementInternals.labels documentation>
+getLabels :: (MonadDOM m) => ElementInternals -> m NodeList
+getLabels self = liftDOM (((self ^. js "labels") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ElementInternals/states MDN ElementInternals.states documentation>
+getStates :: (MonadDOM m) => ElementInternals -> m CustomStateSet
+getStates self = liftDOM (((self ^. js "states") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/EncodedAudioChunk.hs b/src/JSDOM/Generated/EncodedAudioChunk.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EncodedAudioChunk.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.EncodedAudioChunk
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedAudioChunk/EncodedAudioChunk MDN EncodedAudioChunk. documentation>
+newEncodedAudioChunk :: (MonadDOM m) => EncodedAudioChunkInit -> m EncodedAudioChunk
+newEncodedAudioChunk init = liftDOM (((new (jsg "EncodedAudioChunk") [toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "copyTo" [toJSVal destination]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedAudioChunk/type MDN EncodedAudioChunk.type documentation>
+getType :: (MonadDOM m) => EncodedAudioChunk -> m EncodedAudioChunkType
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedAudioChunk/timestamp MDN EncodedAudioChunk.timestamp documentation>
+getTimestamp :: (MonadDOM m) => EncodedAudioChunk -> m Int53
+getTimestamp self = liftDOM (((self ^. js "timestamp") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedAudioChunk/duration MDN EncodedAudioChunk.duration documentation>
+getDuration :: (MonadDOM m) => EncodedAudioChunk -> m (Maybe Word53)
+getDuration self = liftDOM (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedAudioChunk/duration MDN EncodedAudioChunk.duration documentation>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => EncodedAudioChunk -> m Word53
+getDurationUnsafe self = liftDOM ((((self ^. js "duration") >>= 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 (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedAudioChunk/byteLength MDN EncodedAudioChunk.byteLength documentation>
+getByteLength :: (MonadDOM m) => EncodedAudioChunk -> m Word
+getByteLength self = liftDOM ((P.round <$> ((self ^. js "byteLength") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/EncodedAudioChunkInit.hs b/src/JSDOM/Generated/EncodedAudioChunkInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EncodedAudioChunkInit.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.EncodedAudioChunkInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-encodedaudiochunkinit EncodedAudioChunkInit specification>
+newEncodedAudioChunkInit :: (MonadDOM m, IsAllowSharedBufferSource data') => EncodedAudioChunkType -> Int53 -> data' -> m EncodedAudioChunkInit
+newEncodedAudioChunkInit type' timestamp data' = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "type" (toJSVal type')) P.>> (o ^. jss "timestamp" (toJSVal timestamp)) P.>> (o ^. jss "data" (toJSVal data')) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-type EncodedAudioChunkInit.type specification>
+setType :: (MonadDOM m) => EncodedAudioChunkInit -> EncodedAudioChunkType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-type EncodedAudioChunkInit.type specification>
+getType :: (MonadDOM m) => EncodedAudioChunkInit -> m EncodedAudioChunkType
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-timestamp EncodedAudioChunkInit.timestamp specification>
+setTimestamp :: (MonadDOM m) => EncodedAudioChunkInit -> Int53 -> m ()
+setTimestamp self val = liftDOM (void (self ^. jss "timestamp" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-timestamp EncodedAudioChunkInit.timestamp specification>
+getTimestamp :: (MonadDOM m) => EncodedAudioChunkInit -> m Int53
+getTimestamp self = liftDOM (((self ^. js "timestamp") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-duration EncodedAudioChunkInit.duration specification>
+setDuration :: (MonadDOM m) => EncodedAudioChunkInit -> Word53 -> m ()
+setDuration self val = liftDOM (void (self ^. jss "duration" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-duration EncodedAudioChunkInit.duration specification>
+getDuration :: (MonadDOM m) => EncodedAudioChunkInit -> m (Maybe Word53)
+getDuration self = liftDOM (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-duration EncodedAudioChunkInit.duration specification>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => EncodedAudioChunkInit -> m Word53
+getDurationUnsafe self = liftDOM ((((self ^. js "duration") >>= 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 (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-data EncodedAudioChunkInit.data specification>
+setData :: (MonadDOM m, IsAllowSharedBufferSource val) => EncodedAudioChunkInit -> val -> m ()
+setData self val = liftDOM (void (self ^. jss "data" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-data EncodedAudioChunkInit.data specification>
+getData :: (MonadDOM m) => EncodedAudioChunkInit -> m AllowSharedBufferSource
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-transfer EncodedAudioChunkInit.transfer specification>
+setTransfer :: (MonadDOM m, IsArrayBuffer val) => EncodedAudioChunkInit -> [val] -> m ()
+setTransfer self val = liftDOM (void (self ^. jss "transfer" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-transfer EncodedAudioChunkInit.transfer specification>
+getTransfer :: (MonadDOM m) => EncodedAudioChunkInit -> m (Maybe [ArrayBuffer])
+getTransfer self = liftDOM (((self ^. js "transfer") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkinit-transfer EncodedAudioChunkInit.transfer specification>
+getTransferUnsafe :: (MonadDOM m, HasCallStack) => EncodedAudioChunkInit -> m [ArrayBuffer]
+getTransferUnsafe self = liftDOM ((((self ^. js "transfer") >>= 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 (((self ^. js "transfer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/EncodedAudioChunkMetadata.hs b/src/JSDOM/Generated/EncodedAudioChunkMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EncodedAudioChunkMetadata.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.EncodedAudioChunkMetadata
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-encodedaudiochunkmetadata EncodedAudioChunkMetadata specification>
+newEncodedAudioChunkMetadata :: (MonadDOM m) => m EncodedAudioChunkMetadata
+newEncodedAudioChunkMetadata = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkmetadata-decoderconfig EncodedAudioChunkMetadata.decoderConfig specification>
+setDecoderConfig :: (MonadDOM m) => EncodedAudioChunkMetadata -> AudioDecoderConfig -> m ()
+setDecoderConfig self val = liftDOM (void (self ^. jss "decoderConfig" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkmetadata-decoderconfig EncodedAudioChunkMetadata.decoderConfig specification>
+getDecoderConfig :: (MonadDOM m) => EncodedAudioChunkMetadata -> m (Maybe AudioDecoderConfig)
+getDecoderConfig self = liftDOM (((self ^. js "decoderConfig") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedaudiochunkmetadata-decoderconfig EncodedAudioChunkMetadata.decoderConfig specification>
+getDecoderConfigUnsafe :: (MonadDOM m, HasCallStack) => EncodedAudioChunkMetadata -> m AudioDecoderConfig
+getDecoderConfigUnsafe self = liftDOM ((((self ^. js "decoderConfig") >>= 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 (((self ^. js "decoderConfig") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/EncodedAudioChunkOutputCallback.hs b/src/JSDOM/Generated/EncodedAudioChunkOutputCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EncodedAudioChunkOutputCallback.hs
@@ -0,0 +1,33 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newEncodedAudioChunkOutputCallback :: (MonadDOM m) => (EncodedAudioChunk -> EncodedAudioChunkMetadata -> JSM ()) -> m EncodedAudioChunkOutputCallback
+newEncodedAudioChunkOutputCallback callback = liftDOM (EncodedAudioChunkOutputCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (output : metadata : _) -> do
+          output' <- fromJSValUnchecked output
+          metadata' <- fromJSValUnchecked metadata
+          callback output' metadata'))
+
+newEncodedAudioChunkOutputCallbackSync :: (MonadDOM m) => (EncodedAudioChunk -> EncodedAudioChunkMetadata -> JSM ()) -> m EncodedAudioChunkOutputCallback
+newEncodedAudioChunkOutputCallbackSync callback = liftDOM (EncodedAudioChunkOutputCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (output : metadata : _) -> do
+          output' <- fromJSValUnchecked output
+          metadata' <- fromJSValUnchecked metadata
+          callback output' metadata'))
+
+newEncodedAudioChunkOutputCallbackAsync :: (MonadDOM m) => (EncodedAudioChunk -> EncodedAudioChunkMetadata -> JSM ()) -> m EncodedAudioChunkOutputCallback
+newEncodedAudioChunkOutputCallbackAsync callback = liftDOM (EncodedAudioChunkOutputCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (output : metadata : _) -> do
+          output' <- fromJSValUnchecked output
+          metadata' <- fromJSValUnchecked metadata
+          callback output' metadata'))
diff --git a/src/JSDOM/Generated/EncodedVideoChunk.hs b/src/JSDOM/Generated/EncodedVideoChunk.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EncodedVideoChunk.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.EncodedVideoChunk
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/EncodedVideoChunk MDN EncodedVideoChunk. documentation>
+newEncodedVideoChunk :: (MonadDOM m) => EncodedVideoChunkInit -> m EncodedVideoChunk
+newEncodedVideoChunk init = liftDOM (((new (jsg "EncodedVideoChunk") [toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "copyTo" [toJSVal destination]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/type MDN EncodedVideoChunk.type documentation>
+getType :: (MonadDOM m) => EncodedVideoChunk -> m EncodedVideoChunkType
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/timestamp MDN EncodedVideoChunk.timestamp documentation>
+getTimestamp :: (MonadDOM m) => EncodedVideoChunk -> m Int53
+getTimestamp self = liftDOM (((self ^. js "timestamp") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/duration MDN EncodedVideoChunk.duration documentation>
+getDuration :: (MonadDOM m) => EncodedVideoChunk -> m (Maybe Word53)
+getDuration self = liftDOM (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/duration MDN EncodedVideoChunk.duration documentation>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => EncodedVideoChunk -> m Word53
+getDurationUnsafe self = liftDOM ((((self ^. js "duration") >>= 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 (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/byteLength MDN EncodedVideoChunk.byteLength documentation>
+getByteLength :: (MonadDOM m) => EncodedVideoChunk -> m Word
+getByteLength self = liftDOM ((P.round <$> ((self ^. js "byteLength") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/EncodedVideoChunkInit.hs b/src/JSDOM/Generated/EncodedVideoChunkInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EncodedVideoChunkInit.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.EncodedVideoChunkInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-encodedvideochunkinit EncodedVideoChunkInit specification>
+newEncodedVideoChunkInit :: (MonadDOM m, IsAllowSharedBufferSource data') => EncodedVideoChunkType -> Int53 -> data' -> m EncodedVideoChunkInit
+newEncodedVideoChunkInit type' timestamp data' = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "type" (toJSVal type')) P.>> (o ^. jss "timestamp" (toJSVal timestamp)) P.>> (o ^. jss "data" (toJSVal data')) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-type EncodedVideoChunkInit.type specification>
+setType :: (MonadDOM m) => EncodedVideoChunkInit -> EncodedVideoChunkType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-type EncodedVideoChunkInit.type specification>
+getType :: (MonadDOM m) => EncodedVideoChunkInit -> m EncodedVideoChunkType
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-timestamp EncodedVideoChunkInit.timestamp specification>
+setTimestamp :: (MonadDOM m) => EncodedVideoChunkInit -> Int53 -> m ()
+setTimestamp self val = liftDOM (void (self ^. jss "timestamp" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-timestamp EncodedVideoChunkInit.timestamp specification>
+getTimestamp :: (MonadDOM m) => EncodedVideoChunkInit -> m Int53
+getTimestamp self = liftDOM (((self ^. js "timestamp") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-duration EncodedVideoChunkInit.duration specification>
+setDuration :: (MonadDOM m) => EncodedVideoChunkInit -> Word53 -> m ()
+setDuration self val = liftDOM (void (self ^. jss "duration" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-duration EncodedVideoChunkInit.duration specification>
+getDuration :: (MonadDOM m) => EncodedVideoChunkInit -> m (Maybe Word53)
+getDuration self = liftDOM (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-duration EncodedVideoChunkInit.duration specification>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => EncodedVideoChunkInit -> m Word53
+getDurationUnsafe self = liftDOM ((((self ^. js "duration") >>= 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 (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-data EncodedVideoChunkInit.data specification>
+setData :: (MonadDOM m, IsAllowSharedBufferSource val) => EncodedVideoChunkInit -> val -> m ()
+setData self val = liftDOM (void (self ^. jss "data" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-data EncodedVideoChunkInit.data specification>
+getData :: (MonadDOM m) => EncodedVideoChunkInit -> m AllowSharedBufferSource
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-transfer EncodedVideoChunkInit.transfer specification>
+setTransfer :: (MonadDOM m, IsArrayBuffer val) => EncodedVideoChunkInit -> [val] -> m ()
+setTransfer self val = liftDOM (void (self ^. jss "transfer" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-transfer EncodedVideoChunkInit.transfer specification>
+getTransfer :: (MonadDOM m) => EncodedVideoChunkInit -> m (Maybe [ArrayBuffer])
+getTransfer self = liftDOM (((self ^. js "transfer") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkinit-transfer EncodedVideoChunkInit.transfer specification>
+getTransferUnsafe :: (MonadDOM m, HasCallStack) => EncodedVideoChunkInit -> m [ArrayBuffer]
+getTransferUnsafe self = liftDOM ((((self ^. js "transfer") >>= 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 (((self ^. js "transfer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/EncodedVideoChunkMetadata.hs b/src/JSDOM/Generated/EncodedVideoChunkMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EncodedVideoChunkMetadata.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.EncodedVideoChunkMetadata
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-encodedvideochunkmetadata EncodedVideoChunkMetadata specification>
+newEncodedVideoChunkMetadata :: (MonadDOM m) => m EncodedVideoChunkMetadata
+newEncodedVideoChunkMetadata = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-decoderconfig EncodedVideoChunkMetadata.decoderConfig specification>
+setDecoderConfig :: (MonadDOM m) => EncodedVideoChunkMetadata -> VideoDecoderConfig -> m ()
+setDecoderConfig self val = liftDOM (void (self ^. jss "decoderConfig" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-decoderconfig EncodedVideoChunkMetadata.decoderConfig specification>
+getDecoderConfig :: (MonadDOM m) => EncodedVideoChunkMetadata -> m (Maybe VideoDecoderConfig)
+getDecoderConfig self = liftDOM (((self ^. js "decoderConfig") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-decoderconfig EncodedVideoChunkMetadata.decoderConfig specification>
+getDecoderConfigUnsafe :: (MonadDOM m, HasCallStack) => EncodedVideoChunkMetadata -> m VideoDecoderConfig
+getDecoderConfigUnsafe self = liftDOM ((((self ^. js "decoderConfig") >>= 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 (((self ^. js "decoderConfig") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-svc EncodedVideoChunkMetadata.svc specification>
+setSvc :: (MonadDOM m) => EncodedVideoChunkMetadata -> SvcOutputMetadata -> m ()
+setSvc self val = liftDOM (void (self ^. jss "svc" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-svc EncodedVideoChunkMetadata.svc specification>
+getSvc :: (MonadDOM m) => EncodedVideoChunkMetadata -> m (Maybe SvcOutputMetadata)
+getSvc self = liftDOM (((self ^. js "svc") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-svc EncodedVideoChunkMetadata.svc specification>
+getSvcUnsafe :: (MonadDOM m, HasCallStack) => EncodedVideoChunkMetadata -> m SvcOutputMetadata
+getSvcUnsafe self = liftDOM ((((self ^. js "svc") >>= 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 (((self ^. js "svc") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-alphasidedata EncodedVideoChunkMetadata.alphaSideData specification>
+setAlphaSideData :: (MonadDOM m, IsBufferSource val) => EncodedVideoChunkMetadata -> val -> m ()
+setAlphaSideData self val = liftDOM (void (self ^. jss "alphaSideData" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-alphasidedata EncodedVideoChunkMetadata.alphaSideData specification>
+getAlphaSideData :: (MonadDOM m) => EncodedVideoChunkMetadata -> m (Maybe BufferSource)
+getAlphaSideData self = liftDOM (((self ^. js "alphaSideData") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-encodedvideochunkmetadata-alphasidedata EncodedVideoChunkMetadata.alphaSideData specification>
+getAlphaSideDataUnsafe :: (MonadDOM m, HasCallStack) => EncodedVideoChunkMetadata -> m BufferSource
+getAlphaSideDataUnsafe self = liftDOM ((((self ^. js "alphaSideData") >>= 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 (((self ^. js "alphaSideData") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/EncodedVideoChunkOutputCallback.hs b/src/JSDOM/Generated/EncodedVideoChunkOutputCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EncodedVideoChunkOutputCallback.hs
@@ -0,0 +1,33 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newEncodedVideoChunkOutputCallback :: (MonadDOM m) => (EncodedVideoChunk -> EncodedVideoChunkMetadata -> JSM ()) -> m EncodedVideoChunkOutputCallback
+newEncodedVideoChunkOutputCallback callback = liftDOM (EncodedVideoChunkOutputCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (chunk : metadata : _) -> do
+          chunk' <- fromJSValUnchecked chunk
+          metadata' <- fromJSValUnchecked metadata
+          callback chunk' metadata'))
+
+newEncodedVideoChunkOutputCallbackSync :: (MonadDOM m) => (EncodedVideoChunk -> EncodedVideoChunkMetadata -> JSM ()) -> m EncodedVideoChunkOutputCallback
+newEncodedVideoChunkOutputCallbackSync callback = liftDOM (EncodedVideoChunkOutputCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (chunk : metadata : _) -> do
+          chunk' <- fromJSValUnchecked chunk
+          metadata' <- fromJSValUnchecked metadata
+          callback chunk' metadata'))
+
+newEncodedVideoChunkOutputCallbackAsync :: (MonadDOM m) => (EncodedVideoChunk -> EncodedVideoChunkMetadata -> JSM ()) -> m EncodedVideoChunkOutputCallback
+newEncodedVideoChunkOutputCallbackAsync callback = liftDOM (EncodedVideoChunkOutputCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (chunk : metadata : _) -> do
+          chunk' <- fromJSValUnchecked chunk
+          metadata' <- fromJSValUnchecked metadata
+          callback chunk' metadata'))
diff --git a/src/JSDOM/Generated/Enums.hs b/src/JSDOM/Generated/Enums.hs
--- a/src/JSDOM/Generated/Enums.hs
+++ b/src/JSDOM/Generated/Enums.hs
@@ -1,4983 +1,7477 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.Enums
-       (KeyType(..), ToJSVal, 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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
- 
-data KeyType = KeyTypePublic
-             | KeyTypePrivate
-             | KeyTypeSecret
-             deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal KeyType where
-        toJSVal KeyTypePublic = toJSVal js_KeyTypePublic
-        toJSVal KeyTypePrivate = toJSVal js_KeyTypePrivate
-        toJSVal KeyTypeSecret = toJSVal js_KeyTypeSecret
- 
-instance FromJSVal KeyType where
-        fromJSVal x
-          = x `strictEqual` js_KeyTypePublic >>=
-              \ r ->
-                case r of
-                    True -> return (Just KeyTypePublic)
-                    False
-                      -> x `strictEqual` js_KeyTypePrivate >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just KeyTypePrivate)
-                                 False
-                                   -> x `strictEqual` js_KeyTypeSecret >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just KeyTypeSecret)
-                                              False -> return Nothing
-js_KeyTypePublic = "public"
-js_KeyTypePrivate = "private"
-js_KeyTypeSecret = "secret"
- 
-data CryptoKeyUsage = CryptoKeyUsageEncrypt
-                    | CryptoKeyUsageDecrypt
-                    | CryptoKeyUsageSign
-                    | CryptoKeyUsageVerify
-                    | CryptoKeyUsageDeriveKey
-                    | CryptoKeyUsageDeriveBits
-                    | CryptoKeyUsageWrapKey
-                    | CryptoKeyUsageUnwrapKey
-                    deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal CryptoKeyUsage where
-        toJSVal CryptoKeyUsageEncrypt = toJSVal js_CryptoKeyUsageEncrypt
-        toJSVal CryptoKeyUsageDecrypt = toJSVal js_CryptoKeyUsageDecrypt
-        toJSVal CryptoKeyUsageSign = toJSVal js_CryptoKeyUsageSign
-        toJSVal CryptoKeyUsageVerify = toJSVal js_CryptoKeyUsageVerify
-        toJSVal CryptoKeyUsageDeriveKey
-          = toJSVal js_CryptoKeyUsageDeriveKey
-        toJSVal CryptoKeyUsageDeriveBits
-          = toJSVal js_CryptoKeyUsageDeriveBits
-        toJSVal CryptoKeyUsageWrapKey = toJSVal js_CryptoKeyUsageWrapKey
-        toJSVal CryptoKeyUsageUnwrapKey
-          = toJSVal js_CryptoKeyUsageUnwrapKey
- 
-instance FromJSVal CryptoKeyUsage where
-        fromJSVal x
-          = x `strictEqual` js_CryptoKeyUsageEncrypt >>=
-              \ r ->
-                case r of
-                    True -> return (Just CryptoKeyUsageEncrypt)
-                    False
-                      -> x `strictEqual` js_CryptoKeyUsageDecrypt >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just CryptoKeyUsageDecrypt)
-                                 False
-                                   -> x `strictEqual` js_CryptoKeyUsageSign >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just CryptoKeyUsageSign)
-                                              False
-                                                -> x `strictEqual` js_CryptoKeyUsageVerify >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return (Just CryptoKeyUsageVerify)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_CryptoKeyUsageDeriveKey
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  CryptoKeyUsageDeriveKey)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_CryptoKeyUsageDeriveBits
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               CryptoKeyUsageDeriveBits)
-                                                                                     False
-                                                                                       -> x `strictEqual`
-                                                                                            js_CryptoKeyUsageWrapKey
-                                                                                            >>=
-                                                                                            \ r ->
-                                                                                              case r
-                                                                                                of
-                                                                                                  True
-                                                                                                    -> return
-                                                                                                         (Just
-                                                                                                            CryptoKeyUsageWrapKey)
-                                                                                                  False
-                                                                                                    -> x `strictEqual`
-                                                                                                         js_CryptoKeyUsageUnwrapKey
-                                                                                                         >>=
-                                                                                                         \ r
-                                                                                                           ->
-                                                                                                           case
-                                                                                                             r
-                                                                                                             of
-                                                                                                               True
-                                                                                                                 -> return
-                                                                                                                      (Just
-                                                                                                                         CryptoKeyUsageUnwrapKey)
-                                                                                                               False
-                                                                                                                 -> return
-                                                                                                                      Nothing
-js_CryptoKeyUsageEncrypt = "encrypt"
-js_CryptoKeyUsageDecrypt = "decrypt"
-js_CryptoKeyUsageSign = "sign"
-js_CryptoKeyUsageVerify = "verify"
-js_CryptoKeyUsageDeriveKey = "deriveKey"
-js_CryptoKeyUsageDeriveBits = "deriveBits"
-js_CryptoKeyUsageWrapKey = "wrapKey"
-js_CryptoKeyUsageUnwrapKey = "unwrapKey"
- 
-data KeyFormat = KeyFormatRaw
-               | KeyFormatSpki
-               | KeyFormatPkcs8
-               | KeyFormatJwk
-               deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal KeyFormat where
-        toJSVal KeyFormatRaw = toJSVal js_KeyFormatRaw
-        toJSVal KeyFormatSpki = toJSVal js_KeyFormatSpki
-        toJSVal KeyFormatPkcs8 = toJSVal js_KeyFormatPkcs8
-        toJSVal KeyFormatJwk = toJSVal js_KeyFormatJwk
- 
-instance FromJSVal KeyFormat where
-        fromJSVal x
-          = x `strictEqual` js_KeyFormatRaw >>=
-              \ r ->
-                case r of
-                    True -> return (Just KeyFormatRaw)
-                    False
-                      -> x `strictEqual` js_KeyFormatSpki >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just KeyFormatSpki)
-                                 False
-                                   -> x `strictEqual` js_KeyFormatPkcs8 >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just KeyFormatPkcs8)
-                                              False
-                                                -> x `strictEqual` js_KeyFormatJwk >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True -> return (Just KeyFormatJwk)
-                                                           False -> return Nothing
-js_KeyFormatRaw = "raw"
-js_KeyFormatSpki = "spki"
-js_KeyFormatPkcs8 = "pkcs8"
-js_KeyFormatJwk = "jwk"
- 
-data FontFaceLoadStatus = FontFaceLoadStatusUnloaded
-                        | FontFaceLoadStatusLoading
-                        | FontFaceLoadStatusLoaded
-                        | FontFaceLoadStatusError
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal FontFaceLoadStatus where
-        toJSVal FontFaceLoadStatusUnloaded
-          = toJSVal js_FontFaceLoadStatusUnloaded
-        toJSVal FontFaceLoadStatusLoading
-          = toJSVal js_FontFaceLoadStatusLoading
-        toJSVal FontFaceLoadStatusLoaded
-          = toJSVal js_FontFaceLoadStatusLoaded
-        toJSVal FontFaceLoadStatusError
-          = toJSVal js_FontFaceLoadStatusError
- 
-instance FromJSVal FontFaceLoadStatus where
-        fromJSVal x
-          = x `strictEqual` js_FontFaceLoadStatusUnloaded >>=
-              \ r ->
-                case r of
-                    True -> return (Just FontFaceLoadStatusUnloaded)
-                    False
-                      -> x `strictEqual` js_FontFaceLoadStatusLoading >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just FontFaceLoadStatusLoading)
-                                 False
-                                   -> x `strictEqual` js_FontFaceLoadStatusLoaded >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just FontFaceLoadStatusLoaded)
-                                              False
-                                                -> x `strictEqual` js_FontFaceLoadStatusError >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just FontFaceLoadStatusError)
-                                                           False -> return Nothing
-js_FontFaceLoadStatusUnloaded = "unloaded"
-js_FontFaceLoadStatusLoading = "loading"
-js_FontFaceLoadStatusLoaded = "loaded"
-js_FontFaceLoadStatusError = "error"
- 
-data FontFaceSetLoadStatus = FontFaceSetLoadStatusLoading
-                           | FontFaceSetLoadStatusLoaded
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal FontFaceSetLoadStatus where
-        toJSVal FontFaceSetLoadStatusLoading
-          = toJSVal js_FontFaceSetLoadStatusLoading
-        toJSVal FontFaceSetLoadStatusLoaded
-          = toJSVal js_FontFaceSetLoadStatusLoaded
- 
-instance FromJSVal FontFaceSetLoadStatus where
-        fromJSVal x
-          = x `strictEqual` js_FontFaceSetLoadStatusLoading >>=
-              \ r ->
-                case r of
-                    True -> return (Just FontFaceSetLoadStatusLoading)
-                    False
-                      -> x `strictEqual` js_FontFaceSetLoadStatusLoaded >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just FontFaceSetLoadStatusLoaded)
-                                 False -> return Nothing
-js_FontFaceSetLoadStatusLoading = "loading"
-js_FontFaceSetLoadStatusLoaded = "loaded"
- 
-data VisibilityState = VisibilityStateHidden
-                     | VisibilityStateVisible
-                     | VisibilityStatePrerender
-                     deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal VisibilityState where
-        toJSVal VisibilityStateHidden = toJSVal js_VisibilityStateHidden
-        toJSVal VisibilityStateVisible = toJSVal js_VisibilityStateVisible
-        toJSVal VisibilityStatePrerender
-          = toJSVal js_VisibilityStatePrerender
- 
-instance FromJSVal VisibilityState where
-        fromJSVal x
-          = x `strictEqual` js_VisibilityStateHidden >>=
-              \ r ->
-                case r of
-                    True -> return (Just VisibilityStateHidden)
-                    False
-                      -> x `strictEqual` js_VisibilityStateVisible >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just VisibilityStateVisible)
-                                 False
-                                   -> x `strictEqual` js_VisibilityStatePrerender >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just VisibilityStatePrerender)
-                                              False -> return Nothing
-js_VisibilityStateHidden = "hidden"
-js_VisibilityStateVisible = "visible"
-js_VisibilityStatePrerender = "prerender"
- 
-data DocumentReadyState = DocumentReadyStateLoading
-                        | DocumentReadyStateInteractive
-                        | DocumentReadyStateComplete
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal DocumentReadyState where
-        toJSVal DocumentReadyStateLoading
-          = toJSVal js_DocumentReadyStateLoading
-        toJSVal DocumentReadyStateInteractive
-          = toJSVal js_DocumentReadyStateInteractive
-        toJSVal DocumentReadyStateComplete
-          = toJSVal js_DocumentReadyStateComplete
- 
-instance FromJSVal DocumentReadyState where
-        fromJSVal x
-          = x `strictEqual` js_DocumentReadyStateLoading >>=
-              \ r ->
-                case r of
-                    True -> return (Just DocumentReadyStateLoading)
-                    False
-                      -> x `strictEqual` js_DocumentReadyStateInteractive >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just DocumentReadyStateInteractive)
-                                 False
-                                   -> x `strictEqual` js_DocumentReadyStateComplete >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just DocumentReadyStateComplete)
-                                              False -> return Nothing
-js_DocumentReadyStateLoading = "loading"
-js_DocumentReadyStateInteractive = "interactive"
-js_DocumentReadyStateComplete = "complete"
- 
-data ShadowRootMode = ShadowRootModeUserAgent
-                    | ShadowRootModeClosed
-                    | ShadowRootModeOpen
-                    deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal ShadowRootMode where
-        toJSVal ShadowRootModeUserAgent
-          = toJSVal js_ShadowRootModeUserAgent
-        toJSVal ShadowRootModeClosed = toJSVal js_ShadowRootModeClosed
-        toJSVal ShadowRootModeOpen = toJSVal js_ShadowRootModeOpen
- 
-instance FromJSVal ShadowRootMode where
-        fromJSVal x
-          = x `strictEqual` js_ShadowRootModeUserAgent >>=
-              \ r ->
-                case r of
-                    True -> return (Just ShadowRootModeUserAgent)
-                    False
-                      -> x `strictEqual` js_ShadowRootModeClosed >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just ShadowRootModeClosed)
-                                 False
-                                   -> x `strictEqual` js_ShadowRootModeOpen >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just ShadowRootModeOpen)
-                                              False -> return Nothing
-js_ShadowRootModeUserAgent = "user-agent"
-js_ShadowRootModeClosed = "closed"
-js_ShadowRootModeOpen = "open"
- 
-data BlobLineEndings = BlobLineEndingsTransparent
-                     | BlobLineEndingsNative
-                     deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal BlobLineEndings where
-        toJSVal BlobLineEndingsTransparent
-          = toJSVal js_BlobLineEndingsTransparent
-        toJSVal BlobLineEndingsNative = toJSVal js_BlobLineEndingsNative
- 
-instance FromJSVal BlobLineEndings where
-        fromJSVal x
-          = x `strictEqual` js_BlobLineEndingsTransparent >>=
-              \ r ->
-                case r of
-                    True -> return (Just BlobLineEndingsTransparent)
-                    False
-                      -> x `strictEqual` js_BlobLineEndingsNative >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just BlobLineEndingsNative)
-                                 False -> return Nothing
-js_BlobLineEndingsTransparent = "transparent"
-js_BlobLineEndingsNative = "native"
- 
-data ImageSmoothingQuality = ImageSmoothingQualityLow
-                           | ImageSmoothingQualityMedium
-                           | ImageSmoothingQualityHigh
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal ImageSmoothingQuality where
-        toJSVal ImageSmoothingQualityLow
-          = toJSVal js_ImageSmoothingQualityLow
-        toJSVal ImageSmoothingQualityMedium
-          = toJSVal js_ImageSmoothingQualityMedium
-        toJSVal ImageSmoothingQualityHigh
-          = toJSVal js_ImageSmoothingQualityHigh
- 
-instance FromJSVal ImageSmoothingQuality where
-        fromJSVal x
-          = x `strictEqual` js_ImageSmoothingQualityLow >>=
-              \ r ->
-                case r of
-                    True -> return (Just ImageSmoothingQualityLow)
-                    False
-                      -> x `strictEqual` js_ImageSmoothingQualityMedium >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just ImageSmoothingQualityMedium)
-                                 False
-                                   -> x `strictEqual` js_ImageSmoothingQualityHigh >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just ImageSmoothingQualityHigh)
-                                              False -> return Nothing
-js_ImageSmoothingQualityLow = "low"
-js_ImageSmoothingQualityMedium = "medium"
-js_ImageSmoothingQualityHigh = "high"
- 
-data CanvasWindingRule = CanvasWindingRuleNonzero
-                       | CanvasWindingRuleEvenodd
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal CanvasWindingRule where
-        toJSVal CanvasWindingRuleNonzero
-          = toJSVal js_CanvasWindingRuleNonzero
-        toJSVal CanvasWindingRuleEvenodd
-          = toJSVal js_CanvasWindingRuleEvenodd
- 
-instance FromJSVal CanvasWindingRule where
-        fromJSVal x
-          = x `strictEqual` js_CanvasWindingRuleNonzero >>=
-              \ r ->
-                case r of
-                    True -> return (Just CanvasWindingRuleNonzero)
-                    False
-                      -> x `strictEqual` js_CanvasWindingRuleEvenodd >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just CanvasWindingRuleEvenodd)
-                                 False -> return Nothing
-js_CanvasWindingRuleNonzero = "nonzero"
-js_CanvasWindingRuleEvenodd = "evenodd"
- 
-data WebGLPowerPreference = WebGLPowerPreferenceDefault
-                          | WebGLPowerPreferenceLowPower
-                          | WebGLPowerPreferenceHighPerformance
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGLPowerPreference where
-        toJSVal WebGLPowerPreferenceDefault
-          = toJSVal js_WebGLPowerPreferenceDefault
-        toJSVal WebGLPowerPreferenceLowPower
-          = toJSVal js_WebGLPowerPreferenceLowPower
-        toJSVal WebGLPowerPreferenceHighPerformance
-          = toJSVal js_WebGLPowerPreferenceHighPerformance
- 
-instance FromJSVal WebGLPowerPreference where
-        fromJSVal x
-          = x `strictEqual` js_WebGLPowerPreferenceDefault >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGLPowerPreferenceDefault)
-                    False
-                      -> x `strictEqual` js_WebGLPowerPreferenceLowPower >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGLPowerPreferenceLowPower)
-                                 False
-                                   -> x `strictEqual` js_WebGLPowerPreferenceHighPerformance >>=
-                                        \ r ->
-                                          case r of
-                                              True
-                                                -> return (Just WebGLPowerPreferenceHighPerformance)
-                                              False -> return Nothing
-js_WebGLPowerPreferenceDefault = "default"
-js_WebGLPowerPreferenceLowPower = "low-power"
-js_WebGLPowerPreferenceHighPerformance = "high-performance"
- 
-data WebGPUCompareFunction = WebGPUCompareFunctionNever
-                           | WebGPUCompareFunctionLess
-                           | WebGPUCompareFunctionEqual
-                           | WebGPUCompareFunctionLessequal
-                           | WebGPUCompareFunctionGreater
-                           | WebGPUCompareFunctionNotequal
-                           | WebGPUCompareFunctionGreaterequal
-                           | WebGPUCompareFunctionAlways
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUCompareFunction where
-        toJSVal WebGPUCompareFunctionNever
-          = toJSVal js_WebGPUCompareFunctionNever
-        toJSVal WebGPUCompareFunctionLess
-          = toJSVal js_WebGPUCompareFunctionLess
-        toJSVal WebGPUCompareFunctionEqual
-          = toJSVal js_WebGPUCompareFunctionEqual
-        toJSVal WebGPUCompareFunctionLessequal
-          = toJSVal js_WebGPUCompareFunctionLessequal
-        toJSVal WebGPUCompareFunctionGreater
-          = toJSVal js_WebGPUCompareFunctionGreater
-        toJSVal WebGPUCompareFunctionNotequal
-          = toJSVal js_WebGPUCompareFunctionNotequal
-        toJSVal WebGPUCompareFunctionGreaterequal
-          = toJSVal js_WebGPUCompareFunctionGreaterequal
-        toJSVal WebGPUCompareFunctionAlways
-          = toJSVal js_WebGPUCompareFunctionAlways
- 
-instance FromJSVal WebGPUCompareFunction where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUCompareFunctionNever >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUCompareFunctionNever)
-                    False
-                      -> x `strictEqual` js_WebGPUCompareFunctionLess >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUCompareFunctionLess)
-                                 False
-                                   -> x `strictEqual` js_WebGPUCompareFunctionEqual >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just WebGPUCompareFunctionEqual)
-                                              False
-                                                -> x `strictEqual` js_WebGPUCompareFunctionLessequal
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     WebGPUCompareFunctionLessequal)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_WebGPUCompareFunctionGreater
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  WebGPUCompareFunctionGreater)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_WebGPUCompareFunctionNotequal
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               WebGPUCompareFunctionNotequal)
-                                                                                     False
-                                                                                       -> x `strictEqual`
-                                                                                            js_WebGPUCompareFunctionGreaterequal
-                                                                                            >>=
-                                                                                            \ r ->
-                                                                                              case r
-                                                                                                of
-                                                                                                  True
-                                                                                                    -> return
-                                                                                                         (Just
-                                                                                                            WebGPUCompareFunctionGreaterequal)
-                                                                                                  False
-                                                                                                    -> x `strictEqual`
-                                                                                                         js_WebGPUCompareFunctionAlways
-                                                                                                         >>=
-                                                                                                         \ r
-                                                                                                           ->
-                                                                                                           case
-                                                                                                             r
-                                                                                                             of
-                                                                                                               True
-                                                                                                                 -> return
-                                                                                                                      (Just
-                                                                                                                         WebGPUCompareFunctionAlways)
-                                                                                                               False
-                                                                                                                 -> return
-                                                                                                                      Nothing
-js_WebGPUCompareFunctionNever = "never"
-js_WebGPUCompareFunctionLess = "less"
-js_WebGPUCompareFunctionEqual = "equal"
-js_WebGPUCompareFunctionLessequal = "lessequal"
-js_WebGPUCompareFunctionGreater = "greater"
-js_WebGPUCompareFunctionNotequal = "notequal"
-js_WebGPUCompareFunctionGreaterequal = "greaterequal"
-js_WebGPUCompareFunctionAlways = "always"
- 
-data WebGPUPixelFormat = WebGPUPixelFormatBGRA8Unorm
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUPixelFormat where
-        toJSVal WebGPUPixelFormatBGRA8Unorm
-          = toJSVal js_WebGPUPixelFormatBGRA8Unorm
- 
-instance FromJSVal WebGPUPixelFormat where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUPixelFormatBGRA8Unorm >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUPixelFormatBGRA8Unorm)
-                    False -> return Nothing
-js_WebGPUPixelFormatBGRA8Unorm = "BGRA8Unorm"
- 
-data WebGPULoadAction = WebGPULoadActionDontcare
-                      | WebGPULoadActionLoad
-                      | WebGPULoadActionClear
-                      deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPULoadAction where
-        toJSVal WebGPULoadActionDontcare
-          = toJSVal js_WebGPULoadActionDontcare
-        toJSVal WebGPULoadActionLoad = toJSVal js_WebGPULoadActionLoad
-        toJSVal WebGPULoadActionClear = toJSVal js_WebGPULoadActionClear
- 
-instance FromJSVal WebGPULoadAction where
-        fromJSVal x
-          = x `strictEqual` js_WebGPULoadActionDontcare >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPULoadActionDontcare)
-                    False
-                      -> x `strictEqual` js_WebGPULoadActionLoad >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPULoadActionLoad)
-                                 False
-                                   -> x `strictEqual` js_WebGPULoadActionClear >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just WebGPULoadActionClear)
-                                              False -> return Nothing
-js_WebGPULoadActionDontcare = "dontcare"
-js_WebGPULoadActionLoad = "load"
-js_WebGPULoadActionClear = "clear"
- 
-data WebGPUStoreAction = WebGPUStoreActionDontcare
-                       | WebGPUStoreActionStore
-                       | WebGPUStoreActionMultisampleresolve
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUStoreAction where
-        toJSVal WebGPUStoreActionDontcare
-          = toJSVal js_WebGPUStoreActionDontcare
-        toJSVal WebGPUStoreActionStore = toJSVal js_WebGPUStoreActionStore
-        toJSVal WebGPUStoreActionMultisampleresolve
-          = toJSVal js_WebGPUStoreActionMultisampleresolve
- 
-instance FromJSVal WebGPUStoreAction where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUStoreActionDontcare >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUStoreActionDontcare)
-                    False
-                      -> x `strictEqual` js_WebGPUStoreActionStore >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUStoreActionStore)
-                                 False
-                                   -> x `strictEqual` js_WebGPUStoreActionMultisampleresolve >>=
-                                        \ r ->
-                                          case r of
-                                              True
-                                                -> return (Just WebGPUStoreActionMultisampleresolve)
-                                              False -> return Nothing
-js_WebGPUStoreActionDontcare = "dontcare"
-js_WebGPUStoreActionStore = "store"
-js_WebGPUStoreActionMultisampleresolve = "multisampleresolve"
- 
-data WebGPUPrimitiveType = WebGPUPrimitiveTypePoint
-                         | WebGPUPrimitiveTypeLine
-                         | WebGPUPrimitiveTypeLinestrip
-                         | WebGPUPrimitiveTypeTriangle
-                         | WebGPUPrimitiveTypeTrianglestrip
-                         deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUPrimitiveType where
-        toJSVal WebGPUPrimitiveTypePoint
-          = toJSVal js_WebGPUPrimitiveTypePoint
-        toJSVal WebGPUPrimitiveTypeLine
-          = toJSVal js_WebGPUPrimitiveTypeLine
-        toJSVal WebGPUPrimitiveTypeLinestrip
-          = toJSVal js_WebGPUPrimitiveTypeLinestrip
-        toJSVal WebGPUPrimitiveTypeTriangle
-          = toJSVal js_WebGPUPrimitiveTypeTriangle
-        toJSVal WebGPUPrimitiveTypeTrianglestrip
-          = toJSVal js_WebGPUPrimitiveTypeTrianglestrip
- 
-instance FromJSVal WebGPUPrimitiveType where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUPrimitiveTypePoint >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUPrimitiveTypePoint)
-                    False
-                      -> x `strictEqual` js_WebGPUPrimitiveTypeLine >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUPrimitiveTypeLine)
-                                 False
-                                   -> x `strictEqual` js_WebGPUPrimitiveTypeLinestrip >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just WebGPUPrimitiveTypeLinestrip)
-                                              False
-                                                -> x `strictEqual` js_WebGPUPrimitiveTypeTriangle
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just WebGPUPrimitiveTypeTriangle)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_WebGPUPrimitiveTypeTrianglestrip
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  WebGPUPrimitiveTypeTrianglestrip)
-                                                                        False -> return Nothing
-js_WebGPUPrimitiveTypePoint = "point"
-js_WebGPUPrimitiveTypeLine = "line"
-js_WebGPUPrimitiveTypeLinestrip = "linestrip"
-js_WebGPUPrimitiveTypeTriangle = "triangle"
-js_WebGPUPrimitiveTypeTrianglestrip = "trianglestrip"
- 
-data WebGPUFunctionType = WebGPUFunctionTypeFragment
-                        | WebGPUFunctionTypeVertex
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUFunctionType where
-        toJSVal WebGPUFunctionTypeFragment
-          = toJSVal js_WebGPUFunctionTypeFragment
-        toJSVal WebGPUFunctionTypeVertex
-          = toJSVal js_WebGPUFunctionTypeVertex
- 
-instance FromJSVal WebGPUFunctionType where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUFunctionTypeFragment >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUFunctionTypeFragment)
-                    False
-                      -> x `strictEqual` js_WebGPUFunctionTypeVertex >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUFunctionTypeVertex)
-                                 False -> return Nothing
-js_WebGPUFunctionTypeFragment = "fragment"
-js_WebGPUFunctionTypeVertex = "vertex"
- 
-data WebGPUStencilOperation = WebGPUStencilOperationKeep
-                            | WebGPUStencilOperationZero
-                            | WebGPUStencilOperationReplace
-                            | WebGPUStencilOperationIncrementclamp
-                            | WebGPUStencilOperationDecrementclamp
-                            | WebGPUStencilOperationInvert
-                            | WebGPUStencilOperationIncrementwrap
-                            | WebGPUStencilOperationDecrementwrap
-                            deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUStencilOperation where
-        toJSVal WebGPUStencilOperationKeep
-          = toJSVal js_WebGPUStencilOperationKeep
-        toJSVal WebGPUStencilOperationZero
-          = toJSVal js_WebGPUStencilOperationZero
-        toJSVal WebGPUStencilOperationReplace
-          = toJSVal js_WebGPUStencilOperationReplace
-        toJSVal WebGPUStencilOperationIncrementclamp
-          = toJSVal js_WebGPUStencilOperationIncrementclamp
-        toJSVal WebGPUStencilOperationDecrementclamp
-          = toJSVal js_WebGPUStencilOperationDecrementclamp
-        toJSVal WebGPUStencilOperationInvert
-          = toJSVal js_WebGPUStencilOperationInvert
-        toJSVal WebGPUStencilOperationIncrementwrap
-          = toJSVal js_WebGPUStencilOperationIncrementwrap
-        toJSVal WebGPUStencilOperationDecrementwrap
-          = toJSVal js_WebGPUStencilOperationDecrementwrap
- 
-instance FromJSVal WebGPUStencilOperation where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUStencilOperationKeep >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUStencilOperationKeep)
-                    False
-                      -> x `strictEqual` js_WebGPUStencilOperationZero >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUStencilOperationZero)
-                                 False
-                                   -> x `strictEqual` js_WebGPUStencilOperationReplace >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just WebGPUStencilOperationReplace)
-                                              False
-                                                -> x `strictEqual`
-                                                     js_WebGPUStencilOperationIncrementclamp
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     WebGPUStencilOperationIncrementclamp)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_WebGPUStencilOperationDecrementclamp
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  WebGPUStencilOperationDecrementclamp)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_WebGPUStencilOperationInvert
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               WebGPUStencilOperationInvert)
-                                                                                     False
-                                                                                       -> x `strictEqual`
-                                                                                            js_WebGPUStencilOperationIncrementwrap
-                                                                                            >>=
-                                                                                            \ r ->
-                                                                                              case r
-                                                                                                of
-                                                                                                  True
-                                                                                                    -> return
-                                                                                                         (Just
-                                                                                                            WebGPUStencilOperationIncrementwrap)
-                                                                                                  False
-                                                                                                    -> x `strictEqual`
-                                                                                                         js_WebGPUStencilOperationDecrementwrap
-                                                                                                         >>=
-                                                                                                         \ r
-                                                                                                           ->
-                                                                                                           case
-                                                                                                             r
-                                                                                                             of
-                                                                                                               True
-                                                                                                                 -> return
-                                                                                                                      (Just
-                                                                                                                         WebGPUStencilOperationDecrementwrap)
-                                                                                                               False
-                                                                                                                 -> return
-                                                                                                                      Nothing
-js_WebGPUStencilOperationKeep = "keep"
-js_WebGPUStencilOperationZero = "zero"
-js_WebGPUStencilOperationReplace = "replace"
-js_WebGPUStencilOperationIncrementclamp = "incrementclamp"
-js_WebGPUStencilOperationDecrementclamp = "decrementclamp"
-js_WebGPUStencilOperationInvert = "invert"
-js_WebGPUStencilOperationIncrementwrap = "incrementwrap"
-js_WebGPUStencilOperationDecrementwrap = "decrementwrap"
- 
-data WebGPUStatus = WebGPUStatusNotenqueued
-                  | WebGPUStatusEnqueued
-                  | WebGPUStatusCommitted
-                  | WebGPUStatusScheduled
-                  | WebGPUStatusCompleted
-                  | WebGPUStatusError
-                  deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUStatus where
-        toJSVal WebGPUStatusNotenqueued
-          = toJSVal js_WebGPUStatusNotenqueued
-        toJSVal WebGPUStatusEnqueued = toJSVal js_WebGPUStatusEnqueued
-        toJSVal WebGPUStatusCommitted = toJSVal js_WebGPUStatusCommitted
-        toJSVal WebGPUStatusScheduled = toJSVal js_WebGPUStatusScheduled
-        toJSVal WebGPUStatusCompleted = toJSVal js_WebGPUStatusCompleted
-        toJSVal WebGPUStatusError = toJSVal js_WebGPUStatusError
- 
-instance FromJSVal WebGPUStatus where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUStatusNotenqueued >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUStatusNotenqueued)
-                    False
-                      -> x `strictEqual` js_WebGPUStatusEnqueued >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUStatusEnqueued)
-                                 False
-                                   -> x `strictEqual` js_WebGPUStatusCommitted >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just WebGPUStatusCommitted)
-                                              False
-                                                -> x `strictEqual` js_WebGPUStatusScheduled >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return (Just WebGPUStatusScheduled)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_WebGPUStatusCompleted
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  WebGPUStatusCompleted)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_WebGPUStatusError
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               WebGPUStatusError)
-                                                                                     False
-                                                                                       -> return
-                                                                                            Nothing
-js_WebGPUStatusNotenqueued = "notenqueued"
-js_WebGPUStatusEnqueued = "enqueued"
-js_WebGPUStatusCommitted = "committed"
-js_WebGPUStatusScheduled = "scheduled"
-js_WebGPUStatusCompleted = "completed"
-js_WebGPUStatusError = "error"
- 
-data WebGPUSamplerAddressMode = WebGPUSamplerAddressModeClamptoedge
-                              | WebGPUSamplerAddressModeMirrorclamptoedge
-                              | WebGPUSamplerAddressModeRepeat
-                              | WebGPUSamplerAddressModeMirrorrepeat
-                              | WebGPUSamplerAddressModeClamptozero
-                              deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUSamplerAddressMode where
-        toJSVal WebGPUSamplerAddressModeClamptoedge
-          = toJSVal js_WebGPUSamplerAddressModeClamptoedge
-        toJSVal WebGPUSamplerAddressModeMirrorclamptoedge
-          = toJSVal js_WebGPUSamplerAddressModeMirrorclamptoedge
-        toJSVal WebGPUSamplerAddressModeRepeat
-          = toJSVal js_WebGPUSamplerAddressModeRepeat
-        toJSVal WebGPUSamplerAddressModeMirrorrepeat
-          = toJSVal js_WebGPUSamplerAddressModeMirrorrepeat
-        toJSVal WebGPUSamplerAddressModeClamptozero
-          = toJSVal js_WebGPUSamplerAddressModeClamptozero
- 
-instance FromJSVal WebGPUSamplerAddressMode where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUSamplerAddressModeClamptoedge >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUSamplerAddressModeClamptoedge)
-                    False
-                      -> x `strictEqual` js_WebGPUSamplerAddressModeMirrorclamptoedge >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUSamplerAddressModeMirrorclamptoedge)
-                                 False
-                                   -> x `strictEqual` js_WebGPUSamplerAddressModeRepeat >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just WebGPUSamplerAddressModeRepeat)
-                                              False
-                                                -> x `strictEqual`
-                                                     js_WebGPUSamplerAddressModeMirrorrepeat
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     WebGPUSamplerAddressModeMirrorrepeat)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_WebGPUSamplerAddressModeClamptozero
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  WebGPUSamplerAddressModeClamptozero)
-                                                                        False -> return Nothing
-js_WebGPUSamplerAddressModeClamptoedge = "clamptoedge"
-js_WebGPUSamplerAddressModeMirrorclamptoedge = "mirrorclamptoedge"
-js_WebGPUSamplerAddressModeRepeat = "repeat"
-js_WebGPUSamplerAddressModeMirrorrepeat = "mirrorrepeat"
-js_WebGPUSamplerAddressModeClamptozero = "clamptozero"
- 
-data WebGPUSamplerMinMagFilter = WebGPUSamplerMinMagFilterNearest
-                               | WebGPUSamplerMinMagFilterLinear
-                               deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUSamplerMinMagFilter where
-        toJSVal WebGPUSamplerMinMagFilterNearest
-          = toJSVal js_WebGPUSamplerMinMagFilterNearest
-        toJSVal WebGPUSamplerMinMagFilterLinear
-          = toJSVal js_WebGPUSamplerMinMagFilterLinear
- 
-instance FromJSVal WebGPUSamplerMinMagFilter where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUSamplerMinMagFilterNearest >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUSamplerMinMagFilterNearest)
-                    False
-                      -> x `strictEqual` js_WebGPUSamplerMinMagFilterLinear >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUSamplerMinMagFilterLinear)
-                                 False -> return Nothing
-js_WebGPUSamplerMinMagFilterNearest = "nearest"
-js_WebGPUSamplerMinMagFilterLinear = "linear"
- 
-data WebGPUSamplerMipFilter = WebGPUSamplerMipFilterNotmipmapped
-                            | WebGPUSamplerMipFilterNearest
-                            | WebGPUSamplerMipFilterLinear
-                            deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUSamplerMipFilter where
-        toJSVal WebGPUSamplerMipFilterNotmipmapped
-          = toJSVal js_WebGPUSamplerMipFilterNotmipmapped
-        toJSVal WebGPUSamplerMipFilterNearest
-          = toJSVal js_WebGPUSamplerMipFilterNearest
-        toJSVal WebGPUSamplerMipFilterLinear
-          = toJSVal js_WebGPUSamplerMipFilterLinear
- 
-instance FromJSVal WebGPUSamplerMipFilter where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUSamplerMipFilterNotmipmapped >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUSamplerMipFilterNotmipmapped)
-                    False
-                      -> x `strictEqual` js_WebGPUSamplerMipFilterNearest >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUSamplerMipFilterNearest)
-                                 False
-                                   -> x `strictEqual` js_WebGPUSamplerMipFilterLinear >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just WebGPUSamplerMipFilterLinear)
-                                              False -> return Nothing
-js_WebGPUSamplerMipFilterNotmipmapped = "notmipmapped"
-js_WebGPUSamplerMipFilterNearest = "nearest"
-js_WebGPUSamplerMipFilterLinear = "linear"
- 
-data WebGPUCullMode = WebGPUCullModeNone
-                    | WebGPUCullModeFront
-                    | WebGPUCullModeBack
-                    deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUCullMode where
-        toJSVal WebGPUCullModeNone = toJSVal js_WebGPUCullModeNone
-        toJSVal WebGPUCullModeFront = toJSVal js_WebGPUCullModeFront
-        toJSVal WebGPUCullModeBack = toJSVal js_WebGPUCullModeBack
- 
-instance FromJSVal WebGPUCullMode where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUCullModeNone >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUCullModeNone)
-                    False
-                      -> x `strictEqual` js_WebGPUCullModeFront >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUCullModeFront)
-                                 False
-                                   -> x `strictEqual` js_WebGPUCullModeBack >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just WebGPUCullModeBack)
-                                              False -> return Nothing
-js_WebGPUCullModeNone = "none"
-js_WebGPUCullModeFront = "front"
-js_WebGPUCullModeBack = "back"
- 
-data WebGPUIndexType = WebGPUIndexTypeUint16
-                     | WebGPUIndexTypeUint32
-                     deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUIndexType where
-        toJSVal WebGPUIndexTypeUint16 = toJSVal js_WebGPUIndexTypeUint16
-        toJSVal WebGPUIndexTypeUint32 = toJSVal js_WebGPUIndexTypeUint32
- 
-instance FromJSVal WebGPUIndexType where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUIndexTypeUint16 >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUIndexTypeUint16)
-                    False
-                      -> x `strictEqual` js_WebGPUIndexTypeUint32 >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUIndexTypeUint32)
-                                 False -> return Nothing
-js_WebGPUIndexTypeUint16 = "uint16"
-js_WebGPUIndexTypeUint32 = "uint32"
- 
-data WebGPUVisibilityResultMode = WebGPUVisibilityResultModeDisabled
-                                | WebGPUVisibilityResultModeBoolean
-                                | WebGPUVisibilityResultModeCounting
-                                deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUVisibilityResultMode where
-        toJSVal WebGPUVisibilityResultModeDisabled
-          = toJSVal js_WebGPUVisibilityResultModeDisabled
-        toJSVal WebGPUVisibilityResultModeBoolean
-          = toJSVal js_WebGPUVisibilityResultModeBoolean
-        toJSVal WebGPUVisibilityResultModeCounting
-          = toJSVal js_WebGPUVisibilityResultModeCounting
- 
-instance FromJSVal WebGPUVisibilityResultMode where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUVisibilityResultModeDisabled >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUVisibilityResultModeDisabled)
-                    False
-                      -> x `strictEqual` js_WebGPUVisibilityResultModeBoolean >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUVisibilityResultModeBoolean)
-                                 False
-                                   -> x `strictEqual` js_WebGPUVisibilityResultModeCounting >>=
-                                        \ r ->
-                                          case r of
-                                              True
-                                                -> return (Just WebGPUVisibilityResultModeCounting)
-                                              False -> return Nothing
-js_WebGPUVisibilityResultModeDisabled = "disabled"
-js_WebGPUVisibilityResultModeBoolean = "boolean"
-js_WebGPUVisibilityResultModeCounting = "counting"
- 
-data WebGPUWinding = WebGPUWindingClockwise
-                   | WebGPUWindingCounterclockwise
-                   deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUWinding where
-        toJSVal WebGPUWindingClockwise = toJSVal js_WebGPUWindingClockwise
-        toJSVal WebGPUWindingCounterclockwise
-          = toJSVal js_WebGPUWindingCounterclockwise
- 
-instance FromJSVal WebGPUWinding where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUWindingClockwise >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUWindingClockwise)
-                    False
-                      -> x `strictEqual` js_WebGPUWindingCounterclockwise >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUWindingCounterclockwise)
-                                 False -> return Nothing
-js_WebGPUWindingClockwise = "clockwise"
-js_WebGPUWindingCounterclockwise = "counterclockwise"
- 
-data WebGPUDepthClipMode = WebGPUDepthClipModeClip
-                         | WebGPUDepthClipModeClamp
-                         deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUDepthClipMode where
-        toJSVal WebGPUDepthClipModeClip
-          = toJSVal js_WebGPUDepthClipModeClip
-        toJSVal WebGPUDepthClipModeClamp
-          = toJSVal js_WebGPUDepthClipModeClamp
- 
-instance FromJSVal WebGPUDepthClipMode where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUDepthClipModeClip >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUDepthClipModeClip)
-                    False
-                      -> x `strictEqual` js_WebGPUDepthClipModeClamp >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUDepthClipModeClamp)
-                                 False -> return Nothing
-js_WebGPUDepthClipModeClip = "clip"
-js_WebGPUDepthClipModeClamp = "clamp"
- 
-data WebGPUTriangleFillMode = WebGPUTriangleFillModeFill
-                            | WebGPUTriangleFillModeLines
-                            deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUTriangleFillMode where
-        toJSVal WebGPUTriangleFillModeFill
-          = toJSVal js_WebGPUTriangleFillModeFill
-        toJSVal WebGPUTriangleFillModeLines
-          = toJSVal js_WebGPUTriangleFillModeLines
- 
-instance FromJSVal WebGPUTriangleFillMode where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUTriangleFillModeFill >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUTriangleFillModeFill)
-                    False
-                      -> x `strictEqual` js_WebGPUTriangleFillModeLines >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUTriangleFillModeLines)
-                                 False -> return Nothing
-js_WebGPUTriangleFillModeFill = "fill"
-js_WebGPUTriangleFillModeLines = "lines"
- 
-data WebGPUCPUCacheMode = WebGPUCPUCacheModeDefaultcache
-                        | WebGPUCPUCacheModeWritecombined
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUCPUCacheMode where
-        toJSVal WebGPUCPUCacheModeDefaultcache
-          = toJSVal js_WebGPUCPUCacheModeDefaultcache
-        toJSVal WebGPUCPUCacheModeWritecombined
-          = toJSVal js_WebGPUCPUCacheModeWritecombined
- 
-instance FromJSVal WebGPUCPUCacheMode where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUCPUCacheModeDefaultcache >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUCPUCacheModeDefaultcache)
-                    False
-                      -> x `strictEqual` js_WebGPUCPUCacheModeWritecombined >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUCPUCacheModeWritecombined)
-                                 False -> return Nothing
-js_WebGPUCPUCacheModeDefaultcache = "defaultcache"
-js_WebGPUCPUCacheModeWritecombined = "writecombined"
- 
-data WebGPUStorageMode = WebGPUStorageModeShared
-                       | WebGPUStorageModeManaged
-                       | WebGPUStorageModePrivate
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUStorageMode where
-        toJSVal WebGPUStorageModeShared
-          = toJSVal js_WebGPUStorageModeShared
-        toJSVal WebGPUStorageModeManaged
-          = toJSVal js_WebGPUStorageModeManaged
-        toJSVal WebGPUStorageModePrivate
-          = toJSVal js_WebGPUStorageModePrivate
- 
-instance FromJSVal WebGPUStorageMode where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUStorageModeShared >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUStorageModeShared)
-                    False
-                      -> x `strictEqual` js_WebGPUStorageModeManaged >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUStorageModeManaged)
-                                 False
-                                   -> x `strictEqual` js_WebGPUStorageModePrivate >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just WebGPUStorageModePrivate)
-                                              False -> return Nothing
-js_WebGPUStorageModeShared = "shared"
-js_WebGPUStorageModeManaged = "managed"
-js_WebGPUStorageModePrivate = "private"
- 
-data WebGPUResourceOptions = WebGPUResourceOptionsCpucachemodedefaultcache
-                           | WebGPUResourceOptionsCpucachemodewritecombined
-                           | WebGPUResourceOptionsStoragemodeshared
-                           | WebGPUResourceOptionsStoragemodemanaged
-                           | WebGPUResourceOptionsStoragemodeprivate
-                           | WebGPUResourceOptionsOptioncpucachemodedefaultcache
-                           | WebGPUResourceOptionsOptioncpucachemodewritecombined
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUResourceOptions where
-        toJSVal WebGPUResourceOptionsCpucachemodedefaultcache
-          = toJSVal js_WebGPUResourceOptionsCpucachemodedefaultcache
-        toJSVal WebGPUResourceOptionsCpucachemodewritecombined
-          = toJSVal js_WebGPUResourceOptionsCpucachemodewritecombined
-        toJSVal WebGPUResourceOptionsStoragemodeshared
-          = toJSVal js_WebGPUResourceOptionsStoragemodeshared
-        toJSVal WebGPUResourceOptionsStoragemodemanaged
-          = toJSVal js_WebGPUResourceOptionsStoragemodemanaged
-        toJSVal WebGPUResourceOptionsStoragemodeprivate
-          = toJSVal js_WebGPUResourceOptionsStoragemodeprivate
-        toJSVal WebGPUResourceOptionsOptioncpucachemodedefaultcache
-          = toJSVal js_WebGPUResourceOptionsOptioncpucachemodedefaultcache
-        toJSVal WebGPUResourceOptionsOptioncpucachemodewritecombined
-          = toJSVal js_WebGPUResourceOptionsOptioncpucachemodewritecombined
- 
-instance FromJSVal WebGPUResourceOptions where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUResourceOptionsCpucachemodedefaultcache
-              >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUResourceOptionsCpucachemodedefaultcache)
-                    False
-                      -> x `strictEqual`
-                           js_WebGPUResourceOptionsCpucachemodewritecombined
-                           >>=
-                           \ r ->
-                             case r of
-                                 True
-                                   -> return (Just WebGPUResourceOptionsCpucachemodewritecombined)
-                                 False
-                                   -> x `strictEqual` js_WebGPUResourceOptionsStoragemodeshared >>=
-                                        \ r ->
-                                          case r of
-                                              True
-                                                -> return
-                                                     (Just WebGPUResourceOptionsStoragemodeshared)
-                                              False
-                                                -> x `strictEqual`
-                                                     js_WebGPUResourceOptionsStoragemodemanaged
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     WebGPUResourceOptionsStoragemodemanaged)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_WebGPUResourceOptionsStoragemodeprivate
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  WebGPUResourceOptionsStoragemodeprivate)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_WebGPUResourceOptionsOptioncpucachemodedefaultcache
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               WebGPUResourceOptionsOptioncpucachemodedefaultcache)
-                                                                                     False
-                                                                                       -> x `strictEqual`
-                                                                                            js_WebGPUResourceOptionsOptioncpucachemodewritecombined
-                                                                                            >>=
-                                                                                            \ r ->
-                                                                                              case r
-                                                                                                of
-                                                                                                  True
-                                                                                                    -> return
-                                                                                                         (Just
-                                                                                                            WebGPUResourceOptionsOptioncpucachemodewritecombined)
-                                                                                                  False
-                                                                                                    -> return
-                                                                                                         Nothing
-js_WebGPUResourceOptionsCpucachemodedefaultcache
-  = "cpucachemodedefaultcache"
-js_WebGPUResourceOptionsCpucachemodewritecombined
-  = "cpucachemodewritecombined"
-js_WebGPUResourceOptionsStoragemodeshared = "storagemodeshared"
-js_WebGPUResourceOptionsStoragemodemanaged = "storagemodemanaged"
-js_WebGPUResourceOptionsStoragemodeprivate = "storagemodeprivate"
-js_WebGPUResourceOptionsOptioncpucachemodedefaultcache
-  = "optioncpucachemodedefaultcache"
-js_WebGPUResourceOptionsOptioncpucachemodewritecombined
-  = "optioncpucachemodewritecombined"
- 
-data WebGPUTextureUsage = WebGPUTextureUsageUnknown
-                        | WebGPUTextureUsageShaderread
-                        | WebGPUTextureUsageShaderwrite
-                        | WebGPUTextureUsageRendertarget
-                        | WebGPUTextureUsagePixelformatview
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUTextureUsage where
-        toJSVal WebGPUTextureUsageUnknown
-          = toJSVal js_WebGPUTextureUsageUnknown
-        toJSVal WebGPUTextureUsageShaderread
-          = toJSVal js_WebGPUTextureUsageShaderread
-        toJSVal WebGPUTextureUsageShaderwrite
-          = toJSVal js_WebGPUTextureUsageShaderwrite
-        toJSVal WebGPUTextureUsageRendertarget
-          = toJSVal js_WebGPUTextureUsageRendertarget
-        toJSVal WebGPUTextureUsagePixelformatview
-          = toJSVal js_WebGPUTextureUsagePixelformatview
- 
-instance FromJSVal WebGPUTextureUsage where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUTextureUsageUnknown >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUTextureUsageUnknown)
-                    False
-                      -> x `strictEqual` js_WebGPUTextureUsageShaderread >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUTextureUsageShaderread)
-                                 False
-                                   -> x `strictEqual` js_WebGPUTextureUsageShaderwrite >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just WebGPUTextureUsageShaderwrite)
-                                              False
-                                                -> x `strictEqual` js_WebGPUTextureUsageRendertarget
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     WebGPUTextureUsageRendertarget)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_WebGPUTextureUsagePixelformatview
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  WebGPUTextureUsagePixelformatview)
-                                                                        False -> return Nothing
-js_WebGPUTextureUsageUnknown = "unknown"
-js_WebGPUTextureUsageShaderread = "shaderread"
-js_WebGPUTextureUsageShaderwrite = "shaderwrite"
-js_WebGPUTextureUsageRendertarget = "rendertarget"
-js_WebGPUTextureUsagePixelformatview = "pixelformatview"
- 
-data WebGPUBlendOperation = WebGPUBlendOperationAdd
-                          | WebGPUBlendOperationSubtract
-                          | WebGPUBlendOperationReversesubtract
-                          | WebGPUBlendOperationMin
-                          | WebGPUBlendOperationMax
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUBlendOperation where
-        toJSVal WebGPUBlendOperationAdd
-          = toJSVal js_WebGPUBlendOperationAdd
-        toJSVal WebGPUBlendOperationSubtract
-          = toJSVal js_WebGPUBlendOperationSubtract
-        toJSVal WebGPUBlendOperationReversesubtract
-          = toJSVal js_WebGPUBlendOperationReversesubtract
-        toJSVal WebGPUBlendOperationMin
-          = toJSVal js_WebGPUBlendOperationMin
-        toJSVal WebGPUBlendOperationMax
-          = toJSVal js_WebGPUBlendOperationMax
- 
-instance FromJSVal WebGPUBlendOperation where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUBlendOperationAdd >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUBlendOperationAdd)
-                    False
-                      -> x `strictEqual` js_WebGPUBlendOperationSubtract >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUBlendOperationSubtract)
-                                 False
-                                   -> x `strictEqual` js_WebGPUBlendOperationReversesubtract >>=
-                                        \ r ->
-                                          case r of
-                                              True
-                                                -> return (Just WebGPUBlendOperationReversesubtract)
-                                              False
-                                                -> x `strictEqual` js_WebGPUBlendOperationMin >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just WebGPUBlendOperationMin)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_WebGPUBlendOperationMax
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  WebGPUBlendOperationMax)
-                                                                        False -> return Nothing
-js_WebGPUBlendOperationAdd = "add"
-js_WebGPUBlendOperationSubtract = "subtract"
-js_WebGPUBlendOperationReversesubtract = "reversesubtract"
-js_WebGPUBlendOperationMin = "min"
-js_WebGPUBlendOperationMax = "max"
- 
-data WebGPUBlendFactor = WebGPUBlendFactorZero
-                       | WebGPUBlendFactorOne
-                       | WebGPUBlendFactorSourcecolor
-                       | WebGPUBlendFactorOneminussourcecolor
-                       | WebGPUBlendFactorSourcealpha
-                       | WebGPUBlendFactorOneminussourcealpha
-                       | WebGPUBlendFactorDestinationcolor
-                       | WebGPUBlendFactorOneminusdestinationcolor
-                       | WebGPUBlendFactorDestinationalpha
-                       | WebGPUBlendFactorOneminusdestinationalpha
-                       | WebGPUBlendFactorSourcealphasaturated
-                       | WebGPUBlendFactorBlendcolor
-                       | WebGPUBlendFactorOneminusblendcolor
-                       | WebGPUBlendFactorBlendalpha
-                       | WebGPUBlendFactorOneminusblendalpha
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUBlendFactor where
-        toJSVal WebGPUBlendFactorZero = toJSVal js_WebGPUBlendFactorZero
-        toJSVal WebGPUBlendFactorOne = toJSVal js_WebGPUBlendFactorOne
-        toJSVal WebGPUBlendFactorSourcecolor
-          = toJSVal js_WebGPUBlendFactorSourcecolor
-        toJSVal WebGPUBlendFactorOneminussourcecolor
-          = toJSVal js_WebGPUBlendFactorOneminussourcecolor
-        toJSVal WebGPUBlendFactorSourcealpha
-          = toJSVal js_WebGPUBlendFactorSourcealpha
-        toJSVal WebGPUBlendFactorOneminussourcealpha
-          = toJSVal js_WebGPUBlendFactorOneminussourcealpha
-        toJSVal WebGPUBlendFactorDestinationcolor
-          = toJSVal js_WebGPUBlendFactorDestinationcolor
-        toJSVal WebGPUBlendFactorOneminusdestinationcolor
-          = toJSVal js_WebGPUBlendFactorOneminusdestinationcolor
-        toJSVal WebGPUBlendFactorDestinationalpha
-          = toJSVal js_WebGPUBlendFactorDestinationalpha
-        toJSVal WebGPUBlendFactorOneminusdestinationalpha
-          = toJSVal js_WebGPUBlendFactorOneminusdestinationalpha
-        toJSVal WebGPUBlendFactorSourcealphasaturated
-          = toJSVal js_WebGPUBlendFactorSourcealphasaturated
-        toJSVal WebGPUBlendFactorBlendcolor
-          = toJSVal js_WebGPUBlendFactorBlendcolor
-        toJSVal WebGPUBlendFactorOneminusblendcolor
-          = toJSVal js_WebGPUBlendFactorOneminusblendcolor
-        toJSVal WebGPUBlendFactorBlendalpha
-          = toJSVal js_WebGPUBlendFactorBlendalpha
-        toJSVal WebGPUBlendFactorOneminusblendalpha
-          = toJSVal js_WebGPUBlendFactorOneminusblendalpha
- 
-instance FromJSVal WebGPUBlendFactor where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUBlendFactorZero >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUBlendFactorZero)
-                    False
-                      -> x `strictEqual` js_WebGPUBlendFactorOne >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUBlendFactorOne)
-                                 False
-                                   -> x `strictEqual` js_WebGPUBlendFactorSourcecolor >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just WebGPUBlendFactorSourcecolor)
-                                              False
-                                                -> x `strictEqual`
-                                                     js_WebGPUBlendFactorOneminussourcecolor
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     WebGPUBlendFactorOneminussourcecolor)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_WebGPUBlendFactorSourcealpha
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  WebGPUBlendFactorSourcealpha)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_WebGPUBlendFactorOneminussourcealpha
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               WebGPUBlendFactorOneminussourcealpha)
-                                                                                     False
-                                                                                       -> x `strictEqual`
-                                                                                            js_WebGPUBlendFactorDestinationcolor
-                                                                                            >>=
-                                                                                            \ r ->
-                                                                                              case r
-                                                                                                of
-                                                                                                  True
-                                                                                                    -> return
-                                                                                                         (Just
-                                                                                                            WebGPUBlendFactorDestinationcolor)
-                                                                                                  False
-                                                                                                    -> x `strictEqual`
-                                                                                                         js_WebGPUBlendFactorOneminusdestinationcolor
-                                                                                                         >>=
-                                                                                                         \ r
-                                                                                                           ->
-                                                                                                           case
-                                                                                                             r
-                                                                                                             of
-                                                                                                               True
-                                                                                                                 -> return
-                                                                                                                      (Just
-                                                                                                                         WebGPUBlendFactorOneminusdestinationcolor)
-                                                                                                               False
-                                                                                                                 -> x `strictEqual`
-                                                                                                                      js_WebGPUBlendFactorDestinationalpha
-                                                                                                                      >>=
-                                                                                                                      \ r
-                                                                                                                        ->
-                                                                                                                        case
-                                                                                                                          r
-                                                                                                                          of
-                                                                                                                            True
-                                                                                                                              -> return
-                                                                                                                                   (Just
-                                                                                                                                      WebGPUBlendFactorDestinationalpha)
-                                                                                                                            False
-                                                                                                                              -> x `strictEqual`
-                                                                                                                                   js_WebGPUBlendFactorOneminusdestinationalpha
-                                                                                                                                   >>=
-                                                                                                                                   \ r
-                                                                                                                                     ->
-                                                                                                                                     case
-                                                                                                                                       r
-                                                                                                                                       of
-                                                                                                                                         True
-                                                                                                                                           -> return
-                                                                                                                                                (Just
-                                                                                                                                                   WebGPUBlendFactorOneminusdestinationalpha)
-                                                                                                                                         False
-                                                                                                                                           -> x `strictEqual`
-                                                                                                                                                js_WebGPUBlendFactorSourcealphasaturated
-                                                                                                                                                >>=
-                                                                                                                                                \ r
-                                                                                                                                                  ->
-                                                                                                                                                  case
-                                                                                                                                                    r
-                                                                                                                                                    of
-                                                                                                                                                      True
-                                                                                                                                                        -> return
-                                                                                                                                                             (Just
-                                                                                                                                                                WebGPUBlendFactorSourcealphasaturated)
-                                                                                                                                                      False
-                                                                                                                                                        -> x `strictEqual`
-                                                                                                                                                             js_WebGPUBlendFactorBlendcolor
-                                                                                                                                                             >>=
-                                                                                                                                                             \ r
-                                                                                                                                                               ->
-                                                                                                                                                               case
-                                                                                                                                                                 r
-                                                                                                                                                                 of
-                                                                                                                                                                   True
-                                                                                                                                                                     -> return
-                                                                                                                                                                          (Just
-                                                                                                                                                                             WebGPUBlendFactorBlendcolor)
-                                                                                                                                                                   False
-                                                                                                                                                                     -> x `strictEqual`
-                                                                                                                                                                          js_WebGPUBlendFactorOneminusblendcolor
-                                                                                                                                                                          >>=
-                                                                                                                                                                          \ r
-                                                                                                                                                                            ->
-                                                                                                                                                                            case
-                                                                                                                                                                              r
-                                                                                                                                                                              of
-                                                                                                                                                                                True
-                                                                                                                                                                                  -> return
-                                                                                                                                                                                       (Just
-                                                                                                                                                                                          WebGPUBlendFactorOneminusblendcolor)
-                                                                                                                                                                                False
-                                                                                                                                                                                  -> x `strictEqual`
-                                                                                                                                                                                       js_WebGPUBlendFactorBlendalpha
-                                                                                                                                                                                       >>=
-                                                                                                                                                                                       \ r
-                                                                                                                                                                                         ->
-                                                                                                                                                                                         case
-                                                                                                                                                                                           r
-                                                                                                                                                                                           of
-                                                                                                                                                                                             True
-                                                                                                                                                                                               -> return
-                                                                                                                                                                                                    (Just
-                                                                                                                                                                                                       WebGPUBlendFactorBlendalpha)
-                                                                                                                                                                                             False
-                                                                                                                                                                                               -> x `strictEqual`
-                                                                                                                                                                                                    js_WebGPUBlendFactorOneminusblendalpha
-                                                                                                                                                                                                    >>=
-                                                                                                                                                                                                    \ r
-                                                                                                                                                                                                      ->
-                                                                                                                                                                                                      case
-                                                                                                                                                                                                        r
-                                                                                                                                                                                                        of
-                                                                                                                                                                                                          True
-                                                                                                                                                                                                            -> return
-                                                                                                                                                                                                                 (Just
-                                                                                                                                                                                                                    WebGPUBlendFactorOneminusblendalpha)
-                                                                                                                                                                                                          False
-                                                                                                                                                                                                            -> return
-                                                                                                                                                                                                                 Nothing
-js_WebGPUBlendFactorZero = "zero"
-js_WebGPUBlendFactorOne = "one"
-js_WebGPUBlendFactorSourcecolor = "sourcecolor"
-js_WebGPUBlendFactorOneminussourcecolor = "oneminussourcecolor"
-js_WebGPUBlendFactorSourcealpha = "sourcealpha"
-js_WebGPUBlendFactorOneminussourcealpha = "oneminussourcealpha"
-js_WebGPUBlendFactorDestinationcolor = "destinationcolor"
-js_WebGPUBlendFactorOneminusdestinationcolor
-  = "oneminusdestinationcolor"
-js_WebGPUBlendFactorDestinationalpha = "destinationalpha"
-js_WebGPUBlendFactorOneminusdestinationalpha
-  = "oneminusdestinationalpha"
-js_WebGPUBlendFactorSourcealphasaturated = "sourcealphasaturated"
-js_WebGPUBlendFactorBlendcolor = "blendcolor"
-js_WebGPUBlendFactorOneminusblendcolor = "oneminusblendcolor"
-js_WebGPUBlendFactorBlendalpha = "blendalpha"
-js_WebGPUBlendFactorOneminusblendalpha = "oneminusblendalpha"
- 
-data WebGPUColorWriteMask = WebGPUColorWriteMaskNone
-                          | WebGPUColorWriteMaskRed
-                          | WebGPUColorWriteMaskGreen
-                          | WebGPUColorWriteMaskBlue
-                          | WebGPUColorWriteMaskAlpha
-                          | WebGPUColorWriteMaskAll
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUColorWriteMask where
-        toJSVal WebGPUColorWriteMaskNone
-          = toJSVal js_WebGPUColorWriteMaskNone
-        toJSVal WebGPUColorWriteMaskRed
-          = toJSVal js_WebGPUColorWriteMaskRed
-        toJSVal WebGPUColorWriteMaskGreen
-          = toJSVal js_WebGPUColorWriteMaskGreen
-        toJSVal WebGPUColorWriteMaskBlue
-          = toJSVal js_WebGPUColorWriteMaskBlue
-        toJSVal WebGPUColorWriteMaskAlpha
-          = toJSVal js_WebGPUColorWriteMaskAlpha
-        toJSVal WebGPUColorWriteMaskAll
-          = toJSVal js_WebGPUColorWriteMaskAll
- 
-instance FromJSVal WebGPUColorWriteMask where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUColorWriteMaskNone >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUColorWriteMaskNone)
-                    False
-                      -> x `strictEqual` js_WebGPUColorWriteMaskRed >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUColorWriteMaskRed)
-                                 False
-                                   -> x `strictEqual` js_WebGPUColorWriteMaskGreen >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just WebGPUColorWriteMaskGreen)
-                                              False
-                                                -> x `strictEqual` js_WebGPUColorWriteMaskBlue >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just WebGPUColorWriteMaskBlue)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_WebGPUColorWriteMaskAlpha
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  WebGPUColorWriteMaskAlpha)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_WebGPUColorWriteMaskAll
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               WebGPUColorWriteMaskAll)
-                                                                                     False
-                                                                                       -> return
-                                                                                            Nothing
-js_WebGPUColorWriteMaskNone = "none"
-js_WebGPUColorWriteMaskRed = "red"
-js_WebGPUColorWriteMaskGreen = "green"
-js_WebGPUColorWriteMaskBlue = "blue"
-js_WebGPUColorWriteMaskAlpha = "alpha"
-js_WebGPUColorWriteMaskAll = "all"
- 
-data WebGPUMultisampleDepthResolveFilter = WebGPUMultisampleDepthResolveFilterSample0
-                                         | WebGPUMultisampleDepthResolveFilterMin
-                                         | WebGPUMultisampleDepthResolveFilterMax
-                                         deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUMultisampleDepthResolveFilter where
-        toJSVal WebGPUMultisampleDepthResolveFilterSample0
-          = toJSVal js_WebGPUMultisampleDepthResolveFilterSample0
-        toJSVal WebGPUMultisampleDepthResolveFilterMin
-          = toJSVal js_WebGPUMultisampleDepthResolveFilterMin
-        toJSVal WebGPUMultisampleDepthResolveFilterMax
-          = toJSVal js_WebGPUMultisampleDepthResolveFilterMax
- 
-instance FromJSVal WebGPUMultisampleDepthResolveFilter where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUMultisampleDepthResolveFilterSample0 >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUMultisampleDepthResolveFilterSample0)
-                    False
-                      -> x `strictEqual` js_WebGPUMultisampleDepthResolveFilterMin >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUMultisampleDepthResolveFilterMin)
-                                 False
-                                   -> x `strictEqual` js_WebGPUMultisampleDepthResolveFilterMax >>=
-                                        \ r ->
-                                          case r of
-                                              True
-                                                -> return
-                                                     (Just WebGPUMultisampleDepthResolveFilterMax)
-                                              False -> return Nothing
-js_WebGPUMultisampleDepthResolveFilterSample0 = "sample0"
-js_WebGPUMultisampleDepthResolveFilterMin = "min"
-js_WebGPUMultisampleDepthResolveFilterMax = "max"
- 
-data WebGPUFeatureSet = WebGPUFeatureSetLevel1
-                      | WebGPUFeatureSetLevel2
-                      deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal WebGPUFeatureSet where
-        toJSVal WebGPUFeatureSetLevel1 = toJSVal js_WebGPUFeatureSetLevel1
-        toJSVal WebGPUFeatureSetLevel2 = toJSVal js_WebGPUFeatureSetLevel2
- 
-instance FromJSVal WebGPUFeatureSet where
-        fromJSVal x
-          = x `strictEqual` js_WebGPUFeatureSetLevel1 >>=
-              \ r ->
-                case r of
-                    True -> return (Just WebGPUFeatureSetLevel1)
-                    False
-                      -> x `strictEqual` js_WebGPUFeatureSetLevel2 >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just WebGPUFeatureSetLevel2)
-                                 False -> return Nothing
-js_WebGPUFeatureSetLevel1 = "level1"
-js_WebGPUFeatureSetLevel2 = "level2"
- 
-data VideoPresentationMode = VideoPresentationModeFullscreen
-                           | VideoPresentationModePictureInPicture
-                           | VideoPresentationModeInline
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal VideoPresentationMode where
-        toJSVal VideoPresentationModeFullscreen
-          = toJSVal js_VideoPresentationModeFullscreen
-        toJSVal VideoPresentationModePictureInPicture
-          = toJSVal js_VideoPresentationModePictureInPicture
-        toJSVal VideoPresentationModeInline
-          = toJSVal js_VideoPresentationModeInline
- 
-instance FromJSVal VideoPresentationMode where
-        fromJSVal x
-          = x `strictEqual` js_VideoPresentationModeFullscreen >>=
-              \ r ->
-                case r of
-                    True -> return (Just VideoPresentationModeFullscreen)
-                    False
-                      -> x `strictEqual` js_VideoPresentationModePictureInPicture >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just VideoPresentationModePictureInPicture)
-                                 False
-                                   -> x `strictEqual` js_VideoPresentationModeInline >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just VideoPresentationModeInline)
-                                              False -> return Nothing
-js_VideoPresentationModeFullscreen = "fullscreen"
-js_VideoPresentationModePictureInPicture = "picture-in-picture"
-js_VideoPresentationModeInline = "inline"
- 
-data TextTrackMode = TextTrackModeDisabled
-                   | TextTrackModeHidden
-                   | TextTrackModeShowing
-                   deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal TextTrackMode where
-        toJSVal TextTrackModeDisabled = toJSVal js_TextTrackModeDisabled
-        toJSVal TextTrackModeHidden = toJSVal js_TextTrackModeHidden
-        toJSVal TextTrackModeShowing = toJSVal js_TextTrackModeShowing
- 
-instance FromJSVal TextTrackMode where
-        fromJSVal x
-          = x `strictEqual` js_TextTrackModeDisabled >>=
-              \ r ->
-                case r of
-                    True -> return (Just TextTrackModeDisabled)
-                    False
-                      -> x `strictEqual` js_TextTrackModeHidden >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just TextTrackModeHidden)
-                                 False
-                                   -> x `strictEqual` js_TextTrackModeShowing >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just TextTrackModeShowing)
-                                              False -> return Nothing
-js_TextTrackModeDisabled = "disabled"
-js_TextTrackModeHidden = "hidden"
-js_TextTrackModeShowing = "showing"
- 
-data TextTrackKind = TextTrackKindSubtitles
-                   | TextTrackKindCaptions
-                   | TextTrackKindDescriptions
-                   | TextTrackKindChapters
-                   | TextTrackKindMetadata
-                   | TextTrackKindForced
-                   deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal TextTrackKind where
-        toJSVal TextTrackKindSubtitles = toJSVal js_TextTrackKindSubtitles
-        toJSVal TextTrackKindCaptions = toJSVal js_TextTrackKindCaptions
-        toJSVal TextTrackKindDescriptions
-          = toJSVal js_TextTrackKindDescriptions
-        toJSVal TextTrackKindChapters = toJSVal js_TextTrackKindChapters
-        toJSVal TextTrackKindMetadata = toJSVal js_TextTrackKindMetadata
-        toJSVal TextTrackKindForced = toJSVal js_TextTrackKindForced
- 
-instance FromJSVal TextTrackKind where
-        fromJSVal x
-          = x `strictEqual` js_TextTrackKindSubtitles >>=
-              \ r ->
-                case r of
-                    True -> return (Just TextTrackKindSubtitles)
-                    False
-                      -> x `strictEqual` js_TextTrackKindCaptions >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just TextTrackKindCaptions)
-                                 False
-                                   -> x `strictEqual` js_TextTrackKindDescriptions >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just TextTrackKindDescriptions)
-                                              False
-                                                -> x `strictEqual` js_TextTrackKindChapters >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return (Just TextTrackKindChapters)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_TextTrackKindMetadata
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  TextTrackKindMetadata)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_TextTrackKindForced
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               TextTrackKindForced)
-                                                                                     False
-                                                                                       -> return
-                                                                                            Nothing
-js_TextTrackKindSubtitles = "subtitles"
-js_TextTrackKindCaptions = "captions"
-js_TextTrackKindDescriptions = "descriptions"
-js_TextTrackKindChapters = "chapters"
-js_TextTrackKindMetadata = "metadata"
-js_TextTrackKindForced = "forced"
- 
-data ApplePayErrorCode = ApplePayErrorCodeUnknown
-                       | ApplePayErrorCodeShippingContactInvalid
-                       | ApplePayErrorCodeBillingContactInvalid
-                       | ApplePayErrorCodeAddressUnservicable
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal ApplePayErrorCode where
-        toJSVal ApplePayErrorCodeUnknown
-          = toJSVal js_ApplePayErrorCodeUnknown
-        toJSVal ApplePayErrorCodeShippingContactInvalid
-          = toJSVal js_ApplePayErrorCodeShippingContactInvalid
-        toJSVal ApplePayErrorCodeBillingContactInvalid
-          = toJSVal js_ApplePayErrorCodeBillingContactInvalid
-        toJSVal ApplePayErrorCodeAddressUnservicable
-          = toJSVal js_ApplePayErrorCodeAddressUnservicable
- 
-instance FromJSVal ApplePayErrorCode where
-        fromJSVal x
-          = x `strictEqual` js_ApplePayErrorCodeUnknown >>=
-              \ r ->
-                case r of
-                    True -> return (Just ApplePayErrorCodeUnknown)
-                    False
-                      -> x `strictEqual` js_ApplePayErrorCodeShippingContactInvalid >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just ApplePayErrorCodeShippingContactInvalid)
-                                 False
-                                   -> x `strictEqual` js_ApplePayErrorCodeBillingContactInvalid >>=
-                                        \ r ->
-                                          case r of
-                                              True
-                                                -> return
-                                                     (Just ApplePayErrorCodeBillingContactInvalid)
-                                              False
-                                                -> x `strictEqual`
-                                                     js_ApplePayErrorCodeAddressUnservicable
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     ApplePayErrorCodeAddressUnservicable)
-                                                           False -> return Nothing
-js_ApplePayErrorCodeUnknown = "unknown"
-js_ApplePayErrorCodeShippingContactInvalid
-  = "shippingContactInvalid"
-js_ApplePayErrorCodeBillingContactInvalid = "billingContactInvalid"
-js_ApplePayErrorCodeAddressUnservicable = "addressUnservicable"
- 
-data ApplePayErrorContactField = ApplePayErrorContactFieldPhoneNumber
-                               | ApplePayErrorContactFieldEmailAddress
-                               | ApplePayErrorContactFieldName
-                               | ApplePayErrorContactFieldPostalAddress
-                               | ApplePayErrorContactFieldAddressLines
-                               | ApplePayErrorContactFieldLocality
-                               | ApplePayErrorContactFieldPostalCode
-                               | ApplePayErrorContactFieldAdministrativeArea
-                               | ApplePayErrorContactFieldCountry
-                               deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal ApplePayErrorContactField where
-        toJSVal ApplePayErrorContactFieldPhoneNumber
-          = toJSVal js_ApplePayErrorContactFieldPhoneNumber
-        toJSVal ApplePayErrorContactFieldEmailAddress
-          = toJSVal js_ApplePayErrorContactFieldEmailAddress
-        toJSVal ApplePayErrorContactFieldName
-          = toJSVal js_ApplePayErrorContactFieldName
-        toJSVal ApplePayErrorContactFieldPostalAddress
-          = toJSVal js_ApplePayErrorContactFieldPostalAddress
-        toJSVal ApplePayErrorContactFieldAddressLines
-          = toJSVal js_ApplePayErrorContactFieldAddressLines
-        toJSVal ApplePayErrorContactFieldLocality
-          = toJSVal js_ApplePayErrorContactFieldLocality
-        toJSVal ApplePayErrorContactFieldPostalCode
-          = toJSVal js_ApplePayErrorContactFieldPostalCode
-        toJSVal ApplePayErrorContactFieldAdministrativeArea
-          = toJSVal js_ApplePayErrorContactFieldAdministrativeArea
-        toJSVal ApplePayErrorContactFieldCountry
-          = toJSVal js_ApplePayErrorContactFieldCountry
- 
-instance FromJSVal ApplePayErrorContactField where
-        fromJSVal x
-          = x `strictEqual` js_ApplePayErrorContactFieldPhoneNumber >>=
-              \ r ->
-                case r of
-                    True -> return (Just ApplePayErrorContactFieldPhoneNumber)
-                    False
-                      -> x `strictEqual` js_ApplePayErrorContactFieldEmailAddress >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just ApplePayErrorContactFieldEmailAddress)
-                                 False
-                                   -> x `strictEqual` js_ApplePayErrorContactFieldName >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just ApplePayErrorContactFieldName)
-                                              False
-                                                -> x `strictEqual`
-                                                     js_ApplePayErrorContactFieldPostalAddress
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     ApplePayErrorContactFieldPostalAddress)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_ApplePayErrorContactFieldAddressLines
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  ApplePayErrorContactFieldAddressLines)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_ApplePayErrorContactFieldLocality
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               ApplePayErrorContactFieldLocality)
-                                                                                     False
-                                                                                       -> x `strictEqual`
-                                                                                            js_ApplePayErrorContactFieldPostalCode
-                                                                                            >>=
-                                                                                            \ r ->
-                                                                                              case r
-                                                                                                of
-                                                                                                  True
-                                                                                                    -> return
-                                                                                                         (Just
-                                                                                                            ApplePayErrorContactFieldPostalCode)
-                                                                                                  False
-                                                                                                    -> x `strictEqual`
-                                                                                                         js_ApplePayErrorContactFieldAdministrativeArea
-                                                                                                         >>=
-                                                                                                         \ r
-                                                                                                           ->
-                                                                                                           case
-                                                                                                             r
-                                                                                                             of
-                                                                                                               True
-                                                                                                                 -> return
-                                                                                                                      (Just
-                                                                                                                         ApplePayErrorContactFieldAdministrativeArea)
-                                                                                                               False
-                                                                                                                 -> x `strictEqual`
-                                                                                                                      js_ApplePayErrorContactFieldCountry
-                                                                                                                      >>=
-                                                                                                                      \ r
-                                                                                                                        ->
-                                                                                                                        case
-                                                                                                                          r
-                                                                                                                          of
-                                                                                                                            True
-                                                                                                                              -> return
-                                                                                                                                   (Just
-                                                                                                                                      ApplePayErrorContactFieldCountry)
-                                                                                                                            False
-                                                                                                                              -> return
-                                                                                                                                   Nothing
-js_ApplePayErrorContactFieldPhoneNumber = "phoneNumber"
-js_ApplePayErrorContactFieldEmailAddress = "emailAddress"
-js_ApplePayErrorContactFieldName = "name"
-js_ApplePayErrorContactFieldPostalAddress = "postalAddress"
-js_ApplePayErrorContactFieldAddressLines = "addressLines"
-js_ApplePayErrorContactFieldLocality = "locality"
-js_ApplePayErrorContactFieldPostalCode = "postalCode"
-js_ApplePayErrorContactFieldAdministrativeArea
-  = "administrativeArea"
-js_ApplePayErrorContactFieldCountry = "country"
- 
-data ApplePayLineItemType = ApplePayLineItemTypePending
-                          | ApplePayLineItemTypeFinal
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal ApplePayLineItemType where
-        toJSVal ApplePayLineItemTypePending
-          = toJSVal js_ApplePayLineItemTypePending
-        toJSVal ApplePayLineItemTypeFinal
-          = toJSVal js_ApplePayLineItemTypeFinal
- 
-instance FromJSVal ApplePayLineItemType where
-        fromJSVal x
-          = x `strictEqual` js_ApplePayLineItemTypePending >>=
-              \ r ->
-                case r of
-                    True -> return (Just ApplePayLineItemTypePending)
-                    False
-                      -> x `strictEqual` js_ApplePayLineItemTypeFinal >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just ApplePayLineItemTypeFinal)
-                                 False -> return Nothing
-js_ApplePayLineItemTypePending = "pending"
-js_ApplePayLineItemTypeFinal = "final"
- 
-data ApplePayPaymentMethodType = ApplePayPaymentMethodTypeDebit
-                               | ApplePayPaymentMethodTypeCredit
-                               | ApplePayPaymentMethodTypePrepaid
-                               | ApplePayPaymentMethodTypeStore
-                               deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal ApplePayPaymentMethodType where
-        toJSVal ApplePayPaymentMethodTypeDebit
-          = toJSVal js_ApplePayPaymentMethodTypeDebit
-        toJSVal ApplePayPaymentMethodTypeCredit
-          = toJSVal js_ApplePayPaymentMethodTypeCredit
-        toJSVal ApplePayPaymentMethodTypePrepaid
-          = toJSVal js_ApplePayPaymentMethodTypePrepaid
-        toJSVal ApplePayPaymentMethodTypeStore
-          = toJSVal js_ApplePayPaymentMethodTypeStore
- 
-instance FromJSVal ApplePayPaymentMethodType where
-        fromJSVal x
-          = x `strictEqual` js_ApplePayPaymentMethodTypeDebit >>=
-              \ r ->
-                case r of
-                    True -> return (Just ApplePayPaymentMethodTypeDebit)
-                    False
-                      -> x `strictEqual` js_ApplePayPaymentMethodTypeCredit >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just ApplePayPaymentMethodTypeCredit)
-                                 False
-                                   -> x `strictEqual` js_ApplePayPaymentMethodTypePrepaid >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just ApplePayPaymentMethodTypePrepaid)
-                                              False
-                                                -> x `strictEqual` js_ApplePayPaymentMethodTypeStore
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     ApplePayPaymentMethodTypeStore)
-                                                           False -> return Nothing
-js_ApplePayPaymentMethodTypeDebit = "debit"
-js_ApplePayPaymentMethodTypeCredit = "credit"
-js_ApplePayPaymentMethodTypePrepaid = "prepaid"
-js_ApplePayPaymentMethodTypeStore = "store"
- 
-data ApplePayPaymentPassActivationState = ApplePayPaymentPassActivationStateActivated
-                                        | ApplePayPaymentPassActivationStateRequiresActivation
-                                        | ApplePayPaymentPassActivationStateActivating
-                                        | ApplePayPaymentPassActivationStateSuspended
-                                        | ApplePayPaymentPassActivationStateDeactivated
-                                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal ApplePayPaymentPassActivationState where
-        toJSVal ApplePayPaymentPassActivationStateActivated
-          = toJSVal js_ApplePayPaymentPassActivationStateActivated
-        toJSVal ApplePayPaymentPassActivationStateRequiresActivation
-          = toJSVal js_ApplePayPaymentPassActivationStateRequiresActivation
-        toJSVal ApplePayPaymentPassActivationStateActivating
-          = toJSVal js_ApplePayPaymentPassActivationStateActivating
-        toJSVal ApplePayPaymentPassActivationStateSuspended
-          = toJSVal js_ApplePayPaymentPassActivationStateSuspended
-        toJSVal ApplePayPaymentPassActivationStateDeactivated
-          = toJSVal js_ApplePayPaymentPassActivationStateDeactivated
- 
-instance FromJSVal ApplePayPaymentPassActivationState where
-        fromJSVal x
-          = x `strictEqual` js_ApplePayPaymentPassActivationStateActivated
-              >>=
-              \ r ->
-                case r of
-                    True -> return (Just ApplePayPaymentPassActivationStateActivated)
-                    False
-                      -> x `strictEqual`
-                           js_ApplePayPaymentPassActivationStateRequiresActivation
-                           >>=
-                           \ r ->
-                             case r of
-                                 True
-                                   -> return
-                                        (Just ApplePayPaymentPassActivationStateRequiresActivation)
-                                 False
-                                   -> x `strictEqual`
-                                        js_ApplePayPaymentPassActivationStateActivating
-                                        >>=
-                                        \ r ->
-                                          case r of
-                                              True
-                                                -> return
-                                                     (Just
-                                                        ApplePayPaymentPassActivationStateActivating)
-                                              False
-                                                -> x `strictEqual`
-                                                     js_ApplePayPaymentPassActivationStateSuspended
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     ApplePayPaymentPassActivationStateSuspended)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_ApplePayPaymentPassActivationStateDeactivated
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  ApplePayPaymentPassActivationStateDeactivated)
-                                                                        False -> return Nothing
-js_ApplePayPaymentPassActivationStateActivated = "activated"
-js_ApplePayPaymentPassActivationStateRequiresActivation
-  = "requiresActivation"
-js_ApplePayPaymentPassActivationStateActivating = "activating"
-js_ApplePayPaymentPassActivationStateSuspended = "suspended"
-js_ApplePayPaymentPassActivationStateDeactivated = "deactivated"
- 
-data ApplePayMerchantCapability = ApplePayMerchantCapabilitySupports3DS
-                                | ApplePayMerchantCapabilitySupportsEMV
-                                | ApplePayMerchantCapabilitySupportsCredit
-                                | ApplePayMerchantCapabilitySupportsDebit
-                                deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal ApplePayMerchantCapability where
-        toJSVal ApplePayMerchantCapabilitySupports3DS
-          = toJSVal js_ApplePayMerchantCapabilitySupports3DS
-        toJSVal ApplePayMerchantCapabilitySupportsEMV
-          = toJSVal js_ApplePayMerchantCapabilitySupportsEMV
-        toJSVal ApplePayMerchantCapabilitySupportsCredit
-          = toJSVal js_ApplePayMerchantCapabilitySupportsCredit
-        toJSVal ApplePayMerchantCapabilitySupportsDebit
-          = toJSVal js_ApplePayMerchantCapabilitySupportsDebit
- 
-instance FromJSVal ApplePayMerchantCapability where
-        fromJSVal x
-          = x `strictEqual` js_ApplePayMerchantCapabilitySupports3DS >>=
-              \ r ->
-                case r of
-                    True -> return (Just ApplePayMerchantCapabilitySupports3DS)
-                    False
-                      -> x `strictEqual` js_ApplePayMerchantCapabilitySupportsEMV >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just ApplePayMerchantCapabilitySupportsEMV)
-                                 False
-                                   -> x `strictEqual` js_ApplePayMerchantCapabilitySupportsCredit
-                                        >>=
-                                        \ r ->
-                                          case r of
-                                              True
-                                                -> return
-                                                     (Just ApplePayMerchantCapabilitySupportsCredit)
-                                              False
-                                                -> x `strictEqual`
-                                                     js_ApplePayMerchantCapabilitySupportsDebit
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     ApplePayMerchantCapabilitySupportsDebit)
-                                                           False -> return Nothing
-js_ApplePayMerchantCapabilitySupports3DS = "supports3DS"
-js_ApplePayMerchantCapabilitySupportsEMV = "supportsEMV"
-js_ApplePayMerchantCapabilitySupportsCredit = "supportsCredit"
-js_ApplePayMerchantCapabilitySupportsDebit = "supportsDebit"
- 
-data ApplePayContactField = ApplePayContactFieldEmail
-                          | ApplePayContactFieldName
-                          | ApplePayContactFieldPhone
-                          | ApplePayContactFieldPostalAddress
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal ApplePayContactField where
-        toJSVal ApplePayContactFieldEmail
-          = toJSVal js_ApplePayContactFieldEmail
-        toJSVal ApplePayContactFieldName
-          = toJSVal js_ApplePayContactFieldName
-        toJSVal ApplePayContactFieldPhone
-          = toJSVal js_ApplePayContactFieldPhone
-        toJSVal ApplePayContactFieldPostalAddress
-          = toJSVal js_ApplePayContactFieldPostalAddress
- 
-instance FromJSVal ApplePayContactField where
-        fromJSVal x
-          = x `strictEqual` js_ApplePayContactFieldEmail >>=
-              \ r ->
-                case r of
-                    True -> return (Just ApplePayContactFieldEmail)
-                    False
-                      -> x `strictEqual` js_ApplePayContactFieldName >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just ApplePayContactFieldName)
-                                 False
-                                   -> x `strictEqual` js_ApplePayContactFieldPhone >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just ApplePayContactFieldPhone)
-                                              False
-                                                -> x `strictEqual`
-                                                     js_ApplePayContactFieldPostalAddress
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     ApplePayContactFieldPostalAddress)
-                                                           False -> return Nothing
-js_ApplePayContactFieldEmail = "email"
-js_ApplePayContactFieldName = "name"
-js_ApplePayContactFieldPhone = "phone"
-js_ApplePayContactFieldPostalAddress = "postalAddress"
- 
-data ApplePayShippingType = ApplePayShippingTypeShipping
-                          | ApplePayShippingTypeDelivery
-                          | ApplePayShippingTypeStorePickup
-                          | ApplePayShippingTypeServicePickup
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal ApplePayShippingType where
-        toJSVal ApplePayShippingTypeShipping
-          = toJSVal js_ApplePayShippingTypeShipping
-        toJSVal ApplePayShippingTypeDelivery
-          = toJSVal js_ApplePayShippingTypeDelivery
-        toJSVal ApplePayShippingTypeStorePickup
-          = toJSVal js_ApplePayShippingTypeStorePickup
-        toJSVal ApplePayShippingTypeServicePickup
-          = toJSVal js_ApplePayShippingTypeServicePickup
- 
-instance FromJSVal ApplePayShippingType where
-        fromJSVal x
-          = x `strictEqual` js_ApplePayShippingTypeShipping >>=
-              \ r ->
-                case r of
-                    True -> return (Just ApplePayShippingTypeShipping)
-                    False
-                      -> x `strictEqual` js_ApplePayShippingTypeDelivery >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just ApplePayShippingTypeDelivery)
-                                 False
-                                   -> x `strictEqual` js_ApplePayShippingTypeStorePickup >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just ApplePayShippingTypeStorePickup)
-                                              False
-                                                -> x `strictEqual`
-                                                     js_ApplePayShippingTypeServicePickup
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     ApplePayShippingTypeServicePickup)
-                                                           False -> return Nothing
-js_ApplePayShippingTypeShipping = "shipping"
-js_ApplePayShippingTypeDelivery = "delivery"
-js_ApplePayShippingTypeStorePickup = "storePickup"
-js_ApplePayShippingTypeServicePickup = "servicePickup"
- 
-data MediaKeyMessageType = MediaKeyMessageTypeLicenseRequest
-                         | MediaKeyMessageTypeLicenseRenewal
-                         | MediaKeyMessageTypeLicenseRelease
-                         | MediaKeyMessageTypeIndividualizationRequest
-                         deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal MediaKeyMessageType where
-        toJSVal MediaKeyMessageTypeLicenseRequest
-          = toJSVal js_MediaKeyMessageTypeLicenseRequest
-        toJSVal MediaKeyMessageTypeLicenseRenewal
-          = toJSVal js_MediaKeyMessageTypeLicenseRenewal
-        toJSVal MediaKeyMessageTypeLicenseRelease
-          = toJSVal js_MediaKeyMessageTypeLicenseRelease
-        toJSVal MediaKeyMessageTypeIndividualizationRequest
-          = toJSVal js_MediaKeyMessageTypeIndividualizationRequest
- 
-instance FromJSVal MediaKeyMessageType where
-        fromJSVal x
-          = x `strictEqual` js_MediaKeyMessageTypeLicenseRequest >>=
-              \ r ->
-                case r of
-                    True -> return (Just MediaKeyMessageTypeLicenseRequest)
-                    False
-                      -> x `strictEqual` js_MediaKeyMessageTypeLicenseRenewal >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just MediaKeyMessageTypeLicenseRenewal)
-                                 False
-                                   -> x `strictEqual` js_MediaKeyMessageTypeLicenseRelease >>=
-                                        \ r ->
-                                          case r of
-                                              True
-                                                -> return (Just MediaKeyMessageTypeLicenseRelease)
-                                              False
-                                                -> x `strictEqual`
-                                                     js_MediaKeyMessageTypeIndividualizationRequest
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     MediaKeyMessageTypeIndividualizationRequest)
-                                                           False -> return Nothing
-js_MediaKeyMessageTypeLicenseRequest = "license-request"
-js_MediaKeyMessageTypeLicenseRenewal = "license-renewal"
-js_MediaKeyMessageTypeLicenseRelease = "license-release"
-js_MediaKeyMessageTypeIndividualizationRequest
-  = "individualization-request"
- 
-data MediaKeySessionType = MediaKeySessionTypeTemporary
-                         | MediaKeySessionTypePersistentUsageRecord
-                         | MediaKeySessionTypePersistentLicense
-                         deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal MediaKeySessionType where
-        toJSVal MediaKeySessionTypeTemporary
-          = toJSVal js_MediaKeySessionTypeTemporary
-        toJSVal MediaKeySessionTypePersistentUsageRecord
-          = toJSVal js_MediaKeySessionTypePersistentUsageRecord
-        toJSVal MediaKeySessionTypePersistentLicense
-          = toJSVal js_MediaKeySessionTypePersistentLicense
- 
-instance FromJSVal MediaKeySessionType where
-        fromJSVal x
-          = x `strictEqual` js_MediaKeySessionTypeTemporary >>=
-              \ r ->
-                case r of
-                    True -> return (Just MediaKeySessionTypeTemporary)
-                    False
-                      -> x `strictEqual` js_MediaKeySessionTypePersistentUsageRecord >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just MediaKeySessionTypePersistentUsageRecord)
-                                 False
-                                   -> x `strictEqual` js_MediaKeySessionTypePersistentLicense >>=
-                                        \ r ->
-                                          case r of
-                                              True
-                                                -> return
-                                                     (Just MediaKeySessionTypePersistentLicense)
-                                              False -> return Nothing
-js_MediaKeySessionTypeTemporary = "temporary"
-js_MediaKeySessionTypePersistentUsageRecord
-  = "persistent-usage-record"
-js_MediaKeySessionTypePersistentLicense = "persistent-license"
- 
-data MediaKeysRequirement = MediaKeysRequirementRequired
-                          | MediaKeysRequirementOptional
-                          | MediaKeysRequirementNotAllowed
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal MediaKeysRequirement where
-        toJSVal MediaKeysRequirementRequired
-          = toJSVal js_MediaKeysRequirementRequired
-        toJSVal MediaKeysRequirementOptional
-          = toJSVal js_MediaKeysRequirementOptional
-        toJSVal MediaKeysRequirementNotAllowed
-          = toJSVal js_MediaKeysRequirementNotAllowed
- 
-instance FromJSVal MediaKeysRequirement where
-        fromJSVal x
-          = x `strictEqual` js_MediaKeysRequirementRequired >>=
-              \ r ->
-                case r of
-                    True -> return (Just MediaKeysRequirementRequired)
-                    False
-                      -> x `strictEqual` js_MediaKeysRequirementOptional >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just MediaKeysRequirementOptional)
-                                 False
-                                   -> x `strictEqual` js_MediaKeysRequirementNotAllowed >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just MediaKeysRequirementNotAllowed)
-                                              False -> return Nothing
-js_MediaKeysRequirementRequired = "required"
-js_MediaKeysRequirementOptional = "optional"
-js_MediaKeysRequirementNotAllowed = "not-allowed"
- 
-data MediaKeyStatus = MediaKeyStatusUsable
-                    | MediaKeyStatusExpired
-                    | MediaKeyStatusReleased
-                    | MediaKeyStatusOutputRestricted
-                    | MediaKeyStatusOutputDownscaled
-                    | MediaKeyStatusStatusPending
-                    | MediaKeyStatusInternalError
-                    deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal MediaKeyStatus where
-        toJSVal MediaKeyStatusUsable = toJSVal js_MediaKeyStatusUsable
-        toJSVal MediaKeyStatusExpired = toJSVal js_MediaKeyStatusExpired
-        toJSVal MediaKeyStatusReleased = toJSVal js_MediaKeyStatusReleased
-        toJSVal MediaKeyStatusOutputRestricted
-          = toJSVal js_MediaKeyStatusOutputRestricted
-        toJSVal MediaKeyStatusOutputDownscaled
-          = toJSVal js_MediaKeyStatusOutputDownscaled
-        toJSVal MediaKeyStatusStatusPending
-          = toJSVal js_MediaKeyStatusStatusPending
-        toJSVal MediaKeyStatusInternalError
-          = toJSVal js_MediaKeyStatusInternalError
- 
-instance FromJSVal MediaKeyStatus where
-        fromJSVal x
-          = x `strictEqual` js_MediaKeyStatusUsable >>=
-              \ r ->
-                case r of
-                    True -> return (Just MediaKeyStatusUsable)
-                    False
-                      -> x `strictEqual` js_MediaKeyStatusExpired >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just MediaKeyStatusExpired)
-                                 False
-                                   -> x `strictEqual` js_MediaKeyStatusReleased >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just MediaKeyStatusReleased)
-                                              False
-                                                -> x `strictEqual` js_MediaKeyStatusOutputRestricted
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     MediaKeyStatusOutputRestricted)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_MediaKeyStatusOutputDownscaled
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  MediaKeyStatusOutputDownscaled)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_MediaKeyStatusStatusPending
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               MediaKeyStatusStatusPending)
-                                                                                     False
-                                                                                       -> x `strictEqual`
-                                                                                            js_MediaKeyStatusInternalError
-                                                                                            >>=
-                                                                                            \ r ->
-                                                                                              case r
-                                                                                                of
-                                                                                                  True
-                                                                                                    -> return
-                                                                                                         (Just
-                                                                                                            MediaKeyStatusInternalError)
-                                                                                                  False
-                                                                                                    -> return
-                                                                                                         Nothing
-js_MediaKeyStatusUsable = "usable"
-js_MediaKeyStatusExpired = "expired"
-js_MediaKeyStatusReleased = "released"
-js_MediaKeyStatusOutputRestricted = "output-restricted"
-js_MediaKeyStatusOutputDownscaled = "output-downscaled"
-js_MediaKeyStatusStatusPending = "status-pending"
-js_MediaKeyStatusInternalError = "internal-error"
- 
-data RequestType = RequestType
-                 | RequestTypeAudio
-                 | RequestTypeFont
-                 | RequestTypeImage
-                 | RequestTypeScript
-                 | RequestTypeStyle
-                 | RequestTypeTrack
-                 | RequestTypeVideo
-                 deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RequestType where
-        toJSVal RequestType = toJSVal js_RequestType
-        toJSVal RequestTypeAudio = toJSVal js_RequestTypeAudio
-        toJSVal RequestTypeFont = toJSVal js_RequestTypeFont
-        toJSVal RequestTypeImage = toJSVal js_RequestTypeImage
-        toJSVal RequestTypeScript = toJSVal js_RequestTypeScript
-        toJSVal RequestTypeStyle = toJSVal js_RequestTypeStyle
-        toJSVal RequestTypeTrack = toJSVal js_RequestTypeTrack
-        toJSVal RequestTypeVideo = toJSVal js_RequestTypeVideo
- 
-instance FromJSVal RequestType where
-        fromJSVal x
-          = x `strictEqual` js_RequestType >>=
-              \ r ->
-                case r of
-                    True -> return (Just RequestType)
-                    False
-                      -> x `strictEqual` js_RequestTypeAudio >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RequestTypeAudio)
-                                 False
-                                   -> x `strictEqual` js_RequestTypeFont >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just RequestTypeFont)
-                                              False
-                                                -> x `strictEqual` js_RequestTypeImage >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True -> return (Just RequestTypeImage)
-                                                           False
-                                                             -> x `strictEqual` js_RequestTypeScript
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  RequestTypeScript)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_RequestTypeStyle
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               RequestTypeStyle)
-                                                                                     False
-                                                                                       -> x `strictEqual`
-                                                                                            js_RequestTypeTrack
-                                                                                            >>=
-                                                                                            \ r ->
-                                                                                              case r
-                                                                                                of
-                                                                                                  True
-                                                                                                    -> return
-                                                                                                         (Just
-                                                                                                            RequestTypeTrack)
-                                                                                                  False
-                                                                                                    -> x `strictEqual`
-                                                                                                         js_RequestTypeVideo
-                                                                                                         >>=
-                                                                                                         \ r
-                                                                                                           ->
-                                                                                                           case
-                                                                                                             r
-                                                                                                             of
-                                                                                                               True
-                                                                                                                 -> return
-                                                                                                                      (Just
-                                                                                                                         RequestTypeVideo)
-                                                                                                               False
-                                                                                                                 -> return
-                                                                                                                      Nothing
-js_RequestType = ""
-js_RequestTypeAudio = "audio"
-js_RequestTypeFont = "font"
-js_RequestTypeImage = "image"
-js_RequestTypeScript = "script"
-js_RequestTypeStyle = "style"
-js_RequestTypeTrack = "track"
-js_RequestTypeVideo = "video"
- 
-data RequestDestination = RequestDestination
-                        | RequestDestinationDocument
-                        | RequestDestinationSharedworker
-                        | RequestDestinationSubresource
-                        | RequestDestinationUnknown
-                        | RequestDestinationWorker
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RequestDestination where
-        toJSVal RequestDestination = toJSVal js_RequestDestination
-        toJSVal RequestDestinationDocument
-          = toJSVal js_RequestDestinationDocument
-        toJSVal RequestDestinationSharedworker
-          = toJSVal js_RequestDestinationSharedworker
-        toJSVal RequestDestinationSubresource
-          = toJSVal js_RequestDestinationSubresource
-        toJSVal RequestDestinationUnknown
-          = toJSVal js_RequestDestinationUnknown
-        toJSVal RequestDestinationWorker
-          = toJSVal js_RequestDestinationWorker
- 
-instance FromJSVal RequestDestination where
-        fromJSVal x
-          = x `strictEqual` js_RequestDestination >>=
-              \ r ->
-                case r of
-                    True -> return (Just RequestDestination)
-                    False
-                      -> x `strictEqual` js_RequestDestinationDocument >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RequestDestinationDocument)
-                                 False
-                                   -> x `strictEqual` js_RequestDestinationSharedworker >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just RequestDestinationSharedworker)
-                                              False
-                                                -> x `strictEqual` js_RequestDestinationSubresource
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     RequestDestinationSubresource)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_RequestDestinationUnknown
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  RequestDestinationUnknown)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_RequestDestinationWorker
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               RequestDestinationWorker)
-                                                                                     False
-                                                                                       -> return
-                                                                                            Nothing
-js_RequestDestination = ""
-js_RequestDestinationDocument = "document"
-js_RequestDestinationSharedworker = "sharedworker"
-js_RequestDestinationSubresource = "subresource"
-js_RequestDestinationUnknown = "unknown"
-js_RequestDestinationWorker = "worker"
- 
-data RequestMode = RequestModeNavigate
-                 | RequestModeSameOrigin
-                 | RequestModeNoCors
-                 | RequestModeCors
-                 deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RequestMode where
-        toJSVal RequestModeNavigate = toJSVal js_RequestModeNavigate
-        toJSVal RequestModeSameOrigin = toJSVal js_RequestModeSameOrigin
-        toJSVal RequestModeNoCors = toJSVal js_RequestModeNoCors
-        toJSVal RequestModeCors = toJSVal js_RequestModeCors
- 
-instance FromJSVal RequestMode where
-        fromJSVal x
-          = x `strictEqual` js_RequestModeNavigate >>=
-              \ r ->
-                case r of
-                    True -> return (Just RequestModeNavigate)
-                    False
-                      -> x `strictEqual` js_RequestModeSameOrigin >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RequestModeSameOrigin)
-                                 False
-                                   -> x `strictEqual` js_RequestModeNoCors >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just RequestModeNoCors)
-                                              False
-                                                -> x `strictEqual` js_RequestModeCors >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True -> return (Just RequestModeCors)
-                                                           False -> return Nothing
-js_RequestModeNavigate = "navigate"
-js_RequestModeSameOrigin = "same-origin"
-js_RequestModeNoCors = "no-cors"
-js_RequestModeCors = "cors"
- 
-data RequestCredentials = RequestCredentialsOmit
-                        | RequestCredentialsSameOrigin
-                        | RequestCredentialsInclude
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RequestCredentials where
-        toJSVal RequestCredentialsOmit = toJSVal js_RequestCredentialsOmit
-        toJSVal RequestCredentialsSameOrigin
-          = toJSVal js_RequestCredentialsSameOrigin
-        toJSVal RequestCredentialsInclude
-          = toJSVal js_RequestCredentialsInclude
- 
-instance FromJSVal RequestCredentials where
-        fromJSVal x
-          = x `strictEqual` js_RequestCredentialsOmit >>=
-              \ r ->
-                case r of
-                    True -> return (Just RequestCredentialsOmit)
-                    False
-                      -> x `strictEqual` js_RequestCredentialsSameOrigin >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RequestCredentialsSameOrigin)
-                                 False
-                                   -> x `strictEqual` js_RequestCredentialsInclude >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just RequestCredentialsInclude)
-                                              False -> return Nothing
-js_RequestCredentialsOmit = "omit"
-js_RequestCredentialsSameOrigin = "same-origin"
-js_RequestCredentialsInclude = "include"
- 
-data RequestCache = RequestCacheDefault
-                  | RequestCacheNoStore
-                  | RequestCacheReload
-                  | RequestCacheNoCache
-                  | RequestCacheForceCache
-                  | RequestCacheOnlyIfCached
-                  deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RequestCache where
-        toJSVal RequestCacheDefault = toJSVal js_RequestCacheDefault
-        toJSVal RequestCacheNoStore = toJSVal js_RequestCacheNoStore
-        toJSVal RequestCacheReload = toJSVal js_RequestCacheReload
-        toJSVal RequestCacheNoCache = toJSVal js_RequestCacheNoCache
-        toJSVal RequestCacheForceCache = toJSVal js_RequestCacheForceCache
-        toJSVal RequestCacheOnlyIfCached
-          = toJSVal js_RequestCacheOnlyIfCached
- 
-instance FromJSVal RequestCache where
-        fromJSVal x
-          = x `strictEqual` js_RequestCacheDefault >>=
-              \ r ->
-                case r of
-                    True -> return (Just RequestCacheDefault)
-                    False
-                      -> x `strictEqual` js_RequestCacheNoStore >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RequestCacheNoStore)
-                                 False
-                                   -> x `strictEqual` js_RequestCacheReload >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just RequestCacheReload)
-                                              False
-                                                -> x `strictEqual` js_RequestCacheNoCache >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True -> return (Just RequestCacheNoCache)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_RequestCacheForceCache
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  RequestCacheForceCache)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_RequestCacheOnlyIfCached
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               RequestCacheOnlyIfCached)
-                                                                                     False
-                                                                                       -> return
-                                                                                            Nothing
-js_RequestCacheDefault = "default"
-js_RequestCacheNoStore = "no-store"
-js_RequestCacheReload = "reload"
-js_RequestCacheNoCache = "no-cache"
-js_RequestCacheForceCache = "force-cache"
-js_RequestCacheOnlyIfCached = "only-if-cached"
- 
-data RequestRedirect = RequestRedirectFollow
-                     | RequestRedirectError
-                     | RequestRedirectManual
-                     deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RequestRedirect where
-        toJSVal RequestRedirectFollow = toJSVal js_RequestRedirectFollow
-        toJSVal RequestRedirectError = toJSVal js_RequestRedirectError
-        toJSVal RequestRedirectManual = toJSVal js_RequestRedirectManual
- 
-instance FromJSVal RequestRedirect where
-        fromJSVal x
-          = x `strictEqual` js_RequestRedirectFollow >>=
-              \ r ->
-                case r of
-                    True -> return (Just RequestRedirectFollow)
-                    False
-                      -> x `strictEqual` js_RequestRedirectError >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RequestRedirectError)
-                                 False
-                                   -> x `strictEqual` js_RequestRedirectManual >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just RequestRedirectManual)
-                                              False -> return Nothing
-js_RequestRedirectFollow = "follow"
-js_RequestRedirectError = "error"
-js_RequestRedirectManual = "manual"
- 
-data ReferrerPolicy = ReferrerPolicy
-                    | ReferrerPolicyNoReferrer
-                    | ReferrerPolicyNoReferrerWhenDowngrade
-                    | ReferrerPolicyOrigin
-                    | ReferrerPolicyOriginWhenCrossOrigin
-                    | ReferrerPolicyUnsafeUrl
-                    deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal ReferrerPolicy where
-        toJSVal ReferrerPolicy = toJSVal js_ReferrerPolicy
-        toJSVal ReferrerPolicyNoReferrer
-          = toJSVal js_ReferrerPolicyNoReferrer
-        toJSVal ReferrerPolicyNoReferrerWhenDowngrade
-          = toJSVal js_ReferrerPolicyNoReferrerWhenDowngrade
-        toJSVal ReferrerPolicyOrigin = toJSVal js_ReferrerPolicyOrigin
-        toJSVal ReferrerPolicyOriginWhenCrossOrigin
-          = toJSVal js_ReferrerPolicyOriginWhenCrossOrigin
-        toJSVal ReferrerPolicyUnsafeUrl
-          = toJSVal js_ReferrerPolicyUnsafeUrl
- 
-instance FromJSVal ReferrerPolicy where
-        fromJSVal x
-          = x `strictEqual` js_ReferrerPolicy >>=
-              \ r ->
-                case r of
-                    True -> return (Just ReferrerPolicy)
-                    False
-                      -> x `strictEqual` js_ReferrerPolicyNoReferrer >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just ReferrerPolicyNoReferrer)
-                                 False
-                                   -> x `strictEqual` js_ReferrerPolicyNoReferrerWhenDowngrade >>=
-                                        \ r ->
-                                          case r of
-                                              True
-                                                -> return
-                                                     (Just ReferrerPolicyNoReferrerWhenDowngrade)
-                                              False
-                                                -> x `strictEqual` js_ReferrerPolicyOrigin >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return (Just ReferrerPolicyOrigin)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_ReferrerPolicyOriginWhenCrossOrigin
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  ReferrerPolicyOriginWhenCrossOrigin)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_ReferrerPolicyUnsafeUrl
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               ReferrerPolicyUnsafeUrl)
-                                                                                     False
-                                                                                       -> return
-                                                                                            Nothing
-js_ReferrerPolicy = ""
-js_ReferrerPolicyNoReferrer = "no-referrer"
-js_ReferrerPolicyNoReferrerWhenDowngrade
-  = "no-referrer-when-downgrade"
-js_ReferrerPolicyOrigin = "origin"
-js_ReferrerPolicyOriginWhenCrossOrigin = "origin-when-cross-origin"
-js_ReferrerPolicyUnsafeUrl = "unsafe-url"
- 
-data ResponseType = ResponseTypeBasic
-                  | ResponseTypeCors
-                  | ResponseTypeDefault
-                  | ResponseTypeError
-                  | ResponseTypeOpaque
-                  | ResponseTypeOpaqueredirect
-                  deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal ResponseType where
-        toJSVal ResponseTypeBasic = toJSVal js_ResponseTypeBasic
-        toJSVal ResponseTypeCors = toJSVal js_ResponseTypeCors
-        toJSVal ResponseTypeDefault = toJSVal js_ResponseTypeDefault
-        toJSVal ResponseTypeError = toJSVal js_ResponseTypeError
-        toJSVal ResponseTypeOpaque = toJSVal js_ResponseTypeOpaque
-        toJSVal ResponseTypeOpaqueredirect
-          = toJSVal js_ResponseTypeOpaqueredirect
- 
-instance FromJSVal ResponseType where
-        fromJSVal x
-          = x `strictEqual` js_ResponseTypeBasic >>=
-              \ r ->
-                case r of
-                    True -> return (Just ResponseTypeBasic)
-                    False
-                      -> x `strictEqual` js_ResponseTypeCors >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just ResponseTypeCors)
-                                 False
-                                   -> x `strictEqual` js_ResponseTypeDefault >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just ResponseTypeDefault)
-                                              False
-                                                -> x `strictEqual` js_ResponseTypeError >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True -> return (Just ResponseTypeError)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_ResponseTypeOpaque
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  ResponseTypeOpaque)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_ResponseTypeOpaqueredirect
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               ResponseTypeOpaqueredirect)
-                                                                                     False
-                                                                                       -> return
-                                                                                            Nothing
-js_ResponseTypeBasic = "basic"
-js_ResponseTypeCors = "cors"
-js_ResponseTypeDefault = "default"
-js_ResponseTypeError = "error"
-js_ResponseTypeOpaque = "opaque"
-js_ResponseTypeOpaqueredirect = "opaqueredirect"
- 
-data IDBCursorDirection = IDBCursorDirectionNext
-                        | IDBCursorDirectionNextunique
-                        | IDBCursorDirectionPrev
-                        | IDBCursorDirectionPrevunique
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal IDBCursorDirection where
-        toJSVal IDBCursorDirectionNext = toJSVal js_IDBCursorDirectionNext
-        toJSVal IDBCursorDirectionNextunique
-          = toJSVal js_IDBCursorDirectionNextunique
-        toJSVal IDBCursorDirectionPrev = toJSVal js_IDBCursorDirectionPrev
-        toJSVal IDBCursorDirectionPrevunique
-          = toJSVal js_IDBCursorDirectionPrevunique
- 
-instance FromJSVal IDBCursorDirection where
-        fromJSVal x
-          = x `strictEqual` js_IDBCursorDirectionNext >>=
-              \ r ->
-                case r of
-                    True -> return (Just IDBCursorDirectionNext)
-                    False
-                      -> x `strictEqual` js_IDBCursorDirectionNextunique >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just IDBCursorDirectionNextunique)
-                                 False
-                                   -> x `strictEqual` js_IDBCursorDirectionPrev >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just IDBCursorDirectionPrev)
-                                              False
-                                                -> x `strictEqual` js_IDBCursorDirectionPrevunique
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     IDBCursorDirectionPrevunique)
-                                                           False -> return Nothing
-js_IDBCursorDirectionNext = "next"
-js_IDBCursorDirectionNextunique = "nextunique"
-js_IDBCursorDirectionPrev = "prev"
-js_IDBCursorDirectionPrevunique = "prevunique"
- 
-data IDBRequestReadyState = IDBRequestReadyStatePending
-                          | IDBRequestReadyStateDone
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal IDBRequestReadyState where
-        toJSVal IDBRequestReadyStatePending
-          = toJSVal js_IDBRequestReadyStatePending
-        toJSVal IDBRequestReadyStateDone
-          = toJSVal js_IDBRequestReadyStateDone
- 
-instance FromJSVal IDBRequestReadyState where
-        fromJSVal x
-          = x `strictEqual` js_IDBRequestReadyStatePending >>=
-              \ r ->
-                case r of
-                    True -> return (Just IDBRequestReadyStatePending)
-                    False
-                      -> x `strictEqual` js_IDBRequestReadyStateDone >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just IDBRequestReadyStateDone)
-                                 False -> return Nothing
-js_IDBRequestReadyStatePending = "pending"
-js_IDBRequestReadyStateDone = "done"
- 
-data IDBTransactionMode = IDBTransactionModeReadonly
-                        | IDBTransactionModeReadwrite
-                        | IDBTransactionModeVersionchange
-                        deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal IDBTransactionMode where
-        toJSVal IDBTransactionModeReadonly
-          = toJSVal js_IDBTransactionModeReadonly
-        toJSVal IDBTransactionModeReadwrite
-          = toJSVal js_IDBTransactionModeReadwrite
-        toJSVal IDBTransactionModeVersionchange
-          = toJSVal js_IDBTransactionModeVersionchange
- 
-instance FromJSVal IDBTransactionMode where
-        fromJSVal x
-          = x `strictEqual` js_IDBTransactionModeReadonly >>=
-              \ r ->
-                case r of
-                    True -> return (Just IDBTransactionModeReadonly)
-                    False
-                      -> x `strictEqual` js_IDBTransactionModeReadwrite >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just IDBTransactionModeReadwrite)
-                                 False
-                                   -> x `strictEqual` js_IDBTransactionModeVersionchange >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just IDBTransactionModeVersionchange)
-                                              False -> return Nothing
-js_IDBTransactionModeReadonly = "readonly"
-js_IDBTransactionModeReadwrite = "readwrite"
-js_IDBTransactionModeVersionchange = "versionchange"
- 
-data DeviceType = DeviceTypeNone
-                | DeviceTypeAirplay
-                | DeviceTypeTvout
-                deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal DeviceType where
-        toJSVal DeviceTypeNone = toJSVal js_DeviceTypeNone
-        toJSVal DeviceTypeAirplay = toJSVal js_DeviceTypeAirplay
-        toJSVal DeviceTypeTvout = toJSVal js_DeviceTypeTvout
- 
-instance FromJSVal DeviceType where
-        fromJSVal x
-          = x `strictEqual` js_DeviceTypeNone >>=
-              \ r ->
-                case r of
-                    True -> return (Just DeviceTypeNone)
-                    False
-                      -> x `strictEqual` js_DeviceTypeAirplay >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just DeviceTypeAirplay)
-                                 False
-                                   -> x `strictEqual` js_DeviceTypeTvout >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just DeviceTypeTvout)
-                                              False -> return Nothing
-js_DeviceTypeNone = "none"
-js_DeviceTypeAirplay = "airplay"
-js_DeviceTypeTvout = "tvout"
- 
-data MediaSessionKind = MediaSessionKindContent
-                      | MediaSessionKindTransient
-                      | MediaSessionKindTransientSolo
-                      | MediaSessionKindAmbient
-                      deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal MediaSessionKind where
-        toJSVal MediaSessionKindContent
-          = toJSVal js_MediaSessionKindContent
-        toJSVal MediaSessionKindTransient
-          = toJSVal js_MediaSessionKindTransient
-        toJSVal MediaSessionKindTransientSolo
-          = toJSVal js_MediaSessionKindTransientSolo
-        toJSVal MediaSessionKindAmbient
-          = toJSVal js_MediaSessionKindAmbient
- 
-instance FromJSVal MediaSessionKind where
-        fromJSVal x
-          = x `strictEqual` js_MediaSessionKindContent >>=
-              \ r ->
-                case r of
-                    True -> return (Just MediaSessionKindContent)
-                    False
-                      -> x `strictEqual` js_MediaSessionKindTransient >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just MediaSessionKindTransient)
-                                 False
-                                   -> x `strictEqual` js_MediaSessionKindTransientSolo >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just MediaSessionKindTransientSolo)
-                                              False
-                                                -> x `strictEqual` js_MediaSessionKindAmbient >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just MediaSessionKindAmbient)
-                                                           False -> return Nothing
-js_MediaSessionKindContent = "content"
-js_MediaSessionKindTransient = "transient"
-js_MediaSessionKindTransientSolo = "transient-solo"
-js_MediaSessionKindAmbient = "ambient"
- 
-data EndOfStreamError = EndOfStreamErrorNetwork
-                      | EndOfStreamErrorDecode
-                      deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal EndOfStreamError where
-        toJSVal EndOfStreamErrorNetwork
-          = toJSVal js_EndOfStreamErrorNetwork
-        toJSVal EndOfStreamErrorDecode = toJSVal js_EndOfStreamErrorDecode
- 
-instance FromJSVal EndOfStreamError where
-        fromJSVal x
-          = x `strictEqual` js_EndOfStreamErrorNetwork >>=
-              \ r ->
-                case r of
-                    True -> return (Just EndOfStreamErrorNetwork)
-                    False
-                      -> x `strictEqual` js_EndOfStreamErrorDecode >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just EndOfStreamErrorDecode)
-                                 False -> return Nothing
-js_EndOfStreamErrorNetwork = "network"
-js_EndOfStreamErrorDecode = "decode"
- 
-data ReadyState = ReadyStateClosed
-                | ReadyStateOpen
-                | ReadyStateEnded
-                deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal ReadyState where
-        toJSVal ReadyStateClosed = toJSVal js_ReadyStateClosed
-        toJSVal ReadyStateOpen = toJSVal js_ReadyStateOpen
-        toJSVal ReadyStateEnded = toJSVal js_ReadyStateEnded
- 
-instance FromJSVal ReadyState where
-        fromJSVal x
-          = x `strictEqual` js_ReadyStateClosed >>=
-              \ r ->
-                case r of
-                    True -> return (Just ReadyStateClosed)
-                    False
-                      -> x `strictEqual` js_ReadyStateOpen >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just ReadyStateOpen)
-                                 False
-                                   -> x `strictEqual` js_ReadyStateEnded >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just ReadyStateEnded)
-                                              False -> return Nothing
-js_ReadyStateClosed = "closed"
-js_ReadyStateOpen = "open"
-js_ReadyStateEnded = "ended"
- 
-data AppendMode = AppendModeSegments
-                | AppendModeSequence
-                deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal AppendMode where
-        toJSVal AppendModeSegments = toJSVal js_AppendModeSegments
-        toJSVal AppendModeSequence = toJSVal js_AppendModeSequence
- 
-instance FromJSVal AppendMode where
-        fromJSVal x
-          = x `strictEqual` js_AppendModeSegments >>=
-              \ r ->
-                case r of
-                    True -> return (Just AppendModeSegments)
-                    False
-                      -> x `strictEqual` js_AppendModeSequence >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just AppendModeSequence)
-                                 False -> return Nothing
-js_AppendModeSegments = "segments"
-js_AppendModeSequence = "sequence"
- 
-data MediaDeviceKind = MediaDeviceKindAudioinput
-                     | MediaDeviceKindAudiooutput
-                     | MediaDeviceKindVideoinput
-                     deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal MediaDeviceKind where
-        toJSVal MediaDeviceKindAudioinput
-          = toJSVal js_MediaDeviceKindAudioinput
-        toJSVal MediaDeviceKindAudiooutput
-          = toJSVal js_MediaDeviceKindAudiooutput
-        toJSVal MediaDeviceKindVideoinput
-          = toJSVal js_MediaDeviceKindVideoinput
- 
-instance FromJSVal MediaDeviceKind where
-        fromJSVal x
-          = x `strictEqual` js_MediaDeviceKindAudioinput >>=
-              \ r ->
-                case r of
-                    True -> return (Just MediaDeviceKindAudioinput)
-                    False
-                      -> x `strictEqual` js_MediaDeviceKindAudiooutput >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just MediaDeviceKindAudiooutput)
-                                 False
-                                   -> x `strictEqual` js_MediaDeviceKindVideoinput >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just MediaDeviceKindVideoinput)
-                                              False -> return Nothing
-js_MediaDeviceKindAudioinput = "audioinput"
-js_MediaDeviceKindAudiooutput = "audiooutput"
-js_MediaDeviceKindVideoinput = "videoinput"
- 
-data MediaStreamTrackState = MediaStreamTrackStateLive
-                           | MediaStreamTrackStateEnded
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal MediaStreamTrackState where
-        toJSVal MediaStreamTrackStateLive
-          = toJSVal js_MediaStreamTrackStateLive
-        toJSVal MediaStreamTrackStateEnded
-          = toJSVal js_MediaStreamTrackStateEnded
- 
-instance FromJSVal MediaStreamTrackState where
-        fromJSVal x
-          = x `strictEqual` js_MediaStreamTrackStateLive >>=
-              \ r ->
-                case r of
-                    True -> return (Just MediaStreamTrackStateLive)
-                    False
-                      -> x `strictEqual` js_MediaStreamTrackStateEnded >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just MediaStreamTrackStateEnded)
-                                 False -> return Nothing
-js_MediaStreamTrackStateLive = "live"
-js_MediaStreamTrackStateEnded = "ended"
- 
-data RTCIceTransportPolicy = RTCIceTransportPolicyRelay
-                           | RTCIceTransportPolicyAll
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RTCIceTransportPolicy where
-        toJSVal RTCIceTransportPolicyRelay
-          = toJSVal js_RTCIceTransportPolicyRelay
-        toJSVal RTCIceTransportPolicyAll
-          = toJSVal js_RTCIceTransportPolicyAll
- 
-instance FromJSVal RTCIceTransportPolicy where
-        fromJSVal x
-          = x `strictEqual` js_RTCIceTransportPolicyRelay >>=
-              \ r ->
-                case r of
-                    True -> return (Just RTCIceTransportPolicyRelay)
-                    False
-                      -> x `strictEqual` js_RTCIceTransportPolicyAll >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RTCIceTransportPolicyAll)
-                                 False -> return Nothing
-js_RTCIceTransportPolicyRelay = "relay"
-js_RTCIceTransportPolicyAll = "all"
- 
-data RTCBundlePolicy = RTCBundlePolicyBalanced
-                     | RTCBundlePolicyMaxCompat
-                     | RTCBundlePolicyMaxBundle
-                     deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RTCBundlePolicy where
-        toJSVal RTCBundlePolicyBalanced
-          = toJSVal js_RTCBundlePolicyBalanced
-        toJSVal RTCBundlePolicyMaxCompat
-          = toJSVal js_RTCBundlePolicyMaxCompat
-        toJSVal RTCBundlePolicyMaxBundle
-          = toJSVal js_RTCBundlePolicyMaxBundle
- 
-instance FromJSVal RTCBundlePolicy where
-        fromJSVal x
-          = x `strictEqual` js_RTCBundlePolicyBalanced >>=
-              \ r ->
-                case r of
-                    True -> return (Just RTCBundlePolicyBalanced)
-                    False
-                      -> x `strictEqual` js_RTCBundlePolicyMaxCompat >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RTCBundlePolicyMaxCompat)
-                                 False
-                                   -> x `strictEqual` js_RTCBundlePolicyMaxBundle >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just RTCBundlePolicyMaxBundle)
-                                              False -> return Nothing
-js_RTCBundlePolicyBalanced = "balanced"
-js_RTCBundlePolicyMaxCompat = "max-compat"
-js_RTCBundlePolicyMaxBundle = "max-bundle"
- 
-data RTCDataChannelState = RTCDataChannelStateConnecting
-                         | RTCDataChannelStateOpen
-                         | RTCDataChannelStateClosing
-                         | RTCDataChannelStateClosed
-                         deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RTCDataChannelState where
-        toJSVal RTCDataChannelStateConnecting
-          = toJSVal js_RTCDataChannelStateConnecting
-        toJSVal RTCDataChannelStateOpen
-          = toJSVal js_RTCDataChannelStateOpen
-        toJSVal RTCDataChannelStateClosing
-          = toJSVal js_RTCDataChannelStateClosing
-        toJSVal RTCDataChannelStateClosed
-          = toJSVal js_RTCDataChannelStateClosed
- 
-instance FromJSVal RTCDataChannelState where
-        fromJSVal x
-          = x `strictEqual` js_RTCDataChannelStateConnecting >>=
-              \ r ->
-                case r of
-                    True -> return (Just RTCDataChannelStateConnecting)
-                    False
-                      -> x `strictEqual` js_RTCDataChannelStateOpen >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RTCDataChannelStateOpen)
-                                 False
-                                   -> x `strictEqual` js_RTCDataChannelStateClosing >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just RTCDataChannelStateClosing)
-                                              False
-                                                -> x `strictEqual` js_RTCDataChannelStateClosed >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just RTCDataChannelStateClosed)
-                                                           False -> return Nothing
-js_RTCDataChannelStateConnecting = "connecting"
-js_RTCDataChannelStateOpen = "open"
-js_RTCDataChannelStateClosing = "closing"
-js_RTCDataChannelStateClosed = "closed"
- 
-data RTCIceConnectionState = RTCIceConnectionStateNew
-                           | RTCIceConnectionStateChecking
-                           | RTCIceConnectionStateConnected
-                           | RTCIceConnectionStateCompleted
-                           | RTCIceConnectionStateFailed
-                           | RTCIceConnectionStateDisconnected
-                           | RTCIceConnectionStateClosed
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RTCIceConnectionState where
-        toJSVal RTCIceConnectionStateNew
-          = toJSVal js_RTCIceConnectionStateNew
-        toJSVal RTCIceConnectionStateChecking
-          = toJSVal js_RTCIceConnectionStateChecking
-        toJSVal RTCIceConnectionStateConnected
-          = toJSVal js_RTCIceConnectionStateConnected
-        toJSVal RTCIceConnectionStateCompleted
-          = toJSVal js_RTCIceConnectionStateCompleted
-        toJSVal RTCIceConnectionStateFailed
-          = toJSVal js_RTCIceConnectionStateFailed
-        toJSVal RTCIceConnectionStateDisconnected
-          = toJSVal js_RTCIceConnectionStateDisconnected
-        toJSVal RTCIceConnectionStateClosed
-          = toJSVal js_RTCIceConnectionStateClosed
- 
-instance FromJSVal RTCIceConnectionState where
-        fromJSVal x
-          = x `strictEqual` js_RTCIceConnectionStateNew >>=
-              \ r ->
-                case r of
-                    True -> return (Just RTCIceConnectionStateNew)
-                    False
-                      -> x `strictEqual` js_RTCIceConnectionStateChecking >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RTCIceConnectionStateChecking)
-                                 False
-                                   -> x `strictEqual` js_RTCIceConnectionStateConnected >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just RTCIceConnectionStateConnected)
-                                              False
-                                                -> x `strictEqual` js_RTCIceConnectionStateCompleted
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     RTCIceConnectionStateCompleted)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_RTCIceConnectionStateFailed
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  RTCIceConnectionStateFailed)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_RTCIceConnectionStateDisconnected
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               RTCIceConnectionStateDisconnected)
-                                                                                     False
-                                                                                       -> x `strictEqual`
-                                                                                            js_RTCIceConnectionStateClosed
-                                                                                            >>=
-                                                                                            \ r ->
-                                                                                              case r
-                                                                                                of
-                                                                                                  True
-                                                                                                    -> return
-                                                                                                         (Just
-                                                                                                            RTCIceConnectionStateClosed)
-                                                                                                  False
-                                                                                                    -> return
-                                                                                                         Nothing
-js_RTCIceConnectionStateNew = "new"
-js_RTCIceConnectionStateChecking = "checking"
-js_RTCIceConnectionStateConnected = "connected"
-js_RTCIceConnectionStateCompleted = "completed"
-js_RTCIceConnectionStateFailed = "failed"
-js_RTCIceConnectionStateDisconnected = "disconnected"
-js_RTCIceConnectionStateClosed = "closed"
- 
-data RTCIceGatheringState = RTCIceGatheringStateNew
-                          | RTCIceGatheringStateGathering
-                          | RTCIceGatheringStateComplete
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RTCIceGatheringState where
-        toJSVal RTCIceGatheringStateNew
-          = toJSVal js_RTCIceGatheringStateNew
-        toJSVal RTCIceGatheringStateGathering
-          = toJSVal js_RTCIceGatheringStateGathering
-        toJSVal RTCIceGatheringStateComplete
-          = toJSVal js_RTCIceGatheringStateComplete
- 
-instance FromJSVal RTCIceGatheringState where
-        fromJSVal x
-          = x `strictEqual` js_RTCIceGatheringStateNew >>=
-              \ r ->
-                case r of
-                    True -> return (Just RTCIceGatheringStateNew)
-                    False
-                      -> x `strictEqual` js_RTCIceGatheringStateGathering >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RTCIceGatheringStateGathering)
-                                 False
-                                   -> x `strictEqual` js_RTCIceGatheringStateComplete >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just RTCIceGatheringStateComplete)
-                                              False -> return Nothing
-js_RTCIceGatheringStateNew = "new"
-js_RTCIceGatheringStateGathering = "gathering"
-js_RTCIceGatheringStateComplete = "complete"
- 
-data RTCIceTransportState = RTCIceTransportStateNew
-                          | RTCIceTransportStateChecking
-                          | RTCIceTransportStateConnected
-                          | RTCIceTransportStateCompleted
-                          | RTCIceTransportStateFailed
-                          | RTCIceTransportStateDisconnected
-                          | RTCIceTransportStateClosed
-                          deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RTCIceTransportState where
-        toJSVal RTCIceTransportStateNew
-          = toJSVal js_RTCIceTransportStateNew
-        toJSVal RTCIceTransportStateChecking
-          = toJSVal js_RTCIceTransportStateChecking
-        toJSVal RTCIceTransportStateConnected
-          = toJSVal js_RTCIceTransportStateConnected
-        toJSVal RTCIceTransportStateCompleted
-          = toJSVal js_RTCIceTransportStateCompleted
-        toJSVal RTCIceTransportStateFailed
-          = toJSVal js_RTCIceTransportStateFailed
-        toJSVal RTCIceTransportStateDisconnected
-          = toJSVal js_RTCIceTransportStateDisconnected
-        toJSVal RTCIceTransportStateClosed
-          = toJSVal js_RTCIceTransportStateClosed
- 
-instance FromJSVal RTCIceTransportState where
-        fromJSVal x
-          = x `strictEqual` js_RTCIceTransportStateNew >>=
-              \ r ->
-                case r of
-                    True -> return (Just RTCIceTransportStateNew)
-                    False
-                      -> x `strictEqual` js_RTCIceTransportStateChecking >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RTCIceTransportStateChecking)
-                                 False
-                                   -> x `strictEqual` js_RTCIceTransportStateConnected >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just RTCIceTransportStateConnected)
-                                              False
-                                                -> x `strictEqual` js_RTCIceTransportStateCompleted
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     RTCIceTransportStateCompleted)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_RTCIceTransportStateFailed
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  RTCIceTransportStateFailed)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_RTCIceTransportStateDisconnected
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               RTCIceTransportStateDisconnected)
-                                                                                     False
-                                                                                       -> x `strictEqual`
-                                                                                            js_RTCIceTransportStateClosed
-                                                                                            >>=
-                                                                                            \ r ->
-                                                                                              case r
-                                                                                                of
-                                                                                                  True
-                                                                                                    -> return
-                                                                                                         (Just
-                                                                                                            RTCIceTransportStateClosed)
-                                                                                                  False
-                                                                                                    -> return
-                                                                                                         Nothing
-js_RTCIceTransportStateNew = "new"
-js_RTCIceTransportStateChecking = "checking"
-js_RTCIceTransportStateConnected = "connected"
-js_RTCIceTransportStateCompleted = "completed"
-js_RTCIceTransportStateFailed = "failed"
-js_RTCIceTransportStateDisconnected = "disconnected"
-js_RTCIceTransportStateClosed = "closed"
- 
-data RTCPeerConnectionState = RTCPeerConnectionStateNew
-                            | RTCPeerConnectionStateConnecting
-                            | RTCPeerConnectionStateConnected
-                            | RTCPeerConnectionStateDisconnected
-                            | RTCPeerConnectionStateFailed
-                            | RTCPeerConnectionStateClosed
-                            deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RTCPeerConnectionState where
-        toJSVal RTCPeerConnectionStateNew
-          = toJSVal js_RTCPeerConnectionStateNew
-        toJSVal RTCPeerConnectionStateConnecting
-          = toJSVal js_RTCPeerConnectionStateConnecting
-        toJSVal RTCPeerConnectionStateConnected
-          = toJSVal js_RTCPeerConnectionStateConnected
-        toJSVal RTCPeerConnectionStateDisconnected
-          = toJSVal js_RTCPeerConnectionStateDisconnected
-        toJSVal RTCPeerConnectionStateFailed
-          = toJSVal js_RTCPeerConnectionStateFailed
-        toJSVal RTCPeerConnectionStateClosed
-          = toJSVal js_RTCPeerConnectionStateClosed
- 
-instance FromJSVal RTCPeerConnectionState where
-        fromJSVal x
-          = x `strictEqual` js_RTCPeerConnectionStateNew >>=
-              \ r ->
-                case r of
-                    True -> return (Just RTCPeerConnectionStateNew)
-                    False
-                      -> x `strictEqual` js_RTCPeerConnectionStateConnecting >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RTCPeerConnectionStateConnecting)
-                                 False
-                                   -> x `strictEqual` js_RTCPeerConnectionStateConnected >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just RTCPeerConnectionStateConnected)
-                                              False
-                                                -> x `strictEqual`
-                                                     js_RTCPeerConnectionStateDisconnected
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     RTCPeerConnectionStateDisconnected)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_RTCPeerConnectionStateFailed
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  RTCPeerConnectionStateFailed)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_RTCPeerConnectionStateClosed
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               RTCPeerConnectionStateClosed)
-                                                                                     False
-                                                                                       -> return
-                                                                                            Nothing
-js_RTCPeerConnectionStateNew = "new"
-js_RTCPeerConnectionStateConnecting = "connecting"
-js_RTCPeerConnectionStateConnected = "connected"
-js_RTCPeerConnectionStateDisconnected = "disconnected"
-js_RTCPeerConnectionStateFailed = "failed"
-js_RTCPeerConnectionStateClosed = "closed"
- 
-data RTCDegradationPreference = RTCDegradationPreferenceMaintainFramerate
-                              | RTCDegradationPreferenceMaintainResolution
-                              | RTCDegradationPreferenceBalanced
-                              deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RTCDegradationPreference where
-        toJSVal RTCDegradationPreferenceMaintainFramerate
-          = toJSVal js_RTCDegradationPreferenceMaintainFramerate
-        toJSVal RTCDegradationPreferenceMaintainResolution
-          = toJSVal js_RTCDegradationPreferenceMaintainResolution
-        toJSVal RTCDegradationPreferenceBalanced
-          = toJSVal js_RTCDegradationPreferenceBalanced
- 
-instance FromJSVal RTCDegradationPreference where
-        fromJSVal x
-          = x `strictEqual` js_RTCDegradationPreferenceMaintainFramerate >>=
-              \ r ->
-                case r of
-                    True -> return (Just RTCDegradationPreferenceMaintainFramerate)
-                    False
-                      -> x `strictEqual` js_RTCDegradationPreferenceMaintainResolution
-                           >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RTCDegradationPreferenceMaintainResolution)
-                                 False
-                                   -> x `strictEqual` js_RTCDegradationPreferenceBalanced >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just RTCDegradationPreferenceBalanced)
-                                              False -> return Nothing
-js_RTCDegradationPreferenceMaintainFramerate = "maintain-framerate"
-js_RTCDegradationPreferenceMaintainResolution
-  = "maintain-resolution"
-js_RTCDegradationPreferenceBalanced = "balanced"
- 
-data RTCDtxStatus = RTCDtxStatusDisabled
-                  | RTCDtxStatusEnabled
-                  deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RTCDtxStatus where
-        toJSVal RTCDtxStatusDisabled = toJSVal js_RTCDtxStatusDisabled
-        toJSVal RTCDtxStatusEnabled = toJSVal js_RTCDtxStatusEnabled
- 
-instance FromJSVal RTCDtxStatus where
-        fromJSVal x
-          = x `strictEqual` js_RTCDtxStatusDisabled >>=
-              \ r ->
-                case r of
-                    True -> return (Just RTCDtxStatusDisabled)
-                    False
-                      -> x `strictEqual` js_RTCDtxStatusEnabled >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RTCDtxStatusEnabled)
-                                 False -> return Nothing
-js_RTCDtxStatusDisabled = "disabled"
-js_RTCDtxStatusEnabled = "enabled"
- 
-data RTCPriorityType = RTCPriorityTypeVeryLow
-                     | RTCPriorityTypeLow
-                     | RTCPriorityTypeMedium
-                     | RTCPriorityTypeHigh
-                     deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RTCPriorityType where
-        toJSVal RTCPriorityTypeVeryLow = toJSVal js_RTCPriorityTypeVeryLow
-        toJSVal RTCPriorityTypeLow = toJSVal js_RTCPriorityTypeLow
-        toJSVal RTCPriorityTypeMedium = toJSVal js_RTCPriorityTypeMedium
-        toJSVal RTCPriorityTypeHigh = toJSVal js_RTCPriorityTypeHigh
- 
-instance FromJSVal RTCPriorityType where
-        fromJSVal x
-          = x `strictEqual` js_RTCPriorityTypeVeryLow >>=
-              \ r ->
-                case r of
-                    True -> return (Just RTCPriorityTypeVeryLow)
-                    False
-                      -> x `strictEqual` js_RTCPriorityTypeLow >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RTCPriorityTypeLow)
-                                 False
-                                   -> x `strictEqual` js_RTCPriorityTypeMedium >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just RTCPriorityTypeMedium)
-                                              False
-                                                -> x `strictEqual` js_RTCPriorityTypeHigh >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True -> return (Just RTCPriorityTypeHigh)
-                                                           False -> return Nothing
-js_RTCPriorityTypeVeryLow = "very-low"
-js_RTCPriorityTypeLow = "low"
-js_RTCPriorityTypeMedium = "medium"
-js_RTCPriorityTypeHigh = "high"
- 
-data RTCRtpTransceiverDirection = RTCRtpTransceiverDirectionSendrecv
-                                | RTCRtpTransceiverDirectionSendonly
-                                | RTCRtpTransceiverDirectionRecvonly
-                                | RTCRtpTransceiverDirectionInactive
-                                deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RTCRtpTransceiverDirection where
-        toJSVal RTCRtpTransceiverDirectionSendrecv
-          = toJSVal js_RTCRtpTransceiverDirectionSendrecv
-        toJSVal RTCRtpTransceiverDirectionSendonly
-          = toJSVal js_RTCRtpTransceiverDirectionSendonly
-        toJSVal RTCRtpTransceiverDirectionRecvonly
-          = toJSVal js_RTCRtpTransceiverDirectionRecvonly
-        toJSVal RTCRtpTransceiverDirectionInactive
-          = toJSVal js_RTCRtpTransceiverDirectionInactive
- 
-instance FromJSVal RTCRtpTransceiverDirection where
-        fromJSVal x
-          = x `strictEqual` js_RTCRtpTransceiverDirectionSendrecv >>=
-              \ r ->
-                case r of
-                    True -> return (Just RTCRtpTransceiverDirectionSendrecv)
-                    False
-                      -> x `strictEqual` js_RTCRtpTransceiverDirectionSendonly >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RTCRtpTransceiverDirectionSendonly)
-                                 False
-                                   -> x `strictEqual` js_RTCRtpTransceiverDirectionRecvonly >>=
-                                        \ r ->
-                                          case r of
-                                              True
-                                                -> return (Just RTCRtpTransceiverDirectionRecvonly)
-                                              False
-                                                -> x `strictEqual`
-                                                     js_RTCRtpTransceiverDirectionInactive
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     RTCRtpTransceiverDirectionInactive)
-                                                           False -> return Nothing
-js_RTCRtpTransceiverDirectionSendrecv = "sendrecv"
-js_RTCRtpTransceiverDirectionSendonly = "sendonly"
-js_RTCRtpTransceiverDirectionRecvonly = "recvonly"
-js_RTCRtpTransceiverDirectionInactive = "inactive"
- 
-data RTCSdpType = RTCSdpTypeOffer
-                | RTCSdpTypePranswer
-                | RTCSdpTypeAnswer
-                | RTCSdpTypeRollback
-                deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RTCSdpType where
-        toJSVal RTCSdpTypeOffer = toJSVal js_RTCSdpTypeOffer
-        toJSVal RTCSdpTypePranswer = toJSVal js_RTCSdpTypePranswer
-        toJSVal RTCSdpTypeAnswer = toJSVal js_RTCSdpTypeAnswer
-        toJSVal RTCSdpTypeRollback = toJSVal js_RTCSdpTypeRollback
- 
-instance FromJSVal RTCSdpType where
-        fromJSVal x
-          = x `strictEqual` js_RTCSdpTypeOffer >>=
-              \ r ->
-                case r of
-                    True -> return (Just RTCSdpTypeOffer)
-                    False
-                      -> x `strictEqual` js_RTCSdpTypePranswer >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RTCSdpTypePranswer)
-                                 False
-                                   -> x `strictEqual` js_RTCSdpTypeAnswer >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just RTCSdpTypeAnswer)
-                                              False
-                                                -> x `strictEqual` js_RTCSdpTypeRollback >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True -> return (Just RTCSdpTypeRollback)
-                                                           False -> return Nothing
-js_RTCSdpTypeOffer = "offer"
-js_RTCSdpTypePranswer = "pranswer"
-js_RTCSdpTypeAnswer = "answer"
-js_RTCSdpTypeRollback = "rollback"
- 
-data RTCSignalingState = RTCSignalingStateStable
-                       | RTCSignalingStateHaveLocalOffer
-                       | RTCSignalingStateHaveRemoteOffer
-                       | RTCSignalingStateHaveLocalPranswer
-                       | RTCSignalingStateHaveRemotePranswer
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RTCSignalingState where
-        toJSVal RTCSignalingStateStable
-          = toJSVal js_RTCSignalingStateStable
-        toJSVal RTCSignalingStateHaveLocalOffer
-          = toJSVal js_RTCSignalingStateHaveLocalOffer
-        toJSVal RTCSignalingStateHaveRemoteOffer
-          = toJSVal js_RTCSignalingStateHaveRemoteOffer
-        toJSVal RTCSignalingStateHaveLocalPranswer
-          = toJSVal js_RTCSignalingStateHaveLocalPranswer
-        toJSVal RTCSignalingStateHaveRemotePranswer
-          = toJSVal js_RTCSignalingStateHaveRemotePranswer
- 
-instance FromJSVal RTCSignalingState where
-        fromJSVal x
-          = x `strictEqual` js_RTCSignalingStateStable >>=
-              \ r ->
-                case r of
-                    True -> return (Just RTCSignalingStateStable)
-                    False
-                      -> x `strictEqual` js_RTCSignalingStateHaveLocalOffer >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RTCSignalingStateHaveLocalOffer)
-                                 False
-                                   -> x `strictEqual` js_RTCSignalingStateHaveRemoteOffer >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just RTCSignalingStateHaveRemoteOffer)
-                                              False
-                                                -> x `strictEqual`
-                                                     js_RTCSignalingStateHaveLocalPranswer
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     RTCSignalingStateHaveLocalPranswer)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_RTCSignalingStateHaveRemotePranswer
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  RTCSignalingStateHaveRemotePranswer)
-                                                                        False -> return Nothing
-js_RTCSignalingStateStable = "stable"
-js_RTCSignalingStateHaveLocalOffer = "have-local-offer"
-js_RTCSignalingStateHaveRemoteOffer = "have-remote-offer"
-js_RTCSignalingStateHaveLocalPranswer = "have-local-pranswer"
-js_RTCSignalingStateHaveRemotePranswer = "have-remote-pranswer"
- 
-data RTCStatsType = RTCStatsTypeCodec
-                  | RTCStatsTypeInboundRtp
-                  | RTCStatsTypeOutboundRtp
-                  | RTCStatsTypePeerConnection
-                  | RTCStatsTypeDataChannel
-                  | RTCStatsTypeTrack
-                  | RTCStatsTypeTransport
-                  | RTCStatsTypeCandidatePair
-                  | RTCStatsTypeLocalCandidate
-                  | RTCStatsTypeRemoteCandidate
-                  | RTCStatsTypeCertificate
-                  deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal RTCStatsType where
-        toJSVal RTCStatsTypeCodec = toJSVal js_RTCStatsTypeCodec
-        toJSVal RTCStatsTypeInboundRtp = toJSVal js_RTCStatsTypeInboundRtp
-        toJSVal RTCStatsTypeOutboundRtp
-          = toJSVal js_RTCStatsTypeOutboundRtp
-        toJSVal RTCStatsTypePeerConnection
-          = toJSVal js_RTCStatsTypePeerConnection
-        toJSVal RTCStatsTypeDataChannel
-          = toJSVal js_RTCStatsTypeDataChannel
-        toJSVal RTCStatsTypeTrack = toJSVal js_RTCStatsTypeTrack
-        toJSVal RTCStatsTypeTransport = toJSVal js_RTCStatsTypeTransport
-        toJSVal RTCStatsTypeCandidatePair
-          = toJSVal js_RTCStatsTypeCandidatePair
-        toJSVal RTCStatsTypeLocalCandidate
-          = toJSVal js_RTCStatsTypeLocalCandidate
-        toJSVal RTCStatsTypeRemoteCandidate
-          = toJSVal js_RTCStatsTypeRemoteCandidate
-        toJSVal RTCStatsTypeCertificate
-          = toJSVal js_RTCStatsTypeCertificate
- 
-instance FromJSVal RTCStatsType where
-        fromJSVal x
-          = x `strictEqual` js_RTCStatsTypeCodec >>=
-              \ r ->
-                case r of
-                    True -> return (Just RTCStatsTypeCodec)
-                    False
-                      -> x `strictEqual` js_RTCStatsTypeInboundRtp >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just RTCStatsTypeInboundRtp)
-                                 False
-                                   -> x `strictEqual` js_RTCStatsTypeOutboundRtp >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just RTCStatsTypeOutboundRtp)
-                                              False
-                                                -> x `strictEqual` js_RTCStatsTypePeerConnection >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just RTCStatsTypePeerConnection)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_RTCStatsTypeDataChannel
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  RTCStatsTypeDataChannel)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_RTCStatsTypeTrack
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               RTCStatsTypeTrack)
-                                                                                     False
-                                                                                       -> x `strictEqual`
-                                                                                            js_RTCStatsTypeTransport
-                                                                                            >>=
-                                                                                            \ r ->
-                                                                                              case r
-                                                                                                of
-                                                                                                  True
-                                                                                                    -> return
-                                                                                                         (Just
-                                                                                                            RTCStatsTypeTransport)
-                                                                                                  False
-                                                                                                    -> x `strictEqual`
-                                                                                                         js_RTCStatsTypeCandidatePair
-                                                                                                         >>=
-                                                                                                         \ r
-                                                                                                           ->
-                                                                                                           case
-                                                                                                             r
-                                                                                                             of
-                                                                                                               True
-                                                                                                                 -> return
-                                                                                                                      (Just
-                                                                                                                         RTCStatsTypeCandidatePair)
-                                                                                                               False
-                                                                                                                 -> x `strictEqual`
-                                                                                                                      js_RTCStatsTypeLocalCandidate
-                                                                                                                      >>=
-                                                                                                                      \ r
-                                                                                                                        ->
-                                                                                                                        case
-                                                                                                                          r
-                                                                                                                          of
-                                                                                                                            True
-                                                                                                                              -> return
-                                                                                                                                   (Just
-                                                                                                                                      RTCStatsTypeLocalCandidate)
-                                                                                                                            False
-                                                                                                                              -> x `strictEqual`
-                                                                                                                                   js_RTCStatsTypeRemoteCandidate
-                                                                                                                                   >>=
-                                                                                                                                   \ r
-                                                                                                                                     ->
-                                                                                                                                     case
-                                                                                                                                       r
-                                                                                                                                       of
-                                                                                                                                         True
-                                                                                                                                           -> return
-                                                                                                                                                (Just
-                                                                                                                                                   RTCStatsTypeRemoteCandidate)
-                                                                                                                                         False
-                                                                                                                                           -> x `strictEqual`
-                                                                                                                                                js_RTCStatsTypeCertificate
-                                                                                                                                                >>=
-                                                                                                                                                \ r
-                                                                                                                                                  ->
-                                                                                                                                                  case
-                                                                                                                                                    r
-                                                                                                                                                    of
-                                                                                                                                                      True
-                                                                                                                                                        -> return
-                                                                                                                                                             (Just
-                                                                                                                                                                RTCStatsTypeCertificate)
-                                                                                                                                                      False
-                                                                                                                                                        -> return
-                                                                                                                                                             Nothing
-js_RTCStatsTypeCodec = "codec"
-js_RTCStatsTypeInboundRtp = "inbound-rtp"
-js_RTCStatsTypeOutboundRtp = "outbound-rtp"
-js_RTCStatsTypePeerConnection = "peer-connection"
-js_RTCStatsTypeDataChannel = "data-channel"
-js_RTCStatsTypeTrack = "track"
-js_RTCStatsTypeTransport = "transport"
-js_RTCStatsTypeCandidatePair = "candidate-pair"
-js_RTCStatsTypeLocalCandidate = "local-candidate"
-js_RTCStatsTypeRemoteCandidate = "remote-candidate"
-js_RTCStatsTypeCertificate = "certificate"
- 
-data NotificationDirection = NotificationDirectionAuto
-                           | NotificationDirectionLtr
-                           | NotificationDirectionRtl
-                           deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal NotificationDirection where
-        toJSVal NotificationDirectionAuto
-          = toJSVal js_NotificationDirectionAuto
-        toJSVal NotificationDirectionLtr
-          = toJSVal js_NotificationDirectionLtr
-        toJSVal NotificationDirectionRtl
-          = toJSVal js_NotificationDirectionRtl
- 
-instance FromJSVal NotificationDirection where
-        fromJSVal x
-          = x `strictEqual` js_NotificationDirectionAuto >>=
-              \ r ->
-                case r of
-                    True -> return (Just NotificationDirectionAuto)
-                    False
-                      -> x `strictEqual` js_NotificationDirectionLtr >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just NotificationDirectionLtr)
-                                 False
-                                   -> x `strictEqual` js_NotificationDirectionRtl >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just NotificationDirectionRtl)
-                                              False -> return Nothing
-js_NotificationDirectionAuto = "auto"
-js_NotificationDirectionLtr = "ltr"
-js_NotificationDirectionRtl = "rtl"
- 
-data AudioContextState = AudioContextStateSuspended
-                       | AudioContextStateRunning
-                       | AudioContextStateInterrupted
-                       | AudioContextStateClosed
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal AudioContextState where
-        toJSVal AudioContextStateSuspended
-          = toJSVal js_AudioContextStateSuspended
-        toJSVal AudioContextStateRunning
-          = toJSVal js_AudioContextStateRunning
-        toJSVal AudioContextStateInterrupted
-          = toJSVal js_AudioContextStateInterrupted
-        toJSVal AudioContextStateClosed
-          = toJSVal js_AudioContextStateClosed
- 
-instance FromJSVal AudioContextState where
-        fromJSVal x
-          = x `strictEqual` js_AudioContextStateSuspended >>=
-              \ r ->
-                case r of
-                    True -> return (Just AudioContextStateSuspended)
-                    False
-                      -> x `strictEqual` js_AudioContextStateRunning >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just AudioContextStateRunning)
-                                 False
-                                   -> x `strictEqual` js_AudioContextStateInterrupted >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just AudioContextStateInterrupted)
-                                              False
-                                                -> x `strictEqual` js_AudioContextStateClosed >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just AudioContextStateClosed)
-                                                           False -> return Nothing
-js_AudioContextStateSuspended = "suspended"
-js_AudioContextStateRunning = "running"
-js_AudioContextStateInterrupted = "interrupted"
-js_AudioContextStateClosed = "closed"
- 
-data BiquadFilterType = BiquadFilterTypeLowpass
-                      | BiquadFilterTypeHighpass
-                      | BiquadFilterTypeBandpass
-                      | BiquadFilterTypeLowshelf
-                      | BiquadFilterTypeHighshelf
-                      | BiquadFilterTypePeaking
-                      | BiquadFilterTypeNotch
-                      | BiquadFilterTypeAllpass
-                      deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal BiquadFilterType where
-        toJSVal BiquadFilterTypeLowpass
-          = toJSVal js_BiquadFilterTypeLowpass
-        toJSVal BiquadFilterTypeHighpass
-          = toJSVal js_BiquadFilterTypeHighpass
-        toJSVal BiquadFilterTypeBandpass
-          = toJSVal js_BiquadFilterTypeBandpass
-        toJSVal BiquadFilterTypeLowshelf
-          = toJSVal js_BiquadFilterTypeLowshelf
-        toJSVal BiquadFilterTypeHighshelf
-          = toJSVal js_BiquadFilterTypeHighshelf
-        toJSVal BiquadFilterTypePeaking
-          = toJSVal js_BiquadFilterTypePeaking
-        toJSVal BiquadFilterTypeNotch = toJSVal js_BiquadFilterTypeNotch
-        toJSVal BiquadFilterTypeAllpass
-          = toJSVal js_BiquadFilterTypeAllpass
- 
-instance FromJSVal BiquadFilterType where
-        fromJSVal x
-          = x `strictEqual` js_BiquadFilterTypeLowpass >>=
-              \ r ->
-                case r of
-                    True -> return (Just BiquadFilterTypeLowpass)
-                    False
-                      -> x `strictEqual` js_BiquadFilterTypeHighpass >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just BiquadFilterTypeHighpass)
-                                 False
-                                   -> x `strictEqual` js_BiquadFilterTypeBandpass >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just BiquadFilterTypeBandpass)
-                                              False
-                                                -> x `strictEqual` js_BiquadFilterTypeLowshelf >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just BiquadFilterTypeLowshelf)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_BiquadFilterTypeHighshelf
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  BiquadFilterTypeHighshelf)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_BiquadFilterTypePeaking
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               BiquadFilterTypePeaking)
-                                                                                     False
-                                                                                       -> x `strictEqual`
-                                                                                            js_BiquadFilterTypeNotch
-                                                                                            >>=
-                                                                                            \ r ->
-                                                                                              case r
-                                                                                                of
-                                                                                                  True
-                                                                                                    -> return
-                                                                                                         (Just
-                                                                                                            BiquadFilterTypeNotch)
-                                                                                                  False
-                                                                                                    -> x `strictEqual`
-                                                                                                         js_BiquadFilterTypeAllpass
-                                                                                                         >>=
-                                                                                                         \ r
-                                                                                                           ->
-                                                                                                           case
-                                                                                                             r
-                                                                                                             of
-                                                                                                               True
-                                                                                                                 -> return
-                                                                                                                      (Just
-                                                                                                                         BiquadFilterTypeAllpass)
-                                                                                                               False
-                                                                                                                 -> return
-                                                                                                                      Nothing
-js_BiquadFilterTypeLowpass = "lowpass"
-js_BiquadFilterTypeHighpass = "highpass"
-js_BiquadFilterTypeBandpass = "bandpass"
-js_BiquadFilterTypeLowshelf = "lowshelf"
-js_BiquadFilterTypeHighshelf = "highshelf"
-js_BiquadFilterTypePeaking = "peaking"
-js_BiquadFilterTypeNotch = "notch"
-js_BiquadFilterTypeAllpass = "allpass"
- 
-data OscillatorType = OscillatorTypeSine
-                    | OscillatorTypeSquare
-                    | OscillatorTypeSawtooth
-                    | OscillatorTypeTriangle
-                    | OscillatorTypeCustom
-                    deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal OscillatorType where
-        toJSVal OscillatorTypeSine = toJSVal js_OscillatorTypeSine
-        toJSVal OscillatorTypeSquare = toJSVal js_OscillatorTypeSquare
-        toJSVal OscillatorTypeSawtooth = toJSVal js_OscillatorTypeSawtooth
-        toJSVal OscillatorTypeTriangle = toJSVal js_OscillatorTypeTriangle
-        toJSVal OscillatorTypeCustom = toJSVal js_OscillatorTypeCustom
- 
-instance FromJSVal OscillatorType where
-        fromJSVal x
-          = x `strictEqual` js_OscillatorTypeSine >>=
-              \ r ->
-                case r of
-                    True -> return (Just OscillatorTypeSine)
-                    False
-                      -> x `strictEqual` js_OscillatorTypeSquare >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just OscillatorTypeSquare)
-                                 False
-                                   -> x `strictEqual` js_OscillatorTypeSawtooth >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just OscillatorTypeSawtooth)
-                                              False
-                                                -> x `strictEqual` js_OscillatorTypeTriangle >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return (Just OscillatorTypeTriangle)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_OscillatorTypeCustom
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  OscillatorTypeCustom)
-                                                                        False -> return Nothing
-js_OscillatorTypeSine = "sine"
-js_OscillatorTypeSquare = "square"
-js_OscillatorTypeSawtooth = "sawtooth"
-js_OscillatorTypeTriangle = "triangle"
-js_OscillatorTypeCustom = "custom"
- 
-data PanningModelType = PanningModelTypeEqualpower
-                      | PanningModelTypeHRTF
-                      deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal PanningModelType where
-        toJSVal PanningModelTypeEqualpower
-          = toJSVal js_PanningModelTypeEqualpower
-        toJSVal PanningModelTypeHRTF = toJSVal js_PanningModelTypeHRTF
- 
-instance FromJSVal PanningModelType where
-        fromJSVal x
-          = x `strictEqual` js_PanningModelTypeEqualpower >>=
-              \ r ->
-                case r of
-                    True -> return (Just PanningModelTypeEqualpower)
-                    False
-                      -> x `strictEqual` js_PanningModelTypeHRTF >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just PanningModelTypeHRTF)
-                                 False -> return Nothing
-js_PanningModelTypeEqualpower = "equalpower"
-js_PanningModelTypeHRTF = "HRTF"
- 
-data DistanceModelType = DistanceModelTypeLinear
-                       | DistanceModelTypeInverse
-                       | DistanceModelTypeExponential
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal DistanceModelType where
-        toJSVal DistanceModelTypeLinear
-          = toJSVal js_DistanceModelTypeLinear
-        toJSVal DistanceModelTypeInverse
-          = toJSVal js_DistanceModelTypeInverse
-        toJSVal DistanceModelTypeExponential
-          = toJSVal js_DistanceModelTypeExponential
- 
-instance FromJSVal DistanceModelType where
-        fromJSVal x
-          = x `strictEqual` js_DistanceModelTypeLinear >>=
-              \ r ->
-                case r of
-                    True -> return (Just DistanceModelTypeLinear)
-                    False
-                      -> x `strictEqual` js_DistanceModelTypeInverse >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just DistanceModelTypeInverse)
-                                 False
-                                   -> x `strictEqual` js_DistanceModelTypeExponential >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just DistanceModelTypeExponential)
-                                              False -> return Nothing
-js_DistanceModelTypeLinear = "linear"
-js_DistanceModelTypeInverse = "inverse"
-js_DistanceModelTypeExponential = "exponential"
- 
-data OverSampleType = OverSampleTypeNone
-                    | OverSampleType2x
-                    | OverSampleType4x
-                    deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal OverSampleType where
-        toJSVal OverSampleTypeNone = toJSVal js_OverSampleTypeNone
-        toJSVal OverSampleType2x = toJSVal js_OverSampleType2x
-        toJSVal OverSampleType4x = toJSVal js_OverSampleType4x
- 
-instance FromJSVal OverSampleType where
-        fromJSVal x
-          = x `strictEqual` js_OverSampleTypeNone >>=
-              \ r ->
-                case r of
-                    True -> return (Just OverSampleTypeNone)
-                    False
-                      -> x `strictEqual` js_OverSampleType2x >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just OverSampleType2x)
-                                 False
-                                   -> x `strictEqual` js_OverSampleType4x >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just OverSampleType4x)
-                                              False -> return Nothing
-js_OverSampleTypeNone = "none"
-js_OverSampleType2x = "2x"
-js_OverSampleType4x = "4x"
- 
-data ScrollRestoration = ScrollRestorationAuto
-                       | ScrollRestorationManual
-                       deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal ScrollRestoration where
-        toJSVal ScrollRestorationAuto = toJSVal js_ScrollRestorationAuto
-        toJSVal ScrollRestorationManual
-          = toJSVal js_ScrollRestorationManual
- 
-instance FromJSVal ScrollRestoration where
-        fromJSVal x
-          = x `strictEqual` js_ScrollRestorationAuto >>=
-              \ r ->
-                case r of
-                    True -> return (Just ScrollRestorationAuto)
-                    False
-                      -> x `strictEqual` js_ScrollRestorationManual >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just ScrollRestorationManual)
-                                 False -> return Nothing
-js_ScrollRestorationAuto = "auto"
-js_ScrollRestorationManual = "manual"
- 
-data XMLHttpRequestResponseType = XMLHttpRequestResponseType
-                                | XMLHttpRequestResponseTypeArraybuffer
-                                | XMLHttpRequestResponseTypeBlob
-                                | XMLHttpRequestResponseTypeDocument
-                                | XMLHttpRequestResponseTypeJson
-                                | XMLHttpRequestResponseTypeText
-                                deriving (Show, Read, Eq, Ord, Typeable)
- 
-instance ToJSVal XMLHttpRequestResponseType where
-        toJSVal XMLHttpRequestResponseType
-          = toJSVal js_XMLHttpRequestResponseType
-        toJSVal XMLHttpRequestResponseTypeArraybuffer
-          = toJSVal js_XMLHttpRequestResponseTypeArraybuffer
-        toJSVal XMLHttpRequestResponseTypeBlob
-          = toJSVal js_XMLHttpRequestResponseTypeBlob
-        toJSVal XMLHttpRequestResponseTypeDocument
-          = toJSVal js_XMLHttpRequestResponseTypeDocument
-        toJSVal XMLHttpRequestResponseTypeJson
-          = toJSVal js_XMLHttpRequestResponseTypeJson
-        toJSVal XMLHttpRequestResponseTypeText
-          = toJSVal js_XMLHttpRequestResponseTypeText
- 
-instance FromJSVal XMLHttpRequestResponseType where
-        fromJSVal x
-          = x `strictEqual` js_XMLHttpRequestResponseType >>=
-              \ r ->
-                case r of
-                    True -> return (Just XMLHttpRequestResponseType)
-                    False
-                      -> x `strictEqual` js_XMLHttpRequestResponseTypeArraybuffer >>=
-                           \ r ->
-                             case r of
-                                 True -> return (Just XMLHttpRequestResponseTypeArraybuffer)
-                                 False
-                                   -> x `strictEqual` js_XMLHttpRequestResponseTypeBlob >>=
-                                        \ r ->
-                                          case r of
-                                              True -> return (Just XMLHttpRequestResponseTypeBlob)
-                                              False
-                                                -> x `strictEqual`
-                                                     js_XMLHttpRequestResponseTypeDocument
-                                                     >>=
-                                                     \ r ->
-                                                       case r of
-                                                           True
-                                                             -> return
-                                                                  (Just
-                                                                     XMLHttpRequestResponseTypeDocument)
-                                                           False
-                                                             -> x `strictEqual`
-                                                                  js_XMLHttpRequestResponseTypeJson
-                                                                  >>=
-                                                                  \ r ->
-                                                                    case r of
-                                                                        True
-                                                                          -> return
-                                                                               (Just
-                                                                                  XMLHttpRequestResponseTypeJson)
-                                                                        False
-                                                                          -> x `strictEqual`
-                                                                               js_XMLHttpRequestResponseTypeText
-                                                                               >>=
-                                                                               \ r ->
-                                                                                 case r of
-                                                                                     True
-                                                                                       -> return
-                                                                                            (Just
-                                                                                               XMLHttpRequestResponseTypeText)
-                                                                                     False
-                                                                                       -> return
-                                                                                            Nothing
-js_XMLHttpRequestResponseType = ""
-js_XMLHttpRequestResponseTypeArraybuffer = "arraybuffer"
-js_XMLHttpRequestResponseTypeBlob = "blob"
-js_XMLHttpRequestResponseTypeDocument = "document"
-js_XMLHttpRequestResponseTypeJson = "json"
-js_XMLHttpRequestResponseTypeText = "text"
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webref IDL. Do not edit.
+module JSDOM.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 Language.Javascript.JSaddle (JSM, JSString, ToJSVal(..), FromJSVal(..))
+
+-- | <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 ToJSVal AacBitstreamFormat where
+  toJSVal x = toJSVal (case x of
+    AacBitstreamFormatAac -> js_AacBitstreamFormatAac
+    AacBitstreamFormatAdts -> js_AacBitstreamFormatAdts
+    )
+
+instance FromJSVal AacBitstreamFormat where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_AacBitstreamFormatAac, AacBitstreamFormatAac), (js_AacBitstreamFormatAdts, AacBitstreamFormatAdts)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected AacBitstreamFormat value") P.return
+
+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 ToJSVal AlignSetting where
+  toJSVal x = toJSVal (case x of
+    AlignSettingStart -> js_AlignSettingStart
+    AlignSettingCenter -> js_AlignSettingCenter
+    AlignSettingEnd -> js_AlignSettingEnd
+    AlignSettingLeft -> js_AlignSettingLeft
+    AlignSettingRight -> js_AlignSettingRight
+    )
+
+instance FromJSVal AlignSetting where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_AlignSettingStart, AlignSettingStart), (js_AlignSettingCenter, AlignSettingCenter), (js_AlignSettingEnd, AlignSettingEnd), (js_AlignSettingLeft, AlignSettingLeft), (js_AlignSettingRight, AlignSettingRight)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected AlignSetting value") P.return
+
+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 ToJSVal AlphaOption where
+  toJSVal x = toJSVal (case x of
+    AlphaOptionKeep -> js_AlphaOptionKeep
+    AlphaOptionDiscard -> js_AlphaOptionDiscard
+    )
+
+instance FromJSVal AlphaOption where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_AlphaOptionKeep, AlphaOptionKeep), (js_AlphaOptionDiscard, AlphaOptionDiscard)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected AlphaOption value") P.return
+
+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 ToJSVal AnimationPlayState where
+  toJSVal x = toJSVal (case x of
+    AnimationPlayStateIdle -> js_AnimationPlayStateIdle
+    AnimationPlayStateRunning -> js_AnimationPlayStateRunning
+    AnimationPlayStatePaused -> js_AnimationPlayStatePaused
+    AnimationPlayStateFinished -> js_AnimationPlayStateFinished
+    )
+
+instance FromJSVal AnimationPlayState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_AnimationPlayStateIdle, AnimationPlayStateIdle), (js_AnimationPlayStateRunning, AnimationPlayStateRunning), (js_AnimationPlayStatePaused, AnimationPlayStatePaused), (js_AnimationPlayStateFinished, AnimationPlayStateFinished)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected AnimationPlayState value") P.return
+
+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 ToJSVal AnimationReplaceState where
+  toJSVal x = toJSVal (case x of
+    AnimationReplaceStateActive -> js_AnimationReplaceStateActive
+    AnimationReplaceStateRemoved -> js_AnimationReplaceStateRemoved
+    AnimationReplaceStatePersisted -> js_AnimationReplaceStatePersisted
+    )
+
+instance FromJSVal AnimationReplaceState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_AnimationReplaceStateActive, AnimationReplaceStateActive), (js_AnimationReplaceStateRemoved, AnimationReplaceStateRemoved), (js_AnimationReplaceStatePersisted, AnimationReplaceStatePersisted)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected AnimationReplaceState value") P.return
+
+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 ToJSVal AppendMode where
+  toJSVal x = toJSVal (case x of
+    AppendModeSegments -> js_AppendModeSegments
+    AppendModeSequence -> js_AppendModeSequence
+    )
+
+instance FromJSVal AppendMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_AppendModeSegments, AppendModeSegments), (js_AppendModeSequence, AppendModeSequence)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected AppendMode value") P.return
+
+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 ToJSVal AriaNotifyPriority where
+  toJSVal x = toJSVal (case x of
+    AriaNotifyPriorityNormal -> js_AriaNotifyPriorityNormal
+    AriaNotifyPriorityHigh -> js_AriaNotifyPriorityHigh
+    )
+
+instance FromJSVal AriaNotifyPriority where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_AriaNotifyPriorityNormal, AriaNotifyPriorityNormal), (js_AriaNotifyPriorityHigh, AriaNotifyPriorityHigh)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected AriaNotifyPriority value") P.return
+
+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 ToJSVal AudioContextLatencyCategory where
+  toJSVal x = toJSVal (case x of
+    AudioContextLatencyCategoryBalanced -> js_AudioContextLatencyCategoryBalanced
+    AudioContextLatencyCategoryInteractive -> js_AudioContextLatencyCategoryInteractive
+    AudioContextLatencyCategoryPlayback -> js_AudioContextLatencyCategoryPlayback
+    )
+
+instance FromJSVal AudioContextLatencyCategory where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_AudioContextLatencyCategoryBalanced, AudioContextLatencyCategoryBalanced), (js_AudioContextLatencyCategoryInteractive, AudioContextLatencyCategoryInteractive), (js_AudioContextLatencyCategoryPlayback, AudioContextLatencyCategoryPlayback)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected AudioContextLatencyCategory value") P.return
+
+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 ToJSVal AudioContextRenderSizeCategory where
+  toJSVal x = toJSVal (case x of
+    AudioContextRenderSizeCategoryDefault -> js_AudioContextRenderSizeCategoryDefault
+    AudioContextRenderSizeCategoryHardware -> js_AudioContextRenderSizeCategoryHardware
+    )
+
+instance FromJSVal AudioContextRenderSizeCategory where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_AudioContextRenderSizeCategoryDefault, AudioContextRenderSizeCategoryDefault), (js_AudioContextRenderSizeCategoryHardware, AudioContextRenderSizeCategoryHardware)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected AudioContextRenderSizeCategory value") P.return
+
+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 ToJSVal AudioContextState where
+  toJSVal x = toJSVal (case x of
+    AudioContextStateSuspended -> js_AudioContextStateSuspended
+    AudioContextStateRunning -> js_AudioContextStateRunning
+    AudioContextStateClosed -> js_AudioContextStateClosed
+    AudioContextStateInterrupted -> js_AudioContextStateInterrupted
+    )
+
+instance FromJSVal AudioContextState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_AudioContextStateSuspended, AudioContextStateSuspended), (js_AudioContextStateRunning, AudioContextStateRunning), (js_AudioContextStateClosed, AudioContextStateClosed), (js_AudioContextStateInterrupted, AudioContextStateInterrupted)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected AudioContextState value") P.return
+
+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 ToJSVal AudioSampleFormat where
+  toJSVal x = toJSVal (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 FromJSVal AudioSampleFormat where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected AudioSampleFormat value") P.return
+
+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 ToJSVal AudioSelectionPreferenceEnum where
+  toJSVal x = toJSVal (case x of
+    AudioSelectionPreferenceEnumPreferred -> js_AudioSelectionPreferenceEnumPreferred
+    )
+
+instance FromJSVal AudioSelectionPreferenceEnum where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_AudioSelectionPreferenceEnumPreferred, AudioSelectionPreferenceEnumPreferred)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected AudioSelectionPreferenceEnum value") P.return
+
+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 ToJSVal AudioSinkType where
+  toJSVal x = toJSVal (case x of
+    AudioSinkTypeNone -> js_AudioSinkTypeNone
+    )
+
+instance FromJSVal AudioSinkType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_AudioSinkTypeNone, AudioSinkTypeNone)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected AudioSinkType value") P.return
+
+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 ToJSVal AutoKeyword where
+  toJSVal x = toJSVal (case x of
+    AutoKeywordAuto -> js_AutoKeywordAuto
+    )
+
+instance FromJSVal AutoKeyword where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_AutoKeywordAuto, AutoKeywordAuto)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected AutoKeyword value") P.return
+
+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 ToJSVal AutomationRate where
+  toJSVal x = toJSVal (case x of
+    AutomationRateARate -> js_AutomationRateARate
+    AutomationRateKRate -> js_AutomationRateKRate
+    )
+
+instance FromJSVal AutomationRate where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_AutomationRateARate, AutomationRateARate), (js_AutomationRateKRate, AutomationRateKRate)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected AutomationRate value") P.return
+
+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 ToJSVal AvcBitstreamFormat where
+  toJSVal x = toJSVal (case x of
+    AvcBitstreamFormatAnnexb -> js_AvcBitstreamFormatAnnexb
+    AvcBitstreamFormatAvc -> js_AvcBitstreamFormatAvc
+    )
+
+instance FromJSVal AvcBitstreamFormat where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_AvcBitstreamFormatAnnexb, AvcBitstreamFormatAnnexb), (js_AvcBitstreamFormatAvc, AvcBitstreamFormatAvc)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected AvcBitstreamFormat value") P.return
+
+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 ToJSVal BinaryType where
+  toJSVal x = toJSVal (case x of
+    BinaryTypeBlob -> js_BinaryTypeBlob
+    BinaryTypeArraybuffer -> js_BinaryTypeArraybuffer
+    )
+
+instance FromJSVal BinaryType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_BinaryTypeBlob, BinaryTypeBlob), (js_BinaryTypeArraybuffer, BinaryTypeArraybuffer)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected BinaryType value") P.return
+
+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 ToJSVal BiquadFilterType where
+  toJSVal x = toJSVal (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 FromJSVal BiquadFilterType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected BiquadFilterType value") P.return
+
+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 ToJSVal BitrateMode where
+  toJSVal x = toJSVal (case x of
+    BitrateModeConstant -> js_BitrateModeConstant
+    BitrateModeVariable -> js_BitrateModeVariable
+    )
+
+instance FromJSVal BitrateMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_BitrateModeConstant, BitrateModeConstant), (js_BitrateModeVariable, BitrateModeVariable)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected BitrateMode value") P.return
+
+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 ToJSVal CSSMathOperator where
+  toJSVal x = toJSVal (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 FromJSVal CSSMathOperator where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CSSMathOperatorSum, CSSMathOperatorSum), (js_CSSMathOperatorProduct, CSSMathOperatorProduct), (js_CSSMathOperatorNegate, CSSMathOperatorNegate), (js_CSSMathOperatorInvert, CSSMathOperatorInvert), (js_CSSMathOperatorMin, CSSMathOperatorMin), (js_CSSMathOperatorMax, CSSMathOperatorMax), (js_CSSMathOperatorClamp, CSSMathOperatorClamp)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CSSMathOperator value") P.return
+
+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 ToJSVal CSSNumericBaseType where
+  toJSVal x = toJSVal (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 FromJSVal CSSNumericBaseType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CSSNumericBaseTypeLength, CSSNumericBaseTypeLength), (js_CSSNumericBaseTypeAngle, CSSNumericBaseTypeAngle), (js_CSSNumericBaseTypeTime, CSSNumericBaseTypeTime), (js_CSSNumericBaseTypeFrequency, CSSNumericBaseTypeFrequency), (js_CSSNumericBaseTypeResolution, CSSNumericBaseTypeResolution), (js_CSSNumericBaseTypeFlex, CSSNumericBaseTypeFlex), (js_CSSNumericBaseTypePercent, CSSNumericBaseTypePercent)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CSSNumericBaseType value") P.return
+
+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 ToJSVal CanPlayTypeResult where
+  toJSVal x = toJSVal (case x of
+    CanPlayTypeResult -> js_CanPlayTypeResult
+    CanPlayTypeResultMaybe -> js_CanPlayTypeResultMaybe
+    CanPlayTypeResultProbably -> js_CanPlayTypeResultProbably
+    )
+
+instance FromJSVal CanPlayTypeResult where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CanPlayTypeResult, CanPlayTypeResult), (js_CanPlayTypeResultMaybe, CanPlayTypeResultMaybe), (js_CanPlayTypeResultProbably, CanPlayTypeResultProbably)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CanPlayTypeResult value") P.return
+
+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 ToJSVal CanvasColorType where
+  toJSVal x = toJSVal (case x of
+    CanvasColorTypeUnorm8 -> js_CanvasColorTypeUnorm8
+    CanvasColorTypeFloat16 -> js_CanvasColorTypeFloat16
+    )
+
+instance FromJSVal CanvasColorType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CanvasColorTypeUnorm8, CanvasColorTypeUnorm8), (js_CanvasColorTypeFloat16, CanvasColorTypeFloat16)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CanvasColorType value") P.return
+
+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 ToJSVal CanvasDirection where
+  toJSVal x = toJSVal (case x of
+    CanvasDirectionLtr -> js_CanvasDirectionLtr
+    CanvasDirectionRtl -> js_CanvasDirectionRtl
+    CanvasDirectionInherit -> js_CanvasDirectionInherit
+    )
+
+instance FromJSVal CanvasDirection where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CanvasDirectionLtr, CanvasDirectionLtr), (js_CanvasDirectionRtl, CanvasDirectionRtl), (js_CanvasDirectionInherit, CanvasDirectionInherit)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CanvasDirection value") P.return
+
+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 ToJSVal CanvasFillRule where
+  toJSVal x = toJSVal (case x of
+    CanvasFillRuleNonzero -> js_CanvasFillRuleNonzero
+    CanvasFillRuleEvenodd -> js_CanvasFillRuleEvenodd
+    )
+
+instance FromJSVal CanvasFillRule where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CanvasFillRuleNonzero, CanvasFillRuleNonzero), (js_CanvasFillRuleEvenodd, CanvasFillRuleEvenodd)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CanvasFillRule value") P.return
+
+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 ToJSVal CanvasFontKerning where
+  toJSVal x = toJSVal (case x of
+    CanvasFontKerningAuto -> js_CanvasFontKerningAuto
+    CanvasFontKerningNormal -> js_CanvasFontKerningNormal
+    CanvasFontKerningNone -> js_CanvasFontKerningNone
+    )
+
+instance FromJSVal CanvasFontKerning where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CanvasFontKerningAuto, CanvasFontKerningAuto), (js_CanvasFontKerningNormal, CanvasFontKerningNormal), (js_CanvasFontKerningNone, CanvasFontKerningNone)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CanvasFontKerning value") P.return
+
+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 ToJSVal CanvasFontStretch where
+  toJSVal x = toJSVal (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 FromJSVal CanvasFontStretch where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected CanvasFontStretch value") P.return
+
+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 ToJSVal CanvasFontVariantCaps where
+  toJSVal x = toJSVal (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 FromJSVal CanvasFontVariantCaps where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CanvasFontVariantCapsNormal, CanvasFontVariantCapsNormal), (js_CanvasFontVariantCapsSmallCaps, CanvasFontVariantCapsSmallCaps), (js_CanvasFontVariantCapsAllSmallCaps, CanvasFontVariantCapsAllSmallCaps), (js_CanvasFontVariantCapsPetiteCaps, CanvasFontVariantCapsPetiteCaps), (js_CanvasFontVariantCapsAllPetiteCaps, CanvasFontVariantCapsAllPetiteCaps), (js_CanvasFontVariantCapsUnicase, CanvasFontVariantCapsUnicase), (js_CanvasFontVariantCapsTitlingCaps, CanvasFontVariantCapsTitlingCaps)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CanvasFontVariantCaps value") P.return
+
+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 ToJSVal CanvasLineCap where
+  toJSVal x = toJSVal (case x of
+    CanvasLineCapButt -> js_CanvasLineCapButt
+    CanvasLineCapRound -> js_CanvasLineCapRound
+    CanvasLineCapSquare -> js_CanvasLineCapSquare
+    )
+
+instance FromJSVal CanvasLineCap where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CanvasLineCapButt, CanvasLineCapButt), (js_CanvasLineCapRound, CanvasLineCapRound), (js_CanvasLineCapSquare, CanvasLineCapSquare)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CanvasLineCap value") P.return
+
+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 ToJSVal CanvasLineJoin where
+  toJSVal x = toJSVal (case x of
+    CanvasLineJoinRound -> js_CanvasLineJoinRound
+    CanvasLineJoinBevel -> js_CanvasLineJoinBevel
+    CanvasLineJoinMiter -> js_CanvasLineJoinMiter
+    )
+
+instance FromJSVal CanvasLineJoin where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CanvasLineJoinRound, CanvasLineJoinRound), (js_CanvasLineJoinBevel, CanvasLineJoinBevel), (js_CanvasLineJoinMiter, CanvasLineJoinMiter)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CanvasLineJoin value") P.return
+
+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 ToJSVal CanvasTextAlign where
+  toJSVal x = toJSVal (case x of
+    CanvasTextAlignStart -> js_CanvasTextAlignStart
+    CanvasTextAlignEnd -> js_CanvasTextAlignEnd
+    CanvasTextAlignLeft -> js_CanvasTextAlignLeft
+    CanvasTextAlignRight -> js_CanvasTextAlignRight
+    CanvasTextAlignCenter -> js_CanvasTextAlignCenter
+    )
+
+instance FromJSVal CanvasTextAlign where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CanvasTextAlignStart, CanvasTextAlignStart), (js_CanvasTextAlignEnd, CanvasTextAlignEnd), (js_CanvasTextAlignLeft, CanvasTextAlignLeft), (js_CanvasTextAlignRight, CanvasTextAlignRight), (js_CanvasTextAlignCenter, CanvasTextAlignCenter)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CanvasTextAlign value") P.return
+
+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 ToJSVal CanvasTextBaseline where
+  toJSVal x = toJSVal (case x of
+    CanvasTextBaselineTop -> js_CanvasTextBaselineTop
+    CanvasTextBaselineHanging -> js_CanvasTextBaselineHanging
+    CanvasTextBaselineMiddle -> js_CanvasTextBaselineMiddle
+    CanvasTextBaselineAlphabetic -> js_CanvasTextBaselineAlphabetic
+    CanvasTextBaselineIdeographic -> js_CanvasTextBaselineIdeographic
+    CanvasTextBaselineBottom -> js_CanvasTextBaselineBottom
+    )
+
+instance FromJSVal CanvasTextBaseline where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CanvasTextBaselineTop, CanvasTextBaselineTop), (js_CanvasTextBaselineHanging, CanvasTextBaselineHanging), (js_CanvasTextBaselineMiddle, CanvasTextBaselineMiddle), (js_CanvasTextBaselineAlphabetic, CanvasTextBaselineAlphabetic), (js_CanvasTextBaselineIdeographic, CanvasTextBaselineIdeographic), (js_CanvasTextBaselineBottom, CanvasTextBaselineBottom)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CanvasTextBaseline value") P.return
+
+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 ToJSVal CanvasTextRendering where
+  toJSVal x = toJSVal (case x of
+    CanvasTextRenderingAuto -> js_CanvasTextRenderingAuto
+    CanvasTextRenderingOptimizeSpeed -> js_CanvasTextRenderingOptimizeSpeed
+    CanvasTextRenderingOptimizeLegibility -> js_CanvasTextRenderingOptimizeLegibility
+    CanvasTextRenderingGeometricPrecision -> js_CanvasTextRenderingGeometricPrecision
+    )
+
+instance FromJSVal CanvasTextRendering where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CanvasTextRenderingAuto, CanvasTextRenderingAuto), (js_CanvasTextRenderingOptimizeSpeed, CanvasTextRenderingOptimizeSpeed), (js_CanvasTextRenderingOptimizeLegibility, CanvasTextRenderingOptimizeLegibility), (js_CanvasTextRenderingGeometricPrecision, CanvasTextRenderingGeometricPrecision)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CanvasTextRendering value") P.return
+
+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 ToJSVal ChannelCountMode where
+  toJSVal x = toJSVal (case x of
+    ChannelCountModeMax -> js_ChannelCountModeMax
+    ChannelCountModeClampedMax -> js_ChannelCountModeClampedMax
+    ChannelCountModeExplicit -> js_ChannelCountModeExplicit
+    )
+
+instance FromJSVal ChannelCountMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ChannelCountModeMax, ChannelCountModeMax), (js_ChannelCountModeClampedMax, ChannelCountModeClampedMax), (js_ChannelCountModeExplicit, ChannelCountModeExplicit)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ChannelCountMode value") P.return
+
+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 ToJSVal ChannelInterpretation where
+  toJSVal x = toJSVal (case x of
+    ChannelInterpretationSpeakers -> js_ChannelInterpretationSpeakers
+    ChannelInterpretationDiscrete -> js_ChannelInterpretationDiscrete
+    )
+
+instance FromJSVal ChannelInterpretation where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ChannelInterpretationSpeakers, ChannelInterpretationSpeakers), (js_ChannelInterpretationDiscrete, ChannelInterpretationDiscrete)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ChannelInterpretation value") P.return
+
+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 ToJSVal ClientType where
+  toJSVal x = toJSVal (case x of
+    ClientTypeWindow -> js_ClientTypeWindow
+    ClientTypeWorker -> js_ClientTypeWorker
+    ClientTypeSharedworker -> js_ClientTypeSharedworker
+    ClientTypeAll -> js_ClientTypeAll
+    )
+
+instance FromJSVal ClientType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ClientTypeWindow, ClientTypeWindow), (js_ClientTypeWorker, ClientTypeWorker), (js_ClientTypeSharedworker, ClientTypeSharedworker), (js_ClientTypeAll, ClientTypeAll)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ClientType value") P.return
+
+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 ToJSVal CodecState where
+  toJSVal x = toJSVal (case x of
+    CodecStateUnconfigured -> js_CodecStateUnconfigured
+    CodecStateConfigured -> js_CodecStateConfigured
+    CodecStateClosed -> js_CodecStateClosed
+    )
+
+instance FromJSVal CodecState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CodecStateUnconfigured, CodecStateUnconfigured), (js_CodecStateConfigured, CodecStateConfigured), (js_CodecStateClosed, CodecStateClosed)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CodecState value") P.return
+
+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 ToJSVal ColorGamut where
+  toJSVal x = toJSVal (case x of
+    ColorGamutSrgb -> js_ColorGamutSrgb
+    ColorGamutP3 -> js_ColorGamutP3
+    ColorGamutRec2020 -> js_ColorGamutRec2020
+    )
+
+instance FromJSVal ColorGamut where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ColorGamutSrgb, ColorGamutSrgb), (js_ColorGamutP3, ColorGamutP3), (js_ColorGamutRec2020, ColorGamutRec2020)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ColorGamut value") P.return
+
+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 ToJSVal ColorSpaceConversion where
+  toJSVal x = toJSVal (case x of
+    ColorSpaceConversionNone -> js_ColorSpaceConversionNone
+    ColorSpaceConversionDefault -> js_ColorSpaceConversionDefault
+    )
+
+instance FromJSVal ColorSpaceConversion where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ColorSpaceConversionNone, ColorSpaceConversionNone), (js_ColorSpaceConversionDefault, ColorSpaceConversionDefault)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ColorSpaceConversion value") P.return
+
+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 ToJSVal CompositeOperation where
+  toJSVal x = toJSVal (case x of
+    CompositeOperationReplace -> js_CompositeOperationReplace
+    CompositeOperationAdd -> js_CompositeOperationAdd
+    CompositeOperationAccumulate -> js_CompositeOperationAccumulate
+    )
+
+instance FromJSVal CompositeOperation where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CompositeOperationReplace, CompositeOperationReplace), (js_CompositeOperationAdd, CompositeOperationAdd), (js_CompositeOperationAccumulate, CompositeOperationAccumulate)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CompositeOperation value") P.return
+
+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 ToJSVal CompressionFormat where
+  toJSVal x = toJSVal (case x of
+    CompressionFormatBrotli -> js_CompressionFormatBrotli
+    CompressionFormatDeflate -> js_CompressionFormatDeflate
+    CompressionFormatDeflateRaw -> js_CompressionFormatDeflateRaw
+    CompressionFormatGzip -> js_CompressionFormatGzip
+    )
+
+instance FromJSVal CompressionFormat where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CompressionFormatBrotli, CompressionFormatBrotli), (js_CompressionFormatDeflate, CompressionFormatDeflate), (js_CompressionFormatDeflateRaw, CompressionFormatDeflateRaw), (js_CompressionFormatGzip, CompressionFormatGzip)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CompressionFormat value") P.return
+
+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 ToJSVal CookieSameSite where
+  toJSVal x = toJSVal (case x of
+    CookieSameSiteStrict -> js_CookieSameSiteStrict
+    CookieSameSiteLax -> js_CookieSameSiteLax
+    CookieSameSiteNone -> js_CookieSameSiteNone
+    )
+
+instance FromJSVal CookieSameSite where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CookieSameSiteStrict, CookieSameSiteStrict), (js_CookieSameSiteLax, CookieSameSiteLax), (js_CookieSameSiteNone, CookieSameSiteNone)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CookieSameSite value") P.return
+
+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 ToJSVal CredentialMediationRequirement where
+  toJSVal x = toJSVal (case x of
+    CredentialMediationRequirementSilent -> js_CredentialMediationRequirementSilent
+    CredentialMediationRequirementOptional -> js_CredentialMediationRequirementOptional
+    CredentialMediationRequirementConditional -> js_CredentialMediationRequirementConditional
+    CredentialMediationRequirementRequired -> js_CredentialMediationRequirementRequired
+    )
+
+instance FromJSVal CredentialMediationRequirement where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_CredentialMediationRequirementSilent, CredentialMediationRequirementSilent), (js_CredentialMediationRequirementOptional, CredentialMediationRequirementOptional), (js_CredentialMediationRequirementConditional, CredentialMediationRequirementConditional), (js_CredentialMediationRequirementRequired, CredentialMediationRequirementRequired)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected CredentialMediationRequirement value") P.return
+
+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 ToJSVal DOMParserSupportedType where
+  toJSVal x = toJSVal (case x of
+    DOMParserSupportedTypeTextHtml -> js_DOMParserSupportedTypeTextHtml
+    DOMParserSupportedTypeTextXml -> js_DOMParserSupportedTypeTextXml
+    DOMParserSupportedTypeApplicationXml -> js_DOMParserSupportedTypeApplicationXml
+    DOMParserSupportedTypeApplicationXhtmlXml -> js_DOMParserSupportedTypeApplicationXhtmlXml
+    DOMParserSupportedTypeImageSvgXml -> js_DOMParserSupportedTypeImageSvgXml
+    )
+
+instance FromJSVal DOMParserSupportedType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_DOMParserSupportedTypeTextHtml, DOMParserSupportedTypeTextHtml), (js_DOMParserSupportedTypeTextXml, DOMParserSupportedTypeTextXml), (js_DOMParserSupportedTypeApplicationXml, DOMParserSupportedTypeApplicationXml), (js_DOMParserSupportedTypeApplicationXhtmlXml, DOMParserSupportedTypeApplicationXhtmlXml), (js_DOMParserSupportedTypeImageSvgXml, DOMParserSupportedTypeImageSvgXml)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected DOMParserSupportedType value") P.return
+
+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 ToJSVal DigitalCredentialIssuanceProtocol where
+  toJSVal x = toJSVal (case x of
+    DigitalCredentialIssuanceProtocolOpenid4vciV1 -> js_DigitalCredentialIssuanceProtocolOpenid4vciV1
+    )
+
+instance FromJSVal DigitalCredentialIssuanceProtocol where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_DigitalCredentialIssuanceProtocolOpenid4vciV1, DigitalCredentialIssuanceProtocolOpenid4vciV1)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected DigitalCredentialIssuanceProtocol value") P.return
+
+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 ToJSVal DigitalCredentialPresentationProtocol where
+  toJSVal x = toJSVal (case x of
+    DigitalCredentialPresentationProtocolOpenid4vpV1Unsigned -> js_DigitalCredentialPresentationProtocolOpenid4vpV1Unsigned
+    DigitalCredentialPresentationProtocolOpenid4vpV1Signed -> js_DigitalCredentialPresentationProtocolOpenid4vpV1Signed
+    DigitalCredentialPresentationProtocolOpenid4vpV1Multisigned -> js_DigitalCredentialPresentationProtocolOpenid4vpV1Multisigned
+    DigitalCredentialPresentationProtocolOrgIsoMdoc -> js_DigitalCredentialPresentationProtocolOrgIsoMdoc
+    )
+
+instance FromJSVal DigitalCredentialPresentationProtocol where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_DigitalCredentialPresentationProtocolOpenid4vpV1Unsigned, DigitalCredentialPresentationProtocolOpenid4vpV1Unsigned), (js_DigitalCredentialPresentationProtocolOpenid4vpV1Signed, DigitalCredentialPresentationProtocolOpenid4vpV1Signed), (js_DigitalCredentialPresentationProtocolOpenid4vpV1Multisigned, DigitalCredentialPresentationProtocolOpenid4vpV1Multisigned), (js_DigitalCredentialPresentationProtocolOrgIsoMdoc, DigitalCredentialPresentationProtocolOrgIsoMdoc)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected DigitalCredentialPresentationProtocol value") P.return
+
+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 ToJSVal DirectionSetting where
+  toJSVal x = toJSVal (case x of
+    DirectionSetting -> js_DirectionSetting
+    DirectionSettingRl -> js_DirectionSettingRl
+    DirectionSettingLr -> js_DirectionSettingLr
+    )
+
+instance FromJSVal DirectionSetting where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_DirectionSetting, DirectionSetting), (js_DirectionSettingRl, DirectionSettingRl), (js_DirectionSettingLr, DirectionSettingLr)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected DirectionSetting value") P.return
+
+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 ToJSVal DistanceModelType where
+  toJSVal x = toJSVal (case x of
+    DistanceModelTypeLinear -> js_DistanceModelTypeLinear
+    DistanceModelTypeInverse -> js_DistanceModelTypeInverse
+    DistanceModelTypeExponential -> js_DistanceModelTypeExponential
+    )
+
+instance FromJSVal DistanceModelType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_DistanceModelTypeLinear, DistanceModelTypeLinear), (js_DistanceModelTypeInverse, DistanceModelTypeInverse), (js_DistanceModelTypeExponential, DistanceModelTypeExponential)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected DistanceModelType value") P.return
+
+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 ToJSVal DocumentReadyState where
+  toJSVal x = toJSVal (case x of
+    DocumentReadyStateLoading -> js_DocumentReadyStateLoading
+    DocumentReadyStateInteractive -> js_DocumentReadyStateInteractive
+    DocumentReadyStateComplete -> js_DocumentReadyStateComplete
+    )
+
+instance FromJSVal DocumentReadyState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_DocumentReadyStateLoading, DocumentReadyStateLoading), (js_DocumentReadyStateInteractive, DocumentReadyStateInteractive), (js_DocumentReadyStateComplete, DocumentReadyStateComplete)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected DocumentReadyState value") P.return
+
+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 ToJSVal DocumentVisibilityState where
+  toJSVal x = toJSVal (case x of
+    DocumentVisibilityStateVisible -> js_DocumentVisibilityStateVisible
+    DocumentVisibilityStateHidden -> js_DocumentVisibilityStateHidden
+    )
+
+instance FromJSVal DocumentVisibilityState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_DocumentVisibilityStateVisible, DocumentVisibilityStateVisible), (js_DocumentVisibilityStateHidden, DocumentVisibilityStateHidden)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected DocumentVisibilityState value") P.return
+
+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 ToJSVal EncodedAudioChunkType where
+  toJSVal x = toJSVal (case x of
+    EncodedAudioChunkTypeKey -> js_EncodedAudioChunkTypeKey
+    EncodedAudioChunkTypeDelta -> js_EncodedAudioChunkTypeDelta
+    )
+
+instance FromJSVal EncodedAudioChunkType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_EncodedAudioChunkTypeKey, EncodedAudioChunkTypeKey), (js_EncodedAudioChunkTypeDelta, EncodedAudioChunkTypeDelta)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected EncodedAudioChunkType value") P.return
+
+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 ToJSVal EncodedVideoChunkType where
+  toJSVal x = toJSVal (case x of
+    EncodedVideoChunkTypeKey -> js_EncodedVideoChunkTypeKey
+    EncodedVideoChunkTypeDelta -> js_EncodedVideoChunkTypeDelta
+    )
+
+instance FromJSVal EncodedVideoChunkType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_EncodedVideoChunkTypeKey, EncodedVideoChunkTypeKey), (js_EncodedVideoChunkTypeDelta, EncodedVideoChunkTypeDelta)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected EncodedVideoChunkType value") P.return
+
+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 ToJSVal EndOfStreamError where
+  toJSVal x = toJSVal (case x of
+    EndOfStreamErrorNetwork -> js_EndOfStreamErrorNetwork
+    EndOfStreamErrorDecode -> js_EndOfStreamErrorDecode
+    )
+
+instance FromJSVal EndOfStreamError where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_EndOfStreamErrorNetwork, EndOfStreamErrorNetwork), (js_EndOfStreamErrorDecode, EndOfStreamErrorDecode)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected EndOfStreamError value") P.return
+
+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 ToJSVal EndingType where
+  toJSVal x = toJSVal (case x of
+    EndingTypeTransparent -> js_EndingTypeTransparent
+    EndingTypeNative -> js_EndingTypeNative
+    )
+
+instance FromJSVal EndingType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_EndingTypeTransparent, EndingTypeTransparent), (js_EndingTypeNative, EndingTypeNative)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected EndingType value") P.return
+
+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 ToJSVal FileSystemHandleKind where
+  toJSVal x = toJSVal (case x of
+    FileSystemHandleKindFile -> js_FileSystemHandleKindFile
+    FileSystemHandleKindDirectory -> js_FileSystemHandleKindDirectory
+    )
+
+instance FromJSVal FileSystemHandleKind where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_FileSystemHandleKindFile, FileSystemHandleKindFile), (js_FileSystemHandleKindDirectory, FileSystemHandleKindDirectory)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected FileSystemHandleKind value") P.return
+
+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 ToJSVal FillLightMode where
+  toJSVal x = toJSVal (case x of
+    FillLightModeAuto -> js_FillLightModeAuto
+    FillLightModeOff -> js_FillLightModeOff
+    FillLightModeFlash -> js_FillLightModeFlash
+    )
+
+instance FromJSVal FillLightMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_FillLightModeAuto, FillLightModeAuto), (js_FillLightModeOff, FillLightModeOff), (js_FillLightModeFlash, FillLightModeFlash)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected FillLightMode value") P.return
+
+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 ToJSVal FillMode where
+  toJSVal x = toJSVal (case x of
+    FillModeNone -> js_FillModeNone
+    FillModeForwards -> js_FillModeForwards
+    FillModeBackwards -> js_FillModeBackwards
+    FillModeBoth -> js_FillModeBoth
+    FillModeAuto -> js_FillModeAuto
+    )
+
+instance FromJSVal FillMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_FillModeNone, FillModeNone), (js_FillModeForwards, FillModeForwards), (js_FillModeBackwards, FillModeBackwards), (js_FillModeBoth, FillModeBoth), (js_FillModeAuto, FillModeAuto)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected FillMode value") P.return
+
+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 ToJSVal FlowControlType where
+  toJSVal x = toJSVal (case x of
+    FlowControlTypeNone -> js_FlowControlTypeNone
+    FlowControlTypeHardware -> js_FlowControlTypeHardware
+    )
+
+instance FromJSVal FlowControlType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_FlowControlTypeNone, FlowControlTypeNone), (js_FlowControlTypeHardware, FlowControlTypeHardware)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected FlowControlType value") P.return
+
+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 ToJSVal FontFaceLoadStatus where
+  toJSVal x = toJSVal (case x of
+    FontFaceLoadStatusUnloaded -> js_FontFaceLoadStatusUnloaded
+    FontFaceLoadStatusLoading -> js_FontFaceLoadStatusLoading
+    FontFaceLoadStatusLoaded -> js_FontFaceLoadStatusLoaded
+    FontFaceLoadStatusError -> js_FontFaceLoadStatusError
+    )
+
+instance FromJSVal FontFaceLoadStatus where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_FontFaceLoadStatusUnloaded, FontFaceLoadStatusUnloaded), (js_FontFaceLoadStatusLoading, FontFaceLoadStatusLoading), (js_FontFaceLoadStatusLoaded, FontFaceLoadStatusLoaded), (js_FontFaceLoadStatusError, FontFaceLoadStatusError)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected FontFaceLoadStatus value") P.return
+
+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 ToJSVal FontFaceSetLoadStatus where
+  toJSVal x = toJSVal (case x of
+    FontFaceSetLoadStatusLoading -> js_FontFaceSetLoadStatusLoading
+    FontFaceSetLoadStatusLoaded -> js_FontFaceSetLoadStatusLoaded
+    )
+
+instance FromJSVal FontFaceSetLoadStatus where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_FontFaceSetLoadStatusLoading, FontFaceSetLoadStatusLoading), (js_FontFaceSetLoadStatusLoaded, FontFaceSetLoadStatusLoaded)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected FontFaceSetLoadStatus value") P.return
+
+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 ToJSVal FrameType where
+  toJSVal x = toJSVal (case x of
+    FrameTypeAuxiliary -> js_FrameTypeAuxiliary
+    FrameTypeTopLevel -> js_FrameTypeTopLevel
+    FrameTypeNested -> js_FrameTypeNested
+    FrameTypeNone -> js_FrameTypeNone
+    )
+
+instance FromJSVal FrameType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_FrameTypeAuxiliary, FrameTypeAuxiliary), (js_FrameTypeTopLevel, FrameTypeTopLevel), (js_FrameTypeNested, FrameTypeNested), (js_FrameTypeNone, FrameTypeNone)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected FrameType value") P.return
+
+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 ToJSVal FullscreenKeyboardLock where
+  toJSVal x = toJSVal (case x of
+    FullscreenKeyboardLockBrowser -> js_FullscreenKeyboardLockBrowser
+    FullscreenKeyboardLockNone -> js_FullscreenKeyboardLockNone
+    )
+
+instance FromJSVal FullscreenKeyboardLock where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_FullscreenKeyboardLockBrowser, FullscreenKeyboardLockBrowser), (js_FullscreenKeyboardLockNone, FullscreenKeyboardLockNone)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected FullscreenKeyboardLock value") P.return
+
+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 ToJSVal FullscreenNavigationUI where
+  toJSVal x = toJSVal (case x of
+    FullscreenNavigationUIAuto -> js_FullscreenNavigationUIAuto
+    FullscreenNavigationUIShow -> js_FullscreenNavigationUIShow
+    FullscreenNavigationUIHide -> js_FullscreenNavigationUIHide
+    )
+
+instance FromJSVal FullscreenNavigationUI where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_FullscreenNavigationUIAuto, FullscreenNavigationUIAuto), (js_FullscreenNavigationUIShow, FullscreenNavigationUIShow), (js_FullscreenNavigationUIHide, FullscreenNavigationUIHide)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected FullscreenNavigationUI value") P.return
+
+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 ToJSVal GPUAddressMode where
+  toJSVal x = toJSVal (case x of
+    GPUAddressModeClampToEdge -> js_GPUAddressModeClampToEdge
+    GPUAddressModeRepeat -> js_GPUAddressModeRepeat
+    GPUAddressModeMirrorRepeat -> js_GPUAddressModeMirrorRepeat
+    )
+
+instance FromJSVal GPUAddressMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUAddressModeClampToEdge, GPUAddressModeClampToEdge), (js_GPUAddressModeRepeat, GPUAddressModeRepeat), (js_GPUAddressModeMirrorRepeat, GPUAddressModeMirrorRepeat)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUAddressMode value") P.return
+
+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 ToJSVal GPUAutoLayoutMode where
+  toJSVal x = toJSVal (case x of
+    GPUAutoLayoutModeAuto -> js_GPUAutoLayoutModeAuto
+    )
+
+instance FromJSVal GPUAutoLayoutMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUAutoLayoutModeAuto, GPUAutoLayoutModeAuto)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUAutoLayoutMode value") P.return
+
+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 ToJSVal GPUBlendFactor where
+  toJSVal x = toJSVal (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 FromJSVal GPUBlendFactor where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUBlendFactor value") P.return
+
+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 ToJSVal GPUBlendOperation where
+  toJSVal x = toJSVal (case x of
+    GPUBlendOperationAdd -> js_GPUBlendOperationAdd
+    GPUBlendOperationSubtract -> js_GPUBlendOperationSubtract
+    GPUBlendOperationReverseSubtract -> js_GPUBlendOperationReverseSubtract
+    GPUBlendOperationMin -> js_GPUBlendOperationMin
+    GPUBlendOperationMax -> js_GPUBlendOperationMax
+    )
+
+instance FromJSVal GPUBlendOperation where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUBlendOperationAdd, GPUBlendOperationAdd), (js_GPUBlendOperationSubtract, GPUBlendOperationSubtract), (js_GPUBlendOperationReverseSubtract, GPUBlendOperationReverseSubtract), (js_GPUBlendOperationMin, GPUBlendOperationMin), (js_GPUBlendOperationMax, GPUBlendOperationMax)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUBlendOperation value") P.return
+
+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 ToJSVal GPUBufferBindingType where
+  toJSVal x = toJSVal (case x of
+    GPUBufferBindingTypeUniform -> js_GPUBufferBindingTypeUniform
+    GPUBufferBindingTypeStorage -> js_GPUBufferBindingTypeStorage
+    GPUBufferBindingTypeReadOnlyStorage -> js_GPUBufferBindingTypeReadOnlyStorage
+    )
+
+instance FromJSVal GPUBufferBindingType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUBufferBindingTypeUniform, GPUBufferBindingTypeUniform), (js_GPUBufferBindingTypeStorage, GPUBufferBindingTypeStorage), (js_GPUBufferBindingTypeReadOnlyStorage, GPUBufferBindingTypeReadOnlyStorage)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUBufferBindingType value") P.return
+
+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 ToJSVal GPUBufferMapState where
+  toJSVal x = toJSVal (case x of
+    GPUBufferMapStateUnmapped -> js_GPUBufferMapStateUnmapped
+    GPUBufferMapStatePending -> js_GPUBufferMapStatePending
+    GPUBufferMapStateMapped -> js_GPUBufferMapStateMapped
+    )
+
+instance FromJSVal GPUBufferMapState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUBufferMapStateUnmapped, GPUBufferMapStateUnmapped), (js_GPUBufferMapStatePending, GPUBufferMapStatePending), (js_GPUBufferMapStateMapped, GPUBufferMapStateMapped)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUBufferMapState value") P.return
+
+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 ToJSVal GPUCanvasAlphaMode where
+  toJSVal x = toJSVal (case x of
+    GPUCanvasAlphaModeOpaque -> js_GPUCanvasAlphaModeOpaque
+    GPUCanvasAlphaModePremultiplied -> js_GPUCanvasAlphaModePremultiplied
+    )
+
+instance FromJSVal GPUCanvasAlphaMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUCanvasAlphaModeOpaque, GPUCanvasAlphaModeOpaque), (js_GPUCanvasAlphaModePremultiplied, GPUCanvasAlphaModePremultiplied)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUCanvasAlphaMode value") P.return
+
+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 ToJSVal GPUCanvasToneMappingMode where
+  toJSVal x = toJSVal (case x of
+    GPUCanvasToneMappingModeStandard -> js_GPUCanvasToneMappingModeStandard
+    GPUCanvasToneMappingModeExtended -> js_GPUCanvasToneMappingModeExtended
+    )
+
+instance FromJSVal GPUCanvasToneMappingMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUCanvasToneMappingModeStandard, GPUCanvasToneMappingModeStandard), (js_GPUCanvasToneMappingModeExtended, GPUCanvasToneMappingModeExtended)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUCanvasToneMappingMode value") P.return
+
+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 ToJSVal GPUCompareFunction where
+  toJSVal x = toJSVal (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 FromJSVal GPUCompareFunction where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUCompareFunction value") P.return
+
+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 ToJSVal GPUCompilationMessageType where
+  toJSVal x = toJSVal (case x of
+    GPUCompilationMessageTypeError -> js_GPUCompilationMessageTypeError
+    GPUCompilationMessageTypeWarning -> js_GPUCompilationMessageTypeWarning
+    GPUCompilationMessageTypeInfo -> js_GPUCompilationMessageTypeInfo
+    )
+
+instance FromJSVal GPUCompilationMessageType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUCompilationMessageTypeError, GPUCompilationMessageTypeError), (js_GPUCompilationMessageTypeWarning, GPUCompilationMessageTypeWarning), (js_GPUCompilationMessageTypeInfo, GPUCompilationMessageTypeInfo)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUCompilationMessageType value") P.return
+
+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 ToJSVal GPUCullMode where
+  toJSVal x = toJSVal (case x of
+    GPUCullModeNone -> js_GPUCullModeNone
+    GPUCullModeFront -> js_GPUCullModeFront
+    GPUCullModeBack -> js_GPUCullModeBack
+    )
+
+instance FromJSVal GPUCullMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUCullModeNone, GPUCullModeNone), (js_GPUCullModeFront, GPUCullModeFront), (js_GPUCullModeBack, GPUCullModeBack)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUCullMode value") P.return
+
+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 ToJSVal GPUDeviceLostReason where
+  toJSVal x = toJSVal (case x of
+    GPUDeviceLostReasonUnknown -> js_GPUDeviceLostReasonUnknown
+    GPUDeviceLostReasonDestroyed -> js_GPUDeviceLostReasonDestroyed
+    )
+
+instance FromJSVal GPUDeviceLostReason where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUDeviceLostReasonUnknown, GPUDeviceLostReasonUnknown), (js_GPUDeviceLostReasonDestroyed, GPUDeviceLostReasonDestroyed)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUDeviceLostReason value") P.return
+
+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 ToJSVal GPUErrorFilter where
+  toJSVal x = toJSVal (case x of
+    GPUErrorFilterValidation -> js_GPUErrorFilterValidation
+    GPUErrorFilterOutOfMemory -> js_GPUErrorFilterOutOfMemory
+    GPUErrorFilterInternal -> js_GPUErrorFilterInternal
+    )
+
+instance FromJSVal GPUErrorFilter where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUErrorFilterValidation, GPUErrorFilterValidation), (js_GPUErrorFilterOutOfMemory, GPUErrorFilterOutOfMemory), (js_GPUErrorFilterInternal, GPUErrorFilterInternal)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUErrorFilter value") P.return
+
+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 ToJSVal GPUFeatureName where
+  toJSVal x = toJSVal (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 FromJSVal GPUFeatureName where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUFeatureName value") P.return
+
+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 ToJSVal GPUFilterMode where
+  toJSVal x = toJSVal (case x of
+    GPUFilterModeNearest -> js_GPUFilterModeNearest
+    GPUFilterModeLinear -> js_GPUFilterModeLinear
+    )
+
+instance FromJSVal GPUFilterMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUFilterModeNearest, GPUFilterModeNearest), (js_GPUFilterModeLinear, GPUFilterModeLinear)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUFilterMode value") P.return
+
+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 ToJSVal GPUFrontFace where
+  toJSVal x = toJSVal (case x of
+    GPUFrontFaceCcw -> js_GPUFrontFaceCcw
+    GPUFrontFaceCw -> js_GPUFrontFaceCw
+    )
+
+instance FromJSVal GPUFrontFace where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUFrontFaceCcw, GPUFrontFaceCcw), (js_GPUFrontFaceCw, GPUFrontFaceCw)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUFrontFace value") P.return
+
+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 ToJSVal GPUIndexFormat where
+  toJSVal x = toJSVal (case x of
+    GPUIndexFormatUint16 -> js_GPUIndexFormatUint16
+    GPUIndexFormatUint32 -> js_GPUIndexFormatUint32
+    )
+
+instance FromJSVal GPUIndexFormat where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUIndexFormatUint16, GPUIndexFormatUint16), (js_GPUIndexFormatUint32, GPUIndexFormatUint32)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUIndexFormat value") P.return
+
+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 ToJSVal GPULoadOp where
+  toJSVal x = toJSVal (case x of
+    GPULoadOpLoad -> js_GPULoadOpLoad
+    GPULoadOpClear -> js_GPULoadOpClear
+    )
+
+instance FromJSVal GPULoadOp where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPULoadOpLoad, GPULoadOpLoad), (js_GPULoadOpClear, GPULoadOpClear)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPULoadOp value") P.return
+
+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 ToJSVal GPUMipmapFilterMode where
+  toJSVal x = toJSVal (case x of
+    GPUMipmapFilterModeNearest -> js_GPUMipmapFilterModeNearest
+    GPUMipmapFilterModeLinear -> js_GPUMipmapFilterModeLinear
+    )
+
+instance FromJSVal GPUMipmapFilterMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUMipmapFilterModeNearest, GPUMipmapFilterModeNearest), (js_GPUMipmapFilterModeLinear, GPUMipmapFilterModeLinear)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUMipmapFilterMode value") P.return
+
+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 ToJSVal GPUPipelineErrorReason where
+  toJSVal x = toJSVal (case x of
+    GPUPipelineErrorReasonValidation -> js_GPUPipelineErrorReasonValidation
+    GPUPipelineErrorReasonInternal -> js_GPUPipelineErrorReasonInternal
+    )
+
+instance FromJSVal GPUPipelineErrorReason where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUPipelineErrorReasonValidation, GPUPipelineErrorReasonValidation), (js_GPUPipelineErrorReasonInternal, GPUPipelineErrorReasonInternal)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUPipelineErrorReason value") P.return
+
+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 ToJSVal GPUPowerPreference where
+  toJSVal x = toJSVal (case x of
+    GPUPowerPreferenceLowPower -> js_GPUPowerPreferenceLowPower
+    GPUPowerPreferenceHighPerformance -> js_GPUPowerPreferenceHighPerformance
+    )
+
+instance FromJSVal GPUPowerPreference where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUPowerPreferenceLowPower, GPUPowerPreferenceLowPower), (js_GPUPowerPreferenceHighPerformance, GPUPowerPreferenceHighPerformance)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUPowerPreference value") P.return
+
+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 ToJSVal GPUPrimitiveTopology where
+  toJSVal x = toJSVal (case x of
+    GPUPrimitiveTopologyPointList -> js_GPUPrimitiveTopologyPointList
+    GPUPrimitiveTopologyLineList -> js_GPUPrimitiveTopologyLineList
+    GPUPrimitiveTopologyLineStrip -> js_GPUPrimitiveTopologyLineStrip
+    GPUPrimitiveTopologyTriangleList -> js_GPUPrimitiveTopologyTriangleList
+    GPUPrimitiveTopologyTriangleStrip -> js_GPUPrimitiveTopologyTriangleStrip
+    )
+
+instance FromJSVal GPUPrimitiveTopology where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUPrimitiveTopologyPointList, GPUPrimitiveTopologyPointList), (js_GPUPrimitiveTopologyLineList, GPUPrimitiveTopologyLineList), (js_GPUPrimitiveTopologyLineStrip, GPUPrimitiveTopologyLineStrip), (js_GPUPrimitiveTopologyTriangleList, GPUPrimitiveTopologyTriangleList), (js_GPUPrimitiveTopologyTriangleStrip, GPUPrimitiveTopologyTriangleStrip)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUPrimitiveTopology value") P.return
+
+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 ToJSVal GPUQueryType where
+  toJSVal x = toJSVal (case x of
+    GPUQueryTypeOcclusion -> js_GPUQueryTypeOcclusion
+    GPUQueryTypeTimestamp -> js_GPUQueryTypeTimestamp
+    )
+
+instance FromJSVal GPUQueryType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUQueryTypeOcclusion, GPUQueryTypeOcclusion), (js_GPUQueryTypeTimestamp, GPUQueryTypeTimestamp)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUQueryType value") P.return
+
+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 ToJSVal GPUSamplerBindingType where
+  toJSVal x = toJSVal (case x of
+    GPUSamplerBindingTypeFiltering -> js_GPUSamplerBindingTypeFiltering
+    GPUSamplerBindingTypeNonFiltering -> js_GPUSamplerBindingTypeNonFiltering
+    GPUSamplerBindingTypeComparison -> js_GPUSamplerBindingTypeComparison
+    )
+
+instance FromJSVal GPUSamplerBindingType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUSamplerBindingTypeFiltering, GPUSamplerBindingTypeFiltering), (js_GPUSamplerBindingTypeNonFiltering, GPUSamplerBindingTypeNonFiltering), (js_GPUSamplerBindingTypeComparison, GPUSamplerBindingTypeComparison)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUSamplerBindingType value") P.return
+
+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 ToJSVal GPUStencilOperation where
+  toJSVal x = toJSVal (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 FromJSVal GPUStencilOperation where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUStencilOperation value") P.return
+
+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 ToJSVal GPUStorageTextureAccess where
+  toJSVal x = toJSVal (case x of
+    GPUStorageTextureAccessWriteOnly -> js_GPUStorageTextureAccessWriteOnly
+    GPUStorageTextureAccessReadOnly -> js_GPUStorageTextureAccessReadOnly
+    GPUStorageTextureAccessReadWrite -> js_GPUStorageTextureAccessReadWrite
+    )
+
+instance FromJSVal GPUStorageTextureAccess where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUStorageTextureAccessWriteOnly, GPUStorageTextureAccessWriteOnly), (js_GPUStorageTextureAccessReadOnly, GPUStorageTextureAccessReadOnly), (js_GPUStorageTextureAccessReadWrite, GPUStorageTextureAccessReadWrite)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUStorageTextureAccess value") P.return
+
+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 ToJSVal GPUStoreOp where
+  toJSVal x = toJSVal (case x of
+    GPUStoreOpStore -> js_GPUStoreOpStore
+    GPUStoreOpDiscard -> js_GPUStoreOpDiscard
+    )
+
+instance FromJSVal GPUStoreOp where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUStoreOpStore, GPUStoreOpStore), (js_GPUStoreOpDiscard, GPUStoreOpDiscard)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUStoreOp value") P.return
+
+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 ToJSVal GPUTextureAspect where
+  toJSVal x = toJSVal (case x of
+    GPUTextureAspectAll -> js_GPUTextureAspectAll
+    GPUTextureAspectStencilOnly -> js_GPUTextureAspectStencilOnly
+    GPUTextureAspectDepthOnly -> js_GPUTextureAspectDepthOnly
+    )
+
+instance FromJSVal GPUTextureAspect where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUTextureAspectAll, GPUTextureAspectAll), (js_GPUTextureAspectStencilOnly, GPUTextureAspectStencilOnly), (js_GPUTextureAspectDepthOnly, GPUTextureAspectDepthOnly)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUTextureAspect value") P.return
+
+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 ToJSVal GPUTextureDimension where
+  toJSVal x = toJSVal (case x of
+    GPUTextureDimension1d -> js_GPUTextureDimension1d
+    GPUTextureDimension2d -> js_GPUTextureDimension2d
+    GPUTextureDimension3d -> js_GPUTextureDimension3d
+    )
+
+instance FromJSVal GPUTextureDimension where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUTextureDimension1d, GPUTextureDimension1d), (js_GPUTextureDimension2d, GPUTextureDimension2d), (js_GPUTextureDimension3d, GPUTextureDimension3d)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUTextureDimension value") P.return
+
+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 ToJSVal GPUTextureFormat where
+  toJSVal x = toJSVal (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 FromJSVal GPUTextureFormat where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUTextureFormat value") P.return
+
+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 ToJSVal GPUTextureSampleType where
+  toJSVal x = toJSVal (case x of
+    GPUTextureSampleTypeFloat -> js_GPUTextureSampleTypeFloat
+    GPUTextureSampleTypeUnfilterableFloat -> js_GPUTextureSampleTypeUnfilterableFloat
+    GPUTextureSampleTypeDepth -> js_GPUTextureSampleTypeDepth
+    GPUTextureSampleTypeSint -> js_GPUTextureSampleTypeSint
+    GPUTextureSampleTypeUint -> js_GPUTextureSampleTypeUint
+    )
+
+instance FromJSVal GPUTextureSampleType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUTextureSampleTypeFloat, GPUTextureSampleTypeFloat), (js_GPUTextureSampleTypeUnfilterableFloat, GPUTextureSampleTypeUnfilterableFloat), (js_GPUTextureSampleTypeDepth, GPUTextureSampleTypeDepth), (js_GPUTextureSampleTypeSint, GPUTextureSampleTypeSint), (js_GPUTextureSampleTypeUint, GPUTextureSampleTypeUint)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUTextureSampleType value") P.return
+
+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 ToJSVal GPUTextureViewDimension where
+  toJSVal x = toJSVal (case x of
+    GPUTextureViewDimension1d -> js_GPUTextureViewDimension1d
+    GPUTextureViewDimension2d -> js_GPUTextureViewDimension2d
+    GPUTextureViewDimension2dArray -> js_GPUTextureViewDimension2dArray
+    GPUTextureViewDimensionCube -> js_GPUTextureViewDimensionCube
+    GPUTextureViewDimensionCubeArray -> js_GPUTextureViewDimensionCubeArray
+    GPUTextureViewDimension3d -> js_GPUTextureViewDimension3d
+    )
+
+instance FromJSVal GPUTextureViewDimension where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUTextureViewDimension1d, GPUTextureViewDimension1d), (js_GPUTextureViewDimension2d, GPUTextureViewDimension2d), (js_GPUTextureViewDimension2dArray, GPUTextureViewDimension2dArray), (js_GPUTextureViewDimensionCube, GPUTextureViewDimensionCube), (js_GPUTextureViewDimensionCubeArray, GPUTextureViewDimensionCubeArray), (js_GPUTextureViewDimension3d, GPUTextureViewDimension3d)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUTextureViewDimension value") P.return
+
+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 ToJSVal GPUVertexFormat where
+  toJSVal x = toJSVal (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 FromJSVal GPUVertexFormat where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUVertexFormat value") P.return
+
+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 ToJSVal GPUVertexStepMode where
+  toJSVal x = toJSVal (case x of
+    GPUVertexStepModeVertex -> js_GPUVertexStepModeVertex
+    GPUVertexStepModeInstance -> js_GPUVertexStepModeInstance
+    )
+
+instance FromJSVal GPUVertexStepMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GPUVertexStepModeVertex, GPUVertexStepModeVertex), (js_GPUVertexStepModeInstance, GPUVertexStepModeInstance)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GPUVertexStepMode value") P.return
+
+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 ToJSVal GamepadHapticEffectType where
+  toJSVal x = toJSVal (case x of
+    GamepadHapticEffectTypeDualRumble -> js_GamepadHapticEffectTypeDualRumble
+    GamepadHapticEffectTypeTriggerRumble -> js_GamepadHapticEffectTypeTriggerRumble
+    )
+
+instance FromJSVal GamepadHapticEffectType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GamepadHapticEffectTypeDualRumble, GamepadHapticEffectTypeDualRumble), (js_GamepadHapticEffectTypeTriggerRumble, GamepadHapticEffectTypeTriggerRumble)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GamepadHapticEffectType value") P.return
+
+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 ToJSVal GamepadHapticsResult where
+  toJSVal x = toJSVal (case x of
+    GamepadHapticsResultComplete -> js_GamepadHapticsResultComplete
+    GamepadHapticsResultPreempted -> js_GamepadHapticsResultPreempted
+    )
+
+instance FromJSVal GamepadHapticsResult where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GamepadHapticsResultComplete, GamepadHapticsResultComplete), (js_GamepadHapticsResultPreempted, GamepadHapticsResultPreempted)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GamepadHapticsResult value") P.return
+
+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 ToJSVal GamepadMappingType where
+  toJSVal x = toJSVal (case x of
+    GamepadMappingType -> js_GamepadMappingType
+    GamepadMappingTypeStandard -> js_GamepadMappingTypeStandard
+    GamepadMappingTypeXrStandard -> js_GamepadMappingTypeXrStandard
+    )
+
+instance FromJSVal GamepadMappingType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GamepadMappingType, GamepadMappingType), (js_GamepadMappingTypeStandard, GamepadMappingTypeStandard), (js_GamepadMappingTypeXrStandard, GamepadMappingTypeXrStandard)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GamepadMappingType value") P.return
+
+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 ToJSVal GetUserMediaSemantics where
+  toJSVal x = toJSVal (case x of
+    GetUserMediaSemanticsBrowserChooses -> js_GetUserMediaSemanticsBrowserChooses
+    GetUserMediaSemanticsUserChooses -> js_GetUserMediaSemanticsUserChooses
+    )
+
+instance FromJSVal GetUserMediaSemantics where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_GetUserMediaSemanticsBrowserChooses, GetUserMediaSemanticsBrowserChooses), (js_GetUserMediaSemanticsUserChooses, GetUserMediaSemanticsUserChooses)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected GetUserMediaSemantics value") P.return
+
+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 ToJSVal HardwareAcceleration where
+  toJSVal x = toJSVal (case x of
+    HardwareAccelerationNoPreference -> js_HardwareAccelerationNoPreference
+    HardwareAccelerationPreferHardware -> js_HardwareAccelerationPreferHardware
+    HardwareAccelerationPreferSoftware -> js_HardwareAccelerationPreferSoftware
+    )
+
+instance FromJSVal HardwareAcceleration where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_HardwareAccelerationNoPreference, HardwareAccelerationNoPreference), (js_HardwareAccelerationPreferHardware, HardwareAccelerationPreferHardware), (js_HardwareAccelerationPreferSoftware, HardwareAccelerationPreferSoftware)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected HardwareAcceleration value") P.return
+
+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 ToJSVal HdrMetadataType where
+  toJSVal x = toJSVal (case x of
+    HdrMetadataTypeSmpteSt2086 -> js_HdrMetadataTypeSmpteSt2086
+    HdrMetadataTypeSmpteSt209410 -> js_HdrMetadataTypeSmpteSt209410
+    HdrMetadataTypeSmpteSt209440 -> js_HdrMetadataTypeSmpteSt209440
+    )
+
+instance FromJSVal HdrMetadataType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_HdrMetadataTypeSmpteSt2086, HdrMetadataTypeSmpteSt2086), (js_HdrMetadataTypeSmpteSt209410, HdrMetadataTypeSmpteSt209410), (js_HdrMetadataTypeSmpteSt209440, HdrMetadataTypeSmpteSt209440)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected HdrMetadataType value") P.return
+
+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 ToJSVal HevcBitstreamFormat where
+  toJSVal x = toJSVal (case x of
+    HevcBitstreamFormatAnnexb -> js_HevcBitstreamFormatAnnexb
+    HevcBitstreamFormatHevc -> js_HevcBitstreamFormatHevc
+    )
+
+instance FromJSVal HevcBitstreamFormat where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_HevcBitstreamFormatAnnexb, HevcBitstreamFormatAnnexb), (js_HevcBitstreamFormatHevc, HevcBitstreamFormatHevc)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected HevcBitstreamFormat value") P.return
+
+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 ToJSVal HighlightType where
+  toJSVal x = toJSVal (case x of
+    HighlightTypeHighlight -> js_HighlightTypeHighlight
+    HighlightTypeSpellingError -> js_HighlightTypeSpellingError
+    HighlightTypeGrammarError -> js_HighlightTypeGrammarError
+    )
+
+instance FromJSVal HighlightType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_HighlightTypeHighlight, HighlightTypeHighlight), (js_HighlightTypeSpellingError, HighlightTypeSpellingError), (js_HighlightTypeGrammarError, HighlightTypeGrammarError)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected HighlightType value") P.return
+
+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 ToJSVal IDBCursorDirection where
+  toJSVal x = toJSVal (case x of
+    IDBCursorDirectionNext -> js_IDBCursorDirectionNext
+    IDBCursorDirectionNextunique -> js_IDBCursorDirectionNextunique
+    IDBCursorDirectionPrev -> js_IDBCursorDirectionPrev
+    IDBCursorDirectionPrevunique -> js_IDBCursorDirectionPrevunique
+    )
+
+instance FromJSVal IDBCursorDirection where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_IDBCursorDirectionNext, IDBCursorDirectionNext), (js_IDBCursorDirectionNextunique, IDBCursorDirectionNextunique), (js_IDBCursorDirectionPrev, IDBCursorDirectionPrev), (js_IDBCursorDirectionPrevunique, IDBCursorDirectionPrevunique)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected IDBCursorDirection value") P.return
+
+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 ToJSVal IDBRequestReadyState where
+  toJSVal x = toJSVal (case x of
+    IDBRequestReadyStatePending -> js_IDBRequestReadyStatePending
+    IDBRequestReadyStateDone -> js_IDBRequestReadyStateDone
+    )
+
+instance FromJSVal IDBRequestReadyState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_IDBRequestReadyStatePending, IDBRequestReadyStatePending), (js_IDBRequestReadyStateDone, IDBRequestReadyStateDone)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected IDBRequestReadyState value") P.return
+
+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 ToJSVal IDBTransactionDurability where
+  toJSVal x = toJSVal (case x of
+    IDBTransactionDurabilityDefault -> js_IDBTransactionDurabilityDefault
+    IDBTransactionDurabilityStrict -> js_IDBTransactionDurabilityStrict
+    IDBTransactionDurabilityRelaxed -> js_IDBTransactionDurabilityRelaxed
+    )
+
+instance FromJSVal IDBTransactionDurability where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_IDBTransactionDurabilityDefault, IDBTransactionDurabilityDefault), (js_IDBTransactionDurabilityStrict, IDBTransactionDurabilityStrict), (js_IDBTransactionDurabilityRelaxed, IDBTransactionDurabilityRelaxed)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected IDBTransactionDurability value") P.return
+
+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 ToJSVal IDBTransactionMode where
+  toJSVal x = toJSVal (case x of
+    IDBTransactionModeReadonly -> js_IDBTransactionModeReadonly
+    IDBTransactionModeReadwrite -> js_IDBTransactionModeReadwrite
+    IDBTransactionModeVersionchange -> js_IDBTransactionModeVersionchange
+    )
+
+instance FromJSVal IDBTransactionMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_IDBTransactionModeReadonly, IDBTransactionModeReadonly), (js_IDBTransactionModeReadwrite, IDBTransactionModeReadwrite), (js_IDBTransactionModeVersionchange, IDBTransactionModeVersionchange)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected IDBTransactionMode value") P.return
+
+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 ToJSVal IPAddressSpace where
+  toJSVal x = toJSVal (case x of
+    IPAddressSpacePublic -> js_IPAddressSpacePublic
+    IPAddressSpaceLocal -> js_IPAddressSpaceLocal
+    IPAddressSpaceLoopback -> js_IPAddressSpaceLoopback
+    )
+
+instance FromJSVal IPAddressSpace where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_IPAddressSpacePublic, IPAddressSpacePublic), (js_IPAddressSpaceLocal, IPAddressSpaceLocal), (js_IPAddressSpaceLoopback, IPAddressSpaceLoopback)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected IPAddressSpace value") P.return
+
+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 ToJSVal IdentityCredentialRequestOptionsContext where
+  toJSVal x = toJSVal (case x of
+    IdentityCredentialRequestOptionsContextSignin -> js_IdentityCredentialRequestOptionsContextSignin
+    IdentityCredentialRequestOptionsContextSignup -> js_IdentityCredentialRequestOptionsContextSignup
+    IdentityCredentialRequestOptionsContextUse -> js_IdentityCredentialRequestOptionsContextUse
+    IdentityCredentialRequestOptionsContextContinue -> js_IdentityCredentialRequestOptionsContextContinue
+    )
+
+instance FromJSVal IdentityCredentialRequestOptionsContext where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_IdentityCredentialRequestOptionsContextSignin, IdentityCredentialRequestOptionsContextSignin), (js_IdentityCredentialRequestOptionsContextSignup, IdentityCredentialRequestOptionsContextSignup), (js_IdentityCredentialRequestOptionsContextUse, IdentityCredentialRequestOptionsContextUse), (js_IdentityCredentialRequestOptionsContextContinue, IdentityCredentialRequestOptionsContextContinue)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected IdentityCredentialRequestOptionsContext value") P.return
+
+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 ToJSVal IdentityCredentialRequestOptionsMode where
+  toJSVal x = toJSVal (case x of
+    IdentityCredentialRequestOptionsModeActive -> js_IdentityCredentialRequestOptionsModeActive
+    IdentityCredentialRequestOptionsModePassive -> js_IdentityCredentialRequestOptionsModePassive
+    )
+
+instance FromJSVal IdentityCredentialRequestOptionsMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_IdentityCredentialRequestOptionsModeActive, IdentityCredentialRequestOptionsModeActive), (js_IdentityCredentialRequestOptionsModePassive, IdentityCredentialRequestOptionsModePassive)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected IdentityCredentialRequestOptionsMode value") P.return
+
+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 ToJSVal ImageDataPixelFormat where
+  toJSVal x = toJSVal (case x of
+    ImageDataPixelFormatRgbaUnorm8 -> js_ImageDataPixelFormatRgbaUnorm8
+    ImageDataPixelFormatRgbaFloat16 -> js_ImageDataPixelFormatRgbaFloat16
+    )
+
+instance FromJSVal ImageDataPixelFormat where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ImageDataPixelFormatRgbaUnorm8, ImageDataPixelFormatRgbaUnorm8), (js_ImageDataPixelFormatRgbaFloat16, ImageDataPixelFormatRgbaFloat16)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ImageDataPixelFormat value") P.return
+
+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 ToJSVal ImageSmoothingQuality where
+  toJSVal x = toJSVal (case x of
+    ImageSmoothingQualityLow -> js_ImageSmoothingQualityLow
+    ImageSmoothingQualityMedium -> js_ImageSmoothingQualityMedium
+    ImageSmoothingQualityHigh -> js_ImageSmoothingQualityHigh
+    )
+
+instance FromJSVal ImageSmoothingQuality where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ImageSmoothingQualityLow, ImageSmoothingQualityLow), (js_ImageSmoothingQualityMedium, ImageSmoothingQualityMedium), (js_ImageSmoothingQualityHigh, ImageSmoothingQualityHigh)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ImageSmoothingQuality value") P.return
+
+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 ToJSVal IterationCompositeOperation where
+  toJSVal x = toJSVal (case x of
+    IterationCompositeOperationReplace -> js_IterationCompositeOperationReplace
+    IterationCompositeOperationAccumulate -> js_IterationCompositeOperationAccumulate
+    )
+
+instance FromJSVal IterationCompositeOperation where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_IterationCompositeOperationReplace, IterationCompositeOperationReplace), (js_IterationCompositeOperationAccumulate, IterationCompositeOperationAccumulate)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected IterationCompositeOperation value") P.return
+
+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 ToJSVal KeyFormat where
+  toJSVal x = toJSVal (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 FromJSVal KeyFormat where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected KeyFormat value") P.return
+
+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 ToJSVal KeyType where
+  toJSVal x = toJSVal (case x of
+    KeyTypePublic -> js_KeyTypePublic
+    KeyTypePrivate -> js_KeyTypePrivate
+    KeyTypeSecret -> js_KeyTypeSecret
+    )
+
+instance FromJSVal KeyType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_KeyTypePublic, KeyTypePublic), (js_KeyTypePrivate, KeyTypePrivate), (js_KeyTypeSecret, KeyTypeSecret)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected KeyType value") P.return
+
+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 ToJSVal KeyUsage where
+  toJSVal x = toJSVal (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 FromJSVal KeyUsage where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected KeyUsage value") P.return
+
+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 ToJSVal LatencyMode where
+  toJSVal x = toJSVal (case x of
+    LatencyModeQuality -> js_LatencyModeQuality
+    LatencyModeRealtime -> js_LatencyModeRealtime
+    )
+
+instance FromJSVal LatencyMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_LatencyModeQuality, LatencyModeQuality), (js_LatencyModeRealtime, LatencyModeRealtime)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected LatencyMode value") P.return
+
+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 ToJSVal LineAlignSetting where
+  toJSVal x = toJSVal (case x of
+    LineAlignSettingStart -> js_LineAlignSettingStart
+    LineAlignSettingCenter -> js_LineAlignSettingCenter
+    LineAlignSettingEnd -> js_LineAlignSettingEnd
+    )
+
+instance FromJSVal LineAlignSetting where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_LineAlignSettingStart, LineAlignSettingStart), (js_LineAlignSettingCenter, LineAlignSettingCenter), (js_LineAlignSettingEnd, LineAlignSettingEnd)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected LineAlignSetting value") P.return
+
+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 ToJSVal LockMode where
+  toJSVal x = toJSVal (case x of
+    LockModeShared -> js_LockModeShared
+    LockModeExclusive -> js_LockModeExclusive
+    )
+
+instance FromJSVal LockMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_LockModeShared, LockModeShared), (js_LockModeExclusive, LockModeExclusive)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected LockMode value") P.return
+
+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 ToJSVal LoginStatus where
+  toJSVal x = toJSVal (case x of
+    LoginStatusLoggedIn -> js_LoginStatusLoggedIn
+    LoginStatusLoggedOut -> js_LoginStatusLoggedOut
+    )
+
+instance FromJSVal LoginStatus where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_LoginStatusLoggedIn, LoginStatusLoggedIn), (js_LoginStatusLoggedOut, LoginStatusLoggedOut)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected LoginStatus value") P.return
+
+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 ToJSVal MIDIPortConnectionState where
+  toJSVal x = toJSVal (case x of
+    MIDIPortConnectionStateOpen -> js_MIDIPortConnectionStateOpen
+    MIDIPortConnectionStateClosed -> js_MIDIPortConnectionStateClosed
+    MIDIPortConnectionStatePending -> js_MIDIPortConnectionStatePending
+    )
+
+instance FromJSVal MIDIPortConnectionState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_MIDIPortConnectionStateOpen, MIDIPortConnectionStateOpen), (js_MIDIPortConnectionStateClosed, MIDIPortConnectionStateClosed), (js_MIDIPortConnectionStatePending, MIDIPortConnectionStatePending)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected MIDIPortConnectionState value") P.return
+
+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 ToJSVal MIDIPortDeviceState where
+  toJSVal x = toJSVal (case x of
+    MIDIPortDeviceStateDisconnected -> js_MIDIPortDeviceStateDisconnected
+    MIDIPortDeviceStateConnected -> js_MIDIPortDeviceStateConnected
+    )
+
+instance FromJSVal MIDIPortDeviceState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_MIDIPortDeviceStateDisconnected, MIDIPortDeviceStateDisconnected), (js_MIDIPortDeviceStateConnected, MIDIPortDeviceStateConnected)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected MIDIPortDeviceState value") P.return
+
+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 ToJSVal MIDIPortType where
+  toJSVal x = toJSVal (case x of
+    MIDIPortTypeInput -> js_MIDIPortTypeInput
+    MIDIPortTypeOutput -> js_MIDIPortTypeOutput
+    )
+
+instance FromJSVal MIDIPortType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_MIDIPortTypeInput, MIDIPortTypeInput), (js_MIDIPortTypeOutput, MIDIPortTypeOutput)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected MIDIPortType value") P.return
+
+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 ToJSVal MediaDecodingType where
+  toJSVal x = toJSVal (case x of
+    MediaDecodingTypeFile -> js_MediaDecodingTypeFile
+    MediaDecodingTypeMediaSource -> js_MediaDecodingTypeMediaSource
+    MediaDecodingTypeWebrtc -> js_MediaDecodingTypeWebrtc
+    )
+
+instance FromJSVal MediaDecodingType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_MediaDecodingTypeFile, MediaDecodingTypeFile), (js_MediaDecodingTypeMediaSource, MediaDecodingTypeMediaSource), (js_MediaDecodingTypeWebrtc, MediaDecodingTypeWebrtc)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected MediaDecodingType value") P.return
+
+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 ToJSVal MediaDeviceKind where
+  toJSVal x = toJSVal (case x of
+    MediaDeviceKindAudioinput -> js_MediaDeviceKindAudioinput
+    MediaDeviceKindAudiooutput -> js_MediaDeviceKindAudiooutput
+    MediaDeviceKindVideoinput -> js_MediaDeviceKindVideoinput
+    )
+
+instance FromJSVal MediaDeviceKind where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_MediaDeviceKindAudioinput, MediaDeviceKindAudioinput), (js_MediaDeviceKindAudiooutput, MediaDeviceKindAudiooutput), (js_MediaDeviceKindVideoinput, MediaDeviceKindVideoinput)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected MediaDeviceKind value") P.return
+
+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 ToJSVal MediaEncodingType where
+  toJSVal x = toJSVal (case x of
+    MediaEncodingTypeRecord -> js_MediaEncodingTypeRecord
+    MediaEncodingTypeWebrtc -> js_MediaEncodingTypeWebrtc
+    )
+
+instance FromJSVal MediaEncodingType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_MediaEncodingTypeRecord, MediaEncodingTypeRecord), (js_MediaEncodingTypeWebrtc, MediaEncodingTypeWebrtc)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected MediaEncodingType value") P.return
+
+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 ToJSVal MediaKeyMessageType where
+  toJSVal x = toJSVal (case x of
+    MediaKeyMessageTypeLicenseRequest -> js_MediaKeyMessageTypeLicenseRequest
+    MediaKeyMessageTypeLicenseRenewal -> js_MediaKeyMessageTypeLicenseRenewal
+    MediaKeyMessageTypeLicenseRelease -> js_MediaKeyMessageTypeLicenseRelease
+    MediaKeyMessageTypeIndividualizationRequest -> js_MediaKeyMessageTypeIndividualizationRequest
+    )
+
+instance FromJSVal MediaKeyMessageType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_MediaKeyMessageTypeLicenseRequest, MediaKeyMessageTypeLicenseRequest), (js_MediaKeyMessageTypeLicenseRenewal, MediaKeyMessageTypeLicenseRenewal), (js_MediaKeyMessageTypeLicenseRelease, MediaKeyMessageTypeLicenseRelease), (js_MediaKeyMessageTypeIndividualizationRequest, MediaKeyMessageTypeIndividualizationRequest)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected MediaKeyMessageType value") P.return
+
+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 ToJSVal MediaKeySessionClosedReason where
+  toJSVal x = toJSVal (case x of
+    MediaKeySessionClosedReasonInternalError -> js_MediaKeySessionClosedReasonInternalError
+    MediaKeySessionClosedReasonClosedByApplication -> js_MediaKeySessionClosedReasonClosedByApplication
+    MediaKeySessionClosedReasonReleaseAcknowledged -> js_MediaKeySessionClosedReasonReleaseAcknowledged
+    MediaKeySessionClosedReasonHardwareContextReset -> js_MediaKeySessionClosedReasonHardwareContextReset
+    MediaKeySessionClosedReasonResourceEvicted -> js_MediaKeySessionClosedReasonResourceEvicted
+    )
+
+instance FromJSVal MediaKeySessionClosedReason where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_MediaKeySessionClosedReasonInternalError, MediaKeySessionClosedReasonInternalError), (js_MediaKeySessionClosedReasonClosedByApplication, MediaKeySessionClosedReasonClosedByApplication), (js_MediaKeySessionClosedReasonReleaseAcknowledged, MediaKeySessionClosedReasonReleaseAcknowledged), (js_MediaKeySessionClosedReasonHardwareContextReset, MediaKeySessionClosedReasonHardwareContextReset), (js_MediaKeySessionClosedReasonResourceEvicted, MediaKeySessionClosedReasonResourceEvicted)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected MediaKeySessionClosedReason value") P.return
+
+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 ToJSVal MediaKeySessionType where
+  toJSVal x = toJSVal (case x of
+    MediaKeySessionTypeTemporary -> js_MediaKeySessionTypeTemporary
+    MediaKeySessionTypePersistentLicense -> js_MediaKeySessionTypePersistentLicense
+    )
+
+instance FromJSVal MediaKeySessionType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_MediaKeySessionTypeTemporary, MediaKeySessionTypeTemporary), (js_MediaKeySessionTypePersistentLicense, MediaKeySessionTypePersistentLicense)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected MediaKeySessionType value") P.return
+
+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 ToJSVal MediaKeyStatus where
+  toJSVal x = toJSVal (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 FromJSVal MediaKeyStatus where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected MediaKeyStatus value") P.return
+
+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 ToJSVal MediaKeysRequirement where
+  toJSVal x = toJSVal (case x of
+    MediaKeysRequirementRequired -> js_MediaKeysRequirementRequired
+    MediaKeysRequirementOptional -> js_MediaKeysRequirementOptional
+    MediaKeysRequirementNotAllowed -> js_MediaKeysRequirementNotAllowed
+    )
+
+instance FromJSVal MediaKeysRequirement where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_MediaKeysRequirementRequired, MediaKeysRequirementRequired), (js_MediaKeysRequirementOptional, MediaKeysRequirementOptional), (js_MediaKeysRequirementNotAllowed, MediaKeysRequirementNotAllowed)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected MediaKeysRequirement value") P.return
+
+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 ToJSVal MediaSessionAction where
+  toJSVal x = toJSVal (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 FromJSVal MediaSessionAction where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected MediaSessionAction value") P.return
+
+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 ToJSVal MediaSessionEnterPictureInPictureReason where
+  toJSVal x = toJSVal (case x of
+    MediaSessionEnterPictureInPictureReasonOther -> js_MediaSessionEnterPictureInPictureReasonOther
+    MediaSessionEnterPictureInPictureReasonUseraction -> js_MediaSessionEnterPictureInPictureReasonUseraction
+    MediaSessionEnterPictureInPictureReasonContentoccluded -> js_MediaSessionEnterPictureInPictureReasonContentoccluded
+    )
+
+instance FromJSVal MediaSessionEnterPictureInPictureReason where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_MediaSessionEnterPictureInPictureReasonOther, MediaSessionEnterPictureInPictureReasonOther), (js_MediaSessionEnterPictureInPictureReasonUseraction, MediaSessionEnterPictureInPictureReasonUseraction), (js_MediaSessionEnterPictureInPictureReasonContentoccluded, MediaSessionEnterPictureInPictureReasonContentoccluded)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected MediaSessionEnterPictureInPictureReason value") P.return
+
+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 ToJSVal MediaSessionPlaybackState where
+  toJSVal x = toJSVal (case x of
+    MediaSessionPlaybackStateNone -> js_MediaSessionPlaybackStateNone
+    MediaSessionPlaybackStatePaused -> js_MediaSessionPlaybackStatePaused
+    MediaSessionPlaybackStatePlaying -> js_MediaSessionPlaybackStatePlaying
+    )
+
+instance FromJSVal MediaSessionPlaybackState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_MediaSessionPlaybackStateNone, MediaSessionPlaybackStateNone), (js_MediaSessionPlaybackStatePaused, MediaSessionPlaybackStatePaused), (js_MediaSessionPlaybackStatePlaying, MediaSessionPlaybackStatePlaying)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected MediaSessionPlaybackState value") P.return
+
+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 ToJSVal MediaStreamTrackState where
+  toJSVal x = toJSVal (case x of
+    MediaStreamTrackStateLive -> js_MediaStreamTrackStateLive
+    MediaStreamTrackStateEnded -> js_MediaStreamTrackStateEnded
+    )
+
+instance FromJSVal MediaStreamTrackState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_MediaStreamTrackStateLive, MediaStreamTrackStateLive), (js_MediaStreamTrackStateEnded, MediaStreamTrackStateEnded)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected MediaStreamTrackState value") P.return
+
+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 ToJSVal MonitorTypeSurfacesEnum where
+  toJSVal x = toJSVal (case x of
+    MonitorTypeSurfacesEnumInclude -> js_MonitorTypeSurfacesEnumInclude
+    MonitorTypeSurfacesEnumExclude -> js_MonitorTypeSurfacesEnumExclude
+    )
+
+instance FromJSVal MonitorTypeSurfacesEnum where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_MonitorTypeSurfacesEnumInclude, MonitorTypeSurfacesEnumInclude), (js_MonitorTypeSurfacesEnumExclude, MonitorTypeSurfacesEnumExclude)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected MonitorTypeSurfacesEnum value") P.return
+
+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 ToJSVal NavigationFocusReset where
+  toJSVal x = toJSVal (case x of
+    NavigationFocusResetAfterTransition -> js_NavigationFocusResetAfterTransition
+    NavigationFocusResetManual -> js_NavigationFocusResetManual
+    )
+
+instance FromJSVal NavigationFocusReset where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_NavigationFocusResetAfterTransition, NavigationFocusResetAfterTransition), (js_NavigationFocusResetManual, NavigationFocusResetManual)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected NavigationFocusReset value") P.return
+
+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 ToJSVal NavigationHistoryBehavior where
+  toJSVal x = toJSVal (case x of
+    NavigationHistoryBehaviorAuto -> js_NavigationHistoryBehaviorAuto
+    NavigationHistoryBehaviorPush -> js_NavigationHistoryBehaviorPush
+    NavigationHistoryBehaviorReplace -> js_NavigationHistoryBehaviorReplace
+    )
+
+instance FromJSVal NavigationHistoryBehavior where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_NavigationHistoryBehaviorAuto, NavigationHistoryBehaviorAuto), (js_NavigationHistoryBehaviorPush, NavigationHistoryBehaviorPush), (js_NavigationHistoryBehaviorReplace, NavigationHistoryBehaviorReplace)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected NavigationHistoryBehavior value") P.return
+
+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 ToJSVal NavigationScrollBehavior where
+  toJSVal x = toJSVal (case x of
+    NavigationScrollBehaviorAfterTransition -> js_NavigationScrollBehaviorAfterTransition
+    NavigationScrollBehaviorManual -> js_NavigationScrollBehaviorManual
+    )
+
+instance FromJSVal NavigationScrollBehavior where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_NavigationScrollBehaviorAfterTransition, NavigationScrollBehaviorAfterTransition), (js_NavigationScrollBehaviorManual, NavigationScrollBehaviorManual)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected NavigationScrollBehavior value") P.return
+
+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 ToJSVal NavigationTimingType where
+  toJSVal x = toJSVal (case x of
+    NavigationTimingTypeNavigate -> js_NavigationTimingTypeNavigate
+    NavigationTimingTypeReload -> js_NavigationTimingTypeReload
+    NavigationTimingTypeBackForward -> js_NavigationTimingTypeBackForward
+    )
+
+instance FromJSVal NavigationTimingType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_NavigationTimingTypeNavigate, NavigationTimingTypeNavigate), (js_NavigationTimingTypeReload, NavigationTimingTypeReload), (js_NavigationTimingTypeBackForward, NavigationTimingTypeBackForward)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected NavigationTimingType value") P.return
+
+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 ToJSVal NavigationType where
+  toJSVal x = toJSVal (case x of
+    NavigationTypePush -> js_NavigationTypePush
+    NavigationTypeReplace -> js_NavigationTypeReplace
+    NavigationTypeReload -> js_NavigationTypeReload
+    NavigationTypeTraverse -> js_NavigationTypeTraverse
+    )
+
+instance FromJSVal NavigationType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_NavigationTypePush, NavigationTypePush), (js_NavigationTypeReplace, NavigationTypeReplace), (js_NavigationTypeReload, NavigationTypeReload), (js_NavigationTypeTraverse, NavigationTypeTraverse)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected NavigationType value") P.return
+
+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 ToJSVal NotificationDirection where
+  toJSVal x = toJSVal (case x of
+    NotificationDirectionAuto -> js_NotificationDirectionAuto
+    NotificationDirectionLtr -> js_NotificationDirectionLtr
+    NotificationDirectionRtl -> js_NotificationDirectionRtl
+    )
+
+instance FromJSVal NotificationDirection where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_NotificationDirectionAuto, NotificationDirectionAuto), (js_NotificationDirectionLtr, NotificationDirectionLtr), (js_NotificationDirectionRtl, NotificationDirectionRtl)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected NotificationDirection value") P.return
+
+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 ToJSVal NotificationPermission where
+  toJSVal x = toJSVal (case x of
+    NotificationPermissionDefault -> js_NotificationPermissionDefault
+    NotificationPermissionDenied -> js_NotificationPermissionDenied
+    NotificationPermissionGranted -> js_NotificationPermissionGranted
+    )
+
+instance FromJSVal NotificationPermission where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_NotificationPermissionDefault, NotificationPermissionDefault), (js_NotificationPermissionDenied, NotificationPermissionDenied), (js_NotificationPermissionGranted, NotificationPermissionGranted)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected NotificationPermission value") P.return
+
+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 ToJSVal OTPCredentialTransportType where
+  toJSVal x = toJSVal (case x of
+    OTPCredentialTransportTypeSms -> js_OTPCredentialTransportTypeSms
+    )
+
+instance FromJSVal OTPCredentialTransportType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_OTPCredentialTransportTypeSms, OTPCredentialTransportTypeSms)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected OTPCredentialTransportType value") P.return
+
+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 ToJSVal OffscreenRenderingContextId where
+  toJSVal x = toJSVal (case x of
+    OffscreenRenderingContextId2d -> js_OffscreenRenderingContextId2d
+    OffscreenRenderingContextIdBitmaprenderer -> js_OffscreenRenderingContextIdBitmaprenderer
+    OffscreenRenderingContextIdWebgl -> js_OffscreenRenderingContextIdWebgl
+    OffscreenRenderingContextIdWebgl2 -> js_OffscreenRenderingContextIdWebgl2
+    OffscreenRenderingContextIdWebgpu -> js_OffscreenRenderingContextIdWebgpu
+    )
+
+instance FromJSVal OffscreenRenderingContextId where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_OffscreenRenderingContextId2d, OffscreenRenderingContextId2d), (js_OffscreenRenderingContextIdBitmaprenderer, OffscreenRenderingContextIdBitmaprenderer), (js_OffscreenRenderingContextIdWebgl, OffscreenRenderingContextIdWebgl), (js_OffscreenRenderingContextIdWebgl2, OffscreenRenderingContextIdWebgl2), (js_OffscreenRenderingContextIdWebgpu, OffscreenRenderingContextIdWebgpu)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected OffscreenRenderingContextId value") P.return
+
+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 ToJSVal OperationType where
+  toJSVal x = toJSVal (case x of
+    OperationTypeTokenRequest -> js_OperationTypeTokenRequest
+    OperationTypeSendRedemptionRecord -> js_OperationTypeSendRedemptionRecord
+    OperationTypeTokenRedemption -> js_OperationTypeTokenRedemption
+    )
+
+instance FromJSVal OperationType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_OperationTypeTokenRequest, OperationTypeTokenRequest), (js_OperationTypeSendRedemptionRecord, OperationTypeSendRedemptionRecord), (js_OperationTypeTokenRedemption, OperationTypeTokenRedemption)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected OperationType value") P.return
+
+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 ToJSVal OpusApplication where
+  toJSVal x = toJSVal (case x of
+    OpusApplicationVoip -> js_OpusApplicationVoip
+    OpusApplicationAudio -> js_OpusApplicationAudio
+    OpusApplicationLowdelay -> js_OpusApplicationLowdelay
+    )
+
+instance FromJSVal OpusApplication where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_OpusApplicationVoip, OpusApplicationVoip), (js_OpusApplicationAudio, OpusApplicationAudio), (js_OpusApplicationLowdelay, OpusApplicationLowdelay)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected OpusApplication value") P.return
+
+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 ToJSVal OpusBitstreamFormat where
+  toJSVal x = toJSVal (case x of
+    OpusBitstreamFormatOpus -> js_OpusBitstreamFormatOpus
+    OpusBitstreamFormatOgg -> js_OpusBitstreamFormatOgg
+    )
+
+instance FromJSVal OpusBitstreamFormat where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_OpusBitstreamFormatOpus, OpusBitstreamFormatOpus), (js_OpusBitstreamFormatOgg, OpusBitstreamFormatOgg)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected OpusBitstreamFormat value") P.return
+
+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 ToJSVal OpusSignal where
+  toJSVal x = toJSVal (case x of
+    OpusSignalAuto -> js_OpusSignalAuto
+    OpusSignalMusic -> js_OpusSignalMusic
+    OpusSignalVoice -> js_OpusSignalVoice
+    )
+
+instance FromJSVal OpusSignal where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_OpusSignalAuto, OpusSignalAuto), (js_OpusSignalMusic, OpusSignalMusic), (js_OpusSignalVoice, OpusSignalVoice)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected OpusSignal value") P.return
+
+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 ToJSVal OrientationLockType where
+  toJSVal x = toJSVal (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 FromJSVal OrientationLockType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected OrientationLockType value") P.return
+
+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 ToJSVal OrientationType where
+  toJSVal x = toJSVal (case x of
+    OrientationTypePortraitPrimary -> js_OrientationTypePortraitPrimary
+    OrientationTypePortraitSecondary -> js_OrientationTypePortraitSecondary
+    OrientationTypeLandscapePrimary -> js_OrientationTypeLandscapePrimary
+    OrientationTypeLandscapeSecondary -> js_OrientationTypeLandscapeSecondary
+    )
+
+instance FromJSVal OrientationType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_OrientationTypePortraitPrimary, OrientationTypePortraitPrimary), (js_OrientationTypePortraitSecondary, OrientationTypePortraitSecondary), (js_OrientationTypeLandscapePrimary, OrientationTypeLandscapePrimary), (js_OrientationTypeLandscapeSecondary, OrientationTypeLandscapeSecondary)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected OrientationType value") P.return
+
+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 ToJSVal OscillatorType where
+  toJSVal x = toJSVal (case x of
+    OscillatorTypeSine -> js_OscillatorTypeSine
+    OscillatorTypeSquare -> js_OscillatorTypeSquare
+    OscillatorTypeSawtooth -> js_OscillatorTypeSawtooth
+    OscillatorTypeTriangle -> js_OscillatorTypeTriangle
+    OscillatorTypeCustom -> js_OscillatorTypeCustom
+    )
+
+instance FromJSVal OscillatorType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_OscillatorTypeSine, OscillatorTypeSine), (js_OscillatorTypeSquare, OscillatorTypeSquare), (js_OscillatorTypeSawtooth, OscillatorTypeSawtooth), (js_OscillatorTypeTriangle, OscillatorTypeTriangle), (js_OscillatorTypeCustom, OscillatorTypeCustom)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected OscillatorType value") P.return
+
+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 ToJSVal OverSampleType where
+  toJSVal x = toJSVal (case x of
+    OverSampleTypeNone -> js_OverSampleTypeNone
+    OverSampleType2x -> js_OverSampleType2x
+    OverSampleType4x -> js_OverSampleType4x
+    )
+
+instance FromJSVal OverSampleType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_OverSampleTypeNone, OverSampleTypeNone), (js_OverSampleType2x, OverSampleType2x), (js_OverSampleType4x, OverSampleType4x)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected OverSampleType value") P.return
+
+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 ToJSVal PanningModelType where
+  toJSVal x = toJSVal (case x of
+    PanningModelTypeEqualpower -> js_PanningModelTypeEqualpower
+    PanningModelTypeHRTF -> js_PanningModelTypeHRTF
+    )
+
+instance FromJSVal PanningModelType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_PanningModelTypeEqualpower, PanningModelTypeEqualpower), (js_PanningModelTypeHRTF, PanningModelTypeHRTF)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected PanningModelType value") P.return
+
+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 ToJSVal ParityType where
+  toJSVal x = toJSVal (case x of
+    ParityTypeNone -> js_ParityTypeNone
+    ParityTypeEven -> js_ParityTypeEven
+    ParityTypeOdd -> js_ParityTypeOdd
+    )
+
+instance FromJSVal ParityType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ParityTypeNone, ParityTypeNone), (js_ParityTypeEven, ParityTypeEven), (js_ParityTypeOdd, ParityTypeOdd)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ParityType value") P.return
+
+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 ToJSVal PaymentComplete where
+  toJSVal x = toJSVal (case x of
+    PaymentCompleteFail -> js_PaymentCompleteFail
+    PaymentCompleteSuccess -> js_PaymentCompleteSuccess
+    PaymentCompleteUnknown -> js_PaymentCompleteUnknown
+    )
+
+instance FromJSVal PaymentComplete where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_PaymentCompleteFail, PaymentCompleteFail), (js_PaymentCompleteSuccess, PaymentCompleteSuccess), (js_PaymentCompleteUnknown, PaymentCompleteUnknown)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected PaymentComplete value") P.return
+
+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 ToJSVal PaymentShippingType where
+  toJSVal x = toJSVal (case x of
+    PaymentShippingTypeShipping -> js_PaymentShippingTypeShipping
+    PaymentShippingTypeDelivery -> js_PaymentShippingTypeDelivery
+    PaymentShippingTypePickup -> js_PaymentShippingTypePickup
+    )
+
+instance FromJSVal PaymentShippingType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_PaymentShippingTypeShipping, PaymentShippingTypeShipping), (js_PaymentShippingTypeDelivery, PaymentShippingTypeDelivery), (js_PaymentShippingTypePickup, PaymentShippingTypePickup)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected PaymentShippingType value") P.return
+
+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 ToJSVal PermissionState where
+  toJSVal x = toJSVal (case x of
+    PermissionStateGranted -> js_PermissionStateGranted
+    PermissionStateDenied -> js_PermissionStateDenied
+    PermissionStatePrompt -> js_PermissionStatePrompt
+    )
+
+instance FromJSVal PermissionState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_PermissionStateGranted, PermissionStateGranted), (js_PermissionStateDenied, PermissionStateDenied), (js_PermissionStatePrompt, PermissionStatePrompt)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected PermissionState value") P.return
+
+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 ToJSVal PlaybackDirection where
+  toJSVal x = toJSVal (case x of
+    PlaybackDirectionNormal -> js_PlaybackDirectionNormal
+    PlaybackDirectionReverse -> js_PlaybackDirectionReverse
+    PlaybackDirectionAlternate -> js_PlaybackDirectionAlternate
+    PlaybackDirectionAlternateReverse -> js_PlaybackDirectionAlternateReverse
+    )
+
+instance FromJSVal PlaybackDirection where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_PlaybackDirectionNormal, PlaybackDirectionNormal), (js_PlaybackDirectionReverse, PlaybackDirectionReverse), (js_PlaybackDirectionAlternate, PlaybackDirectionAlternate), (js_PlaybackDirectionAlternateReverse, PlaybackDirectionAlternateReverse)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected PlaybackDirection value") P.return
+
+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 ToJSVal PositionAlignSetting where
+  toJSVal x = toJSVal (case x of
+    PositionAlignSettingLineLeft -> js_PositionAlignSettingLineLeft
+    PositionAlignSettingCenter -> js_PositionAlignSettingCenter
+    PositionAlignSettingLineRight -> js_PositionAlignSettingLineRight
+    PositionAlignSettingAuto -> js_PositionAlignSettingAuto
+    )
+
+instance FromJSVal PositionAlignSetting where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_PositionAlignSettingLineLeft, PositionAlignSettingLineLeft), (js_PositionAlignSettingCenter, PositionAlignSettingCenter), (js_PositionAlignSettingLineRight, PositionAlignSettingLineRight), (js_PositionAlignSettingAuto, PositionAlignSettingAuto)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected PositionAlignSetting value") P.return
+
+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 ToJSVal PredefinedColorSpace where
+  toJSVal x = toJSVal (case x of
+    PredefinedColorSpaceSrgb -> js_PredefinedColorSpaceSrgb
+    PredefinedColorSpaceSrgbLinear -> js_PredefinedColorSpaceSrgbLinear
+    PredefinedColorSpaceDisplayP3 -> js_PredefinedColorSpaceDisplayP3
+    PredefinedColorSpaceDisplayP3Linear -> js_PredefinedColorSpaceDisplayP3Linear
+    )
+
+instance FromJSVal PredefinedColorSpace where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_PredefinedColorSpaceSrgb, PredefinedColorSpaceSrgb), (js_PredefinedColorSpaceSrgbLinear, PredefinedColorSpaceSrgbLinear), (js_PredefinedColorSpaceDisplayP3, PredefinedColorSpaceDisplayP3), (js_PredefinedColorSpaceDisplayP3Linear, PredefinedColorSpaceDisplayP3Linear)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected PredefinedColorSpace value") P.return
+
+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 ToJSVal PresentationStyle where
+  toJSVal x = toJSVal (case x of
+    PresentationStyleUnspecified -> js_PresentationStyleUnspecified
+    PresentationStyleInline -> js_PresentationStyleInline
+    PresentationStyleAttachment -> js_PresentationStyleAttachment
+    )
+
+instance FromJSVal PresentationStyle where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_PresentationStyleUnspecified, PresentationStyleUnspecified), (js_PresentationStyleInline, PresentationStyleInline), (js_PresentationStyleAttachment, PresentationStyleAttachment)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected PresentationStyle value") P.return
+
+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 ToJSVal PushEncryptionKeyName where
+  toJSVal x = toJSVal (case x of
+    PushEncryptionKeyNameP256dh -> js_PushEncryptionKeyNameP256dh
+    PushEncryptionKeyNameAuth -> js_PushEncryptionKeyNameAuth
+    )
+
+instance FromJSVal PushEncryptionKeyName where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_PushEncryptionKeyNameP256dh, PushEncryptionKeyNameP256dh), (js_PushEncryptionKeyNameAuth, PushEncryptionKeyNameAuth)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected PushEncryptionKeyName value") P.return
+
+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 ToJSVal RTCBundlePolicy where
+  toJSVal x = toJSVal (case x of
+    RTCBundlePolicyBalanced -> js_RTCBundlePolicyBalanced
+    RTCBundlePolicyMaxCompat -> js_RTCBundlePolicyMaxCompat
+    RTCBundlePolicyMaxBundle -> js_RTCBundlePolicyMaxBundle
+    )
+
+instance FromJSVal RTCBundlePolicy where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCBundlePolicyBalanced, RTCBundlePolicyBalanced), (js_RTCBundlePolicyMaxCompat, RTCBundlePolicyMaxCompat), (js_RTCBundlePolicyMaxBundle, RTCBundlePolicyMaxBundle)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCBundlePolicy value") P.return
+
+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 ToJSVal RTCDataChannelState where
+  toJSVal x = toJSVal (case x of
+    RTCDataChannelStateConnecting -> js_RTCDataChannelStateConnecting
+    RTCDataChannelStateOpen -> js_RTCDataChannelStateOpen
+    RTCDataChannelStateClosing -> js_RTCDataChannelStateClosing
+    RTCDataChannelStateClosed -> js_RTCDataChannelStateClosed
+    )
+
+instance FromJSVal RTCDataChannelState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCDataChannelStateConnecting, RTCDataChannelStateConnecting), (js_RTCDataChannelStateOpen, RTCDataChannelStateOpen), (js_RTCDataChannelStateClosing, RTCDataChannelStateClosing), (js_RTCDataChannelStateClosed, RTCDataChannelStateClosed)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCDataChannelState value") P.return
+
+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 ToJSVal RTCDegradationPreference where
+  toJSVal x = toJSVal (case x of
+    RTCDegradationPreferenceMaintainFramerate -> js_RTCDegradationPreferenceMaintainFramerate
+    RTCDegradationPreferenceMaintainResolution -> js_RTCDegradationPreferenceMaintainResolution
+    RTCDegradationPreferenceBalanced -> js_RTCDegradationPreferenceBalanced
+    RTCDegradationPreferenceMaintainFramerateAndResolution -> js_RTCDegradationPreferenceMaintainFramerateAndResolution
+    )
+
+instance FromJSVal RTCDegradationPreference where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCDegradationPreferenceMaintainFramerate, RTCDegradationPreferenceMaintainFramerate), (js_RTCDegradationPreferenceMaintainResolution, RTCDegradationPreferenceMaintainResolution), (js_RTCDegradationPreferenceBalanced, RTCDegradationPreferenceBalanced), (js_RTCDegradationPreferenceMaintainFramerateAndResolution, RTCDegradationPreferenceMaintainFramerateAndResolution)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCDegradationPreference value") P.return
+
+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 ToJSVal RTCDtlsTransportState where
+  toJSVal x = toJSVal (case x of
+    RTCDtlsTransportStateNew -> js_RTCDtlsTransportStateNew
+    RTCDtlsTransportStateConnecting -> js_RTCDtlsTransportStateConnecting
+    RTCDtlsTransportStateConnected -> js_RTCDtlsTransportStateConnected
+    RTCDtlsTransportStateClosed -> js_RTCDtlsTransportStateClosed
+    RTCDtlsTransportStateFailed -> js_RTCDtlsTransportStateFailed
+    )
+
+instance FromJSVal RTCDtlsTransportState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCDtlsTransportStateNew, RTCDtlsTransportStateNew), (js_RTCDtlsTransportStateConnecting, RTCDtlsTransportStateConnecting), (js_RTCDtlsTransportStateConnected, RTCDtlsTransportStateConnected), (js_RTCDtlsTransportStateClosed, RTCDtlsTransportStateClosed), (js_RTCDtlsTransportStateFailed, RTCDtlsTransportStateFailed)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCDtlsTransportState value") P.return
+
+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 ToJSVal RTCErrorDetailType where
+  toJSVal x = toJSVal (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 FromJSVal RTCErrorDetailType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCErrorDetailTypeDataChannelFailure, RTCErrorDetailTypeDataChannelFailure), (js_RTCErrorDetailTypeDtlsFailure, RTCErrorDetailTypeDtlsFailure), (js_RTCErrorDetailTypeFingerprintFailure, RTCErrorDetailTypeFingerprintFailure), (js_RTCErrorDetailTypeSctpFailure, RTCErrorDetailTypeSctpFailure), (js_RTCErrorDetailTypeSdpSyntaxError, RTCErrorDetailTypeSdpSyntaxError), (js_RTCErrorDetailTypeHardwareEncoderNotAvailable, RTCErrorDetailTypeHardwareEncoderNotAvailable), (js_RTCErrorDetailTypeHardwareEncoderError, RTCErrorDetailTypeHardwareEncoderError)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCErrorDetailType value") P.return
+
+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 ToJSVal RTCIceCandidateType where
+  toJSVal x = toJSVal (case x of
+    RTCIceCandidateTypeHost -> js_RTCIceCandidateTypeHost
+    RTCIceCandidateTypeSrflx -> js_RTCIceCandidateTypeSrflx
+    RTCIceCandidateTypePrflx -> js_RTCIceCandidateTypePrflx
+    RTCIceCandidateTypeRelay -> js_RTCIceCandidateTypeRelay
+    )
+
+instance FromJSVal RTCIceCandidateType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCIceCandidateTypeHost, RTCIceCandidateTypeHost), (js_RTCIceCandidateTypeSrflx, RTCIceCandidateTypeSrflx), (js_RTCIceCandidateTypePrflx, RTCIceCandidateTypePrflx), (js_RTCIceCandidateTypeRelay, RTCIceCandidateTypeRelay)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCIceCandidateType value") P.return
+
+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 ToJSVal RTCIceComponent where
+  toJSVal x = toJSVal (case x of
+    RTCIceComponentRtp -> js_RTCIceComponentRtp
+    RTCIceComponentRtcp -> js_RTCIceComponentRtcp
+    )
+
+instance FromJSVal RTCIceComponent where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCIceComponentRtp, RTCIceComponentRtp), (js_RTCIceComponentRtcp, RTCIceComponentRtcp)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCIceComponent value") P.return
+
+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 ToJSVal RTCIceConnectionState where
+  toJSVal x = toJSVal (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 FromJSVal RTCIceConnectionState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCIceConnectionStateClosed, RTCIceConnectionStateClosed), (js_RTCIceConnectionStateFailed, RTCIceConnectionStateFailed), (js_RTCIceConnectionStateDisconnected, RTCIceConnectionStateDisconnected), (js_RTCIceConnectionStateNew, RTCIceConnectionStateNew), (js_RTCIceConnectionStateChecking, RTCIceConnectionStateChecking), (js_RTCIceConnectionStateCompleted, RTCIceConnectionStateCompleted), (js_RTCIceConnectionStateConnected, RTCIceConnectionStateConnected)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCIceConnectionState value") P.return
+
+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 ToJSVal RTCIceGathererState where
+  toJSVal x = toJSVal (case x of
+    RTCIceGathererStateNew -> js_RTCIceGathererStateNew
+    RTCIceGathererStateGathering -> js_RTCIceGathererStateGathering
+    RTCIceGathererStateComplete -> js_RTCIceGathererStateComplete
+    )
+
+instance FromJSVal RTCIceGathererState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCIceGathererStateNew, RTCIceGathererStateNew), (js_RTCIceGathererStateGathering, RTCIceGathererStateGathering), (js_RTCIceGathererStateComplete, RTCIceGathererStateComplete)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCIceGathererState value") P.return
+
+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 ToJSVal RTCIceGatheringState where
+  toJSVal x = toJSVal (case x of
+    RTCIceGatheringStateNew -> js_RTCIceGatheringStateNew
+    RTCIceGatheringStateGathering -> js_RTCIceGatheringStateGathering
+    RTCIceGatheringStateComplete -> js_RTCIceGatheringStateComplete
+    )
+
+instance FromJSVal RTCIceGatheringState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCIceGatheringStateNew, RTCIceGatheringStateNew), (js_RTCIceGatheringStateGathering, RTCIceGatheringStateGathering), (js_RTCIceGatheringStateComplete, RTCIceGatheringStateComplete)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCIceGatheringState value") P.return
+
+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 ToJSVal RTCIceProtocol where
+  toJSVal x = toJSVal (case x of
+    RTCIceProtocolUdp -> js_RTCIceProtocolUdp
+    RTCIceProtocolTcp -> js_RTCIceProtocolTcp
+    )
+
+instance FromJSVal RTCIceProtocol where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCIceProtocolUdp, RTCIceProtocolUdp), (js_RTCIceProtocolTcp, RTCIceProtocolTcp)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCIceProtocol value") P.return
+
+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 ToJSVal RTCIceRole where
+  toJSVal x = toJSVal (case x of
+    RTCIceRoleUnknown -> js_RTCIceRoleUnknown
+    RTCIceRoleControlling -> js_RTCIceRoleControlling
+    RTCIceRoleControlled -> js_RTCIceRoleControlled
+    )
+
+instance FromJSVal RTCIceRole where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCIceRoleUnknown, RTCIceRoleUnknown), (js_RTCIceRoleControlling, RTCIceRoleControlling), (js_RTCIceRoleControlled, RTCIceRoleControlled)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCIceRole value") P.return
+
+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 ToJSVal RTCIceServerTransportProtocol where
+  toJSVal x = toJSVal (case x of
+    RTCIceServerTransportProtocolUdp -> js_RTCIceServerTransportProtocolUdp
+    RTCIceServerTransportProtocolTcp -> js_RTCIceServerTransportProtocolTcp
+    RTCIceServerTransportProtocolTls -> js_RTCIceServerTransportProtocolTls
+    )
+
+instance FromJSVal RTCIceServerTransportProtocol where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCIceServerTransportProtocolUdp, RTCIceServerTransportProtocolUdp), (js_RTCIceServerTransportProtocolTcp, RTCIceServerTransportProtocolTcp), (js_RTCIceServerTransportProtocolTls, RTCIceServerTransportProtocolTls)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCIceServerTransportProtocol value") P.return
+
+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 ToJSVal RTCIceTcpCandidateType where
+  toJSVal x = toJSVal (case x of
+    RTCIceTcpCandidateTypeActive -> js_RTCIceTcpCandidateTypeActive
+    RTCIceTcpCandidateTypePassive -> js_RTCIceTcpCandidateTypePassive
+    RTCIceTcpCandidateTypeSo -> js_RTCIceTcpCandidateTypeSo
+    )
+
+instance FromJSVal RTCIceTcpCandidateType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCIceTcpCandidateTypeActive, RTCIceTcpCandidateTypeActive), (js_RTCIceTcpCandidateTypePassive, RTCIceTcpCandidateTypePassive), (js_RTCIceTcpCandidateTypeSo, RTCIceTcpCandidateTypeSo)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCIceTcpCandidateType value") P.return
+
+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 ToJSVal RTCIceTransportPolicy where
+  toJSVal x = toJSVal (case x of
+    RTCIceTransportPolicyRelay -> js_RTCIceTransportPolicyRelay
+    RTCIceTransportPolicyAll -> js_RTCIceTransportPolicyAll
+    )
+
+instance FromJSVal RTCIceTransportPolicy where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCIceTransportPolicyRelay, RTCIceTransportPolicyRelay), (js_RTCIceTransportPolicyAll, RTCIceTransportPolicyAll)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCIceTransportPolicy value") P.return
+
+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 ToJSVal RTCIceTransportState where
+  toJSVal x = toJSVal (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 FromJSVal RTCIceTransportState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCIceTransportStateClosed, RTCIceTransportStateClosed), (js_RTCIceTransportStateFailed, RTCIceTransportStateFailed), (js_RTCIceTransportStateDisconnected, RTCIceTransportStateDisconnected), (js_RTCIceTransportStateNew, RTCIceTransportStateNew), (js_RTCIceTransportStateChecking, RTCIceTransportStateChecking), (js_RTCIceTransportStateCompleted, RTCIceTransportStateCompleted), (js_RTCIceTransportStateConnected, RTCIceTransportStateConnected)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCIceTransportState value") P.return
+
+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 ToJSVal RTCPeerConnectionState where
+  toJSVal x = toJSVal (case x of
+    RTCPeerConnectionStateClosed -> js_RTCPeerConnectionStateClosed
+    RTCPeerConnectionStateFailed -> js_RTCPeerConnectionStateFailed
+    RTCPeerConnectionStateDisconnected -> js_RTCPeerConnectionStateDisconnected
+    RTCPeerConnectionStateNew -> js_RTCPeerConnectionStateNew
+    RTCPeerConnectionStateConnecting -> js_RTCPeerConnectionStateConnecting
+    RTCPeerConnectionStateConnected -> js_RTCPeerConnectionStateConnected
+    )
+
+instance FromJSVal RTCPeerConnectionState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCPeerConnectionStateClosed, RTCPeerConnectionStateClosed), (js_RTCPeerConnectionStateFailed, RTCPeerConnectionStateFailed), (js_RTCPeerConnectionStateDisconnected, RTCPeerConnectionStateDisconnected), (js_RTCPeerConnectionStateNew, RTCPeerConnectionStateNew), (js_RTCPeerConnectionStateConnecting, RTCPeerConnectionStateConnecting), (js_RTCPeerConnectionStateConnected, RTCPeerConnectionStateConnected)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCPeerConnectionState value") P.return
+
+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 ToJSVal RTCPriorityType where
+  toJSVal x = toJSVal (case x of
+    RTCPriorityTypeVeryLow -> js_RTCPriorityTypeVeryLow
+    RTCPriorityTypeLow -> js_RTCPriorityTypeLow
+    RTCPriorityTypeMedium -> js_RTCPriorityTypeMedium
+    RTCPriorityTypeHigh -> js_RTCPriorityTypeHigh
+    )
+
+instance FromJSVal RTCPriorityType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCPriorityTypeVeryLow, RTCPriorityTypeVeryLow), (js_RTCPriorityTypeLow, RTCPriorityTypeLow), (js_RTCPriorityTypeMedium, RTCPriorityTypeMedium), (js_RTCPriorityTypeHigh, RTCPriorityTypeHigh)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCPriorityType value") P.return
+
+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 ToJSVal RTCRtcpMuxPolicy where
+  toJSVal x = toJSVal (case x of
+    RTCRtcpMuxPolicyRequire -> js_RTCRtcpMuxPolicyRequire
+    )
+
+instance FromJSVal RTCRtcpMuxPolicy where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCRtcpMuxPolicyRequire, RTCRtcpMuxPolicyRequire)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCRtcpMuxPolicy value") P.return
+
+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 ToJSVal RTCRtpScriptTransformType where
+  toJSVal x = toJSVal (case x of
+    RTCRtpScriptTransformTypeSframe -> js_RTCRtpScriptTransformTypeSframe
+    )
+
+instance FromJSVal RTCRtpScriptTransformType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCRtpScriptTransformTypeSframe, RTCRtpScriptTransformTypeSframe)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCRtpScriptTransformType value") P.return
+
+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 ToJSVal RTCRtpTransceiverDirection where
+  toJSVal x = toJSVal (case x of
+    RTCRtpTransceiverDirectionSendrecv -> js_RTCRtpTransceiverDirectionSendrecv
+    RTCRtpTransceiverDirectionSendonly -> js_RTCRtpTransceiverDirectionSendonly
+    RTCRtpTransceiverDirectionRecvonly -> js_RTCRtpTransceiverDirectionRecvonly
+    RTCRtpTransceiverDirectionInactive -> js_RTCRtpTransceiverDirectionInactive
+    RTCRtpTransceiverDirectionStopped -> js_RTCRtpTransceiverDirectionStopped
+    )
+
+instance FromJSVal RTCRtpTransceiverDirection where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCRtpTransceiverDirectionSendrecv, RTCRtpTransceiverDirectionSendrecv), (js_RTCRtpTransceiverDirectionSendonly, RTCRtpTransceiverDirectionSendonly), (js_RTCRtpTransceiverDirectionRecvonly, RTCRtpTransceiverDirectionRecvonly), (js_RTCRtpTransceiverDirectionInactive, RTCRtpTransceiverDirectionInactive), (js_RTCRtpTransceiverDirectionStopped, RTCRtpTransceiverDirectionStopped)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCRtpTransceiverDirection value") P.return
+
+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 ToJSVal RTCSctpTransportState where
+  toJSVal x = toJSVal (case x of
+    RTCSctpTransportStateConnecting -> js_RTCSctpTransportStateConnecting
+    RTCSctpTransportStateConnected -> js_RTCSctpTransportStateConnected
+    RTCSctpTransportStateClosed -> js_RTCSctpTransportStateClosed
+    )
+
+instance FromJSVal RTCSctpTransportState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCSctpTransportStateConnecting, RTCSctpTransportStateConnecting), (js_RTCSctpTransportStateConnected, RTCSctpTransportStateConnected), (js_RTCSctpTransportStateClosed, RTCSctpTransportStateClosed)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCSctpTransportState value") P.return
+
+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 ToJSVal RTCSdpType where
+  toJSVal x = toJSVal (case x of
+    RTCSdpTypeOffer -> js_RTCSdpTypeOffer
+    RTCSdpTypePranswer -> js_RTCSdpTypePranswer
+    RTCSdpTypeAnswer -> js_RTCSdpTypeAnswer
+    RTCSdpTypeRollback -> js_RTCSdpTypeRollback
+    )
+
+instance FromJSVal RTCSdpType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCSdpTypeOffer, RTCSdpTypeOffer), (js_RTCSdpTypePranswer, RTCSdpTypePranswer), (js_RTCSdpTypeAnswer, RTCSdpTypeAnswer), (js_RTCSdpTypeRollback, RTCSdpTypeRollback)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCSdpType value") P.return
+
+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 ToJSVal RTCSignalingState where
+  toJSVal x = toJSVal (case x of
+    RTCSignalingStateStable -> js_RTCSignalingStateStable
+    RTCSignalingStateHaveLocalOffer -> js_RTCSignalingStateHaveLocalOffer
+    RTCSignalingStateHaveRemoteOffer -> js_RTCSignalingStateHaveRemoteOffer
+    RTCSignalingStateHaveLocalPranswer -> js_RTCSignalingStateHaveLocalPranswer
+    RTCSignalingStateHaveRemotePranswer -> js_RTCSignalingStateHaveRemotePranswer
+    RTCSignalingStateClosed -> js_RTCSignalingStateClosed
+    )
+
+instance FromJSVal RTCSignalingState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RTCSignalingStateStable, RTCSignalingStateStable), (js_RTCSignalingStateHaveLocalOffer, RTCSignalingStateHaveLocalOffer), (js_RTCSignalingStateHaveRemoteOffer, RTCSignalingStateHaveRemoteOffer), (js_RTCSignalingStateHaveLocalPranswer, RTCSignalingStateHaveLocalPranswer), (js_RTCSignalingStateHaveRemotePranswer, RTCSignalingStateHaveRemotePranswer), (js_RTCSignalingStateClosed, RTCSignalingStateClosed)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RTCSignalingState value") P.return
+
+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 ToJSVal ReadableStreamReaderMode where
+  toJSVal x = toJSVal (case x of
+    ReadableStreamReaderModeByob -> js_ReadableStreamReaderModeByob
+    )
+
+instance FromJSVal ReadableStreamReaderMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ReadableStreamReaderModeByob, ReadableStreamReaderModeByob)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ReadableStreamReaderMode value") P.return
+
+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 ToJSVal ReadableStreamType where
+  toJSVal x = toJSVal (case x of
+    ReadableStreamTypeBytes -> js_ReadableStreamTypeBytes
+    )
+
+instance FromJSVal ReadableStreamType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ReadableStreamTypeBytes, ReadableStreamTypeBytes)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ReadableStreamType value") P.return
+
+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 ToJSVal ReadyState where
+  toJSVal x = toJSVal (case x of
+    ReadyStateClosed -> js_ReadyStateClosed
+    ReadyStateOpen -> js_ReadyStateOpen
+    ReadyStateEnded -> js_ReadyStateEnded
+    )
+
+instance FromJSVal ReadyState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ReadyStateClosed, ReadyStateClosed), (js_ReadyStateOpen, ReadyStateOpen), (js_ReadyStateEnded, ReadyStateEnded)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ReadyState value") P.return
+
+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 ToJSVal RecordingState where
+  toJSVal x = toJSVal (case x of
+    RecordingStateInactive -> js_RecordingStateInactive
+    RecordingStateRecording -> js_RecordingStateRecording
+    RecordingStatePaused -> js_RecordingStatePaused
+    )
+
+instance FromJSVal RecordingState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RecordingStateInactive, RecordingStateInactive), (js_RecordingStateRecording, RecordingStateRecording), (js_RecordingStatePaused, RecordingStatePaused)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RecordingState value") P.return
+
+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 ToJSVal RedEyeReduction where
+  toJSVal x = toJSVal (case x of
+    RedEyeReductionNever -> js_RedEyeReductionNever
+    RedEyeReductionAlways -> js_RedEyeReductionAlways
+    RedEyeReductionControllable -> js_RedEyeReductionControllable
+    )
+
+instance FromJSVal RedEyeReduction where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RedEyeReductionNever, RedEyeReductionNever), (js_RedEyeReductionAlways, RedEyeReductionAlways), (js_RedEyeReductionControllable, RedEyeReductionControllable)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RedEyeReduction value") P.return
+
+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 ToJSVal ReferrerPolicy where
+  toJSVal x = toJSVal (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 FromJSVal ReferrerPolicy where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected ReferrerPolicy value") P.return
+
+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 ToJSVal RefreshPolicy where
+  toJSVal x = toJSVal (case x of
+    RefreshPolicyNone -> js_RefreshPolicyNone
+    RefreshPolicyRefresh -> js_RefreshPolicyRefresh
+    )
+
+instance FromJSVal RefreshPolicy where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RefreshPolicyNone, RefreshPolicyNone), (js_RefreshPolicyRefresh, RefreshPolicyRefresh)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RefreshPolicy value") P.return
+
+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 ToJSVal RemotePlaybackState where
+  toJSVal x = toJSVal (case x of
+    RemotePlaybackStateConnecting -> js_RemotePlaybackStateConnecting
+    RemotePlaybackStateConnected -> js_RemotePlaybackStateConnected
+    RemotePlaybackStateDisconnected -> js_RemotePlaybackStateDisconnected
+    )
+
+instance FromJSVal RemotePlaybackState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RemotePlaybackStateConnecting, RemotePlaybackStateConnecting), (js_RemotePlaybackStateConnected, RemotePlaybackStateConnected), (js_RemotePlaybackStateDisconnected, RemotePlaybackStateDisconnected)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RemotePlaybackState value") P.return
+
+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 ToJSVal RequestCache where
+  toJSVal x = toJSVal (case x of
+    RequestCacheDefault -> js_RequestCacheDefault
+    RequestCacheNoStore -> js_RequestCacheNoStore
+    RequestCacheReload -> js_RequestCacheReload
+    RequestCacheNoCache -> js_RequestCacheNoCache
+    RequestCacheForceCache -> js_RequestCacheForceCache
+    RequestCacheOnlyIfCached -> js_RequestCacheOnlyIfCached
+    )
+
+instance FromJSVal RequestCache where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RequestCacheDefault, RequestCacheDefault), (js_RequestCacheNoStore, RequestCacheNoStore), (js_RequestCacheReload, RequestCacheReload), (js_RequestCacheNoCache, RequestCacheNoCache), (js_RequestCacheForceCache, RequestCacheForceCache), (js_RequestCacheOnlyIfCached, RequestCacheOnlyIfCached)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RequestCache value") P.return
+
+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 ToJSVal RequestCredentials where
+  toJSVal x = toJSVal (case x of
+    RequestCredentialsOmit -> js_RequestCredentialsOmit
+    RequestCredentialsSameOrigin -> js_RequestCredentialsSameOrigin
+    RequestCredentialsInclude -> js_RequestCredentialsInclude
+    )
+
+instance FromJSVal RequestCredentials where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RequestCredentialsOmit, RequestCredentialsOmit), (js_RequestCredentialsSameOrigin, RequestCredentialsSameOrigin), (js_RequestCredentialsInclude, RequestCredentialsInclude)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RequestCredentials value") P.return
+
+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 ToJSVal RequestDestination where
+  toJSVal x = toJSVal (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 FromJSVal RequestDestination where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected RequestDestination value") P.return
+
+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 ToJSVal RequestDuplex where
+  toJSVal x = toJSVal (case x of
+    RequestDuplexHalf -> js_RequestDuplexHalf
+    )
+
+instance FromJSVal RequestDuplex where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RequestDuplexHalf, RequestDuplexHalf)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RequestDuplex value") P.return
+
+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 ToJSVal RequestMode where
+  toJSVal x = toJSVal (case x of
+    RequestModeNavigate -> js_RequestModeNavigate
+    RequestModeSameOrigin -> js_RequestModeSameOrigin
+    RequestModeNoCors -> js_RequestModeNoCors
+    RequestModeCors -> js_RequestModeCors
+    )
+
+instance FromJSVal RequestMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RequestModeNavigate, RequestModeNavigate), (js_RequestModeSameOrigin, RequestModeSameOrigin), (js_RequestModeNoCors, RequestModeNoCors), (js_RequestModeCors, RequestModeCors)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RequestMode value") P.return
+
+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 ToJSVal RequestPriority where
+  toJSVal x = toJSVal (case x of
+    RequestPriorityHigh -> js_RequestPriorityHigh
+    RequestPriorityLow -> js_RequestPriorityLow
+    RequestPriorityAuto -> js_RequestPriorityAuto
+    )
+
+instance FromJSVal RequestPriority where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RequestPriorityHigh, RequestPriorityHigh), (js_RequestPriorityLow, RequestPriorityLow), (js_RequestPriorityAuto, RequestPriorityAuto)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RequestPriority value") P.return
+
+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 ToJSVal RequestRedirect where
+  toJSVal x = toJSVal (case x of
+    RequestRedirectFollow -> js_RequestRedirectFollow
+    RequestRedirectError -> js_RequestRedirectError
+    RequestRedirectManual -> js_RequestRedirectManual
+    )
+
+instance FromJSVal RequestRedirect where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RequestRedirectFollow, RequestRedirectFollow), (js_RequestRedirectError, RequestRedirectError), (js_RequestRedirectManual, RequestRedirectManual)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RequestRedirect value") P.return
+
+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 ToJSVal ResizeObserverBoxOptions where
+  toJSVal x = toJSVal (case x of
+    ResizeObserverBoxOptionsBorderBox -> js_ResizeObserverBoxOptionsBorderBox
+    ResizeObserverBoxOptionsContentBox -> js_ResizeObserverBoxOptionsContentBox
+    ResizeObserverBoxOptionsDevicePixelContentBox -> js_ResizeObserverBoxOptionsDevicePixelContentBox
+    )
+
+instance FromJSVal ResizeObserverBoxOptions where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ResizeObserverBoxOptionsBorderBox, ResizeObserverBoxOptionsBorderBox), (js_ResizeObserverBoxOptionsContentBox, ResizeObserverBoxOptionsContentBox), (js_ResizeObserverBoxOptionsDevicePixelContentBox, ResizeObserverBoxOptionsDevicePixelContentBox)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ResizeObserverBoxOptions value") P.return
+
+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 ToJSVal ResponseType where
+  toJSVal x = toJSVal (case x of
+    ResponseTypeBasic -> js_ResponseTypeBasic
+    ResponseTypeCors -> js_ResponseTypeCors
+    ResponseTypeDefault -> js_ResponseTypeDefault
+    ResponseTypeError -> js_ResponseTypeError
+    ResponseTypeOpaque -> js_ResponseTypeOpaque
+    ResponseTypeOpaqueredirect -> js_ResponseTypeOpaqueredirect
+    )
+
+instance FromJSVal ResponseType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ResponseTypeBasic, ResponseTypeBasic), (js_ResponseTypeCors, ResponseTypeCors), (js_ResponseTypeDefault, ResponseTypeDefault), (js_ResponseTypeError, ResponseTypeError), (js_ResponseTypeOpaque, ResponseTypeOpaque), (js_ResponseTypeOpaqueredirect, ResponseTypeOpaqueredirect)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ResponseType value") P.return
+
+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 ToJSVal RouterSourceEnum where
+  toJSVal x = toJSVal (case x of
+    RouterSourceEnumCache -> js_RouterSourceEnumCache
+    RouterSourceEnumFetchEvent -> js_RouterSourceEnumFetchEvent
+    RouterSourceEnumNetwork -> js_RouterSourceEnumNetwork
+    RouterSourceEnumRaceNetworkAndFetchHandler -> js_RouterSourceEnumRaceNetworkAndFetchHandler
+    )
+
+instance FromJSVal RouterSourceEnum where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RouterSourceEnumCache, RouterSourceEnumCache), (js_RouterSourceEnumFetchEvent, RouterSourceEnumFetchEvent), (js_RouterSourceEnumNetwork, RouterSourceEnumNetwork), (js_RouterSourceEnumRaceNetworkAndFetchHandler, RouterSourceEnumRaceNetworkAndFetchHandler)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RouterSourceEnum value") P.return
+
+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 ToJSVal RunningStatus where
+  toJSVal x = toJSVal (case x of
+    RunningStatusRunning -> js_RunningStatusRunning
+    RunningStatusNotRunning -> js_RunningStatusNotRunning
+    )
+
+instance FromJSVal RunningStatus where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_RunningStatusRunning, RunningStatusRunning), (js_RunningStatusNotRunning, RunningStatusNotRunning)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected RunningStatus value") P.return
+
+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 ToJSVal SameSiteCookiesType where
+  toJSVal x = toJSVal (case x of
+    SameSiteCookiesTypeAll -> js_SameSiteCookiesTypeAll
+    SameSiteCookiesTypeNone -> js_SameSiteCookiesTypeNone
+    )
+
+instance FromJSVal SameSiteCookiesType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_SameSiteCookiesTypeAll, SameSiteCookiesTypeAll), (js_SameSiteCookiesTypeNone, SameSiteCookiesTypeNone)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected SameSiteCookiesType value") P.return
+
+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 ToJSVal SanitizerPresets where
+  toJSVal x = toJSVal (case x of
+    SanitizerPresetsDefault -> js_SanitizerPresetsDefault
+    )
+
+instance FromJSVal SanitizerPresets where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_SanitizerPresetsDefault, SanitizerPresetsDefault)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected SanitizerPresets value") P.return
+
+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 ToJSVal ScrollAxis where
+  toJSVal x = toJSVal (case x of
+    ScrollAxisBlock -> js_ScrollAxisBlock
+    ScrollAxisInline -> js_ScrollAxisInline
+    ScrollAxisX -> js_ScrollAxisX
+    ScrollAxisY -> js_ScrollAxisY
+    )
+
+instance FromJSVal ScrollAxis where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ScrollAxisBlock, ScrollAxisBlock), (js_ScrollAxisInline, ScrollAxisInline), (js_ScrollAxisX, ScrollAxisX), (js_ScrollAxisY, ScrollAxisY)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ScrollAxis value") P.return
+
+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 ToJSVal ScrollBehavior where
+  toJSVal x = toJSVal (case x of
+    ScrollBehaviorAuto -> js_ScrollBehaviorAuto
+    ScrollBehaviorInstant -> js_ScrollBehaviorInstant
+    ScrollBehaviorSmooth -> js_ScrollBehaviorSmooth
+    )
+
+instance FromJSVal ScrollBehavior where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ScrollBehaviorAuto, ScrollBehaviorAuto), (js_ScrollBehaviorInstant, ScrollBehaviorInstant), (js_ScrollBehaviorSmooth, ScrollBehaviorSmooth)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ScrollBehavior value") P.return
+
+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 ToJSVal ScrollIntoViewContainer where
+  toJSVal x = toJSVal (case x of
+    ScrollIntoViewContainerAll -> js_ScrollIntoViewContainerAll
+    ScrollIntoViewContainerNearest -> js_ScrollIntoViewContainerNearest
+    )
+
+instance FromJSVal ScrollIntoViewContainer where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ScrollIntoViewContainerAll, ScrollIntoViewContainerAll), (js_ScrollIntoViewContainerNearest, ScrollIntoViewContainerNearest)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ScrollIntoViewContainer value") P.return
+
+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 ToJSVal ScrollLogicalPosition where
+  toJSVal x = toJSVal (case x of
+    ScrollLogicalPositionStart -> js_ScrollLogicalPositionStart
+    ScrollLogicalPositionCenter -> js_ScrollLogicalPositionCenter
+    ScrollLogicalPositionEnd -> js_ScrollLogicalPositionEnd
+    ScrollLogicalPositionNearest -> js_ScrollLogicalPositionNearest
+    )
+
+instance FromJSVal ScrollLogicalPosition where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ScrollLogicalPositionStart, ScrollLogicalPositionStart), (js_ScrollLogicalPositionCenter, ScrollLogicalPositionCenter), (js_ScrollLogicalPositionEnd, ScrollLogicalPositionEnd), (js_ScrollLogicalPositionNearest, ScrollLogicalPositionNearest)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ScrollLogicalPosition value") P.return
+
+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 ToJSVal ScrollRestoration where
+  toJSVal x = toJSVal (case x of
+    ScrollRestorationAuto -> js_ScrollRestorationAuto
+    ScrollRestorationManual -> js_ScrollRestorationManual
+    )
+
+instance FromJSVal ScrollRestoration where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ScrollRestorationAuto, ScrollRestorationAuto), (js_ScrollRestorationManual, ScrollRestorationManual)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ScrollRestoration value") P.return
+
+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 ToJSVal ScrollSetting where
+  toJSVal x = toJSVal (case x of
+    ScrollSetting -> js_ScrollSetting
+    ScrollSettingUp -> js_ScrollSettingUp
+    )
+
+instance FromJSVal ScrollSetting where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ScrollSetting, ScrollSetting), (js_ScrollSettingUp, ScrollSettingUp)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ScrollSetting value") P.return
+
+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 ToJSVal SecurityPolicyViolationEventDisposition where
+  toJSVal x = toJSVal (case x of
+    SecurityPolicyViolationEventDispositionEnforce -> js_SecurityPolicyViolationEventDispositionEnforce
+    SecurityPolicyViolationEventDispositionReport -> js_SecurityPolicyViolationEventDispositionReport
+    )
+
+instance FromJSVal SecurityPolicyViolationEventDisposition where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_SecurityPolicyViolationEventDispositionEnforce, SecurityPolicyViolationEventDispositionEnforce), (js_SecurityPolicyViolationEventDispositionReport, SecurityPolicyViolationEventDispositionReport)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected SecurityPolicyViolationEventDisposition value") P.return
+
+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 ToJSVal SegmentType where
+  toJSVal x = toJSVal (case x of
+    SegmentTypeHumanFace -> js_SegmentTypeHumanFace
+    SegmentTypeLeftEye -> js_SegmentTypeLeftEye
+    SegmentTypeRightEye -> js_SegmentTypeRightEye
+    SegmentTypeEye -> js_SegmentTypeEye
+    SegmentTypeMouth -> js_SegmentTypeMouth
+    )
+
+instance FromJSVal SegmentType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_SegmentTypeHumanFace, SegmentTypeHumanFace), (js_SegmentTypeLeftEye, SegmentTypeLeftEye), (js_SegmentTypeRightEye, SegmentTypeRightEye), (js_SegmentTypeEye, SegmentTypeEye), (js_SegmentTypeMouth, SegmentTypeMouth)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected SegmentType value") P.return
+
+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 ToJSVal SelectionMode where
+  toJSVal x = toJSVal (case x of
+    SelectionModeSelect -> js_SelectionModeSelect
+    SelectionModeStart -> js_SelectionModeStart
+    SelectionModeEnd -> js_SelectionModeEnd
+    SelectionModePreserve -> js_SelectionModePreserve
+    )
+
+instance FromJSVal SelectionMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_SelectionModeSelect, SelectionModeSelect), (js_SelectionModeStart, SelectionModeStart), (js_SelectionModeEnd, SelectionModeEnd), (js_SelectionModePreserve, SelectionModePreserve)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected SelectionMode value") P.return
+
+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 ToJSVal SelfCapturePreferenceEnum where
+  toJSVal x = toJSVal (case x of
+    SelfCapturePreferenceEnumInclude -> js_SelfCapturePreferenceEnumInclude
+    SelfCapturePreferenceEnumExclude -> js_SelfCapturePreferenceEnumExclude
+    )
+
+instance FromJSVal SelfCapturePreferenceEnum where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_SelfCapturePreferenceEnumInclude, SelfCapturePreferenceEnumInclude), (js_SelfCapturePreferenceEnumExclude, SelfCapturePreferenceEnumExclude)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected SelfCapturePreferenceEnum value") P.return
+
+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 ToJSVal ServiceWorkerState where
+  toJSVal x = toJSVal (case x of
+    ServiceWorkerStateParsed -> js_ServiceWorkerStateParsed
+    ServiceWorkerStateInstalling -> js_ServiceWorkerStateInstalling
+    ServiceWorkerStateInstalled -> js_ServiceWorkerStateInstalled
+    ServiceWorkerStateActivating -> js_ServiceWorkerStateActivating
+    ServiceWorkerStateActivated -> js_ServiceWorkerStateActivated
+    ServiceWorkerStateRedundant -> js_ServiceWorkerStateRedundant
+    )
+
+instance FromJSVal ServiceWorkerState where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ServiceWorkerStateParsed, ServiceWorkerStateParsed), (js_ServiceWorkerStateInstalling, ServiceWorkerStateInstalling), (js_ServiceWorkerStateInstalled, ServiceWorkerStateInstalled), (js_ServiceWorkerStateActivating, ServiceWorkerStateActivating), (js_ServiceWorkerStateActivated, ServiceWorkerStateActivated), (js_ServiceWorkerStateRedundant, ServiceWorkerStateRedundant)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ServiceWorkerState value") P.return
+
+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 ToJSVal ServiceWorkerUpdateViaCache where
+  toJSVal x = toJSVal (case x of
+    ServiceWorkerUpdateViaCacheImports -> js_ServiceWorkerUpdateViaCacheImports
+    ServiceWorkerUpdateViaCacheAll -> js_ServiceWorkerUpdateViaCacheAll
+    ServiceWorkerUpdateViaCacheNone -> js_ServiceWorkerUpdateViaCacheNone
+    )
+
+instance FromJSVal ServiceWorkerUpdateViaCache where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ServiceWorkerUpdateViaCacheImports, ServiceWorkerUpdateViaCacheImports), (js_ServiceWorkerUpdateViaCacheAll, ServiceWorkerUpdateViaCacheAll), (js_ServiceWorkerUpdateViaCacheNone, ServiceWorkerUpdateViaCacheNone)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ServiceWorkerUpdateViaCache value") P.return
+
+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 ToJSVal ShadowRootMode where
+  toJSVal x = toJSVal (case x of
+    ShadowRootModeOpen -> js_ShadowRootModeOpen
+    ShadowRootModeClosed -> js_ShadowRootModeClosed
+    )
+
+instance FromJSVal ShadowRootMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_ShadowRootModeOpen, ShadowRootModeOpen), (js_ShadowRootModeClosed, ShadowRootModeClosed)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected ShadowRootMode value") P.return
+
+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 ToJSVal SlotAssignmentMode where
+  toJSVal x = toJSVal (case x of
+    SlotAssignmentModeManual -> js_SlotAssignmentModeManual
+    SlotAssignmentModeNamed -> js_SlotAssignmentModeNamed
+    )
+
+instance FromJSVal SlotAssignmentMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_SlotAssignmentModeManual, SlotAssignmentModeManual), (js_SlotAssignmentModeNamed, SlotAssignmentModeNamed)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected SlotAssignmentMode value") P.return
+
+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 ToJSVal SpeechRecognitionAvailabilityStatus where
+  toJSVal x = toJSVal (case x of
+    SpeechRecognitionAvailabilityStatusUnavailable -> js_SpeechRecognitionAvailabilityStatusUnavailable
+    SpeechRecognitionAvailabilityStatusDownloadable -> js_SpeechRecognitionAvailabilityStatusDownloadable
+    SpeechRecognitionAvailabilityStatusDownloading -> js_SpeechRecognitionAvailabilityStatusDownloading
+    SpeechRecognitionAvailabilityStatusAvailable -> js_SpeechRecognitionAvailabilityStatusAvailable
+    )
+
+instance FromJSVal SpeechRecognitionAvailabilityStatus where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_SpeechRecognitionAvailabilityStatusUnavailable, SpeechRecognitionAvailabilityStatusUnavailable), (js_SpeechRecognitionAvailabilityStatusDownloadable, SpeechRecognitionAvailabilityStatusDownloadable), (js_SpeechRecognitionAvailabilityStatusDownloading, SpeechRecognitionAvailabilityStatusDownloading), (js_SpeechRecognitionAvailabilityStatusAvailable, SpeechRecognitionAvailabilityStatusAvailable)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected SpeechRecognitionAvailabilityStatus value") P.return
+
+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 ToJSVal SpeechRecognitionErrorCode where
+  toJSVal x = toJSVal (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 FromJSVal SpeechRecognitionErrorCode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected SpeechRecognitionErrorCode value") P.return
+
+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 ToJSVal SpeechRecognitionQuality where
+  toJSVal x = toJSVal (case x of
+    SpeechRecognitionQualityCommand -> js_SpeechRecognitionQualityCommand
+    SpeechRecognitionQualityDictation -> js_SpeechRecognitionQualityDictation
+    SpeechRecognitionQualityConversation -> js_SpeechRecognitionQualityConversation
+    )
+
+instance FromJSVal SpeechRecognitionQuality where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_SpeechRecognitionQualityCommand, SpeechRecognitionQualityCommand), (js_SpeechRecognitionQualityDictation, SpeechRecognitionQualityDictation), (js_SpeechRecognitionQualityConversation, SpeechRecognitionQualityConversation)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected SpeechRecognitionQuality value") P.return
+
+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 ToJSVal SpeechSynthesisErrorCode where
+  toJSVal x = toJSVal (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 FromJSVal SpeechSynthesisErrorCode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected SpeechSynthesisErrorCode value") P.return
+
+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 ToJSVal SurfaceSwitchingPreferenceEnum where
+  toJSVal x = toJSVal (case x of
+    SurfaceSwitchingPreferenceEnumInclude -> js_SurfaceSwitchingPreferenceEnumInclude
+    SurfaceSwitchingPreferenceEnumExclude -> js_SurfaceSwitchingPreferenceEnumExclude
+    )
+
+instance FromJSVal SurfaceSwitchingPreferenceEnum where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_SurfaceSwitchingPreferenceEnumInclude, SurfaceSwitchingPreferenceEnumInclude), (js_SurfaceSwitchingPreferenceEnumExclude, SurfaceSwitchingPreferenceEnumExclude)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected SurfaceSwitchingPreferenceEnum value") P.return
+
+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 ToJSVal SystemAudioPreferenceEnum where
+  toJSVal x = toJSVal (case x of
+    SystemAudioPreferenceEnumInclude -> js_SystemAudioPreferenceEnumInclude
+    SystemAudioPreferenceEnumExclude -> js_SystemAudioPreferenceEnumExclude
+    )
+
+instance FromJSVal SystemAudioPreferenceEnum where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_SystemAudioPreferenceEnumInclude, SystemAudioPreferenceEnumInclude), (js_SystemAudioPreferenceEnumExclude, SystemAudioPreferenceEnumExclude)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected SystemAudioPreferenceEnum value") P.return
+
+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 ToJSVal TaskPriority where
+  toJSVal x = toJSVal (case x of
+    TaskPriorityUserBlocking -> js_TaskPriorityUserBlocking
+    TaskPriorityUserVisible -> js_TaskPriorityUserVisible
+    TaskPriorityBackground -> js_TaskPriorityBackground
+    )
+
+instance FromJSVal TaskPriority where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_TaskPriorityUserBlocking, TaskPriorityUserBlocking), (js_TaskPriorityUserVisible, TaskPriorityUserVisible), (js_TaskPriorityBackground, TaskPriorityBackground)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected TaskPriority value") P.return
+
+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 ToJSVal TextTrackKind where
+  toJSVal x = toJSVal (case x of
+    TextTrackKindSubtitles -> js_TextTrackKindSubtitles
+    TextTrackKindCaptions -> js_TextTrackKindCaptions
+    TextTrackKindDescriptions -> js_TextTrackKindDescriptions
+    TextTrackKindChapters -> js_TextTrackKindChapters
+    TextTrackKindMetadata -> js_TextTrackKindMetadata
+    )
+
+instance FromJSVal TextTrackKind where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_TextTrackKindSubtitles, TextTrackKindSubtitles), (js_TextTrackKindCaptions, TextTrackKindCaptions), (js_TextTrackKindDescriptions, TextTrackKindDescriptions), (js_TextTrackKindChapters, TextTrackKindChapters), (js_TextTrackKindMetadata, TextTrackKindMetadata)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected TextTrackKind value") P.return
+
+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 ToJSVal TextTrackMode where
+  toJSVal x = toJSVal (case x of
+    TextTrackModeDisabled -> js_TextTrackModeDisabled
+    TextTrackModeHidden -> js_TextTrackModeHidden
+    TextTrackModeShowing -> js_TextTrackModeShowing
+    )
+
+instance FromJSVal TextTrackMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_TextTrackModeDisabled, TextTrackModeDisabled), (js_TextTrackModeHidden, TextTrackModeHidden), (js_TextTrackModeShowing, TextTrackModeShowing)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected TextTrackMode value") P.return
+
+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 ToJSVal TokenVersion where
+  toJSVal x = toJSVal (case x of
+    TokenVersion1 -> js_TokenVersion1
+    )
+
+instance FromJSVal TokenVersion where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_TokenVersion1, TokenVersion1)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected TokenVersion value") P.return
+
+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 ToJSVal TouchType where
+  toJSVal x = toJSVal (case x of
+    TouchTypeDirect -> js_TouchTypeDirect
+    TouchTypeStylus -> js_TouchTypeStylus
+    )
+
+instance FromJSVal TouchType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_TouchTypeDirect, TouchTypeDirect), (js_TouchTypeStylus, TouchTypeStylus)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected TouchType value") P.return
+
+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 ToJSVal TransferFunction where
+  toJSVal x = toJSVal (case x of
+    TransferFunctionSrgb -> js_TransferFunctionSrgb
+    TransferFunctionPq -> js_TransferFunctionPq
+    TransferFunctionHlg -> js_TransferFunctionHlg
+    )
+
+instance FromJSVal TransferFunction where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_TransferFunctionSrgb, TransferFunctionSrgb), (js_TransferFunctionPq, TransferFunctionPq), (js_TransferFunctionHlg, TransferFunctionHlg)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected TransferFunction value") P.return
+
+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 ToJSVal VideoColorPrimaries where
+  toJSVal x = toJSVal (case x of
+    VideoColorPrimariesBt709 -> js_VideoColorPrimariesBt709
+    VideoColorPrimariesBt470bg -> js_VideoColorPrimariesBt470bg
+    VideoColorPrimariesSmpte170m -> js_VideoColorPrimariesSmpte170m
+    VideoColorPrimariesBt2020 -> js_VideoColorPrimariesBt2020
+    VideoColorPrimariesSmpte432 -> js_VideoColorPrimariesSmpte432
+    )
+
+instance FromJSVal VideoColorPrimaries where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_VideoColorPrimariesBt709, VideoColorPrimariesBt709), (js_VideoColorPrimariesBt470bg, VideoColorPrimariesBt470bg), (js_VideoColorPrimariesSmpte170m, VideoColorPrimariesSmpte170m), (js_VideoColorPrimariesBt2020, VideoColorPrimariesBt2020), (js_VideoColorPrimariesSmpte432, VideoColorPrimariesSmpte432)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected VideoColorPrimaries value") P.return
+
+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 ToJSVal VideoEncoderBitrateMode where
+  toJSVal x = toJSVal (case x of
+    VideoEncoderBitrateModeConstant -> js_VideoEncoderBitrateModeConstant
+    VideoEncoderBitrateModeVariable -> js_VideoEncoderBitrateModeVariable
+    VideoEncoderBitrateModeQuantizer -> js_VideoEncoderBitrateModeQuantizer
+    )
+
+instance FromJSVal VideoEncoderBitrateMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_VideoEncoderBitrateModeConstant, VideoEncoderBitrateModeConstant), (js_VideoEncoderBitrateModeVariable, VideoEncoderBitrateModeVariable), (js_VideoEncoderBitrateModeQuantizer, VideoEncoderBitrateModeQuantizer)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected VideoEncoderBitrateMode value") P.return
+
+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 ToJSVal VideoMatrixCoefficients where
+  toJSVal x = toJSVal (case x of
+    VideoMatrixCoefficientsRgb -> js_VideoMatrixCoefficientsRgb
+    VideoMatrixCoefficientsBt709 -> js_VideoMatrixCoefficientsBt709
+    VideoMatrixCoefficientsBt470bg -> js_VideoMatrixCoefficientsBt470bg
+    VideoMatrixCoefficientsSmpte170m -> js_VideoMatrixCoefficientsSmpte170m
+    VideoMatrixCoefficientsBt2020Ncl -> js_VideoMatrixCoefficientsBt2020Ncl
+    )
+
+instance FromJSVal VideoMatrixCoefficients where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_VideoMatrixCoefficientsRgb, VideoMatrixCoefficientsRgb), (js_VideoMatrixCoefficientsBt709, VideoMatrixCoefficientsBt709), (js_VideoMatrixCoefficientsBt470bg, VideoMatrixCoefficientsBt470bg), (js_VideoMatrixCoefficientsSmpte170m, VideoMatrixCoefficientsSmpte170m), (js_VideoMatrixCoefficientsBt2020Ncl, VideoMatrixCoefficientsBt2020Ncl)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected VideoMatrixCoefficients value") P.return
+
+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 ToJSVal VideoPixelFormat where
+  toJSVal x = toJSVal (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 FromJSVal VideoPixelFormat where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    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 x = fromJSVal x >>= P.maybe (P.error "Unexpected VideoPixelFormat value") P.return
+
+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 ToJSVal VideoTransferCharacteristics where
+  toJSVal x = toJSVal (case x of
+    VideoTransferCharacteristicsBt709 -> js_VideoTransferCharacteristicsBt709
+    VideoTransferCharacteristicsSmpte170m -> js_VideoTransferCharacteristicsSmpte170m
+    VideoTransferCharacteristicsIec6196621 -> js_VideoTransferCharacteristicsIec6196621
+    VideoTransferCharacteristicsLinear -> js_VideoTransferCharacteristicsLinear
+    VideoTransferCharacteristicsPq -> js_VideoTransferCharacteristicsPq
+    VideoTransferCharacteristicsHlg -> js_VideoTransferCharacteristicsHlg
+    )
+
+instance FromJSVal VideoTransferCharacteristics where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_VideoTransferCharacteristicsBt709, VideoTransferCharacteristicsBt709), (js_VideoTransferCharacteristicsSmpte170m, VideoTransferCharacteristicsSmpte170m), (js_VideoTransferCharacteristicsIec6196621, VideoTransferCharacteristicsIec6196621), (js_VideoTransferCharacteristicsLinear, VideoTransferCharacteristicsLinear), (js_VideoTransferCharacteristicsPq, VideoTransferCharacteristicsPq), (js_VideoTransferCharacteristicsHlg, VideoTransferCharacteristicsHlg)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected VideoTransferCharacteristics value") P.return
+
+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 ToJSVal WakeLockType where
+  toJSVal x = toJSVal (case x of
+    WakeLockTypeScreen -> js_WakeLockTypeScreen
+    )
+
+instance FromJSVal WakeLockType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_WakeLockTypeScreen, WakeLockTypeScreen)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected WakeLockType value") P.return
+
+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 ToJSVal WebGLPowerPreference where
+  toJSVal x = toJSVal (case x of
+    WebGLPowerPreferenceDefault -> js_WebGLPowerPreferenceDefault
+    WebGLPowerPreferenceLowPower -> js_WebGLPowerPreferenceLowPower
+    WebGLPowerPreferenceHighPerformance -> js_WebGLPowerPreferenceHighPerformance
+    )
+
+instance FromJSVal WebGLPowerPreference where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_WebGLPowerPreferenceDefault, WebGLPowerPreferenceDefault), (js_WebGLPowerPreferenceLowPower, WebGLPowerPreferenceLowPower), (js_WebGLPowerPreferenceHighPerformance, WebGLPowerPreferenceHighPerformance)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected WebGLPowerPreference value") P.return
+
+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 ToJSVal WebTransportCongestionControl where
+  toJSVal x = toJSVal (case x of
+    WebTransportCongestionControlDefault -> js_WebTransportCongestionControlDefault
+    WebTransportCongestionControlThroughput -> js_WebTransportCongestionControlThroughput
+    WebTransportCongestionControlLowLatency -> js_WebTransportCongestionControlLowLatency
+    )
+
+instance FromJSVal WebTransportCongestionControl where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_WebTransportCongestionControlDefault, WebTransportCongestionControlDefault), (js_WebTransportCongestionControlThroughput, WebTransportCongestionControlThroughput), (js_WebTransportCongestionControlLowLatency, WebTransportCongestionControlLowLatency)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected WebTransportCongestionControl value") P.return
+
+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 ToJSVal WebTransportErrorSource where
+  toJSVal x = toJSVal (case x of
+    WebTransportErrorSourceStream -> js_WebTransportErrorSourceStream
+    WebTransportErrorSourceSession -> js_WebTransportErrorSourceSession
+    )
+
+instance FromJSVal WebTransportErrorSource where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_WebTransportErrorSourceStream, WebTransportErrorSourceStream), (js_WebTransportErrorSourceSession, WebTransportErrorSourceSession)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected WebTransportErrorSource value") P.return
+
+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 ToJSVal WebTransportReliabilityMode where
+  toJSVal x = toJSVal (case x of
+    WebTransportReliabilityModePending -> js_WebTransportReliabilityModePending
+    WebTransportReliabilityModeReliableOnly -> js_WebTransportReliabilityModeReliableOnly
+    WebTransportReliabilityModeSupportsUnreliable -> js_WebTransportReliabilityModeSupportsUnreliable
+    )
+
+instance FromJSVal WebTransportReliabilityMode where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_WebTransportReliabilityModePending, WebTransportReliabilityModePending), (js_WebTransportReliabilityModeReliableOnly, WebTransportReliabilityModeReliableOnly), (js_WebTransportReliabilityModeSupportsUnreliable, WebTransportReliabilityModeSupportsUnreliable)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected WebTransportReliabilityMode value") P.return
+
+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 ToJSVal WindowAudioPreferenceEnum where
+  toJSVal x = toJSVal (case x of
+    WindowAudioPreferenceEnumSystem -> js_WindowAudioPreferenceEnumSystem
+    WindowAudioPreferenceEnumWindow -> js_WindowAudioPreferenceEnumWindow
+    WindowAudioPreferenceEnumExclude -> js_WindowAudioPreferenceEnumExclude
+    )
+
+instance FromJSVal WindowAudioPreferenceEnum where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_WindowAudioPreferenceEnumSystem, WindowAudioPreferenceEnumSystem), (js_WindowAudioPreferenceEnumWindow, WindowAudioPreferenceEnumWindow), (js_WindowAudioPreferenceEnumExclude, WindowAudioPreferenceEnumExclude)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected WindowAudioPreferenceEnum value") P.return
+
+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 ToJSVal WorkerType where
+  toJSVal x = toJSVal (case x of
+    WorkerTypeClassic -> js_WorkerTypeClassic
+    WorkerTypeModule -> js_WorkerTypeModule
+    )
+
+instance FromJSVal WorkerType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_WorkerTypeClassic, WorkerTypeClassic), (js_WorkerTypeModule, WorkerTypeModule)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected WorkerType value") P.return
+
+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 ToJSVal WriteCommandType where
+  toJSVal x = toJSVal (case x of
+    WriteCommandTypeWrite -> js_WriteCommandTypeWrite
+    WriteCommandTypeSeek -> js_WriteCommandTypeSeek
+    WriteCommandTypeTruncate -> js_WriteCommandTypeTruncate
+    )
+
+instance FromJSVal WriteCommandType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_WriteCommandTypeWrite, WriteCommandTypeWrite), (js_WriteCommandTypeSeek, WriteCommandTypeSeek), (js_WriteCommandTypeTruncate, WriteCommandTypeTruncate)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected WriteCommandType value") P.return
+
+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 ToJSVal XMLHttpRequestResponseType where
+  toJSVal x = toJSVal (case x of
+    XMLHttpRequestResponseType -> js_XMLHttpRequestResponseType
+    XMLHttpRequestResponseTypeArraybuffer -> js_XMLHttpRequestResponseTypeArraybuffer
+    XMLHttpRequestResponseTypeBlob -> js_XMLHttpRequestResponseTypeBlob
+    XMLHttpRequestResponseTypeDocument -> js_XMLHttpRequestResponseTypeDocument
+    XMLHttpRequestResponseTypeJson -> js_XMLHttpRequestResponseTypeJson
+    XMLHttpRequestResponseTypeText -> js_XMLHttpRequestResponseTypeText
+    )
+
+instance FromJSVal XMLHttpRequestResponseType where
+  fromJSVal x = (>>= (`P.lookup` table)) <$> (fromJSVal x :: JSM (Maybe JSString))
+    where table = [(js_XMLHttpRequestResponseType, XMLHttpRequestResponseType), (js_XMLHttpRequestResponseTypeArraybuffer, XMLHttpRequestResponseTypeArraybuffer), (js_XMLHttpRequestResponseTypeBlob, XMLHttpRequestResponseTypeBlob), (js_XMLHttpRequestResponseTypeDocument, XMLHttpRequestResponseTypeDocument), (js_XMLHttpRequestResponseTypeJson, XMLHttpRequestResponseTypeJson), (js_XMLHttpRequestResponseTypeText, XMLHttpRequestResponseTypeText)]
+  fromJSValUnchecked x = fromJSVal x >>= P.maybe (P.error "Unexpected XMLHttpRequestResponseType value") P.return
+
+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/JSDOM/Generated/ErrorCallback.hs b/src/JSDOM/Generated/ErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ErrorCallback.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newErrorCallback :: (MonadDOM m) => (DOMException -> JSM ()) -> m ErrorCallback
+newErrorCallback callback = liftDOM (ErrorCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (err : _) -> do
+          err' <- fromJSValUnchecked err
+          callback err'))
+
+newErrorCallbackSync :: (MonadDOM m) => (DOMException -> JSM ()) -> m ErrorCallback
+newErrorCallbackSync callback = liftDOM (ErrorCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (err : _) -> do
+          err' <- fromJSValUnchecked err
+          callback err'))
+
+newErrorCallbackAsync :: (MonadDOM m) => (DOMException -> JSM ()) -> m ErrorCallback
+newErrorCallbackAsync callback = liftDOM (ErrorCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (err : _) -> do
+          err' <- fromJSValUnchecked err
+          callback err'))
diff --git a/src/JSDOM/Generated/ErrorEvent.hs b/src/JSDOM/Generated/ErrorEvent.hs
--- a/src/JSDOM/Generated/ErrorEvent.hs
+++ b/src/JSDOM/Generated/ErrorEvent.hs
@@ -1,56 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.ErrorEvent
-       (newErrorEvent, getMessage, getFilename, getLineno, getColno,
-        getError, ErrorEvent(..), gTypeErrorEvent)
+       (newErrorEvent, getMessage, getFilename, getLineno, getColno, getError, ErrorEvent(..), gTypeErrorEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent Mozilla ErrorEvent documentation> 
-newErrorEvent ::
-              (MonadDOM m, ToJSString type') =>
-                type' -> Maybe ErrorEventInit -> m ErrorEvent
-newErrorEvent type' eventInitDict
-  = liftDOM
-      (ErrorEvent <$>
-         new (jsg "ErrorEvent") [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "ErrorEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.message Mozilla ErrorEvent.message documentation> 
-getMessage ::
-           (MonadDOM m, FromJSString result) => ErrorEvent -> m result
-getMessage self
-  = liftDOM ((self ^. js "message") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/ErrorEvent/message MDN ErrorEvent.message documentation>
+getMessage :: (MonadDOM m, FromJSString result) => ErrorEvent -> m result
+getMessage self = liftDOM (((self ^. js "message") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.filename Mozilla ErrorEvent.filename documentation> 
-getFilename ::
-            (MonadDOM m, FromJSString result) => ErrorEvent -> m result
-getFilename self
-  = liftDOM ((self ^. js "filename") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/ErrorEvent/filename MDN ErrorEvent.filename documentation>
+getFilename :: (MonadDOM m, FromJSString result) => ErrorEvent -> m result
+getFilename self = liftDOM (((self ^. js "filename") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.lineno Mozilla ErrorEvent.lineno documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ErrorEvent/lineno MDN ErrorEvent.lineno documentation>
 getLineno :: (MonadDOM m) => ErrorEvent -> m Word
-getLineno self
-  = liftDOM (round <$> ((self ^. js "lineno") >>= valToNumber))
+getLineno self = liftDOM ((P.round <$> ((self ^. js "lineno") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.colno Mozilla ErrorEvent.colno documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ErrorEvent/colno MDN ErrorEvent.colno documentation>
 getColno :: (MonadDOM m) => ErrorEvent -> m Word
-getColno self
-  = liftDOM (round <$> ((self ^. js "colno") >>= valToNumber))
+getColno self = liftDOM ((P.round <$> ((self ^. js "colno") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.error Mozilla ErrorEvent.error documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ErrorEvent/error MDN ErrorEvent.error documentation>
 getError :: (MonadDOM m) => ErrorEvent -> m JSVal
-getError self = liftDOM ((self ^. js "error") >>= toJSVal)
+getError self = liftDOM (self ^. js "error")
diff --git a/src/JSDOM/Generated/ErrorEventInit.hs b/src/JSDOM/Generated/ErrorEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ErrorEventInit.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.ErrorEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#erroreventinit ErrorEventInit specification>
+newErrorEventInit :: (MonadDOM m) => m ErrorEventInit
+newErrorEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+setMessage :: (MonadDOM m, ToJSString val) => ErrorEventInit -> val -> m ()
+setMessage self val = liftDOM (void (self ^. jss "message" (toJSVal val)))
+
+getMessage :: (MonadDOM m, FromJSString result) => ErrorEventInit -> m (Maybe result)
+getMessage self = liftDOM (((self ^. js "message") >>= fromMaybeJSString))
+
+getMessageUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ErrorEventInit -> m result
+getMessageUnsafe self = liftDOM ((((self ^. js "message") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getMessageUnchecked :: (MonadDOM m, FromJSString result) => ErrorEventInit -> m result
+getMessageUnchecked self = liftDOM (((self ^. js "message") >>= fromJSValUnchecked))
+
+setFilename :: (MonadDOM m, ToJSString val) => ErrorEventInit -> val -> m ()
+setFilename self val = liftDOM (void (self ^. jss "filename" (toJSVal val)))
+
+getFilename :: (MonadDOM m, FromJSString result) => ErrorEventInit -> m (Maybe result)
+getFilename self = liftDOM (((self ^. js "filename") >>= fromMaybeJSString))
+
+getFilenameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ErrorEventInit -> m result
+getFilenameUnsafe self = liftDOM ((((self ^. js "filename") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getFilenameUnchecked :: (MonadDOM m, FromJSString result) => ErrorEventInit -> m result
+getFilenameUnchecked self = liftDOM (((self ^. js "filename") >>= fromJSValUnchecked))
+
+setLineno :: (MonadDOM m) => ErrorEventInit -> Word -> m ()
+setLineno self val = liftDOM (void (self ^. jss "lineno" (toJSVal val)))
+
+getLineno :: (MonadDOM m) => ErrorEventInit -> m (Maybe Word)
+getLineno self = liftDOM (((self ^. js "lineno") >>= fromJSValUnchecked))
+
+getLinenoUnsafe :: (MonadDOM m, HasCallStack) => ErrorEventInit -> m Word
+getLinenoUnsafe self = liftDOM ((((self ^. js "lineno") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getLinenoUnchecked :: (MonadDOM m) => ErrorEventInit -> m Word
+getLinenoUnchecked self = liftDOM ((P.round <$> ((self ^. js "lineno") >>= valToNumber)))
+
+setColno :: (MonadDOM m) => ErrorEventInit -> Word -> m ()
+setColno self val = liftDOM (void (self ^. jss "colno" (toJSVal val)))
+
+getColno :: (MonadDOM m) => ErrorEventInit -> m (Maybe Word)
+getColno self = liftDOM (((self ^. js "colno") >>= fromJSValUnchecked))
+
+getColnoUnsafe :: (MonadDOM m, HasCallStack) => ErrorEventInit -> m Word
+getColnoUnsafe self = liftDOM ((((self ^. js "colno") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getColnoUnchecked :: (MonadDOM m) => ErrorEventInit -> m Word
+getColnoUnchecked self = liftDOM ((P.round <$> ((self ^. js "colno") >>= valToNumber)))
+
+setError :: (MonadDOM m) => ErrorEventInit -> JSVal -> m ()
+setError self val = liftDOM (void (self ^. jss "error" (toJSVal val)))
+
+getError :: (MonadDOM m) => ErrorEventInit -> m JSVal
+getError self = liftDOM (self ^. js "error")
diff --git a/src/JSDOM/Generated/Event.hs b/src/JSDOM/Generated/Event.hs
--- a/src/JSDOM/Generated/Event.hs
+++ b/src/JSDOM/Generated/Event.hs
@@ -1,194 +1,136 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.Event
-       (newEvent, composedPath, composedPath_, stopPropagation,
-        stopImmediatePropagation, preventDefault, initEvent, pattern NONE,
-        pattern CAPTURING_PHASE, pattern AT_TARGET, pattern BUBBLING_PHASE,
-        getType, getTarget, getTargetUnsafe, getTargetUnchecked,
-        getCurrentTarget, getCurrentTargetUnsafe,
-        getCurrentTargetUnchecked, getEventPhase, setCancelBubble,
-        getCancelBubble, getBubbles, getCancelable, getDefaultPrevented,
-        getComposed, getIsTrusted, getTimeStamp, getSrcElement,
-        setReturnValue, getReturnValue, Event(..), gTypeEvent, IsEvent,
-        toEvent)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.Enums
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event Mozilla Event documentation> 
-newEvent ::
-         (MonadDOM m, ToJSString type', IsEventInit eventInitDict) =>
-           type' -> Maybe eventInitDict -> m Event
-newEvent type' eventInitDict
-  = liftDOM
-      (Event <$>
-         new (jsg "Event") [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "Event") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.composedPath Mozilla Event.composedPath documentation> 
-composedPath ::
-             (MonadDOM m, IsEvent self) => self -> m [EventTarget]
-composedPath self
-  = liftDOM
-      (((toEvent self) ^. jsf "composedPath" ()) >>=
-         fromJSArrayUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Event/composedPath MDN Event.composedPath documentation>
+composedPath :: (MonadDOM m, IsEvent self) => self -> m [EventTarget]
+composedPath self = liftDOM ((((Types.toEvent self) ^. jsf "composedPath" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.composedPath Mozilla Event.composedPath documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Event/composedPath MDN Event.composedPath documentation>
 composedPath_ :: (MonadDOM m, IsEvent self) => self -> m ()
-composedPath_ self
-  = liftDOM (void ((toEvent self) ^. jsf "composedPath" ()))
+composedPath_ self = liftDOM (void ((Types.toEvent self) ^. jsf "composedPath" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.stopPropagation Mozilla Event.stopPropagation documentation> 
+-- | <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 ((Types.toEvent self) ^. jsf "initEvent" [toJSVal type', P.maybe (P.return jsUndefined) toJSVal bubbles, P.maybe (P.return jsUndefined) toJSVal cancelable]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Event/preventDefault MDN Event.preventDefault documentation>
+preventDefault :: (MonadDOM m, IsEvent self) => self -> m ()
+preventDefault self = liftDOM (void ((Types.toEvent self) ^. jsf "preventDefault" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Event/stopImmediatePropagation MDN Event.stopImmediatePropagation documentation>
+stopImmediatePropagation :: (MonadDOM m, IsEvent self) => self -> m ()
+stopImmediatePropagation self = liftDOM (void ((Types.toEvent self) ^. jsf "stopImmediatePropagation" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Event/stopPropagation MDN Event.stopPropagation documentation>
 stopPropagation :: (MonadDOM m, IsEvent self) => self -> m ()
-stopPropagation self
-  = liftDOM (void ((toEvent self) ^. jsf "stopPropagation" ()))
+stopPropagation self = liftDOM (void ((Types.toEvent self) ^. jsf "stopPropagation" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.stopImmediatePropagation Mozilla Event.stopImmediatePropagation documentation> 
-stopImmediatePropagation ::
-                         (MonadDOM m, IsEvent self) => self -> m ()
-stopImmediatePropagation self
-  = liftDOM
-      (void ((toEvent self) ^. jsf "stopImmediatePropagation" ()))
+-- | <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 ((((Types.toEvent self) ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.preventDefault Mozilla Event.preventDefault documentation> 
-preventDefault :: (MonadDOM m, IsEvent self) => self -> m ()
-preventDefault self
-  = liftDOM (void ((toEvent self) ^. jsf "preventDefault" ()))
+-- | <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 ((((Types.toEvent self) ^. js "target") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.initEvent Mozilla Event.initEvent documentation> 
-initEvent ::
-          (MonadDOM m, IsEvent self, ToJSString type') =>
-            self -> type' -> Bool -> Bool -> m ()
-initEvent self type' bubbles cancelable
-  = liftDOM
-      (void
-         ((toEvent self) ^. jsf "initEvent"
-            [toJSVal type', toJSVal bubbles, toJSVal cancelable]))
-pattern NONE = 0
-pattern CAPTURING_PHASE = 1
-pattern AT_TARGET = 2
-pattern BUBBLING_PHASE = 3
+-- | <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 (((((Types.toEvent self) ^. js "target") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.type Mozilla Event.type documentation> 
-getType ::
-        (MonadDOM m, IsEvent self, FromJSString result) => self -> m result
-getType self
-  = liftDOM (((toEvent self) ^. js "type") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Event/target MDN Event.target documentation>
+getTargetUnchecked :: (MonadDOM m, IsEvent self) => self -> m EventTarget
+getTargetUnchecked self = liftDOM ((((Types.toEvent self) ^. js "target") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.target Mozilla Event.target documentation> 
-getTarget ::
-          (MonadDOM m, IsEvent self) => self -> m (Maybe EventTarget)
-getTarget self
-  = liftDOM (((toEvent self) ^. js "target") >>= fromJSVal)
+-- | <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 ((((Types.toEvent self) ^. js "srcElement") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.target Mozilla Event.target documentation> 
-getTargetUnsafe ::
-                (MonadDOM m, IsEvent self, HasCallStack) => self -> m EventTarget
-getTargetUnsafe self
-  = liftDOM
-      ((((toEvent self) ^. js "target") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((((Types.toEvent self) ^. js "srcElement") >>= 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> 
-getTargetUnchecked ::
-                   (MonadDOM m, IsEvent self) => self -> m EventTarget
-getTargetUnchecked self
-  = liftDOM (((toEvent self) ^. js "target") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Event/srcElement MDN Event.srcElement documentation>
+getSrcElementUnchecked :: (MonadDOM m, IsEvent self) => self -> m EventTarget
+getSrcElementUnchecked self = liftDOM ((((Types.toEvent self) ^. js "srcElement") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.currentTarget Mozilla Event.currentTarget documentation> 
-getCurrentTarget ::
-                 (MonadDOM m, IsEvent self) => self -> m (Maybe EventTarget)
-getCurrentTarget self
-  = liftDOM (((toEvent self) ^. js "currentTarget") >>= fromJSVal)
+-- | <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 ((((Types.toEvent self) ^. js "currentTarget") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.currentTarget Mozilla Event.currentTarget documentation> 
-getCurrentTargetUnsafe ::
-                       (MonadDOM m, IsEvent self, HasCallStack) => self -> m EventTarget
-getCurrentTargetUnsafe self
-  = liftDOM
-      ((((toEvent self) ^. js "currentTarget") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((((Types.toEvent self) ^. js "currentTarget") >>= 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> 
-getCurrentTargetUnchecked ::
-                          (MonadDOM m, IsEvent self) => self -> m EventTarget
-getCurrentTargetUnchecked self
-  = liftDOM
-      (((toEvent self) ^. js "currentTarget") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Event/currentTarget MDN Event.currentTarget documentation>
+getCurrentTargetUnchecked :: (MonadDOM m, IsEvent self) => self -> m EventTarget
+getCurrentTargetUnchecked self = liftDOM ((((Types.toEvent self) ^. js "currentTarget") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.eventPhase Mozilla Event.eventPhase documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Event/eventPhase MDN Event.eventPhase documentation>
 getEventPhase :: (MonadDOM m, IsEvent self) => self -> m Word
-getEventPhase self
-  = liftDOM
-      (round <$> (((toEvent self) ^. js "eventPhase") >>= valToNumber))
+getEventPhase self = liftDOM ((P.round <$> (((Types.toEvent self) ^. js "eventPhase") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.cancelBubble Mozilla Event.cancelBubble documentation> 
-setCancelBubble ::
-                (MonadDOM m, IsEvent self) => self -> Bool -> m ()
-setCancelBubble self val
-  = liftDOM ((toEvent self) ^. jss "cancelBubble" (toJSVal val))
+-- | <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 ((Types.toEvent self) ^. jss "cancelBubble" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.cancelBubble Mozilla Event.cancelBubble documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Event/cancelBubble MDN Event.cancelBubble documentation>
 getCancelBubble :: (MonadDOM m, IsEvent self) => self -> m Bool
-getCancelBubble self
-  = liftDOM (((toEvent self) ^. js "cancelBubble") >>= valToBool)
+getCancelBubble self = liftDOM ((((Types.toEvent self) ^. js "cancelBubble") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.bubbles Mozilla Event.bubbles documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Event/bubbles MDN Event.bubbles documentation>
 getBubbles :: (MonadDOM m, IsEvent self) => self -> m Bool
-getBubbles self
-  = liftDOM (((toEvent self) ^. js "bubbles") >>= valToBool)
+getBubbles self = liftDOM ((((Types.toEvent self) ^. js "bubbles") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.cancelable Mozilla Event.cancelable documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Event/cancelable MDN Event.cancelable documentation>
 getCancelable :: (MonadDOM m, IsEvent self) => self -> m Bool
-getCancelable self
-  = liftDOM (((toEvent self) ^. js "cancelable") >>= valToBool)
+getCancelable self = liftDOM ((((Types.toEvent self) ^. js "cancelable") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.defaultPrevented Mozilla Event.defaultPrevented documentation> 
+-- | <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 ((Types.toEvent self) ^. jss "returnValue" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Event/returnValue MDN Event.returnValue documentation>
+getReturnValue :: (MonadDOM m, IsEvent self) => self -> m Bool
+getReturnValue self = liftDOM ((((Types.toEvent self) ^. js "returnValue") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Event/defaultPrevented MDN Event.defaultPrevented documentation>
 getDefaultPrevented :: (MonadDOM m, IsEvent self) => self -> m Bool
-getDefaultPrevented self
-  = liftDOM (((toEvent self) ^. js "defaultPrevented") >>= valToBool)
+getDefaultPrevented self = liftDOM ((((Types.toEvent self) ^. js "defaultPrevented") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.composed Mozilla Event.composed documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Event/composed MDN Event.composed documentation>
 getComposed :: (MonadDOM m, IsEvent self) => self -> m Bool
-getComposed self
-  = liftDOM (((toEvent self) ^. js "composed") >>= valToBool)
+getComposed self = liftDOM ((((Types.toEvent self) ^. js "composed") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.isTrusted Mozilla Event.isTrusted documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Event/isTrusted MDN Event.isTrusted documentation>
 getIsTrusted :: (MonadDOM m, IsEvent self) => self -> m Bool
-getIsTrusted self
-  = liftDOM (((toEvent self) ^. js "isTrusted") >>= valToBool)
+getIsTrusted self = liftDOM ((((Types.toEvent self) ^. js "isTrusted") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.timeStamp Mozilla Event.timeStamp documentation> 
-getTimeStamp :: (MonadDOM m, IsEvent self) => self -> m Word
-getTimeStamp self
-  = liftDOM
-      (round <$> (((toEvent self) ^. js "timeStamp") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Event/timeStamp MDN Event.timeStamp documentation>
+getTimeStamp :: (MonadDOM m, IsEvent self) => self -> m Double
+getTimeStamp self = liftDOM ((((Types.toEvent self) ^. js "timeStamp") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.srcElement Mozilla Event.srcElement documentation> 
-getSrcElement ::
-              (MonadDOM m, IsEvent self) => self -> m EventTarget
-getSrcElement self
-  = liftDOM
-      (((toEvent self) ^. js "srcElement") >>= fromJSValUnchecked)
+pattern NONE = 0
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.returnValue Mozilla Event.returnValue documentation> 
-setReturnValue ::
-               (MonadDOM m, IsEvent self) => self -> Bool -> m ()
-setReturnValue self val
-  = liftDOM ((toEvent self) ^. jss "returnValue" (toJSVal val))
+pattern CAPTURING_PHASE = 1
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.returnValue Mozilla Event.returnValue documentation> 
-getReturnValue :: (MonadDOM m, IsEvent self) => self -> m Bool
-getReturnValue self
-  = liftDOM (((toEvent self) ^. js "returnValue") >>= valToBool)
+pattern AT_TARGET = 2
+
+pattern BUBBLING_PHASE = 3
diff --git a/src/JSDOM/Generated/EventCounts.hs b/src/JSDOM/Generated/EventCounts.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EventCounts.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from event-timing (webref). Do not edit.
+module JSDOM.Generated.EventCounts
+       (EventCounts(..), gTypeEventCounts)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/EventInit.hs b/src/JSDOM/Generated/EventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EventInit.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.EventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://dom.spec.whatwg.org/#dictdef-eventinit EventInit specification>
+newEventInit :: (MonadDOM m) => m EventInit
+newEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-bubbles EventInit.bubbles specification>
+setBubbles :: (MonadDOM m, IsEventInit self) => self -> Bool -> m ()
+setBubbles self val = liftDOM (void ((Types.toEventInit self) ^. jss "bubbles" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-bubbles EventInit.bubbles specification>
+getBubbles :: (MonadDOM m, IsEventInit self) => self -> m (Maybe Bool)
+getBubbles self = liftDOM ((((Types.toEventInit self) ^. js "bubbles") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-bubbles EventInit.bubbles specification>
+getBubblesUnsafe :: (MonadDOM m, IsEventInit self, HasCallStack) => self -> m Bool
+getBubblesUnsafe self = liftDOM (((((Types.toEventInit self) ^. js "bubbles") >>= 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 ((((Types.toEventInit self) ^. js "bubbles") >>= valToBool))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-cancelable EventInit.cancelable specification>
+setCancelable :: (MonadDOM m, IsEventInit self) => self -> Bool -> m ()
+setCancelable self val = liftDOM (void ((Types.toEventInit self) ^. jss "cancelable" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-cancelable EventInit.cancelable specification>
+getCancelable :: (MonadDOM m, IsEventInit self) => self -> m (Maybe Bool)
+getCancelable self = liftDOM ((((Types.toEventInit self) ^. js "cancelable") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-cancelable EventInit.cancelable specification>
+getCancelableUnsafe :: (MonadDOM m, IsEventInit self, HasCallStack) => self -> m Bool
+getCancelableUnsafe self = liftDOM (((((Types.toEventInit self) ^. js "cancelable") >>= 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 ((((Types.toEventInit self) ^. js "cancelable") >>= valToBool))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-composed EventInit.composed specification>
+setComposed :: (MonadDOM m, IsEventInit self) => self -> Bool -> m ()
+setComposed self val = liftDOM (void ((Types.toEventInit self) ^. jss "composed" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-composed EventInit.composed specification>
+getComposed :: (MonadDOM m, IsEventInit self) => self -> m (Maybe Bool)
+getComposed self = liftDOM ((((Types.toEventInit self) ^. js "composed") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventinit-composed EventInit.composed specification>
+getComposedUnsafe :: (MonadDOM m, IsEventInit self, HasCallStack) => self -> m Bool
+getComposedUnsafe self = liftDOM (((((Types.toEventInit self) ^. js "composed") >>= 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 ((((Types.toEventInit self) ^. js "composed") >>= valToBool))
diff --git a/src/JSDOM/Generated/EventListener.hs b/src/JSDOM/Generated/EventListener.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/EventListener.hs
+++ /dev/null
@@ -1,25 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.EventListener
-       (handleEvent, EventListener(..), gTypeEventListener) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventListener.handleEvent Mozilla EventListener.handleEvent documentation> 
-handleEvent ::
-            (MonadDOM m, IsEvent event) => EventListener -> event -> m ()
-handleEvent self event
-  = liftDOM (void (self ^. jsf "handleEvent" [toJSVal event]))
diff --git a/src/JSDOM/Generated/EventListenerOptions.hs b/src/JSDOM/Generated/EventListenerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EventListenerOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.EventListenerOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://dom.spec.whatwg.org/#dictdef-eventlisteneroptions EventListenerOptions specification>
+newEventListenerOptions :: (MonadDOM m) => m EventListenerOptions
+newEventListenerOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventlisteneroptions-capture EventListenerOptions.capture specification>
+setCapture :: (MonadDOM m, IsEventListenerOptions self) => self -> Bool -> m ()
+setCapture self val = liftDOM (void ((Types.toEventListenerOptions self) ^. jss "capture" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventlisteneroptions-capture EventListenerOptions.capture specification>
+getCapture :: (MonadDOM m, IsEventListenerOptions self) => self -> m (Maybe Bool)
+getCapture self = liftDOM ((((Types.toEventListenerOptions self) ^. js "capture") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-eventlisteneroptions-capture EventListenerOptions.capture specification>
+getCaptureUnsafe :: (MonadDOM m, IsEventListenerOptions self, HasCallStack) => self -> m Bool
+getCaptureUnsafe self = liftDOM (((((Types.toEventListenerOptions self) ^. js "capture") >>= 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 ((((Types.toEventListenerOptions self) ^. js "capture") >>= valToBool))
diff --git a/src/JSDOM/Generated/EventModifierInit.hs b/src/JSDOM/Generated/EventModifierInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EventModifierInit.hs
@@ -0,0 +1,244 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
+module JSDOM.Generated.EventModifierInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/uievents/#dictdef-eventmodifierinit EventModifierInit specification>
+newEventModifierInit :: (MonadDOM m) => m EventModifierInit
+newEventModifierInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-ctrlkey EventModifierInit.ctrlKey specification>
+setCtrlKey :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setCtrlKey self val = liftDOM (void ((Types.toEventModifierInit self) ^. jss "ctrlKey" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-ctrlkey EventModifierInit.ctrlKey specification>
+getCtrlKey :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getCtrlKey self = liftDOM ((((Types.toEventModifierInit self) ^. js "ctrlKey") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-ctrlkey EventModifierInit.ctrlKey specification>
+getCtrlKeyUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getCtrlKeyUnsafe self = liftDOM (((((Types.toEventModifierInit self) ^. js "ctrlKey") >>= 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 ((((Types.toEventModifierInit self) ^. js "ctrlKey") >>= valToBool))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-shiftkey EventModifierInit.shiftKey specification>
+setShiftKey :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setShiftKey self val = liftDOM (void ((Types.toEventModifierInit self) ^. jss "shiftKey" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-shiftkey EventModifierInit.shiftKey specification>
+getShiftKey :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getShiftKey self = liftDOM ((((Types.toEventModifierInit self) ^. js "shiftKey") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-shiftkey EventModifierInit.shiftKey specification>
+getShiftKeyUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getShiftKeyUnsafe self = liftDOM (((((Types.toEventModifierInit self) ^. js "shiftKey") >>= 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 ((((Types.toEventModifierInit self) ^. js "shiftKey") >>= valToBool))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-altkey EventModifierInit.altKey specification>
+setAltKey :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setAltKey self val = liftDOM (void ((Types.toEventModifierInit self) ^. jss "altKey" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-altkey EventModifierInit.altKey specification>
+getAltKey :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getAltKey self = liftDOM ((((Types.toEventModifierInit self) ^. js "altKey") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-altkey EventModifierInit.altKey specification>
+getAltKeyUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getAltKeyUnsafe self = liftDOM (((((Types.toEventModifierInit self) ^. js "altKey") >>= 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 ((((Types.toEventModifierInit self) ^. js "altKey") >>= valToBool))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-metakey EventModifierInit.metaKey specification>
+setMetaKey :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setMetaKey self val = liftDOM (void ((Types.toEventModifierInit self) ^. jss "metaKey" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-metakey EventModifierInit.metaKey specification>
+getMetaKey :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getMetaKey self = liftDOM ((((Types.toEventModifierInit self) ^. js "metaKey") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-metakey EventModifierInit.metaKey specification>
+getMetaKeyUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getMetaKeyUnsafe self = liftDOM (((((Types.toEventModifierInit self) ^. js "metaKey") >>= 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 ((((Types.toEventModifierInit self) ^. js "metaKey") >>= valToBool))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifieraltgraph EventModifierInit.modifierAltGraph specification>
+setModifierAltGraph :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierAltGraph self val = liftDOM (void ((Types.toEventModifierInit self) ^. jss "modifierAltGraph" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifieraltgraph EventModifierInit.modifierAltGraph specification>
+getModifierAltGraph :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierAltGraph self = liftDOM ((((Types.toEventModifierInit self) ^. js "modifierAltGraph") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifieraltgraph EventModifierInit.modifierAltGraph specification>
+getModifierAltGraphUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierAltGraphUnsafe self = liftDOM (((((Types.toEventModifierInit self) ^. js "modifierAltGraph") >>= 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 ((((Types.toEventModifierInit self) ^. js "modifierAltGraph") >>= valToBool))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiercapslock EventModifierInit.modifierCapsLock specification>
+setModifierCapsLock :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierCapsLock self val = liftDOM (void ((Types.toEventModifierInit self) ^. jss "modifierCapsLock" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiercapslock EventModifierInit.modifierCapsLock specification>
+getModifierCapsLock :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierCapsLock self = liftDOM ((((Types.toEventModifierInit self) ^. js "modifierCapsLock") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiercapslock EventModifierInit.modifierCapsLock specification>
+getModifierCapsLockUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierCapsLockUnsafe self = liftDOM (((((Types.toEventModifierInit self) ^. js "modifierCapsLock") >>= 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 ((((Types.toEventModifierInit self) ^. js "modifierCapsLock") >>= valToBool))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierfn EventModifierInit.modifierFn specification>
+setModifierFn :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierFn self val = liftDOM (void ((Types.toEventModifierInit self) ^. jss "modifierFn" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierfn EventModifierInit.modifierFn specification>
+getModifierFn :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierFn self = liftDOM ((((Types.toEventModifierInit self) ^. js "modifierFn") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierfn EventModifierInit.modifierFn specification>
+getModifierFnUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierFnUnsafe self = liftDOM (((((Types.toEventModifierInit self) ^. js "modifierFn") >>= 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 ((((Types.toEventModifierInit self) ^. js "modifierFn") >>= valToBool))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierfnlock EventModifierInit.modifierFnLock specification>
+setModifierFnLock :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierFnLock self val = liftDOM (void ((Types.toEventModifierInit self) ^. jss "modifierFnLock" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierfnlock EventModifierInit.modifierFnLock specification>
+getModifierFnLock :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierFnLock self = liftDOM ((((Types.toEventModifierInit self) ^. js "modifierFnLock") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierfnlock EventModifierInit.modifierFnLock specification>
+getModifierFnLockUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierFnLockUnsafe self = liftDOM (((((Types.toEventModifierInit self) ^. js "modifierFnLock") >>= 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 ((((Types.toEventModifierInit self) ^. js "modifierFnLock") >>= valToBool))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierhyper EventModifierInit.modifierHyper specification>
+setModifierHyper :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierHyper self val = liftDOM (void ((Types.toEventModifierInit self) ^. jss "modifierHyper" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierhyper EventModifierInit.modifierHyper specification>
+getModifierHyper :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierHyper self = liftDOM ((((Types.toEventModifierInit self) ^. js "modifierHyper") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierhyper EventModifierInit.modifierHyper specification>
+getModifierHyperUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierHyperUnsafe self = liftDOM (((((Types.toEventModifierInit self) ^. js "modifierHyper") >>= 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 ((((Types.toEventModifierInit self) ^. js "modifierHyper") >>= valToBool))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiernumlock EventModifierInit.modifierNumLock specification>
+setModifierNumLock :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierNumLock self val = liftDOM (void ((Types.toEventModifierInit self) ^. jss "modifierNumLock" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiernumlock EventModifierInit.modifierNumLock specification>
+getModifierNumLock :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierNumLock self = liftDOM ((((Types.toEventModifierInit self) ^. js "modifierNumLock") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiernumlock EventModifierInit.modifierNumLock specification>
+getModifierNumLockUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierNumLockUnsafe self = liftDOM (((((Types.toEventModifierInit self) ^. js "modifierNumLock") >>= 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 ((((Types.toEventModifierInit self) ^. js "modifierNumLock") >>= valToBool))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierscrolllock EventModifierInit.modifierScrollLock specification>
+setModifierScrollLock :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierScrollLock self val = liftDOM (void ((Types.toEventModifierInit self) ^. jss "modifierScrollLock" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierscrolllock EventModifierInit.modifierScrollLock specification>
+getModifierScrollLock :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierScrollLock self = liftDOM ((((Types.toEventModifierInit self) ^. js "modifierScrollLock") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifierscrolllock EventModifierInit.modifierScrollLock specification>
+getModifierScrollLockUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierScrollLockUnsafe self = liftDOM (((((Types.toEventModifierInit self) ^. js "modifierScrollLock") >>= 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 ((((Types.toEventModifierInit self) ^. js "modifierScrollLock") >>= valToBool))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersuper EventModifierInit.modifierSuper specification>
+setModifierSuper :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierSuper self val = liftDOM (void ((Types.toEventModifierInit self) ^. jss "modifierSuper" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersuper EventModifierInit.modifierSuper specification>
+getModifierSuper :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierSuper self = liftDOM ((((Types.toEventModifierInit self) ^. js "modifierSuper") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersuper EventModifierInit.modifierSuper specification>
+getModifierSuperUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierSuperUnsafe self = liftDOM (((((Types.toEventModifierInit self) ^. js "modifierSuper") >>= 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 ((((Types.toEventModifierInit self) ^. js "modifierSuper") >>= valToBool))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersymbol EventModifierInit.modifierSymbol specification>
+setModifierSymbol :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierSymbol self val = liftDOM (void ((Types.toEventModifierInit self) ^. jss "modifierSymbol" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersymbol EventModifierInit.modifierSymbol specification>
+getModifierSymbol :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierSymbol self = liftDOM ((((Types.toEventModifierInit self) ^. js "modifierSymbol") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersymbol EventModifierInit.modifierSymbol specification>
+getModifierSymbolUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierSymbolUnsafe self = liftDOM (((((Types.toEventModifierInit self) ^. js "modifierSymbol") >>= 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 ((((Types.toEventModifierInit self) ^. js "modifierSymbol") >>= valToBool))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersymbollock EventModifierInit.modifierSymbolLock specification>
+setModifierSymbolLock :: (MonadDOM m, IsEventModifierInit self) => self -> Bool -> m ()
+setModifierSymbolLock self val = liftDOM (void ((Types.toEventModifierInit self) ^. jss "modifierSymbolLock" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersymbollock EventModifierInit.modifierSymbolLock specification>
+getModifierSymbolLock :: (MonadDOM m, IsEventModifierInit self) => self -> m (Maybe Bool)
+getModifierSymbolLock self = liftDOM ((((Types.toEventModifierInit self) ^. js "modifierSymbolLock") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-eventmodifierinit-modifiersymbollock EventModifierInit.modifierSymbolLock specification>
+getModifierSymbolLockUnsafe :: (MonadDOM m, IsEventModifierInit self, HasCallStack) => self -> m Bool
+getModifierSymbolLockUnsafe self = liftDOM (((((Types.toEventModifierInit self) ^. js "modifierSymbolLock") >>= 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 ((((Types.toEventModifierInit self) ^. js "modifierSymbolLock") >>= valToBool))
diff --git a/src/JSDOM/Generated/EventSource.hs b/src/JSDOM/Generated/EventSource.hs
--- a/src/JSDOM/Generated/EventSource.hs
+++ b/src/JSDOM/Generated/EventSource.hs
@@ -1,65 +1,54 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.EventSource
-       (newEventSource, close, pattern CONNECTING, pattern OPEN,
-        pattern CLOSED, getUrl, getWithCredentials, getReadyState, open,
-        message, error, EventSource(..), gTypeEventSource)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource Mozilla EventSource documentation> 
-newEventSource ::
-               (MonadDOM m, ToJSString url) =>
-                 url -> Maybe EventSourceInit -> m EventSource
-newEventSource url eventSourceInitDict
-  = liftDOM
-      (EventSource <$>
-         new (jsg "EventSource") [toJSVal url, toJSVal eventSourceInitDict])
+-- | <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 (((new (jsg "EventSource") [toJSVal url, P.maybe (P.return jsUndefined) toJSVal eventSourceInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.close Mozilla EventSource.close documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/EventSource/close MDN EventSource.close documentation>
 close :: (MonadDOM m) => EventSource -> m ()
 close self = liftDOM (void (self ^. jsf "close" ()))
-pattern CONNECTING = 0
-pattern OPEN = 1
-pattern CLOSED = 2
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.url Mozilla EventSource.url documentation> 
-getUrl ::
-       (MonadDOM m, FromJSString result) => EventSource -> m result
-getUrl self = liftDOM ((self ^. js "url") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/EventSource/url MDN EventSource.url documentation>
+getUrl :: (MonadDOM m, FromJSString result) => EventSource -> m result
+getUrl self = liftDOM (((self ^. js "url") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.withCredentials Mozilla EventSource.withCredentials documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/EventSource/withCredentials MDN EventSource.withCredentials documentation>
 getWithCredentials :: (MonadDOM m) => EventSource -> m Bool
-getWithCredentials self
-  = liftDOM ((self ^. js "withCredentials") >>= valToBool)
+getWithCredentials self = liftDOM (((self ^. js "withCredentials") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.readyState Mozilla EventSource.readyState documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/EventSource/readyState MDN EventSource.readyState documentation>
 getReadyState :: (MonadDOM m) => EventSource -> m Word
-getReadyState self
-  = liftDOM (round <$> ((self ^. js "readyState") >>= valToNumber))
+getReadyState self = liftDOM ((P.round <$> ((self ^. js "readyState") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.onopen Mozilla EventSource.onopen documentation> 
+pattern CONNECTING = 0
+
+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/JSDOM/Generated/EventSourceInit.hs b/src/JSDOM/Generated/EventSourceInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/EventSourceInit.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.EventSourceInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/server-sent-events.html#eventsourceinit EventSourceInit specification>
+newEventSourceInit :: (MonadDOM m) => m EventSourceInit
+newEventSourceInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "withCredentials" (toJSVal val)))
+
+-- | <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 (((self ^. js "withCredentials") >>= 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 ((((self ^. js "withCredentials") >>= 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 (((self ^. js "withCredentials") >>= valToBool))
diff --git a/src/JSDOM/Generated/EventTarget.hs b/src/JSDOM/Generated/EventTarget.hs
--- a/src/JSDOM/Generated/EventTarget.hs
+++ b/src/JSDOM/Generated/EventTarget.hs
@@ -1,61 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.EventTarget
-       (addEventListener, removeEventListener, dispatchEvent,
-        dispatchEvent_, EventTarget(..), gTypeEventTarget, IsEventTarget,
-        toEventTarget)
+       (newEventTarget, addEventListener, dispatchEvent, dispatchEvent_, removeEventListener, EventTarget(..), gTypeEventTarget, IsEventTarget, toEventTarget)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.Enums
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener Mozilla EventTarget.addEventListener documentation> 
-addEventListener ::
-                 (MonadDOM m, IsEventTarget self, ToJSString type',
-                  IsAddEventListenerOptionsOrBool options) =>
-                   self -> type' -> Maybe EventListener -> options -> m ()
-addEventListener self type' callback options
-  = liftDOM
-      (void
-         ((toEventTarget self) ^. jsf "addEventListener"
-            [toJSVal type', toJSVal callback, toJSVal options]))
+-- | <https://developer.mozilla.org/docs/Web/API/EventTarget/EventTarget MDN EventTarget. documentation>
+newEventTarget :: (MonadDOM m) => m EventTarget
+newEventTarget = liftDOM (((new (jsg "EventTarget") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.removeEventListener Mozilla EventTarget.removeEventListener documentation> 
-removeEventListener ::
-                    (MonadDOM m, IsEventTarget self, ToJSString type',
-                     IsEventListenerOptionsOrBool options) =>
-                      self -> type' -> Maybe EventListener -> options -> m ()
-removeEventListener self type' callback options
-  = liftDOM
-      (void
-         ((toEventTarget self) ^. jsf "removeEventListener"
-            [toJSVal type', toJSVal callback, toJSVal options]))
+-- | <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 ((Types.toEventTarget self) ^. jsf "addEventListener" [toJSVal type', toJSVal callback', P.maybe (P.return jsUndefined) toJSVal options]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.dispatchEvent Mozilla EventTarget.dispatchEvent documentation> 
-dispatchEvent ::
-              (MonadDOM m, IsEventTarget self, IsEvent event) =>
-                self -> event -> m Bool
-dispatchEvent self event
-  = liftDOM
-      (((toEventTarget self) ^. jsf "dispatchEvent" [toJSVal event]) >>=
-         valToBool)
+-- | <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 ((((Types.toEventTarget self) ^. jsf "dispatchEvent" [toJSVal event]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.dispatchEvent Mozilla EventTarget.dispatchEvent documentation> 
-dispatchEvent_ ::
-               (MonadDOM m, IsEventTarget self, IsEvent event) =>
-                 self -> event -> m ()
-dispatchEvent_ self event
-  = liftDOM
-      (void
-         ((toEventTarget self) ^. jsf "dispatchEvent" [toJSVal 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 ((Types.toEventTarget self) ^. jsf "dispatchEvent" [toJSVal event]))
+
+-- | <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 ((Types.toEventTarget self) ^. jsf "removeEventListener" [toJSVal type', toJSVal callback', P.maybe (P.return jsUndefined) toJSVal options]))
diff --git a/src/JSDOM/Generated/ExtendableCookieChangeEvent.hs b/src/JSDOM/Generated/ExtendableCookieChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ExtendableCookieChangeEvent.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module JSDOM.Generated.ExtendableCookieChangeEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "ExtendableCookieChangeEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableCookieChangeEvent/changed MDN ExtendableCookieChangeEvent.changed documentation>
+getChanged :: (MonadDOM m) => ExtendableCookieChangeEvent -> m [CookieListItem]
+getChanged self = liftDOM (((self ^. js "changed") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableCookieChangeEvent/deleted MDN ExtendableCookieChangeEvent.deleted documentation>
+getDeleted :: (MonadDOM m) => ExtendableCookieChangeEvent -> m [CookieListItem]
+getDeleted self = liftDOM (((self ^. js "deleted") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ExtendableCookieChangeEventInit.hs b/src/JSDOM/Generated/ExtendableCookieChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ExtendableCookieChangeEventInit.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cookiestore (webref). Do not edit.
+module JSDOM.Generated.ExtendableCookieChangeEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://cookiestore.spec.whatwg.org/#dictdef-extendablecookiechangeeventinit ExtendableCookieChangeEventInit specification>
+newExtendableCookieChangeEventInit :: (MonadDOM m) => m ExtendableCookieChangeEventInit
+newExtendableCookieChangeEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-extendablecookiechangeeventinit-changed ExtendableCookieChangeEventInit.changed specification>
+setChanged :: (MonadDOM m) => ExtendableCookieChangeEventInit -> [CookieListItem] -> m ()
+setChanged self val = liftDOM (void (self ^. jss "changed" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-extendablecookiechangeeventinit-changed ExtendableCookieChangeEventInit.changed specification>
+getChanged :: (MonadDOM m) => ExtendableCookieChangeEventInit -> m (Maybe [CookieListItem])
+getChanged self = liftDOM (((self ^. js "changed") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-extendablecookiechangeeventinit-changed ExtendableCookieChangeEventInit.changed specification>
+getChangedUnsafe :: (MonadDOM m, HasCallStack) => ExtendableCookieChangeEventInit -> m [CookieListItem]
+getChangedUnsafe self = liftDOM ((((self ^. js "changed") >>= 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 (((self ^. js "changed") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-extendablecookiechangeeventinit-deleted ExtendableCookieChangeEventInit.deleted specification>
+setDeleted :: (MonadDOM m) => ExtendableCookieChangeEventInit -> [CookieListItem] -> m ()
+setDeleted self val = liftDOM (void (self ^. jss "deleted" (toJSVal val)))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-extendablecookiechangeeventinit-deleted ExtendableCookieChangeEventInit.deleted specification>
+getDeleted :: (MonadDOM m) => ExtendableCookieChangeEventInit -> m (Maybe [CookieListItem])
+getDeleted self = liftDOM (((self ^. js "deleted") >>= fromJSValUnchecked))
+
+-- | <https://cookiestore.spec.whatwg.org/#dom-extendablecookiechangeeventinit-deleted ExtendableCookieChangeEventInit.deleted specification>
+getDeletedUnsafe :: (MonadDOM m, HasCallStack) => ExtendableCookieChangeEventInit -> m [CookieListItem]
+getDeletedUnsafe self = liftDOM ((((self ^. js "deleted") >>= 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 (((self ^. js "deleted") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ExtendableEvent.hs b/src/JSDOM/Generated/ExtendableEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ExtendableEvent.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.ExtendableEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "ExtendableEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toExtendableEvent self) ^. jsf "waitUntil" [toJSVal f]))
diff --git a/src/JSDOM/Generated/ExtendableEventInit.hs b/src/JSDOM/Generated/ExtendableEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ExtendableEventInit.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.ExtendableEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-extendableeventinit ExtendableEventInit specification>
+newExtendableEventInit :: (MonadDOM m) => m ExtendableEventInit
+newExtendableEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ExtendableMessageEvent.hs b/src/JSDOM/Generated/ExtendableMessageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ExtendableMessageEvent.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.ExtendableMessageEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "ExtendableMessageEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableMessageEvent/data MDN ExtendableMessageEvent.data documentation>
+getData :: (MonadDOM m) => ExtendableMessageEvent -> m JSVal
+getData self = liftDOM (self ^. js "data")
+
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableMessageEvent/origin MDN ExtendableMessageEvent.origin documentation>
+getOrigin :: (MonadDOM m, FromJSString result) => ExtendableMessageEvent -> m result
+getOrigin self = liftDOM (((self ^. js "origin") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableMessageEvent/lastEventId MDN ExtendableMessageEvent.lastEventId documentation>
+getLastEventId :: (MonadDOM m, FromJSString result) => ExtendableMessageEvent -> m result
+getLastEventId self = liftDOM (((self ^. js "lastEventId") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableMessageEvent/source MDN ExtendableMessageEvent.source documentation>
+getSource :: (MonadDOM m) => ExtendableMessageEvent -> m (Maybe ClientOrServiceWorkerOrMessagePort)
+getSource self = liftDOM (((self ^. js "source") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableMessageEvent/source MDN ExtendableMessageEvent.source documentation>
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => ExtendableMessageEvent -> m ClientOrServiceWorkerOrMessagePort
+getSourceUnsafe self = liftDOM ((((self ^. js "source") >>= 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 (((self ^. js "source") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ExtendableMessageEvent/ports MDN ExtendableMessageEvent.ports documentation>
+getPorts :: (MonadDOM m) => ExtendableMessageEvent -> m [MessagePort]
+getPorts self = liftDOM (((self ^. js "ports") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ExtendableMessageEventInit.hs b/src/JSDOM/Generated/ExtendableMessageEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ExtendableMessageEventInit.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.ExtendableMessageEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-extendablemessageeventinit ExtendableMessageEventInit specification>
+newExtendableMessageEventInit :: (MonadDOM m) => m ExtendableMessageEventInit
+newExtendableMessageEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-data ExtendableMessageEventInit.data specification>
+setData :: (MonadDOM m) => ExtendableMessageEventInit -> JSVal -> m ()
+setData self val = liftDOM (void (self ^. jss "data" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-data ExtendableMessageEventInit.data specification>
+getData :: (MonadDOM m) => ExtendableMessageEventInit -> m JSVal
+getData self = liftDOM (self ^. js "data")
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-origin ExtendableMessageEventInit.origin specification>
+setOrigin :: (MonadDOM m, ToJSString val) => ExtendableMessageEventInit -> val -> m ()
+setOrigin self val = liftDOM (void (self ^. jss "origin" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-origin ExtendableMessageEventInit.origin specification>
+getOrigin :: (MonadDOM m, FromJSString result) => ExtendableMessageEventInit -> m (Maybe result)
+getOrigin self = liftDOM (((self ^. js "origin") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-origin ExtendableMessageEventInit.origin specification>
+getOriginUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ExtendableMessageEventInit -> m result
+getOriginUnsafe self = liftDOM ((((self ^. js "origin") >>= fromMaybeJSString) >>= 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 (((self ^. js "origin") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-lasteventid ExtendableMessageEventInit.lastEventId specification>
+setLastEventId :: (MonadDOM m, ToJSString val) => ExtendableMessageEventInit -> val -> m ()
+setLastEventId self val = liftDOM (void (self ^. jss "lastEventId" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-lasteventid ExtendableMessageEventInit.lastEventId specification>
+getLastEventId :: (MonadDOM m, FromJSString result) => ExtendableMessageEventInit -> m (Maybe result)
+getLastEventId self = liftDOM (((self ^. js "lastEventId") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-lasteventid ExtendableMessageEventInit.lastEventId specification>
+getLastEventIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ExtendableMessageEventInit -> m result
+getLastEventIdUnsafe self = liftDOM ((((self ^. js "lastEventId") >>= fromMaybeJSString) >>= 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 (((self ^. js "lastEventId") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "source" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-source ExtendableMessageEventInit.source specification>
+getSource :: (MonadDOM m) => ExtendableMessageEventInit -> m (Maybe ClientOrServiceWorkerOrMessagePort)
+getSource self = liftDOM (((self ^. js "source") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-source ExtendableMessageEventInit.source specification>
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => ExtendableMessageEventInit -> m ClientOrServiceWorkerOrMessagePort
+getSourceUnsafe self = liftDOM ((((self ^. js "source") >>= 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 (((self ^. js "source") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-ports ExtendableMessageEventInit.ports specification>
+setPorts :: (MonadDOM m) => ExtendableMessageEventInit -> [MessagePort] -> m ()
+setPorts self val = liftDOM (void (self ^. jss "ports" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-ports ExtendableMessageEventInit.ports specification>
+getPorts :: (MonadDOM m) => ExtendableMessageEventInit -> m (Maybe [MessagePort])
+getPorts self = liftDOM (((self ^. js "ports") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-extendablemessageeventinit-ports ExtendableMessageEventInit.ports specification>
+getPortsUnsafe :: (MonadDOM m, HasCallStack) => ExtendableMessageEventInit -> m [MessagePort]
+getPortsUnsafe self = liftDOM ((((self ^. js "ports") >>= 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 (((self ^. js "ports") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/External.hs b/src/JSDOM/Generated/External.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/External.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.External
+       (addSearchProvider, isSearchProviderInstalled, External(..), gTypeExternal)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-external-addsearchprovider External.AddSearchProvider specification>
+addSearchProvider :: (MonadDOM m) => External -> m ()
+addSearchProvider self = liftDOM (void (self ^. jsf "AddSearchProvider" ()))
+
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-external-issearchproviderinstalled External.IsSearchProviderInstalled specification>
+isSearchProviderInstalled :: (MonadDOM m) => External -> m ()
+isSearchProviderInstalled self = liftDOM (void (self ^. jsf "IsSearchProviderInstalled" ()))
diff --git a/src/JSDOM/Generated/FederatedCredentialInit.hs b/src/JSDOM/Generated/FederatedCredentialInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FederatedCredentialInit.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
+module JSDOM.Generated.FederatedCredentialInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "id" (toJSVal id)) P.>> (o ^. jss "origin" (toJSVal origin)) P.>> (o ^. jss "provider" (toJSVal provider)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "name" (toJSVal val)))
+
+-- | <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 (((self ^. js "name") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "name") >>= fromMaybeJSString) >>= 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 (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "iconURL" (toJSVal val)))
+
+-- | <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 (((self ^. js "iconURL") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "iconURL") >>= fromMaybeJSString) >>= 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 (((self ^. js "iconURL") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "origin" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-origin FederatedCredentialInit.origin specification>
+getOrigin :: (MonadDOM m, FromJSString result) => FederatedCredentialInit -> m result
+getOrigin self = liftDOM (((self ^. js "origin") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "provider" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-federatedcredentialinit-provider FederatedCredentialInit.provider specification>
+getProvider :: (MonadDOM m, FromJSString result) => FederatedCredentialInit -> m result
+getProvider self = liftDOM (((self ^. js "provider") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "protocol" (toJSVal val)))
+
+-- | <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 (((self ^. js "protocol") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "protocol") >>= fromMaybeJSString) >>= 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 (((self ^. js "protocol") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FederatedCredentialRequestOptions.hs b/src/JSDOM/Generated/FederatedCredentialRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FederatedCredentialRequestOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
+module JSDOM.Generated.FederatedCredentialRequestOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dictdef-federatedcredentialrequestoptions FederatedCredentialRequestOptions specification>
+newFederatedCredentialRequestOptions :: (MonadDOM m) => m FederatedCredentialRequestOptions
+newFederatedCredentialRequestOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "providers" (toJSVal val)))
+
+-- | <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 (((self ^. js "providers") >>= 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 ((((self ^. js "providers") >>= 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 (((self ^. js "providers") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "protocols" (toJSVal val)))
+
+-- | <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 (((self ^. js "protocols") >>= 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 ((((self ^. js "protocols") >>= 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 (((self ^. js "protocols") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FetchEvent.hs b/src/JSDOM/Generated/FetchEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FetchEvent.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.FetchEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "FetchEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FetchEvent/respondWith MDN FetchEvent.respondWith documentation>
+respondWith :: (MonadDOM m) => FetchEvent -> JSVal -> m ()
+respondWith self r = liftDOM (void (self ^. jsf "respondWith" [toJSVal r]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FetchEvent/request MDN FetchEvent.request documentation>
+getRequest :: (MonadDOM m) => FetchEvent -> m Request
+getRequest self = liftDOM (((self ^. js "request") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FetchEvent/preloadResponse MDN FetchEvent.preloadResponse documentation>
+getPreloadResponse :: (MonadDOM m) => FetchEvent -> m JSVal
+getPreloadResponse self = liftDOM (((self ^. js "preloadResponse") >>= readPromise))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FetchEvent/clientId MDN FetchEvent.clientId documentation>
+getClientId :: (MonadDOM m, FromJSString result) => FetchEvent -> m result
+getClientId self = liftDOM (((self ^. js "clientId") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FetchEvent/resultingClientId MDN FetchEvent.resultingClientId documentation>
+getResultingClientId :: (MonadDOM m, FromJSString result) => FetchEvent -> m result
+getResultingClientId self = liftDOM (((self ^. js "resultingClientId") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FetchEvent/handled MDN FetchEvent.handled documentation>
+getHandled :: (MonadDOM m) => FetchEvent -> m ()
+getHandled self = liftDOM (void (((self ^. js "handled") >>= readPromise)))
diff --git a/src/JSDOM/Generated/FetchEventInit.hs b/src/JSDOM/Generated/FetchEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FetchEventInit.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.FetchEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-fetcheventinit FetchEventInit specification>
+newFetchEventInit :: (MonadDOM m) => Request -> m FetchEventInit
+newFetchEventInit request = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "request" (toJSVal request)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-request FetchEventInit.request specification>
+setRequest :: (MonadDOM m) => FetchEventInit -> Request -> m ()
+setRequest self val = liftDOM (void (self ^. jss "request" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-request FetchEventInit.request specification>
+getRequest :: (MonadDOM m) => FetchEventInit -> m Request
+getRequest self = liftDOM (((self ^. js "request") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-preloadresponse FetchEventInit.preloadResponse specification>
+setPreloadResponse :: (MonadDOM m) => FetchEventInit -> JSVal -> m ()
+setPreloadResponse self val = liftDOM (void (self ^. jss "preloadResponse" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-preloadresponse FetchEventInit.preloadResponse specification>
+getPreloadResponse :: (MonadDOM m) => FetchEventInit -> m (Maybe JSVal)
+getPreloadResponse self = liftDOM (((self ^. js "preloadResponse") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-preloadresponse FetchEventInit.preloadResponse specification>
+getPreloadResponseUnsafe :: (MonadDOM m, HasCallStack) => FetchEventInit -> m JSVal
+getPreloadResponseUnsafe self = liftDOM ((((self ^. js "preloadResponse") >>= 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 (((self ^. js "preloadResponse") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-clientid FetchEventInit.clientId specification>
+setClientId :: (MonadDOM m, ToJSString val) => FetchEventInit -> val -> m ()
+setClientId self val = liftDOM (void (self ^. jss "clientId" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-clientid FetchEventInit.clientId specification>
+getClientId :: (MonadDOM m, FromJSString result) => FetchEventInit -> m (Maybe result)
+getClientId self = liftDOM (((self ^. js "clientId") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-clientid FetchEventInit.clientId specification>
+getClientIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FetchEventInit -> m result
+getClientIdUnsafe self = liftDOM ((((self ^. js "clientId") >>= fromMaybeJSString) >>= 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 (((self ^. js "clientId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-resultingclientid FetchEventInit.resultingClientId specification>
+setResultingClientId :: (MonadDOM m, ToJSString val) => FetchEventInit -> val -> m ()
+setResultingClientId self val = liftDOM (void (self ^. jss "resultingClientId" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-resultingclientid FetchEventInit.resultingClientId specification>
+getResultingClientId :: (MonadDOM m, FromJSString result) => FetchEventInit -> m (Maybe result)
+getResultingClientId self = liftDOM (((self ^. js "resultingClientId") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-resultingclientid FetchEventInit.resultingClientId specification>
+getResultingClientIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FetchEventInit -> m result
+getResultingClientIdUnsafe self = liftDOM ((((self ^. js "resultingClientId") >>= fromMaybeJSString) >>= 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 (((self ^. js "resultingClientId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-replacesclientid FetchEventInit.replacesClientId specification>
+setReplacesClientId :: (MonadDOM m, ToJSString val) => FetchEventInit -> val -> m ()
+setReplacesClientId self val = liftDOM (void (self ^. jss "replacesClientId" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-replacesclientid FetchEventInit.replacesClientId specification>
+getReplacesClientId :: (MonadDOM m, FromJSString result) => FetchEventInit -> m (Maybe result)
+getReplacesClientId self = liftDOM (((self ^. js "replacesClientId") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-replacesclientid FetchEventInit.replacesClientId specification>
+getReplacesClientIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => FetchEventInit -> m result
+getReplacesClientIdUnsafe self = liftDOM ((((self ^. js "replacesClientId") >>= fromMaybeJSString) >>= 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 (((self ^. js "replacesClientId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-handled FetchEventInit.handled specification>
+setHandled :: (MonadDOM m) => FetchEventInit -> JSVal -> m ()
+setHandled self val = liftDOM (void (self ^. jss "handled" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-handled FetchEventInit.handled specification>
+getHandled :: (MonadDOM m) => FetchEventInit -> m (Maybe ())
+getHandled self = liftDOM (((self ^. js "handled") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-fetcheventinit-handled FetchEventInit.handled specification>
+getHandledUnsafe :: (MonadDOM m, HasCallStack) => FetchEventInit -> m ()
+getHandledUnsafe self = liftDOM ((((self ^. js "handled") >>= 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 (((self ^. js "handled") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/File.hs b/src/JSDOM/Generated/File.hs
--- a/src/JSDOM/Generated/File.hs
+++ b/src/JSDOM/Generated/File.hs
@@ -1,38 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from FileAPI (webref). Do not edit.
 module JSDOM.Generated.File
-       (newFile, getName, getLastModified, File(..), gTypeFile) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (newFile, getName, getLastModified, getWebkitRelativePath, File(..), gTypeFile)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/File Mozilla File documentation> 
-newFile ::
-        (MonadDOM m, IsBlobPart fileBits, ToJSString fileName) =>
-          [fileBits] -> fileName -> Maybe FilePropertyBag -> m File
-newFile fileBits fileName options
-  = liftDOM
-      (File <$>
-         new (jsg "File")
-           [toJSVal (array fileBits), toJSVal fileName, toJSVal options])
+-- | <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 (((new (jsg "File") [toJSVal fileBits, toJSVal fileName, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/File.name Mozilla File.name documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/File/name MDN File.name documentation>
 getName :: (MonadDOM m, FromJSString result) => File -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/File.lastModified Mozilla File.lastModified documentation> 
-getLastModified :: (MonadDOM m) => File -> m Int64
-getLastModified self
-  = liftDOM (round <$> ((self ^. js "lastModified") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/File/lastModified MDN File.lastModified documentation>
+getLastModified :: (MonadDOM m) => File -> m Int53
+getLastModified self = liftDOM (((self ^. js "lastModified") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/File/webkitRelativePath MDN File.webkitRelativePath documentation>
+getWebkitRelativePath :: (MonadDOM m, FromJSString result) => File -> m result
+getWebkitRelativePath self = liftDOM (((self ^. js "webkitRelativePath") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FileCallback.hs b/src/JSDOM/Generated/FileCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileCallback.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newFileCallback :: (MonadDOM m) => (File -> JSM ()) -> m FileCallback
+newFileCallback callback = liftDOM (FileCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (file : _) -> do
+          file' <- fromJSValUnchecked file
+          callback file'))
+
+newFileCallbackSync :: (MonadDOM m) => (File -> JSM ()) -> m FileCallback
+newFileCallbackSync callback = liftDOM (FileCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (file : _) -> do
+          file' <- fromJSValUnchecked file
+          callback file'))
+
+newFileCallbackAsync :: (MonadDOM m) => (File -> JSM ()) -> m FileCallback
+newFileCallbackAsync callback = liftDOM (FileCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (file : _) -> do
+          file' <- fromJSValUnchecked file
+          callback file'))
diff --git a/src/JSDOM/Generated/FileError.hs b/src/JSDOM/Generated/FileError.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/FileError.hs
+++ /dev/null
@@ -1,42 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.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, getCode, FileError(..), gTypeFileError)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.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
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileError.code Mozilla FileError.code documentation> 
-getCode :: (MonadDOM m) => FileError -> m Word
-getCode self
-  = liftDOM (round <$> ((self ^. js "code") >>= valToNumber))
diff --git a/src/JSDOM/Generated/FileException.hs b/src/JSDOM/Generated/FileException.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/FileException.hs
+++ /dev/null
@@ -1,64 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.FileException
-       (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, getCode, getName, getMessage,
-        FileException(..), gTypeFileException)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileException.toString Mozilla FileException.toString documentation> 
-toString ::
-         (MonadDOM m, FromJSString result) => FileException -> m result
-toString self
-  = liftDOM ((self ^. jsf "toString" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileException.toString Mozilla FileException.toString documentation> 
-toString_ :: (MonadDOM m) => FileException -> m ()
-toString_ self = liftDOM (void (self ^. jsf "toString" ()))
-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
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileException.code Mozilla FileException.code documentation> 
-getCode :: (MonadDOM m) => FileException -> m Word
-getCode self
-  = liftDOM (round <$> ((self ^. js "code") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileException.name Mozilla FileException.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => FileException -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileException.message Mozilla FileException.message documentation> 
-getMessage ::
-           (MonadDOM m, FromJSString result) => FileException -> m result
-getMessage self
-  = liftDOM ((self ^. js "message") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/FileList.hs b/src/JSDOM/Generated/FileList.hs
--- a/src/JSDOM/Generated/FileList.hs
+++ b/src/JSDOM/Generated/FileList.hs
@@ -1,50 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from FileAPI (webref). Do not edit.
 module JSDOM.Generated.FileList
-       (item, item_, itemUnsafe, itemUnchecked, getLength, FileList(..),
-        gTypeFileList)
+       (item, item_, itemUnsafe, itemUnchecked, getLength, FileList(..), gTypeFileList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.item Mozilla FileList.item documentation> 
+-- | <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 ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+item self index = liftDOM (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.item Mozilla FileList.item documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/FileList/item MDN FileList.item documentation>
 item_ :: (MonadDOM m) => FileList -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+item_ self index = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.item Mozilla FileList.item documentation> 
-itemUnsafe ::
-           (MonadDOM m, HasCallStack) => FileList -> Word -> m File
-itemUnsafe self index
-  = liftDOM
-      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
-         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 ((((self ^. jsf "item" [toJSVal 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> 
+-- | <https://developer.mozilla.org/docs/Web/API/FileList/item MDN FileList.item documentation>
 itemUnchecked :: (MonadDOM m) => FileList -> Word -> m File
-itemUnchecked self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+itemUnchecked self index = liftDOM (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.length Mozilla FileList.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/FileList/length MDN FileList.length documentation>
 getLength :: (MonadDOM m) => FileList -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/FilePropertyBag.hs b/src/JSDOM/Generated/FilePropertyBag.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FilePropertyBag.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from FileAPI (webref). Do not edit.
+module JSDOM.Generated.FilePropertyBag
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/FileAPI/#dfn-FilePropertyBag FilePropertyBag specification>
+newFilePropertyBag :: (MonadDOM m) => m FilePropertyBag
+newFilePropertyBag = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/FileAPI/#dfn-FPdate FilePropertyBag.lastModified specification>
+setLastModified :: (MonadDOM m) => FilePropertyBag -> Int53 -> m ()
+setLastModified self val = liftDOM (void (self ^. jss "lastModified" (toJSVal val)))
+
+-- | <https://w3c.github.io/FileAPI/#dfn-FPdate FilePropertyBag.lastModified specification>
+getLastModified :: (MonadDOM m) => FilePropertyBag -> m (Maybe Int53)
+getLastModified self = liftDOM (((self ^. js "lastModified") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/FileAPI/#dfn-FPdate FilePropertyBag.lastModified specification>
+getLastModifiedUnsafe :: (MonadDOM m, HasCallStack) => FilePropertyBag -> m Int53
+getLastModifiedUnsafe self = liftDOM ((((self ^. js "lastModified") >>= 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 (((self ^. js "lastModified") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FileReader.hs b/src/JSDOM/Generated/FileReader.hs
--- a/src/JSDOM/Generated/FileReader.hs
+++ b/src/JSDOM/Generated/FileReader.hs
@@ -1,114 +1,98 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from FileAPI (webref). Do not edit.
 module JSDOM.Generated.FileReader
-       (newFileReader, readAsArrayBuffer, readAsBinaryString, readAsText,
-        readAsDataURL, abort, pattern EMPTY, pattern LOADING, pattern DONE,
-        getReadyState, getResult, getResultUnsafe, getResultUnchecked,
-        getError, loadStart, progress, load, abortEvent, error, loadEnd,
-        FileReader(..), gTypeFileReader)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader Mozilla FileReader documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/FileReader MDN FileReader. documentation>
 newFileReader :: (MonadDOM m) => m FileReader
-newFileReader = liftDOM (FileReader <$> new (jsg "FileReader") ())
+newFileReader = liftDOM (((new (jsg "FileReader") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsArrayBuffer Mozilla FileReader.readAsArrayBuffer documentation> 
-readAsArrayBuffer ::
-                  (MonadDOM m, IsBlob blob) => FileReader -> Maybe blob -> m ()
-readAsArrayBuffer self blob
-  = liftDOM (void (self ^. jsf "readAsArrayBuffer" [toJSVal blob]))
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/abort MDN FileReader.abort documentation>
+abort :: (MonadDOM m) => FileReader -> m ()
+abort self = liftDOM (void (self ^. jsf "abort" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsBinaryString Mozilla FileReader.readAsBinaryString documentation> 
-readAsBinaryString ::
-                   (MonadDOM m, IsBlob blob) => FileReader -> Maybe blob -> m ()
-readAsBinaryString self blob
-  = liftDOM (void (self ^. jsf "readAsBinaryString" [toJSVal blob]))
+-- | <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 (self ^. jsf "readAsArrayBuffer" [toJSVal blob]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsText Mozilla FileReader.readAsText documentation> 
-readAsText ::
-           (MonadDOM m, IsBlob blob, ToJSString encoding) =>
-             FileReader -> Maybe blob -> Maybe encoding -> m ()
-readAsText self blob encoding
-  = liftDOM
-      (void (self ^. jsf "readAsText" [toJSVal blob, toJSVal encoding]))
+-- | <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 (self ^. jsf "readAsBinaryString" [toJSVal blob]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsDataURL Mozilla FileReader.readAsDataURL documentation> 
-readAsDataURL ::
-              (MonadDOM m, IsBlob blob) => FileReader -> Maybe blob -> m ()
-readAsDataURL self blob
-  = liftDOM (void (self ^. jsf "readAsDataURL" [toJSVal blob]))
+-- | <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 (self ^. jsf "readAsDataURL" [toJSVal blob]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.abort Mozilla FileReader.abort documentation> 
-abort :: (MonadDOM m) => FileReader -> m ()
-abort self = liftDOM (void (self ^. jsf "abort" ()))
-pattern EMPTY = 0
-pattern LOADING = 1
-pattern DONE = 2
+-- | <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 (self ^. jsf "readAsText" [toJSVal blob, P.maybe (P.return jsUndefined) toJSVal encoding]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readyState Mozilla FileReader.readyState documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/readyState MDN FileReader.readyState documentation>
 getReadyState :: (MonadDOM m) => FileReader -> m Word
-getReadyState self
-  = liftDOM (round <$> ((self ^. js "readyState") >>= valToNumber))
+getReadyState self = liftDOM ((P.round <$> ((self ^. js "readyState") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.result Mozilla FileReader.result documentation> 
-getResult ::
-          (MonadDOM m) => FileReader -> m (Maybe StringOrArrayBuffer)
-getResult self = liftDOM ((self ^. js "result") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/result MDN FileReader.result documentation>
+getResult :: (MonadDOM m) => FileReader -> m (Maybe StringOrArrayBuffer)
+getResult self = liftDOM (((self ^. js "result") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.result Mozilla FileReader.result documentation> 
-getResultUnsafe ::
-                (MonadDOM m, HasCallStack) => FileReader -> m StringOrArrayBuffer
-getResultUnsafe self
-  = liftDOM
-      (((self ^. js "result") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/result MDN FileReader.result documentation>
+getResultUnsafe :: (MonadDOM m, HasCallStack) => FileReader -> m StringOrArrayBuffer
+getResultUnsafe self = liftDOM ((((self ^. js "result") >>= 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> 
-getResultUnchecked ::
-                   (MonadDOM m) => FileReader -> m StringOrArrayBuffer
-getResultUnchecked self
-  = liftDOM ((self ^. js "result") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/result MDN FileReader.result documentation>
+getResultUnchecked :: (MonadDOM m) => FileReader -> m StringOrArrayBuffer
+getResultUnchecked self = liftDOM (((self ^. js "result") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.error Mozilla FileReader.error documentation> 
-getError :: (MonadDOM m) => FileReader -> m FileError
-getError self
-  = liftDOM ((self ^. js "error") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/error MDN FileReader.error documentation>
+getError :: (MonadDOM m) => FileReader -> m (Maybe DOMException)
+getError self = liftDOM (((self ^. js "error") >>= fromJSValUnchecked))
 
--- | <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>
+getErrorUnsafe :: (MonadDOM m, HasCallStack) => FileReader -> m DOMException
+getErrorUnsafe self = liftDOM ((((self ^. js "error") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileReader/error MDN FileReader.error documentation>
+getErrorUnchecked :: (MonadDOM m) => FileReader -> m DOMException
+getErrorUnchecked self = liftDOM (((self ^. js "error") >>= fromJSValUnchecked))
+
+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/JSDOM/Generated/FileReaderSync.hs b/src/JSDOM/Generated/FileReaderSync.hs
--- a/src/JSDOM/Generated/FileReaderSync.hs
+++ b/src/JSDOM/Generated/FileReaderSync.hs
@@ -1,91 +1,52 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from FileAPI (webref). Do not edit.
 module JSDOM.Generated.FileReaderSync
-       (newFileReaderSync, readAsArrayBuffer, readAsArrayBuffer_,
-        readAsBinaryString, readAsBinaryString_, readAsText, readAsText_,
-        readAsDataURL, readAsDataURL_, FileReaderSync(..),
-        gTypeFileReaderSync)
+       (newFileReaderSync, readAsArrayBuffer, readAsArrayBuffer_, readAsBinaryString, readAsBinaryString_, readAsDataURL, readAsDataURL_, readAsText, readAsText_, FileReaderSync(..), gTypeFileReaderSync)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync Mozilla FileReaderSync documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/FileReaderSync/FileReaderSync MDN FileReaderSync. documentation>
 newFileReaderSync :: (MonadDOM m) => m FileReaderSync
-newFileReaderSync
-  = liftDOM (FileReaderSync <$> new (jsg "FileReaderSync") ())
+newFileReaderSync = liftDOM (((new (jsg "FileReaderSync") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsArrayBuffer Mozilla FileReaderSync.readAsArrayBuffer documentation> 
-readAsArrayBuffer ::
-                  (MonadDOM m, IsBlob blob) =>
-                    FileReaderSync -> blob -> m ArrayBuffer
-readAsArrayBuffer self blob
-  = liftDOM
-      ((self ^. jsf "readAsArrayBuffer" [toJSVal blob]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "readAsArrayBuffer" [toJSVal blob]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsArrayBuffer Mozilla FileReaderSync.readAsArrayBuffer documentation> 
-readAsArrayBuffer_ ::
-                   (MonadDOM m, IsBlob blob) => FileReaderSync -> blob -> m ()
-readAsArrayBuffer_ self blob
-  = liftDOM (void (self ^. jsf "readAsArrayBuffer" [toJSVal 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 (self ^. jsf "readAsArrayBuffer" [toJSVal blob]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsBinaryString Mozilla FileReaderSync.readAsBinaryString documentation> 
-readAsBinaryString ::
-                   (MonadDOM m, IsBlob blob, FromJSString result) =>
-                     FileReaderSync -> blob -> m result
-readAsBinaryString self blob
-  = liftDOM
-      ((self ^. jsf "readAsBinaryString" [toJSVal blob]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "readAsBinaryString" [toJSVal blob]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsBinaryString Mozilla FileReaderSync.readAsBinaryString documentation> 
-readAsBinaryString_ ::
-                    (MonadDOM m, IsBlob blob) => FileReaderSync -> blob -> m ()
-readAsBinaryString_ self blob
-  = liftDOM (void (self ^. jsf "readAsBinaryString" [toJSVal blob]))
+-- | <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 (self ^. jsf "readAsBinaryString" [toJSVal blob]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsText Mozilla FileReaderSync.readAsText documentation> 
-readAsText ::
-           (MonadDOM m, IsBlob blob, ToJSString encoding,
-            FromJSString result) =>
-             FileReaderSync -> blob -> Maybe encoding -> m result
-readAsText self blob encoding
-  = liftDOM
-      ((self ^. jsf "readAsText" [toJSVal blob, toJSVal encoding]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "readAsDataURL" [toJSVal blob]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsText Mozilla FileReaderSync.readAsText documentation> 
-readAsText_ ::
-            (MonadDOM m, IsBlob blob, ToJSString encoding) =>
-              FileReaderSync -> blob -> Maybe encoding -> m ()
-readAsText_ self blob encoding
-  = liftDOM
-      (void (self ^. jsf "readAsText" [toJSVal blob, toJSVal encoding]))
+-- | <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 (self ^. jsf "readAsDataURL" [toJSVal blob]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsDataURL Mozilla FileReaderSync.readAsDataURL documentation> 
-readAsDataURL ::
-              (MonadDOM m, IsBlob blob, FromJSString result) =>
-                FileReaderSync -> blob -> m result
-readAsDataURL self blob
-  = liftDOM
-      ((self ^. jsf "readAsDataURL" [toJSVal blob]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "readAsText" [toJSVal blob, P.maybe (P.return jsUndefined) toJSVal encoding]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsDataURL Mozilla FileReaderSync.readAsDataURL documentation> 
-readAsDataURL_ ::
-               (MonadDOM m, IsBlob blob) => FileReaderSync -> blob -> m ()
-readAsDataURL_ self blob
-  = liftDOM (void (self ^. jsf "readAsDataURL" [toJSVal blob]))
+-- | <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 (self ^. jsf "readAsText" [toJSVal blob, P.maybe (P.return jsUndefined) toJSVal encoding]))
diff --git a/src/JSDOM/Generated/FileSystem.hs b/src/JSDOM/Generated/FileSystem.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystem.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module JSDOM.Generated.FileSystem
+       (getName, getRoot, FileSystem(..), gTypeFileSystem)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystem/name MDN FileSystem.name documentation>
+getName :: (MonadDOM m, FromJSString result) => FileSystem -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystem/root MDN FileSystem.root documentation>
+getRoot :: (MonadDOM m) => FileSystem -> m FileSystemDirectoryEntry
+getRoot self = liftDOM (((self ^. js "root") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FileSystemCreateWritableOptions.hs b/src/JSDOM/Generated/FileSystemCreateWritableOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystemCreateWritableOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module JSDOM.Generated.FileSystemCreateWritableOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://fs.spec.whatwg.org/#dictdef-filesystemcreatewritableoptions FileSystemCreateWritableOptions specification>
+newFileSystemCreateWritableOptions :: (MonadDOM m) => m FileSystemCreateWritableOptions
+newFileSystemCreateWritableOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemcreatewritableoptions-keepexistingdata FileSystemCreateWritableOptions.keepExistingData specification>
+setKeepExistingData :: (MonadDOM m) => FileSystemCreateWritableOptions -> Bool -> m ()
+setKeepExistingData self val = liftDOM (void (self ^. jss "keepExistingData" (toJSVal val)))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemcreatewritableoptions-keepexistingdata FileSystemCreateWritableOptions.keepExistingData specification>
+getKeepExistingData :: (MonadDOM m) => FileSystemCreateWritableOptions -> m (Maybe Bool)
+getKeepExistingData self = liftDOM (((self ^. js "keepExistingData") >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemcreatewritableoptions-keepexistingdata FileSystemCreateWritableOptions.keepExistingData specification>
+getKeepExistingDataUnsafe :: (MonadDOM m, HasCallStack) => FileSystemCreateWritableOptions -> m Bool
+getKeepExistingDataUnsafe self = liftDOM ((((self ^. js "keepExistingData") >>= 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 (((self ^. js "keepExistingData") >>= valToBool))
diff --git a/src/JSDOM/Generated/FileSystemDirectoryEntry.hs b/src/JSDOM/Generated/FileSystemDirectoryEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystemDirectoryEntry.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module JSDOM.Generated.FileSystemDirectoryEntry
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryEntry/createReader MDN FileSystemDirectoryEntry.createReader documentation>
+createReader :: (MonadDOM m) => FileSystemDirectoryEntry -> m FileSystemDirectoryReader
+createReader self = liftDOM (((self ^. jsf "createReader" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryEntry/createReader MDN FileSystemDirectoryEntry.createReader documentation>
+createReader_ :: (MonadDOM m) => FileSystemDirectoryEntry -> m ()
+createReader_ self = liftDOM (void (self ^. jsf "createReader" ()))
+
+-- | <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 (self ^. jsf "getDirectory" [toJSVal path, P.maybe (P.return jsUndefined) toJSVal options, P.maybe (P.return jsUndefined) toJSVal successCallback, P.maybe (P.return jsUndefined) toJSVal errorCallback]))
+
+-- | <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 (self ^. jsf "getFile" [toJSVal path, P.maybe (P.return jsUndefined) toJSVal options, P.maybe (P.return jsUndefined) toJSVal successCallback, P.maybe (P.return jsUndefined) toJSVal errorCallback]))
diff --git a/src/JSDOM/Generated/FileSystemDirectoryHandle.hs b/src/JSDOM/Generated/FileSystemDirectoryHandle.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystemDirectoryHandle.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module JSDOM.Generated.FileSystemDirectoryHandle
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((((self ^. jsf "getDirectoryHandle" [toJSVal name, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "getDirectoryHandle" [toJSVal name, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "getFileHandle" [toJSVal name, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "getFileHandle" [toJSVal name, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "removeEntry" [toJSVal name, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "resolve" [toJSVal possibleDescendant]) >>= readPromise)) >>= 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 (((self ^. jsf "resolve" [toJSVal possibleDescendant]) >>= readPromise)))
+
+-- | <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 ((((((self ^. jsf "resolve" [toJSVal possibleDescendant]) >>= readPromise)) >>= 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 (((((self ^. jsf "resolve" [toJSVal possibleDescendant]) >>= readPromise)) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FileSystemDirectoryReader.hs b/src/JSDOM/Generated/FileSystemDirectoryReader.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystemDirectoryReader.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module JSDOM.Generated.FileSystemDirectoryReader
+       (readEntries, FileSystemDirectoryReader(..), gTypeFileSystemDirectoryReader)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "readEntries" [toJSVal successCallback, P.maybe (P.return jsUndefined) toJSVal errorCallback]))
diff --git a/src/JSDOM/Generated/FileSystemEntriesCallback.hs b/src/JSDOM/Generated/FileSystemEntriesCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystemEntriesCallback.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newFileSystemEntriesCallback :: (MonadDOM m) => ([FileSystemEntry] -> JSM ()) -> m FileSystemEntriesCallback
+newFileSystemEntriesCallback callback = liftDOM (FileSystemEntriesCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (entries : _) -> do
+          entries' <- fromJSValUnchecked entries
+          callback entries'))
+
+newFileSystemEntriesCallbackSync :: (MonadDOM m) => ([FileSystemEntry] -> JSM ()) -> m FileSystemEntriesCallback
+newFileSystemEntriesCallbackSync callback = liftDOM (FileSystemEntriesCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (entries : _) -> do
+          entries' <- fromJSValUnchecked entries
+          callback entries'))
+
+newFileSystemEntriesCallbackAsync :: (MonadDOM m) => ([FileSystemEntry] -> JSM ()) -> m FileSystemEntriesCallback
+newFileSystemEntriesCallbackAsync callback = liftDOM (FileSystemEntriesCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (entries : _) -> do
+          entries' <- fromJSValUnchecked entries
+          callback entries'))
diff --git a/src/JSDOM/Generated/FileSystemEntry.hs b/src/JSDOM/Generated/FileSystemEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystemEntry.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module JSDOM.Generated.FileSystemEntry
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toFileSystemEntry self) ^. jsf "getParent" [P.maybe (P.return jsUndefined) toJSVal successCallback, P.maybe (P.return jsUndefined) toJSVal errorCallback]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemEntry/isFile MDN FileSystemEntry.isFile documentation>
+getIsFile :: (MonadDOM m, IsFileSystemEntry self) => self -> m Bool
+getIsFile self = liftDOM ((((Types.toFileSystemEntry self) ^. js "isFile") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemEntry/isDirectory MDN FileSystemEntry.isDirectory documentation>
+getIsDirectory :: (MonadDOM m, IsFileSystemEntry self) => self -> m Bool
+getIsDirectory self = liftDOM ((((Types.toFileSystemEntry self) ^. js "isDirectory") >>= valToBool))
+
+-- | <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 ((((Types.toFileSystemEntry self) ^. js "name") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toFileSystemEntry self) ^. js "fullPath") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemEntry/filesystem MDN FileSystemEntry.filesystem documentation>
+getFilesystem :: (MonadDOM m, IsFileSystemEntry self) => self -> m FileSystem
+getFilesystem self = liftDOM ((((Types.toFileSystemEntry self) ^. js "filesystem") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FileSystemEntryCallback.hs b/src/JSDOM/Generated/FileSystemEntryCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystemEntryCallback.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newFileSystemEntryCallback :: (MonadDOM m) => (FileSystemEntry -> JSM ()) -> m FileSystemEntryCallback
+newFileSystemEntryCallback callback = liftDOM (FileSystemEntryCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (entry : _) -> do
+          entry' <- fromJSValUnchecked entry
+          callback entry'))
+
+newFileSystemEntryCallbackSync :: (MonadDOM m) => (FileSystemEntry -> JSM ()) -> m FileSystemEntryCallback
+newFileSystemEntryCallbackSync callback = liftDOM (FileSystemEntryCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (entry : _) -> do
+          entry' <- fromJSValUnchecked entry
+          callback entry'))
+
+newFileSystemEntryCallbackAsync :: (MonadDOM m) => (FileSystemEntry -> JSM ()) -> m FileSystemEntryCallback
+newFileSystemEntryCallbackAsync callback = liftDOM (FileSystemEntryCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (entry : _) -> do
+          entry' <- fromJSValUnchecked entry
+          callback entry'))
diff --git a/src/JSDOM/Generated/FileSystemFileEntry.hs b/src/JSDOM/Generated/FileSystemFileEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystemFileEntry.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module JSDOM.Generated.FileSystemFileEntry
+       (file, FileSystemFileEntry(..), gTypeFileSystemFileEntry)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "file" [toJSVal successCallback, P.maybe (P.return jsUndefined) toJSVal errorCallback]))
diff --git a/src/JSDOM/Generated/FileSystemFileHandle.hs b/src/JSDOM/Generated/FileSystemFileHandle.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystemFileHandle.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module JSDOM.Generated.FileSystemFileHandle
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemFileHandle/createSyncAccessHandle MDN FileSystemFileHandle.createSyncAccessHandle documentation>
+createSyncAccessHandle :: (MonadDOM m) => FileSystemFileHandle -> m FileSystemSyncAccessHandle
+createSyncAccessHandle self = liftDOM (((((self ^. jsf "createSyncAccessHandle" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemFileHandle/createSyncAccessHandle MDN FileSystemFileHandle.createSyncAccessHandle documentation>
+createSyncAccessHandle_ :: (MonadDOM m) => FileSystemFileHandle -> m ()
+createSyncAccessHandle_ self = liftDOM (void (((self ^. jsf "createSyncAccessHandle" ()) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "createWritable" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "createWritable" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemFileHandle/getFile MDN FileSystemFileHandle.getFile documentation>
+getFile :: (MonadDOM m) => FileSystemFileHandle -> m File
+getFile self = liftDOM (((((self ^. jsf "getFile" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemFileHandle/getFile MDN FileSystemFileHandle.getFile documentation>
+getFile_ :: (MonadDOM m) => FileSystemFileHandle -> m ()
+getFile_ self = liftDOM (void (((self ^. jsf "getFile" ()) >>= readPromise)))
diff --git a/src/JSDOM/Generated/FileSystemFlags.hs b/src/JSDOM/Generated/FileSystemFlags.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystemFlags.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from entries-api (webref). Do not edit.
+module JSDOM.Generated.FileSystemFlags
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://wicg.github.io/entries-api/#dictdef-filesystemflags FileSystemFlags specification>
+newFileSystemFlags :: (MonadDOM m) => m FileSystemFlags
+newFileSystemFlags = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/entries-api/#dom-filesystemflags-create FileSystemFlags.create specification>
+setCreate :: (MonadDOM m) => FileSystemFlags -> Bool -> m ()
+setCreate self val = liftDOM (void (self ^. jss "create" (toJSVal val)))
+
+-- | <https://wicg.github.io/entries-api/#dom-filesystemflags-create FileSystemFlags.create specification>
+getCreate :: (MonadDOM m) => FileSystemFlags -> m (Maybe Bool)
+getCreate self = liftDOM (((self ^. js "create") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/entries-api/#dom-filesystemflags-create FileSystemFlags.create specification>
+getCreateUnsafe :: (MonadDOM m, HasCallStack) => FileSystemFlags -> m Bool
+getCreateUnsafe self = liftDOM ((((self ^. js "create") >>= 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 (((self ^. js "create") >>= valToBool))
+
+-- | <https://wicg.github.io/entries-api/#dom-filesystemflags-exclusive FileSystemFlags.exclusive specification>
+setExclusive :: (MonadDOM m) => FileSystemFlags -> Bool -> m ()
+setExclusive self val = liftDOM (void (self ^. jss "exclusive" (toJSVal val)))
+
+-- | <https://wicg.github.io/entries-api/#dom-filesystemflags-exclusive FileSystemFlags.exclusive specification>
+getExclusive :: (MonadDOM m) => FileSystemFlags -> m (Maybe Bool)
+getExclusive self = liftDOM (((self ^. js "exclusive") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/entries-api/#dom-filesystemflags-exclusive FileSystemFlags.exclusive specification>
+getExclusiveUnsafe :: (MonadDOM m, HasCallStack) => FileSystemFlags -> m Bool
+getExclusiveUnsafe self = liftDOM ((((self ^. js "exclusive") >>= 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 (((self ^. js "exclusive") >>= valToBool))
diff --git a/src/JSDOM/Generated/FileSystemGetDirectoryOptions.hs b/src/JSDOM/Generated/FileSystemGetDirectoryOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystemGetDirectoryOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module JSDOM.Generated.FileSystemGetDirectoryOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://fs.spec.whatwg.org/#dictdef-filesystemgetdirectoryoptions FileSystemGetDirectoryOptions specification>
+newFileSystemGetDirectoryOptions :: (MonadDOM m) => m FileSystemGetDirectoryOptions
+newFileSystemGetDirectoryOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemgetdirectoryoptions-create FileSystemGetDirectoryOptions.create specification>
+setCreate :: (MonadDOM m) => FileSystemGetDirectoryOptions -> Bool -> m ()
+setCreate self val = liftDOM (void (self ^. jss "create" (toJSVal val)))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemgetdirectoryoptions-create FileSystemGetDirectoryOptions.create specification>
+getCreate :: (MonadDOM m) => FileSystemGetDirectoryOptions -> m (Maybe Bool)
+getCreate self = liftDOM (((self ^. js "create") >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemgetdirectoryoptions-create FileSystemGetDirectoryOptions.create specification>
+getCreateUnsafe :: (MonadDOM m, HasCallStack) => FileSystemGetDirectoryOptions -> m Bool
+getCreateUnsafe self = liftDOM ((((self ^. js "create") >>= 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 (((self ^. js "create") >>= valToBool))
diff --git a/src/JSDOM/Generated/FileSystemGetFileOptions.hs b/src/JSDOM/Generated/FileSystemGetFileOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystemGetFileOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module JSDOM.Generated.FileSystemGetFileOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://fs.spec.whatwg.org/#dictdef-filesystemgetfileoptions FileSystemGetFileOptions specification>
+newFileSystemGetFileOptions :: (MonadDOM m) => m FileSystemGetFileOptions
+newFileSystemGetFileOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemgetfileoptions-create FileSystemGetFileOptions.create specification>
+setCreate :: (MonadDOM m) => FileSystemGetFileOptions -> Bool -> m ()
+setCreate self val = liftDOM (void (self ^. jss "create" (toJSVal val)))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemgetfileoptions-create FileSystemGetFileOptions.create specification>
+getCreate :: (MonadDOM m) => FileSystemGetFileOptions -> m (Maybe Bool)
+getCreate self = liftDOM (((self ^. js "create") >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemgetfileoptions-create FileSystemGetFileOptions.create specification>
+getCreateUnsafe :: (MonadDOM m, HasCallStack) => FileSystemGetFileOptions -> m Bool
+getCreateUnsafe self = liftDOM ((((self ^. js "create") >>= 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 (((self ^. js "create") >>= valToBool))
diff --git a/src/JSDOM/Generated/FileSystemHandle.hs b/src/JSDOM/Generated/FileSystemHandle.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystemHandle.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module JSDOM.Generated.FileSystemHandle
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((((Types.toFileSystemHandle self) ^. jsf "isSameEntry" [toJSVal other]) >>= readPromise)) >>= valToBool))
+
+-- | <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 ((((Types.toFileSystemHandle self) ^. jsf "isSameEntry" [toJSVal other]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemHandle/kind MDN FileSystemHandle.kind documentation>
+getKind :: (MonadDOM m, IsFileSystemHandle self) => self -> m FileSystemHandleKind
+getKind self = liftDOM ((((Types.toFileSystemHandle self) ^. js "kind") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toFileSystemHandle self) ^. js "name") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FileSystemReadWriteOptions.hs b/src/JSDOM/Generated/FileSystemReadWriteOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystemReadWriteOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module JSDOM.Generated.FileSystemReadWriteOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://fs.spec.whatwg.org/#dictdef-filesystemreadwriteoptions FileSystemReadWriteOptions specification>
+newFileSystemReadWriteOptions :: (MonadDOM m) => m FileSystemReadWriteOptions
+newFileSystemReadWriteOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemreadwriteoptions-at FileSystemReadWriteOptions.at specification>
+setAt :: (MonadDOM m) => FileSystemReadWriteOptions -> Word53 -> m ()
+setAt self val = liftDOM (void (self ^. jss "at" (toJSVal val)))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemreadwriteoptions-at FileSystemReadWriteOptions.at specification>
+getAt :: (MonadDOM m) => FileSystemReadWriteOptions -> m (Maybe Word53)
+getAt self = liftDOM (((self ^. js "at") >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemreadwriteoptions-at FileSystemReadWriteOptions.at specification>
+getAtUnsafe :: (MonadDOM m, HasCallStack) => FileSystemReadWriteOptions -> m Word53
+getAtUnsafe self = liftDOM ((((self ^. js "at") >>= 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 (((self ^. js "at") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FileSystemRemoveOptions.hs b/src/JSDOM/Generated/FileSystemRemoveOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystemRemoveOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module JSDOM.Generated.FileSystemRemoveOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://fs.spec.whatwg.org/#dictdef-filesystemremoveoptions FileSystemRemoveOptions specification>
+newFileSystemRemoveOptions :: (MonadDOM m) => m FileSystemRemoveOptions
+newFileSystemRemoveOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemremoveoptions-recursive FileSystemRemoveOptions.recursive specification>
+setRecursive :: (MonadDOM m) => FileSystemRemoveOptions -> Bool -> m ()
+setRecursive self val = liftDOM (void (self ^. jss "recursive" (toJSVal val)))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemremoveoptions-recursive FileSystemRemoveOptions.recursive specification>
+getRecursive :: (MonadDOM m) => FileSystemRemoveOptions -> m (Maybe Bool)
+getRecursive self = liftDOM (((self ^. js "recursive") >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-filesystemremoveoptions-recursive FileSystemRemoveOptions.recursive specification>
+getRecursiveUnsafe :: (MonadDOM m, HasCallStack) => FileSystemRemoveOptions -> m Bool
+getRecursiveUnsafe self = liftDOM ((((self ^. js "recursive") >>= 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 (((self ^. js "recursive") >>= valToBool))
diff --git a/src/JSDOM/Generated/FileSystemSyncAccessHandle.hs b/src/JSDOM/Generated/FileSystemSyncAccessHandle.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystemSyncAccessHandle.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module JSDOM.Generated.FileSystemSyncAccessHandle
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemSyncAccessHandle/close MDN FileSystemSyncAccessHandle.close documentation>
+close :: (MonadDOM m) => FileSystemSyncAccessHandle -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemSyncAccessHandle/flush MDN FileSystemSyncAccessHandle.flush documentation>
+flush :: (MonadDOM m) => FileSystemSyncAccessHandle -> m ()
+flush self = liftDOM (void (self ^. jsf "flush" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemSyncAccessHandle/getSize MDN FileSystemSyncAccessHandle.getSize documentation>
+getSize :: (MonadDOM m) => FileSystemSyncAccessHandle -> m Word53
+getSize self = liftDOM (((self ^. jsf "getSize" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemSyncAccessHandle/getSize MDN FileSystemSyncAccessHandle.getSize documentation>
+getSize_ :: (MonadDOM m) => FileSystemSyncAccessHandle -> m ()
+getSize_ self = liftDOM (void (self ^. jsf "getSize" ()))
+
+-- | <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 (((self ^. jsf "read" [toJSVal buffer, P.maybe (P.return jsUndefined) toJSVal options]) >>= 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 (self ^. jsf "read" [toJSVal buffer, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemSyncAccessHandle/truncate MDN FileSystemSyncAccessHandle.truncate documentation>
+truncate :: (MonadDOM m) => FileSystemSyncAccessHandle -> Word53 -> m ()
+truncate self newSize = liftDOM (void (self ^. jsf "truncate" [toJSVal newSize]))
+
+-- | <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 (((self ^. jsf "write" [toJSVal buffer, P.maybe (P.return jsUndefined) toJSVal options]) >>= 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 (self ^. jsf "write" [toJSVal buffer, P.maybe (P.return jsUndefined) toJSVal options]))
diff --git a/src/JSDOM/Generated/FileSystemWritableFileStream.hs b/src/JSDOM/Generated/FileSystemWritableFileStream.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FileSystemWritableFileStream.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module JSDOM.Generated.FileSystemWritableFileStream
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemWritableFileStream/seek MDN FileSystemWritableFileStream.seek documentation>
+seek :: (MonadDOM m) => FileSystemWritableFileStream -> Word53 -> m ()
+seek self position = liftDOM (void (((self ^. jsf "seek" [toJSVal position]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FileSystemWritableFileStream/truncate MDN FileSystemWritableFileStream.truncate documentation>
+truncate :: (MonadDOM m) => FileSystemWritableFileStream -> Word53 -> m ()
+truncate self size = liftDOM (void (((self ^. jsf "truncate" [toJSVal size]) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "write" [toJSVal data']) >>= readPromise)))
diff --git a/src/JSDOM/Generated/FlacEncoderConfig.hs b/src/JSDOM/Generated/FlacEncoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FlacEncoderConfig.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-flac-codec-registration (webref). Do not edit.
+module JSDOM.Generated.FlacEncoderConfig
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/flac_codec_registration.html#dictdef-flacencoderconfig FlacEncoderConfig specification>
+newFlacEncoderConfig :: (MonadDOM m) => m FlacEncoderConfig
+newFlacEncoderConfig = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "blockSize" (toJSVal val)))
+
+-- | <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 (((self ^. js "blockSize") >>= 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 ((((self ^. js "blockSize") >>= 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 ((P.round <$> ((self ^. js "blockSize") >>= valToNumber)))
+
+-- | <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 (self ^. jss "compressLevel" (toJSVal val)))
+
+-- | <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 (((self ^. js "compressLevel") >>= 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 ((((self ^. js "compressLevel") >>= 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 ((P.round <$> ((self ^. js "compressLevel") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/FocusEvent.hs b/src/JSDOM/Generated/FocusEvent.hs
--- a/src/JSDOM/Generated/FocusEvent.hs
+++ b/src/JSDOM/Generated/FocusEvent.hs
@@ -1,50 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
 module JSDOM.Generated.FocusEvent
-       (newFocusEvent, getRelatedTarget, getRelatedTargetUnsafe,
-        getRelatedTargetUnchecked, FocusEvent(..), gTypeFocusEvent)
+       (newFocusEvent, getRelatedTarget, getRelatedTargetUnsafe, getRelatedTargetUnchecked, FocusEvent(..), gTypeFocusEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent Mozilla FocusEvent documentation> 
-newFocusEvent ::
-              (MonadDOM m, ToJSString type') =>
-                type' -> Maybe FocusEventInit -> m FocusEvent
-newFocusEvent type' eventInitDict
-  = liftDOM
-      (FocusEvent <$>
-         new (jsg "FocusEvent") [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "FocusEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent.relatedTarget Mozilla FocusEvent.relatedTarget documentation> 
-getRelatedTarget ::
-                 (MonadDOM m) => FocusEvent -> m (Maybe EventTarget)
-getRelatedTarget self
-  = liftDOM ((self ^. js "relatedTarget") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/FocusEvent/relatedTarget MDN FocusEvent.relatedTarget documentation>
+getRelatedTarget :: (MonadDOM m) => FocusEvent -> m (Maybe EventTarget)
+getRelatedTarget self = liftDOM (((self ^. js "relatedTarget") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent.relatedTarget Mozilla FocusEvent.relatedTarget documentation> 
-getRelatedTargetUnsafe ::
-                       (MonadDOM m, HasCallStack) => FocusEvent -> m EventTarget
-getRelatedTargetUnsafe self
-  = liftDOM
-      (((self ^. js "relatedTarget") >>= fromJSVal) >>=
-         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 ((((self ^. js "relatedTarget") >>= 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 ::
-                          (MonadDOM m) => FocusEvent -> m EventTarget
-getRelatedTargetUnchecked self
-  = liftDOM ((self ^. js "relatedTarget") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/FocusEvent/relatedTarget MDN FocusEvent.relatedTarget documentation>
+getRelatedTargetUnchecked :: (MonadDOM m) => FocusEvent -> m EventTarget
+getRelatedTargetUnchecked self = liftDOM (((self ^. js "relatedTarget") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FocusEventInit.hs b/src/JSDOM/Generated/FocusEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FocusEventInit.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
+module JSDOM.Generated.FocusEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/uievents/#dictdef-focuseventinit FocusEventInit specification>
+newFocusEventInit :: (MonadDOM m) => m FocusEventInit
+newFocusEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "relatedTarget" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-focuseventinit-relatedtarget FocusEventInit.relatedTarget specification>
+getRelatedTarget :: (MonadDOM m) => FocusEventInit -> m (Maybe EventTarget)
+getRelatedTarget self = liftDOM (((self ^. js "relatedTarget") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-focuseventinit-relatedtarget FocusEventInit.relatedTarget specification>
+getRelatedTargetUnsafe :: (MonadDOM m, HasCallStack) => FocusEventInit -> m EventTarget
+getRelatedTargetUnsafe self = liftDOM ((((self ^. js "relatedTarget") >>= 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 (((self ^. js "relatedTarget") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FocusOptions.hs b/src/JSDOM/Generated/FocusOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FocusOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.FocusOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#focusoptions FocusOptions specification>
+newFocusOptions :: (MonadDOM m) => m FocusOptions
+newFocusOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "preventScroll" (toJSVal val)))
+
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#dom-focusoptions-preventscroll FocusOptions.preventScroll specification>
+getPreventScroll :: (MonadDOM m) => FocusOptions -> m (Maybe Bool)
+getPreventScroll self = liftDOM (((self ^. js "preventScroll") >>= 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 ((((self ^. js "preventScroll") >>= 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 (((self ^. js "preventScroll") >>= valToBool))
+
+-- | <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 (self ^. jss "focusVisible" (toJSVal val)))
+
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#dom-focusoptions-focusvisible FocusOptions.focusVisible specification>
+getFocusVisible :: (MonadDOM m) => FocusOptions -> m (Maybe Bool)
+getFocusVisible self = liftDOM (((self ^. js "focusVisible") >>= 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 ((((self ^. js "focusVisible") >>= 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 (((self ^. js "focusVisible") >>= valToBool))
diff --git a/src/JSDOM/Generated/FontFace.hs b/src/JSDOM/Generated/FontFace.hs
--- a/src/JSDOM/Generated/FontFace.hs
+++ b/src/JSDOM/Generated/FontFace.hs
@@ -1,133 +1,124 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-font-loading-3 (webref). Do not edit.
 module JSDOM.Generated.FontFace
-       (newFontFace, load, load_, setFamily, getFamily, setStyle,
-        getStyle, setWeight, getWeight, setStretch, getStretch,
-        setUnicodeRange, getUnicodeRange, setVariant, getVariant,
-        setFeatureSettings, getFeatureSettings, getStatus, getLoaded,
-        FontFace(..), gTypeFontFace)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace Mozilla FontFace documentation> 
-newFontFace ::
-            (MonadDOM m, ToJSString family', IsStringOrBinaryData source) =>
-              family' -> source -> Maybe FontFaceDescriptors -> m FontFace
-newFontFace family' source descriptors
-  = liftDOM
-      (FontFace <$>
-         new (jsg "FontFace")
-           [toJSVal family', toJSVal source, toJSVal descriptors])
+-- | <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 (((new (jsg "FontFace") [toJSVal family', toJSVal source, P.maybe (P.return jsUndefined) toJSVal descriptors]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.load Mozilla FontFace.load documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/load MDN FontFace.load documentation>
 load :: (MonadDOM m) => FontFace -> m FontFace
-load self
-  = liftDOM
-      (((self ^. jsf "load" ()) >>= readPromise) >>= fromJSValUnchecked)
+load self = liftDOM (((((self ^. jsf "load" ()) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.load Mozilla FontFace.load documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/load MDN FontFace.load documentation>
 load_ :: (MonadDOM m) => FontFace -> m ()
-load_ self = liftDOM (void (self ^. jsf "load" ()))
+load_ self = liftDOM (void (((self ^. jsf "load" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.family Mozilla FontFace.family documentation> 
-setFamily ::
-          (MonadDOM m, ToJSString val) => FontFace -> val -> m ()
-setFamily self val = liftDOM (self ^. jss "family" (toJSVal val))
+-- | <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 (self ^. jss "family" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.family Mozilla FontFace.family documentation> 
-getFamily ::
-          (MonadDOM m, FromJSString result) => FontFace -> m result
-getFamily self
-  = liftDOM ((self ^. js "family") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/family MDN FontFace.family documentation>
+getFamily :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getFamily self = liftDOM (((self ^. js "family") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.style Mozilla FontFace.style documentation> 
+-- | <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 (self ^. jss "style" (toJSVal val))
+setStyle self val = liftDOM (void (self ^. jss "style" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.style Mozilla FontFace.style documentation> 
-getStyle ::
-         (MonadDOM m, FromJSString result) => FontFace -> m result
-getStyle self
-  = liftDOM ((self ^. js "style") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/style MDN FontFace.style documentation>
+getStyle :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getStyle self = liftDOM (((self ^. js "style") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.weight Mozilla FontFace.weight documentation> 
-setWeight ::
-          (MonadDOM m, ToJSString val) => FontFace -> val -> m ()
-setWeight self val = liftDOM (self ^. jss "weight" (toJSVal val))
+-- | <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 (self ^. jss "weight" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.weight Mozilla FontFace.weight documentation> 
-getWeight ::
-          (MonadDOM m, FromJSString result) => FontFace -> m result
-getWeight self
-  = liftDOM ((self ^. js "weight") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/weight MDN FontFace.weight documentation>
+getWeight :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getWeight self = liftDOM (((self ^. js "weight") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.stretch Mozilla FontFace.stretch documentation> 
-setStretch ::
-           (MonadDOM m, ToJSString val) => FontFace -> val -> m ()
-setStretch self val = liftDOM (self ^. jss "stretch" (toJSVal val))
+-- | <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 (self ^. jss "stretch" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.stretch Mozilla FontFace.stretch documentation> 
-getStretch ::
-           (MonadDOM m, FromJSString result) => FontFace -> m result
-getStretch self
-  = liftDOM ((self ^. js "stretch") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/stretch MDN FontFace.stretch documentation>
+getStretch :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getStretch self = liftDOM (((self ^. js "stretch") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.unicodeRange Mozilla FontFace.unicodeRange documentation> 
-setUnicodeRange ::
-                (MonadDOM m, ToJSString val) => FontFace -> val -> m ()
-setUnicodeRange self val
-  = liftDOM (self ^. jss "unicodeRange" (toJSVal val))
+-- | <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 (self ^. jss "unicodeRange" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.unicodeRange Mozilla FontFace.unicodeRange documentation> 
-getUnicodeRange ::
-                (MonadDOM m, FromJSString result) => FontFace -> m result
-getUnicodeRange self
-  = liftDOM ((self ^. js "unicodeRange") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/unicodeRange MDN FontFace.unicodeRange documentation>
+getUnicodeRange :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getUnicodeRange self = liftDOM (((self ^. js "unicodeRange") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.variant Mozilla FontFace.variant documentation> 
-setVariant ::
-           (MonadDOM m, ToJSString val) => FontFace -> val -> m ()
-setVariant self val = liftDOM (self ^. jss "variant" (toJSVal val))
+-- | <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 (self ^. jss "featureSettings" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.variant Mozilla FontFace.variant documentation> 
-getVariant ::
-           (MonadDOM m, FromJSString result) => FontFace -> m result
-getVariant self
-  = liftDOM ((self ^. js "variant") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/featureSettings MDN FontFace.featureSettings documentation>
+getFeatureSettings :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getFeatureSettings self = liftDOM (((self ^. js "featureSettings") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.featureSettings Mozilla FontFace.featureSettings documentation> 
-setFeatureSettings ::
-                   (MonadDOM m, ToJSString val) => FontFace -> val -> m ()
-setFeatureSettings self val
-  = liftDOM (self ^. jss "featureSettings" (toJSVal val))
+-- | <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 (self ^. jss "variationSettings" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.featureSettings Mozilla FontFace.featureSettings documentation> 
-getFeatureSettings ::
-                   (MonadDOM m, FromJSString result) => FontFace -> m result
-getFeatureSettings self
-  = liftDOM ((self ^. js "featureSettings") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/variationSettings MDN FontFace.variationSettings documentation>
+getVariationSettings :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getVariationSettings self = liftDOM (((self ^. js "variationSettings") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.status Mozilla FontFace.status documentation> 
+-- | <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 (self ^. jss "display" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/display MDN FontFace.display documentation>
+getDisplay :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getDisplay self = liftDOM (((self ^. js "display") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "ascentOverride" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/ascentOverride MDN FontFace.ascentOverride documentation>
+getAscentOverride :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getAscentOverride self = liftDOM (((self ^. js "ascentOverride") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "descentOverride" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/descentOverride MDN FontFace.descentOverride documentation>
+getDescentOverride :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getDescentOverride self = liftDOM (((self ^. js "descentOverride") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "lineGapOverride" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/lineGapOverride MDN FontFace.lineGapOverride documentation>
+getLineGapOverride :: (MonadDOM m, FromJSString result) => FontFace -> m result
+getLineGapOverride self = liftDOM (((self ^. js "lineGapOverride") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/status MDN FontFace.status documentation>
 getStatus :: (MonadDOM m) => FontFace -> m FontFaceLoadStatus
-getStatus self
-  = liftDOM ((self ^. js "status") >>= fromJSValUnchecked)
+getStatus self = liftDOM (((self ^. js "status") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.loaded Mozilla FontFace.loaded documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/FontFace/loaded MDN FontFace.loaded documentation>
 getLoaded :: (MonadDOM m) => FontFace -> m FontFace
-getLoaded self
-  = liftDOM
-      (((self ^. js "loaded") >>= readPromise) >>= fromJSValUnchecked)
+getLoaded self = liftDOM (((((self ^. js "loaded") >>= readPromise)) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FontFaceDescriptors.hs b/src/JSDOM/Generated/FontFaceDescriptors.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FontFaceDescriptors.hs
@@ -0,0 +1,180 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-font-loading-3 (webref). Do not edit.
+module JSDOM.Generated.FontFaceDescriptors
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dictdef-fontfacedescriptors FontFaceDescriptors specification>
+newFontFaceDescriptors :: (MonadDOM m) => m FontFaceDescriptors
+newFontFaceDescriptors = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "style" (toJSVal val)))
+
+-- | <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 (((self ^. js "style") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "style") >>= fromMaybeJSString) >>= 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 (((self ^. js "style") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "weight" (toJSVal val)))
+
+-- | <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 (((self ^. js "weight") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "weight") >>= fromMaybeJSString) >>= 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 (((self ^. js "weight") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "stretch" (toJSVal val)))
+
+-- | <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 (((self ^. js "stretch") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "stretch") >>= fromMaybeJSString) >>= 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 (((self ^. js "stretch") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "unicodeRange" (toJSVal val)))
+
+-- | <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 (((self ^. js "unicodeRange") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "unicodeRange") >>= fromMaybeJSString) >>= 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 (((self ^. js "unicodeRange") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "featureSettings" (toJSVal val)))
+
+-- | <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 (((self ^. js "featureSettings") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "featureSettings") >>= fromMaybeJSString) >>= 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 (((self ^. js "featureSettings") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "variationSettings" (toJSVal val)))
+
+-- | <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 (((self ^. js "variationSettings") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "variationSettings") >>= fromMaybeJSString) >>= 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 (((self ^. js "variationSettings") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "display" (toJSVal val)))
+
+-- | <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 (((self ^. js "display") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "display") >>= fromMaybeJSString) >>= 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 (((self ^. js "display") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "ascentOverride" (toJSVal val)))
+
+-- | <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 (((self ^. js "ascentOverride") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "ascentOverride") >>= fromMaybeJSString) >>= 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 (((self ^. js "ascentOverride") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "descentOverride" (toJSVal val)))
+
+-- | <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 (((self ^. js "descentOverride") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "descentOverride") >>= fromMaybeJSString) >>= 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 (((self ^. js "descentOverride") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "lineGapOverride" (toJSVal val)))
+
+-- | <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 (((self ^. js "lineGapOverride") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "lineGapOverride") >>= fromMaybeJSString) >>= 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 (((self ^. js "lineGapOverride") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FontFaceSet.hs b/src/JSDOM/Generated/FontFaceSet.hs
--- a/src/JSDOM/Generated/FontFaceSet.hs
+++ b/src/JSDOM/Generated/FontFaceSet.hs
@@ -1,123 +1,72 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-font-loading-3 (webref). Do not edit.
 module JSDOM.Generated.FontFaceSet
-       (newFontFaceSet, has, has_, add, add_, delete, delete_, clear,
-        load, load_, check, check_, getSize, loading, loadingDone,
-        loadingerror, getReady, getStatus, FontFaceSet(..),
-        gTypeFontFaceSet)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet Mozilla FontFaceSet documentation> 
-newFontFaceSet :: (MonadDOM m) => [FontFace] -> m FontFaceSet
-newFontFaceSet initialFaces
-  = liftDOM
-      (FontFaceSet <$>
-         new (jsg "FontFaceSet") [toJSVal (array initialFaces)])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.has Mozilla FontFaceSet.has documentation> 
-has :: (MonadDOM m) => FontFaceSet -> FontFace -> m Bool
-has self font
-  = liftDOM ((self ^. jsf "has" [toJSVal font]) >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.has Mozilla FontFaceSet.has documentation> 
-has_ :: (MonadDOM m) => FontFaceSet -> FontFace -> m ()
-has_ self font = liftDOM (void (self ^. jsf "has" [toJSVal font]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.add Mozilla FontFaceSet.add documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/add MDN FontFaceSet.add documentation>
 add :: (MonadDOM m) => FontFaceSet -> FontFace -> m FontFaceSet
-add self font
-  = liftDOM
-      ((self ^. jsf "add" [toJSVal font]) >>= fromJSValUnchecked)
+add self font = liftDOM (((self ^. jsf "add" [toJSVal font]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.add Mozilla FontFaceSet.add documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/add MDN FontFaceSet.add documentation>
 add_ :: (MonadDOM m) => FontFaceSet -> FontFace -> m ()
 add_ self font = liftDOM (void (self ^. jsf "add" [toJSVal font]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.delete Mozilla FontFaceSet.delete documentation> 
-delete :: (MonadDOM m) => FontFaceSet -> FontFace -> m Bool
-delete self font
-  = liftDOM ((self ^. jsf "delete" [toJSVal font]) >>= valToBool)
+-- | <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 (((self ^. jsf "check" [toJSVal font, P.maybe (P.return jsUndefined) toJSVal text]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.delete Mozilla FontFaceSet.delete documentation> 
-delete_ :: (MonadDOM m) => FontFaceSet -> FontFace -> m ()
-delete_ self font
-  = liftDOM (void (self ^. jsf "delete" [toJSVal 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 (self ^. jsf "check" [toJSVal font, P.maybe (P.return jsUndefined) toJSVal text]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.clear Mozilla FontFaceSet.clear documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/clear MDN FontFaceSet.clear documentation>
 clear :: (MonadDOM m) => FontFaceSet -> m ()
 clear self = liftDOM (void (self ^. jsf "clear" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.load Mozilla FontFaceSet.load documentation> 
-load ::
-     (MonadDOM m, ToJSString font, ToJSString text) =>
-       FontFaceSet -> font -> Maybe text -> m [FontFace]
-load self font text
-  = liftDOM
-      (((self ^. jsf "load" [toJSVal font, toJSVal text]) >>=
-          readPromise)
-         >>= fromJSArrayUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/delete MDN FontFaceSet.delete documentation>
+delete :: (MonadDOM m) => FontFaceSet -> FontFace -> m Bool
+delete self font = liftDOM (((self ^. jsf "delete" [toJSVal font]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.load Mozilla FontFaceSet.load documentation> 
-load_ ::
-      (MonadDOM m, ToJSString font, ToJSString text) =>
-        FontFaceSet -> font -> Maybe text -> m ()
-load_ self font text
-  = liftDOM (void (self ^. jsf "load" [toJSVal font, toJSVal text]))
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/delete MDN FontFaceSet.delete documentation>
+delete_ :: (MonadDOM m) => FontFaceSet -> FontFace -> m ()
+delete_ self font = liftDOM (void (self ^. jsf "delete" [toJSVal font]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.check Mozilla FontFaceSet.check documentation> 
-check ::
-      (MonadDOM m, ToJSString font, ToJSString text) =>
-        FontFaceSet -> font -> Maybe text -> m Bool
-check self font text
-  = liftDOM
-      ((self ^. jsf "check" [toJSVal font, toJSVal text]) >>= valToBool)
+-- | <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 (((((self ^. jsf "load" [toJSVal font, P.maybe (P.return jsUndefined) toJSVal text]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.check Mozilla FontFaceSet.check documentation> 
-check_ ::
-       (MonadDOM m, ToJSString font, ToJSString text) =>
-         FontFaceSet -> font -> Maybe text -> m ()
-check_ self font text
-  = liftDOM (void (self ^. jsf "check" [toJSVal font, toJSVal 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 (((self ^. jsf "load" [toJSVal font, P.maybe (P.return jsUndefined) toJSVal text]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.size Mozilla FontFaceSet.size documentation> 
-getSize :: (MonadDOM m) => FontFaceSet -> m Int
-getSize self
-  = liftDOM (round <$> ((self ^. js "size") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/ready MDN FontFaceSet.ready documentation>
+getReady :: (MonadDOM m) => FontFaceSet -> m FontFaceSet
+getReady self = liftDOM (((((self ^. js "ready") >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.onloading Mozilla FontFaceSet.onloading documentation> 
-loading :: EventName FontFaceSet Event
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSet/status MDN FontFaceSet.status documentation>
+getStatus :: (MonadDOM m) => FontFaceSet -> m FontFaceSetLoadStatus
+getStatus self = liftDOM (((self ^. js "status") >>= fromJSValUnchecked))
+
+-- | <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")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.ready Mozilla FontFaceSet.ready documentation> 
-getReady :: (MonadDOM m) => FontFaceSet -> m FontFaceSet
-getReady self
-  = liftDOM
-      (((self ^. js "ready") >>= readPromise) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.status Mozilla FontFaceSet.status documentation> 
-getStatus :: (MonadDOM m) => FontFaceSet -> m FontFaceSetLoadStatus
-getStatus self
-  = liftDOM ((self ^. js "status") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/FontFaceSetLoadEvent.hs b/src/JSDOM/Generated/FontFaceSetLoadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FontFaceSetLoadEvent.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-font-loading-3 (webref). Do not edit.
+module JSDOM.Generated.FontFaceSetLoadEvent
+       (newFontFaceSetLoadEvent, getFontfaces, FontFaceSetLoadEvent(..), gTypeFontFaceSetLoadEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "FontFaceSetLoadEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FontFaceSetLoadEvent/fontfaces MDN FontFaceSetLoadEvent.fontfaces documentation>
+getFontfaces :: (MonadDOM m) => FontFaceSetLoadEvent -> m [FontFace]
+getFontfaces self = liftDOM (((self ^. js "fontfaces") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FontFaceSetLoadEventInit.hs b/src/JSDOM/Generated/FontFaceSetLoadEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FontFaceSetLoadEventInit.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-font-loading-3 (webref). Do not edit.
+module JSDOM.Generated.FontFaceSetLoadEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dictdef-fontfacesetloadeventinit FontFaceSetLoadEventInit specification>
+newFontFaceSetLoadEventInit :: (MonadDOM m) => m FontFaceSetLoadEventInit
+newFontFaceSetLoadEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "fontfaces" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-font-loading-3/#dom-fontfacesetloadeventinit-fontfaces FontFaceSetLoadEventInit.fontfaces specification>
+getFontfaces :: (MonadDOM m) => FontFaceSetLoadEventInit -> m (Maybe [FontFace])
+getFontfaces self = liftDOM (((self ^. js "fontfaces") >>= 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 ((((self ^. js "fontfaces") >>= 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 (((self ^. js "fontfaces") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FontFaceSource.hs b/src/JSDOM/Generated/FontFaceSource.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FontFaceSource.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-font-loading-3 (webref). Do not edit.
+module JSDOM.Generated.FontFaceSource
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/fonts MDN FontFaceSource.fonts documentation>
+getFonts :: (MonadDOM m, IsFontFaceSource self) => self -> m FontFaceSet
+getFonts self = liftDOM ((((Types.toFontFaceSource self) ^. js "fonts") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FormData.hs b/src/JSDOM/Generated/FormData.hs
--- a/src/JSDOM/Generated/FormData.hs
+++ b/src/JSDOM/Generated/FormData.hs
@@ -1,43 +1,76 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from xhr (webref). Do not edit.
 module JSDOM.Generated.FormData
-       (newFormData, append, appendBlob, FormData(..), gTypeFormData)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData Mozilla FormData documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/FormData/FormData MDN FormData. documentation>
 newFormData :: (MonadDOM m) => Maybe HTMLFormElement -> m FormData
-newFormData form
-  = liftDOM (FormData <$> new (jsg "FormData") [toJSVal form])
+newFormData form = liftDOM (((new (jsg "FormData") [P.maybe (P.return jsUndefined) toJSVal form]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData.append Mozilla FormData.append documentation> 
-append ::
-       (MonadDOM m, ToJSString name, ToJSString value) =>
-         FormData -> name -> value -> m ()
-append self name value
-  = liftDOM
-      (void (self ^. jsf "append" [toJSVal name, toJSVal value]))
+-- | <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 (((new (jsg "FormData") [P.maybe (P.return jsUndefined) toJSVal form, toJSVal submitter]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData.append Mozilla FormData.append documentation> 
-appendBlob ::
-           (MonadDOM m, ToJSString name, IsBlob value, ToJSString filename) =>
-             FormData -> name -> value -> Maybe filename -> m ()
-appendBlob self name value filename
-  = liftDOM
-      (void
-         (self ^. jsf "append"
-            [toJSVal name, toJSVal value, toJSVal filename]))
+-- | <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 (self ^. jsf "append" [toJSVal name, toJSVal value]))
+
+-- | <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 (self ^. jsf "append" [toJSVal name, toJSVal blobValue, P.maybe (P.return jsUndefined) toJSVal filename]))
+
+-- | <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 (self ^. jsf "delete" [toJSVal name]))
+
+-- | <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 (((self ^. jsf "get" [toJSVal 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 (self ^. jsf "get" [toJSVal 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 ((((self ^. jsf "get" [toJSVal 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 (((self ^. jsf "get" [toJSVal name]) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "getAll" [toJSVal 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 (self ^. jsf "getAll" [toJSVal name]))
+
+-- | <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 (((self ^. jsf "has" [toJSVal name]) >>= valToBool))
+
+-- | <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 (self ^. jsf "has" [toJSVal name]))
+
+-- | <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 (self ^. jsf "set" [toJSVal name, toJSVal value]))
+
+-- | <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 (self ^. jsf "set" [toJSVal name, toJSVal blobValue, P.maybe (P.return jsUndefined) toJSVal filename]))
diff --git a/src/JSDOM/Generated/FormDataEvent.hs b/src/JSDOM/Generated/FormDataEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FormDataEvent.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.FormDataEvent
+       (newFormDataEvent, getFormData, FormDataEvent(..), gTypeFormDataEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "FormDataEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/FormDataEvent/formData MDN FormDataEvent.formData documentation>
+getFormData :: (MonadDOM m) => FormDataEvent -> m FormData
+getFormData self = liftDOM (((self ^. js "formData") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FormDataEventInit.hs b/src/JSDOM/Generated/FormDataEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FormDataEventInit.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.FormDataEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#formdataeventinit FormDataEventInit specification>
+newFormDataEventInit :: (MonadDOM m) => FormData -> m FormDataEventInit
+newFormDataEventInit formData = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "formData" (toJSVal formData)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+setFormData :: (MonadDOM m) => FormDataEventInit -> FormData -> m ()
+setFormData self val = liftDOM (void (self ^. jss "formData" (toJSVal val)))
+
+getFormData :: (MonadDOM m) => FormDataEventInit -> m FormData
+getFormData self = liftDOM (((self ^. js "formData") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FragmentDirective.hs b/src/JSDOM/Generated/FragmentDirective.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FragmentDirective.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scroll-to-text-fragment (webref). Do not edit.
+module JSDOM.Generated.FragmentDirective
+       (FragmentDirective(..), gTypeFragmentDirective)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/FrameRequestCallback.hs b/src/JSDOM/Generated/FrameRequestCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FrameRequestCallback.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newFrameRequestCallback :: (MonadDOM m) => (Double -> JSM ()) -> m FrameRequestCallback
+newFrameRequestCallback callback = liftDOM (FrameRequestCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (time : _) -> do
+          time' <- valToNumber time
+          callback time'))
+
+newFrameRequestCallbackSync :: (MonadDOM m) => (Double -> JSM ()) -> m FrameRequestCallback
+newFrameRequestCallbackSync callback = liftDOM (FrameRequestCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (time : _) -> do
+          time' <- valToNumber time
+          callback time'))
+
+newFrameRequestCallbackAsync :: (MonadDOM m) => (Double -> JSM ()) -> m FrameRequestCallback
+newFrameRequestCallbackAsync callback = liftDOM (FrameRequestCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (time : _) -> do
+          time' <- valToNumber time
+          callback time'))
diff --git a/src/JSDOM/Generated/FullscreenOptions.hs b/src/JSDOM/Generated/FullscreenOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FullscreenOptions.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fullscreen (webref). Do not edit.
+module JSDOM.Generated.FullscreenOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://fullscreen.spec.whatwg.org/#dictdef-fullscreenoptions FullscreenOptions specification>
+newFullscreenOptions :: (MonadDOM m) => m FullscreenOptions
+newFullscreenOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://fullscreen.spec.whatwg.org/#dom-fullscreenoptions-keyboardlock FullscreenOptions.keyboardLock specification>
+setKeyboardLock :: (MonadDOM m) => FullscreenOptions -> FullscreenKeyboardLock -> m ()
+setKeyboardLock self val = liftDOM (void (self ^. jss "keyboardLock" (toJSVal val)))
+
+-- | <https://fullscreen.spec.whatwg.org/#dom-fullscreenoptions-keyboardlock FullscreenOptions.keyboardLock specification>
+getKeyboardLock :: (MonadDOM m) => FullscreenOptions -> m (Maybe FullscreenKeyboardLock)
+getKeyboardLock self = liftDOM (((self ^. js "keyboardLock") >>= fromJSValUnchecked))
+
+-- | <https://fullscreen.spec.whatwg.org/#dom-fullscreenoptions-keyboardlock FullscreenOptions.keyboardLock specification>
+getKeyboardLockUnsafe :: (MonadDOM m, HasCallStack) => FullscreenOptions -> m FullscreenKeyboardLock
+getKeyboardLockUnsafe self = liftDOM ((((self ^. js "keyboardLock") >>= 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 (((self ^. js "keyboardLock") >>= fromJSValUnchecked))
+
+-- | <https://fullscreen.spec.whatwg.org/#dom-fullscreenoptions-navigationui FullscreenOptions.navigationUI specification>
+setNavigationUI :: (MonadDOM m) => FullscreenOptions -> FullscreenNavigationUI -> m ()
+setNavigationUI self val = liftDOM (void (self ^. jss "navigationUI" (toJSVal val)))
+
+-- | <https://fullscreen.spec.whatwg.org/#dom-fullscreenoptions-navigationui FullscreenOptions.navigationUI specification>
+getNavigationUI :: (MonadDOM m) => FullscreenOptions -> m (Maybe FullscreenNavigationUI)
+getNavigationUI self = liftDOM (((self ^. js "navigationUI") >>= fromJSValUnchecked))
+
+-- | <https://fullscreen.spec.whatwg.org/#dom-fullscreenoptions-navigationui FullscreenOptions.navigationUI specification>
+getNavigationUIUnsafe :: (MonadDOM m, HasCallStack) => FullscreenOptions -> m FullscreenNavigationUI
+getNavigationUIUnsafe self = liftDOM ((((self ^. js "navigationUI") >>= 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 (((self ^. js "navigationUI") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/window-management/#dom-fullscreenoptions-screen FullscreenOptions.screen specification>
+setScreen :: (MonadDOM m) => FullscreenOptions -> ScreenDetailed -> m ()
+setScreen self val = liftDOM (void (self ^. jss "screen" (toJSVal val)))
+
+-- | <https://w3c.github.io/window-management/#dom-fullscreenoptions-screen FullscreenOptions.screen specification>
+getScreen :: (MonadDOM m) => FullscreenOptions -> m (Maybe ScreenDetailed)
+getScreen self = liftDOM (((self ^. js "screen") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/window-management/#dom-fullscreenoptions-screen FullscreenOptions.screen specification>
+getScreenUnsafe :: (MonadDOM m, HasCallStack) => FullscreenOptions -> m ScreenDetailed
+getScreenUnsafe self = liftDOM ((((self ^. js "screen") >>= 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 (((self ^. js "screen") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/FunctionStringCallback.hs b/src/JSDOM/Generated/FunctionStringCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/FunctionStringCallback.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newFunctionStringCallback :: (MonadDOM m) => (JSString -> JSM ()) -> m FunctionStringCallback
+newFunctionStringCallback callback = liftDOM (FunctionStringCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (data' : _) -> do
+          data'' <- fromJSValUnchecked data'
+          callback data''))
+
+newFunctionStringCallbackSync :: (MonadDOM m) => (JSString -> JSM ()) -> m FunctionStringCallback
+newFunctionStringCallbackSync callback = liftDOM (FunctionStringCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (data' : _) -> do
+          data'' <- fromJSValUnchecked data'
+          callback data''))
+
+newFunctionStringCallbackAsync :: (MonadDOM m) => (JSString -> JSM ()) -> m FunctionStringCallback
+newFunctionStringCallbackAsync callback = liftDOM (FunctionStringCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (data' : _) -> do
+          data'' <- fromJSValUnchecked data'
+          callback data''))
diff --git a/src/JSDOM/Generated/GPU.hs b/src/JSDOM/Generated/GPU.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPU.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPU
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPU/getPreferredCanvasFormat MDN GPU.getPreferredCanvasFormat documentation>
+getPreferredCanvasFormat :: (MonadDOM m) => GPU -> m GPUTextureFormat
+getPreferredCanvasFormat self = liftDOM (((self ^. jsf "getPreferredCanvasFormat" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPU/getPreferredCanvasFormat MDN GPU.getPreferredCanvasFormat documentation>
+getPreferredCanvasFormat_ :: (MonadDOM m) => GPU -> m ()
+getPreferredCanvasFormat_ self = liftDOM (void (self ^. jsf "getPreferredCanvasFormat" ()))
+
+-- | <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 (((((self ^. jsf "requestAdapter" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= 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 (((self ^. jsf "requestAdapter" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 ((((((self ^. jsf "requestAdapter" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= 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 (((((self ^. jsf "requestAdapter" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPU/wgslLanguageFeatures MDN GPU.wgslLanguageFeatures documentation>
+getWgslLanguageFeatures :: (MonadDOM m) => GPU -> m WGSLLanguageFeatures
+getWgslLanguageFeatures self = liftDOM (((self ^. js "wgslLanguageFeatures") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUAdapter.hs b/src/JSDOM/Generated/GPUAdapter.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUAdapter.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUAdapter
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((((self ^. jsf "requestDevice" [P.maybe (P.return jsUndefined) toJSVal descriptor]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "requestDevice" [P.maybe (P.return jsUndefined) toJSVal descriptor]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapter/features MDN GPUAdapter.features documentation>
+getFeatures :: (MonadDOM m) => GPUAdapter -> m GPUSupportedFeatures
+getFeatures self = liftDOM (((self ^. js "features") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapter/limits MDN GPUAdapter.limits documentation>
+getLimits :: (MonadDOM m) => GPUAdapter -> m GPUSupportedLimits
+getLimits self = liftDOM (((self ^. js "limits") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapter/info MDN GPUAdapter.info documentation>
+getInfo :: (MonadDOM m) => GPUAdapter -> m GPUAdapterInfo
+getInfo self = liftDOM (((self ^. js "info") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUAdapterInfo.hs b/src/JSDOM/Generated/GPUAdapterInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUAdapterInfo.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUAdapterInfo
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapterInfo/vendor MDN GPUAdapterInfo.vendor documentation>
+getVendor :: (MonadDOM m, FromJSString result) => GPUAdapterInfo -> m result
+getVendor self = liftDOM (((self ^. js "vendor") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapterInfo/architecture MDN GPUAdapterInfo.architecture documentation>
+getArchitecture :: (MonadDOM m, FromJSString result) => GPUAdapterInfo -> m result
+getArchitecture self = liftDOM (((self ^. js "architecture") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapterInfo/device MDN GPUAdapterInfo.device documentation>
+getDevice :: (MonadDOM m, FromJSString result) => GPUAdapterInfo -> m result
+getDevice self = liftDOM (((self ^. js "device") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapterInfo/description MDN GPUAdapterInfo.description documentation>
+getDescription :: (MonadDOM m, FromJSString result) => GPUAdapterInfo -> m result
+getDescription self = liftDOM (((self ^. js "description") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapterInfo/subgroupMinSize MDN GPUAdapterInfo.subgroupMinSize documentation>
+getSubgroupMinSize :: (MonadDOM m) => GPUAdapterInfo -> m Word
+getSubgroupMinSize self = liftDOM ((P.round <$> ((self ^. js "subgroupMinSize") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapterInfo/subgroupMaxSize MDN GPUAdapterInfo.subgroupMaxSize documentation>
+getSubgroupMaxSize :: (MonadDOM m) => GPUAdapterInfo -> m Word
+getSubgroupMaxSize self = liftDOM ((P.round <$> ((self ^. js "subgroupMaxSize") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUAdapterInfo/isFallbackAdapter MDN GPUAdapterInfo.isFallbackAdapter documentation>
+getIsFallbackAdapter :: (MonadDOM m) => GPUAdapterInfo -> m Bool
+getIsFallbackAdapter self = liftDOM (((self ^. js "isFallbackAdapter") >>= valToBool))
diff --git a/src/JSDOM/Generated/GPUBindGroup.hs b/src/JSDOM/Generated/GPUBindGroup.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUBindGroup.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUBindGroup
+       (GPUBindGroup(..), gTypeGPUBindGroup)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/GPUBindGroupDescriptor.hs b/src/JSDOM/Generated/GPUBindGroupDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUBindGroupDescriptor.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUBindGroupDescriptor
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpubindgroupdescriptor GPUBindGroupDescriptor specification>
+newGPUBindGroupDescriptor :: (MonadDOM m) => GPUBindGroupLayout -> [GPUBindGroupEntry] -> m GPUBindGroupDescriptor
+newGPUBindGroupDescriptor layout entries = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "layout" (toJSVal layout)) P.>> (o ^. jss "entries" (toJSVal entries)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgroupdescriptor-layout GPUBindGroupDescriptor.layout specification>
+setLayout :: (MonadDOM m) => GPUBindGroupDescriptor -> GPUBindGroupLayout -> m ()
+setLayout self val = liftDOM (void (self ^. jss "layout" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgroupdescriptor-layout GPUBindGroupDescriptor.layout specification>
+getLayout :: (MonadDOM m) => GPUBindGroupDescriptor -> m GPUBindGroupLayout
+getLayout self = liftDOM (((self ^. js "layout") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgroupdescriptor-entries GPUBindGroupDescriptor.entries specification>
+setEntries :: (MonadDOM m) => GPUBindGroupDescriptor -> [GPUBindGroupEntry] -> m ()
+setEntries self val = liftDOM (void (self ^. jss "entries" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgroupdescriptor-entries GPUBindGroupDescriptor.entries specification>
+getEntries :: (MonadDOM m) => GPUBindGroupDescriptor -> m [GPUBindGroupEntry]
+getEntries self = liftDOM (((self ^. js "entries") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUBindGroupEntry.hs b/src/JSDOM/Generated/GPUBindGroupEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUBindGroupEntry.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUBindGroupEntry
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpubindgroupentry GPUBindGroupEntry specification>
+newGPUBindGroupEntry :: (MonadDOM m, IsGPUBindingResource resource) => Word -> resource -> m GPUBindGroupEntry
+newGPUBindGroupEntry binding resource = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "binding" (toJSVal binding)) P.>> (o ^. jss "resource" (toJSVal resource)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgroupentry-binding GPUBindGroupEntry.binding specification>
+setBinding :: (MonadDOM m) => GPUBindGroupEntry -> Word -> m ()
+setBinding self val = liftDOM (void (self ^. jss "binding" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgroupentry-binding GPUBindGroupEntry.binding specification>
+getBinding :: (MonadDOM m) => GPUBindGroupEntry -> m Word
+getBinding self = liftDOM ((P.round <$> ((self ^. js "binding") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgroupentry-resource GPUBindGroupEntry.resource specification>
+setResource :: (MonadDOM m, IsGPUBindingResource val) => GPUBindGroupEntry -> val -> m ()
+setResource self val = liftDOM (void (self ^. jss "resource" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgroupentry-resource GPUBindGroupEntry.resource specification>
+getResource :: (MonadDOM m) => GPUBindGroupEntry -> m GPUBindingResource
+getResource self = liftDOM (((self ^. js "resource") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUBindGroupLayout.hs b/src/JSDOM/Generated/GPUBindGroupLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUBindGroupLayout.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUBindGroupLayout
+       (GPUBindGroupLayout(..), gTypeGPUBindGroupLayout)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/GPUBindGroupLayoutDescriptor.hs b/src/JSDOM/Generated/GPUBindGroupLayoutDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUBindGroupLayoutDescriptor.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUBindGroupLayoutDescriptor
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpubindgrouplayoutdescriptor GPUBindGroupLayoutDescriptor specification>
+newGPUBindGroupLayoutDescriptor :: (MonadDOM m) => [GPUBindGroupLayoutEntry] -> m GPUBindGroupLayoutDescriptor
+newGPUBindGroupLayoutDescriptor entries = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "entries" (toJSVal entries)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutdescriptor-entries GPUBindGroupLayoutDescriptor.entries specification>
+setEntries :: (MonadDOM m) => GPUBindGroupLayoutDescriptor -> [GPUBindGroupLayoutEntry] -> m ()
+setEntries self val = liftDOM (void (self ^. jss "entries" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutdescriptor-entries GPUBindGroupLayoutDescriptor.entries specification>
+getEntries :: (MonadDOM m) => GPUBindGroupLayoutDescriptor -> m [GPUBindGroupLayoutEntry]
+getEntries self = liftDOM (((self ^. js "entries") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUBindGroupLayoutEntry.hs b/src/JSDOM/Generated/GPUBindGroupLayoutEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUBindGroupLayoutEntry.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUBindGroupLayoutEntry
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpubindgrouplayoutentry GPUBindGroupLayoutEntry specification>
+newGPUBindGroupLayoutEntry :: (MonadDOM m) => Word -> Word -> m GPUBindGroupLayoutEntry
+newGPUBindGroupLayoutEntry binding visibility = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "binding" (toJSVal binding)) P.>> (o ^. jss "visibility" (toJSVal visibility)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-binding GPUBindGroupLayoutEntry.binding specification>
+setBinding :: (MonadDOM m) => GPUBindGroupLayoutEntry -> Word -> m ()
+setBinding self val = liftDOM (void (self ^. jss "binding" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-binding GPUBindGroupLayoutEntry.binding specification>
+getBinding :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m Word
+getBinding self = liftDOM ((P.round <$> ((self ^. js "binding") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-visibility GPUBindGroupLayoutEntry.visibility specification>
+setVisibility :: (MonadDOM m) => GPUBindGroupLayoutEntry -> Word -> m ()
+setVisibility self val = liftDOM (void (self ^. jss "visibility" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-visibility GPUBindGroupLayoutEntry.visibility specification>
+getVisibility :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m Word
+getVisibility self = liftDOM ((P.round <$> ((self ^. js "visibility") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-buffer GPUBindGroupLayoutEntry.buffer specification>
+setBuffer :: (MonadDOM m) => GPUBindGroupLayoutEntry -> GPUBufferBindingLayout -> m ()
+setBuffer self val = liftDOM (void (self ^. jss "buffer" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-buffer GPUBindGroupLayoutEntry.buffer specification>
+getBuffer :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m (Maybe GPUBufferBindingLayout)
+getBuffer self = liftDOM (((self ^. js "buffer") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-buffer GPUBindGroupLayoutEntry.buffer specification>
+getBufferUnsafe :: (MonadDOM m, HasCallStack) => GPUBindGroupLayoutEntry -> m GPUBufferBindingLayout
+getBufferUnsafe self = liftDOM ((((self ^. js "buffer") >>= 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 (((self ^. js "buffer") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-sampler GPUBindGroupLayoutEntry.sampler specification>
+setSampler :: (MonadDOM m) => GPUBindGroupLayoutEntry -> GPUSamplerBindingLayout -> m ()
+setSampler self val = liftDOM (void (self ^. jss "sampler" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-sampler GPUBindGroupLayoutEntry.sampler specification>
+getSampler :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m (Maybe GPUSamplerBindingLayout)
+getSampler self = liftDOM (((self ^. js "sampler") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-sampler GPUBindGroupLayoutEntry.sampler specification>
+getSamplerUnsafe :: (MonadDOM m, HasCallStack) => GPUBindGroupLayoutEntry -> m GPUSamplerBindingLayout
+getSamplerUnsafe self = liftDOM ((((self ^. js "sampler") >>= 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 (((self ^. js "sampler") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-texture GPUBindGroupLayoutEntry.texture specification>
+setTexture :: (MonadDOM m) => GPUBindGroupLayoutEntry -> GPUTextureBindingLayout -> m ()
+setTexture self val = liftDOM (void (self ^. jss "texture" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-texture GPUBindGroupLayoutEntry.texture specification>
+getTexture :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m (Maybe GPUTextureBindingLayout)
+getTexture self = liftDOM (((self ^. js "texture") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-texture GPUBindGroupLayoutEntry.texture specification>
+getTextureUnsafe :: (MonadDOM m, HasCallStack) => GPUBindGroupLayoutEntry -> m GPUTextureBindingLayout
+getTextureUnsafe self = liftDOM ((((self ^. js "texture") >>= 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 (((self ^. js "texture") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-storagetexture GPUBindGroupLayoutEntry.storageTexture specification>
+setStorageTexture :: (MonadDOM m) => GPUBindGroupLayoutEntry -> GPUStorageTextureBindingLayout -> m ()
+setStorageTexture self val = liftDOM (void (self ^. jss "storageTexture" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-storagetexture GPUBindGroupLayoutEntry.storageTexture specification>
+getStorageTexture :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m (Maybe GPUStorageTextureBindingLayout)
+getStorageTexture self = liftDOM (((self ^. js "storageTexture") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-storagetexture GPUBindGroupLayoutEntry.storageTexture specification>
+getStorageTextureUnsafe :: (MonadDOM m, HasCallStack) => GPUBindGroupLayoutEntry -> m GPUStorageTextureBindingLayout
+getStorageTextureUnsafe self = liftDOM ((((self ^. js "storageTexture") >>= 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 (((self ^. js "storageTexture") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-externaltexture GPUBindGroupLayoutEntry.externalTexture specification>
+setExternalTexture :: (MonadDOM m) => GPUBindGroupLayoutEntry -> GPUExternalTextureBindingLayout -> m ()
+setExternalTexture self val = liftDOM (void (self ^. jss "externalTexture" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-externaltexture GPUBindGroupLayoutEntry.externalTexture specification>
+getExternalTexture :: (MonadDOM m) => GPUBindGroupLayoutEntry -> m (Maybe GPUExternalTextureBindingLayout)
+getExternalTexture self = liftDOM (((self ^. js "externalTexture") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubindgrouplayoutentry-externaltexture GPUBindGroupLayoutEntry.externalTexture specification>
+getExternalTextureUnsafe :: (MonadDOM m, HasCallStack) => GPUBindGroupLayoutEntry -> m GPUExternalTextureBindingLayout
+getExternalTextureUnsafe self = liftDOM ((((self ^. js "externalTexture") >>= 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 (((self ^. js "externalTexture") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUBindingCommandsMixin.hs b/src/JSDOM/Generated/GPUBindingCommandsMixin.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUBindingCommandsMixin.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUBindingCommandsMixin
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toGPUBindingCommandsMixin self) ^. jsf "setBindGroup" [toJSVal index, toJSVal bindGroup, P.maybe (P.return jsUndefined) toJSVal dynamicOffsets]))
+
+-- | <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 ((Types.toGPUBindingCommandsMixin self) ^. jsf "setBindGroup" [toJSVal index, toJSVal bindGroup, toJSVal dynamicOffsetsData, toJSVal dynamicOffsetsDataStart, toJSVal dynamicOffsetsDataLength]))
diff --git a/src/JSDOM/Generated/GPUBlendComponent.hs b/src/JSDOM/Generated/GPUBlendComponent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUBlendComponent.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUBlendComponent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpublendcomponent GPUBlendComponent specification>
+newGPUBlendComponent :: (MonadDOM m) => m GPUBlendComponent
+newGPUBlendComponent = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-operation GPUBlendComponent.operation specification>
+setOperation :: (MonadDOM m) => GPUBlendComponent -> GPUBlendOperation -> m ()
+setOperation self val = liftDOM (void (self ^. jss "operation" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-operation GPUBlendComponent.operation specification>
+getOperation :: (MonadDOM m) => GPUBlendComponent -> m (Maybe GPUBlendOperation)
+getOperation self = liftDOM (((self ^. js "operation") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-operation GPUBlendComponent.operation specification>
+getOperationUnsafe :: (MonadDOM m, HasCallStack) => GPUBlendComponent -> m GPUBlendOperation
+getOperationUnsafe self = liftDOM ((((self ^. js "operation") >>= 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 (((self ^. js "operation") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-srcfactor GPUBlendComponent.srcFactor specification>
+setSrcFactor :: (MonadDOM m) => GPUBlendComponent -> GPUBlendFactor -> m ()
+setSrcFactor self val = liftDOM (void (self ^. jss "srcFactor" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-srcfactor GPUBlendComponent.srcFactor specification>
+getSrcFactor :: (MonadDOM m) => GPUBlendComponent -> m (Maybe GPUBlendFactor)
+getSrcFactor self = liftDOM (((self ^. js "srcFactor") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-srcfactor GPUBlendComponent.srcFactor specification>
+getSrcFactorUnsafe :: (MonadDOM m, HasCallStack) => GPUBlendComponent -> m GPUBlendFactor
+getSrcFactorUnsafe self = liftDOM ((((self ^. js "srcFactor") >>= 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 (((self ^. js "srcFactor") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-dstfactor GPUBlendComponent.dstFactor specification>
+setDstFactor :: (MonadDOM m) => GPUBlendComponent -> GPUBlendFactor -> m ()
+setDstFactor self val = liftDOM (void (self ^. jss "dstFactor" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-dstfactor GPUBlendComponent.dstFactor specification>
+getDstFactor :: (MonadDOM m) => GPUBlendComponent -> m (Maybe GPUBlendFactor)
+getDstFactor self = liftDOM (((self ^. js "dstFactor") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendcomponent-dstfactor GPUBlendComponent.dstFactor specification>
+getDstFactorUnsafe :: (MonadDOM m, HasCallStack) => GPUBlendComponent -> m GPUBlendFactor
+getDstFactorUnsafe self = liftDOM ((((self ^. js "dstFactor") >>= 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 (((self ^. js "dstFactor") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUBlendState.hs b/src/JSDOM/Generated/GPUBlendState.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUBlendState.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUBlendState
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpublendstate GPUBlendState specification>
+newGPUBlendState :: (MonadDOM m) => GPUBlendComponent -> GPUBlendComponent -> m GPUBlendState
+newGPUBlendState color alpha = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "color" (toJSVal color)) P.>> (o ^. jss "alpha" (toJSVal alpha)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendstate-color GPUBlendState.color specification>
+setColor :: (MonadDOM m) => GPUBlendState -> GPUBlendComponent -> m ()
+setColor self val = liftDOM (void (self ^. jss "color" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendstate-color GPUBlendState.color specification>
+getColor :: (MonadDOM m) => GPUBlendState -> m GPUBlendComponent
+getColor self = liftDOM (((self ^. js "color") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendstate-alpha GPUBlendState.alpha specification>
+setAlpha :: (MonadDOM m) => GPUBlendState -> GPUBlendComponent -> m ()
+setAlpha self val = liftDOM (void (self ^. jss "alpha" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpublendstate-alpha GPUBlendState.alpha specification>
+getAlpha :: (MonadDOM m) => GPUBlendState -> m GPUBlendComponent
+getAlpha self = liftDOM (((self ^. js "alpha") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUBuffer.hs b/src/JSDOM/Generated/GPUBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUBuffer.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUBuffer
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUBuffer/destroy MDN GPUBuffer.destroy documentation>
+destroy :: (MonadDOM m) => GPUBuffer -> m ()
+destroy self = liftDOM (void (self ^. jsf "destroy" ()))
+
+-- | <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 (((self ^. jsf "getMappedRange" [P.maybe (P.return jsUndefined) toJSVal offset, P.maybe (P.return jsUndefined) toJSVal size]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "getMappedRange" [P.maybe (P.return jsUndefined) toJSVal offset, P.maybe (P.return jsUndefined) toJSVal size]))
+
+-- | <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 (((self ^. jsf "mapAsync" [toJSVal mode, P.maybe (P.return jsUndefined) toJSVal offset, P.maybe (P.return jsUndefined) toJSVal size]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUBuffer/unmap MDN GPUBuffer.unmap documentation>
+unmap :: (MonadDOM m) => GPUBuffer -> m ()
+unmap self = liftDOM (void (self ^. jsf "unmap" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUBuffer/size MDN GPUBuffer.size documentation>
+getSize :: (MonadDOM m) => GPUBuffer -> m Word53
+getSize self = liftDOM (((self ^. js "size") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUBuffer/usage MDN GPUBuffer.usage documentation>
+getUsage :: (MonadDOM m) => GPUBuffer -> m Word
+getUsage self = liftDOM ((P.round <$> ((self ^. js "usage") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUBuffer/mapState MDN GPUBuffer.mapState documentation>
+getMapState :: (MonadDOM m) => GPUBuffer -> m GPUBufferMapState
+getMapState self = liftDOM (((self ^. js "mapState") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUBufferBinding.hs b/src/JSDOM/Generated/GPUBufferBinding.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUBufferBinding.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUBufferBinding
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpubufferbinding GPUBufferBinding specification>
+newGPUBufferBinding :: (MonadDOM m) => GPUBuffer -> m GPUBufferBinding
+newGPUBufferBinding buffer = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "buffer" (toJSVal buffer)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-buffer GPUBufferBinding.buffer specification>
+setBuffer :: (MonadDOM m) => GPUBufferBinding -> GPUBuffer -> m ()
+setBuffer self val = liftDOM (void (self ^. jss "buffer" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-buffer GPUBufferBinding.buffer specification>
+getBuffer :: (MonadDOM m) => GPUBufferBinding -> m GPUBuffer
+getBuffer self = liftDOM (((self ^. js "buffer") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-offset GPUBufferBinding.offset specification>
+setOffset :: (MonadDOM m) => GPUBufferBinding -> Word53 -> m ()
+setOffset self val = liftDOM (void (self ^. jss "offset" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-offset GPUBufferBinding.offset specification>
+getOffset :: (MonadDOM m) => GPUBufferBinding -> m (Maybe Word53)
+getOffset self = liftDOM (((self ^. js "offset") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-offset GPUBufferBinding.offset specification>
+getOffsetUnsafe :: (MonadDOM m, HasCallStack) => GPUBufferBinding -> m Word53
+getOffsetUnsafe self = liftDOM ((((self ^. js "offset") >>= 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 (((self ^. js "offset") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-size GPUBufferBinding.size specification>
+setSize :: (MonadDOM m) => GPUBufferBinding -> Word53 -> m ()
+setSize self val = liftDOM (void (self ^. jss "size" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-size GPUBufferBinding.size specification>
+getSize :: (MonadDOM m) => GPUBufferBinding -> m (Maybe Word53)
+getSize self = liftDOM (((self ^. js "size") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbinding-size GPUBufferBinding.size specification>
+getSizeUnsafe :: (MonadDOM m, HasCallStack) => GPUBufferBinding -> m Word53
+getSizeUnsafe self = liftDOM ((((self ^. js "size") >>= 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 (((self ^. js "size") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUBufferBindingLayout.hs b/src/JSDOM/Generated/GPUBufferBindingLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUBufferBindingLayout.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUBufferBindingLayout
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpubufferbindinglayout GPUBufferBindingLayout specification>
+newGPUBufferBindingLayout :: (MonadDOM m) => m GPUBufferBindingLayout
+newGPUBufferBindingLayout = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-type GPUBufferBindingLayout.type specification>
+setType :: (MonadDOM m) => GPUBufferBindingLayout -> GPUBufferBindingType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-type GPUBufferBindingLayout.type specification>
+getType :: (MonadDOM m) => GPUBufferBindingLayout -> m (Maybe GPUBufferBindingType)
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-type GPUBufferBindingLayout.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => GPUBufferBindingLayout -> m GPUBufferBindingType
+getTypeUnsafe self = liftDOM ((((self ^. js "type") >>= 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 (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-hasdynamicoffset GPUBufferBindingLayout.hasDynamicOffset specification>
+setHasDynamicOffset :: (MonadDOM m) => GPUBufferBindingLayout -> Bool -> m ()
+setHasDynamicOffset self val = liftDOM (void (self ^. jss "hasDynamicOffset" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-hasdynamicoffset GPUBufferBindingLayout.hasDynamicOffset specification>
+getHasDynamicOffset :: (MonadDOM m) => GPUBufferBindingLayout -> m (Maybe Bool)
+getHasDynamicOffset self = liftDOM (((self ^. js "hasDynamicOffset") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-hasdynamicoffset GPUBufferBindingLayout.hasDynamicOffset specification>
+getHasDynamicOffsetUnsafe :: (MonadDOM m, HasCallStack) => GPUBufferBindingLayout -> m Bool
+getHasDynamicOffsetUnsafe self = liftDOM ((((self ^. js "hasDynamicOffset") >>= 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 (((self ^. js "hasDynamicOffset") >>= valToBool))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-minbindingsize GPUBufferBindingLayout.minBindingSize specification>
+setMinBindingSize :: (MonadDOM m) => GPUBufferBindingLayout -> Word53 -> m ()
+setMinBindingSize self val = liftDOM (void (self ^. jss "minBindingSize" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-minbindingsize GPUBufferBindingLayout.minBindingSize specification>
+getMinBindingSize :: (MonadDOM m) => GPUBufferBindingLayout -> m (Maybe Word53)
+getMinBindingSize self = liftDOM (((self ^. js "minBindingSize") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferbindinglayout-minbindingsize GPUBufferBindingLayout.minBindingSize specification>
+getMinBindingSizeUnsafe :: (MonadDOM m, HasCallStack) => GPUBufferBindingLayout -> m Word53
+getMinBindingSizeUnsafe self = liftDOM ((((self ^. js "minBindingSize") >>= 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 (((self ^. js "minBindingSize") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUBufferDescriptor.hs b/src/JSDOM/Generated/GPUBufferDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUBufferDescriptor.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUBufferDescriptor
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#gpubufferdescriptor GPUBufferDescriptor specification>
+newGPUBufferDescriptor :: (MonadDOM m) => Word53 -> Word -> m GPUBufferDescriptor
+newGPUBufferDescriptor size usage = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "size" (toJSVal size)) P.>> (o ^. jss "usage" (toJSVal usage)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferdescriptor-size GPUBufferDescriptor.size specification>
+setSize :: (MonadDOM m) => GPUBufferDescriptor -> Word53 -> m ()
+setSize self val = liftDOM (void (self ^. jss "size" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferdescriptor-size GPUBufferDescriptor.size specification>
+getSize :: (MonadDOM m) => GPUBufferDescriptor -> m Word53
+getSize self = liftDOM (((self ^. js "size") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferdescriptor-usage GPUBufferDescriptor.usage specification>
+setUsage :: (MonadDOM m) => GPUBufferDescriptor -> Word -> m ()
+setUsage self val = liftDOM (void (self ^. jss "usage" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferdescriptor-usage GPUBufferDescriptor.usage specification>
+getUsage :: (MonadDOM m) => GPUBufferDescriptor -> m Word
+getUsage self = liftDOM ((P.round <$> ((self ^. js "usage") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferdescriptor-mappedatcreation GPUBufferDescriptor.mappedAtCreation specification>
+setMappedAtCreation :: (MonadDOM m) => GPUBufferDescriptor -> Bool -> m ()
+setMappedAtCreation self val = liftDOM (void (self ^. jss "mappedAtCreation" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferdescriptor-mappedatcreation GPUBufferDescriptor.mappedAtCreation specification>
+getMappedAtCreation :: (MonadDOM m) => GPUBufferDescriptor -> m (Maybe Bool)
+getMappedAtCreation self = liftDOM (((self ^. js "mappedAtCreation") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpubufferdescriptor-mappedatcreation GPUBufferDescriptor.mappedAtCreation specification>
+getMappedAtCreationUnsafe :: (MonadDOM m, HasCallStack) => GPUBufferDescriptor -> m Bool
+getMappedAtCreationUnsafe self = liftDOM ((((self ^. js "mappedAtCreation") >>= 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 (((self ^. js "mappedAtCreation") >>= valToBool))
diff --git a/src/JSDOM/Generated/GPUCanvasConfiguration.hs b/src/JSDOM/Generated/GPUCanvasConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUCanvasConfiguration.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUCanvasConfiguration
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucanvasconfiguration GPUCanvasConfiguration specification>
+newGPUCanvasConfiguration :: (MonadDOM m) => GPUDevice -> GPUTextureFormat -> m GPUCanvasConfiguration
+newGPUCanvasConfiguration device format = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "device" (toJSVal device)) P.>> (o ^. jss "format" (toJSVal format)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-device GPUCanvasConfiguration.device specification>
+setDevice :: (MonadDOM m) => GPUCanvasConfiguration -> GPUDevice -> m ()
+setDevice self val = liftDOM (void (self ^. jss "device" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-device GPUCanvasConfiguration.device specification>
+getDevice :: (MonadDOM m) => GPUCanvasConfiguration -> m GPUDevice
+getDevice self = liftDOM (((self ^. js "device") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-format GPUCanvasConfiguration.format specification>
+setFormat :: (MonadDOM m) => GPUCanvasConfiguration -> GPUTextureFormat -> m ()
+setFormat self val = liftDOM (void (self ^. jss "format" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-format GPUCanvasConfiguration.format specification>
+getFormat :: (MonadDOM m) => GPUCanvasConfiguration -> m GPUTextureFormat
+getFormat self = liftDOM (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-usage GPUCanvasConfiguration.usage specification>
+setUsage :: (MonadDOM m) => GPUCanvasConfiguration -> Word -> m ()
+setUsage self val = liftDOM (void (self ^. jss "usage" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-usage GPUCanvasConfiguration.usage specification>
+getUsage :: (MonadDOM m) => GPUCanvasConfiguration -> m (Maybe Word)
+getUsage self = liftDOM (((self ^. js "usage") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-usage GPUCanvasConfiguration.usage specification>
+getUsageUnsafe :: (MonadDOM m, HasCallStack) => GPUCanvasConfiguration -> m Word
+getUsageUnsafe self = liftDOM ((((self ^. js "usage") >>= 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 ((P.round <$> ((self ^. js "usage") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-viewformats GPUCanvasConfiguration.viewFormats specification>
+setViewFormats :: (MonadDOM m) => GPUCanvasConfiguration -> [GPUTextureFormat] -> m ()
+setViewFormats self val = liftDOM (void (self ^. jss "viewFormats" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-viewformats GPUCanvasConfiguration.viewFormats specification>
+getViewFormats :: (MonadDOM m) => GPUCanvasConfiguration -> m (Maybe [GPUTextureFormat])
+getViewFormats self = liftDOM (((self ^. js "viewFormats") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-viewformats GPUCanvasConfiguration.viewFormats specification>
+getViewFormatsUnsafe :: (MonadDOM m, HasCallStack) => GPUCanvasConfiguration -> m [GPUTextureFormat]
+getViewFormatsUnsafe self = liftDOM ((((self ^. js "viewFormats") >>= 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 (((self ^. js "viewFormats") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-colorspace GPUCanvasConfiguration.colorSpace specification>
+setColorSpace :: (MonadDOM m) => GPUCanvasConfiguration -> PredefinedColorSpace -> m ()
+setColorSpace self val = liftDOM (void (self ^. jss "colorSpace" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-colorspace GPUCanvasConfiguration.colorSpace specification>
+getColorSpace :: (MonadDOM m) => GPUCanvasConfiguration -> m (Maybe PredefinedColorSpace)
+getColorSpace self = liftDOM (((self ^. js "colorSpace") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-colorspace GPUCanvasConfiguration.colorSpace specification>
+getColorSpaceUnsafe :: (MonadDOM m, HasCallStack) => GPUCanvasConfiguration -> m PredefinedColorSpace
+getColorSpaceUnsafe self = liftDOM ((((self ^. js "colorSpace") >>= 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 (((self ^. js "colorSpace") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-tonemapping GPUCanvasConfiguration.toneMapping specification>
+setToneMapping :: (MonadDOM m) => GPUCanvasConfiguration -> GPUCanvasToneMapping -> m ()
+setToneMapping self val = liftDOM (void (self ^. jss "toneMapping" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-tonemapping GPUCanvasConfiguration.toneMapping specification>
+getToneMapping :: (MonadDOM m) => GPUCanvasConfiguration -> m (Maybe GPUCanvasToneMapping)
+getToneMapping self = liftDOM (((self ^. js "toneMapping") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-tonemapping GPUCanvasConfiguration.toneMapping specification>
+getToneMappingUnsafe :: (MonadDOM m, HasCallStack) => GPUCanvasConfiguration -> m GPUCanvasToneMapping
+getToneMappingUnsafe self = liftDOM ((((self ^. js "toneMapping") >>= 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 (((self ^. js "toneMapping") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-alphamode GPUCanvasConfiguration.alphaMode specification>
+setAlphaMode :: (MonadDOM m) => GPUCanvasConfiguration -> GPUCanvasAlphaMode -> m ()
+setAlphaMode self val = liftDOM (void (self ^. jss "alphaMode" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-alphamode GPUCanvasConfiguration.alphaMode specification>
+getAlphaMode :: (MonadDOM m) => GPUCanvasConfiguration -> m (Maybe GPUCanvasAlphaMode)
+getAlphaMode self = liftDOM (((self ^. js "alphaMode") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvasconfiguration-alphamode GPUCanvasConfiguration.alphaMode specification>
+getAlphaModeUnsafe :: (MonadDOM m, HasCallStack) => GPUCanvasConfiguration -> m GPUCanvasAlphaMode
+getAlphaModeUnsafe self = liftDOM ((((self ^. js "alphaMode") >>= 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 (((self ^. js "alphaMode") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUCanvasContext.hs b/src/JSDOM/Generated/GPUCanvasContext.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUCanvasContext.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUCanvasContext
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCanvasContext/configure MDN GPUCanvasContext.configure documentation>
+configure :: (MonadDOM m) => GPUCanvasContext -> GPUCanvasConfiguration -> m ()
+configure self configuration = liftDOM (void (self ^. jsf "configure" [toJSVal configuration]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCanvasContext/getConfiguration MDN GPUCanvasContext.getConfiguration documentation>
+getConfiguration :: (MonadDOM m) => GPUCanvasContext -> m (Maybe GPUCanvasConfiguration)
+getConfiguration self = liftDOM (((self ^. jsf "getConfiguration" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCanvasContext/getConfiguration MDN GPUCanvasContext.getConfiguration documentation>
+getConfiguration_ :: (MonadDOM m) => GPUCanvasContext -> m ()
+getConfiguration_ self = liftDOM (void (self ^. jsf "getConfiguration" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCanvasContext/getConfiguration MDN GPUCanvasContext.getConfiguration documentation>
+getConfigurationUnsafe :: (MonadDOM m, HasCallStack) => GPUCanvasContext -> m GPUCanvasConfiguration
+getConfigurationUnsafe self = liftDOM ((((self ^. jsf "getConfiguration" ()) >>= 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 (((self ^. jsf "getConfiguration" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCanvasContext/getCurrentTexture MDN GPUCanvasContext.getCurrentTexture documentation>
+getCurrentTexture :: (MonadDOM m) => GPUCanvasContext -> m GPUTexture
+getCurrentTexture self = liftDOM (((self ^. jsf "getCurrentTexture" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCanvasContext/getCurrentTexture MDN GPUCanvasContext.getCurrentTexture documentation>
+getCurrentTexture_ :: (MonadDOM m) => GPUCanvasContext -> m ()
+getCurrentTexture_ self = liftDOM (void (self ^. jsf "getCurrentTexture" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCanvasContext/unconfigure MDN GPUCanvasContext.unconfigure documentation>
+unconfigure :: (MonadDOM m) => GPUCanvasContext -> m ()
+unconfigure self = liftDOM (void (self ^. jsf "unconfigure" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCanvasContext/canvas MDN GPUCanvasContext.canvas documentation>
+getCanvas :: (MonadDOM m) => GPUCanvasContext -> m HTMLCanvasElementOrOffscreenCanvas
+getCanvas self = liftDOM (((self ^. js "canvas") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUCanvasToneMapping.hs b/src/JSDOM/Generated/GPUCanvasToneMapping.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUCanvasToneMapping.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUCanvasToneMapping
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucanvastonemapping GPUCanvasToneMapping specification>
+newGPUCanvasToneMapping :: (MonadDOM m) => m GPUCanvasToneMapping
+newGPUCanvasToneMapping = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvastonemapping-mode GPUCanvasToneMapping.mode specification>
+setMode :: (MonadDOM m) => GPUCanvasToneMapping -> GPUCanvasToneMappingMode -> m ()
+setMode self val = liftDOM (void (self ^. jss "mode" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvastonemapping-mode GPUCanvasToneMapping.mode specification>
+getMode :: (MonadDOM m) => GPUCanvasToneMapping -> m (Maybe GPUCanvasToneMappingMode)
+getMode self = liftDOM (((self ^. js "mode") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucanvastonemapping-mode GPUCanvasToneMapping.mode specification>
+getModeUnsafe :: (MonadDOM m, HasCallStack) => GPUCanvasToneMapping -> m GPUCanvasToneMappingMode
+getModeUnsafe self = liftDOM ((((self ^. js "mode") >>= 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 (((self ^. js "mode") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUColorDict.hs b/src/JSDOM/Generated/GPUColorDict.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUColorDict.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUColorDict
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucolordict GPUColorDict specification>
+newGPUColorDict :: (MonadDOM m) => Double -> Double -> Double -> Double -> m GPUColorDict
+newGPUColorDict r g b a = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "r" (toJSVal r)) P.>> (o ^. jss "g" (toJSVal g)) P.>> (o ^. jss "b" (toJSVal b)) P.>> (o ^. jss "a" (toJSVal a)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolordict-r GPUColorDict.r specification>
+setR :: (MonadDOM m) => GPUColorDict -> Double -> m ()
+setR self val = liftDOM (void (self ^. jss "r" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolordict-r GPUColorDict.r specification>
+getR :: (MonadDOM m) => GPUColorDict -> m Double
+getR self = liftDOM (((self ^. js "r") >>= valToNumber))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolordict-g GPUColorDict.g specification>
+setG :: (MonadDOM m) => GPUColorDict -> Double -> m ()
+setG self val = liftDOM (void (self ^. jss "g" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolordict-g GPUColorDict.g specification>
+getG :: (MonadDOM m) => GPUColorDict -> m Double
+getG self = liftDOM (((self ^. js "g") >>= valToNumber))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolordict-b GPUColorDict.b specification>
+setB :: (MonadDOM m) => GPUColorDict -> Double -> m ()
+setB self val = liftDOM (void (self ^. jss "b" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolordict-b GPUColorDict.b specification>
+getB :: (MonadDOM m) => GPUColorDict -> m Double
+getB self = liftDOM (((self ^. js "b") >>= valToNumber))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolordict-a GPUColorDict.a specification>
+setA :: (MonadDOM m) => GPUColorDict -> Double -> m ()
+setA self val = liftDOM (void (self ^. jss "a" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolordict-a GPUColorDict.a specification>
+getA :: (MonadDOM m) => GPUColorDict -> m Double
+getA self = liftDOM (((self ^. js "a") >>= valToNumber))
diff --git a/src/JSDOM/Generated/GPUColorTargetState.hs b/src/JSDOM/Generated/GPUColorTargetState.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUColorTargetState.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUColorTargetState
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucolortargetstate GPUColorTargetState specification>
+newGPUColorTargetState :: (MonadDOM m) => GPUTextureFormat -> m GPUColorTargetState
+newGPUColorTargetState format = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "format" (toJSVal format)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-format GPUColorTargetState.format specification>
+setFormat :: (MonadDOM m) => GPUColorTargetState -> GPUTextureFormat -> m ()
+setFormat self val = liftDOM (void (self ^. jss "format" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-format GPUColorTargetState.format specification>
+getFormat :: (MonadDOM m) => GPUColorTargetState -> m GPUTextureFormat
+getFormat self = liftDOM (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-blend GPUColorTargetState.blend specification>
+setBlend :: (MonadDOM m) => GPUColorTargetState -> GPUBlendState -> m ()
+setBlend self val = liftDOM (void (self ^. jss "blend" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-blend GPUColorTargetState.blend specification>
+getBlend :: (MonadDOM m) => GPUColorTargetState -> m (Maybe GPUBlendState)
+getBlend self = liftDOM (((self ^. js "blend") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-blend GPUColorTargetState.blend specification>
+getBlendUnsafe :: (MonadDOM m, HasCallStack) => GPUColorTargetState -> m GPUBlendState
+getBlendUnsafe self = liftDOM ((((self ^. js "blend") >>= 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 (((self ^. js "blend") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-writemask GPUColorTargetState.writeMask specification>
+setWriteMask :: (MonadDOM m) => GPUColorTargetState -> Word -> m ()
+setWriteMask self val = liftDOM (void (self ^. jss "writeMask" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-writemask GPUColorTargetState.writeMask specification>
+getWriteMask :: (MonadDOM m) => GPUColorTargetState -> m (Maybe Word)
+getWriteMask self = liftDOM (((self ^. js "writeMask") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucolortargetstate-writemask GPUColorTargetState.writeMask specification>
+getWriteMaskUnsafe :: (MonadDOM m, HasCallStack) => GPUColorTargetState -> m Word
+getWriteMaskUnsafe self = liftDOM ((((self ^. js "writeMask") >>= 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 ((P.round <$> ((self ^. js "writeMask") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/GPUCommandBuffer.hs b/src/JSDOM/Generated/GPUCommandBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUCommandBuffer.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUCommandBuffer
+       (GPUCommandBuffer(..), gTypeGPUCommandBuffer)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/GPUCommandBufferDescriptor.hs b/src/JSDOM/Generated/GPUCommandBufferDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUCommandBufferDescriptor.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUCommandBufferDescriptor
+       (newGPUCommandBufferDescriptor, GPUCommandBufferDescriptor(..), gTypeGPUCommandBufferDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucommandbufferdescriptor GPUCommandBufferDescriptor specification>
+newGPUCommandBufferDescriptor :: (MonadDOM m) => m GPUCommandBufferDescriptor
+newGPUCommandBufferDescriptor = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUCommandEncoder.hs b/src/JSDOM/Generated/GPUCommandEncoder.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUCommandEncoder.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUCommandEncoder
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "beginComputePass" [P.maybe (P.return jsUndefined) toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "beginComputePass" [P.maybe (P.return jsUndefined) toJSVal descriptor]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/beginRenderPass MDN GPUCommandEncoder.beginRenderPass documentation>
+beginRenderPass :: (MonadDOM m) => GPUCommandEncoder -> GPURenderPassDescriptor -> m GPURenderPassEncoder
+beginRenderPass self descriptor = liftDOM (((self ^. jsf "beginRenderPass" [toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/beginRenderPass MDN GPUCommandEncoder.beginRenderPass documentation>
+beginRenderPass_ :: (MonadDOM m) => GPUCommandEncoder -> GPURenderPassDescriptor -> m ()
+beginRenderPass_ self descriptor = liftDOM (void (self ^. jsf "beginRenderPass" [toJSVal descriptor]))
+
+-- | <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 (self ^. jsf "clearBuffer" [toJSVal buffer, P.maybe (P.return jsUndefined) toJSVal offset, P.maybe (P.return jsUndefined) toJSVal size]))
+
+-- | <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 (self ^. jsf "copyBufferToBuffer" [toJSVal source, toJSVal destination, P.maybe (P.return jsUndefined) toJSVal size]))
+
+-- | <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 (self ^. jsf "copyBufferToBuffer" [toJSVal source, toJSVal sourceOffset, toJSVal destination, toJSVal destinationOffset, P.maybe (P.return jsUndefined) toJSVal size]))
+
+-- | <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 (self ^. jsf "copyBufferToTexture" [toJSVal source, toJSVal destination, toJSVal copySize]))
+
+-- | <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 (self ^. jsf "copyTextureToBuffer" [toJSVal source, toJSVal destination, toJSVal copySize]))
+
+-- | <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 (self ^. jsf "copyTextureToTexture" [toJSVal source, toJSVal destination, toJSVal copySize]))
+
+-- | <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 (((self ^. jsf "finish" [P.maybe (P.return jsUndefined) toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "finish" [P.maybe (P.return jsUndefined) toJSVal descriptor]))
+
+-- | <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 (self ^. jsf "resolveQuerySet" [toJSVal querySet, toJSVal firstQuery, toJSVal queryCount, toJSVal destination, toJSVal destinationOffset]))
diff --git a/src/JSDOM/Generated/GPUCommandEncoderDescriptor.hs b/src/JSDOM/Generated/GPUCommandEncoderDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUCommandEncoderDescriptor.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUCommandEncoderDescriptor
+       (newGPUCommandEncoderDescriptor, GPUCommandEncoderDescriptor(..), gTypeGPUCommandEncoderDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucommandencoderdescriptor GPUCommandEncoderDescriptor specification>
+newGPUCommandEncoderDescriptor :: (MonadDOM m) => m GPUCommandEncoderDescriptor
+newGPUCommandEncoderDescriptor = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUCompilationInfo.hs b/src/JSDOM/Generated/GPUCompilationInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUCompilationInfo.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUCompilationInfo
+       (getMessages, GPUCompilationInfo(..), gTypeGPUCompilationInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCompilationInfo/messages MDN GPUCompilationInfo.messages documentation>
+getMessages :: (MonadDOM m) => GPUCompilationInfo -> m [GPUCompilationMessage]
+getMessages self = liftDOM (((self ^. js "messages") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUCompilationMessage.hs b/src/JSDOM/Generated/GPUCompilationMessage.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUCompilationMessage.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUCompilationMessage
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCompilationMessage/message MDN GPUCompilationMessage.message documentation>
+getMessage :: (MonadDOM m, FromJSString result) => GPUCompilationMessage -> m result
+getMessage self = liftDOM (((self ^. js "message") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCompilationMessage/type MDN GPUCompilationMessage.type documentation>
+getType :: (MonadDOM m) => GPUCompilationMessage -> m GPUCompilationMessageType
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCompilationMessage/lineNum MDN GPUCompilationMessage.lineNum documentation>
+getLineNum :: (MonadDOM m) => GPUCompilationMessage -> m Word53
+getLineNum self = liftDOM (((self ^. js "lineNum") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCompilationMessage/linePos MDN GPUCompilationMessage.linePos documentation>
+getLinePos :: (MonadDOM m) => GPUCompilationMessage -> m Word53
+getLinePos self = liftDOM (((self ^. js "linePos") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCompilationMessage/offset MDN GPUCompilationMessage.offset documentation>
+getOffset :: (MonadDOM m) => GPUCompilationMessage -> m Word53
+getOffset self = liftDOM (((self ^. js "offset") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCompilationMessage/length MDN GPUCompilationMessage.length documentation>
+getLength :: (MonadDOM m) => GPUCompilationMessage -> m Word53
+getLength self = liftDOM (((self ^. js "length") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUComputePassDescriptor.hs b/src/JSDOM/Generated/GPUComputePassDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUComputePassDescriptor.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUComputePassDescriptor
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucomputepassdescriptor GPUComputePassDescriptor specification>
+newGPUComputePassDescriptor :: (MonadDOM m) => m GPUComputePassDescriptor
+newGPUComputePassDescriptor = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepassdescriptor-timestampwrites GPUComputePassDescriptor.timestampWrites specification>
+setTimestampWrites :: (MonadDOM m) => GPUComputePassDescriptor -> GPUComputePassTimestampWrites -> m ()
+setTimestampWrites self val = liftDOM (void (self ^. jss "timestampWrites" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepassdescriptor-timestampwrites GPUComputePassDescriptor.timestampWrites specification>
+getTimestampWrites :: (MonadDOM m) => GPUComputePassDescriptor -> m (Maybe GPUComputePassTimestampWrites)
+getTimestampWrites self = liftDOM (((self ^. js "timestampWrites") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepassdescriptor-timestampwrites GPUComputePassDescriptor.timestampWrites specification>
+getTimestampWritesUnsafe :: (MonadDOM m, HasCallStack) => GPUComputePassDescriptor -> m GPUComputePassTimestampWrites
+getTimestampWritesUnsafe self = liftDOM ((((self ^. js "timestampWrites") >>= 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 (((self ^. js "timestampWrites") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUComputePassEncoder.hs b/src/JSDOM/Generated/GPUComputePassEncoder.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUComputePassEncoder.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUComputePassEncoder
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "dispatchWorkgroups" [toJSVal workgroupCountX, P.maybe (P.return jsUndefined) toJSVal workgroupCountY, P.maybe (P.return jsUndefined) toJSVal workgroupCountZ]))
+
+-- | <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 (self ^. jsf "dispatchWorkgroupsIndirect" [toJSVal indirectBuffer, toJSVal indirectOffset]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUComputePassEncoder/end MDN GPUComputePassEncoder.end documentation>
+end :: (MonadDOM m) => GPUComputePassEncoder -> m ()
+end self = liftDOM (void (self ^. jsf "end" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUComputePassEncoder/setPipeline MDN GPUComputePassEncoder.setPipeline documentation>
+setPipeline :: (MonadDOM m) => GPUComputePassEncoder -> GPUComputePipeline -> m ()
+setPipeline self pipeline = liftDOM (void (self ^. jsf "setPipeline" [toJSVal pipeline]))
diff --git a/src/JSDOM/Generated/GPUComputePassTimestampWrites.hs b/src/JSDOM/Generated/GPUComputePassTimestampWrites.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUComputePassTimestampWrites.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUComputePassTimestampWrites
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucomputepasstimestampwrites GPUComputePassTimestampWrites specification>
+newGPUComputePassTimestampWrites :: (MonadDOM m) => GPUQuerySet -> m GPUComputePassTimestampWrites
+newGPUComputePassTimestampWrites querySet = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "querySet" (toJSVal querySet)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-queryset GPUComputePassTimestampWrites.querySet specification>
+setQuerySet :: (MonadDOM m) => GPUComputePassTimestampWrites -> GPUQuerySet -> m ()
+setQuerySet self val = liftDOM (void (self ^. jss "querySet" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-queryset GPUComputePassTimestampWrites.querySet specification>
+getQuerySet :: (MonadDOM m) => GPUComputePassTimestampWrites -> m GPUQuerySet
+getQuerySet self = liftDOM (((self ^. js "querySet") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-beginningofpasswriteindex GPUComputePassTimestampWrites.beginningOfPassWriteIndex specification>
+setBeginningOfPassWriteIndex :: (MonadDOM m) => GPUComputePassTimestampWrites -> Word -> m ()
+setBeginningOfPassWriteIndex self val = liftDOM (void (self ^. jss "beginningOfPassWriteIndex" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-beginningofpasswriteindex GPUComputePassTimestampWrites.beginningOfPassWriteIndex specification>
+getBeginningOfPassWriteIndex :: (MonadDOM m) => GPUComputePassTimestampWrites -> m (Maybe Word)
+getBeginningOfPassWriteIndex self = liftDOM (((self ^. js "beginningOfPassWriteIndex") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-beginningofpasswriteindex GPUComputePassTimestampWrites.beginningOfPassWriteIndex specification>
+getBeginningOfPassWriteIndexUnsafe :: (MonadDOM m, HasCallStack) => GPUComputePassTimestampWrites -> m Word
+getBeginningOfPassWriteIndexUnsafe self = liftDOM ((((self ^. js "beginningOfPassWriteIndex") >>= 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 ((P.round <$> ((self ^. js "beginningOfPassWriteIndex") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-endofpasswriteindex GPUComputePassTimestampWrites.endOfPassWriteIndex specification>
+setEndOfPassWriteIndex :: (MonadDOM m) => GPUComputePassTimestampWrites -> Word -> m ()
+setEndOfPassWriteIndex self val = liftDOM (void (self ^. jss "endOfPassWriteIndex" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-endofpasswriteindex GPUComputePassTimestampWrites.endOfPassWriteIndex specification>
+getEndOfPassWriteIndex :: (MonadDOM m) => GPUComputePassTimestampWrites -> m (Maybe Word)
+getEndOfPassWriteIndex self = liftDOM (((self ^. js "endOfPassWriteIndex") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepasstimestampwrites-endofpasswriteindex GPUComputePassTimestampWrites.endOfPassWriteIndex specification>
+getEndOfPassWriteIndexUnsafe :: (MonadDOM m, HasCallStack) => GPUComputePassTimestampWrites -> m Word
+getEndOfPassWriteIndexUnsafe self = liftDOM ((((self ^. js "endOfPassWriteIndex") >>= 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 ((P.round <$> ((self ^. js "endOfPassWriteIndex") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/GPUComputePipeline.hs b/src/JSDOM/Generated/GPUComputePipeline.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUComputePipeline.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUComputePipeline
+       (GPUComputePipeline(..), gTypeGPUComputePipeline)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/GPUComputePipelineDescriptor.hs b/src/JSDOM/Generated/GPUComputePipelineDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUComputePipelineDescriptor.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUComputePipelineDescriptor
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpucomputepipelinedescriptor GPUComputePipelineDescriptor specification>
+newGPUComputePipelineDescriptor :: (MonadDOM m, IsGPUPipelineLayoutOrGPUAutoLayoutMode layout, IsGPUProgrammableStage compute) => layout -> compute -> m GPUComputePipelineDescriptor
+newGPUComputePipelineDescriptor layout compute = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "layout" (toJSVal layout)) P.>> (o ^. jss "compute" (toJSVal compute)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepipelinedescriptor-compute GPUComputePipelineDescriptor.compute specification>
+setCompute :: (MonadDOM m, IsGPUProgrammableStage val) => GPUComputePipelineDescriptor -> val -> m ()
+setCompute self val = liftDOM (void (self ^. jss "compute" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucomputepipelinedescriptor-compute GPUComputePipelineDescriptor.compute specification>
+getCompute :: (MonadDOM m) => GPUComputePipelineDescriptor -> m GPUProgrammableStage
+getCompute self = liftDOM (((self ^. js "compute") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUCopyExternalImageDestInfo.hs b/src/JSDOM/Generated/GPUCopyExternalImageDestInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUCopyExternalImageDestInfo.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUCopyExternalImageDestInfo
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#gpucopyexternalimagedestinfo GPUCopyExternalImageDestInfo specification>
+newGPUCopyExternalImageDestInfo :: (MonadDOM m) => GPUTexture -> m GPUCopyExternalImageDestInfo
+newGPUCopyExternalImageDestInfo texture = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "texture" (toJSVal texture)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagedestinfo-colorspace GPUCopyExternalImageDestInfo.colorSpace specification>
+setColorSpace :: (MonadDOM m) => GPUCopyExternalImageDestInfo -> PredefinedColorSpace -> m ()
+setColorSpace self val = liftDOM (void (self ^. jss "colorSpace" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagedestinfo-colorspace GPUCopyExternalImageDestInfo.colorSpace specification>
+getColorSpace :: (MonadDOM m) => GPUCopyExternalImageDestInfo -> m (Maybe PredefinedColorSpace)
+getColorSpace self = liftDOM (((self ^. js "colorSpace") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagedestinfo-colorspace GPUCopyExternalImageDestInfo.colorSpace specification>
+getColorSpaceUnsafe :: (MonadDOM m, HasCallStack) => GPUCopyExternalImageDestInfo -> m PredefinedColorSpace
+getColorSpaceUnsafe self = liftDOM ((((self ^. js "colorSpace") >>= 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 (((self ^. js "colorSpace") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagedestinfo-premultipliedalpha GPUCopyExternalImageDestInfo.premultipliedAlpha specification>
+setPremultipliedAlpha :: (MonadDOM m) => GPUCopyExternalImageDestInfo -> Bool -> m ()
+setPremultipliedAlpha self val = liftDOM (void (self ^. jss "premultipliedAlpha" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagedestinfo-premultipliedalpha GPUCopyExternalImageDestInfo.premultipliedAlpha specification>
+getPremultipliedAlpha :: (MonadDOM m) => GPUCopyExternalImageDestInfo -> m (Maybe Bool)
+getPremultipliedAlpha self = liftDOM (((self ^. js "premultipliedAlpha") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagedestinfo-premultipliedalpha GPUCopyExternalImageDestInfo.premultipliedAlpha specification>
+getPremultipliedAlphaUnsafe :: (MonadDOM m, HasCallStack) => GPUCopyExternalImageDestInfo -> m Bool
+getPremultipliedAlphaUnsafe self = liftDOM ((((self ^. js "premultipliedAlpha") >>= 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 (((self ^. js "premultipliedAlpha") >>= valToBool))
diff --git a/src/JSDOM/Generated/GPUCopyExternalImageSourceInfo.hs b/src/JSDOM/Generated/GPUCopyExternalImageSourceInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUCopyExternalImageSourceInfo.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUCopyExternalImageSourceInfo
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#gpucopyexternalimagesourceinfo GPUCopyExternalImageSourceInfo specification>
+newGPUCopyExternalImageSourceInfo :: (MonadDOM m, IsGPUCopyExternalImageSource source) => source -> m GPUCopyExternalImageSourceInfo
+newGPUCopyExternalImageSourceInfo source = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "source" (toJSVal source)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-source GPUCopyExternalImageSourceInfo.source specification>
+setSource :: (MonadDOM m, IsGPUCopyExternalImageSource val) => GPUCopyExternalImageSourceInfo -> val -> m ()
+setSource self val = liftDOM (void (self ^. jss "source" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-source GPUCopyExternalImageSourceInfo.source specification>
+getSource :: (MonadDOM m) => GPUCopyExternalImageSourceInfo -> m GPUCopyExternalImageSource
+getSource self = liftDOM (((self ^. js "source") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-origin GPUCopyExternalImageSourceInfo.origin specification>
+setOrigin :: (MonadDOM m, IsGPUOrigin2D val) => GPUCopyExternalImageSourceInfo -> val -> m ()
+setOrigin self val = liftDOM (void (self ^. jss "origin" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-origin GPUCopyExternalImageSourceInfo.origin specification>
+getOrigin :: (MonadDOM m) => GPUCopyExternalImageSourceInfo -> m (Maybe GPUOrigin2D)
+getOrigin self = liftDOM (((self ^. js "origin") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-origin GPUCopyExternalImageSourceInfo.origin specification>
+getOriginUnsafe :: (MonadDOM m, HasCallStack) => GPUCopyExternalImageSourceInfo -> m GPUOrigin2D
+getOriginUnsafe self = liftDOM ((((self ^. js "origin") >>= 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 (((self ^. js "origin") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-flipy GPUCopyExternalImageSourceInfo.flipY specification>
+setFlipY :: (MonadDOM m) => GPUCopyExternalImageSourceInfo -> Bool -> m ()
+setFlipY self val = liftDOM (void (self ^. jss "flipY" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-flipy GPUCopyExternalImageSourceInfo.flipY specification>
+getFlipY :: (MonadDOM m) => GPUCopyExternalImageSourceInfo -> m (Maybe Bool)
+getFlipY self = liftDOM (((self ^. js "flipY") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpucopyexternalimagesourceinfo-flipy GPUCopyExternalImageSourceInfo.flipY specification>
+getFlipYUnsafe :: (MonadDOM m, HasCallStack) => GPUCopyExternalImageSourceInfo -> m Bool
+getFlipYUnsafe self = liftDOM ((((self ^. js "flipY") >>= 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 (((self ^. js "flipY") >>= valToBool))
diff --git a/src/JSDOM/Generated/GPUDebugCommandsMixin.hs b/src/JSDOM/Generated/GPUDebugCommandsMixin.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUDebugCommandsMixin.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUDebugCommandsMixin
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toGPUDebugCommandsMixin self) ^. jsf "insertDebugMarker" [toJSVal markerLabel]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/popDebugGroup MDN GPUDebugCommandsMixin.popDebugGroup documentation>
+popDebugGroup :: (MonadDOM m, IsGPUDebugCommandsMixin self) => self -> m ()
+popDebugGroup self = liftDOM (void ((Types.toGPUDebugCommandsMixin self) ^. jsf "popDebugGroup" ()))
+
+-- | <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 ((Types.toGPUDebugCommandsMixin self) ^. jsf "pushDebugGroup" [toJSVal groupLabel]))
diff --git a/src/JSDOM/Generated/GPUDepthStencilState.hs b/src/JSDOM/Generated/GPUDepthStencilState.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUDepthStencilState.hs
@@ -0,0 +1,172 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUDepthStencilState
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpudepthstencilstate GPUDepthStencilState specification>
+newGPUDepthStencilState :: (MonadDOM m) => GPUTextureFormat -> m GPUDepthStencilState
+newGPUDepthStencilState format = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "format" (toJSVal format)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-format GPUDepthStencilState.format specification>
+setFormat :: (MonadDOM m) => GPUDepthStencilState -> GPUTextureFormat -> m ()
+setFormat self val = liftDOM (void (self ^. jss "format" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-format GPUDepthStencilState.format specification>
+getFormat :: (MonadDOM m) => GPUDepthStencilState -> m GPUTextureFormat
+getFormat self = liftDOM (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthwriteenabled GPUDepthStencilState.depthWriteEnabled specification>
+setDepthWriteEnabled :: (MonadDOM m) => GPUDepthStencilState -> Bool -> m ()
+setDepthWriteEnabled self val = liftDOM (void (self ^. jss "depthWriteEnabled" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthwriteenabled GPUDepthStencilState.depthWriteEnabled specification>
+getDepthWriteEnabled :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe Bool)
+getDepthWriteEnabled self = liftDOM (((self ^. js "depthWriteEnabled") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthwriteenabled GPUDepthStencilState.depthWriteEnabled specification>
+getDepthWriteEnabledUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m Bool
+getDepthWriteEnabledUnsafe self = liftDOM ((((self ^. js "depthWriteEnabled") >>= 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 (((self ^. js "depthWriteEnabled") >>= valToBool))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthcompare GPUDepthStencilState.depthCompare specification>
+setDepthCompare :: (MonadDOM m) => GPUDepthStencilState -> GPUCompareFunction -> m ()
+setDepthCompare self val = liftDOM (void (self ^. jss "depthCompare" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthcompare GPUDepthStencilState.depthCompare specification>
+getDepthCompare :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe GPUCompareFunction)
+getDepthCompare self = liftDOM (((self ^. js "depthCompare") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthcompare GPUDepthStencilState.depthCompare specification>
+getDepthCompareUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m GPUCompareFunction
+getDepthCompareUnsafe self = liftDOM ((((self ^. js "depthCompare") >>= 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 (((self ^. js "depthCompare") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilfront GPUDepthStencilState.stencilFront specification>
+setStencilFront :: (MonadDOM m) => GPUDepthStencilState -> GPUStencilFaceState -> m ()
+setStencilFront self val = liftDOM (void (self ^. jss "stencilFront" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilfront GPUDepthStencilState.stencilFront specification>
+getStencilFront :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe GPUStencilFaceState)
+getStencilFront self = liftDOM (((self ^. js "stencilFront") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilfront GPUDepthStencilState.stencilFront specification>
+getStencilFrontUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m GPUStencilFaceState
+getStencilFrontUnsafe self = liftDOM ((((self ^. js "stencilFront") >>= 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 (((self ^. js "stencilFront") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilback GPUDepthStencilState.stencilBack specification>
+setStencilBack :: (MonadDOM m) => GPUDepthStencilState -> GPUStencilFaceState -> m ()
+setStencilBack self val = liftDOM (void (self ^. jss "stencilBack" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilback GPUDepthStencilState.stencilBack specification>
+getStencilBack :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe GPUStencilFaceState)
+getStencilBack self = liftDOM (((self ^. js "stencilBack") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilback GPUDepthStencilState.stencilBack specification>
+getStencilBackUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m GPUStencilFaceState
+getStencilBackUnsafe self = liftDOM ((((self ^. js "stencilBack") >>= 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 (((self ^. js "stencilBack") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilreadmask GPUDepthStencilState.stencilReadMask specification>
+setStencilReadMask :: (MonadDOM m) => GPUDepthStencilState -> Word -> m ()
+setStencilReadMask self val = liftDOM (void (self ^. jss "stencilReadMask" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilreadmask GPUDepthStencilState.stencilReadMask specification>
+getStencilReadMask :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe Word)
+getStencilReadMask self = liftDOM (((self ^. js "stencilReadMask") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilreadmask GPUDepthStencilState.stencilReadMask specification>
+getStencilReadMaskUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m Word
+getStencilReadMaskUnsafe self = liftDOM ((((self ^. js "stencilReadMask") >>= 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 ((P.round <$> ((self ^. js "stencilReadMask") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilwritemask GPUDepthStencilState.stencilWriteMask specification>
+setStencilWriteMask :: (MonadDOM m) => GPUDepthStencilState -> Word -> m ()
+setStencilWriteMask self val = liftDOM (void (self ^. jss "stencilWriteMask" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilwritemask GPUDepthStencilState.stencilWriteMask specification>
+getStencilWriteMask :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe Word)
+getStencilWriteMask self = liftDOM (((self ^. js "stencilWriteMask") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-stencilwritemask GPUDepthStencilState.stencilWriteMask specification>
+getStencilWriteMaskUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m Word
+getStencilWriteMaskUnsafe self = liftDOM ((((self ^. js "stencilWriteMask") >>= 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 ((P.round <$> ((self ^. js "stencilWriteMask") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbias GPUDepthStencilState.depthBias specification>
+setDepthBias :: (MonadDOM m) => GPUDepthStencilState -> Int -> m ()
+setDepthBias self val = liftDOM (void (self ^. jss "depthBias" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbias GPUDepthStencilState.depthBias specification>
+getDepthBias :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe Int)
+getDepthBias self = liftDOM (((self ^. js "depthBias") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbias GPUDepthStencilState.depthBias specification>
+getDepthBiasUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m Int
+getDepthBiasUnsafe self = liftDOM ((((self ^. js "depthBias") >>= 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 ((P.round <$> ((self ^. js "depthBias") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbiasslopescale GPUDepthStencilState.depthBiasSlopeScale specification>
+setDepthBiasSlopeScale :: (MonadDOM m) => GPUDepthStencilState -> Float -> m ()
+setDepthBiasSlopeScale self val = liftDOM (void (self ^. jss "depthBiasSlopeScale" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbiasslopescale GPUDepthStencilState.depthBiasSlopeScale specification>
+getDepthBiasSlopeScale :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe Float)
+getDepthBiasSlopeScale self = liftDOM (((self ^. js "depthBiasSlopeScale") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbiasslopescale GPUDepthStencilState.depthBiasSlopeScale specification>
+getDepthBiasSlopeScaleUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m Float
+getDepthBiasSlopeScaleUnsafe self = liftDOM ((((self ^. js "depthBiasSlopeScale") >>= 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 ((P.realToFrac <$> ((self ^. js "depthBiasSlopeScale") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbiasclamp GPUDepthStencilState.depthBiasClamp specification>
+setDepthBiasClamp :: (MonadDOM m) => GPUDepthStencilState -> Float -> m ()
+setDepthBiasClamp self val = liftDOM (void (self ^. jss "depthBiasClamp" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbiasclamp GPUDepthStencilState.depthBiasClamp specification>
+getDepthBiasClamp :: (MonadDOM m) => GPUDepthStencilState -> m (Maybe Float)
+getDepthBiasClamp self = liftDOM (((self ^. js "depthBiasClamp") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudepthstencilstate-depthbiasclamp GPUDepthStencilState.depthBiasClamp specification>
+getDepthBiasClampUnsafe :: (MonadDOM m, HasCallStack) => GPUDepthStencilState -> m Float
+getDepthBiasClampUnsafe self = liftDOM ((((self ^. js "depthBiasClamp") >>= 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 ((P.realToFrac <$> ((self ^. js "depthBiasClamp") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/GPUDevice.hs b/src/JSDOM/Generated/GPUDevice.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUDevice.hs
@@ -0,0 +1,184 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUDevice
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createBindGroup MDN GPUDevice.createBindGroup documentation>
+createBindGroup :: (MonadDOM m) => GPUDevice -> GPUBindGroupDescriptor -> m GPUBindGroup
+createBindGroup self descriptor = liftDOM (((self ^. jsf "createBindGroup" [toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createBindGroup MDN GPUDevice.createBindGroup documentation>
+createBindGroup_ :: (MonadDOM m) => GPUDevice -> GPUBindGroupDescriptor -> m ()
+createBindGroup_ self descriptor = liftDOM (void (self ^. jsf "createBindGroup" [toJSVal descriptor]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createBindGroupLayout MDN GPUDevice.createBindGroupLayout documentation>
+createBindGroupLayout :: (MonadDOM m) => GPUDevice -> GPUBindGroupLayoutDescriptor -> m GPUBindGroupLayout
+createBindGroupLayout self descriptor = liftDOM (((self ^. jsf "createBindGroupLayout" [toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createBindGroupLayout MDN GPUDevice.createBindGroupLayout documentation>
+createBindGroupLayout_ :: (MonadDOM m) => GPUDevice -> GPUBindGroupLayoutDescriptor -> m ()
+createBindGroupLayout_ self descriptor = liftDOM (void (self ^. jsf "createBindGroupLayout" [toJSVal descriptor]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createBuffer MDN GPUDevice.createBuffer documentation>
+createBuffer :: (MonadDOM m) => GPUDevice -> GPUBufferDescriptor -> m GPUBuffer
+createBuffer self descriptor = liftDOM (((self ^. jsf "createBuffer" [toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createBuffer MDN GPUDevice.createBuffer documentation>
+createBuffer_ :: (MonadDOM m) => GPUDevice -> GPUBufferDescriptor -> m ()
+createBuffer_ self descriptor = liftDOM (void (self ^. jsf "createBuffer" [toJSVal descriptor]))
+
+-- | <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 (((self ^. jsf "createCommandEncoder" [P.maybe (P.return jsUndefined) toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "createCommandEncoder" [P.maybe (P.return jsUndefined) toJSVal descriptor]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createComputePipeline MDN GPUDevice.createComputePipeline documentation>
+createComputePipeline :: (MonadDOM m) => GPUDevice -> GPUComputePipelineDescriptor -> m GPUComputePipeline
+createComputePipeline self descriptor = liftDOM (((self ^. jsf "createComputePipeline" [toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createComputePipeline MDN GPUDevice.createComputePipeline documentation>
+createComputePipeline_ :: (MonadDOM m) => GPUDevice -> GPUComputePipelineDescriptor -> m ()
+createComputePipeline_ self descriptor = liftDOM (void (self ^. jsf "createComputePipeline" [toJSVal descriptor]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createComputePipelineAsync MDN GPUDevice.createComputePipelineAsync documentation>
+createComputePipelineAsync :: (MonadDOM m) => GPUDevice -> GPUComputePipelineDescriptor -> m GPUComputePipeline
+createComputePipelineAsync self descriptor = liftDOM (((((self ^. jsf "createComputePipelineAsync" [toJSVal descriptor]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createComputePipelineAsync MDN GPUDevice.createComputePipelineAsync documentation>
+createComputePipelineAsync_ :: (MonadDOM m) => GPUDevice -> GPUComputePipelineDescriptor -> m ()
+createComputePipelineAsync_ self descriptor = liftDOM (void (((self ^. jsf "createComputePipelineAsync" [toJSVal descriptor]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createPipelineLayout MDN GPUDevice.createPipelineLayout documentation>
+createPipelineLayout :: (MonadDOM m) => GPUDevice -> GPUPipelineLayoutDescriptor -> m GPUPipelineLayout
+createPipelineLayout self descriptor = liftDOM (((self ^. jsf "createPipelineLayout" [toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createPipelineLayout MDN GPUDevice.createPipelineLayout documentation>
+createPipelineLayout_ :: (MonadDOM m) => GPUDevice -> GPUPipelineLayoutDescriptor -> m ()
+createPipelineLayout_ self descriptor = liftDOM (void (self ^. jsf "createPipelineLayout" [toJSVal descriptor]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createQuerySet MDN GPUDevice.createQuerySet documentation>
+createQuerySet :: (MonadDOM m) => GPUDevice -> GPUQuerySetDescriptor -> m GPUQuerySet
+createQuerySet self descriptor = liftDOM (((self ^. jsf "createQuerySet" [toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createQuerySet MDN GPUDevice.createQuerySet documentation>
+createQuerySet_ :: (MonadDOM m) => GPUDevice -> GPUQuerySetDescriptor -> m ()
+createQuerySet_ self descriptor = liftDOM (void (self ^. jsf "createQuerySet" [toJSVal descriptor]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createRenderBundleEncoder MDN GPUDevice.createRenderBundleEncoder documentation>
+createRenderBundleEncoder :: (MonadDOM m) => GPUDevice -> GPURenderBundleEncoderDescriptor -> m GPURenderBundleEncoder
+createRenderBundleEncoder self descriptor = liftDOM (((self ^. jsf "createRenderBundleEncoder" [toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createRenderBundleEncoder MDN GPUDevice.createRenderBundleEncoder documentation>
+createRenderBundleEncoder_ :: (MonadDOM m) => GPUDevice -> GPURenderBundleEncoderDescriptor -> m ()
+createRenderBundleEncoder_ self descriptor = liftDOM (void (self ^. jsf "createRenderBundleEncoder" [toJSVal descriptor]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createRenderPipeline MDN GPUDevice.createRenderPipeline documentation>
+createRenderPipeline :: (MonadDOM m) => GPUDevice -> GPURenderPipelineDescriptor -> m GPURenderPipeline
+createRenderPipeline self descriptor = liftDOM (((self ^. jsf "createRenderPipeline" [toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createRenderPipeline MDN GPUDevice.createRenderPipeline documentation>
+createRenderPipeline_ :: (MonadDOM m) => GPUDevice -> GPURenderPipelineDescriptor -> m ()
+createRenderPipeline_ self descriptor = liftDOM (void (self ^. jsf "createRenderPipeline" [toJSVal descriptor]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createRenderPipelineAsync MDN GPUDevice.createRenderPipelineAsync documentation>
+createRenderPipelineAsync :: (MonadDOM m) => GPUDevice -> GPURenderPipelineDescriptor -> m GPURenderPipeline
+createRenderPipelineAsync self descriptor = liftDOM (((((self ^. jsf "createRenderPipelineAsync" [toJSVal descriptor]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createRenderPipelineAsync MDN GPUDevice.createRenderPipelineAsync documentation>
+createRenderPipelineAsync_ :: (MonadDOM m) => GPUDevice -> GPURenderPipelineDescriptor -> m ()
+createRenderPipelineAsync_ self descriptor = liftDOM (void (((self ^. jsf "createRenderPipelineAsync" [toJSVal descriptor]) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "createSampler" [P.maybe (P.return jsUndefined) toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "createSampler" [P.maybe (P.return jsUndefined) toJSVal descriptor]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createShaderModule MDN GPUDevice.createShaderModule documentation>
+createShaderModule :: (MonadDOM m) => GPUDevice -> GPUShaderModuleDescriptor -> m GPUShaderModule
+createShaderModule self descriptor = liftDOM (((self ^. jsf "createShaderModule" [toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createShaderModule MDN GPUDevice.createShaderModule documentation>
+createShaderModule_ :: (MonadDOM m) => GPUDevice -> GPUShaderModuleDescriptor -> m ()
+createShaderModule_ self descriptor = liftDOM (void (self ^. jsf "createShaderModule" [toJSVal descriptor]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createTexture MDN GPUDevice.createTexture documentation>
+createTexture :: (MonadDOM m) => GPUDevice -> GPUTextureDescriptor -> m GPUTexture
+createTexture self descriptor = liftDOM (((self ^. jsf "createTexture" [toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/createTexture MDN GPUDevice.createTexture documentation>
+createTexture_ :: (MonadDOM m) => GPUDevice -> GPUTextureDescriptor -> m ()
+createTexture_ self descriptor = liftDOM (void (self ^. jsf "createTexture" [toJSVal descriptor]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/destroy MDN GPUDevice.destroy documentation>
+destroy :: (MonadDOM m) => GPUDevice -> m ()
+destroy self = liftDOM (void (self ^. jsf "destroy" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/importExternalTexture MDN GPUDevice.importExternalTexture documentation>
+importExternalTexture :: (MonadDOM m) => GPUDevice -> GPUExternalTextureDescriptor -> m GPUExternalTexture
+importExternalTexture self descriptor = liftDOM (((self ^. jsf "importExternalTexture" [toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/importExternalTexture MDN GPUDevice.importExternalTexture documentation>
+importExternalTexture_ :: (MonadDOM m) => GPUDevice -> GPUExternalTextureDescriptor -> m ()
+importExternalTexture_ self descriptor = liftDOM (void (self ^. jsf "importExternalTexture" [toJSVal descriptor]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/popErrorScope MDN GPUDevice.popErrorScope documentation>
+popErrorScope :: (MonadDOM m) => GPUDevice -> m (Maybe GPUError)
+popErrorScope self = liftDOM (((((self ^. jsf "popErrorScope" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/popErrorScope MDN GPUDevice.popErrorScope documentation>
+popErrorScope_ :: (MonadDOM m) => GPUDevice -> m ()
+popErrorScope_ self = liftDOM (void (((self ^. jsf "popErrorScope" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/popErrorScope MDN GPUDevice.popErrorScope documentation>
+popErrorScopeUnsafe :: (MonadDOM m, HasCallStack) => GPUDevice -> m GPUError
+popErrorScopeUnsafe self = liftDOM ((((((self ^. jsf "popErrorScope" ()) >>= readPromise)) >>= 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 (((((self ^. jsf "popErrorScope" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/pushErrorScope MDN GPUDevice.pushErrorScope documentation>
+pushErrorScope :: (MonadDOM m) => GPUDevice -> GPUErrorFilter -> m ()
+pushErrorScope self filter = liftDOM (void (self ^. jsf "pushErrorScope" [toJSVal filter]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/features MDN GPUDevice.features documentation>
+getFeatures :: (MonadDOM m) => GPUDevice -> m GPUSupportedFeatures
+getFeatures self = liftDOM (((self ^. js "features") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/limits MDN GPUDevice.limits documentation>
+getLimits :: (MonadDOM m) => GPUDevice -> m GPUSupportedLimits
+getLimits self = liftDOM (((self ^. js "limits") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/adapterInfo MDN GPUDevice.adapterInfo documentation>
+getAdapterInfo :: (MonadDOM m) => GPUDevice -> m GPUAdapterInfo
+getAdapterInfo self = liftDOM (((self ^. js "adapterInfo") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/queue MDN GPUDevice.queue documentation>
+getQueue :: (MonadDOM m) => GPUDevice -> m GPUQueue
+getQueue self = liftDOM (((self ^. js "queue") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDevice/lost MDN GPUDevice.lost documentation>
+getLost :: (MonadDOM m) => GPUDevice -> m GPUDeviceLostInfo
+getLost self = liftDOM (((((self ^. js "lost") >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevice-onuncapturederror uncapturederror event>
+uncapturederror :: EventName GPUDevice GPUUncapturedErrorEvent
+uncapturederror = unsafeEventName (toJSString "uncapturederror")
diff --git a/src/JSDOM/Generated/GPUDeviceDescriptor.hs b/src/JSDOM/Generated/GPUDeviceDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUDeviceDescriptor.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUDeviceDescriptor
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#gpudevicedescriptor GPUDeviceDescriptor specification>
+newGPUDeviceDescriptor :: (MonadDOM m) => m GPUDeviceDescriptor
+newGPUDeviceDescriptor = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-requiredfeatures GPUDeviceDescriptor.requiredFeatures specification>
+setRequiredFeatures :: (MonadDOM m) => GPUDeviceDescriptor -> [GPUFeatureName] -> m ()
+setRequiredFeatures self val = liftDOM (void (self ^. jss "requiredFeatures" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-requiredfeatures GPUDeviceDescriptor.requiredFeatures specification>
+getRequiredFeatures :: (MonadDOM m) => GPUDeviceDescriptor -> m (Maybe [GPUFeatureName])
+getRequiredFeatures self = liftDOM (((self ^. js "requiredFeatures") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-requiredfeatures GPUDeviceDescriptor.requiredFeatures specification>
+getRequiredFeaturesUnsafe :: (MonadDOM m, HasCallStack) => GPUDeviceDescriptor -> m [GPUFeatureName]
+getRequiredFeaturesUnsafe self = liftDOM ((((self ^. js "requiredFeatures") >>= 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 (((self ^. js "requiredFeatures") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-requiredlimits GPUDeviceDescriptor.requiredLimits specification>
+setRequiredLimits :: (MonadDOM m) => GPUDeviceDescriptor -> (Record JSString JSVal) -> m ()
+setRequiredLimits self val = liftDOM (void (self ^. jss "requiredLimits" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-requiredlimits GPUDeviceDescriptor.requiredLimits specification>
+getRequiredLimits :: (MonadDOM m) => GPUDeviceDescriptor -> m (Maybe (Record JSString JSVal))
+getRequiredLimits self = liftDOM (((self ^. js "requiredLimits") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-requiredlimits GPUDeviceDescriptor.requiredLimits specification>
+getRequiredLimitsUnsafe :: (MonadDOM m, HasCallStack) => GPUDeviceDescriptor -> m (Record JSString JSVal)
+getRequiredLimitsUnsafe self = liftDOM ((((self ^. js "requiredLimits") >>= 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 (((self ^. js "requiredLimits") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-defaultqueue GPUDeviceDescriptor.defaultQueue specification>
+setDefaultQueue :: (MonadDOM m) => GPUDeviceDescriptor -> GPUQueueDescriptor -> m ()
+setDefaultQueue self val = liftDOM (void (self ^. jss "defaultQueue" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-defaultqueue GPUDeviceDescriptor.defaultQueue specification>
+getDefaultQueue :: (MonadDOM m) => GPUDeviceDescriptor -> m (Maybe GPUQueueDescriptor)
+getDefaultQueue self = liftDOM (((self ^. js "defaultQueue") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpudevicedescriptor-defaultqueue GPUDeviceDescriptor.defaultQueue specification>
+getDefaultQueueUnsafe :: (MonadDOM m, HasCallStack) => GPUDeviceDescriptor -> m GPUQueueDescriptor
+getDefaultQueueUnsafe self = liftDOM ((((self ^. js "defaultQueue") >>= 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 (((self ^. js "defaultQueue") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUDeviceLostInfo.hs b/src/JSDOM/Generated/GPUDeviceLostInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUDeviceLostInfo.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUDeviceLostInfo
+       (getReason, getMessage, GPUDeviceLostInfo(..), gTypeGPUDeviceLostInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDeviceLostInfo/reason MDN GPUDeviceLostInfo.reason documentation>
+getReason :: (MonadDOM m) => GPUDeviceLostInfo -> m GPUDeviceLostReason
+getReason self = liftDOM (((self ^. js "reason") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUDeviceLostInfo/message MDN GPUDeviceLostInfo.message documentation>
+getMessage :: (MonadDOM m, FromJSString result) => GPUDeviceLostInfo -> m result
+getMessage self = liftDOM (((self ^. js "message") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUError.hs b/src/JSDOM/Generated/GPUError.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUError.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUError
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toGPUError self) ^. js "message") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUExtent3DDict.hs b/src/JSDOM/Generated/GPUExtent3DDict.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUExtent3DDict.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUExtent3DDict
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuextent3ddict GPUExtent3DDict specification>
+newGPUExtent3DDict :: (MonadDOM m) => Word -> m GPUExtent3DDict
+newGPUExtent3DDict width = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "width" (toJSVal width)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-width GPUExtent3DDict.width specification>
+setWidth :: (MonadDOM m) => GPUExtent3DDict -> Word -> m ()
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-width GPUExtent3DDict.width specification>
+getWidth :: (MonadDOM m) => GPUExtent3DDict -> m Word
+getWidth self = liftDOM ((P.round <$> ((self ^. js "width") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-height GPUExtent3DDict.height specification>
+setHeight :: (MonadDOM m) => GPUExtent3DDict -> Word -> m ()
+setHeight self val = liftDOM (void (self ^. jss "height" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-height GPUExtent3DDict.height specification>
+getHeight :: (MonadDOM m) => GPUExtent3DDict -> m (Maybe Word)
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-height GPUExtent3DDict.height specification>
+getHeightUnsafe :: (MonadDOM m, HasCallStack) => GPUExtent3DDict -> m Word
+getHeightUnsafe self = liftDOM ((((self ^. js "height") >>= 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 ((P.round <$> ((self ^. js "height") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-depthorarraylayers GPUExtent3DDict.depthOrArrayLayers specification>
+setDepthOrArrayLayers :: (MonadDOM m) => GPUExtent3DDict -> Word -> m ()
+setDepthOrArrayLayers self val = liftDOM (void (self ^. jss "depthOrArrayLayers" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-depthorarraylayers GPUExtent3DDict.depthOrArrayLayers specification>
+getDepthOrArrayLayers :: (MonadDOM m) => GPUExtent3DDict -> m (Maybe Word)
+getDepthOrArrayLayers self = liftDOM (((self ^. js "depthOrArrayLayers") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuextent3ddict-depthorarraylayers GPUExtent3DDict.depthOrArrayLayers specification>
+getDepthOrArrayLayersUnsafe :: (MonadDOM m, HasCallStack) => GPUExtent3DDict -> m Word
+getDepthOrArrayLayersUnsafe self = liftDOM ((((self ^. js "depthOrArrayLayers") >>= 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 ((P.round <$> ((self ^. js "depthOrArrayLayers") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/GPUExternalTexture.hs b/src/JSDOM/Generated/GPUExternalTexture.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUExternalTexture.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUExternalTexture
+       (GPUExternalTexture(..), gTypeGPUExternalTexture)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/GPUExternalTextureBindingLayout.hs b/src/JSDOM/Generated/GPUExternalTextureBindingLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUExternalTextureBindingLayout.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUExternalTextureBindingLayout
+       (newGPUExternalTextureBindingLayout, GPUExternalTextureBindingLayout(..), gTypeGPUExternalTextureBindingLayout)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuexternaltexturebindinglayout GPUExternalTextureBindingLayout specification>
+newGPUExternalTextureBindingLayout :: (MonadDOM m) => m GPUExternalTextureBindingLayout
+newGPUExternalTextureBindingLayout = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUExternalTextureDescriptor.hs b/src/JSDOM/Generated/GPUExternalTextureDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUExternalTextureDescriptor.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUExternalTextureDescriptor
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuexternaltexturedescriptor GPUExternalTextureDescriptor specification>
+newGPUExternalTextureDescriptor :: (MonadDOM m, IsHTMLVideoElementOrVideoFrame source) => source -> m GPUExternalTextureDescriptor
+newGPUExternalTextureDescriptor source = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "source" (toJSVal source)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuexternaltexturedescriptor-source GPUExternalTextureDescriptor.source specification>
+setSource :: (MonadDOM m, IsHTMLVideoElementOrVideoFrame val) => GPUExternalTextureDescriptor -> val -> m ()
+setSource self val = liftDOM (void (self ^. jss "source" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuexternaltexturedescriptor-source GPUExternalTextureDescriptor.source specification>
+getSource :: (MonadDOM m) => GPUExternalTextureDescriptor -> m HTMLVideoElementOrVideoFrame
+getSource self = liftDOM (((self ^. js "source") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuexternaltexturedescriptor-colorspace GPUExternalTextureDescriptor.colorSpace specification>
+setColorSpace :: (MonadDOM m) => GPUExternalTextureDescriptor -> PredefinedColorSpace -> m ()
+setColorSpace self val = liftDOM (void (self ^. jss "colorSpace" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuexternaltexturedescriptor-colorspace GPUExternalTextureDescriptor.colorSpace specification>
+getColorSpace :: (MonadDOM m) => GPUExternalTextureDescriptor -> m (Maybe PredefinedColorSpace)
+getColorSpace self = liftDOM (((self ^. js "colorSpace") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuexternaltexturedescriptor-colorspace GPUExternalTextureDescriptor.colorSpace specification>
+getColorSpaceUnsafe :: (MonadDOM m, HasCallStack) => GPUExternalTextureDescriptor -> m PredefinedColorSpace
+getColorSpaceUnsafe self = liftDOM ((((self ^. js "colorSpace") >>= 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 (((self ^. js "colorSpace") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUFragmentState.hs b/src/JSDOM/Generated/GPUFragmentState.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUFragmentState.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUFragmentState
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpufragmentstate GPUFragmentState specification>
+newGPUFragmentState :: (MonadDOM m) => GPUShaderModule -> [Maybe GPUColorTargetState] -> m GPUFragmentState
+newGPUFragmentState module' targets = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "module" (toJSVal module')) P.>> (o ^. jss "targets" (toJSVal targets)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpufragmentstate-targets GPUFragmentState.targets specification>
+setTargets :: (MonadDOM m) => GPUFragmentState -> [Maybe GPUColorTargetState] -> m ()
+setTargets self val = liftDOM (void (self ^. jss "targets" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpufragmentstate-targets GPUFragmentState.targets specification>
+getTargets :: (MonadDOM m) => GPUFragmentState -> m [Maybe GPUColorTargetState]
+getTargets self = liftDOM (((self ^. js "targets") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUInternalError.hs b/src/JSDOM/Generated/GPUInternalError.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUInternalError.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUInternalError
+       (newGPUInternalError, GPUInternalError(..), gTypeGPUInternalError)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUInternalError/GPUInternalError MDN GPUInternalError. documentation>
+newGPUInternalError :: (MonadDOM m, ToJSString message) => message -> m GPUInternalError
+newGPUInternalError message = liftDOM (((new (jsg "GPUInternalError") [toJSVal message]) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUMultisampleState.hs b/src/JSDOM/Generated/GPUMultisampleState.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUMultisampleState.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUMultisampleState
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpumultisamplestate GPUMultisampleState specification>
+newGPUMultisampleState :: (MonadDOM m) => m GPUMultisampleState
+newGPUMultisampleState = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-count GPUMultisampleState.count specification>
+setCount :: (MonadDOM m) => GPUMultisampleState -> Word -> m ()
+setCount self val = liftDOM (void (self ^. jss "count" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-count GPUMultisampleState.count specification>
+getCount :: (MonadDOM m) => GPUMultisampleState -> m (Maybe Word)
+getCount self = liftDOM (((self ^. js "count") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-count GPUMultisampleState.count specification>
+getCountUnsafe :: (MonadDOM m, HasCallStack) => GPUMultisampleState -> m Word
+getCountUnsafe self = liftDOM ((((self ^. js "count") >>= 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 ((P.round <$> ((self ^. js "count") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-mask GPUMultisampleState.mask specification>
+setMask :: (MonadDOM m) => GPUMultisampleState -> Word -> m ()
+setMask self val = liftDOM (void (self ^. jss "mask" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-mask GPUMultisampleState.mask specification>
+getMask :: (MonadDOM m) => GPUMultisampleState -> m (Maybe Word)
+getMask self = liftDOM (((self ^. js "mask") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-mask GPUMultisampleState.mask specification>
+getMaskUnsafe :: (MonadDOM m, HasCallStack) => GPUMultisampleState -> m Word
+getMaskUnsafe self = liftDOM ((((self ^. js "mask") >>= 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 ((P.round <$> ((self ^. js "mask") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-alphatocoverageenabled GPUMultisampleState.alphaToCoverageEnabled specification>
+setAlphaToCoverageEnabled :: (MonadDOM m) => GPUMultisampleState -> Bool -> m ()
+setAlphaToCoverageEnabled self val = liftDOM (void (self ^. jss "alphaToCoverageEnabled" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-alphatocoverageenabled GPUMultisampleState.alphaToCoverageEnabled specification>
+getAlphaToCoverageEnabled :: (MonadDOM m) => GPUMultisampleState -> m (Maybe Bool)
+getAlphaToCoverageEnabled self = liftDOM (((self ^. js "alphaToCoverageEnabled") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpumultisamplestate-alphatocoverageenabled GPUMultisampleState.alphaToCoverageEnabled specification>
+getAlphaToCoverageEnabledUnsafe :: (MonadDOM m, HasCallStack) => GPUMultisampleState -> m Bool
+getAlphaToCoverageEnabledUnsafe self = liftDOM ((((self ^. js "alphaToCoverageEnabled") >>= 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 (((self ^. js "alphaToCoverageEnabled") >>= valToBool))
diff --git a/src/JSDOM/Generated/GPUObjectBase.hs b/src/JSDOM/Generated/GPUObjectBase.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUObjectBase.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUObjectBase
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toGPUObjectBase self) ^. jss "label" (toJSVal val)))
+
+-- | <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 ((((Types.toGPUObjectBase self) ^. js "label") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUObjectDescriptorBase.hs b/src/JSDOM/Generated/GPUObjectDescriptorBase.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUObjectDescriptorBase.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUObjectDescriptorBase
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuobjectdescriptorbase GPUObjectDescriptorBase specification>
+newGPUObjectDescriptorBase :: (MonadDOM m) => m GPUObjectDescriptorBase
+newGPUObjectDescriptorBase = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toGPUObjectDescriptorBase self) ^. jss "label" (toJSVal val)))
+
+-- | <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 ((((Types.toGPUObjectDescriptorBase self) ^. js "label") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toGPUObjectDescriptorBase self) ^. js "label") >>= fromMaybeJSString) >>= 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 ((((Types.toGPUObjectDescriptorBase self) ^. js "label") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUOrigin2DDict.hs b/src/JSDOM/Generated/GPUOrigin2DDict.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUOrigin2DDict.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUOrigin2DDict
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuorigin2ddict GPUOrigin2DDict specification>
+newGPUOrigin2DDict :: (MonadDOM m) => m GPUOrigin2DDict
+newGPUOrigin2DDict = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin2ddict-x GPUOrigin2DDict.x specification>
+setX :: (MonadDOM m) => GPUOrigin2DDict -> Word -> m ()
+setX self val = liftDOM (void (self ^. jss "x" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin2ddict-x GPUOrigin2DDict.x specification>
+getX :: (MonadDOM m) => GPUOrigin2DDict -> m (Maybe Word)
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin2ddict-x GPUOrigin2DDict.x specification>
+getXUnsafe :: (MonadDOM m, HasCallStack) => GPUOrigin2DDict -> m Word
+getXUnsafe self = liftDOM ((((self ^. js "x") >>= 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 ((P.round <$> ((self ^. js "x") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin2ddict-y GPUOrigin2DDict.y specification>
+setY :: (MonadDOM m) => GPUOrigin2DDict -> Word -> m ()
+setY self val = liftDOM (void (self ^. jss "y" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin2ddict-y GPUOrigin2DDict.y specification>
+getY :: (MonadDOM m) => GPUOrigin2DDict -> m (Maybe Word)
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin2ddict-y GPUOrigin2DDict.y specification>
+getYUnsafe :: (MonadDOM m, HasCallStack) => GPUOrigin2DDict -> m Word
+getYUnsafe self = liftDOM ((((self ^. js "y") >>= 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 ((P.round <$> ((self ^. js "y") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/GPUOrigin3DDict.hs b/src/JSDOM/Generated/GPUOrigin3DDict.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUOrigin3DDict.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUOrigin3DDict
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuorigin3ddict GPUOrigin3DDict specification>
+newGPUOrigin3DDict :: (MonadDOM m) => m GPUOrigin3DDict
+newGPUOrigin3DDict = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-x GPUOrigin3DDict.x specification>
+setX :: (MonadDOM m) => GPUOrigin3DDict -> Word -> m ()
+setX self val = liftDOM (void (self ^. jss "x" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-x GPUOrigin3DDict.x specification>
+getX :: (MonadDOM m) => GPUOrigin3DDict -> m (Maybe Word)
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-x GPUOrigin3DDict.x specification>
+getXUnsafe :: (MonadDOM m, HasCallStack) => GPUOrigin3DDict -> m Word
+getXUnsafe self = liftDOM ((((self ^. js "x") >>= 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 ((P.round <$> ((self ^. js "x") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-y GPUOrigin3DDict.y specification>
+setY :: (MonadDOM m) => GPUOrigin3DDict -> Word -> m ()
+setY self val = liftDOM (void (self ^. jss "y" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-y GPUOrigin3DDict.y specification>
+getY :: (MonadDOM m) => GPUOrigin3DDict -> m (Maybe Word)
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-y GPUOrigin3DDict.y specification>
+getYUnsafe :: (MonadDOM m, HasCallStack) => GPUOrigin3DDict -> m Word
+getYUnsafe self = liftDOM ((((self ^. js "y") >>= 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 ((P.round <$> ((self ^. js "y") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-z GPUOrigin3DDict.z specification>
+setZ :: (MonadDOM m) => GPUOrigin3DDict -> Word -> m ()
+setZ self val = liftDOM (void (self ^. jss "z" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-z GPUOrigin3DDict.z specification>
+getZ :: (MonadDOM m) => GPUOrigin3DDict -> m (Maybe Word)
+getZ self = liftDOM (((self ^. js "z") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuorigin3ddict-z GPUOrigin3DDict.z specification>
+getZUnsafe :: (MonadDOM m, HasCallStack) => GPUOrigin3DDict -> m Word
+getZUnsafe self = liftDOM ((((self ^. js "z") >>= 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 ((P.round <$> ((self ^. js "z") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/GPUOutOfMemoryError.hs b/src/JSDOM/Generated/GPUOutOfMemoryError.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUOutOfMemoryError.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUOutOfMemoryError
+       (newGPUOutOfMemoryError, GPUOutOfMemoryError(..), gTypeGPUOutOfMemoryError)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUOutOfMemoryError/GPUOutOfMemoryError MDN GPUOutOfMemoryError. documentation>
+newGPUOutOfMemoryError :: (MonadDOM m, ToJSString message) => message -> m GPUOutOfMemoryError
+newGPUOutOfMemoryError message = liftDOM (((new (jsg "GPUOutOfMemoryError") [toJSVal message]) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUPipelineBase.hs b/src/JSDOM/Generated/GPUPipelineBase.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUPipelineBase.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUPipelineBase
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toGPUPipelineBase self) ^. jsf "getBindGroupLayout" [toJSVal index]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toGPUPipelineBase self) ^. jsf "getBindGroupLayout" [toJSVal index]))
diff --git a/src/JSDOM/Generated/GPUPipelineDescriptorBase.hs b/src/JSDOM/Generated/GPUPipelineDescriptorBase.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUPipelineDescriptorBase.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUPipelineDescriptorBase
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpupipelinedescriptorbase GPUPipelineDescriptorBase specification>
+newGPUPipelineDescriptorBase :: (MonadDOM m, IsGPUPipelineLayoutOrGPUAutoLayoutMode layout) => layout -> m GPUPipelineDescriptorBase
+newGPUPipelineDescriptorBase layout = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "layout" (toJSVal layout)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toGPUPipelineDescriptorBase self) ^. jss "layout" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelinedescriptorbase-layout GPUPipelineDescriptorBase.layout specification>
+getLayout :: (MonadDOM m, IsGPUPipelineDescriptorBase self) => self -> m GPUPipelineLayoutOrGPUAutoLayoutMode
+getLayout self = liftDOM ((((Types.toGPUPipelineDescriptorBase self) ^. js "layout") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUPipelineError.hs b/src/JSDOM/Generated/GPUPipelineError.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUPipelineError.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUPipelineError
+       (newGPUPipelineError, getReason, GPUPipelineError(..), gTypeGPUPipelineError)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "GPUPipelineError") [P.maybe (P.return jsUndefined) toJSVal message, toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUPipelineError/reason MDN GPUPipelineError.reason documentation>
+getReason :: (MonadDOM m) => GPUPipelineError -> m GPUPipelineErrorReason
+getReason self = liftDOM (((self ^. js "reason") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUPipelineErrorInit.hs b/src/JSDOM/Generated/GPUPipelineErrorInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUPipelineErrorInit.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUPipelineErrorInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpupipelineerrorinit GPUPipelineErrorInit specification>
+newGPUPipelineErrorInit :: (MonadDOM m) => GPUPipelineErrorReason -> m GPUPipelineErrorInit
+newGPUPipelineErrorInit reason = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "reason" (toJSVal reason)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelineerrorinit-reason GPUPipelineErrorInit.reason specification>
+setReason :: (MonadDOM m) => GPUPipelineErrorInit -> GPUPipelineErrorReason -> m ()
+setReason self val = liftDOM (void (self ^. jss "reason" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelineerrorinit-reason GPUPipelineErrorInit.reason specification>
+getReason :: (MonadDOM m) => GPUPipelineErrorInit -> m GPUPipelineErrorReason
+getReason self = liftDOM (((self ^. js "reason") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUPipelineLayout.hs b/src/JSDOM/Generated/GPUPipelineLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUPipelineLayout.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUPipelineLayout
+       (GPUPipelineLayout(..), gTypeGPUPipelineLayout)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/GPUPipelineLayoutDescriptor.hs b/src/JSDOM/Generated/GPUPipelineLayoutDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUPipelineLayoutDescriptor.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUPipelineLayoutDescriptor
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpupipelinelayoutdescriptor GPUPipelineLayoutDescriptor specification>
+newGPUPipelineLayoutDescriptor :: (MonadDOM m) => [Maybe GPUBindGroupLayout] -> m GPUPipelineLayoutDescriptor
+newGPUPipelineLayoutDescriptor bindGroupLayouts = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "bindGroupLayouts" (toJSVal bindGroupLayouts)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelinelayoutdescriptor-bindgrouplayouts GPUPipelineLayoutDescriptor.bindGroupLayouts specification>
+setBindGroupLayouts :: (MonadDOM m) => GPUPipelineLayoutDescriptor -> [Maybe GPUBindGroupLayout] -> m ()
+setBindGroupLayouts self val = liftDOM (void (self ^. jss "bindGroupLayouts" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelinelayoutdescriptor-bindgrouplayouts GPUPipelineLayoutDescriptor.bindGroupLayouts specification>
+getBindGroupLayouts :: (MonadDOM m) => GPUPipelineLayoutDescriptor -> m [Maybe GPUBindGroupLayout]
+getBindGroupLayouts self = liftDOM (((self ^. js "bindGroupLayouts") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelinelayoutdescriptor-immediatesize GPUPipelineLayoutDescriptor.immediateSize specification>
+setImmediateSize :: (MonadDOM m) => GPUPipelineLayoutDescriptor -> Word -> m ()
+setImmediateSize self val = liftDOM (void (self ^. jss "immediateSize" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelinelayoutdescriptor-immediatesize GPUPipelineLayoutDescriptor.immediateSize specification>
+getImmediateSize :: (MonadDOM m) => GPUPipelineLayoutDescriptor -> m (Maybe Word)
+getImmediateSize self = liftDOM (((self ^. js "immediateSize") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpupipelinelayoutdescriptor-immediatesize GPUPipelineLayoutDescriptor.immediateSize specification>
+getImmediateSizeUnsafe :: (MonadDOM m, HasCallStack) => GPUPipelineLayoutDescriptor -> m Word
+getImmediateSizeUnsafe self = liftDOM ((((self ^. js "immediateSize") >>= 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 ((P.round <$> ((self ^. js "immediateSize") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/GPUPrimitiveState.hs b/src/JSDOM/Generated/GPUPrimitiveState.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUPrimitiveState.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUPrimitiveState
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuprimitivestate GPUPrimitiveState specification>
+newGPUPrimitiveState :: (MonadDOM m) => m GPUPrimitiveState
+newGPUPrimitiveState = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-topology GPUPrimitiveState.topology specification>
+setTopology :: (MonadDOM m) => GPUPrimitiveState -> GPUPrimitiveTopology -> m ()
+setTopology self val = liftDOM (void (self ^. jss "topology" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-topology GPUPrimitiveState.topology specification>
+getTopology :: (MonadDOM m) => GPUPrimitiveState -> m (Maybe GPUPrimitiveTopology)
+getTopology self = liftDOM (((self ^. js "topology") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-topology GPUPrimitiveState.topology specification>
+getTopologyUnsafe :: (MonadDOM m, HasCallStack) => GPUPrimitiveState -> m GPUPrimitiveTopology
+getTopologyUnsafe self = liftDOM ((((self ^. js "topology") >>= 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 (((self ^. js "topology") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-stripindexformat GPUPrimitiveState.stripIndexFormat specification>
+setStripIndexFormat :: (MonadDOM m) => GPUPrimitiveState -> GPUIndexFormat -> m ()
+setStripIndexFormat self val = liftDOM (void (self ^. jss "stripIndexFormat" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-stripindexformat GPUPrimitiveState.stripIndexFormat specification>
+getStripIndexFormat :: (MonadDOM m) => GPUPrimitiveState -> m (Maybe GPUIndexFormat)
+getStripIndexFormat self = liftDOM (((self ^. js "stripIndexFormat") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-stripindexformat GPUPrimitiveState.stripIndexFormat specification>
+getStripIndexFormatUnsafe :: (MonadDOM m, HasCallStack) => GPUPrimitiveState -> m GPUIndexFormat
+getStripIndexFormatUnsafe self = liftDOM ((((self ^. js "stripIndexFormat") >>= 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 (((self ^. js "stripIndexFormat") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-frontface GPUPrimitiveState.frontFace specification>
+setFrontFace :: (MonadDOM m) => GPUPrimitiveState -> GPUFrontFace -> m ()
+setFrontFace self val = liftDOM (void (self ^. jss "frontFace" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-frontface GPUPrimitiveState.frontFace specification>
+getFrontFace :: (MonadDOM m) => GPUPrimitiveState -> m (Maybe GPUFrontFace)
+getFrontFace self = liftDOM (((self ^. js "frontFace") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-frontface GPUPrimitiveState.frontFace specification>
+getFrontFaceUnsafe :: (MonadDOM m, HasCallStack) => GPUPrimitiveState -> m GPUFrontFace
+getFrontFaceUnsafe self = liftDOM ((((self ^. js "frontFace") >>= 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 (((self ^. js "frontFace") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-cullmode GPUPrimitiveState.cullMode specification>
+setCullMode :: (MonadDOM m) => GPUPrimitiveState -> GPUCullMode -> m ()
+setCullMode self val = liftDOM (void (self ^. jss "cullMode" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-cullmode GPUPrimitiveState.cullMode specification>
+getCullMode :: (MonadDOM m) => GPUPrimitiveState -> m (Maybe GPUCullMode)
+getCullMode self = liftDOM (((self ^. js "cullMode") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-cullmode GPUPrimitiveState.cullMode specification>
+getCullModeUnsafe :: (MonadDOM m, HasCallStack) => GPUPrimitiveState -> m GPUCullMode
+getCullModeUnsafe self = liftDOM ((((self ^. js "cullMode") >>= 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 (((self ^. js "cullMode") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-unclippeddepth GPUPrimitiveState.unclippedDepth specification>
+setUnclippedDepth :: (MonadDOM m) => GPUPrimitiveState -> Bool -> m ()
+setUnclippedDepth self val = liftDOM (void (self ^. jss "unclippedDepth" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-unclippeddepth GPUPrimitiveState.unclippedDepth specification>
+getUnclippedDepth :: (MonadDOM m) => GPUPrimitiveState -> m (Maybe Bool)
+getUnclippedDepth self = liftDOM (((self ^. js "unclippedDepth") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprimitivestate-unclippeddepth GPUPrimitiveState.unclippedDepth specification>
+getUnclippedDepthUnsafe :: (MonadDOM m, HasCallStack) => GPUPrimitiveState -> m Bool
+getUnclippedDepthUnsafe self = liftDOM ((((self ^. js "unclippedDepth") >>= 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 (((self ^. js "unclippedDepth") >>= valToBool))
diff --git a/src/JSDOM/Generated/GPUProgrammableStage.hs b/src/JSDOM/Generated/GPUProgrammableStage.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUProgrammableStage.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUProgrammableStage
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#gpuprogrammablestage GPUProgrammableStage specification>
+newGPUProgrammableStage :: (MonadDOM m) => GPUShaderModule -> m GPUProgrammableStage
+newGPUProgrammableStage module' = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "module" (toJSVal module')) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablestage-module GPUProgrammableStage.module specification>
+setModule :: (MonadDOM m, IsGPUProgrammableStage self) => self -> GPUShaderModule -> m ()
+setModule self val = liftDOM (void ((Types.toGPUProgrammableStage self) ^. jss "module" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuprogrammablestage-module GPUProgrammableStage.module specification>
+getModule :: (MonadDOM m, IsGPUProgrammableStage self) => self -> m GPUShaderModule
+getModule self = liftDOM ((((Types.toGPUProgrammableStage self) ^. js "module") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toGPUProgrammableStage self) ^. jss "entryPoint" (toJSVal val)))
+
+-- | <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 ((((Types.toGPUProgrammableStage self) ^. js "entryPoint") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toGPUProgrammableStage self) ^. js "entryPoint") >>= fromMaybeJSString) >>= 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 ((((Types.toGPUProgrammableStage self) ^. js "entryPoint") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toGPUProgrammableStage self) ^. jss "constants" (toJSVal val)))
+
+-- | <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 ((((Types.toGPUProgrammableStage self) ^. js "constants") >>= 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 (((((Types.toGPUProgrammableStage self) ^. js "constants") >>= 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 ((((Types.toGPUProgrammableStage self) ^. js "constants") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUQuerySet.hs b/src/JSDOM/Generated/GPUQuerySet.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUQuerySet.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUQuerySet
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUQuerySet/destroy MDN GPUQuerySet.destroy documentation>
+destroy :: (MonadDOM m) => GPUQuerySet -> m ()
+destroy self = liftDOM (void (self ^. jsf "destroy" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUQuerySet/type MDN GPUQuerySet.type documentation>
+getType :: (MonadDOM m) => GPUQuerySet -> m GPUQueryType
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUQuerySet/count MDN GPUQuerySet.count documentation>
+getCount :: (MonadDOM m) => GPUQuerySet -> m Word
+getCount self = liftDOM ((P.round <$> ((self ^. js "count") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/GPUQuerySetDescriptor.hs b/src/JSDOM/Generated/GPUQuerySetDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUQuerySetDescriptor.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUQuerySetDescriptor
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuquerysetdescriptor GPUQuerySetDescriptor specification>
+newGPUQuerySetDescriptor :: (MonadDOM m) => GPUQueryType -> Word -> m GPUQuerySetDescriptor
+newGPUQuerySetDescriptor type' count = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "type" (toJSVal type')) P.>> (o ^. jss "count" (toJSVal count)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuquerysetdescriptor-type GPUQuerySetDescriptor.type specification>
+setType :: (MonadDOM m) => GPUQuerySetDescriptor -> GPUQueryType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuquerysetdescriptor-type GPUQuerySetDescriptor.type specification>
+getType :: (MonadDOM m) => GPUQuerySetDescriptor -> m GPUQueryType
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuquerysetdescriptor-count GPUQuerySetDescriptor.count specification>
+setCount :: (MonadDOM m) => GPUQuerySetDescriptor -> Word -> m ()
+setCount self val = liftDOM (void (self ^. jss "count" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuquerysetdescriptor-count GPUQuerySetDescriptor.count specification>
+getCount :: (MonadDOM m) => GPUQuerySetDescriptor -> m Word
+getCount self = liftDOM ((P.round <$> ((self ^. js "count") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/GPUQueue.hs b/src/JSDOM/Generated/GPUQueue.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUQueue.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUQueue
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "copyExternalImageToTexture" [toJSVal source, toJSVal destination, toJSVal copySize]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUQueue/onSubmittedWorkDone MDN GPUQueue.onSubmittedWorkDone documentation>
+onSubmittedWorkDone :: (MonadDOM m) => GPUQueue -> m ()
+onSubmittedWorkDone self = liftDOM (void (((self ^. jsf "onSubmittedWorkDone" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUQueue/submit MDN GPUQueue.submit documentation>
+submit :: (MonadDOM m) => GPUQueue -> [GPUCommandBuffer] -> m ()
+submit self commandBuffers = liftDOM (void (self ^. jsf "submit" [toJSVal commandBuffers]))
+
+-- | <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 (self ^. jsf "writeBuffer" [toJSVal buffer, toJSVal bufferOffset, toJSVal data', P.maybe (P.return jsUndefined) toJSVal dataOffset, P.maybe (P.return jsUndefined) toJSVal size]))
+
+-- | <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 (self ^. jsf "writeTexture" [toJSVal destination, toJSVal data', toJSVal dataLayout, toJSVal size]))
diff --git a/src/JSDOM/Generated/GPUQueueDescriptor.hs b/src/JSDOM/Generated/GPUQueueDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUQueueDescriptor.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUQueueDescriptor
+       (newGPUQueueDescriptor, GPUQueueDescriptor(..), gTypeGPUQueueDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#gpuqueuedescriptor GPUQueueDescriptor specification>
+newGPUQueueDescriptor :: (MonadDOM m) => m GPUQueueDescriptor
+newGPUQueueDescriptor = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPURenderBundle.hs b/src/JSDOM/Generated/GPURenderBundle.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPURenderBundle.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPURenderBundle
+       (GPURenderBundle(..), gTypeGPURenderBundle)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/GPURenderBundleDescriptor.hs b/src/JSDOM/Generated/GPURenderBundleDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPURenderBundleDescriptor.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPURenderBundleDescriptor
+       (newGPURenderBundleDescriptor, GPURenderBundleDescriptor(..), gTypeGPURenderBundleDescriptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurenderbundledescriptor GPURenderBundleDescriptor specification>
+newGPURenderBundleDescriptor :: (MonadDOM m) => m GPURenderBundleDescriptor
+newGPURenderBundleDescriptor = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPURenderBundleEncoder.hs b/src/JSDOM/Generated/GPURenderBundleEncoder.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPURenderBundleEncoder.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPURenderBundleEncoder
+       (finish, finish_, GPURenderBundleEncoder(..), gTypeGPURenderBundleEncoder)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "finish" [P.maybe (P.return jsUndefined) toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "finish" [P.maybe (P.return jsUndefined) toJSVal descriptor]))
diff --git a/src/JSDOM/Generated/GPURenderBundleEncoderDescriptor.hs b/src/JSDOM/Generated/GPURenderBundleEncoderDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPURenderBundleEncoderDescriptor.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPURenderBundleEncoderDescriptor
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurenderbundleencoderdescriptor GPURenderBundleEncoderDescriptor specification>
+newGPURenderBundleEncoderDescriptor :: (MonadDOM m) => [Maybe GPUTextureFormat] -> m GPURenderBundleEncoderDescriptor
+newGPURenderBundleEncoderDescriptor colorFormats = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "colorFormats" (toJSVal colorFormats)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoderdescriptor-depthreadonly GPURenderBundleEncoderDescriptor.depthReadOnly specification>
+setDepthReadOnly :: (MonadDOM m) => GPURenderBundleEncoderDescriptor -> Bool -> m ()
+setDepthReadOnly self val = liftDOM (void (self ^. jss "depthReadOnly" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoderdescriptor-depthreadonly GPURenderBundleEncoderDescriptor.depthReadOnly specification>
+getDepthReadOnly :: (MonadDOM m) => GPURenderBundleEncoderDescriptor -> m (Maybe Bool)
+getDepthReadOnly self = liftDOM (((self ^. js "depthReadOnly") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoderdescriptor-depthreadonly GPURenderBundleEncoderDescriptor.depthReadOnly specification>
+getDepthReadOnlyUnsafe :: (MonadDOM m, HasCallStack) => GPURenderBundleEncoderDescriptor -> m Bool
+getDepthReadOnlyUnsafe self = liftDOM ((((self ^. js "depthReadOnly") >>= 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 (((self ^. js "depthReadOnly") >>= valToBool))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoderdescriptor-stencilreadonly GPURenderBundleEncoderDescriptor.stencilReadOnly specification>
+setStencilReadOnly :: (MonadDOM m) => GPURenderBundleEncoderDescriptor -> Bool -> m ()
+setStencilReadOnly self val = liftDOM (void (self ^. jss "stencilReadOnly" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoderdescriptor-stencilreadonly GPURenderBundleEncoderDescriptor.stencilReadOnly specification>
+getStencilReadOnly :: (MonadDOM m) => GPURenderBundleEncoderDescriptor -> m (Maybe Bool)
+getStencilReadOnly self = liftDOM (((self ^. js "stencilReadOnly") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderbundleencoderdescriptor-stencilreadonly GPURenderBundleEncoderDescriptor.stencilReadOnly specification>
+getStencilReadOnlyUnsafe :: (MonadDOM m, HasCallStack) => GPURenderBundleEncoderDescriptor -> m Bool
+getStencilReadOnlyUnsafe self = liftDOM ((((self ^. js "stencilReadOnly") >>= 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 (((self ^. js "stencilReadOnly") >>= valToBool))
diff --git a/src/JSDOM/Generated/GPURenderCommandsMixin.hs b/src/JSDOM/Generated/GPURenderCommandsMixin.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPURenderCommandsMixin.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPURenderCommandsMixin
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toGPURenderCommandsMixin self) ^. jsf "draw" [toJSVal vertexCount, P.maybe (P.return jsUndefined) toJSVal instanceCount, P.maybe (P.return jsUndefined) toJSVal firstVertex, P.maybe (P.return jsUndefined) toJSVal firstInstance]))
+
+-- | <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 ((Types.toGPURenderCommandsMixin self) ^. jsf "drawIndexed" [toJSVal indexCount, P.maybe (P.return jsUndefined) toJSVal instanceCount, P.maybe (P.return jsUndefined) toJSVal firstIndex, P.maybe (P.return jsUndefined) toJSVal baseVertex, P.maybe (P.return jsUndefined) toJSVal firstInstance]))
+
+-- | <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 ((Types.toGPURenderCommandsMixin self) ^. jsf "drawIndexedIndirect" [toJSVal indirectBuffer, toJSVal indirectOffset]))
+
+-- | <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 ((Types.toGPURenderCommandsMixin self) ^. jsf "drawIndirect" [toJSVal indirectBuffer, toJSVal indirectOffset]))
+
+-- | <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 ((Types.toGPURenderCommandsMixin self) ^. jsf "setIndexBuffer" [toJSVal buffer, toJSVal indexFormat, P.maybe (P.return jsUndefined) toJSVal offset, P.maybe (P.return jsUndefined) toJSVal size]))
+
+-- | <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 ((Types.toGPURenderCommandsMixin self) ^. jsf "setPipeline" [toJSVal pipeline]))
+
+-- | <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 ((Types.toGPURenderCommandsMixin self) ^. jsf "setVertexBuffer" [toJSVal slot, toJSVal buffer, P.maybe (P.return jsUndefined) toJSVal offset, P.maybe (P.return jsUndefined) toJSVal size]))
diff --git a/src/JSDOM/Generated/GPURenderPassColorAttachment.hs b/src/JSDOM/Generated/GPURenderPassColorAttachment.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPURenderPassColorAttachment.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPURenderPassColorAttachment
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurenderpasscolorattachment GPURenderPassColorAttachment specification>
+newGPURenderPassColorAttachment :: (MonadDOM m, IsGPUTextureOrGPUTextureView view) => view -> GPULoadOp -> GPUStoreOp -> m GPURenderPassColorAttachment
+newGPURenderPassColorAttachment view loadOp storeOp = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "view" (toJSVal view)) P.>> (o ^. jss "loadOp" (toJSVal loadOp)) P.>> (o ^. jss "storeOp" (toJSVal storeOp)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-view GPURenderPassColorAttachment.view specification>
+setView :: (MonadDOM m, IsGPUTextureOrGPUTextureView val) => GPURenderPassColorAttachment -> val -> m ()
+setView self val = liftDOM (void (self ^. jss "view" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-view GPURenderPassColorAttachment.view specification>
+getView :: (MonadDOM m) => GPURenderPassColorAttachment -> m GPUTextureOrGPUTextureView
+getView self = liftDOM (((self ^. js "view") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-depthslice GPURenderPassColorAttachment.depthSlice specification>
+setDepthSlice :: (MonadDOM m) => GPURenderPassColorAttachment -> Word -> m ()
+setDepthSlice self val = liftDOM (void (self ^. jss "depthSlice" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-depthslice GPURenderPassColorAttachment.depthSlice specification>
+getDepthSlice :: (MonadDOM m) => GPURenderPassColorAttachment -> m (Maybe Word)
+getDepthSlice self = liftDOM (((self ^. js "depthSlice") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-depthslice GPURenderPassColorAttachment.depthSlice specification>
+getDepthSliceUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassColorAttachment -> m Word
+getDepthSliceUnsafe self = liftDOM ((((self ^. js "depthSlice") >>= 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 ((P.round <$> ((self ^. js "depthSlice") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-resolvetarget GPURenderPassColorAttachment.resolveTarget specification>
+setResolveTarget :: (MonadDOM m, IsGPUTextureOrGPUTextureView val) => GPURenderPassColorAttachment -> val -> m ()
+setResolveTarget self val = liftDOM (void (self ^. jss "resolveTarget" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-resolvetarget GPURenderPassColorAttachment.resolveTarget specification>
+getResolveTarget :: (MonadDOM m) => GPURenderPassColorAttachment -> m (Maybe GPUTextureOrGPUTextureView)
+getResolveTarget self = liftDOM (((self ^. js "resolveTarget") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-resolvetarget GPURenderPassColorAttachment.resolveTarget specification>
+getResolveTargetUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassColorAttachment -> m GPUTextureOrGPUTextureView
+getResolveTargetUnsafe self = liftDOM ((((self ^. js "resolveTarget") >>= 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 (((self ^. js "resolveTarget") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-clearvalue GPURenderPassColorAttachment.clearValue specification>
+setClearValue :: (MonadDOM m, IsGPUColor val) => GPURenderPassColorAttachment -> val -> m ()
+setClearValue self val = liftDOM (void (self ^. jss "clearValue" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-clearvalue GPURenderPassColorAttachment.clearValue specification>
+getClearValue :: (MonadDOM m) => GPURenderPassColorAttachment -> m (Maybe GPUColor)
+getClearValue self = liftDOM (((self ^. js "clearValue") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-clearvalue GPURenderPassColorAttachment.clearValue specification>
+getClearValueUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassColorAttachment -> m GPUColor
+getClearValueUnsafe self = liftDOM ((((self ^. js "clearValue") >>= 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 (((self ^. js "clearValue") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-loadop GPURenderPassColorAttachment.loadOp specification>
+setLoadOp :: (MonadDOM m) => GPURenderPassColorAttachment -> GPULoadOp -> m ()
+setLoadOp self val = liftDOM (void (self ^. jss "loadOp" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-loadop GPURenderPassColorAttachment.loadOp specification>
+getLoadOp :: (MonadDOM m) => GPURenderPassColorAttachment -> m GPULoadOp
+getLoadOp self = liftDOM (((self ^. js "loadOp") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-storeop GPURenderPassColorAttachment.storeOp specification>
+setStoreOp :: (MonadDOM m) => GPURenderPassColorAttachment -> GPUStoreOp -> m ()
+setStoreOp self val = liftDOM (void (self ^. jss "storeOp" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasscolorattachment-storeop GPURenderPassColorAttachment.storeOp specification>
+getStoreOp :: (MonadDOM m) => GPURenderPassColorAttachment -> m GPUStoreOp
+getStoreOp self = liftDOM (((self ^. js "storeOp") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPURenderPassDepthStencilAttachment.hs b/src/JSDOM/Generated/GPURenderPassDepthStencilAttachment.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPURenderPassDepthStencilAttachment.hs
@@ -0,0 +1,156 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPURenderPassDepthStencilAttachment
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurenderpassdepthstencilattachment GPURenderPassDepthStencilAttachment specification>
+newGPURenderPassDepthStencilAttachment :: (MonadDOM m, IsGPUTextureOrGPUTextureView view) => view -> m GPURenderPassDepthStencilAttachment
+newGPURenderPassDepthStencilAttachment view = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "view" (toJSVal view)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-view GPURenderPassDepthStencilAttachment.view specification>
+setView :: (MonadDOM m, IsGPUTextureOrGPUTextureView val) => GPURenderPassDepthStencilAttachment -> val -> m ()
+setView self val = liftDOM (void (self ^. jss "view" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-view GPURenderPassDepthStencilAttachment.view specification>
+getView :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m GPUTextureOrGPUTextureView
+getView self = liftDOM (((self ^. js "view") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthclearvalue GPURenderPassDepthStencilAttachment.depthClearValue specification>
+setDepthClearValue :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> Float -> m ()
+setDepthClearValue self val = liftDOM (void (self ^. jss "depthClearValue" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthclearvalue GPURenderPassDepthStencilAttachment.depthClearValue specification>
+getDepthClearValue :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m (Maybe Float)
+getDepthClearValue self = liftDOM (((self ^. js "depthClearValue") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthclearvalue GPURenderPassDepthStencilAttachment.depthClearValue specification>
+getDepthClearValueUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDepthStencilAttachment -> m Float
+getDepthClearValueUnsafe self = liftDOM ((((self ^. js "depthClearValue") >>= 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 ((P.realToFrac <$> ((self ^. js "depthClearValue") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthloadop GPURenderPassDepthStencilAttachment.depthLoadOp specification>
+setDepthLoadOp :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> GPULoadOp -> m ()
+setDepthLoadOp self val = liftDOM (void (self ^. jss "depthLoadOp" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthloadop GPURenderPassDepthStencilAttachment.depthLoadOp specification>
+getDepthLoadOp :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m (Maybe GPULoadOp)
+getDepthLoadOp self = liftDOM (((self ^. js "depthLoadOp") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthloadop GPURenderPassDepthStencilAttachment.depthLoadOp specification>
+getDepthLoadOpUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDepthStencilAttachment -> m GPULoadOp
+getDepthLoadOpUnsafe self = liftDOM ((((self ^. js "depthLoadOp") >>= 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 (((self ^. js "depthLoadOp") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthstoreop GPURenderPassDepthStencilAttachment.depthStoreOp specification>
+setDepthStoreOp :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> GPUStoreOp -> m ()
+setDepthStoreOp self val = liftDOM (void (self ^. jss "depthStoreOp" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthstoreop GPURenderPassDepthStencilAttachment.depthStoreOp specification>
+getDepthStoreOp :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m (Maybe GPUStoreOp)
+getDepthStoreOp self = liftDOM (((self ^. js "depthStoreOp") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthstoreop GPURenderPassDepthStencilAttachment.depthStoreOp specification>
+getDepthStoreOpUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDepthStencilAttachment -> m GPUStoreOp
+getDepthStoreOpUnsafe self = liftDOM ((((self ^. js "depthStoreOp") >>= 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 (((self ^. js "depthStoreOp") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthreadonly GPURenderPassDepthStencilAttachment.depthReadOnly specification>
+setDepthReadOnly :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> Bool -> m ()
+setDepthReadOnly self val = liftDOM (void (self ^. jss "depthReadOnly" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthreadonly GPURenderPassDepthStencilAttachment.depthReadOnly specification>
+getDepthReadOnly :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m (Maybe Bool)
+getDepthReadOnly self = liftDOM (((self ^. js "depthReadOnly") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-depthreadonly GPURenderPassDepthStencilAttachment.depthReadOnly specification>
+getDepthReadOnlyUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDepthStencilAttachment -> m Bool
+getDepthReadOnlyUnsafe self = liftDOM ((((self ^. js "depthReadOnly") >>= 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 (((self ^. js "depthReadOnly") >>= valToBool))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilclearvalue GPURenderPassDepthStencilAttachment.stencilClearValue specification>
+setStencilClearValue :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> Word -> m ()
+setStencilClearValue self val = liftDOM (void (self ^. jss "stencilClearValue" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilclearvalue GPURenderPassDepthStencilAttachment.stencilClearValue specification>
+getStencilClearValue :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m (Maybe Word)
+getStencilClearValue self = liftDOM (((self ^. js "stencilClearValue") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilclearvalue GPURenderPassDepthStencilAttachment.stencilClearValue specification>
+getStencilClearValueUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDepthStencilAttachment -> m Word
+getStencilClearValueUnsafe self = liftDOM ((((self ^. js "stencilClearValue") >>= 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 ((P.round <$> ((self ^. js "stencilClearValue") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilloadop GPURenderPassDepthStencilAttachment.stencilLoadOp specification>
+setStencilLoadOp :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> GPULoadOp -> m ()
+setStencilLoadOp self val = liftDOM (void (self ^. jss "stencilLoadOp" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilloadop GPURenderPassDepthStencilAttachment.stencilLoadOp specification>
+getStencilLoadOp :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m (Maybe GPULoadOp)
+getStencilLoadOp self = liftDOM (((self ^. js "stencilLoadOp") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilloadop GPURenderPassDepthStencilAttachment.stencilLoadOp specification>
+getStencilLoadOpUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDepthStencilAttachment -> m GPULoadOp
+getStencilLoadOpUnsafe self = liftDOM ((((self ^. js "stencilLoadOp") >>= 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 (((self ^. js "stencilLoadOp") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilstoreop GPURenderPassDepthStencilAttachment.stencilStoreOp specification>
+setStencilStoreOp :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> GPUStoreOp -> m ()
+setStencilStoreOp self val = liftDOM (void (self ^. jss "stencilStoreOp" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilstoreop GPURenderPassDepthStencilAttachment.stencilStoreOp specification>
+getStencilStoreOp :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m (Maybe GPUStoreOp)
+getStencilStoreOp self = liftDOM (((self ^. js "stencilStoreOp") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilstoreop GPURenderPassDepthStencilAttachment.stencilStoreOp specification>
+getStencilStoreOpUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDepthStencilAttachment -> m GPUStoreOp
+getStencilStoreOpUnsafe self = liftDOM ((((self ^. js "stencilStoreOp") >>= 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 (((self ^. js "stencilStoreOp") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilreadonly GPURenderPassDepthStencilAttachment.stencilReadOnly specification>
+setStencilReadOnly :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> Bool -> m ()
+setStencilReadOnly self val = liftDOM (void (self ^. jss "stencilReadOnly" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilreadonly GPURenderPassDepthStencilAttachment.stencilReadOnly specification>
+getStencilReadOnly :: (MonadDOM m) => GPURenderPassDepthStencilAttachment -> m (Maybe Bool)
+getStencilReadOnly self = liftDOM (((self ^. js "stencilReadOnly") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdepthstencilattachment-stencilreadonly GPURenderPassDepthStencilAttachment.stencilReadOnly specification>
+getStencilReadOnlyUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDepthStencilAttachment -> m Bool
+getStencilReadOnlyUnsafe self = liftDOM ((((self ^. js "stencilReadOnly") >>= 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 (((self ^. js "stencilReadOnly") >>= valToBool))
diff --git a/src/JSDOM/Generated/GPURenderPassDescriptor.hs b/src/JSDOM/Generated/GPURenderPassDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPURenderPassDescriptor.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPURenderPassDescriptor
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurenderpassdescriptor GPURenderPassDescriptor specification>
+newGPURenderPassDescriptor :: (MonadDOM m) => [Maybe GPURenderPassColorAttachment] -> m GPURenderPassDescriptor
+newGPURenderPassDescriptor colorAttachments = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "colorAttachments" (toJSVal colorAttachments)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-colorattachments GPURenderPassDescriptor.colorAttachments specification>
+setColorAttachments :: (MonadDOM m) => GPURenderPassDescriptor -> [Maybe GPURenderPassColorAttachment] -> m ()
+setColorAttachments self val = liftDOM (void (self ^. jss "colorAttachments" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-colorattachments GPURenderPassDescriptor.colorAttachments specification>
+getColorAttachments :: (MonadDOM m) => GPURenderPassDescriptor -> m [Maybe GPURenderPassColorAttachment]
+getColorAttachments self = liftDOM (((self ^. js "colorAttachments") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-depthstencilattachment GPURenderPassDescriptor.depthStencilAttachment specification>
+setDepthStencilAttachment :: (MonadDOM m) => GPURenderPassDescriptor -> GPURenderPassDepthStencilAttachment -> m ()
+setDepthStencilAttachment self val = liftDOM (void (self ^. jss "depthStencilAttachment" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-depthstencilattachment GPURenderPassDescriptor.depthStencilAttachment specification>
+getDepthStencilAttachment :: (MonadDOM m) => GPURenderPassDescriptor -> m (Maybe GPURenderPassDepthStencilAttachment)
+getDepthStencilAttachment self = liftDOM (((self ^. js "depthStencilAttachment") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-depthstencilattachment GPURenderPassDescriptor.depthStencilAttachment specification>
+getDepthStencilAttachmentUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDescriptor -> m GPURenderPassDepthStencilAttachment
+getDepthStencilAttachmentUnsafe self = liftDOM ((((self ^. js "depthStencilAttachment") >>= 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 (((self ^. js "depthStencilAttachment") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-occlusionqueryset GPURenderPassDescriptor.occlusionQuerySet specification>
+setOcclusionQuerySet :: (MonadDOM m) => GPURenderPassDescriptor -> GPUQuerySet -> m ()
+setOcclusionQuerySet self val = liftDOM (void (self ^. jss "occlusionQuerySet" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-occlusionqueryset GPURenderPassDescriptor.occlusionQuerySet specification>
+getOcclusionQuerySet :: (MonadDOM m) => GPURenderPassDescriptor -> m (Maybe GPUQuerySet)
+getOcclusionQuerySet self = liftDOM (((self ^. js "occlusionQuerySet") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-occlusionqueryset GPURenderPassDescriptor.occlusionQuerySet specification>
+getOcclusionQuerySetUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDescriptor -> m GPUQuerySet
+getOcclusionQuerySetUnsafe self = liftDOM ((((self ^. js "occlusionQuerySet") >>= 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 (((self ^. js "occlusionQuerySet") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-timestampwrites GPURenderPassDescriptor.timestampWrites specification>
+setTimestampWrites :: (MonadDOM m) => GPURenderPassDescriptor -> GPURenderPassTimestampWrites -> m ()
+setTimestampWrites self val = liftDOM (void (self ^. jss "timestampWrites" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-timestampwrites GPURenderPassDescriptor.timestampWrites specification>
+getTimestampWrites :: (MonadDOM m) => GPURenderPassDescriptor -> m (Maybe GPURenderPassTimestampWrites)
+getTimestampWrites self = liftDOM (((self ^. js "timestampWrites") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-timestampwrites GPURenderPassDescriptor.timestampWrites specification>
+getTimestampWritesUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDescriptor -> m GPURenderPassTimestampWrites
+getTimestampWritesUnsafe self = liftDOM ((((self ^. js "timestampWrites") >>= 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 (((self ^. js "timestampWrites") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-maxdrawcount GPURenderPassDescriptor.maxDrawCount specification>
+setMaxDrawCount :: (MonadDOM m) => GPURenderPassDescriptor -> Word53 -> m ()
+setMaxDrawCount self val = liftDOM (void (self ^. jss "maxDrawCount" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-maxdrawcount GPURenderPassDescriptor.maxDrawCount specification>
+getMaxDrawCount :: (MonadDOM m) => GPURenderPassDescriptor -> m (Maybe Word53)
+getMaxDrawCount self = liftDOM (((self ^. js "maxDrawCount") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpassdescriptor-maxdrawcount GPURenderPassDescriptor.maxDrawCount specification>
+getMaxDrawCountUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassDescriptor -> m Word53
+getMaxDrawCountUnsafe self = liftDOM ((((self ^. js "maxDrawCount") >>= 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 (((self ^. js "maxDrawCount") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPURenderPassEncoder.hs b/src/JSDOM/Generated/GPURenderPassEncoder.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPURenderPassEncoder.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPURenderPassEncoder
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderPassEncoder/beginOcclusionQuery MDN GPURenderPassEncoder.beginOcclusionQuery documentation>
+beginOcclusionQuery :: (MonadDOM m) => GPURenderPassEncoder -> Word -> m ()
+beginOcclusionQuery self queryIndex = liftDOM (void (self ^. jsf "beginOcclusionQuery" [toJSVal queryIndex]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderPassEncoder/end MDN GPURenderPassEncoder.end documentation>
+end :: (MonadDOM m) => GPURenderPassEncoder -> m ()
+end self = liftDOM (void (self ^. jsf "end" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderPassEncoder/endOcclusionQuery MDN GPURenderPassEncoder.endOcclusionQuery documentation>
+endOcclusionQuery :: (MonadDOM m) => GPURenderPassEncoder -> m ()
+endOcclusionQuery self = liftDOM (void (self ^. jsf "endOcclusionQuery" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderPassEncoder/executeBundles MDN GPURenderPassEncoder.executeBundles documentation>
+executeBundles :: (MonadDOM m) => GPURenderPassEncoder -> [GPURenderBundle] -> m ()
+executeBundles self bundles = liftDOM (void (self ^. jsf "executeBundles" [toJSVal bundles]))
+
+-- | <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 (self ^. jsf "setBlendConstant" [toJSVal color]))
+
+-- | <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 (self ^. jsf "setScissorRect" [toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPURenderPassEncoder/setStencilReference MDN GPURenderPassEncoder.setStencilReference documentation>
+setStencilReference :: (MonadDOM m) => GPURenderPassEncoder -> Word -> m ()
+setStencilReference self reference = liftDOM (void (self ^. jsf "setStencilReference" [toJSVal reference]))
+
+-- | <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 (self ^. jsf "setViewport" [toJSVal x, toJSVal y, toJSVal width, toJSVal height, toJSVal minDepth, toJSVal maxDepth]))
diff --git a/src/JSDOM/Generated/GPURenderPassLayout.hs b/src/JSDOM/Generated/GPURenderPassLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPURenderPassLayout.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPURenderPassLayout
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurenderpasslayout GPURenderPassLayout specification>
+newGPURenderPassLayout :: (MonadDOM m) => [Maybe GPUTextureFormat] -> m GPURenderPassLayout
+newGPURenderPassLayout colorFormats = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "colorFormats" (toJSVal colorFormats)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toGPURenderPassLayout self) ^. jss "colorFormats" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasslayout-colorformats GPURenderPassLayout.colorFormats specification>
+getColorFormats :: (MonadDOM m, IsGPURenderPassLayout self) => self -> m [Maybe GPUTextureFormat]
+getColorFormats self = liftDOM ((((Types.toGPURenderPassLayout self) ^. js "colorFormats") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasslayout-depthstencilformat GPURenderPassLayout.depthStencilFormat specification>
+setDepthStencilFormat :: (MonadDOM m, IsGPURenderPassLayout self) => self -> GPUTextureFormat -> m ()
+setDepthStencilFormat self val = liftDOM (void ((Types.toGPURenderPassLayout self) ^. jss "depthStencilFormat" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasslayout-depthstencilformat GPURenderPassLayout.depthStencilFormat specification>
+getDepthStencilFormat :: (MonadDOM m, IsGPURenderPassLayout self) => self -> m (Maybe GPUTextureFormat)
+getDepthStencilFormat self = liftDOM ((((Types.toGPURenderPassLayout self) ^. js "depthStencilFormat") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasslayout-depthstencilformat GPURenderPassLayout.depthStencilFormat specification>
+getDepthStencilFormatUnsafe :: (MonadDOM m, IsGPURenderPassLayout self, HasCallStack) => self -> m GPUTextureFormat
+getDepthStencilFormatUnsafe self = liftDOM (((((Types.toGPURenderPassLayout self) ^. js "depthStencilFormat") >>= 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 ((((Types.toGPURenderPassLayout self) ^. js "depthStencilFormat") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasslayout-samplecount GPURenderPassLayout.sampleCount specification>
+setSampleCount :: (MonadDOM m, IsGPURenderPassLayout self) => self -> Word -> m ()
+setSampleCount self val = liftDOM (void ((Types.toGPURenderPassLayout self) ^. jss "sampleCount" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasslayout-samplecount GPURenderPassLayout.sampleCount specification>
+getSampleCount :: (MonadDOM m, IsGPURenderPassLayout self) => self -> m (Maybe Word)
+getSampleCount self = liftDOM ((((Types.toGPURenderPassLayout self) ^. js "sampleCount") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasslayout-samplecount GPURenderPassLayout.sampleCount specification>
+getSampleCountUnsafe :: (MonadDOM m, IsGPURenderPassLayout self, HasCallStack) => self -> m Word
+getSampleCountUnsafe self = liftDOM (((((Types.toGPURenderPassLayout self) ^. js "sampleCount") >>= 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 ((P.round <$> (((Types.toGPURenderPassLayout self) ^. js "sampleCount") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/GPURenderPassTimestampWrites.hs b/src/JSDOM/Generated/GPURenderPassTimestampWrites.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPURenderPassTimestampWrites.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPURenderPassTimestampWrites
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurenderpasstimestampwrites GPURenderPassTimestampWrites specification>
+newGPURenderPassTimestampWrites :: (MonadDOM m) => GPUQuerySet -> m GPURenderPassTimestampWrites
+newGPURenderPassTimestampWrites querySet = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "querySet" (toJSVal querySet)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-queryset GPURenderPassTimestampWrites.querySet specification>
+setQuerySet :: (MonadDOM m) => GPURenderPassTimestampWrites -> GPUQuerySet -> m ()
+setQuerySet self val = liftDOM (void (self ^. jss "querySet" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-queryset GPURenderPassTimestampWrites.querySet specification>
+getQuerySet :: (MonadDOM m) => GPURenderPassTimestampWrites -> m GPUQuerySet
+getQuerySet self = liftDOM (((self ^. js "querySet") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-beginningofpasswriteindex GPURenderPassTimestampWrites.beginningOfPassWriteIndex specification>
+setBeginningOfPassWriteIndex :: (MonadDOM m) => GPURenderPassTimestampWrites -> Word -> m ()
+setBeginningOfPassWriteIndex self val = liftDOM (void (self ^. jss "beginningOfPassWriteIndex" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-beginningofpasswriteindex GPURenderPassTimestampWrites.beginningOfPassWriteIndex specification>
+getBeginningOfPassWriteIndex :: (MonadDOM m) => GPURenderPassTimestampWrites -> m (Maybe Word)
+getBeginningOfPassWriteIndex self = liftDOM (((self ^. js "beginningOfPassWriteIndex") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-beginningofpasswriteindex GPURenderPassTimestampWrites.beginningOfPassWriteIndex specification>
+getBeginningOfPassWriteIndexUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassTimestampWrites -> m Word
+getBeginningOfPassWriteIndexUnsafe self = liftDOM ((((self ^. js "beginningOfPassWriteIndex") >>= 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 ((P.round <$> ((self ^. js "beginningOfPassWriteIndex") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-endofpasswriteindex GPURenderPassTimestampWrites.endOfPassWriteIndex specification>
+setEndOfPassWriteIndex :: (MonadDOM m) => GPURenderPassTimestampWrites -> Word -> m ()
+setEndOfPassWriteIndex self val = liftDOM (void (self ^. jss "endOfPassWriteIndex" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-endofpasswriteindex GPURenderPassTimestampWrites.endOfPassWriteIndex specification>
+getEndOfPassWriteIndex :: (MonadDOM m) => GPURenderPassTimestampWrites -> m (Maybe Word)
+getEndOfPassWriteIndex self = liftDOM (((self ^. js "endOfPassWriteIndex") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpasstimestampwrites-endofpasswriteindex GPURenderPassTimestampWrites.endOfPassWriteIndex specification>
+getEndOfPassWriteIndexUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPassTimestampWrites -> m Word
+getEndOfPassWriteIndexUnsafe self = liftDOM ((((self ^. js "endOfPassWriteIndex") >>= 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 ((P.round <$> ((self ^. js "endOfPassWriteIndex") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/GPURenderPipeline.hs b/src/JSDOM/Generated/GPURenderPipeline.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPURenderPipeline.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPURenderPipeline
+       (GPURenderPipeline(..), gTypeGPURenderPipeline)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/GPURenderPipelineDescriptor.hs b/src/JSDOM/Generated/GPURenderPipelineDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPURenderPipelineDescriptor.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPURenderPipelineDescriptor
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurenderpipelinedescriptor GPURenderPipelineDescriptor specification>
+newGPURenderPipelineDescriptor :: (MonadDOM m, IsGPUPipelineLayoutOrGPUAutoLayoutMode layout) => layout -> GPUVertexState -> m GPURenderPipelineDescriptor
+newGPURenderPipelineDescriptor layout vertex = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "layout" (toJSVal layout)) P.>> (o ^. jss "vertex" (toJSVal vertex)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-vertex GPURenderPipelineDescriptor.vertex specification>
+setVertex :: (MonadDOM m) => GPURenderPipelineDescriptor -> GPUVertexState -> m ()
+setVertex self val = liftDOM (void (self ^. jss "vertex" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-vertex GPURenderPipelineDescriptor.vertex specification>
+getVertex :: (MonadDOM m) => GPURenderPipelineDescriptor -> m GPUVertexState
+getVertex self = liftDOM (((self ^. js "vertex") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-primitive GPURenderPipelineDescriptor.primitive specification>
+setPrimitive :: (MonadDOM m) => GPURenderPipelineDescriptor -> GPUPrimitiveState -> m ()
+setPrimitive self val = liftDOM (void (self ^. jss "primitive" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-primitive GPURenderPipelineDescriptor.primitive specification>
+getPrimitive :: (MonadDOM m) => GPURenderPipelineDescriptor -> m (Maybe GPUPrimitiveState)
+getPrimitive self = liftDOM (((self ^. js "primitive") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-primitive GPURenderPipelineDescriptor.primitive specification>
+getPrimitiveUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPipelineDescriptor -> m GPUPrimitiveState
+getPrimitiveUnsafe self = liftDOM ((((self ^. js "primitive") >>= 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 (((self ^. js "primitive") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-depthstencil GPURenderPipelineDescriptor.depthStencil specification>
+setDepthStencil :: (MonadDOM m) => GPURenderPipelineDescriptor -> GPUDepthStencilState -> m ()
+setDepthStencil self val = liftDOM (void (self ^. jss "depthStencil" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-depthstencil GPURenderPipelineDescriptor.depthStencil specification>
+getDepthStencil :: (MonadDOM m) => GPURenderPipelineDescriptor -> m (Maybe GPUDepthStencilState)
+getDepthStencil self = liftDOM (((self ^. js "depthStencil") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-depthstencil GPURenderPipelineDescriptor.depthStencil specification>
+getDepthStencilUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPipelineDescriptor -> m GPUDepthStencilState
+getDepthStencilUnsafe self = liftDOM ((((self ^. js "depthStencil") >>= 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 (((self ^. js "depthStencil") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-multisample GPURenderPipelineDescriptor.multisample specification>
+setMultisample :: (MonadDOM m) => GPURenderPipelineDescriptor -> GPUMultisampleState -> m ()
+setMultisample self val = liftDOM (void (self ^. jss "multisample" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-multisample GPURenderPipelineDescriptor.multisample specification>
+getMultisample :: (MonadDOM m) => GPURenderPipelineDescriptor -> m (Maybe GPUMultisampleState)
+getMultisample self = liftDOM (((self ^. js "multisample") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-multisample GPURenderPipelineDescriptor.multisample specification>
+getMultisampleUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPipelineDescriptor -> m GPUMultisampleState
+getMultisampleUnsafe self = liftDOM ((((self ^. js "multisample") >>= 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 (((self ^. js "multisample") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-fragment GPURenderPipelineDescriptor.fragment specification>
+setFragment :: (MonadDOM m) => GPURenderPipelineDescriptor -> GPUFragmentState -> m ()
+setFragment self val = liftDOM (void (self ^. jss "fragment" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-fragment GPURenderPipelineDescriptor.fragment specification>
+getFragment :: (MonadDOM m) => GPURenderPipelineDescriptor -> m (Maybe GPUFragmentState)
+getFragment self = liftDOM (((self ^. js "fragment") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurenderpipelinedescriptor-fragment GPURenderPipelineDescriptor.fragment specification>
+getFragmentUnsafe :: (MonadDOM m, HasCallStack) => GPURenderPipelineDescriptor -> m GPUFragmentState
+getFragmentUnsafe self = liftDOM ((((self ^. js "fragment") >>= 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 (((self ^. js "fragment") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPURequestAdapterOptions.hs b/src/JSDOM/Generated/GPURequestAdapterOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPURequestAdapterOptions.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPURequestAdapterOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpurequestadapteroptions GPURequestAdapterOptions specification>
+newGPURequestAdapterOptions :: (MonadDOM m) => m GPURequestAdapterOptions
+newGPURequestAdapterOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-featurelevel GPURequestAdapterOptions.featureLevel specification>
+setFeatureLevel :: (MonadDOM m, ToJSString val) => GPURequestAdapterOptions -> val -> m ()
+setFeatureLevel self val = liftDOM (void (self ^. jss "featureLevel" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-featurelevel GPURequestAdapterOptions.featureLevel specification>
+getFeatureLevel :: (MonadDOM m, FromJSString result) => GPURequestAdapterOptions -> m (Maybe result)
+getFeatureLevel self = liftDOM (((self ^. js "featureLevel") >>= fromMaybeJSString))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-featurelevel GPURequestAdapterOptions.featureLevel specification>
+getFeatureLevelUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => GPURequestAdapterOptions -> m result
+getFeatureLevelUnsafe self = liftDOM ((((self ^. js "featureLevel") >>= fromMaybeJSString) >>= 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 (((self ^. js "featureLevel") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-powerpreference GPURequestAdapterOptions.powerPreference specification>
+setPowerPreference :: (MonadDOM m) => GPURequestAdapterOptions -> GPUPowerPreference -> m ()
+setPowerPreference self val = liftDOM (void (self ^. jss "powerPreference" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-powerpreference GPURequestAdapterOptions.powerPreference specification>
+getPowerPreference :: (MonadDOM m) => GPURequestAdapterOptions -> m (Maybe GPUPowerPreference)
+getPowerPreference self = liftDOM (((self ^. js "powerPreference") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-powerpreference GPURequestAdapterOptions.powerPreference specification>
+getPowerPreferenceUnsafe :: (MonadDOM m, HasCallStack) => GPURequestAdapterOptions -> m GPUPowerPreference
+getPowerPreferenceUnsafe self = liftDOM ((((self ^. js "powerPreference") >>= 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 (((self ^. js "powerPreference") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-forcefallbackadapter GPURequestAdapterOptions.forceFallbackAdapter specification>
+setForceFallbackAdapter :: (MonadDOM m) => GPURequestAdapterOptions -> Bool -> m ()
+setForceFallbackAdapter self val = liftDOM (void (self ^. jss "forceFallbackAdapter" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-forcefallbackadapter GPURequestAdapterOptions.forceFallbackAdapter specification>
+getForceFallbackAdapter :: (MonadDOM m) => GPURequestAdapterOptions -> m (Maybe Bool)
+getForceFallbackAdapter self = liftDOM (((self ^. js "forceFallbackAdapter") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-forcefallbackadapter GPURequestAdapterOptions.forceFallbackAdapter specification>
+getForceFallbackAdapterUnsafe :: (MonadDOM m, HasCallStack) => GPURequestAdapterOptions -> m Bool
+getForceFallbackAdapterUnsafe self = liftDOM ((((self ^. js "forceFallbackAdapter") >>= 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 (((self ^. js "forceFallbackAdapter") >>= valToBool))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-xrcompatible GPURequestAdapterOptions.xrCompatible specification>
+setXrCompatible :: (MonadDOM m) => GPURequestAdapterOptions -> Bool -> m ()
+setXrCompatible self val = liftDOM (void (self ^. jss "xrCompatible" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-xrcompatible GPURequestAdapterOptions.xrCompatible specification>
+getXrCompatible :: (MonadDOM m) => GPURequestAdapterOptions -> m (Maybe Bool)
+getXrCompatible self = liftDOM (((self ^. js "xrCompatible") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpurequestadapteroptions-xrcompatible GPURequestAdapterOptions.xrCompatible specification>
+getXrCompatibleUnsafe :: (MonadDOM m, HasCallStack) => GPURequestAdapterOptions -> m Bool
+getXrCompatibleUnsafe self = liftDOM ((((self ^. js "xrCompatible") >>= 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 (((self ^. js "xrCompatible") >>= valToBool))
diff --git a/src/JSDOM/Generated/GPUSampler.hs b/src/JSDOM/Generated/GPUSampler.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUSampler.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUSampler
+       (GPUSampler(..), gTypeGPUSampler)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/GPUSamplerBindingLayout.hs b/src/JSDOM/Generated/GPUSamplerBindingLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUSamplerBindingLayout.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUSamplerBindingLayout
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpusamplerbindinglayout GPUSamplerBindingLayout specification>
+newGPUSamplerBindingLayout :: (MonadDOM m) => m GPUSamplerBindingLayout
+newGPUSamplerBindingLayout = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerbindinglayout-type GPUSamplerBindingLayout.type specification>
+setType :: (MonadDOM m) => GPUSamplerBindingLayout -> GPUSamplerBindingType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerbindinglayout-type GPUSamplerBindingLayout.type specification>
+getType :: (MonadDOM m) => GPUSamplerBindingLayout -> m (Maybe GPUSamplerBindingType)
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerbindinglayout-type GPUSamplerBindingLayout.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerBindingLayout -> m GPUSamplerBindingType
+getTypeUnsafe self = liftDOM ((((self ^. js "type") >>= 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 (((self ^. js "type") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUSamplerDescriptor.hs b/src/JSDOM/Generated/GPUSamplerDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUSamplerDescriptor.hs
@@ -0,0 +1,180 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUSamplerDescriptor
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpusamplerdescriptor GPUSamplerDescriptor specification>
+newGPUSamplerDescriptor :: (MonadDOM m) => m GPUSamplerDescriptor
+newGPUSamplerDescriptor = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodeu GPUSamplerDescriptor.addressModeU specification>
+setAddressModeU :: (MonadDOM m) => GPUSamplerDescriptor -> GPUAddressMode -> m ()
+setAddressModeU self val = liftDOM (void (self ^. jss "addressModeU" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodeu GPUSamplerDescriptor.addressModeU specification>
+getAddressModeU :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe GPUAddressMode)
+getAddressModeU self = liftDOM (((self ^. js "addressModeU") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodeu GPUSamplerDescriptor.addressModeU specification>
+getAddressModeUUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m GPUAddressMode
+getAddressModeUUnsafe self = liftDOM ((((self ^. js "addressModeU") >>= 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 (((self ^. js "addressModeU") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodev GPUSamplerDescriptor.addressModeV specification>
+setAddressModeV :: (MonadDOM m) => GPUSamplerDescriptor -> GPUAddressMode -> m ()
+setAddressModeV self val = liftDOM (void (self ^. jss "addressModeV" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodev GPUSamplerDescriptor.addressModeV specification>
+getAddressModeV :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe GPUAddressMode)
+getAddressModeV self = liftDOM (((self ^. js "addressModeV") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodev GPUSamplerDescriptor.addressModeV specification>
+getAddressModeVUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m GPUAddressMode
+getAddressModeVUnsafe self = liftDOM ((((self ^. js "addressModeV") >>= 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 (((self ^. js "addressModeV") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodew GPUSamplerDescriptor.addressModeW specification>
+setAddressModeW :: (MonadDOM m) => GPUSamplerDescriptor -> GPUAddressMode -> m ()
+setAddressModeW self val = liftDOM (void (self ^. jss "addressModeW" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodew GPUSamplerDescriptor.addressModeW specification>
+getAddressModeW :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe GPUAddressMode)
+getAddressModeW self = liftDOM (((self ^. js "addressModeW") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-addressmodew GPUSamplerDescriptor.addressModeW specification>
+getAddressModeWUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m GPUAddressMode
+getAddressModeWUnsafe self = liftDOM ((((self ^. js "addressModeW") >>= 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 (((self ^. js "addressModeW") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-magfilter GPUSamplerDescriptor.magFilter specification>
+setMagFilter :: (MonadDOM m) => GPUSamplerDescriptor -> GPUFilterMode -> m ()
+setMagFilter self val = liftDOM (void (self ^. jss "magFilter" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-magfilter GPUSamplerDescriptor.magFilter specification>
+getMagFilter :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe GPUFilterMode)
+getMagFilter self = liftDOM (((self ^. js "magFilter") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-magfilter GPUSamplerDescriptor.magFilter specification>
+getMagFilterUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m GPUFilterMode
+getMagFilterUnsafe self = liftDOM ((((self ^. js "magFilter") >>= 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 (((self ^. js "magFilter") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-minfilter GPUSamplerDescriptor.minFilter specification>
+setMinFilter :: (MonadDOM m) => GPUSamplerDescriptor -> GPUFilterMode -> m ()
+setMinFilter self val = liftDOM (void (self ^. jss "minFilter" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-minfilter GPUSamplerDescriptor.minFilter specification>
+getMinFilter :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe GPUFilterMode)
+getMinFilter self = liftDOM (((self ^. js "minFilter") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-minfilter GPUSamplerDescriptor.minFilter specification>
+getMinFilterUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m GPUFilterMode
+getMinFilterUnsafe self = liftDOM ((((self ^. js "minFilter") >>= 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 (((self ^. js "minFilter") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-mipmapfilter GPUSamplerDescriptor.mipmapFilter specification>
+setMipmapFilter :: (MonadDOM m) => GPUSamplerDescriptor -> GPUMipmapFilterMode -> m ()
+setMipmapFilter self val = liftDOM (void (self ^. jss "mipmapFilter" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-mipmapfilter GPUSamplerDescriptor.mipmapFilter specification>
+getMipmapFilter :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe GPUMipmapFilterMode)
+getMipmapFilter self = liftDOM (((self ^. js "mipmapFilter") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-mipmapfilter GPUSamplerDescriptor.mipmapFilter specification>
+getMipmapFilterUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m GPUMipmapFilterMode
+getMipmapFilterUnsafe self = liftDOM ((((self ^. js "mipmapFilter") >>= 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 (((self ^. js "mipmapFilter") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-lodminclamp GPUSamplerDescriptor.lodMinClamp specification>
+setLodMinClamp :: (MonadDOM m) => GPUSamplerDescriptor -> Float -> m ()
+setLodMinClamp self val = liftDOM (void (self ^. jss "lodMinClamp" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-lodminclamp GPUSamplerDescriptor.lodMinClamp specification>
+getLodMinClamp :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe Float)
+getLodMinClamp self = liftDOM (((self ^. js "lodMinClamp") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-lodminclamp GPUSamplerDescriptor.lodMinClamp specification>
+getLodMinClampUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m Float
+getLodMinClampUnsafe self = liftDOM ((((self ^. js "lodMinClamp") >>= 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 ((P.realToFrac <$> ((self ^. js "lodMinClamp") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-lodmaxclamp GPUSamplerDescriptor.lodMaxClamp specification>
+setLodMaxClamp :: (MonadDOM m) => GPUSamplerDescriptor -> Float -> m ()
+setLodMaxClamp self val = liftDOM (void (self ^. jss "lodMaxClamp" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-lodmaxclamp GPUSamplerDescriptor.lodMaxClamp specification>
+getLodMaxClamp :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe Float)
+getLodMaxClamp self = liftDOM (((self ^. js "lodMaxClamp") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-lodmaxclamp GPUSamplerDescriptor.lodMaxClamp specification>
+getLodMaxClampUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m Float
+getLodMaxClampUnsafe self = liftDOM ((((self ^. js "lodMaxClamp") >>= 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 ((P.realToFrac <$> ((self ^. js "lodMaxClamp") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-compare GPUSamplerDescriptor.compare specification>
+setCompare :: (MonadDOM m) => GPUSamplerDescriptor -> GPUCompareFunction -> m ()
+setCompare self val = liftDOM (void (self ^. jss "compare" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-compare GPUSamplerDescriptor.compare specification>
+getCompare :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe GPUCompareFunction)
+getCompare self = liftDOM (((self ^. js "compare") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-compare GPUSamplerDescriptor.compare specification>
+getCompareUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m GPUCompareFunction
+getCompareUnsafe self = liftDOM ((((self ^. js "compare") >>= 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 (((self ^. js "compare") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-maxanisotropy GPUSamplerDescriptor.maxAnisotropy specification>
+setMaxAnisotropy :: (MonadDOM m) => GPUSamplerDescriptor -> Word -> m ()
+setMaxAnisotropy self val = liftDOM (void (self ^. jss "maxAnisotropy" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-maxanisotropy GPUSamplerDescriptor.maxAnisotropy specification>
+getMaxAnisotropy :: (MonadDOM m) => GPUSamplerDescriptor -> m (Maybe Word)
+getMaxAnisotropy self = liftDOM (((self ^. js "maxAnisotropy") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusamplerdescriptor-maxanisotropy GPUSamplerDescriptor.maxAnisotropy specification>
+getMaxAnisotropyUnsafe :: (MonadDOM m, HasCallStack) => GPUSamplerDescriptor -> m Word
+getMaxAnisotropyUnsafe self = liftDOM ((((self ^. js "maxAnisotropy") >>= 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 ((P.round <$> ((self ^. js "maxAnisotropy") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/GPUShaderModule.hs b/src/JSDOM/Generated/GPUShaderModule.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUShaderModule.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUShaderModule
+       (getCompilationInfo, getCompilationInfo_, GPUShaderModule(..), gTypeGPUShaderModule)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUShaderModule/getCompilationInfo MDN GPUShaderModule.getCompilationInfo documentation>
+getCompilationInfo :: (MonadDOM m) => GPUShaderModule -> m GPUCompilationInfo
+getCompilationInfo self = liftDOM (((((self ^. jsf "getCompilationInfo" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUShaderModule/getCompilationInfo MDN GPUShaderModule.getCompilationInfo documentation>
+getCompilationInfo_ :: (MonadDOM m) => GPUShaderModule -> m ()
+getCompilationInfo_ self = liftDOM (void (((self ^. jsf "getCompilationInfo" ()) >>= readPromise)))
diff --git a/src/JSDOM/Generated/GPUShaderModuleCompilationHint.hs b/src/JSDOM/Generated/GPUShaderModuleCompilationHint.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUShaderModuleCompilationHint.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUShaderModuleCompilationHint
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpushadermodulecompilationhint GPUShaderModuleCompilationHint specification>
+newGPUShaderModuleCompilationHint :: (MonadDOM m, ToJSString entryPoint) => entryPoint -> m GPUShaderModuleCompilationHint
+newGPUShaderModuleCompilationHint entryPoint = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "entryPoint" (toJSVal entryPoint)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermodulecompilationhint-entrypoint GPUShaderModuleCompilationHint.entryPoint specification>
+setEntryPoint :: (MonadDOM m, ToJSString val) => GPUShaderModuleCompilationHint -> val -> m ()
+setEntryPoint self val = liftDOM (void (self ^. jss "entryPoint" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermodulecompilationhint-entrypoint GPUShaderModuleCompilationHint.entryPoint specification>
+getEntryPoint :: (MonadDOM m, FromJSString result) => GPUShaderModuleCompilationHint -> m result
+getEntryPoint self = liftDOM (((self ^. js "entryPoint") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermodulecompilationhint-layout GPUShaderModuleCompilationHint.layout specification>
+setLayout :: (MonadDOM m, IsGPUPipelineLayoutOrGPUAutoLayoutMode val) => GPUShaderModuleCompilationHint -> val -> m ()
+setLayout self val = liftDOM (void (self ^. jss "layout" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermodulecompilationhint-layout GPUShaderModuleCompilationHint.layout specification>
+getLayout :: (MonadDOM m) => GPUShaderModuleCompilationHint -> m (Maybe GPUPipelineLayoutOrGPUAutoLayoutMode)
+getLayout self = liftDOM (((self ^. js "layout") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermodulecompilationhint-layout GPUShaderModuleCompilationHint.layout specification>
+getLayoutUnsafe :: (MonadDOM m, HasCallStack) => GPUShaderModuleCompilationHint -> m GPUPipelineLayoutOrGPUAutoLayoutMode
+getLayoutUnsafe self = liftDOM ((((self ^. js "layout") >>= 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 (((self ^. js "layout") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUShaderModuleDescriptor.hs b/src/JSDOM/Generated/GPUShaderModuleDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUShaderModuleDescriptor.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUShaderModuleDescriptor
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpushadermoduledescriptor GPUShaderModuleDescriptor specification>
+newGPUShaderModuleDescriptor :: (MonadDOM m, ToJSString code) => code -> m GPUShaderModuleDescriptor
+newGPUShaderModuleDescriptor code = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "code" (toJSVal code)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermoduledescriptor-code GPUShaderModuleDescriptor.code specification>
+setCode :: (MonadDOM m, ToJSString val) => GPUShaderModuleDescriptor -> val -> m ()
+setCode self val = liftDOM (void (self ^. jss "code" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermoduledescriptor-code GPUShaderModuleDescriptor.code specification>
+getCode :: (MonadDOM m, FromJSString result) => GPUShaderModuleDescriptor -> m result
+getCode self = liftDOM (((self ^. js "code") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermoduledescriptor-compilationhints GPUShaderModuleDescriptor.compilationHints specification>
+setCompilationHints :: (MonadDOM m) => GPUShaderModuleDescriptor -> [GPUShaderModuleCompilationHint] -> m ()
+setCompilationHints self val = liftDOM (void (self ^. jss "compilationHints" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermoduledescriptor-compilationhints GPUShaderModuleDescriptor.compilationHints specification>
+getCompilationHints :: (MonadDOM m) => GPUShaderModuleDescriptor -> m (Maybe [GPUShaderModuleCompilationHint])
+getCompilationHints self = liftDOM (((self ^. js "compilationHints") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpushadermoduledescriptor-compilationhints GPUShaderModuleDescriptor.compilationHints specification>
+getCompilationHintsUnsafe :: (MonadDOM m, HasCallStack) => GPUShaderModuleDescriptor -> m [GPUShaderModuleCompilationHint]
+getCompilationHintsUnsafe self = liftDOM ((((self ^. js "compilationHints") >>= 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 (((self ^. js "compilationHints") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUStencilFaceState.hs b/src/JSDOM/Generated/GPUStencilFaceState.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUStencilFaceState.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUStencilFaceState
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpustencilfacestate GPUStencilFaceState specification>
+newGPUStencilFaceState :: (MonadDOM m) => m GPUStencilFaceState
+newGPUStencilFaceState = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-compare GPUStencilFaceState.compare specification>
+setCompare :: (MonadDOM m) => GPUStencilFaceState -> GPUCompareFunction -> m ()
+setCompare self val = liftDOM (void (self ^. jss "compare" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-compare GPUStencilFaceState.compare specification>
+getCompare :: (MonadDOM m) => GPUStencilFaceState -> m (Maybe GPUCompareFunction)
+getCompare self = liftDOM (((self ^. js "compare") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-compare GPUStencilFaceState.compare specification>
+getCompareUnsafe :: (MonadDOM m, HasCallStack) => GPUStencilFaceState -> m GPUCompareFunction
+getCompareUnsafe self = liftDOM ((((self ^. js "compare") >>= 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 (((self ^. js "compare") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-failop GPUStencilFaceState.failOp specification>
+setFailOp :: (MonadDOM m) => GPUStencilFaceState -> GPUStencilOperation -> m ()
+setFailOp self val = liftDOM (void (self ^. jss "failOp" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-failop GPUStencilFaceState.failOp specification>
+getFailOp :: (MonadDOM m) => GPUStencilFaceState -> m (Maybe GPUStencilOperation)
+getFailOp self = liftDOM (((self ^. js "failOp") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-failop GPUStencilFaceState.failOp specification>
+getFailOpUnsafe :: (MonadDOM m, HasCallStack) => GPUStencilFaceState -> m GPUStencilOperation
+getFailOpUnsafe self = liftDOM ((((self ^. js "failOp") >>= 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 (((self ^. js "failOp") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-depthfailop GPUStencilFaceState.depthFailOp specification>
+setDepthFailOp :: (MonadDOM m) => GPUStencilFaceState -> GPUStencilOperation -> m ()
+setDepthFailOp self val = liftDOM (void (self ^. jss "depthFailOp" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-depthfailop GPUStencilFaceState.depthFailOp specification>
+getDepthFailOp :: (MonadDOM m) => GPUStencilFaceState -> m (Maybe GPUStencilOperation)
+getDepthFailOp self = liftDOM (((self ^. js "depthFailOp") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-depthfailop GPUStencilFaceState.depthFailOp specification>
+getDepthFailOpUnsafe :: (MonadDOM m, HasCallStack) => GPUStencilFaceState -> m GPUStencilOperation
+getDepthFailOpUnsafe self = liftDOM ((((self ^. js "depthFailOp") >>= 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 (((self ^. js "depthFailOp") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-passop GPUStencilFaceState.passOp specification>
+setPassOp :: (MonadDOM m) => GPUStencilFaceState -> GPUStencilOperation -> m ()
+setPassOp self val = liftDOM (void (self ^. jss "passOp" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-passop GPUStencilFaceState.passOp specification>
+getPassOp :: (MonadDOM m) => GPUStencilFaceState -> m (Maybe GPUStencilOperation)
+getPassOp self = liftDOM (((self ^. js "passOp") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustencilfacestate-passop GPUStencilFaceState.passOp specification>
+getPassOpUnsafe :: (MonadDOM m, HasCallStack) => GPUStencilFaceState -> m GPUStencilOperation
+getPassOpUnsafe self = liftDOM ((((self ^. js "passOp") >>= 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 (((self ^. js "passOp") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUStorageTextureBindingLayout.hs b/src/JSDOM/Generated/GPUStorageTextureBindingLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUStorageTextureBindingLayout.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUStorageTextureBindingLayout
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpustoragetexturebindinglayout GPUStorageTextureBindingLayout specification>
+newGPUStorageTextureBindingLayout :: (MonadDOM m) => GPUTextureFormat -> m GPUStorageTextureBindingLayout
+newGPUStorageTextureBindingLayout format = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "format" (toJSVal format)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-access GPUStorageTextureBindingLayout.access specification>
+setAccess :: (MonadDOM m) => GPUStorageTextureBindingLayout -> GPUStorageTextureAccess -> m ()
+setAccess self val = liftDOM (void (self ^. jss "access" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-access GPUStorageTextureBindingLayout.access specification>
+getAccess :: (MonadDOM m) => GPUStorageTextureBindingLayout -> m (Maybe GPUStorageTextureAccess)
+getAccess self = liftDOM (((self ^. js "access") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-access GPUStorageTextureBindingLayout.access specification>
+getAccessUnsafe :: (MonadDOM m, HasCallStack) => GPUStorageTextureBindingLayout -> m GPUStorageTextureAccess
+getAccessUnsafe self = liftDOM ((((self ^. js "access") >>= 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 (((self ^. js "access") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-format GPUStorageTextureBindingLayout.format specification>
+setFormat :: (MonadDOM m) => GPUStorageTextureBindingLayout -> GPUTextureFormat -> m ()
+setFormat self val = liftDOM (void (self ^. jss "format" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-format GPUStorageTextureBindingLayout.format specification>
+getFormat :: (MonadDOM m) => GPUStorageTextureBindingLayout -> m GPUTextureFormat
+getFormat self = liftDOM (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-viewdimension GPUStorageTextureBindingLayout.viewDimension specification>
+setViewDimension :: (MonadDOM m) => GPUStorageTextureBindingLayout -> GPUTextureViewDimension -> m ()
+setViewDimension self val = liftDOM (void (self ^. jss "viewDimension" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-viewdimension GPUStorageTextureBindingLayout.viewDimension specification>
+getViewDimension :: (MonadDOM m) => GPUStorageTextureBindingLayout -> m (Maybe GPUTextureViewDimension)
+getViewDimension self = liftDOM (((self ^. js "viewDimension") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpustoragetexturebindinglayout-viewdimension GPUStorageTextureBindingLayout.viewDimension specification>
+getViewDimensionUnsafe :: (MonadDOM m, HasCallStack) => GPUStorageTextureBindingLayout -> m GPUTextureViewDimension
+getViewDimensionUnsafe self = liftDOM ((((self ^. js "viewDimension") >>= 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 (((self ^. js "viewDimension") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUSupportedFeatures.hs b/src/JSDOM/Generated/GPUSupportedFeatures.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUSupportedFeatures.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUSupportedFeatures
+       (GPUSupportedFeatures(..), gTypeGPUSupportedFeatures)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/GPUSupportedLimits.hs b/src/JSDOM/Generated/GPUSupportedLimits.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUSupportedLimits.hs
@@ -0,0 +1,156 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUSupportedLimits
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxTextureDimension1D documentation>
+getMaxTextureDimension1D :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxTextureDimension1D self = liftDOM ((P.round <$> ((self ^. js "maxTextureDimension1D") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxTextureDimension2D documentation>
+getMaxTextureDimension2D :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxTextureDimension2D self = liftDOM ((P.round <$> ((self ^. js "maxTextureDimension2D") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxTextureDimension3D documentation>
+getMaxTextureDimension3D :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxTextureDimension3D self = liftDOM ((P.round <$> ((self ^. js "maxTextureDimension3D") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxTextureArrayLayers documentation>
+getMaxTextureArrayLayers :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxTextureArrayLayers self = liftDOM ((P.round <$> ((self ^. js "maxTextureArrayLayers") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxBindGroups documentation>
+getMaxBindGroups :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxBindGroups self = liftDOM ((P.round <$> ((self ^. js "maxBindGroups") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxBindGroupsPlusVertexBuffers documentation>
+getMaxBindGroupsPlusVertexBuffers :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxBindGroupsPlusVertexBuffers self = liftDOM ((P.round <$> ((self ^. js "maxBindGroupsPlusVertexBuffers") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxBindingsPerBindGroup documentation>
+getMaxBindingsPerBindGroup :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxBindingsPerBindGroup self = liftDOM ((P.round <$> ((self ^. js "maxBindingsPerBindGroup") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxDynamicUniformBuffersPerPipelineLayout documentation>
+getMaxDynamicUniformBuffersPerPipelineLayout :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxDynamicUniformBuffersPerPipelineLayout self = liftDOM ((P.round <$> ((self ^. js "maxDynamicUniformBuffersPerPipelineLayout") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxDynamicStorageBuffersPerPipelineLayout documentation>
+getMaxDynamicStorageBuffersPerPipelineLayout :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxDynamicStorageBuffersPerPipelineLayout self = liftDOM ((P.round <$> ((self ^. js "maxDynamicStorageBuffersPerPipelineLayout") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxSampledTexturesPerShaderStage documentation>
+getMaxSampledTexturesPerShaderStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxSampledTexturesPerShaderStage self = liftDOM ((P.round <$> ((self ^. js "maxSampledTexturesPerShaderStage") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxSamplersPerShaderStage documentation>
+getMaxSamplersPerShaderStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxSamplersPerShaderStage self = liftDOM ((P.round <$> ((self ^. js "maxSamplersPerShaderStage") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxStorageBuffersPerShaderStage documentation>
+getMaxStorageBuffersPerShaderStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxStorageBuffersPerShaderStage self = liftDOM ((P.round <$> ((self ^. js "maxStorageBuffersPerShaderStage") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxstoragebuffersinvertexstage GPUSupportedLimits.maxStorageBuffersInVertexStage specification>
+getMaxStorageBuffersInVertexStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxStorageBuffersInVertexStage self = liftDOM ((P.round <$> ((self ^. js "maxStorageBuffersInVertexStage") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxstoragebuffersinfragmentstage GPUSupportedLimits.maxStorageBuffersInFragmentStage specification>
+getMaxStorageBuffersInFragmentStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxStorageBuffersInFragmentStage self = liftDOM ((P.round <$> ((self ^. js "maxStorageBuffersInFragmentStage") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxStorageTexturesPerShaderStage documentation>
+getMaxStorageTexturesPerShaderStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxStorageTexturesPerShaderStage self = liftDOM ((P.round <$> ((self ^. js "maxStorageTexturesPerShaderStage") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxstoragetexturesinvertexstage GPUSupportedLimits.maxStorageTexturesInVertexStage specification>
+getMaxStorageTexturesInVertexStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxStorageTexturesInVertexStage self = liftDOM ((P.round <$> ((self ^. js "maxStorageTexturesInVertexStage") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpusupportedlimits-maxstoragetexturesinfragmentstage GPUSupportedLimits.maxStorageTexturesInFragmentStage specification>
+getMaxStorageTexturesInFragmentStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxStorageTexturesInFragmentStage self = liftDOM ((P.round <$> ((self ^. js "maxStorageTexturesInFragmentStage") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxUniformBuffersPerShaderStage documentation>
+getMaxUniformBuffersPerShaderStage :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxUniformBuffersPerShaderStage self = liftDOM ((P.round <$> ((self ^. js "maxUniformBuffersPerShaderStage") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxUniformBufferBindingSize documentation>
+getMaxUniformBufferBindingSize :: (MonadDOM m) => GPUSupportedLimits -> m Word53
+getMaxUniformBufferBindingSize self = liftDOM (((self ^. js "maxUniformBufferBindingSize") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxStorageBufferBindingSize documentation>
+getMaxStorageBufferBindingSize :: (MonadDOM m) => GPUSupportedLimits -> m Word53
+getMaxStorageBufferBindingSize self = liftDOM (((self ^. js "maxStorageBufferBindingSize") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.minUniformBufferOffsetAlignment documentation>
+getMinUniformBufferOffsetAlignment :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMinUniformBufferOffsetAlignment self = liftDOM ((P.round <$> ((self ^. js "minUniformBufferOffsetAlignment") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.minStorageBufferOffsetAlignment documentation>
+getMinStorageBufferOffsetAlignment :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMinStorageBufferOffsetAlignment self = liftDOM ((P.round <$> ((self ^. js "minStorageBufferOffsetAlignment") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxVertexBuffers documentation>
+getMaxVertexBuffers :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxVertexBuffers self = liftDOM ((P.round <$> ((self ^. js "maxVertexBuffers") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxBufferSize documentation>
+getMaxBufferSize :: (MonadDOM m) => GPUSupportedLimits -> m Word53
+getMaxBufferSize self = liftDOM (((self ^. js "maxBufferSize") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxVertexAttributes documentation>
+getMaxVertexAttributes :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxVertexAttributes self = liftDOM ((P.round <$> ((self ^. js "maxVertexAttributes") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxVertexBufferArrayStride documentation>
+getMaxVertexBufferArrayStride :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxVertexBufferArrayStride self = liftDOM ((P.round <$> ((self ^. js "maxVertexBufferArrayStride") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxInterStageShaderVariables documentation>
+getMaxInterStageShaderVariables :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxInterStageShaderVariables self = liftDOM ((P.round <$> ((self ^. js "maxInterStageShaderVariables") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxColorAttachments documentation>
+getMaxColorAttachments :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxColorAttachments self = liftDOM ((P.round <$> ((self ^. js "maxColorAttachments") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxColorAttachmentBytesPerSample documentation>
+getMaxColorAttachmentBytesPerSample :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxColorAttachmentBytesPerSample self = liftDOM ((P.round <$> ((self ^. js "maxColorAttachmentBytesPerSample") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxComputeWorkgroupStorageSize documentation>
+getMaxComputeWorkgroupStorageSize :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxComputeWorkgroupStorageSize self = liftDOM ((P.round <$> ((self ^. js "maxComputeWorkgroupStorageSize") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxComputeInvocationsPerWorkgroup documentation>
+getMaxComputeInvocationsPerWorkgroup :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxComputeInvocationsPerWorkgroup self = liftDOM ((P.round <$> ((self ^. js "maxComputeInvocationsPerWorkgroup") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxComputeWorkgroupSizeX documentation>
+getMaxComputeWorkgroupSizeX :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxComputeWorkgroupSizeX self = liftDOM ((P.round <$> ((self ^. js "maxComputeWorkgroupSizeX") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxComputeWorkgroupSizeY documentation>
+getMaxComputeWorkgroupSizeY :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxComputeWorkgroupSizeY self = liftDOM ((P.round <$> ((self ^. js "maxComputeWorkgroupSizeY") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxComputeWorkgroupSizeZ documentation>
+getMaxComputeWorkgroupSizeZ :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxComputeWorkgroupSizeZ self = liftDOM ((P.round <$> ((self ^. js "maxComputeWorkgroupSizeZ") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUSupportedLimits#instance_properties MDN GPUSupportedLimits.maxComputeWorkgroupsPerDimension documentation>
+getMaxComputeWorkgroupsPerDimension :: (MonadDOM m) => GPUSupportedLimits -> m Word
+getMaxComputeWorkgroupsPerDimension self = liftDOM ((P.round <$> ((self ^. js "maxComputeWorkgroupsPerDimension") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/GPUTexelCopyBufferInfo.hs b/src/JSDOM/Generated/GPUTexelCopyBufferInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUTexelCopyBufferInfo.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUTexelCopyBufferInfo
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#gputexelcopybufferinfo GPUTexelCopyBufferInfo specification>
+newGPUTexelCopyBufferInfo :: (MonadDOM m) => GPUBuffer -> m GPUTexelCopyBufferInfo
+newGPUTexelCopyBufferInfo buffer = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "buffer" (toJSVal buffer)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferinfo-buffer GPUTexelCopyBufferInfo.buffer specification>
+setBuffer :: (MonadDOM m) => GPUTexelCopyBufferInfo -> GPUBuffer -> m ()
+setBuffer self val = liftDOM (void (self ^. jss "buffer" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferinfo-buffer GPUTexelCopyBufferInfo.buffer specification>
+getBuffer :: (MonadDOM m) => GPUTexelCopyBufferInfo -> m GPUBuffer
+getBuffer self = liftDOM (((self ^. js "buffer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUTexelCopyBufferLayout.hs b/src/JSDOM/Generated/GPUTexelCopyBufferLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUTexelCopyBufferLayout.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUTexelCopyBufferLayout
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#gputexelcopybufferlayout GPUTexelCopyBufferLayout specification>
+newGPUTexelCopyBufferLayout :: (MonadDOM m) => m GPUTexelCopyBufferLayout
+newGPUTexelCopyBufferLayout = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-offset GPUTexelCopyBufferLayout.offset specification>
+setOffset :: (MonadDOM m, IsGPUTexelCopyBufferLayout self) => self -> Word53 -> m ()
+setOffset self val = liftDOM (void ((Types.toGPUTexelCopyBufferLayout self) ^. jss "offset" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-offset GPUTexelCopyBufferLayout.offset specification>
+getOffset :: (MonadDOM m, IsGPUTexelCopyBufferLayout self) => self -> m (Maybe Word53)
+getOffset self = liftDOM ((((Types.toGPUTexelCopyBufferLayout self) ^. js "offset") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-offset GPUTexelCopyBufferLayout.offset specification>
+getOffsetUnsafe :: (MonadDOM m, IsGPUTexelCopyBufferLayout self, HasCallStack) => self -> m Word53
+getOffsetUnsafe self = liftDOM (((((Types.toGPUTexelCopyBufferLayout self) ^. js "offset") >>= 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 ((((Types.toGPUTexelCopyBufferLayout self) ^. js "offset") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-bytesperrow GPUTexelCopyBufferLayout.bytesPerRow specification>
+setBytesPerRow :: (MonadDOM m, IsGPUTexelCopyBufferLayout self) => self -> Word -> m ()
+setBytesPerRow self val = liftDOM (void ((Types.toGPUTexelCopyBufferLayout self) ^. jss "bytesPerRow" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-bytesperrow GPUTexelCopyBufferLayout.bytesPerRow specification>
+getBytesPerRow :: (MonadDOM m, IsGPUTexelCopyBufferLayout self) => self -> m (Maybe Word)
+getBytesPerRow self = liftDOM ((((Types.toGPUTexelCopyBufferLayout self) ^. js "bytesPerRow") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-bytesperrow GPUTexelCopyBufferLayout.bytesPerRow specification>
+getBytesPerRowUnsafe :: (MonadDOM m, IsGPUTexelCopyBufferLayout self, HasCallStack) => self -> m Word
+getBytesPerRowUnsafe self = liftDOM (((((Types.toGPUTexelCopyBufferLayout self) ^. js "bytesPerRow") >>= 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 ((P.round <$> (((Types.toGPUTexelCopyBufferLayout self) ^. js "bytesPerRow") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-rowsperimage GPUTexelCopyBufferLayout.rowsPerImage specification>
+setRowsPerImage :: (MonadDOM m, IsGPUTexelCopyBufferLayout self) => self -> Word -> m ()
+setRowsPerImage self val = liftDOM (void ((Types.toGPUTexelCopyBufferLayout self) ^. jss "rowsPerImage" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-rowsperimage GPUTexelCopyBufferLayout.rowsPerImage specification>
+getRowsPerImage :: (MonadDOM m, IsGPUTexelCopyBufferLayout self) => self -> m (Maybe Word)
+getRowsPerImage self = liftDOM ((((Types.toGPUTexelCopyBufferLayout self) ^. js "rowsPerImage") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopybufferlayout-rowsperimage GPUTexelCopyBufferLayout.rowsPerImage specification>
+getRowsPerImageUnsafe :: (MonadDOM m, IsGPUTexelCopyBufferLayout self, HasCallStack) => self -> m Word
+getRowsPerImageUnsafe self = liftDOM (((((Types.toGPUTexelCopyBufferLayout self) ^. js "rowsPerImage") >>= 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 ((P.round <$> (((Types.toGPUTexelCopyBufferLayout self) ^. js "rowsPerImage") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/GPUTexelCopyTextureInfo.hs b/src/JSDOM/Generated/GPUTexelCopyTextureInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUTexelCopyTextureInfo.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUTexelCopyTextureInfo
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#gputexelcopytextureinfo GPUTexelCopyTextureInfo specification>
+newGPUTexelCopyTextureInfo :: (MonadDOM m) => GPUTexture -> m GPUTexelCopyTextureInfo
+newGPUTexelCopyTextureInfo texture = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "texture" (toJSVal texture)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-texture GPUTexelCopyTextureInfo.texture specification>
+setTexture :: (MonadDOM m, IsGPUTexelCopyTextureInfo self) => self -> GPUTexture -> m ()
+setTexture self val = liftDOM (void ((Types.toGPUTexelCopyTextureInfo self) ^. jss "texture" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-texture GPUTexelCopyTextureInfo.texture specification>
+getTexture :: (MonadDOM m, IsGPUTexelCopyTextureInfo self) => self -> m GPUTexture
+getTexture self = liftDOM ((((Types.toGPUTexelCopyTextureInfo self) ^. js "texture") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-miplevel GPUTexelCopyTextureInfo.mipLevel specification>
+setMipLevel :: (MonadDOM m, IsGPUTexelCopyTextureInfo self) => self -> Word -> m ()
+setMipLevel self val = liftDOM (void ((Types.toGPUTexelCopyTextureInfo self) ^. jss "mipLevel" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-miplevel GPUTexelCopyTextureInfo.mipLevel specification>
+getMipLevel :: (MonadDOM m, IsGPUTexelCopyTextureInfo self) => self -> m (Maybe Word)
+getMipLevel self = liftDOM ((((Types.toGPUTexelCopyTextureInfo self) ^. js "mipLevel") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-miplevel GPUTexelCopyTextureInfo.mipLevel specification>
+getMipLevelUnsafe :: (MonadDOM m, IsGPUTexelCopyTextureInfo self, HasCallStack) => self -> m Word
+getMipLevelUnsafe self = liftDOM (((((Types.toGPUTexelCopyTextureInfo self) ^. js "mipLevel") >>= 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 ((P.round <$> (((Types.toGPUTexelCopyTextureInfo self) ^. js "mipLevel") >>= valToNumber)))
+
+-- | <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 ((Types.toGPUTexelCopyTextureInfo self) ^. jss "origin" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-origin GPUTexelCopyTextureInfo.origin specification>
+getOrigin :: (MonadDOM m, IsGPUTexelCopyTextureInfo self) => self -> m (Maybe GPUOrigin3D)
+getOrigin self = liftDOM ((((Types.toGPUTexelCopyTextureInfo self) ^. js "origin") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-origin GPUTexelCopyTextureInfo.origin specification>
+getOriginUnsafe :: (MonadDOM m, IsGPUTexelCopyTextureInfo self, HasCallStack) => self -> m GPUOrigin3D
+getOriginUnsafe self = liftDOM (((((Types.toGPUTexelCopyTextureInfo self) ^. js "origin") >>= 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 ((((Types.toGPUTexelCopyTextureInfo self) ^. js "origin") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-aspect GPUTexelCopyTextureInfo.aspect specification>
+setAspect :: (MonadDOM m, IsGPUTexelCopyTextureInfo self) => self -> GPUTextureAspect -> m ()
+setAspect self val = liftDOM (void ((Types.toGPUTexelCopyTextureInfo self) ^. jss "aspect" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-aspect GPUTexelCopyTextureInfo.aspect specification>
+getAspect :: (MonadDOM m, IsGPUTexelCopyTextureInfo self) => self -> m (Maybe GPUTextureAspect)
+getAspect self = liftDOM ((((Types.toGPUTexelCopyTextureInfo self) ^. js "aspect") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexelcopytextureinfo-aspect GPUTexelCopyTextureInfo.aspect specification>
+getAspectUnsafe :: (MonadDOM m, IsGPUTexelCopyTextureInfo self, HasCallStack) => self -> m GPUTextureAspect
+getAspectUnsafe self = liftDOM (((((Types.toGPUTexelCopyTextureInfo self) ^. js "aspect") >>= 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 ((((Types.toGPUTexelCopyTextureInfo self) ^. js "aspect") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUTexture.hs b/src/JSDOM/Generated/GPUTexture.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUTexture.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUTexture
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "createView" [P.maybe (P.return jsUndefined) toJSVal descriptor]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "createView" [P.maybe (P.return jsUndefined) toJSVal descriptor]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/destroy MDN GPUTexture.destroy documentation>
+destroy :: (MonadDOM m) => GPUTexture -> m ()
+destroy self = liftDOM (void (self ^. jsf "destroy" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/width MDN GPUTexture.width documentation>
+getWidth :: (MonadDOM m) => GPUTexture -> m Word
+getWidth self = liftDOM ((P.round <$> ((self ^. js "width") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/height MDN GPUTexture.height documentation>
+getHeight :: (MonadDOM m) => GPUTexture -> m Word
+getHeight self = liftDOM ((P.round <$> ((self ^. js "height") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/depthOrArrayLayers MDN GPUTexture.depthOrArrayLayers documentation>
+getDepthOrArrayLayers :: (MonadDOM m) => GPUTexture -> m Word
+getDepthOrArrayLayers self = liftDOM ((P.round <$> ((self ^. js "depthOrArrayLayers") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/mipLevelCount MDN GPUTexture.mipLevelCount documentation>
+getMipLevelCount :: (MonadDOM m) => GPUTexture -> m Word
+getMipLevelCount self = liftDOM ((P.round <$> ((self ^. js "mipLevelCount") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/sampleCount MDN GPUTexture.sampleCount documentation>
+getSampleCount :: (MonadDOM m) => GPUTexture -> m Word
+getSampleCount self = liftDOM ((P.round <$> ((self ^. js "sampleCount") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/dimension MDN GPUTexture.dimension documentation>
+getDimension :: (MonadDOM m) => GPUTexture -> m GPUTextureDimension
+getDimension self = liftDOM (((self ^. js "dimension") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/format MDN GPUTexture.format documentation>
+getFormat :: (MonadDOM m) => GPUTexture -> m GPUTextureFormat
+getFormat self = liftDOM (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUTexture/usage MDN GPUTexture.usage documentation>
+getUsage :: (MonadDOM m) => GPUTexture -> m Word
+getUsage self = liftDOM ((P.round <$> ((self ^. js "usage") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/GPUTextureBindingLayout.hs b/src/JSDOM/Generated/GPUTextureBindingLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUTextureBindingLayout.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUTextureBindingLayout
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gputexturebindinglayout GPUTextureBindingLayout specification>
+newGPUTextureBindingLayout :: (MonadDOM m) => m GPUTextureBindingLayout
+newGPUTextureBindingLayout = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-sampletype GPUTextureBindingLayout.sampleType specification>
+setSampleType :: (MonadDOM m) => GPUTextureBindingLayout -> GPUTextureSampleType -> m ()
+setSampleType self val = liftDOM (void (self ^. jss "sampleType" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-sampletype GPUTextureBindingLayout.sampleType specification>
+getSampleType :: (MonadDOM m) => GPUTextureBindingLayout -> m (Maybe GPUTextureSampleType)
+getSampleType self = liftDOM (((self ^. js "sampleType") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-sampletype GPUTextureBindingLayout.sampleType specification>
+getSampleTypeUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureBindingLayout -> m GPUTextureSampleType
+getSampleTypeUnsafe self = liftDOM ((((self ^. js "sampleType") >>= 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 (((self ^. js "sampleType") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-viewdimension GPUTextureBindingLayout.viewDimension specification>
+setViewDimension :: (MonadDOM m) => GPUTextureBindingLayout -> GPUTextureViewDimension -> m ()
+setViewDimension self val = liftDOM (void (self ^. jss "viewDimension" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-viewdimension GPUTextureBindingLayout.viewDimension specification>
+getViewDimension :: (MonadDOM m) => GPUTextureBindingLayout -> m (Maybe GPUTextureViewDimension)
+getViewDimension self = liftDOM (((self ^. js "viewDimension") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-viewdimension GPUTextureBindingLayout.viewDimension specification>
+getViewDimensionUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureBindingLayout -> m GPUTextureViewDimension
+getViewDimensionUnsafe self = liftDOM ((((self ^. js "viewDimension") >>= 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 (((self ^. js "viewDimension") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-multisampled GPUTextureBindingLayout.multisampled specification>
+setMultisampled :: (MonadDOM m) => GPUTextureBindingLayout -> Bool -> m ()
+setMultisampled self val = liftDOM (void (self ^. jss "multisampled" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-multisampled GPUTextureBindingLayout.multisampled specification>
+getMultisampled :: (MonadDOM m) => GPUTextureBindingLayout -> m (Maybe Bool)
+getMultisampled self = liftDOM (((self ^. js "multisampled") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturebindinglayout-multisampled GPUTextureBindingLayout.multisampled specification>
+getMultisampledUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureBindingLayout -> m Bool
+getMultisampledUnsafe self = liftDOM ((((self ^. js "multisampled") >>= 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 (((self ^. js "multisampled") >>= valToBool))
diff --git a/src/JSDOM/Generated/GPUTextureDescriptor.hs b/src/JSDOM/Generated/GPUTextureDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUTextureDescriptor.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUTextureDescriptor
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#gputexturedescriptor GPUTextureDescriptor specification>
+newGPUTextureDescriptor :: (MonadDOM m, IsGPUExtent3D size) => size -> GPUTextureFormat -> Word -> m GPUTextureDescriptor
+newGPUTextureDescriptor size format usage = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "size" (toJSVal size)) P.>> (o ^. jss "format" (toJSVal format)) P.>> (o ^. jss "usage" (toJSVal usage)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-size GPUTextureDescriptor.size specification>
+setSize :: (MonadDOM m, IsGPUExtent3D val) => GPUTextureDescriptor -> val -> m ()
+setSize self val = liftDOM (void (self ^. jss "size" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-size GPUTextureDescriptor.size specification>
+getSize :: (MonadDOM m) => GPUTextureDescriptor -> m GPUExtent3D
+getSize self = liftDOM (((self ^. js "size") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-miplevelcount GPUTextureDescriptor.mipLevelCount specification>
+setMipLevelCount :: (MonadDOM m) => GPUTextureDescriptor -> Word -> m ()
+setMipLevelCount self val = liftDOM (void (self ^. jss "mipLevelCount" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-miplevelcount GPUTextureDescriptor.mipLevelCount specification>
+getMipLevelCount :: (MonadDOM m) => GPUTextureDescriptor -> m (Maybe Word)
+getMipLevelCount self = liftDOM (((self ^. js "mipLevelCount") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-miplevelcount GPUTextureDescriptor.mipLevelCount specification>
+getMipLevelCountUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureDescriptor -> m Word
+getMipLevelCountUnsafe self = liftDOM ((((self ^. js "mipLevelCount") >>= 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 ((P.round <$> ((self ^. js "mipLevelCount") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-samplecount GPUTextureDescriptor.sampleCount specification>
+setSampleCount :: (MonadDOM m) => GPUTextureDescriptor -> Word -> m ()
+setSampleCount self val = liftDOM (void (self ^. jss "sampleCount" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-samplecount GPUTextureDescriptor.sampleCount specification>
+getSampleCount :: (MonadDOM m) => GPUTextureDescriptor -> m (Maybe Word)
+getSampleCount self = liftDOM (((self ^. js "sampleCount") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-samplecount GPUTextureDescriptor.sampleCount specification>
+getSampleCountUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureDescriptor -> m Word
+getSampleCountUnsafe self = liftDOM ((((self ^. js "sampleCount") >>= 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 ((P.round <$> ((self ^. js "sampleCount") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-dimension GPUTextureDescriptor.dimension specification>
+setDimension :: (MonadDOM m) => GPUTextureDescriptor -> GPUTextureDimension -> m ()
+setDimension self val = liftDOM (void (self ^. jss "dimension" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-dimension GPUTextureDescriptor.dimension specification>
+getDimension :: (MonadDOM m) => GPUTextureDescriptor -> m (Maybe GPUTextureDimension)
+getDimension self = liftDOM (((self ^. js "dimension") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-dimension GPUTextureDescriptor.dimension specification>
+getDimensionUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureDescriptor -> m GPUTextureDimension
+getDimensionUnsafe self = liftDOM ((((self ^. js "dimension") >>= 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 (((self ^. js "dimension") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-format GPUTextureDescriptor.format specification>
+setFormat :: (MonadDOM m) => GPUTextureDescriptor -> GPUTextureFormat -> m ()
+setFormat self val = liftDOM (void (self ^. jss "format" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-format GPUTextureDescriptor.format specification>
+getFormat :: (MonadDOM m) => GPUTextureDescriptor -> m GPUTextureFormat
+getFormat self = liftDOM (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-usage GPUTextureDescriptor.usage specification>
+setUsage :: (MonadDOM m) => GPUTextureDescriptor -> Word -> m ()
+setUsage self val = liftDOM (void (self ^. jss "usage" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-usage GPUTextureDescriptor.usage specification>
+getUsage :: (MonadDOM m) => GPUTextureDescriptor -> m Word
+getUsage self = liftDOM ((P.round <$> ((self ^. js "usage") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-viewformats GPUTextureDescriptor.viewFormats specification>
+setViewFormats :: (MonadDOM m) => GPUTextureDescriptor -> [GPUTextureFormat] -> m ()
+setViewFormats self val = liftDOM (void (self ^. jss "viewFormats" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-viewformats GPUTextureDescriptor.viewFormats specification>
+getViewFormats :: (MonadDOM m) => GPUTextureDescriptor -> m (Maybe [GPUTextureFormat])
+getViewFormats self = liftDOM (((self ^. js "viewFormats") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-viewformats GPUTextureDescriptor.viewFormats specification>
+getViewFormatsUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureDescriptor -> m [GPUTextureFormat]
+getViewFormatsUnsafe self = liftDOM ((((self ^. js "viewFormats") >>= 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 (((self ^. js "viewFormats") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-texturebindingviewdimension GPUTextureDescriptor.textureBindingViewDimension specification>
+setTextureBindingViewDimension :: (MonadDOM m) => GPUTextureDescriptor -> GPUTextureViewDimension -> m ()
+setTextureBindingViewDimension self val = liftDOM (void (self ^. jss "textureBindingViewDimension" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-texturebindingviewdimension GPUTextureDescriptor.textureBindingViewDimension specification>
+getTextureBindingViewDimension :: (MonadDOM m) => GPUTextureDescriptor -> m (Maybe GPUTextureViewDimension)
+getTextureBindingViewDimension self = liftDOM (((self ^. js "textureBindingViewDimension") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputexturedescriptor-texturebindingviewdimension GPUTextureDescriptor.textureBindingViewDimension specification>
+getTextureBindingViewDimensionUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureDescriptor -> m GPUTextureViewDimension
+getTextureBindingViewDimensionUnsafe self = liftDOM ((((self ^. js "textureBindingViewDimension") >>= 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 (((self ^. js "textureBindingViewDimension") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUTextureView.hs b/src/JSDOM/Generated/GPUTextureView.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUTextureView.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUTextureView
+       (GPUTextureView(..), gTypeGPUTextureView)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/GPUTextureViewDescriptor.hs b/src/JSDOM/Generated/GPUTextureViewDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUTextureViewDescriptor.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUTextureViewDescriptor
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gputextureviewdescriptor GPUTextureViewDescriptor specification>
+newGPUTextureViewDescriptor :: (MonadDOM m) => m GPUTextureViewDescriptor
+newGPUTextureViewDescriptor = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-format GPUTextureViewDescriptor.format specification>
+setFormat :: (MonadDOM m) => GPUTextureViewDescriptor -> GPUTextureFormat -> m ()
+setFormat self val = liftDOM (void (self ^. jss "format" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-format GPUTextureViewDescriptor.format specification>
+getFormat :: (MonadDOM m) => GPUTextureViewDescriptor -> m (Maybe GPUTextureFormat)
+getFormat self = liftDOM (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-format GPUTextureViewDescriptor.format specification>
+getFormatUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureViewDescriptor -> m GPUTextureFormat
+getFormatUnsafe self = liftDOM ((((self ^. js "format") >>= 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 (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-dimension GPUTextureViewDescriptor.dimension specification>
+setDimension :: (MonadDOM m) => GPUTextureViewDescriptor -> GPUTextureViewDimension -> m ()
+setDimension self val = liftDOM (void (self ^. jss "dimension" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-dimension GPUTextureViewDescriptor.dimension specification>
+getDimension :: (MonadDOM m) => GPUTextureViewDescriptor -> m (Maybe GPUTextureViewDimension)
+getDimension self = liftDOM (((self ^. js "dimension") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-dimension GPUTextureViewDescriptor.dimension specification>
+getDimensionUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureViewDescriptor -> m GPUTextureViewDimension
+getDimensionUnsafe self = liftDOM ((((self ^. js "dimension") >>= 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 (((self ^. js "dimension") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-usage GPUTextureViewDescriptor.usage specification>
+setUsage :: (MonadDOM m) => GPUTextureViewDescriptor -> Word -> m ()
+setUsage self val = liftDOM (void (self ^. jss "usage" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-usage GPUTextureViewDescriptor.usage specification>
+getUsage :: (MonadDOM m) => GPUTextureViewDescriptor -> m (Maybe Word)
+getUsage self = liftDOM (((self ^. js "usage") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-usage GPUTextureViewDescriptor.usage specification>
+getUsageUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureViewDescriptor -> m Word
+getUsageUnsafe self = liftDOM ((((self ^. js "usage") >>= 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 ((P.round <$> ((self ^. js "usage") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-aspect GPUTextureViewDescriptor.aspect specification>
+setAspect :: (MonadDOM m) => GPUTextureViewDescriptor -> GPUTextureAspect -> m ()
+setAspect self val = liftDOM (void (self ^. jss "aspect" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-aspect GPUTextureViewDescriptor.aspect specification>
+getAspect :: (MonadDOM m) => GPUTextureViewDescriptor -> m (Maybe GPUTextureAspect)
+getAspect self = liftDOM (((self ^. js "aspect") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-aspect GPUTextureViewDescriptor.aspect specification>
+getAspectUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureViewDescriptor -> m GPUTextureAspect
+getAspectUnsafe self = liftDOM ((((self ^. js "aspect") >>= 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 (((self ^. js "aspect") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-basemiplevel GPUTextureViewDescriptor.baseMipLevel specification>
+setBaseMipLevel :: (MonadDOM m) => GPUTextureViewDescriptor -> Word -> m ()
+setBaseMipLevel self val = liftDOM (void (self ^. jss "baseMipLevel" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-basemiplevel GPUTextureViewDescriptor.baseMipLevel specification>
+getBaseMipLevel :: (MonadDOM m) => GPUTextureViewDescriptor -> m (Maybe Word)
+getBaseMipLevel self = liftDOM (((self ^. js "baseMipLevel") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-basemiplevel GPUTextureViewDescriptor.baseMipLevel specification>
+getBaseMipLevelUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureViewDescriptor -> m Word
+getBaseMipLevelUnsafe self = liftDOM ((((self ^. js "baseMipLevel") >>= 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 ((P.round <$> ((self ^. js "baseMipLevel") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-miplevelcount GPUTextureViewDescriptor.mipLevelCount specification>
+setMipLevelCount :: (MonadDOM m) => GPUTextureViewDescriptor -> Word -> m ()
+setMipLevelCount self val = liftDOM (void (self ^. jss "mipLevelCount" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-miplevelcount GPUTextureViewDescriptor.mipLevelCount specification>
+getMipLevelCount :: (MonadDOM m) => GPUTextureViewDescriptor -> m (Maybe Word)
+getMipLevelCount self = liftDOM (((self ^. js "mipLevelCount") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-miplevelcount GPUTextureViewDescriptor.mipLevelCount specification>
+getMipLevelCountUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureViewDescriptor -> m Word
+getMipLevelCountUnsafe self = liftDOM ((((self ^. js "mipLevelCount") >>= 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 ((P.round <$> ((self ^. js "mipLevelCount") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-basearraylayer GPUTextureViewDescriptor.baseArrayLayer specification>
+setBaseArrayLayer :: (MonadDOM m) => GPUTextureViewDescriptor -> Word -> m ()
+setBaseArrayLayer self val = liftDOM (void (self ^. jss "baseArrayLayer" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-basearraylayer GPUTextureViewDescriptor.baseArrayLayer specification>
+getBaseArrayLayer :: (MonadDOM m) => GPUTextureViewDescriptor -> m (Maybe Word)
+getBaseArrayLayer self = liftDOM (((self ^. js "baseArrayLayer") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-basearraylayer GPUTextureViewDescriptor.baseArrayLayer specification>
+getBaseArrayLayerUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureViewDescriptor -> m Word
+getBaseArrayLayerUnsafe self = liftDOM ((((self ^. js "baseArrayLayer") >>= 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 ((P.round <$> ((self ^. js "baseArrayLayer") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-arraylayercount GPUTextureViewDescriptor.arrayLayerCount specification>
+setArrayLayerCount :: (MonadDOM m) => GPUTextureViewDescriptor -> Word -> m ()
+setArrayLayerCount self val = liftDOM (void (self ^. jss "arrayLayerCount" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-arraylayercount GPUTextureViewDescriptor.arrayLayerCount specification>
+getArrayLayerCount :: (MonadDOM m) => GPUTextureViewDescriptor -> m (Maybe Word)
+getArrayLayerCount self = liftDOM (((self ^. js "arrayLayerCount") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-arraylayercount GPUTextureViewDescriptor.arrayLayerCount specification>
+getArrayLayerCountUnsafe :: (MonadDOM m, HasCallStack) => GPUTextureViewDescriptor -> m Word
+getArrayLayerCountUnsafe self = liftDOM ((((self ^. js "arrayLayerCount") >>= 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 ((P.round <$> ((self ^. js "arrayLayerCount") >>= valToNumber)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-swizzle GPUTextureViewDescriptor.swizzle specification>
+setSwizzle :: (MonadDOM m, ToJSString val) => GPUTextureViewDescriptor -> val -> m ()
+setSwizzle self val = liftDOM (void (self ^. jss "swizzle" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-swizzle GPUTextureViewDescriptor.swizzle specification>
+getSwizzle :: (MonadDOM m, FromJSString result) => GPUTextureViewDescriptor -> m (Maybe result)
+getSwizzle self = liftDOM (((self ^. js "swizzle") >>= fromMaybeJSString))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gputextureviewdescriptor-swizzle GPUTextureViewDescriptor.swizzle specification>
+getSwizzleUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => GPUTextureViewDescriptor -> m result
+getSwizzleUnsafe self = liftDOM ((((self ^. js "swizzle") >>= fromMaybeJSString) >>= 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 (((self ^. js "swizzle") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUUncapturedErrorEvent.hs b/src/JSDOM/Generated/GPUUncapturedErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUUncapturedErrorEvent.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUUncapturedErrorEvent
+       (newGPUUncapturedErrorEvent, getError, GPUUncapturedErrorEvent(..), gTypeGPUUncapturedErrorEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "GPUUncapturedErrorEvent") [toJSVal type', toJSVal gpuUncapturedErrorEventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUUncapturedErrorEvent/error MDN GPUUncapturedErrorEvent.error documentation>
+getError :: (MonadDOM m) => GPUUncapturedErrorEvent -> m GPUError
+getError self = liftDOM (((self ^. js "error") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUUncapturedErrorEventInit.hs b/src/JSDOM/Generated/GPUUncapturedErrorEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUUncapturedErrorEventInit.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUUncapturedErrorEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuuncapturederroreventinit GPUUncapturedErrorEventInit specification>
+newGPUUncapturedErrorEventInit :: (MonadDOM m, IsGPUError error) => error -> m GPUUncapturedErrorEventInit
+newGPUUncapturedErrorEventInit error = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "error" (toJSVal error)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuuncapturederroreventinit-error GPUUncapturedErrorEventInit.error specification>
+setError :: (MonadDOM m, IsGPUError val) => GPUUncapturedErrorEventInit -> val -> m ()
+setError self val = liftDOM (void (self ^. jss "error" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuuncapturederroreventinit-error GPUUncapturedErrorEventInit.error specification>
+getError :: (MonadDOM m) => GPUUncapturedErrorEventInit -> m GPUError
+getError self = liftDOM (((self ^. js "error") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUValidationError.hs b/src/JSDOM/Generated/GPUValidationError.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUValidationError.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUValidationError
+       (newGPUValidationError, GPUValidationError(..), gTypeGPUValidationError)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GPUValidationError/GPUValidationError MDN GPUValidationError. documentation>
+newGPUValidationError :: (MonadDOM m, ToJSString message) => message -> m GPUValidationError
+newGPUValidationError message = liftDOM (((new (jsg "GPUValidationError") [toJSVal message]) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUVertexAttribute.hs b/src/JSDOM/Generated/GPUVertexAttribute.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUVertexAttribute.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUVertexAttribute
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuvertexattribute GPUVertexAttribute specification>
+newGPUVertexAttribute :: (MonadDOM m) => GPUVertexFormat -> Word53 -> Word -> m GPUVertexAttribute
+newGPUVertexAttribute format offset shaderLocation = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "format" (toJSVal format)) P.>> (o ^. jss "offset" (toJSVal offset)) P.>> (o ^. jss "shaderLocation" (toJSVal shaderLocation)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexattribute-format GPUVertexAttribute.format specification>
+setFormat :: (MonadDOM m) => GPUVertexAttribute -> GPUVertexFormat -> m ()
+setFormat self val = liftDOM (void (self ^. jss "format" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexattribute-format GPUVertexAttribute.format specification>
+getFormat :: (MonadDOM m) => GPUVertexAttribute -> m GPUVertexFormat
+getFormat self = liftDOM (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexattribute-offset GPUVertexAttribute.offset specification>
+setOffset :: (MonadDOM m) => GPUVertexAttribute -> Word53 -> m ()
+setOffset self val = liftDOM (void (self ^. jss "offset" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexattribute-offset GPUVertexAttribute.offset specification>
+getOffset :: (MonadDOM m) => GPUVertexAttribute -> m Word53
+getOffset self = liftDOM (((self ^. js "offset") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexattribute-shaderlocation GPUVertexAttribute.shaderLocation specification>
+setShaderLocation :: (MonadDOM m) => GPUVertexAttribute -> Word -> m ()
+setShaderLocation self val = liftDOM (void (self ^. jss "shaderLocation" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexattribute-shaderlocation GPUVertexAttribute.shaderLocation specification>
+getShaderLocation :: (MonadDOM m) => GPUVertexAttribute -> m Word
+getShaderLocation self = liftDOM ((P.round <$> ((self ^. js "shaderLocation") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/GPUVertexBufferLayout.hs b/src/JSDOM/Generated/GPUVertexBufferLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUVertexBufferLayout.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUVertexBufferLayout
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuvertexbufferlayout GPUVertexBufferLayout specification>
+newGPUVertexBufferLayout :: (MonadDOM m) => Word53 -> [GPUVertexAttribute] -> m GPUVertexBufferLayout
+newGPUVertexBufferLayout arrayStride attributes = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "arrayStride" (toJSVal arrayStride)) P.>> (o ^. jss "attributes" (toJSVal attributes)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexbufferlayout-arraystride GPUVertexBufferLayout.arrayStride specification>
+setArrayStride :: (MonadDOM m) => GPUVertexBufferLayout -> Word53 -> m ()
+setArrayStride self val = liftDOM (void (self ^. jss "arrayStride" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexbufferlayout-arraystride GPUVertexBufferLayout.arrayStride specification>
+getArrayStride :: (MonadDOM m) => GPUVertexBufferLayout -> m Word53
+getArrayStride self = liftDOM (((self ^. js "arrayStride") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexbufferlayout-stepmode GPUVertexBufferLayout.stepMode specification>
+setStepMode :: (MonadDOM m) => GPUVertexBufferLayout -> GPUVertexStepMode -> m ()
+setStepMode self val = liftDOM (void (self ^. jss "stepMode" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexbufferlayout-stepmode GPUVertexBufferLayout.stepMode specification>
+getStepMode :: (MonadDOM m) => GPUVertexBufferLayout -> m (Maybe GPUVertexStepMode)
+getStepMode self = liftDOM (((self ^. js "stepMode") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexbufferlayout-stepmode GPUVertexBufferLayout.stepMode specification>
+getStepModeUnsafe :: (MonadDOM m, HasCallStack) => GPUVertexBufferLayout -> m GPUVertexStepMode
+getStepModeUnsafe self = liftDOM ((((self ^. js "stepMode") >>= 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 (((self ^. js "stepMode") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexbufferlayout-attributes GPUVertexBufferLayout.attributes specification>
+setAttributes :: (MonadDOM m) => GPUVertexBufferLayout -> [GPUVertexAttribute] -> m ()
+setAttributes self val = liftDOM (void (self ^. jss "attributes" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexbufferlayout-attributes GPUVertexBufferLayout.attributes specification>
+getAttributes :: (MonadDOM m) => GPUVertexBufferLayout -> m [GPUVertexAttribute]
+getAttributes self = liftDOM (((self ^. js "attributes") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GPUVertexState.hs b/src/JSDOM/Generated/GPUVertexState.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GPUVertexState.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.GPUVertexState
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://gpuweb.github.io/gpuweb/#dictdef-gpuvertexstate GPUVertexState specification>
+newGPUVertexState :: (MonadDOM m) => GPUShaderModule -> m GPUVertexState
+newGPUVertexState module' = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "module" (toJSVal module')) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexstate-buffers GPUVertexState.buffers specification>
+setBuffers :: (MonadDOM m) => GPUVertexState -> [Maybe GPUVertexBufferLayout] -> m ()
+setBuffers self val = liftDOM (void (self ^. jss "buffers" (toJSVal val)))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexstate-buffers GPUVertexState.buffers specification>
+getBuffers :: (MonadDOM m) => GPUVertexState -> m (Maybe [Maybe GPUVertexBufferLayout])
+getBuffers self = liftDOM (((self ^. js "buffers") >>= fromJSValUnchecked))
+
+-- | <https://gpuweb.github.io/gpuweb/#dom-gpuvertexstate-buffers GPUVertexState.buffers specification>
+getBuffersUnsafe :: (MonadDOM m, HasCallStack) => GPUVertexState -> m [Maybe GPUVertexBufferLayout]
+getBuffersUnsafe self = liftDOM ((((self ^. js "buffers") >>= 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 (((self ^. js "buffers") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GainNode.hs b/src/JSDOM/Generated/GainNode.hs
--- a/src/JSDOM/Generated/GainNode.hs
+++ b/src/JSDOM/Generated/GainNode.hs
@@ -1,23 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.GainNode
-       (getGain, GainNode(..), gTypeGainNode) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (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.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GainNode.gain Mozilla GainNode.gain documentation> 
+-- | <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 (((new (jsg "GainNode") [toJSVal context, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GainNode/gain MDN GainNode.gain documentation>
 getGain :: (MonadDOM m) => GainNode -> m AudioParam
-getGain self = liftDOM ((self ^. js "gain") >>= fromJSValUnchecked)
+getGain self = liftDOM (((self ^. js "gain") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GainOptions.hs b/src/JSDOM/Generated/GainOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GainOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.GainOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#GainOptions GainOptions specification>
+newGainOptions :: (MonadDOM m) => m GainOptions
+newGainOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-gainoptions-gain GainOptions.gain specification>
+setGain :: (MonadDOM m) => GainOptions -> Float -> m ()
+setGain self val = liftDOM (void (self ^. jss "gain" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-gainoptions-gain GainOptions.gain specification>
+getGain :: (MonadDOM m) => GainOptions -> m (Maybe Float)
+getGain self = liftDOM (((self ^. js "gain") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-gainoptions-gain GainOptions.gain specification>
+getGainUnsafe :: (MonadDOM m, HasCallStack) => GainOptions -> m Float
+getGainUnsafe self = liftDOM ((((self ^. js "gain") >>= 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 ((P.realToFrac <$> ((self ^. js "gain") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/Gamepad.hs b/src/JSDOM/Generated/Gamepad.hs
--- a/src/JSDOM/Generated/Gamepad.hs
+++ b/src/JSDOM/Generated/Gamepad.hs
@@ -1,56 +1,48 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from gamepad (webref). Do not edit.
 module JSDOM.Generated.Gamepad
-       (getId, getIndex, getConnected, getTimestamp, getMapping, getAxes,
-        getButtons, Gamepad(..), gTypeGamepad)
+       (getId, getIndex, getConnected, getTimestamp, getMapping, getAxes, getButtons, getVibrationActuator, Gamepad(..), gTypeGamepad)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.id Mozilla Gamepad.id documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Gamepad/id MDN Gamepad.id documentation>
 getId :: (MonadDOM m, FromJSString result) => Gamepad -> m result
-getId self = liftDOM ((self ^. js "id") >>= fromJSValUnchecked)
+getId self = liftDOM (((self ^. js "id") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.index Mozilla Gamepad.index documentation> 
-getIndex :: (MonadDOM m) => Gamepad -> m Word
-getIndex self
-  = liftDOM (round <$> ((self ^. js "index") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Gamepad/index MDN Gamepad.index documentation>
+getIndex :: (MonadDOM m) => Gamepad -> m Int
+getIndex self = liftDOM ((P.round <$> ((self ^. js "index") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.connected Mozilla Gamepad.connected documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Gamepad/connected MDN Gamepad.connected documentation>
 getConnected :: (MonadDOM m) => Gamepad -> m Bool
-getConnected self
-  = liftDOM ((self ^. js "connected") >>= valToBool)
+getConnected self = liftDOM (((self ^. js "connected") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.timestamp Mozilla Gamepad.timestamp documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Gamepad/timestamp MDN Gamepad.timestamp documentation>
 getTimestamp :: (MonadDOM m) => Gamepad -> m Double
-getTimestamp self
-  = liftDOM ((self ^. js "timestamp") >>= valToNumber)
+getTimestamp self = liftDOM (((self ^. js "timestamp") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.mapping Mozilla Gamepad.mapping documentation> 
-getMapping ::
-           (MonadDOM m, FromJSString result) => Gamepad -> m result
-getMapping self
-  = liftDOM ((self ^. js "mapping") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Gamepad/mapping MDN Gamepad.mapping documentation>
+getMapping :: (MonadDOM m) => Gamepad -> m GamepadMappingType
+getMapping self = liftDOM (((self ^. js "mapping") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.axes Mozilla Gamepad.axes documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Gamepad/axes MDN Gamepad.axes documentation>
 getAxes :: (MonadDOM m) => Gamepad -> m [Double]
-getAxes self
-  = liftDOM ((self ^. js "axes") >>= fromJSArrayUnchecked)
+getAxes self = liftDOM (((self ^. js "axes") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.buttons Mozilla Gamepad.buttons documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Gamepad/buttons MDN Gamepad.buttons documentation>
 getButtons :: (MonadDOM m) => Gamepad -> m [GamepadButton]
-getButtons self
-  = liftDOM ((self ^. js "buttons") >>= fromJSArrayUnchecked)
+getButtons self = liftDOM (((self ^. js "buttons") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Gamepad/vibrationActuator MDN Gamepad.vibrationActuator documentation>
+getVibrationActuator :: (MonadDOM m) => Gamepad -> m GamepadHapticActuator
+getVibrationActuator self = liftDOM (((self ^. js "vibrationActuator") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GamepadButton.hs b/src/JSDOM/Generated/GamepadButton.hs
--- a/src/JSDOM/Generated/GamepadButton.hs
+++ b/src/JSDOM/Generated/GamepadButton.hs
@@ -1,27 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from gamepad (webref). Do not edit.
 module JSDOM.Generated.GamepadButton
-       (getPressed, getValue, GamepadButton(..), gTypeGamepadButton) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (getPressed, getTouched, getValue, GamepadButton(..), gTypeGamepadButton)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadButton.pressed Mozilla GamepadButton.pressed documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/GamepadButton/pressed MDN GamepadButton.pressed documentation>
 getPressed :: (MonadDOM m) => GamepadButton -> m Bool
-getPressed self = liftDOM ((self ^. js "pressed") >>= valToBool)
+getPressed self = liftDOM (((self ^. js "pressed") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadButton.value Mozilla GamepadButton.value documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/GamepadButton/touched MDN GamepadButton.touched documentation>
+getTouched :: (MonadDOM m) => GamepadButton -> m Bool
+getTouched self = liftDOM (((self ^. js "touched") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GamepadButton/value MDN GamepadButton.value documentation>
 getValue :: (MonadDOM m) => GamepadButton -> m Double
-getValue self = liftDOM ((self ^. js "value") >>= valToNumber)
+getValue self = liftDOM (((self ^. js "value") >>= valToNumber))
diff --git a/src/JSDOM/Generated/GamepadEffectParameters.hs b/src/JSDOM/Generated/GamepadEffectParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GamepadEffectParameters.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from gamepad (webref). Do not edit.
+module JSDOM.Generated.GamepadEffectParameters
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters GamepadEffectParameters specification>
+newGamepadEffectParameters :: (MonadDOM m) => m GamepadEffectParameters
+newGamepadEffectParameters = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-duration GamepadEffectParameters.duration specification>
+setDuration :: (MonadDOM m) => GamepadEffectParameters -> Word53 -> m ()
+setDuration self val = liftDOM (void (self ^. jss "duration" (toJSVal val)))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-duration GamepadEffectParameters.duration specification>
+getDuration :: (MonadDOM m) => GamepadEffectParameters -> m (Maybe Word53)
+getDuration self = liftDOM (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-duration GamepadEffectParameters.duration specification>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => GamepadEffectParameters -> m Word53
+getDurationUnsafe self = liftDOM ((((self ^. js "duration") >>= 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 (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-startdelay GamepadEffectParameters.startDelay specification>
+setStartDelay :: (MonadDOM m) => GamepadEffectParameters -> Word53 -> m ()
+setStartDelay self val = liftDOM (void (self ^. jss "startDelay" (toJSVal val)))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-startdelay GamepadEffectParameters.startDelay specification>
+getStartDelay :: (MonadDOM m) => GamepadEffectParameters -> m (Maybe Word53)
+getStartDelay self = liftDOM (((self ^. js "startDelay") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-startdelay GamepadEffectParameters.startDelay specification>
+getStartDelayUnsafe :: (MonadDOM m, HasCallStack) => GamepadEffectParameters -> m Word53
+getStartDelayUnsafe self = liftDOM ((((self ^. js "startDelay") >>= 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 (((self ^. js "startDelay") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-strongmagnitude GamepadEffectParameters.strongMagnitude specification>
+setStrongMagnitude :: (MonadDOM m) => GamepadEffectParameters -> Double -> m ()
+setStrongMagnitude self val = liftDOM (void (self ^. jss "strongMagnitude" (toJSVal val)))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-strongmagnitude GamepadEffectParameters.strongMagnitude specification>
+getStrongMagnitude :: (MonadDOM m) => GamepadEffectParameters -> m (Maybe Double)
+getStrongMagnitude self = liftDOM (((self ^. js "strongMagnitude") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-strongmagnitude GamepadEffectParameters.strongMagnitude specification>
+getStrongMagnitudeUnsafe :: (MonadDOM m, HasCallStack) => GamepadEffectParameters -> m Double
+getStrongMagnitudeUnsafe self = liftDOM ((((self ^. js "strongMagnitude") >>= 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 (((self ^. js "strongMagnitude") >>= valToNumber))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-weakmagnitude GamepadEffectParameters.weakMagnitude specification>
+setWeakMagnitude :: (MonadDOM m) => GamepadEffectParameters -> Double -> m ()
+setWeakMagnitude self val = liftDOM (void (self ^. jss "weakMagnitude" (toJSVal val)))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-weakmagnitude GamepadEffectParameters.weakMagnitude specification>
+getWeakMagnitude :: (MonadDOM m) => GamepadEffectParameters -> m (Maybe Double)
+getWeakMagnitude self = liftDOM (((self ^. js "weakMagnitude") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-weakmagnitude GamepadEffectParameters.weakMagnitude specification>
+getWeakMagnitudeUnsafe :: (MonadDOM m, HasCallStack) => GamepadEffectParameters -> m Double
+getWeakMagnitudeUnsafe self = liftDOM ((((self ^. js "weakMagnitude") >>= 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 (((self ^. js "weakMagnitude") >>= valToNumber))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-lefttrigger GamepadEffectParameters.leftTrigger specification>
+setLeftTrigger :: (MonadDOM m) => GamepadEffectParameters -> Double -> m ()
+setLeftTrigger self val = liftDOM (void (self ^. jss "leftTrigger" (toJSVal val)))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-lefttrigger GamepadEffectParameters.leftTrigger specification>
+getLeftTrigger :: (MonadDOM m) => GamepadEffectParameters -> m (Maybe Double)
+getLeftTrigger self = liftDOM (((self ^. js "leftTrigger") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-lefttrigger GamepadEffectParameters.leftTrigger specification>
+getLeftTriggerUnsafe :: (MonadDOM m, HasCallStack) => GamepadEffectParameters -> m Double
+getLeftTriggerUnsafe self = liftDOM ((((self ^. js "leftTrigger") >>= 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 (((self ^. js "leftTrigger") >>= valToNumber))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-righttrigger GamepadEffectParameters.rightTrigger specification>
+setRightTrigger :: (MonadDOM m) => GamepadEffectParameters -> Double -> m ()
+setRightTrigger self val = liftDOM (void (self ^. jss "rightTrigger" (toJSVal val)))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-righttrigger GamepadEffectParameters.rightTrigger specification>
+getRightTrigger :: (MonadDOM m) => GamepadEffectParameters -> m (Maybe Double)
+getRightTrigger self = liftDOM (((self ^. js "rightTrigger") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeffectparameters-righttrigger GamepadEffectParameters.rightTrigger specification>
+getRightTriggerUnsafe :: (MonadDOM m, HasCallStack) => GamepadEffectParameters -> m Double
+getRightTriggerUnsafe self = liftDOM ((((self ^. js "rightTrigger") >>= 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 (((self ^. js "rightTrigger") >>= valToNumber))
diff --git a/src/JSDOM/Generated/GamepadEvent.hs b/src/JSDOM/Generated/GamepadEvent.hs
--- a/src/JSDOM/Generated/GamepadEvent.hs
+++ b/src/JSDOM/Generated/GamepadEvent.hs
@@ -1,47 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from gamepad (webref). Do not edit.
 module JSDOM.Generated.GamepadEvent
-       (newGamepadEvent, getGamepad, getGamepadUnsafe,
-        getGamepadUnchecked, GamepadEvent(..), gTypeGamepadEvent)
+       (newGamepadEvent, getGamepad, GamepadEvent(..), gTypeGamepadEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent Mozilla GamepadEvent documentation> 
-newGamepadEvent ::
-                (MonadDOM m, ToJSString type') =>
-                  type' -> GamepadEventInit -> m GamepadEvent
-newGamepadEvent type' eventInitDict
-  = liftDOM
-      (GamepadEvent <$>
-         new (jsg "GamepadEvent") [toJSVal type', toJSVal eventInitDict])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent.gamepad Mozilla GamepadEvent.gamepad documentation> 
-getGamepad :: (MonadDOM m) => GamepadEvent -> m (Maybe Gamepad)
-getGamepad self = liftDOM ((self ^. js "gamepad") >>= fromJSVal)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent.gamepad Mozilla GamepadEvent.gamepad documentation> 
-getGamepadUnsafe ::
-                 (MonadDOM m, HasCallStack) => GamepadEvent -> m Gamepad
-getGamepadUnsafe self
-  = liftDOM
-      (((self ^. js "gamepad") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((new (jsg "GamepadEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent.gamepad Mozilla GamepadEvent.gamepad documentation> 
-getGamepadUnchecked :: (MonadDOM m) => GamepadEvent -> m Gamepad
-getGamepadUnchecked self
-  = liftDOM ((self ^. js "gamepad") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/GamepadEvent/gamepad MDN GamepadEvent.gamepad documentation>
+getGamepad :: (MonadDOM m) => GamepadEvent -> m Gamepad
+getGamepad self = liftDOM (((self ^. js "gamepad") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GamepadEventInit.hs b/src/JSDOM/Generated/GamepadEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GamepadEventInit.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from gamepad (webref). Do not edit.
+module JSDOM.Generated.GamepadEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeventinit GamepadEventInit specification>
+newGamepadEventInit :: (MonadDOM m) => m GamepadEventInit
+newGamepadEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeventinit-gamepad GamepadEventInit.gamepad specification>
+setGamepad :: (MonadDOM m) => GamepadEventInit -> Maybe Gamepad -> m ()
+setGamepad self val = liftDOM (void (self ^. jss "gamepad" (toJSVal val)))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeventinit-gamepad GamepadEventInit.gamepad specification>
+getGamepad :: (MonadDOM m) => GamepadEventInit -> m (Maybe Gamepad)
+getGamepad self = liftDOM (((self ^. js "gamepad") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/gamepad/#dom-gamepadeventinit-gamepad GamepadEventInit.gamepad specification>
+getGamepadUnsafe :: (MonadDOM m, HasCallStack) => GamepadEventInit -> m Gamepad
+getGamepadUnsafe self = liftDOM ((((self ^. js "gamepad") >>= 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 (((self ^. js "gamepad") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GamepadHapticActuator.hs b/src/JSDOM/Generated/GamepadHapticActuator.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GamepadHapticActuator.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from gamepad (webref). Do not edit.
+module JSDOM.Generated.GamepadHapticActuator
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((((self ^. jsf "playEffect" [toJSVal type', P.maybe (P.return jsUndefined) toJSVal params]) >>= readPromise)) >>= 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 (((self ^. jsf "playEffect" [toJSVal type', P.maybe (P.return jsUndefined) toJSVal params]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GamepadHapticActuator/reset MDN GamepadHapticActuator.reset documentation>
+reset :: (MonadDOM m) => GamepadHapticActuator -> m GamepadHapticsResult
+reset self = liftDOM (((((self ^. jsf "reset" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GamepadHapticActuator/reset MDN GamepadHapticActuator.reset documentation>
+reset_ :: (MonadDOM m) => GamepadHapticActuator -> m ()
+reset_ self = liftDOM (void (((self ^. jsf "reset" ()) >>= readPromise)))
diff --git a/src/JSDOM/Generated/GenericTransformStream.hs b/src/JSDOM/Generated/GenericTransformStream.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GenericTransformStream.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module JSDOM.Generated.GenericTransformStream
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CompressionStream/readable MDN GenericTransformStream.readable documentation>
+getReadable :: (MonadDOM m, IsGenericTransformStream self) => self -> m ReadableStream
+getReadable self = liftDOM ((((Types.toGenericTransformStream self) ^. js "readable") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/CompressionStream/writable MDN GenericTransformStream.writable documentation>
+getWritable :: (MonadDOM m, IsGenericTransformStream self) => self -> m WritableStream
+getWritable self = liftDOM ((((Types.toGenericTransformStream self) ^. js "writable") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Geolocation.hs b/src/JSDOM/Generated/Geolocation.hs
--- a/src/JSDOM/Generated/Geolocation.hs
+++ b/src/JSDOM/Generated/Geolocation.hs
@@ -1,63 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geolocation (webref). Do not edit.
 module JSDOM.Generated.Geolocation
-       (getCurrentPosition, watchPosition, watchPosition_, clearWatch,
-        Geolocation(..), gTypeGeolocation)
+       (clearWatch, getCurrentPosition, watchPosition, watchPosition_, Geolocation(..), gTypeGeolocation)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition Mozilla Geolocation.getCurrentPosition documentation> 
-getCurrentPosition ::
-                   (MonadDOM m) =>
-                     Geolocation ->
-                       PositionCallback ->
-                         Maybe PositionErrorCallback -> Maybe PositionOptions -> m ()
-getCurrentPosition self successCallback errorCallback options
-  = liftDOM
-      (void
-         (self ^. jsf "getCurrentPosition"
-            [toJSVal successCallback, toJSVal errorCallback, toJSVal options]))
+-- | <https://developer.mozilla.org/docs/Web/API/Geolocation/clearWatch MDN Geolocation.clearWatch documentation>
+clearWatch :: (MonadDOM m) => Geolocation -> Int -> m ()
+clearWatch self watchId = liftDOM (void (self ^. jsf "clearWatch" [toJSVal watchId]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.watchPosition Mozilla Geolocation.watchPosition documentation> 
-watchPosition ::
-              (MonadDOM m) =>
-                Geolocation ->
-                  PositionCallback ->
-                    Maybe PositionErrorCallback -> Maybe PositionOptions -> m Int
-watchPosition self successCallback errorCallback options
-  = liftDOM
-      (round <$>
-         ((self ^. jsf "watchPosition"
-             [toJSVal successCallback, toJSVal errorCallback, toJSVal options])
-            >>= valToNumber))
+-- | <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 (self ^. jsf "getCurrentPosition" [toJSVal successCallback, toJSVal errorCallback, P.maybe (P.return jsUndefined) toJSVal options]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.watchPosition Mozilla Geolocation.watchPosition documentation> 
-watchPosition_ ::
-               (MonadDOM m) =>
-                 Geolocation ->
-                   PositionCallback ->
-                     Maybe PositionErrorCallback -> Maybe PositionOptions -> m ()
-watchPosition_ self successCallback errorCallback options
-  = liftDOM
-      (void
-         (self ^. jsf "watchPosition"
-            [toJSVal successCallback, toJSVal errorCallback, toJSVal options]))
+-- | <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 ((P.round <$> ((self ^. jsf "watchPosition" [toJSVal successCallback, toJSVal errorCallback, P.maybe (P.return jsUndefined) toJSVal options]) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.clearWatch Mozilla Geolocation.clearWatch documentation> 
-clearWatch :: (MonadDOM m) => Geolocation -> Int -> m ()
-clearWatch self watchId
-  = liftDOM (void (self ^. jsf "clearWatch" [toJSVal 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 (self ^. jsf "watchPosition" [toJSVal successCallback, toJSVal errorCallback, P.maybe (P.return jsUndefined) toJSVal options]))
diff --git a/src/JSDOM/Generated/GeolocationCoordinates.hs b/src/JSDOM/Generated/GeolocationCoordinates.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GeolocationCoordinates.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geolocation (webref). Do not edit.
+module JSDOM.Generated.GeolocationCoordinates
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/toJSON MDN GeolocationCoordinates.toJSON documentation>
+toJSON :: (MonadDOM m) => GeolocationCoordinates -> m GObject
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/toJSON MDN GeolocationCoordinates.toJSON documentation>
+toJSON_ :: (MonadDOM m) => GeolocationCoordinates -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/accuracy MDN GeolocationCoordinates.accuracy documentation>
+getAccuracy :: (MonadDOM m) => GeolocationCoordinates -> m Double
+getAccuracy self = liftDOM (((self ^. js "accuracy") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/latitude MDN GeolocationCoordinates.latitude documentation>
+getLatitude :: (MonadDOM m) => GeolocationCoordinates -> m Double
+getLatitude self = liftDOM (((self ^. js "latitude") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/longitude MDN GeolocationCoordinates.longitude documentation>
+getLongitude :: (MonadDOM m) => GeolocationCoordinates -> m Double
+getLongitude self = liftDOM (((self ^. js "longitude") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/altitude MDN GeolocationCoordinates.altitude documentation>
+getAltitude :: (MonadDOM m) => GeolocationCoordinates -> m (Maybe Double)
+getAltitude self = liftDOM (((self ^. js "altitude") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/altitude MDN GeolocationCoordinates.altitude documentation>
+getAltitudeUnsafe :: (MonadDOM m, HasCallStack) => GeolocationCoordinates -> m Double
+getAltitudeUnsafe self = liftDOM ((((self ^. js "altitude") >>= 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 (((self ^. js "altitude") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/altitudeAccuracy MDN GeolocationCoordinates.altitudeAccuracy documentation>
+getAltitudeAccuracy :: (MonadDOM m) => GeolocationCoordinates -> m (Maybe Double)
+getAltitudeAccuracy self = liftDOM (((self ^. js "altitudeAccuracy") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/altitudeAccuracy MDN GeolocationCoordinates.altitudeAccuracy documentation>
+getAltitudeAccuracyUnsafe :: (MonadDOM m, HasCallStack) => GeolocationCoordinates -> m Double
+getAltitudeAccuracyUnsafe self = liftDOM ((((self ^. js "altitudeAccuracy") >>= 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 (((self ^. js "altitudeAccuracy") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/heading MDN GeolocationCoordinates.heading documentation>
+getHeading :: (MonadDOM m) => GeolocationCoordinates -> m (Maybe Double)
+getHeading self = liftDOM (((self ^. js "heading") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/heading MDN GeolocationCoordinates.heading documentation>
+getHeadingUnsafe :: (MonadDOM m, HasCallStack) => GeolocationCoordinates -> m Double
+getHeadingUnsafe self = liftDOM ((((self ^. js "heading") >>= 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 (((self ^. js "heading") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/speed MDN GeolocationCoordinates.speed documentation>
+getSpeed :: (MonadDOM m) => GeolocationCoordinates -> m (Maybe Double)
+getSpeed self = liftDOM (((self ^. js "speed") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/speed MDN GeolocationCoordinates.speed documentation>
+getSpeedUnsafe :: (MonadDOM m, HasCallStack) => GeolocationCoordinates -> m Double
+getSpeedUnsafe self = liftDOM ((((self ^. js "speed") >>= 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 (((self ^. js "speed") >>= valToNumber))
diff --git a/src/JSDOM/Generated/GeolocationPosition.hs b/src/JSDOM/Generated/GeolocationPosition.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GeolocationPosition.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geolocation (webref). Do not edit.
+module JSDOM.Generated.GeolocationPosition
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationPosition/toJSON MDN GeolocationPosition.toJSON documentation>
+toJSON :: (MonadDOM m) => GeolocationPosition -> m GObject
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationPosition/toJSON MDN GeolocationPosition.toJSON documentation>
+toJSON_ :: (MonadDOM m) => GeolocationPosition -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationPosition/coords MDN GeolocationPosition.coords documentation>
+getCoords :: (MonadDOM m) => GeolocationPosition -> m GeolocationCoordinates
+getCoords self = liftDOM (((self ^. js "coords") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationPosition/timestamp MDN GeolocationPosition.timestamp documentation>
+getTimestamp :: (MonadDOM m) => GeolocationPosition -> m Word53
+getTimestamp self = liftDOM (((self ^. js "timestamp") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GeolocationPositionError.hs b/src/JSDOM/Generated/GeolocationPositionError.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GeolocationPositionError.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geolocation (webref). Do not edit.
+module JSDOM.Generated.GeolocationPositionError
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationPositionError/code MDN GeolocationPositionError.code documentation>
+getCode :: (MonadDOM m) => GeolocationPositionError -> m Word
+getCode self = liftDOM ((P.round <$> ((self ^. js "code") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/GeolocationPositionError/message MDN GeolocationPositionError.message documentation>
+getMessage :: (MonadDOM m, FromJSString result) => GeolocationPositionError -> m result
+getMessage self = liftDOM (((self ^. js "message") >>= fromJSValUnchecked))
+
+pattern PERMISSION_DENIED = 1
+
+pattern POSITION_UNAVAILABLE = 2
+
+pattern TIMEOUT = 3
diff --git a/src/JSDOM/Generated/Geoposition.hs b/src/JSDOM/Generated/Geoposition.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/Geoposition.hs
+++ /dev/null
@@ -1,29 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.Geoposition
-       (getCoords, getTimestamp, Geoposition(..), gTypeGeoposition) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Geoposition.coords Mozilla Geoposition.coords documentation> 
-getCoords :: (MonadDOM m) => Geoposition -> m Coordinates
-getCoords self
-  = liftDOM ((self ^. js "coords") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Geoposition.timestamp Mozilla Geoposition.timestamp documentation> 
-getTimestamp :: (MonadDOM m) => Geoposition -> m Word
-getTimestamp self
-  = liftDOM (round <$> ((self ^. js "timestamp") >>= valToNumber))
diff --git a/src/JSDOM/Generated/GetAnimationsOptions.hs b/src/JSDOM/Generated/GetAnimationsOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GetAnimationsOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module JSDOM.Generated.GetAnimationsOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/web-animations-1/#dictdef-getanimationsoptions GetAnimationsOptions specification>
+newGetAnimationsOptions :: (MonadDOM m) => m GetAnimationsOptions
+newGetAnimationsOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-getanimationsoptions-subtree GetAnimationsOptions.subtree specification>
+setSubtree :: (MonadDOM m) => GetAnimationsOptions -> Bool -> m ()
+setSubtree self val = liftDOM (void (self ^. jss "subtree" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-getanimationsoptions-subtree GetAnimationsOptions.subtree specification>
+getSubtree :: (MonadDOM m) => GetAnimationsOptions -> m (Maybe Bool)
+getSubtree self = liftDOM (((self ^. js "subtree") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-getanimationsoptions-subtree GetAnimationsOptions.subtree specification>
+getSubtreeUnsafe :: (MonadDOM m, HasCallStack) => GetAnimationsOptions -> m Bool
+getSubtreeUnsafe self = liftDOM ((((self ^. js "subtree") >>= 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 (((self ^. js "subtree") >>= valToBool))
+
+-- | <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 (self ^. jss "pseudoElement" (toJSVal val)))
+
+-- | <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 (((self ^. js "pseudoElement") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "pseudoElement") >>= fromMaybeJSString) >>= 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 (((self ^. js "pseudoElement") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GetComposedRangesOptions.hs b/src/JSDOM/Generated/GetComposedRangesOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GetComposedRangesOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from selection-api (webref). Do not edit.
+module JSDOM.Generated.GetComposedRangesOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/selection-api/#dom-getcomposedrangesoptions GetComposedRangesOptions specification>
+newGetComposedRangesOptions :: (MonadDOM m) => m GetComposedRangesOptions
+newGetComposedRangesOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/selection-api/#dom-getcomposedrangesoptions-shadowroots GetComposedRangesOptions.shadowRoots specification>
+setShadowRoots :: (MonadDOM m) => GetComposedRangesOptions -> [ShadowRoot] -> m ()
+setShadowRoots self val = liftDOM (void (self ^. jss "shadowRoots" (toJSVal val)))
+
+-- | <https://w3c.github.io/selection-api/#dom-getcomposedrangesoptions-shadowroots GetComposedRangesOptions.shadowRoots specification>
+getShadowRoots :: (MonadDOM m) => GetComposedRangesOptions -> m (Maybe [ShadowRoot])
+getShadowRoots self = liftDOM (((self ^. js "shadowRoots") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/selection-api/#dom-getcomposedrangesoptions-shadowroots GetComposedRangesOptions.shadowRoots specification>
+getShadowRootsUnsafe :: (MonadDOM m, HasCallStack) => GetComposedRangesOptions -> m [ShadowRoot]
+getShadowRootsUnsafe self = liftDOM ((((self ^. js "shadowRoots") >>= 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 (((self ^. js "shadowRoots") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GetHTMLOptions.hs b/src/JSDOM/Generated/GetHTMLOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GetHTMLOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.GetHTMLOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#gethtmloptions GetHTMLOptions specification>
+newGetHTMLOptions :: (MonadDOM m) => m GetHTMLOptions
+newGetHTMLOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "serializableShadowRoots" (toJSVal val)))
+
+-- | <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 (((self ^. js "serializableShadowRoots") >>= 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 ((((self ^. js "serializableShadowRoots") >>= 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 (((self ^. js "serializableShadowRoots") >>= valToBool))
+
+-- | <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 (self ^. jss "shadowRoots" (toJSVal val)))
+
+-- | <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 (((self ^. js "shadowRoots") >>= 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 ((((self ^. js "shadowRoots") >>= 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 (((self ^. js "shadowRoots") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GetNotificationOptions.hs b/src/JSDOM/Generated/GetNotificationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GetNotificationOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from notifications (webref). Do not edit.
+module JSDOM.Generated.GetNotificationOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://notifications.spec.whatwg.org/#dictdef-getnotificationoptions GetNotificationOptions specification>
+newGetNotificationOptions :: (MonadDOM m) => m GetNotificationOptions
+newGetNotificationOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-getnotificationoptions-tag GetNotificationOptions.tag specification>
+setTag :: (MonadDOM m, ToJSString val) => GetNotificationOptions -> val -> m ()
+setTag self val = liftDOM (void (self ^. jss "tag" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-getnotificationoptions-tag GetNotificationOptions.tag specification>
+getTag :: (MonadDOM m, FromJSString result) => GetNotificationOptions -> m (Maybe result)
+getTag self = liftDOM (((self ^. js "tag") >>= fromMaybeJSString))
+
+-- | <https://notifications.spec.whatwg.org/#dom-getnotificationoptions-tag GetNotificationOptions.tag specification>
+getTagUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => GetNotificationOptions -> m result
+getTagUnsafe self = liftDOM ((((self ^. js "tag") >>= fromMaybeJSString) >>= 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 (((self ^. js "tag") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/GetRootNodeOptions.hs b/src/JSDOM/Generated/GetRootNodeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/GetRootNodeOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.GetRootNodeOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://dom.spec.whatwg.org/#dictdef-getrootnodeoptions GetRootNodeOptions specification>
+newGetRootNodeOptions :: (MonadDOM m) => m GetRootNodeOptions
+newGetRootNodeOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-getrootnodeoptions-composed GetRootNodeOptions.composed specification>
+setComposed :: (MonadDOM m) => GetRootNodeOptions -> Bool -> m ()
+setComposed self val = liftDOM (void (self ^. jss "composed" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-getrootnodeoptions-composed GetRootNodeOptions.composed specification>
+getComposed :: (MonadDOM m) => GetRootNodeOptions -> m (Maybe Bool)
+getComposed self = liftDOM (((self ^. js "composed") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-getrootnodeoptions-composed GetRootNodeOptions.composed specification>
+getComposedUnsafe :: (MonadDOM m, HasCallStack) => GetRootNodeOptions -> m Bool
+getComposedUnsafe self = liftDOM ((((self ^. js "composed") >>= 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 (((self ^. js "composed") >>= valToBool))
diff --git a/src/JSDOM/Generated/GlobalCrypto.hs b/src/JSDOM/Generated/GlobalCrypto.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/GlobalCrypto.hs
+++ /dev/null
@@ -1,27 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.GlobalCrypto
-       (getCrypto, GlobalCrypto(..), gTypeGlobalCrypto, IsGlobalCrypto,
-        toGlobalCrypto)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalCrypto.crypto Mozilla GlobalCrypto.crypto documentation> 
-getCrypto :: (MonadDOM m, IsGlobalCrypto self) => self -> m Crypto
-getCrypto self
-  = liftDOM
-      (((toGlobalCrypto self) ^. js "crypto") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/GlobalEventHandlers.hs b/src/JSDOM/Generated/GlobalEventHandlers.hs
--- a/src/JSDOM/Generated/GlobalEventHandlers.hs
+++ b/src/JSDOM/Generated/GlobalEventHandlers.hs
@@ -1,522 +1,396 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.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/JSDOM/Generated/GlobalPerformance.hs b/src/JSDOM/Generated/GlobalPerformance.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/GlobalPerformance.hs
+++ /dev/null
@@ -1,29 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.GlobalPerformance
-       (getPerformance, GlobalPerformance(..), gTypeGlobalPerformance,
-        IsGlobalPerformance, toGlobalPerformance)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalPerformance.performance Mozilla GlobalPerformance.performance documentation> 
-getPerformance ::
-               (MonadDOM m, IsGlobalPerformance self) => self -> m Performance
-getPerformance self
-  = liftDOM
-      (((toGlobalPerformance self) ^. js "performance") >>=
-         fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/HMACGetSecretInput.hs b/src/JSDOM/Generated/HMACGetSecretInput.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/HMACGetSecretInput.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# 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 JSDOM.Generated.HMACGetSecretInput
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "salt1" (toJSVal salt1)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "salt1" (toJSVal val)))
+
+-- | <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 (((self ^. js "salt1") >>= 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>
+setSalt2 :: (MonadDOM m, IsArrayBuffer val) => HMACGetSecretInput -> val -> m ()
+setSalt2 self val = liftDOM (void (self ^. jss "salt2" (toJSVal val)))
+
+-- | <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 (((self ^. js "salt2") >>= 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 ((((self ^. js "salt2") >>= 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 (((self ^. js "salt2") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HMACGetSecretOutput.hs b/src/JSDOM/Generated/HMACGetSecretOutput.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/HMACGetSecretOutput.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# 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 JSDOM.Generated.HMACGetSecretOutput
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "output1" (toJSVal output1)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "output1" (toJSVal val)))
+
+-- | <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 (((self ^. js "output1") >>= 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>
+setOutput2 :: (MonadDOM m, IsArrayBuffer val) => HMACGetSecretOutput -> val -> m ()
+setOutput2 self val = liftDOM (void (self ^. jss "output2" (toJSVal val)))
+
+-- | <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 (((self ^. js "output2") >>= 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 ((((self ^. js "output2") >>= 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 (((self ^. js "output2") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLAllCollection.hs b/src/JSDOM/Generated/HTMLAllCollection.hs
--- a/src/JSDOM/Generated/HTMLAllCollection.hs
+++ b/src/JSDOM/Generated/HTMLAllCollection.hs
@@ -1,81 +1,52 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLAllCollection
-       (item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_,
-        namedItemUnsafe, namedItemUnchecked, getLength,
-        HTMLAllCollection(..), gTypeHTMLAllCollection)
+       (item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked, getLength, HTMLAllCollection(..), gTypeHTMLAllCollection)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.item Mozilla HTMLAllCollection.item documentation> 
-item ::
-     (MonadDOM m) => HTMLAllCollection -> Word -> m (Maybe Element)
-item self index
-  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+-- | <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 (((self ^. jsf "item" [P.maybe (P.return jsUndefined) toJSVal nameOrIndex]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.item Mozilla HTMLAllCollection.item documentation> 
-item_ :: (MonadDOM m) => HTMLAllCollection -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal 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 (self ^. jsf "item" [P.maybe (P.return jsUndefined) toJSVal nameOrIndex]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.item Mozilla HTMLAllCollection.item documentation> 
-itemUnsafe ::
-           (MonadDOM m, HasCallStack) =>
-             HTMLAllCollection -> Word -> m Element
-itemUnsafe self index
-  = liftDOM
-      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
-         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 ((((self ^. jsf "item" [P.maybe (P.return jsUndefined) toJSVal 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 ::
-              (MonadDOM m) => HTMLAllCollection -> Word -> m Element
-itemUnchecked self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "item" [P.maybe (P.return jsUndefined) toJSVal nameOrIndex]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.namedItem Mozilla HTMLAllCollection.namedItem documentation> 
-namedItem ::
-          (MonadDOM m, ToJSString name) =>
-            HTMLAllCollection -> name -> m (Maybe HTMLCollectionOrElement)
-namedItem self name = liftDOM ((self ! name) >>= fromJSVal)
+-- | <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 (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.namedItem Mozilla HTMLAllCollection.namedItem documentation> 
-namedItem_ ::
-           (MonadDOM m, ToJSString name) => HTMLAllCollection -> name -> m ()
-namedItem_ self name = liftDOM (void (self ! 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 (self ^. jsf "namedItem" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.namedItem Mozilla HTMLAllCollection.namedItem documentation> 
-namedItemUnsafe ::
-                (MonadDOM m, ToJSString name, HasCallStack) =>
-                  HTMLAllCollection -> name -> m HTMLCollectionOrElement
-namedItemUnsafe self name
-  = liftDOM
-      (((self ! name) >>= fromJSVal) >>=
-         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 ((((self ^. jsf "namedItem" [toJSVal 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 ::
-                   (MonadDOM m, ToJSString name) =>
-                     HTMLAllCollection -> name -> m HTMLCollectionOrElement
-namedItemUnchecked self name
-  = liftDOM ((self ! name) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.length Mozilla HTMLAllCollection.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAllCollection/length MDN HTMLAllCollection.length documentation>
 getLength :: (MonadDOM m) => HTMLAllCollection -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/HTMLAnchorElement.hs b/src/JSDOM/Generated/HTMLAnchorElement.hs
--- a/src/JSDOM/Generated/HTMLAnchorElement.hs
+++ b/src/JSDOM/Generated/HTMLAnchorElement.hs
@@ -1,157 +1,100 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLAnchorElement
-       (setCharset, getCharset, setCoords, getCoords, setDownload,
-        getDownload, setHreflang, getHreflang, setName, getName, setPing,
-        getPing, setRel, getRel, setRev, getRev, setShape, getShape,
-        setTarget, getTarget, setType, getType, setText, getText,
-        getRelList, HTMLAnchorElement(..), gTypeHTMLAnchorElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.charset Mozilla HTMLAnchorElement.charset documentation> 
-setCharset ::
-           (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setCharset self val = liftDOM (self ^. jss "charset" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.charset Mozilla HTMLAnchorElement.charset documentation> 
-getCharset ::
-           (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
-getCharset self
-  = liftDOM ((self ^. js "charset") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.coords Mozilla HTMLAnchorElement.coords documentation> 
-setCoords ::
-          (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setCoords self val = liftDOM (self ^. jss "coords" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.coords Mozilla HTMLAnchorElement.coords documentation> 
-getCoords ::
-          (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
-getCoords self
-  = liftDOM ((self ^. js "coords") >>= fromJSValUnchecked)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.download Mozilla HTMLAnchorElement.download documentation> 
-setDownload ::
-            (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setDownload self val
-  = liftDOM (self ^. jss "download" (toJSVal val))
+-- | <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 (self ^. jss "download" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.download Mozilla HTMLAnchorElement.download documentation> 
-getDownload ::
-            (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
-getDownload self
-  = liftDOM ((self ^. js "download") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/download MDN HTMLAnchorElement.download documentation>
+getDownload :: (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getDownload self = liftDOM (((self ^. js "download") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hreflang Mozilla HTMLAnchorElement.hreflang documentation> 
-setHreflang ::
-            (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setHreflang self val
-  = liftDOM (self ^. jss "hreflang" (toJSVal val))
+-- | <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 (self ^. jss "ping" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hreflang Mozilla HTMLAnchorElement.hreflang documentation> 
-getHreflang ::
-            (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
-getHreflang self
-  = liftDOM ((self ^. js "hreflang") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/ping MDN HTMLAnchorElement.ping documentation>
+getPing :: (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getPing self = liftDOM (((self ^. js "ping") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.name Mozilla HTMLAnchorElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <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 (self ^. jss "rel" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.name Mozilla HTMLAnchorElement.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/rel MDN HTMLAnchorElement.rel documentation>
+getRel :: (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getRel self = liftDOM (((self ^. js "rel") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.ping Mozilla HTMLAnchorElement.ping documentation> 
-setPing ::
-        (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setPing self val = liftDOM (self ^. jss "ping" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/relList MDN HTMLAnchorElement.relList documentation>
+getRelList :: (MonadDOM m) => HTMLAnchorElement -> m DOMTokenList
+getRelList self = liftDOM (((self ^. js "relList") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.ping Mozilla HTMLAnchorElement.ping documentation> 
-getPing ::
-        (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
-getPing self = liftDOM ((self ^. js "ping") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "text" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.rel Mozilla HTMLAnchorElement.rel documentation> 
-setRel ::
-       (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setRel self val = liftDOM (self ^. jss "rel" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/text MDN HTMLAnchorElement.text documentation>
+getText :: (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getText self = liftDOM (((self ^. js "text") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.rel Mozilla HTMLAnchorElement.rel documentation> 
-getRel ::
-       (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
-getRel self = liftDOM ((self ^. js "rel") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "referrerPolicy" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.rev Mozilla HTMLAnchorElement.rev documentation> 
-setRev ::
-       (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setRev self val = liftDOM (self ^. jss "rev" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/referrerPolicy MDN HTMLAnchorElement.referrerPolicy documentation>
+getReferrerPolicy :: (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
+getReferrerPolicy self = liftDOM (((self ^. js "referrerPolicy") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.rev Mozilla HTMLAnchorElement.rev documentation> 
-getRev ::
-       (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
-getRev self = liftDOM ((self ^. js "rev") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "coords" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.shape Mozilla HTMLAnchorElement.shape documentation> 
-setShape ::
-         (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setShape self val = liftDOM (self ^. jss "shape" (toJSVal val))
+-- | <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 (((self ^. js "coords") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.shape Mozilla HTMLAnchorElement.shape documentation> 
-getShape ::
-         (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
-getShape self
-  = liftDOM ((self ^. js "shape") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "charset" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.target Mozilla HTMLAnchorElement.target documentation> 
-setTarget ::
-          (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setTarget self val = liftDOM (self ^. jss "target" (toJSVal val))
+-- | <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 (((self ^. js "charset") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.target Mozilla HTMLAnchorElement.target documentation> 
-getTarget ::
-          (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
-getTarget self
-  = liftDOM ((self ^. js "target") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.type Mozilla HTMLAnchorElement.type documentation> 
-setType ::
-        (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+-- | <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 (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.type Mozilla HTMLAnchorElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "rev" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.text Mozilla HTMLAnchorElement.text documentation> 
-setText ::
-        (MonadDOM m, ToJSString val) => HTMLAnchorElement -> val -> m ()
-setText self val = liftDOM (self ^. jss "text" (toJSVal val))
+-- | <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 (((self ^. js "rev") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.text Mozilla HTMLAnchorElement.text documentation> 
-getText ::
-        (MonadDOM m, FromJSString result) => HTMLAnchorElement -> m result
-getText self = liftDOM ((self ^. js "text") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "shape" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.relList Mozilla HTMLAnchorElement.relList documentation> 
-getRelList :: (MonadDOM m) => HTMLAnchorElement -> m DOMTokenList
-getRelList self
-  = liftDOM ((self ^. js "relList") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "shape") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLAppletElement.hs b/src/JSDOM/Generated/HTMLAppletElement.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/HTMLAppletElement.hs
+++ /dev/null
@@ -1,139 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.HTMLAppletElement
-       (setAlign, getAlign, setAlt, getAlt, setArchive, getArchive,
-        setCode, getCode, setCodeBase, getCodeBase, setHeight, getHeight,
-        setHspace, getHspace, setName, getName, setObject, getObject,
-        setVspace, getVspace, setWidth, getWidth, HTMLAppletElement(..),
-        gTypeHTMLAppletElement)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.align Mozilla HTMLAppletElement.align documentation> 
-setAlign ::
-         (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.align Mozilla HTMLAppletElement.align documentation> 
-getAlign ::
-         (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.alt Mozilla HTMLAppletElement.alt documentation> 
-setAlt ::
-       (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setAlt self val = liftDOM (self ^. jss "alt" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.alt Mozilla HTMLAppletElement.alt documentation> 
-getAlt ::
-       (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
-getAlt self = liftDOM ((self ^. js "alt") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.archive Mozilla HTMLAppletElement.archive documentation> 
-setArchive ::
-           (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setArchive self val = liftDOM (self ^. jss "archive" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.archive Mozilla HTMLAppletElement.archive documentation> 
-getArchive ::
-           (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
-getArchive self
-  = liftDOM ((self ^. js "archive") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.code Mozilla HTMLAppletElement.code documentation> 
-setCode ::
-        (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setCode self val = liftDOM (self ^. jss "code" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.code Mozilla HTMLAppletElement.code documentation> 
-getCode ::
-        (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
-getCode self = liftDOM ((self ^. js "code") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.codeBase Mozilla HTMLAppletElement.codeBase documentation> 
-setCodeBase ::
-            (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setCodeBase self val
-  = liftDOM (self ^. jss "codeBase" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.codeBase Mozilla HTMLAppletElement.codeBase documentation> 
-getCodeBase ::
-            (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
-getCodeBase self
-  = liftDOM ((self ^. js "codeBase") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.height Mozilla HTMLAppletElement.height documentation> 
-setHeight ::
-          (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.height Mozilla HTMLAppletElement.height documentation> 
-getHeight ::
-          (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
-getHeight self
-  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.hspace Mozilla HTMLAppletElement.hspace documentation> 
-setHspace :: (MonadDOM m) => HTMLAppletElement -> Word -> m ()
-setHspace self val = liftDOM (self ^. jss "hspace" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.hspace Mozilla HTMLAppletElement.hspace documentation> 
-getHspace :: (MonadDOM m) => HTMLAppletElement -> m Word
-getHspace self
-  = liftDOM (round <$> ((self ^. js "hspace") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.name Mozilla HTMLAppletElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.name Mozilla HTMLAppletElement.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.object Mozilla HTMLAppletElement.object documentation> 
-setObject ::
-          (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setObject self val = liftDOM (self ^. jss "object" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.object Mozilla HTMLAppletElement.object documentation> 
-getObject ::
-          (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
-getObject self
-  = liftDOM ((self ^. js "object") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.vspace Mozilla HTMLAppletElement.vspace documentation> 
-setVspace :: (MonadDOM m) => HTMLAppletElement -> Word -> m ()
-setVspace self val = liftDOM (self ^. jss "vspace" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.vspace Mozilla HTMLAppletElement.vspace documentation> 
-getVspace :: (MonadDOM m) => HTMLAppletElement -> m Word
-getVspace self
-  = liftDOM (round <$> ((self ^. js "vspace") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.width Mozilla HTMLAppletElement.width documentation> 
-setWidth ::
-         (MonadDOM m, ToJSString val) => HTMLAppletElement -> val -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.width Mozilla HTMLAppletElement.width documentation> 
-getWidth ::
-         (MonadDOM m, FromJSString result) => HTMLAppletElement -> m result
-getWidth self
-  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/HTMLAreaElement.hs b/src/JSDOM/Generated/HTMLAreaElement.hs
--- a/src/JSDOM/Generated/HTMLAreaElement.hs
+++ b/src/JSDOM/Generated/HTMLAreaElement.hs
@@ -1,111 +1,84 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLAreaElement
-       (setAlt, getAlt, setCoords, getCoords, setNoHref, getNoHref,
-        setPing, getPing, setRel, getRel, setShape, getShape, setTarget,
-        getTarget, setDownload, getDownload, getRelList,
-        HTMLAreaElement(..), gTypeHTMLAreaElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.alt Mozilla HTMLAreaElement.alt documentation> 
-setAlt ::
-       (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
-setAlt self val = liftDOM (self ^. jss "alt" (toJSVal val))
+-- | <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 (self ^. jss "alt" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.alt Mozilla HTMLAreaElement.alt documentation> 
-getAlt ::
-       (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
-getAlt self = liftDOM ((self ^. js "alt") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/alt MDN HTMLAreaElement.alt documentation>
+getAlt :: (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getAlt self = liftDOM (((self ^. js "alt") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.coords Mozilla HTMLAreaElement.coords documentation> 
-setCoords ::
-          (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
-setCoords self val = liftDOM (self ^. jss "coords" (toJSVal val))
+-- | <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 (self ^. jss "coords" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.coords Mozilla HTMLAreaElement.coords documentation> 
-getCoords ::
-          (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
-getCoords self
-  = liftDOM ((self ^. js "coords") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/coords MDN HTMLAreaElement.coords documentation>
+getCoords :: (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getCoords self = liftDOM (((self ^. js "coords") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.noHref Mozilla HTMLAreaElement.noHref documentation> 
-setNoHref :: (MonadDOM m) => HTMLAreaElement -> Bool -> m ()
-setNoHref self val = liftDOM (self ^. jss "noHref" (toJSVal val))
+-- | <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 (self ^. jss "shape" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.noHref Mozilla HTMLAreaElement.noHref documentation> 
-getNoHref :: (MonadDOM m) => HTMLAreaElement -> m Bool
-getNoHref self = liftDOM ((self ^. js "noHref") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/shape MDN HTMLAreaElement.shape documentation>
+getShape :: (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getShape self = liftDOM (((self ^. js "shape") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.ping Mozilla HTMLAreaElement.ping documentation> 
-setPing ::
-        (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
-setPing self val = liftDOM (self ^. jss "ping" (toJSVal val))
+-- | <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 (self ^. jss "download" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.ping Mozilla HTMLAreaElement.ping documentation> 
-getPing ::
-        (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
-getPing self = liftDOM ((self ^. js "ping") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/download MDN HTMLAreaElement.download documentation>
+getDownload :: (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getDownload self = liftDOM (((self ^. js "download") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.rel Mozilla HTMLAreaElement.rel documentation> 
-setRel ::
-       (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
-setRel self val = liftDOM (self ^. jss "rel" (toJSVal val))
+-- | <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 (self ^. jss "ping" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.rel Mozilla HTMLAreaElement.rel documentation> 
-getRel ::
-       (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
-getRel self = liftDOM ((self ^. js "rel") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/ping MDN HTMLAreaElement.ping documentation>
+getPing :: (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getPing self = liftDOM (((self ^. js "ping") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.shape Mozilla HTMLAreaElement.shape documentation> 
-setShape ::
-         (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
-setShape self val = liftDOM (self ^. jss "shape" (toJSVal val))
+-- | <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 (self ^. jss "rel" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.shape Mozilla HTMLAreaElement.shape documentation> 
-getShape ::
-         (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
-getShape self
-  = liftDOM ((self ^. js "shape") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/rel MDN HTMLAreaElement.rel documentation>
+getRel :: (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getRel self = liftDOM (((self ^. js "rel") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.target Mozilla HTMLAreaElement.target documentation> 
-setTarget ::
-          (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
-setTarget self val = liftDOM (self ^. jss "target" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/relList MDN HTMLAreaElement.relList documentation>
+getRelList :: (MonadDOM m) => HTMLAreaElement -> m DOMTokenList
+getRelList self = liftDOM (((self ^. js "relList") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.target Mozilla HTMLAreaElement.target documentation> 
-getTarget ::
-          (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
-getTarget self
-  = liftDOM ((self ^. js "target") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "referrerPolicy" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.download Mozilla HTMLAreaElement.download documentation> 
-setDownload ::
-            (MonadDOM m, ToJSString val) => HTMLAreaElement -> val -> m ()
-setDownload self val
-  = liftDOM (self ^. jss "download" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/referrerPolicy MDN HTMLAreaElement.referrerPolicy documentation>
+getReferrerPolicy :: (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
+getReferrerPolicy self = liftDOM (((self ^. js "referrerPolicy") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.download Mozilla HTMLAreaElement.download documentation> 
-getDownload ::
-            (MonadDOM m, FromJSString result) => HTMLAreaElement -> m result
-getDownload self
-  = liftDOM ((self ^. js "download") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "noHref" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.relList Mozilla HTMLAreaElement.relList documentation> 
-getRelList :: (MonadDOM m) => HTMLAreaElement -> m DOMTokenList
-getRelList self
-  = liftDOM ((self ^. js "relList") >>= fromJSValUnchecked)
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-area-nohref HTMLAreaElement.noHref specification>
+getNoHref :: (MonadDOM m) => HTMLAreaElement -> m Bool
+getNoHref self = liftDOM (((self ^. js "noHref") >>= valToBool))
diff --git a/src/JSDOM/Generated/HTMLAttachmentElement.hs b/src/JSDOM/Generated/HTMLAttachmentElement.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/HTMLAttachmentElement.hs
+++ /dev/null
@@ -1,43 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.HTMLAttachmentElement
-       (setFile, getFile, getFileUnsafe, getFileUnchecked,
-        HTMLAttachmentElement(..), gTypeHTMLAttachmentElement)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAttachmentElement.file Mozilla HTMLAttachmentElement.file documentation> 
-setFile ::
-        (MonadDOM m) => HTMLAttachmentElement -> Maybe File -> m ()
-setFile self val = liftDOM (self ^. jss "file" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAttachmentElement.file Mozilla HTMLAttachmentElement.file documentation> 
-getFile :: (MonadDOM m) => HTMLAttachmentElement -> m (Maybe File)
-getFile self = liftDOM ((self ^. js "file") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAttachmentElement.file Mozilla HTMLAttachmentElement.file documentation> 
-getFileUnsafe ::
-              (MonadDOM m, HasCallStack) => HTMLAttachmentElement -> m File
-getFileUnsafe self
-  = liftDOM
-      (((self ^. js "file") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAttachmentElement.file Mozilla HTMLAttachmentElement.file documentation> 
-getFileUnchecked :: (MonadDOM m) => HTMLAttachmentElement -> m File
-getFileUnchecked self
-  = liftDOM ((self ^. js "file") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/HTMLAudioElement.hs b/src/JSDOM/Generated/HTMLAudioElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/HTMLAudioElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.HTMLAudioElement
+       (HTMLAudioElement(..), gTypeHTMLAudioElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/HTMLBRElement.hs b/src/JSDOM/Generated/HTMLBRElement.hs
--- a/src/JSDOM/Generated/HTMLBRElement.hs
+++ b/src/JSDOM/Generated/HTMLBRElement.hs
@@ -1,30 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLBRElement
-       (setClear, getClear, HTMLBRElement(..), gTypeHTMLBRElement) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (setClear, getClear, HTMLBRElement(..), gTypeHTMLBRElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBRElement.clear Mozilla HTMLBRElement.clear documentation> 
-setClear ::
-         (MonadDOM m, ToJSString val) => HTMLBRElement -> val -> m ()
-setClear self val = liftDOM (self ^. jss "clear" (toJSVal val))
+-- | <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 (self ^. jss "clear" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBRElement.clear Mozilla HTMLBRElement.clear documentation> 
-getClear ::
-         (MonadDOM m, FromJSString result) => HTMLBRElement -> m result
-getClear self
-  = liftDOM ((self ^. js "clear") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "clear") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLBaseElement.hs b/src/JSDOM/Generated/HTMLBaseElement.hs
--- a/src/JSDOM/Generated/HTMLBaseElement.hs
+++ b/src/JSDOM/Generated/HTMLBaseElement.hs
@@ -1,42 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLBaseElement
-       (setHref, getHref, setTarget, getTarget, HTMLBaseElement(..),
-        gTypeHTMLBaseElement)
+       (setHref, getHref, setTarget, getTarget, HTMLBaseElement(..), gTypeHTMLBaseElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.href Mozilla HTMLBaseElement.href documentation> 
-setHref ::
-        (MonadDOM m, ToJSString val) => HTMLBaseElement -> val -> m ()
-setHref self val = liftDOM (self ^. jss "href" (toJSVal val))
+-- | <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 (self ^. jss "href" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.href Mozilla HTMLBaseElement.href documentation> 
-getHref ::
-        (MonadDOM m, FromJSString result) => HTMLBaseElement -> m result
-getHref self = liftDOM ((self ^. js "href") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLBaseElement/href MDN HTMLBaseElement.href documentation>
+getHref :: (MonadDOM m, FromJSString result) => HTMLBaseElement -> m result
+getHref self = liftDOM (((self ^. js "href") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.target Mozilla HTMLBaseElement.target documentation> 
-setTarget ::
-          (MonadDOM m, ToJSString val) => HTMLBaseElement -> val -> m ()
-setTarget self val = liftDOM (self ^. jss "target" (toJSVal val))
+-- | <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 (self ^. jss "target" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.target Mozilla HTMLBaseElement.target documentation> 
-getTarget ::
-          (MonadDOM m, FromJSString result) => HTMLBaseElement -> m result
-getTarget self
-  = liftDOM ((self ^. js "target") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLBaseElement/target MDN HTMLBaseElement.target documentation>
+getTarget :: (MonadDOM m, FromJSString result) => HTMLBaseElement -> m result
+getTarget self = liftDOM (((self ^. js "target") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLBodyElement.hs b/src/JSDOM/Generated/HTMLBodyElement.hs
--- a/src/JSDOM/Generated/HTMLBodyElement.hs
+++ b/src/JSDOM/Generated/HTMLBodyElement.hs
@@ -1,172 +1,64 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLBodyElement
-       (setALink, getALink, setBackground, getBackground, setBgColor,
-        getBgColor, setLink, getLink, setText, getText, setVLink, getVLink,
-        blur, error, focus, focusin, focusout, load, resize, scroll,
-        webKitMouseForcechanged, webKitMouseForcedown,
-        webKitMouseForcewillbegin, webKitMouseForceup,
-        webKitWillRevealBottom, webKitWillRevealLeft,
-        webKitWillRevealRight, webKitWillRevealTop, selectionchange,
-        HTMLBodyElement(..), gTypeHTMLBodyElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.aLink Mozilla HTMLBodyElement.aLink documentation> 
-setALink ::
-         (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
-setALink self val = liftDOM (self ^. jss "aLink" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.aLink Mozilla HTMLBodyElement.aLink documentation> 
-getALink ::
-         (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
-getALink self
-  = liftDOM ((self ^. js "aLink") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.background Mozilla HTMLBodyElement.background documentation> 
-setBackground ::
-              (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
-setBackground self val
-  = liftDOM (self ^. jss "background" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.background Mozilla HTMLBodyElement.background documentation> 
-getBackground ::
-              (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
-getBackground self
-  = liftDOM ((self ^. js "background") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.bgColor Mozilla HTMLBodyElement.bgColor documentation> 
-setBgColor ::
-           (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
-setBgColor self val = liftDOM (self ^. jss "bgColor" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.bgColor Mozilla HTMLBodyElement.bgColor documentation> 
-getBgColor ::
-           (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
-getBgColor self
-  = liftDOM ((self ^. js "bgColor") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.link Mozilla HTMLBodyElement.link documentation> 
-setLink ::
-        (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
-setLink self val = liftDOM (self ^. jss "link" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.link Mozilla HTMLBodyElement.link documentation> 
-getLink ::
-        (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
-getLink self = liftDOM ((self ^. js "link") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.text Mozilla HTMLBodyElement.text documentation> 
-setText ::
-        (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
-setText self val = liftDOM (self ^. jss "text" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.text Mozilla HTMLBodyElement.text documentation> 
-getText ::
-        (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
-getText self = liftDOM ((self ^. js "text") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.vLink Mozilla HTMLBodyElement.vLink documentation> 
-setVLink ::
-         (MonadDOM m, ToJSString val) => HTMLBodyElement -> val -> m ()
-setVLink self val = liftDOM (self ^. jss "vLink" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.vLink Mozilla HTMLBodyElement.vLink documentation> 
-getVLink ::
-         (MonadDOM m, FromJSString result) => HTMLBodyElement -> m result
-getVLink self
-  = liftDOM ((self ^. js "vLink") >>= fromJSValUnchecked)
-
--- | <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")
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onload Mozilla HTMLBodyElement.onload documentation> 
-load :: EventName HTMLBodyElement UIEvent
-load = unsafeEventNameAsync (toJSString "load")
+-- | <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 (self ^. jss "text" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onresize Mozilla HTMLBodyElement.onresize documentation> 
-resize :: EventName HTMLBodyElement UIEvent
-resize = unsafeEventName (toJSString "resize")
+-- | <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 (((self ^. js "text") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onscroll Mozilla HTMLBodyElement.onscroll documentation> 
-scroll :: EventName HTMLBodyElement UIEvent
-scroll = unsafeEventName (toJSString "scroll")
+-- | <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 (self ^. jss "link" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitmouseforcechanged Mozilla HTMLBodyElement.onwebkitmouseforcechanged documentation> 
-webKitMouseForcechanged ::
-                          EventName HTMLBodyElement onwebkitmouseforcechanged
-webKitMouseForcechanged
-  = unsafeEventName (toJSString "webkitmouseforcechanged")
+-- | <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 (((self ^. js "link") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitmouseforcedown Mozilla HTMLBodyElement.onwebkitmouseforcedown documentation> 
-webKitMouseForcedown ::
-                       EventName HTMLBodyElement onwebkitmouseforcedown
-webKitMouseForcedown
-  = unsafeEventName (toJSString "webkitmouseforcedown")
+-- | <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 (self ^. jss "vLink" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitmouseforcewillbegin Mozilla HTMLBodyElement.onwebkitmouseforcewillbegin documentation> 
-webKitMouseForcewillbegin ::
-                            EventName HTMLBodyElement onwebkitmouseforcewillbegin
-webKitMouseForcewillbegin
-  = unsafeEventName (toJSString "webkitmouseforcewillbegin")
+-- | <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 (((self ^. js "vLink") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitmouseforceup Mozilla HTMLBodyElement.onwebkitmouseforceup documentation> 
-webKitMouseForceup ::
-                     EventName HTMLBodyElement onwebkitmouseforceup
-webKitMouseForceup
-  = unsafeEventName (toJSString "webkitmouseforceup")
+-- | <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 (self ^. jss "aLink" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitwillrevealbottom Mozilla HTMLBodyElement.onwebkitwillrevealbottom documentation> 
-webKitWillRevealBottom :: EventName HTMLBodyElement Event
-webKitWillRevealBottom
-  = unsafeEventName (toJSString "webkitwillrevealbottom")
+-- | <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 (((self ^. js "aLink") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitwillrevealleft Mozilla HTMLBodyElement.onwebkitwillrevealleft documentation> 
-webKitWillRevealLeft :: EventName HTMLBodyElement Event
-webKitWillRevealLeft
-  = unsafeEventName (toJSString "webkitwillrevealleft")
+-- | <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 (self ^. jss "bgColor" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitwillrevealright Mozilla HTMLBodyElement.onwebkitwillrevealright documentation> 
-webKitWillRevealRight :: EventName HTMLBodyElement Event
-webKitWillRevealRight
-  = unsafeEventName (toJSString "webkitwillrevealright")
+-- | <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 (((self ^. js "bgColor") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitwillrevealtop Mozilla HTMLBodyElement.onwebkitwillrevealtop documentation> 
-webKitWillRevealTop :: EventName HTMLBodyElement Event
-webKitWillRevealTop
-  = unsafeEventName (toJSString "webkitwillrevealtop")
+-- | <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 (self ^. jss "background" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onselectionchange Mozilla HTMLBodyElement.onselectionchange documentation> 
-selectionchange :: EventName HTMLBodyElement onselectionchange
-selectionchange = unsafeEventName (toJSString "selectionchange")
+-- | <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 (((self ^. js "background") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLButtonElement.hs b/src/JSDOM/Generated/HTMLButtonElement.hs
--- a/src/JSDOM/Generated/HTMLButtonElement.hs
+++ b/src/JSDOM/Generated/HTMLButtonElement.hs
@@ -1,188 +1,160 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLButtonElement
-       (checkValidity, checkValidity_, reportValidity, reportValidity_,
-        setCustomValidity, setAutofocus, getAutofocus, setDisabled,
-        getDisabled, getForm, setFormAction, getFormAction, setFormEnctype,
-        getFormEnctype, setFormMethod, getFormMethod, setType, getType,
-        setFormNoValidate, getFormNoValidate, setFormTarget, getFormTarget,
-        setName, getName, setValue, getValue, getWillValidate, getValidity,
-        getValidationMessage, getLabels, HTMLButtonElement(..),
-        gTypeHTMLButtonElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.checkValidity Mozilla HTMLButtonElement.checkValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/checkValidity MDN HTMLButtonElement.checkValidity documentation>
 checkValidity :: (MonadDOM m) => HTMLButtonElement -> m Bool
-checkValidity self
-  = liftDOM ((self ^. jsf "checkValidity" ()) >>= valToBool)
+checkValidity self = liftDOM (((self ^. jsf "checkValidity" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.checkValidity Mozilla HTMLButtonElement.checkValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/checkValidity MDN HTMLButtonElement.checkValidity documentation>
 checkValidity_ :: (MonadDOM m) => HTMLButtonElement -> m ()
-checkValidity_ self
-  = liftDOM (void (self ^. jsf "checkValidity" ()))
+checkValidity_ self = liftDOM (void (self ^. jsf "checkValidity" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.reportValidity Mozilla HTMLButtonElement.reportValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/reportValidity MDN HTMLButtonElement.reportValidity documentation>
 reportValidity :: (MonadDOM m) => HTMLButtonElement -> m Bool
-reportValidity self
-  = liftDOM ((self ^. jsf "reportValidity" ()) >>= valToBool)
+reportValidity self = liftDOM (((self ^. jsf "reportValidity" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.reportValidity Mozilla HTMLButtonElement.reportValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/reportValidity MDN HTMLButtonElement.reportValidity documentation>
 reportValidity_ :: (MonadDOM m) => HTMLButtonElement -> m ()
-reportValidity_ self
-  = liftDOM (void (self ^. jsf "reportValidity" ()))
+reportValidity_ self = liftDOM (void (self ^. jsf "reportValidity" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.setCustomValidity Mozilla HTMLButtonElement.setCustomValidity documentation> 
-setCustomValidity ::
-                  (MonadDOM m, ToJSString error) =>
-                    HTMLButtonElement -> error -> m ()
-setCustomValidity self error
-  = liftDOM (void (self ^. jsf "setCustomValidity" [toJSVal error]))
+-- | <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 (self ^. jsf "setCustomValidity" [toJSVal error]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.autofocus Mozilla HTMLButtonElement.autofocus documentation> 
-setAutofocus :: (MonadDOM m) => HTMLButtonElement -> Bool -> m ()
-setAutofocus self val
-  = liftDOM (self ^. jss "autofocus" (toJSVal val))
+-- | <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 (self ^. jss "command" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.autofocus Mozilla HTMLButtonElement.autofocus documentation> 
-getAutofocus :: (MonadDOM m) => HTMLButtonElement -> m Bool
-getAutofocus self
-  = liftDOM ((self ^. js "autofocus") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/command MDN HTMLButtonElement.command documentation>
+getCommand :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getCommand self = liftDOM (((self ^. js "command") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.disabled Mozilla HTMLButtonElement.disabled documentation> 
+-- | <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 (self ^. jss "commandForElement" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/commandForElement MDN HTMLButtonElement.commandForElement documentation>
+getCommandForElement :: (MonadDOM m) => HTMLButtonElement -> m (Maybe Element)
+getCommandForElement self = liftDOM (((self ^. js "commandForElement") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/commandForElement MDN HTMLButtonElement.commandForElement documentation>
+getCommandForElementUnsafe :: (MonadDOM m, HasCallStack) => HTMLButtonElement -> m Element
+getCommandForElementUnsafe self = liftDOM ((((self ^. js "commandForElement") >>= 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 (((self ^. js "commandForElement") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/disabled MDN HTMLButtonElement.disabled documentation>
 setDisabled :: (MonadDOM m) => HTMLButtonElement -> Bool -> m ()
-setDisabled self val
-  = liftDOM (self ^. jss "disabled" (toJSVal val))
+setDisabled self val = liftDOM (void (self ^. jss "disabled" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.disabled Mozilla HTMLButtonElement.disabled documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/disabled MDN HTMLButtonElement.disabled documentation>
 getDisabled :: (MonadDOM m) => HTMLButtonElement -> m Bool
-getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+getDisabled self = liftDOM (((self ^. js "disabled") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.form Mozilla HTMLButtonElement.form documentation> 
-getForm :: (MonadDOM m) => HTMLButtonElement -> m HTMLFormElement
-getForm self = liftDOM ((self ^. js "form") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/form MDN HTMLButtonElement.form documentation>
+getForm :: (MonadDOM m) => HTMLButtonElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formAction Mozilla HTMLButtonElement.formAction documentation> 
-setFormAction ::
-              (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
-setFormAction self val
-  = liftDOM (self ^. jss "formAction" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/form MDN HTMLButtonElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLButtonElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((self ^. js "form") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formAction Mozilla HTMLButtonElement.formAction documentation> 
-getFormAction ::
-              (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
-getFormAction self
-  = liftDOM ((self ^. js "formAction") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/form MDN HTMLButtonElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLButtonElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formEnctype Mozilla HTMLButtonElement.formEnctype documentation> 
-setFormEnctype ::
-               (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
-setFormEnctype self val
-  = liftDOM (self ^. jss "formEnctype" (toJSVal val))
+-- | <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 (self ^. jss "formAction" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formEnctype Mozilla HTMLButtonElement.formEnctype documentation> 
-getFormEnctype ::
-               (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
-getFormEnctype self
-  = liftDOM ((self ^. js "formEnctype") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/formAction MDN HTMLButtonElement.formAction documentation>
+getFormAction :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getFormAction self = liftDOM (((self ^. js "formAction") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formMethod Mozilla HTMLButtonElement.formMethod documentation> 
-setFormMethod ::
-              (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
-setFormMethod self val
-  = liftDOM (self ^. jss "formMethod" (toJSVal val))
+-- | <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 (self ^. jss "formEnctype" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formMethod Mozilla HTMLButtonElement.formMethod documentation> 
-getFormMethod ::
-              (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
-getFormMethod self
-  = liftDOM ((self ^. js "formMethod") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/formEnctype MDN HTMLButtonElement.formEnctype documentation>
+getFormEnctype :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getFormEnctype self = liftDOM (((self ^. js "formEnctype") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.type Mozilla HTMLButtonElement.type documentation> 
-setType ::
-        (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
-setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+-- | <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 (self ^. jss "formMethod" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.type Mozilla HTMLButtonElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/formMethod MDN HTMLButtonElement.formMethod documentation>
+getFormMethod :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getFormMethod self = liftDOM (((self ^. js "formMethod") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formNoValidate Mozilla HTMLButtonElement.formNoValidate documentation> 
-setFormNoValidate ::
-                  (MonadDOM m) => HTMLButtonElement -> Bool -> m ()
-setFormNoValidate self val
-  = liftDOM (self ^. jss "formNoValidate" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/formNoValidate MDN HTMLButtonElement.formNoValidate documentation>
+setFormNoValidate :: (MonadDOM m) => HTMLButtonElement -> Bool -> m ()
+setFormNoValidate self val = liftDOM (void (self ^. jss "formNoValidate" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formNoValidate Mozilla HTMLButtonElement.formNoValidate documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/formNoValidate MDN HTMLButtonElement.formNoValidate documentation>
 getFormNoValidate :: (MonadDOM m) => HTMLButtonElement -> m Bool
-getFormNoValidate self
-  = liftDOM ((self ^. js "formNoValidate") >>= valToBool)
+getFormNoValidate self = liftDOM (((self ^. js "formNoValidate") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formTarget Mozilla HTMLButtonElement.formTarget documentation> 
-setFormTarget ::
-              (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
-setFormTarget self val
-  = liftDOM (self ^. jss "formTarget" (toJSVal val))
+-- | <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 (self ^. jss "formTarget" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formTarget Mozilla HTMLButtonElement.formTarget documentation> 
-getFormTarget ::
-              (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
-getFormTarget self
-  = liftDOM ((self ^. js "formTarget") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/formTarget MDN HTMLButtonElement.formTarget documentation>
+getFormTarget :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getFormTarget self = liftDOM (((self ^. js "formTarget") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.name Mozilla HTMLButtonElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <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 (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.name Mozilla HTMLButtonElement.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/name MDN HTMLButtonElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.value Mozilla HTMLButtonElement.value documentation> 
-setValue ::
-         (MonadDOM m, ToJSString val) => HTMLButtonElement -> val -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+-- | <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 (self ^. jss "type" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.value Mozilla HTMLButtonElement.value documentation> 
-getValue ::
-         (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
-getValue self
-  = liftDOM ((self ^. js "value") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/type MDN HTMLButtonElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.willValidate Mozilla HTMLButtonElement.willValidate documentation> 
+-- | <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 (self ^. jss "value" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/value MDN HTMLButtonElement.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getValue self = liftDOM (((self ^. js "value") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/willValidate MDN HTMLButtonElement.willValidate documentation>
 getWillValidate :: (MonadDOM m) => HTMLButtonElement -> m Bool
-getWillValidate self
-  = liftDOM ((self ^. js "willValidate") >>= valToBool)
+getWillValidate self = liftDOM (((self ^. js "willValidate") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.validity Mozilla HTMLButtonElement.validity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/validity MDN HTMLButtonElement.validity documentation>
 getValidity :: (MonadDOM m) => HTMLButtonElement -> m ValidityState
-getValidity self
-  = liftDOM ((self ^. js "validity") >>= fromJSValUnchecked)
+getValidity self = liftDOM (((self ^. js "validity") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.validationMessage Mozilla HTMLButtonElement.validationMessage documentation> 
-getValidationMessage ::
-                     (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
-getValidationMessage self
-  = liftDOM ((self ^. js "validationMessage") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/validationMessage MDN HTMLButtonElement.validationMessage documentation>
+getValidationMessage :: (MonadDOM m, FromJSString result) => HTMLButtonElement -> m result
+getValidationMessage self = liftDOM (((self ^. js "validationMessage") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.labels Mozilla HTMLButtonElement.labels documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLButtonElement/labels MDN HTMLButtonElement.labels documentation>
 getLabels :: (MonadDOM m) => HTMLButtonElement -> m NodeList
-getLabels self
-  = liftDOM ((self ^. js "labels") >>= fromJSValUnchecked)
+getLabels self = liftDOM (((self ^. js "labels") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLCanvasElement.hs b/src/JSDOM/Generated/HTMLCanvasElement.hs
--- a/src/JSDOM/Generated/HTMLCanvasElement.hs
+++ b/src/JSDOM/Generated/HTMLCanvasElement.hs
@@ -1,125 +1,93 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLCanvasElement
-       (getContext, getContext_, getContextUnsafe, getContextUnchecked,
-        toDataURL, toDataURL_, toBlob', captureStream, captureStream_,
-        setWidth, getWidth, setHeight, getHeight, HTMLCanvasElement(..),
-        gTypeHTMLCanvasElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types hiding (toBlob)
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
-getContext ::
-           (MonadDOM m, ToJSString contextId, ToJSVal arguments) =>
-             HTMLCanvasElement ->
-               contextId -> [arguments] -> m (Maybe RenderingContext)
-getContext self contextId arguments
-  = liftDOM
-      ((self ^. jsf "getContext"
-          [toJSVal contextId, toJSVal (array arguments)])
-         >>= fromJSVal)
+-- | <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 (((self ^. jsf "captureStream" [P.maybe (P.return jsUndefined) toJSVal frameRequestRate]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
-getContext_ ::
-            (MonadDOM m, ToJSString contextId, ToJSVal arguments) =>
-              HTMLCanvasElement -> contextId -> [arguments] -> m ()
-getContext_ self contextId arguments
-  = liftDOM
-      (void
-         (self ^. jsf "getContext"
-            [toJSVal contextId, toJSVal (array 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 (self ^. jsf "captureStream" [P.maybe (P.return jsUndefined) toJSVal frameRequestRate]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
-getContextUnsafe ::
-                 (MonadDOM m, ToJSString contextId, ToJSVal arguments,
-                  HasCallStack) =>
-                   HTMLCanvasElement -> contextId -> [arguments] -> m RenderingContext
-getContextUnsafe self contextId arguments
-  = liftDOM
-      (((self ^. jsf "getContext"
-           [toJSVal contextId, toJSVal (array arguments)])
-          >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((self ^. jsf "getContext" [toJSVal contextId, toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
-getContextUnchecked ::
-                    (MonadDOM m, ToJSString contextId, ToJSVal arguments) =>
-                      HTMLCanvasElement -> contextId -> [arguments] -> m RenderingContext
-getContextUnchecked self contextId arguments
-  = liftDOM
-      ((self ^. jsf "getContext"
-          [toJSVal contextId, toJSVal (array arguments)])
-         >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "getContext" [toJSVal contextId, toJSVal options]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.toDataURL Mozilla HTMLCanvasElement.toDataURL documentation> 
-toDataURL ::
-          (MonadDOM m, ToJSString type', FromJSString result) =>
-            HTMLCanvasElement -> Maybe type' -> m result
-toDataURL self type'
-  = liftDOM
-      ((self ^. jsf "toDataURL" [toJSVal type']) >>= fromJSValUnchecked)
+-- | <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 ((((self ^. jsf "getContext" [toJSVal contextId, toJSVal 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_ ::
-           (MonadDOM m, ToJSString type') =>
-             HTMLCanvasElement -> Maybe type' -> m ()
-toDataURL_ self type'
-  = liftDOM (void (self ^. jsf "toDataURL" [toJSVal 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 (((self ^. jsf "getContext" [toJSVal contextId, toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.toBlob Mozilla HTMLCanvasElement.toBlob documentation> 
-toBlob' ::
-        (MonadDOM m, ToJSString type', ToJSVal quality) =>
-          HTMLCanvasElement ->
-            BlobCallback -> Maybe type' -> Maybe quality -> m ()
-toBlob' self callback type' quality
-  = liftDOM
-      (void
-         (self ^. jsf "toBlob"
-            [toJSVal callback, toJSVal type', toJSVal quality]))
+-- | <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 (self ^. jsf "toBlob" [toJSVal callback', P.maybe (P.return jsUndefined) toJSVal type', toJSVal quality]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.captureStream Mozilla HTMLCanvasElement.captureStream documentation> 
-captureStream ::
-              (MonadDOM m) => HTMLCanvasElement -> Maybe Double -> m MediaStream
-captureStream self frameRequestRate
-  = liftDOM
-      ((self ^. jsf "captureStream" [toJSVal frameRequestRate]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "toDataURL" [P.maybe (P.return jsUndefined) toJSVal type']) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.captureStream Mozilla HTMLCanvasElement.captureStream documentation> 
-captureStream_ ::
-               (MonadDOM m) => HTMLCanvasElement -> Maybe Double -> m ()
-captureStream_ self frameRequestRate
-  = liftDOM
-      (void (self ^. jsf "captureStream" [toJSVal 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 (self ^. jsf "toDataURL" [P.maybe (P.return jsUndefined) toJSVal type']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.width Mozilla HTMLCanvasElement.width documentation> 
+-- | <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 (((self ^. jsf "toDataURL" [P.maybe (P.return jsUndefined) toJSVal type', toJSVal quality]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "toDataURL" [P.maybe (P.return jsUndefined) toJSVal type', toJSVal quality]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/transferControlToOffscreen MDN HTMLCanvasElement.transferControlToOffscreen documentation>
+transferControlToOffscreen :: (MonadDOM m) => HTMLCanvasElement -> m OffscreenCanvas
+transferControlToOffscreen self = liftDOM (((self ^. jsf "transferControlToOffscreen" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/transferControlToOffscreen MDN HTMLCanvasElement.transferControlToOffscreen documentation>
+transferControlToOffscreen_ :: (MonadDOM m) => HTMLCanvasElement -> m ()
+transferControlToOffscreen_ self = liftDOM (void (self ^. jsf "transferControlToOffscreen" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/width MDN HTMLCanvasElement.width documentation>
 setWidth :: (MonadDOM m) => HTMLCanvasElement -> Word -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.width Mozilla HTMLCanvasElement.width documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/width MDN HTMLCanvasElement.width documentation>
 getWidth :: (MonadDOM m) => HTMLCanvasElement -> m Word
-getWidth self
-  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
+getWidth self = liftDOM ((P.round <$> ((self ^. js "width") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.height Mozilla HTMLCanvasElement.height documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/height MDN HTMLCanvasElement.height documentation>
 setHeight :: (MonadDOM m) => HTMLCanvasElement -> Word -> m ()
-setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+setHeight self val = liftDOM (void (self ^. jss "height" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.height Mozilla HTMLCanvasElement.height documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/height MDN HTMLCanvasElement.height documentation>
 getHeight :: (MonadDOM m) => HTMLCanvasElement -> m Word
-getHeight self
-  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
+getHeight self = liftDOM ((P.round <$> ((self ^. js "height") >>= valToNumber)))
+
+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/JSDOM/Generated/HTMLCollection.hs b/src/JSDOM/Generated/HTMLCollection.hs
--- a/src/JSDOM/Generated/HTMLCollection.hs
+++ b/src/JSDOM/Generated/HTMLCollection.hs
@@ -1,94 +1,52 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.HTMLCollection
-       (item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_,
-        namedItemUnsafe, namedItemUnchecked, getLength, HTMLCollection(..),
-        gTypeHTMLCollection, IsHTMLCollection, toHTMLCollection)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.item Mozilla HTMLCollection.item documentation> 
-item ::
-     (MonadDOM m, IsHTMLCollection self) =>
-       self -> Word -> m (Maybe Element)
-item self index
-  = liftDOM
-      (((toHTMLCollection self) ^. jsf "item" [toJSVal index]) >>=
-         fromJSVal)
+-- | <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 ((((Types.toHTMLCollection self) ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.item Mozilla HTMLCollection.item documentation> 
-item_ ::
-      (MonadDOM m, IsHTMLCollection self) => self -> Word -> m ()
-item_ self index
-  = liftDOM
-      (void ((toHTMLCollection self) ^. jsf "item" [toJSVal 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 ((Types.toHTMLCollection self) ^. jsf "item" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.item Mozilla HTMLCollection.item documentation> 
-itemUnsafe ::
-           (MonadDOM m, IsHTMLCollection self, HasCallStack) =>
-             self -> Word -> m Element
-itemUnsafe self index
-  = liftDOM
-      ((((toHTMLCollection self) ^. jsf "item" [toJSVal index]) >>=
-          fromJSVal)
-         >>= 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 (((((Types.toHTMLCollection self) ^. jsf "item" [toJSVal 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 ::
-              (MonadDOM m, IsHTMLCollection self) => self -> Word -> m Element
-itemUnchecked self index
-  = liftDOM
-      (((toHTMLCollection self) ^. jsf "item" [toJSVal index]) >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toHTMLCollection self) ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.namedItem Mozilla HTMLCollection.namedItem documentation> 
-namedItem ::
-          (MonadDOM m, IsHTMLCollection self, ToJSString name) =>
-            self -> name -> m (Maybe Element)
-namedItem self name
-  = liftDOM (((toHTMLCollection self) ! name) >>= fromJSVal)
+-- | <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 ((((Types.toHTMLCollection self) ^. jsf "namedItem" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.namedItem Mozilla HTMLCollection.namedItem documentation> 
-namedItem_ ::
-           (MonadDOM m, IsHTMLCollection self, ToJSString name) =>
-             self -> name -> m ()
-namedItem_ self name
-  = liftDOM (void ((toHTMLCollection self) ! 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 ((Types.toHTMLCollection self) ^. jsf "namedItem" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.namedItem Mozilla HTMLCollection.namedItem documentation> 
-namedItemUnsafe ::
-                (MonadDOM m, IsHTMLCollection self, ToJSString name,
-                 HasCallStack) =>
-                  self -> name -> m Element
-namedItemUnsafe self name
-  = liftDOM
-      ((((toHTMLCollection self) ! name) >>= fromJSVal) >>=
-         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 (((((Types.toHTMLCollection self) ^. jsf "namedItem" [toJSVal 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 ::
-                   (MonadDOM m, IsHTMLCollection self, ToJSString name) =>
-                     self -> name -> m Element
-namedItemUnchecked self name
-  = liftDOM (((toHTMLCollection self) ! name) >>= fromJSValUnchecked)
+-- | <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 ((((Types.toHTMLCollection self) ^. jsf "namedItem" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.length Mozilla HTMLCollection.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLCollection/length MDN HTMLCollection.length documentation>
 getLength :: (MonadDOM m, IsHTMLCollection self) => self -> m Word
-getLength self
-  = liftDOM
-      (round <$>
-         (((toHTMLCollection self) ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> (((Types.toHTMLCollection self) ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/HTMLDListElement.hs b/src/JSDOM/Generated/HTMLDListElement.hs
--- a/src/JSDOM/Generated/HTMLDListElement.hs
+++ b/src/JSDOM/Generated/HTMLDListElement.hs
@@ -1,29 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLDListElement
-       (setCompact, getCompact, HTMLDListElement(..),
-        gTypeHTMLDListElement)
+       (setCompact, getCompact, HTMLDListElement(..), gTypeHTMLDListElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDListElement.compact Mozilla HTMLDListElement.compact documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDListElement/compact MDN HTMLDListElement.compact documentation>
 setCompact :: (MonadDOM m) => HTMLDListElement -> Bool -> m ()
-setCompact self val = liftDOM (self ^. jss "compact" (toJSVal val))
+setCompact self val = liftDOM (void (self ^. jss "compact" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDListElement.compact Mozilla HTMLDListElement.compact documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDListElement/compact MDN HTMLDListElement.compact documentation>
 getCompact :: (MonadDOM m) => HTMLDListElement -> m Bool
-getCompact self = liftDOM ((self ^. js "compact") >>= valToBool)
+getCompact self = liftDOM (((self ^. js "compact") >>= valToBool))
diff --git a/src/JSDOM/Generated/HTMLDataElement.hs b/src/JSDOM/Generated/HTMLDataElement.hs
--- a/src/JSDOM/Generated/HTMLDataElement.hs
+++ b/src/JSDOM/Generated/HTMLDataElement.hs
@@ -1,31 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLDataElement
        (setValue, getValue, HTMLDataElement(..), gTypeHTMLDataElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataElement.value Mozilla HTMLDataElement.value documentation> 
-setValue ::
-         (MonadDOM m, ToJSString val) => HTMLDataElement -> val -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+-- | <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 (self ^. jss "value" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataElement.value Mozilla HTMLDataElement.value documentation> 
-getValue ::
-         (MonadDOM m, FromJSString result) => HTMLDataElement -> m result
-getValue self
-  = liftDOM ((self ^. js "value") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDataElement/value MDN HTMLDataElement.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => HTMLDataElement -> m result
+getValue self = liftDOM (((self ^. js "value") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLDataListElement.hs b/src/JSDOM/Generated/HTMLDataListElement.hs
--- a/src/JSDOM/Generated/HTMLDataListElement.hs
+++ b/src/JSDOM/Generated/HTMLDataListElement.hs
@@ -1,26 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLDataListElement
        (getOptions, HTMLDataListElement(..), gTypeHTMLDataListElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataListElement.options Mozilla HTMLDataListElement.options documentation> 
-getOptions ::
-           (MonadDOM m) => HTMLDataListElement -> m HTMLCollection
-getOptions self
-  = liftDOM ((self ^. js "options") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDataListElement/options MDN HTMLDataListElement.options documentation>
+getOptions :: (MonadDOM m) => HTMLDataListElement -> m HTMLCollection
+getOptions self = liftDOM (((self ^. js "options") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLDetailsElement.hs b/src/JSDOM/Generated/HTMLDetailsElement.hs
--- a/src/JSDOM/Generated/HTMLDetailsElement.hs
+++ b/src/JSDOM/Generated/HTMLDetailsElement.hs
@@ -1,28 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLDetailsElement
-       (setOpen, getOpen, HTMLDetailsElement(..), gTypeHTMLDetailsElement)
+       (setName, getName, setOpen, getOpen, HTMLDetailsElement(..), gTypeHTMLDetailsElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDetailsElement.open Mozilla HTMLDetailsElement.open documentation> 
+-- | <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 (self ^. jss "name" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDetailsElement/name MDN HTMLDetailsElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLDetailsElement -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDetailsElement/open MDN HTMLDetailsElement.open documentation>
 setOpen :: (MonadDOM m) => HTMLDetailsElement -> Bool -> m ()
-setOpen self val = liftDOM (self ^. jss "open" (toJSVal val))
+setOpen self val = liftDOM (void (self ^. jss "open" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDetailsElement.open Mozilla HTMLDetailsElement.open documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDetailsElement/open MDN HTMLDetailsElement.open documentation>
 getOpen :: (MonadDOM m) => HTMLDetailsElement -> m Bool
-getOpen self = liftDOM ((self ^. js "open") >>= valToBool)
+getOpen self = liftDOM (((self ^. js "open") >>= valToBool))
diff --git a/src/JSDOM/Generated/HTMLDialogElement.hs b/src/JSDOM/Generated/HTMLDialogElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/HTMLDialogElement.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.HTMLDialogElement
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "close" [P.maybe (P.return jsUndefined) toJSVal returnValue]))
+
+-- | <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 (self ^. jsf "requestClose" [P.maybe (P.return jsUndefined) toJSVal returnValue]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/show MDN HTMLDialogElement.show documentation>
+show :: (MonadDOM m) => HTMLDialogElement -> m ()
+show self = liftDOM (void (self ^. jsf "show" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/showModal MDN HTMLDialogElement.showModal documentation>
+showModal :: (MonadDOM m) => HTMLDialogElement -> m ()
+showModal self = liftDOM (void (self ^. jsf "showModal" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/open MDN HTMLDialogElement.open documentation>
+setOpen :: (MonadDOM m) => HTMLDialogElement -> Bool -> m ()
+setOpen self val = liftDOM (void (self ^. jss "open" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/open MDN HTMLDialogElement.open documentation>
+getOpen :: (MonadDOM m) => HTMLDialogElement -> m Bool
+getOpen self = liftDOM (((self ^. js "open") >>= valToBool))
+
+-- | <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 (self ^. jss "returnValue" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/returnValue MDN HTMLDialogElement.returnValue documentation>
+getReturnValue :: (MonadDOM m, FromJSString result) => HTMLDialogElement -> m result
+getReturnValue self = liftDOM (((self ^. js "returnValue") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "closedBy" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/closedBy MDN HTMLDialogElement.closedBy documentation>
+getClosedBy :: (MonadDOM m, FromJSString result) => HTMLDialogElement -> m result
+getClosedBy self = liftDOM (((self ^. js "closedBy") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLDirectoryElement.hs b/src/JSDOM/Generated/HTMLDirectoryElement.hs
--- a/src/JSDOM/Generated/HTMLDirectoryElement.hs
+++ b/src/JSDOM/Generated/HTMLDirectoryElement.hs
@@ -1,29 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLDirectoryElement
-       (setCompact, getCompact, HTMLDirectoryElement(..),
-        gTypeHTMLDirectoryElement)
+       (setCompact, getCompact, HTMLDirectoryElement(..), gTypeHTMLDirectoryElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDirectoryElement.compact Mozilla HTMLDirectoryElement.compact documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-dir-compact HTMLDirectoryElement.compact specification>
 setCompact :: (MonadDOM m) => HTMLDirectoryElement -> Bool -> m ()
-setCompact self val = liftDOM (self ^. jss "compact" (toJSVal val))
+setCompact self val = liftDOM (void (self ^. jss "compact" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDirectoryElement.compact Mozilla HTMLDirectoryElement.compact documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-dir-compact HTMLDirectoryElement.compact specification>
 getCompact :: (MonadDOM m) => HTMLDirectoryElement -> m Bool
-getCompact self = liftDOM ((self ^. js "compact") >>= valToBool)
+getCompact self = liftDOM (((self ^. js "compact") >>= valToBool))
diff --git a/src/JSDOM/Generated/HTMLDivElement.hs b/src/JSDOM/Generated/HTMLDivElement.hs
--- a/src/JSDOM/Generated/HTMLDivElement.hs
+++ b/src/JSDOM/Generated/HTMLDivElement.hs
@@ -1,30 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLDivElement
-       (setAlign, getAlign, HTMLDivElement(..), gTypeHTMLDivElement) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (setAlign, getAlign, HTMLDivElement(..), gTypeHTMLDivElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDivElement.align Mozilla HTMLDivElement.align documentation> 
-setAlign ::
-         (MonadDOM m, ToJSString val) => HTMLDivElement -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+-- | <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 (self ^. jss "align" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDivElement.align Mozilla HTMLDivElement.align documentation> 
-getAlign ::
-         (MonadDOM m, FromJSString result) => HTMLDivElement -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "align") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLDocument.hs b/src/JSDOM/Generated/HTMLDocument.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/HTMLDocument.hs
+++ /dev/null
@@ -1,119 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.HTMLDocument
-       (open, close, write, writeln, clear, captureEvents, releaseEvents,
-        getAll, setBgColor, getBgColor, setFgColor, getFgColor,
-        setAlinkColor, getAlinkColor, setLinkColor, getLinkColor,
-        setVlinkColor, getVlinkColor, HTMLDocument(..), gTypeHTMLDocument)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.open Mozilla HTMLDocument.open documentation> 
-open :: (MonadDOM m) => HTMLDocument -> m ()
-open self = liftDOM (void (self ^. jsf "open" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.close Mozilla HTMLDocument.close documentation> 
-close :: (MonadDOM m) => HTMLDocument -> m ()
-close self = liftDOM (void (self ^. jsf "close" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.write Mozilla HTMLDocument.write documentation> 
-write ::
-      (MonadDOM m, ToJSString text) => HTMLDocument -> Maybe text -> m ()
-write self text
-  = liftDOM (void (self ^. jsf "write" [toJSVal text]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.writeln Mozilla HTMLDocument.writeln documentation> 
-writeln ::
-        (MonadDOM m, ToJSString text) => HTMLDocument -> Maybe text -> m ()
-writeln self text
-  = liftDOM (void (self ^. jsf "writeln" [toJSVal text]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.clear Mozilla HTMLDocument.clear documentation> 
-clear :: (MonadDOM m) => HTMLDocument -> m ()
-clear self = liftDOM (void (self ^. jsf "clear" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.captureEvents Mozilla HTMLDocument.captureEvents documentation> 
-captureEvents :: (MonadDOM m) => HTMLDocument -> m ()
-captureEvents self
-  = liftDOM (void (self ^. jsf "captureEvents" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.releaseEvents Mozilla HTMLDocument.releaseEvents documentation> 
-releaseEvents :: (MonadDOM m) => HTMLDocument -> m ()
-releaseEvents self
-  = liftDOM (void (self ^. jsf "releaseEvents" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.all Mozilla HTMLDocument.all documentation> 
-getAll :: (MonadDOM m) => HTMLDocument -> m HTMLAllCollection
-getAll self = liftDOM ((self ^. js "all") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.bgColor Mozilla HTMLDocument.bgColor documentation> 
-setBgColor ::
-           (MonadDOM m, ToJSString val) => HTMLDocument -> val -> m ()
-setBgColor self val = liftDOM (self ^. jss "bgColor" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.bgColor Mozilla HTMLDocument.bgColor documentation> 
-getBgColor ::
-           (MonadDOM m, FromJSString result) => HTMLDocument -> m result
-getBgColor self
-  = liftDOM ((self ^. js "bgColor") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.fgColor Mozilla HTMLDocument.fgColor documentation> 
-setFgColor ::
-           (MonadDOM m, ToJSString val) => HTMLDocument -> val -> m ()
-setFgColor self val = liftDOM (self ^. jss "fgColor" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.fgColor Mozilla HTMLDocument.fgColor documentation> 
-getFgColor ::
-           (MonadDOM m, FromJSString result) => HTMLDocument -> m result
-getFgColor self
-  = liftDOM ((self ^. js "fgColor") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.alinkColor Mozilla HTMLDocument.alinkColor documentation> 
-setAlinkColor ::
-              (MonadDOM m, ToJSString val) => HTMLDocument -> val -> m ()
-setAlinkColor self val
-  = liftDOM (self ^. jss "alinkColor" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.alinkColor Mozilla HTMLDocument.alinkColor documentation> 
-getAlinkColor ::
-              (MonadDOM m, FromJSString result) => HTMLDocument -> m result
-getAlinkColor self
-  = liftDOM ((self ^. js "alinkColor") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.linkColor Mozilla HTMLDocument.linkColor documentation> 
-setLinkColor ::
-             (MonadDOM m, ToJSString val) => HTMLDocument -> val -> m ()
-setLinkColor self val
-  = liftDOM (self ^. jss "linkColor" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.linkColor Mozilla HTMLDocument.linkColor documentation> 
-getLinkColor ::
-             (MonadDOM m, FromJSString result) => HTMLDocument -> m result
-getLinkColor self
-  = liftDOM ((self ^. js "linkColor") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.vlinkColor Mozilla HTMLDocument.vlinkColor documentation> 
-setVlinkColor ::
-              (MonadDOM m, ToJSString val) => HTMLDocument -> val -> m ()
-setVlinkColor self val
-  = liftDOM (self ^. jss "vlinkColor" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.vlinkColor Mozilla HTMLDocument.vlinkColor documentation> 
-getVlinkColor ::
-              (MonadDOM m, FromJSString result) => HTMLDocument -> m result
-getVlinkColor self
-  = liftDOM ((self ^. js "vlinkColor") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/HTMLElement.hs b/src/JSDOM/Generated/HTMLElement.hs
--- a/src/JSDOM/Generated/HTMLElement.hs
+++ b/src/JSDOM/Generated/HTMLElement.hs
@@ -1,325 +1,218 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLElement
-       (newHTMLElement, click, focus, blur, setTitle, getTitle, setLang,
-        getLang, setTranslate, getTranslate, setDir, getDir, getDataset,
-        setHidden, getHidden, setTabIndex, getTabIndex, setAccessKey,
-        getAccessKey, setDraggable, getDraggable, setSpellcheck,
-        getSpellcheck, setInnerText, getInnerText, setContentEditable,
-        getContentEditable, getIsContentEditable, getOffsetParent,
-        getOffsetParentUnsafe, getOffsetParentUnchecked, getOffsetTop,
-        getOffsetLeft, getOffsetWidth, getOffsetHeight, setOuterText,
-        getOuterText, setAutocorrect, getAutocorrect, setAutocapitalize,
-        getAutocapitalize, setWebkitdropzone, getWebkitdropzone,
-        HTMLElement(..), gTypeHTMLElement, IsHTMLElement, toHTMLElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement Mozilla HTMLElement documentation> 
-newHTMLElement :: (MonadDOM m) => m HTMLElement
-newHTMLElement
-  = liftDOM (HTMLElement <$> new (jsg "HTMLElement") ())
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/attachInternals MDN HTMLElement.attachInternals documentation>
+attachInternals :: (MonadDOM m, IsHTMLElement self) => self -> m ElementInternals
+attachInternals self = liftDOM ((((Types.toHTMLElement self) ^. jsf "attachInternals" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.click Mozilla HTMLElement.click documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/attachInternals MDN HTMLElement.attachInternals documentation>
+attachInternals_ :: (MonadDOM m, IsHTMLElement self) => self -> m ()
+attachInternals_ self = liftDOM (void ((Types.toHTMLElement self) ^. jsf "attachInternals" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/click MDN HTMLElement.click documentation>
 click :: (MonadDOM m, IsHTMLElement self) => self -> m ()
-click self
-  = liftDOM (void ((toHTMLElement self) ^. jsf "click" ()))
+click self = liftDOM (void ((Types.toHTMLElement self) ^. jsf "click" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.focus Mozilla HTMLElement.focus documentation> 
-focus :: (MonadDOM m, IsHTMLElement self) => self -> m ()
-focus self
-  = liftDOM (void ((toHTMLElement self) ^. jsf "focus" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/hidePopover MDN HTMLElement.hidePopover documentation>
+hidePopover :: (MonadDOM m, IsHTMLElement self) => self -> m ()
+hidePopover self = liftDOM (void ((Types.toHTMLElement self) ^. jsf "hidePopover" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.blur Mozilla HTMLElement.blur documentation> 
-blur :: (MonadDOM m, IsHTMLElement self) => self -> m ()
-blur self = liftDOM (void ((toHTMLElement self) ^. jsf "blur" ()))
+-- | <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 ((Types.toHTMLElement self) ^. jsf "showPopover" [P.maybe (P.return jsUndefined) toJSVal options]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.title Mozilla HTMLElement.title documentation> 
-setTitle ::
-         (MonadDOM m, IsHTMLElement self, ToJSString val) =>
-           self -> val -> m ()
-setTitle self val
-  = liftDOM ((toHTMLElement self) ^. jss "title" (toJSVal val))
+-- | <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 ((((Types.toHTMLElement self) ^. jsf "togglePopover" [P.maybe (P.return jsUndefined) toJSVal options]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.title Mozilla HTMLElement.title documentation> 
-getTitle ::
-         (MonadDOM m, IsHTMLElement self, FromJSString result) =>
-           self -> m result
-getTitle self
-  = liftDOM
-      (((toHTMLElement self) ^. js "title") >>= fromJSValUnchecked)
+-- | <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 ((Types.toHTMLElement self) ^. jsf "togglePopover" [P.maybe (P.return jsUndefined) toJSVal options]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.lang Mozilla HTMLElement.lang documentation> 
-setLang ::
-        (MonadDOM m, IsHTMLElement self, ToJSString val) =>
-          self -> val -> m ()
-setLang self val
-  = liftDOM ((toHTMLElement self) ^. jss "lang" (toJSVal val))
+-- | <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 ((Types.toHTMLElement self) ^. jss "title" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.lang Mozilla HTMLElement.lang documentation> 
-getLang ::
-        (MonadDOM m, IsHTMLElement self, FromJSString result) =>
-          self -> m result
-getLang self
-  = liftDOM
-      (((toHTMLElement self) ^. js "lang") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toHTMLElement self) ^. js "title") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.translate Mozilla HTMLElement.translate documentation> 
-setTranslate ::
-             (MonadDOM m, IsHTMLElement self) => self -> Bool -> m ()
-setTranslate self val
-  = liftDOM ((toHTMLElement self) ^. jss "translate" (toJSVal val))
+-- | <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 ((Types.toHTMLElement self) ^. jss "lang" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.translate Mozilla HTMLElement.translate documentation> 
+-- | <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 ((((Types.toHTMLElement self) ^. js "lang") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toHTMLElement self) ^. jss "translate" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/translate MDN HTMLElement.translate documentation>
 getTranslate :: (MonadDOM m, IsHTMLElement self) => self -> m Bool
-getTranslate self
-  = liftDOM (((toHTMLElement self) ^. js "translate") >>= valToBool)
+getTranslate self = liftDOM ((((Types.toHTMLElement self) ^. js "translate") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dir Mozilla HTMLElement.dir documentation> 
-setDir ::
-       (MonadDOM m, IsHTMLElement self, ToJSString val) =>
-         self -> val -> m ()
-setDir self val
-  = liftDOM ((toHTMLElement self) ^. jss "dir" (toJSVal val))
+-- | <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 ((Types.toHTMLElement self) ^. jss "dir" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dir Mozilla HTMLElement.dir documentation> 
-getDir ::
-       (MonadDOM m, IsHTMLElement self, FromJSString result) =>
-         self -> m result
-getDir self
-  = liftDOM
-      (((toHTMLElement self) ^. js "dir") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toHTMLElement self) ^. js "dir") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dataset Mozilla HTMLElement.dataset documentation> 
-getDataset ::
-           (MonadDOM m, IsHTMLElement self) => self -> m DOMStringMap
-getDataset self
-  = liftDOM
-      (((toHTMLElement self) ^. js "dataset") >>= fromJSValUnchecked)
+-- | <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 ((Types.toHTMLElement self) ^. jss "hidden" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.hidden Mozilla HTMLElement.hidden documentation> 
-setHidden ::
-          (MonadDOM m, IsHTMLElement self) => self -> Bool -> m ()
-setHidden self val
-  = liftDOM ((toHTMLElement self) ^. jss "hidden" (toJSVal val))
+-- | <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 ((((Types.toHTMLElement self) ^. js "hidden") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.hidden Mozilla HTMLElement.hidden documentation> 
-getHidden :: (MonadDOM m, IsHTMLElement self) => self -> m Bool
-getHidden self
-  = liftDOM (((toHTMLElement self) ^. js "hidden") >>= valToBool)
+-- | <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 (((((Types.toHTMLElement self) ^. js "hidden") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.tabIndex Mozilla HTMLElement.tabIndex documentation> 
-setTabIndex ::
-            (MonadDOM m, IsHTMLElement self) => self -> Int -> m ()
-setTabIndex self val
-  = liftDOM ((toHTMLElement self) ^. jss "tabIndex" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/hidden MDN HTMLElement.hidden documentation>
+getHiddenUnchecked :: (MonadDOM m, IsHTMLElement self) => self -> m BoolOrDoubleOrString
+getHiddenUnchecked self = liftDOM ((((Types.toHTMLElement self) ^. js "hidden") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.tabIndex Mozilla HTMLElement.tabIndex documentation> 
-getTabIndex :: (MonadDOM m, IsHTMLElement self) => self -> m Int
-getTabIndex self
-  = liftDOM
-      (round <$>
-         (((toHTMLElement self) ^. js "tabIndex") >>= valToNumber))
+-- | <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 ((Types.toHTMLElement self) ^. jss "inert" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.accessKey Mozilla HTMLElement.accessKey documentation> 
-setAccessKey ::
-             (MonadDOM m, IsHTMLElement self, ToJSString val) =>
-               self -> val -> m ()
-setAccessKey self val
-  = liftDOM ((toHTMLElement self) ^. jss "accessKey" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/inert MDN HTMLElement.inert documentation>
+getInert :: (MonadDOM m, IsHTMLElement self) => self -> m Bool
+getInert self = liftDOM ((((Types.toHTMLElement self) ^. js "inert") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.accessKey Mozilla HTMLElement.accessKey documentation> 
-getAccessKey ::
-             (MonadDOM m, IsHTMLElement self, FromJSString result) =>
-               self -> m result
-getAccessKey self
-  = liftDOM
-      (((toHTMLElement self) ^. js "accessKey") >>= fromJSValUnchecked)
+-- | <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 ((Types.toHTMLElement self) ^. jss "accessKey" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.draggable Mozilla HTMLElement.draggable documentation> 
-setDraggable ::
-             (MonadDOM m, IsHTMLElement self) => self -> Bool -> m ()
-setDraggable self val
-  = liftDOM ((toHTMLElement self) ^. jss "draggable" (toJSVal val))
+-- | <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 ((((Types.toHTMLElement self) ^. js "accessKey") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.draggable Mozilla HTMLElement.draggable documentation> 
+-- | <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 ((((Types.toHTMLElement self) ^. js "accessKeyLabel") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toHTMLElement self) ^. jss "draggable" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/draggable MDN HTMLElement.draggable documentation>
 getDraggable :: (MonadDOM m, IsHTMLElement self) => self -> m Bool
-getDraggable self
-  = liftDOM (((toHTMLElement self) ^. js "draggable") >>= valToBool)
+getDraggable self = liftDOM ((((Types.toHTMLElement self) ^. js "draggable") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.spellcheck Mozilla HTMLElement.spellcheck documentation> 
-setSpellcheck ::
-              (MonadDOM m, IsHTMLElement self) => self -> Bool -> m ()
-setSpellcheck self val
-  = liftDOM ((toHTMLElement self) ^. jss "spellcheck" (toJSVal val))
+-- | <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 ((Types.toHTMLElement self) ^. jss "spellcheck" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.spellcheck Mozilla HTMLElement.spellcheck documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/spellcheck MDN HTMLElement.spellcheck documentation>
 getSpellcheck :: (MonadDOM m, IsHTMLElement self) => self -> m Bool
-getSpellcheck self
-  = liftDOM (((toHTMLElement self) ^. js "spellcheck") >>= valToBool)
+getSpellcheck self = liftDOM ((((Types.toHTMLElement self) ^. js "spellcheck") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.innerText Mozilla HTMLElement.innerText documentation> 
-setInnerText ::
-             (MonadDOM m, IsHTMLElement self, ToJSString val) =>
-               self -> val -> m ()
-setInnerText self val
-  = liftDOM ((toHTMLElement self) ^. jss "innerText" (toJSVal val))
+-- | <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 ((Types.toHTMLElement self) ^. jss "writingSuggestions" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.innerText Mozilla HTMLElement.innerText documentation> 
-getInnerText ::
-             (MonadDOM m, IsHTMLElement self, FromJSString result) =>
-               self -> m result
-getInnerText self
-  = liftDOM
-      (((toHTMLElement self) ^. js "innerText") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toHTMLElement self) ^. js "writingSuggestions") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.contentEditable Mozilla HTMLElement.contentEditable documentation> 
-setContentEditable ::
-                   (MonadDOM m, IsHTMLElement self, ToJSString val) =>
-                     self -> val -> m ()
-setContentEditable self val
-  = liftDOM
-      ((toHTMLElement self) ^. jss "contentEditable" (toJSVal val))
+-- | <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 ((Types.toHTMLElement self) ^. jss "autocapitalize" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.contentEditable Mozilla HTMLElement.contentEditable documentation> 
-getContentEditable ::
-                   (MonadDOM m, IsHTMLElement self, FromJSString result) =>
-                     self -> m result
-getContentEditable self
-  = liftDOM
-      (((toHTMLElement self) ^. js "contentEditable") >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toHTMLElement self) ^. js "autocapitalize") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.isContentEditable Mozilla HTMLElement.isContentEditable documentation> 
-getIsContentEditable ::
-                     (MonadDOM m, IsHTMLElement self) => self -> m Bool
-getIsContentEditable self
-  = liftDOM
-      (((toHTMLElement self) ^. js "isContentEditable") >>= valToBool)
+-- | <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 ((Types.toHTMLElement self) ^. jss "autocorrect" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetParent Mozilla HTMLElement.offsetParent documentation> 
-getOffsetParent ::
-                (MonadDOM m, IsHTMLElement self) => self -> m (Maybe Element)
-getOffsetParent self
-  = liftDOM
-      (((toHTMLElement self) ^. js "offsetParent") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/autocorrect MDN HTMLElement.autocorrect documentation>
+getAutocorrect :: (MonadDOM m, IsHTMLElement self) => self -> m Bool
+getAutocorrect self = liftDOM ((((Types.toHTMLElement self) ^. js "autocorrect") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetParent Mozilla HTMLElement.offsetParent documentation> 
-getOffsetParentUnsafe ::
-                      (MonadDOM m, IsHTMLElement self, HasCallStack) => self -> m Element
-getOffsetParentUnsafe self
-  = liftDOM
-      ((((toHTMLElement self) ^. js "offsetParent") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 ((Types.toHTMLElement self) ^. jss "innerText" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetParent Mozilla HTMLElement.offsetParent documentation> 
-getOffsetParentUnchecked ::
-                         (MonadDOM m, IsHTMLElement self) => self -> m Element
-getOffsetParentUnchecked self
-  = liftDOM
-      (((toHTMLElement self) ^. js "offsetParent") >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toHTMLElement self) ^. js "innerText") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetTop Mozilla HTMLElement.offsetTop documentation> 
-getOffsetTop ::
-             (MonadDOM m, IsHTMLElement self) => self -> m Double
-getOffsetTop self
-  = liftDOM
-      (((toHTMLElement self) ^. js "offsetTop") >>= valToNumber)
+-- | <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 ((Types.toHTMLElement self) ^. jss "outerText" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetLeft Mozilla HTMLElement.offsetLeft documentation> 
-getOffsetLeft ::
-              (MonadDOM m, IsHTMLElement self) => self -> m Double
-getOffsetLeft self
-  = liftDOM
-      (((toHTMLElement self) ^. js "offsetLeft") >>= valToNumber)
+-- | <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 ((((Types.toHTMLElement self) ^. js "outerText") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetWidth Mozilla HTMLElement.offsetWidth documentation> 
-getOffsetWidth ::
-               (MonadDOM m, IsHTMLElement self) => self -> m Double
-getOffsetWidth self
-  = liftDOM
-      (((toHTMLElement self) ^. js "offsetWidth") >>= valToNumber)
+-- | <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 ((Types.toHTMLElement self) ^. jss "popover" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetHeight Mozilla HTMLElement.offsetHeight documentation> 
-getOffsetHeight ::
-                (MonadDOM m, IsHTMLElement self) => self -> m Double
-getOffsetHeight self
-  = liftDOM
-      (((toHTMLElement self) ^. js "offsetHeight") >>= valToNumber)
+-- | <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 ((((Types.toHTMLElement self) ^. js "popover") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.outerText Mozilla HTMLElement.outerText documentation> 
-setOuterText ::
-             (MonadDOM m, IsHTMLElement self, ToJSString val) =>
-               self -> val -> m ()
-setOuterText self val
-  = liftDOM ((toHTMLElement self) ^. jss "outerText" (toJSVal val))
+-- | <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 (((((Types.toHTMLElement self) ^. js "popover") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.outerText Mozilla HTMLElement.outerText documentation> 
-getOuterText ::
-             (MonadDOM m, IsHTMLElement self, FromJSString result) =>
-               self -> m result
-getOuterText self
-  = liftDOM
-      (((toHTMLElement self) ^. js "outerText") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toHTMLElement self) ^. js "popover") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.autocorrect Mozilla HTMLElement.autocorrect documentation> 
-setAutocorrect ::
-               (MonadDOM m, IsHTMLElement self) => self -> Bool -> m ()
-setAutocorrect self val
-  = liftDOM ((toHTMLElement self) ^. jss "autocorrect" (toJSVal val))
+-- | <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 ((((Types.toHTMLElement self) ^. js "offsetParent") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.autocorrect Mozilla HTMLElement.autocorrect documentation> 
-getAutocorrect ::
-               (MonadDOM m, IsHTMLElement self) => self -> m Bool
-getAutocorrect self
-  = liftDOM
-      (((toHTMLElement self) ^. js "autocorrect") >>= valToBool)
+-- | <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 (((((Types.toHTMLElement self) ^. js "offsetParent") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.autocapitalize Mozilla HTMLElement.autocapitalize documentation> 
-setAutocapitalize ::
-                  (MonadDOM m, IsHTMLElement self, ToJSString val) =>
-                    self -> val -> m ()
-setAutocapitalize self val
-  = liftDOM
-      ((toHTMLElement self) ^. jss "autocapitalize" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/offsetParent MDN HTMLElement.offsetParent documentation>
+getOffsetParentUnchecked :: (MonadDOM m, IsHTMLElement self) => self -> m Element
+getOffsetParentUnchecked self = liftDOM ((((Types.toHTMLElement self) ^. js "offsetParent") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.autocapitalize Mozilla HTMLElement.autocapitalize documentation> 
-getAutocapitalize ::
-                  (MonadDOM m, IsHTMLElement self, FromJSString result) =>
-                    self -> m result
-getAutocapitalize self
-  = liftDOM
-      (((toHTMLElement self) ^. js "autocapitalize") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/offsetTop MDN HTMLElement.offsetTop documentation>
+getOffsetTop :: (MonadDOM m, IsHTMLElement self) => self -> m Int
+getOffsetTop self = liftDOM ((P.round <$> (((Types.toHTMLElement self) ^. js "offsetTop") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.webkitdropzone Mozilla HTMLElement.webkitdropzone documentation> 
-setWebkitdropzone ::
-                  (MonadDOM m, IsHTMLElement self, ToJSString val) =>
-                    self -> val -> m ()
-setWebkitdropzone self val
-  = liftDOM
-      ((toHTMLElement self) ^. jss "webkitdropzone" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/offsetLeft MDN HTMLElement.offsetLeft documentation>
+getOffsetLeft :: (MonadDOM m, IsHTMLElement self) => self -> m Int
+getOffsetLeft self = liftDOM ((P.round <$> (((Types.toHTMLElement self) ^. js "offsetLeft") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.webkitdropzone Mozilla HTMLElement.webkitdropzone documentation> 
-getWebkitdropzone ::
-                  (MonadDOM m, IsHTMLElement self, FromJSString result) =>
-                    self -> m result
-getWebkitdropzone self
-  = liftDOM
-      (((toHTMLElement self) ^. js "webkitdropzone") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/offsetWidth MDN HTMLElement.offsetWidth documentation>
+getOffsetWidth :: (MonadDOM m, IsHTMLElement self) => self -> m Int
+getOffsetWidth self = liftDOM ((P.round <$> (((Types.toHTMLElement self) ^. js "offsetWidth") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/offsetHeight MDN HTMLElement.offsetHeight documentation>
+getOffsetHeight :: (MonadDOM m, IsHTMLElement self) => self -> m Int
+getOffsetHeight self = liftDOM ((P.round <$> (((Types.toHTMLElement self) ^. js "offsetHeight") >>= valToNumber)))
+
+navbeforefocus :: (IsHTMLElement self, IsEventTarget self) => EventName self NavigationEvent
+navbeforefocus = unsafeEventName (toJSString "navbeforefocus")
+
+navnotarget :: (IsHTMLElement self, IsEventTarget self) => EventName self NavigationEvent
+navnotarget = unsafeEventName (toJSString "navnotarget")
diff --git a/src/JSDOM/Generated/HTMLEmbedElement.hs b/src/JSDOM/Generated/HTMLEmbedElement.hs
--- a/src/JSDOM/Generated/HTMLEmbedElement.hs
+++ b/src/JSDOM/Generated/HTMLEmbedElement.hs
@@ -1,96 +1,80 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLEmbedElement
-       (getSVGDocument, getSVGDocument_, setAlign, getAlign, setHeight,
-        getHeight, setName, getName, setSrc, getSrc, setType, getType,
-        setWidth, getWidth, HTMLEmbedElement(..), gTypeHTMLEmbedElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.getSVGDocument Mozilla HTMLEmbedElement.getSVGDocument documentation> 
-getSVGDocument :: (MonadDOM m) => HTMLEmbedElement -> m Document
-getSVGDocument self
-  = liftDOM
-      ((self ^. jsf "getSVGDocument" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/getSVGDocument MDN HTMLEmbedElement.getSVGDocument documentation>
+getSVGDocument :: (MonadDOM m) => HTMLEmbedElement -> m (Maybe Document)
+getSVGDocument self = liftDOM (((self ^. jsf "getSVGDocument" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.getSVGDocument Mozilla HTMLEmbedElement.getSVGDocument documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/getSVGDocument MDN HTMLEmbedElement.getSVGDocument documentation>
 getSVGDocument_ :: (MonadDOM m) => HTMLEmbedElement -> m ()
-getSVGDocument_ self
-  = liftDOM (void (self ^. jsf "getSVGDocument" ()))
+getSVGDocument_ self = liftDOM (void (self ^. jsf "getSVGDocument" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.align Mozilla HTMLEmbedElement.align documentation> 
-setAlign ::
-         (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/getSVGDocument MDN HTMLEmbedElement.getSVGDocument documentation>
+getSVGDocumentUnsafe :: (MonadDOM m, HasCallStack) => HTMLEmbedElement -> m Document
+getSVGDocumentUnsafe self = liftDOM ((((self ^. jsf "getSVGDocument" ()) >>= 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> 
-getAlign ::
-         (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/getSVGDocument MDN HTMLEmbedElement.getSVGDocument documentation>
+getSVGDocumentUnchecked :: (MonadDOM m) => HTMLEmbedElement -> m Document
+getSVGDocumentUnchecked self = liftDOM (((self ^. jsf "getSVGDocument" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.height Mozilla HTMLEmbedElement.height documentation> 
-setHeight ::
-          (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
-setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+-- | <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 (self ^. jss "src" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.height Mozilla HTMLEmbedElement.height documentation> 
-getHeight ::
-          (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
-getHeight self
-  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/src MDN HTMLEmbedElement.src documentation>
+getSrc :: (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
+getSrc self = liftDOM (((self ^. js "src") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.name Mozilla HTMLEmbedElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <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 (self ^. jss "type" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.name Mozilla HTMLEmbedElement.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/type MDN HTMLEmbedElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.src Mozilla HTMLEmbedElement.src documentation> 
-setSrc ::
-       (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
-setSrc self val = liftDOM (self ^. jss "src" (toJSVal val))
+-- | <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 (self ^. jss "width" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.src Mozilla HTMLEmbedElement.src documentation> 
-getSrc ::
-       (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
-getSrc self = liftDOM ((self ^. js "src") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/width MDN HTMLEmbedElement.width documentation>
+getWidth :: (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.type Mozilla HTMLEmbedElement.type documentation> 
-setType ::
-        (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
-setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+-- | <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 (self ^. jss "height" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.type Mozilla HTMLEmbedElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLEmbedElement/height MDN HTMLEmbedElement.height documentation>
+getHeight :: (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.width Mozilla HTMLEmbedElement.width documentation> 
-setWidth ::
-         (MonadDOM m, ToJSString val) => HTMLEmbedElement -> val -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+-- | <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 (self ^. jss "align" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.width Mozilla HTMLEmbedElement.width documentation> 
-getWidth ::
-         (MonadDOM m, FromJSString result) => HTMLEmbedElement -> m result
-getWidth self
-  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "align") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "name" (toJSVal val)))
+
+-- | <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 (((self ^. js "name") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLFieldSetElement.hs b/src/JSDOM/Generated/HTMLFieldSetElement.hs
--- a/src/JSDOM/Generated/HTMLFieldSetElement.hs
+++ b/src/JSDOM/Generated/HTMLFieldSetElement.hs
@@ -1,105 +1,84 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLFieldSetElement
-       (checkValidity, checkValidity_, reportValidity, reportValidity_,
-        setCustomValidity, setDisabled, getDisabled, getForm, setName,
-        getName, getType, getElements, getWillValidate, getValidity,
-        getValidationMessage, HTMLFieldSetElement(..),
-        gTypeHTMLFieldSetElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.checkValidity Mozilla HTMLFieldSetElement.checkValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/checkValidity MDN HTMLFieldSetElement.checkValidity documentation>
 checkValidity :: (MonadDOM m) => HTMLFieldSetElement -> m Bool
-checkValidity self
-  = liftDOM ((self ^. jsf "checkValidity" ()) >>= valToBool)
+checkValidity self = liftDOM (((self ^. jsf "checkValidity" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.checkValidity Mozilla HTMLFieldSetElement.checkValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/checkValidity MDN HTMLFieldSetElement.checkValidity documentation>
 checkValidity_ :: (MonadDOM m) => HTMLFieldSetElement -> m ()
-checkValidity_ self
-  = liftDOM (void (self ^. jsf "checkValidity" ()))
+checkValidity_ self = liftDOM (void (self ^. jsf "checkValidity" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.reportValidity Mozilla HTMLFieldSetElement.reportValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/reportValidity MDN HTMLFieldSetElement.reportValidity documentation>
 reportValidity :: (MonadDOM m) => HTMLFieldSetElement -> m Bool
-reportValidity self
-  = liftDOM ((self ^. jsf "reportValidity" ()) >>= valToBool)
+reportValidity self = liftDOM (((self ^. jsf "reportValidity" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.reportValidity Mozilla HTMLFieldSetElement.reportValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/reportValidity MDN HTMLFieldSetElement.reportValidity documentation>
 reportValidity_ :: (MonadDOM m) => HTMLFieldSetElement -> m ()
-reportValidity_ self
-  = liftDOM (void (self ^. jsf "reportValidity" ()))
+reportValidity_ self = liftDOM (void (self ^. jsf "reportValidity" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.setCustomValidity Mozilla HTMLFieldSetElement.setCustomValidity documentation> 
-setCustomValidity ::
-                  (MonadDOM m, ToJSString error) =>
-                    HTMLFieldSetElement -> error -> m ()
-setCustomValidity self error
-  = liftDOM (void (self ^. jsf "setCustomValidity" [toJSVal error]))
+-- | <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 (self ^. jsf "setCustomValidity" [toJSVal error]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.disabled Mozilla HTMLFieldSetElement.disabled documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/disabled MDN HTMLFieldSetElement.disabled documentation>
 setDisabled :: (MonadDOM m) => HTMLFieldSetElement -> Bool -> m ()
-setDisabled self val
-  = liftDOM (self ^. jss "disabled" (toJSVal val))
+setDisabled self val = liftDOM (void (self ^. jss "disabled" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.disabled Mozilla HTMLFieldSetElement.disabled documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/disabled MDN HTMLFieldSetElement.disabled documentation>
 getDisabled :: (MonadDOM m) => HTMLFieldSetElement -> m Bool
-getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+getDisabled self = liftDOM (((self ^. js "disabled") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.form Mozilla HTMLFieldSetElement.form documentation> 
-getForm :: (MonadDOM m) => HTMLFieldSetElement -> m HTMLFormElement
-getForm self = liftDOM ((self ^. js "form") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/form MDN HTMLFieldSetElement.form documentation>
+getForm :: (MonadDOM m) => HTMLFieldSetElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.name Mozilla HTMLFieldSetElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLFieldSetElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/form MDN HTMLFieldSetElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLFieldSetElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((self ^. js "form") >>= 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> 
-getName ::
-        (MonadDOM m, FromJSString result) =>
-          HTMLFieldSetElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/form MDN HTMLFieldSetElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLFieldSetElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.type Mozilla HTMLFieldSetElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) =>
-          HTMLFieldSetElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.elements Mozilla HTMLFieldSetElement.elements documentation> 
-getElements ::
-            (MonadDOM m) => HTMLFieldSetElement -> m HTMLFormControlsCollection
-getElements self
-  = liftDOM ((self ^. js "elements") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/name MDN HTMLFieldSetElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLFieldSetElement -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.willValidate Mozilla HTMLFieldSetElement.willValidate documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/type MDN HTMLFieldSetElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLFieldSetElement -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/elements MDN HTMLFieldSetElement.elements documentation>
+getElements :: (MonadDOM m) => HTMLFieldSetElement -> m HTMLCollection
+getElements self = liftDOM (((self ^. js "elements") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/willValidate MDN HTMLFieldSetElement.willValidate documentation>
 getWillValidate :: (MonadDOM m) => HTMLFieldSetElement -> m Bool
-getWillValidate self
-  = liftDOM ((self ^. js "willValidate") >>= valToBool)
+getWillValidate self = liftDOM (((self ^. js "willValidate") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.validity Mozilla HTMLFieldSetElement.validity documentation> 
-getValidity ::
-            (MonadDOM m) => HTMLFieldSetElement -> m ValidityState
-getValidity self
-  = liftDOM ((self ^. js "validity") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/validity MDN HTMLFieldSetElement.validity documentation>
+getValidity :: (MonadDOM m) => HTMLFieldSetElement -> m ValidityState
+getValidity self = liftDOM (((self ^. js "validity") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.validationMessage Mozilla HTMLFieldSetElement.validationMessage documentation> 
-getValidationMessage ::
-                     (MonadDOM m, FromJSString result) =>
-                       HTMLFieldSetElement -> m result
-getValidationMessage self
-  = liftDOM ((self ^. js "validationMessage") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFieldSetElement/validationMessage MDN HTMLFieldSetElement.validationMessage documentation>
+getValidationMessage :: (MonadDOM m, FromJSString result) => HTMLFieldSetElement -> m result
+getValidationMessage self = liftDOM (((self ^. js "validationMessage") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLFontElement.hs b/src/JSDOM/Generated/HTMLFontElement.hs
--- a/src/JSDOM/Generated/HTMLFontElement.hs
+++ b/src/JSDOM/Generated/HTMLFontElement.hs
@@ -1,52 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLFontElement
-       (setColor, getColor, setFace, getFace, setSize, getSize,
-        HTMLFontElement(..), gTypeHTMLFontElement)
+       (setColor, getColor, setFace, getFace, setSize, getSize, HTMLFontElement(..), gTypeHTMLFontElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.color Mozilla HTMLFontElement.color documentation> 
-setColor ::
-         (MonadDOM m, ToJSString val) => HTMLFontElement -> val -> m ()
-setColor self val = liftDOM (self ^. jss "color" (toJSVal val))
+-- | <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 (self ^. jss "color" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.color Mozilla HTMLFontElement.color documentation> 
-getColor ::
-         (MonadDOM m, FromJSString result) => HTMLFontElement -> m result
-getColor self
-  = liftDOM ((self ^. js "color") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFontElement/color MDN HTMLFontElement.color documentation>
+getColor :: (MonadDOM m, FromJSString result) => HTMLFontElement -> m result
+getColor self = liftDOM (((self ^. js "color") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.face Mozilla HTMLFontElement.face documentation> 
-setFace ::
-        (MonadDOM m, ToJSString val) => HTMLFontElement -> val -> m ()
-setFace self val = liftDOM (self ^. jss "face" (toJSVal val))
+-- | <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 (self ^. jss "face" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.face Mozilla HTMLFontElement.face documentation> 
-getFace ::
-        (MonadDOM m, FromJSString result) => HTMLFontElement -> m result
-getFace self = liftDOM ((self ^. js "face") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFontElement/face MDN HTMLFontElement.face documentation>
+getFace :: (MonadDOM m, FromJSString result) => HTMLFontElement -> m result
+getFace self = liftDOM (((self ^. js "face") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.size Mozilla HTMLFontElement.size documentation> 
-setSize ::
-        (MonadDOM m, ToJSString val) => HTMLFontElement -> val -> m ()
-setSize self val = liftDOM (self ^. jss "size" (toJSVal val))
+-- | <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 (self ^. jss "size" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.size Mozilla HTMLFontElement.size documentation> 
-getSize ::
-        (MonadDOM m, FromJSString result) => HTMLFontElement -> m result
-getSize self = liftDOM ((self ^. js "size") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFontElement/size MDN HTMLFontElement.size documentation>
+getSize :: (MonadDOM m, FromJSString result) => HTMLFontElement -> m result
+getSize self = liftDOM (((self ^. js "size") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLFormControlsCollection.hs b/src/JSDOM/Generated/HTMLFormControlsCollection.hs
--- a/src/JSDOM/Generated/HTMLFormControlsCollection.hs
+++ b/src/JSDOM/Generated/HTMLFormControlsCollection.hs
@@ -1,79 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLFormControlsCollection
-       (get, get_, getUnsafe, getUnchecked, namedItem, namedItem_,
-        namedItemUnsafe, namedItemUnchecked,
-        HTMLFormControlsCollection(..), gTypeHTMLFormControlsCollection)
+       (namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked, HTMLFormControlsCollection(..), gTypeHTMLFormControlsCollection)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.get Mozilla HTMLFormControlsCollection.get documentation> 
-get ::
-    (MonadDOM m) =>
-      HTMLFormControlsCollection -> Word -> m (Maybe HTMLElement)
-get self index
-  = liftDOM ((self ^. jsf "get" [toJSVal index]) >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.get Mozilla HTMLFormControlsCollection.get documentation> 
-get_ :: (MonadDOM m) => HTMLFormControlsCollection -> Word -> m ()
-get_ self index
-  = liftDOM (void (self ^. jsf "get" [toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.get Mozilla HTMLFormControlsCollection.get documentation> 
-getUnsafe ::
-          (MonadDOM m, HasCallStack) =>
-            HTMLFormControlsCollection -> Word -> m HTMLElement
-getUnsafe self index
-  = liftDOM
-      (((self ^. jsf "get" [toJSVal index]) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.get Mozilla HTMLFormControlsCollection.get documentation> 
-getUnchecked ::
-             (MonadDOM m) => HTMLFormControlsCollection -> Word -> m HTMLElement
-getUnchecked self index
-  = liftDOM
-      ((self ^. jsf "get" [toJSVal index]) >>= fromJSValUnchecked)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.namedItem Mozilla HTMLFormControlsCollection.namedItem documentation> 
-namedItem ::
-          (MonadDOM m, ToJSString name) =>
-            HTMLFormControlsCollection ->
-              name -> m (Maybe RadioNodeListOrElement)
-namedItem self name = liftDOM ((self ! name) >>= fromJSVal)
+-- | <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 (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.namedItem Mozilla HTMLFormControlsCollection.namedItem documentation> 
-namedItem_ ::
-           (MonadDOM m, ToJSString name) =>
-             HTMLFormControlsCollection -> name -> m ()
-namedItem_ self name = liftDOM (void (self ! 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 (self ^. jsf "namedItem" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.namedItem Mozilla HTMLFormControlsCollection.namedItem documentation> 
-namedItemUnsafe ::
-                (MonadDOM m, ToJSString name, HasCallStack) =>
-                  HTMLFormControlsCollection -> name -> m RadioNodeListOrElement
-namedItemUnsafe self name
-  = liftDOM
-      (((self ! name) >>= fromJSVal) >>=
-         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 ((((self ^. jsf "namedItem" [toJSVal 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 ::
-                   (MonadDOM m, ToJSString name) =>
-                     HTMLFormControlsCollection -> name -> m RadioNodeListOrElement
-namedItemUnchecked self name
-  = liftDOM ((self ! name) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLFormElement.hs b/src/JSDOM/Generated/HTMLFormElement.hs
--- a/src/JSDOM/Generated/HTMLFormElement.hs
+++ b/src/JSDOM/Generated/HTMLFormElement.hs
@@ -1,224 +1,136 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLFormElement
-       (getAt, getAt_, getAtUnsafe, getAtUnchecked, get, get_, getUnsafe,
-        getUnchecked, submit, reset, checkValidity, checkValidity_,
-        reportValidity, reportValidity_, requestAutocomplete,
-        setAcceptCharset, getAcceptCharset, setAction, getAction,
-        setAutocomplete, getAutocomplete, setEnctype, getEnctype,
-        setEncoding, getEncoding, setMethod, getMethod, setName, getName,
-        setNoValidate, getNoValidate, setTarget, getTarget, getElements,
-        getLength, HTMLFormElement(..), gTypeHTMLFormElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
-getAt ::
-      (MonadDOM m) => HTMLFormElement -> Word -> m (Maybe Element)
-getAt self index
-  = liftDOM ((self ^. jsf "get" [toJSVal index]) >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
-getAt_ :: (MonadDOM m) => HTMLFormElement -> Word -> m ()
-getAt_ self index
-  = liftDOM (void (self ^. jsf "get" [toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
-getAtUnsafe ::
-            (MonadDOM m, HasCallStack) => HTMLFormElement -> Word -> m Element
-getAtUnsafe self index
-  = liftDOM
-      (((self ^. jsf "get" [toJSVal index]) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
-getAtUnchecked ::
-               (MonadDOM m) => HTMLFormElement -> Word -> m Element
-getAtUnchecked self index
-  = liftDOM
-      ((self ^. jsf "get" [toJSVal index]) >>= fromJSValUnchecked)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
-get ::
-    (MonadDOM m, ToJSString name) =>
-      HTMLFormElement -> name -> m (Maybe RadioNodeListOrElement)
-get self name = liftDOM ((self ! name) >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/checkValidity MDN HTMLFormElement.checkValidity documentation>
+checkValidity :: (MonadDOM m) => HTMLFormElement -> m Bool
+checkValidity self = liftDOM (((self ^. jsf "checkValidity" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
-get_ ::
-     (MonadDOM m, ToJSString name) => HTMLFormElement -> name -> m ()
-get_ self name = liftDOM (void (self ! name))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/checkValidity MDN HTMLFormElement.checkValidity documentation>
+checkValidity_ :: (MonadDOM m) => HTMLFormElement -> m ()
+checkValidity_ self = liftDOM (void (self ^. jsf "checkValidity" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
-getUnsafe ::
-          (MonadDOM m, ToJSString name, HasCallStack) =>
-            HTMLFormElement -> name -> m RadioNodeListOrElement
-getUnsafe self name
-  = liftDOM
-      (((self ! name) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/reportValidity MDN HTMLFormElement.reportValidity documentation>
+reportValidity :: (MonadDOM m) => HTMLFormElement -> m Bool
+reportValidity self = liftDOM (((self ^. jsf "reportValidity" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
-getUnchecked ::
-             (MonadDOM m, ToJSString name) =>
-               HTMLFormElement -> name -> m RadioNodeListOrElement
-getUnchecked self name
-  = liftDOM ((self ! name) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/reportValidity MDN HTMLFormElement.reportValidity documentation>
+reportValidity_ :: (MonadDOM m) => HTMLFormElement -> m ()
+reportValidity_ self = liftDOM (void (self ^. jsf "reportValidity" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.submit Mozilla HTMLFormElement.submit documentation> 
-submit :: (MonadDOM m) => HTMLFormElement -> m ()
-submit self = liftDOM (void (self ^. jsf "submit" ()))
+-- | <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 (self ^. jsf "requestSubmit" [toJSVal submitter]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.reset Mozilla HTMLFormElement.reset documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/reset MDN HTMLFormElement.reset documentation>
 reset :: (MonadDOM m) => HTMLFormElement -> m ()
 reset self = liftDOM (void (self ^. jsf "reset" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.checkValidity Mozilla HTMLFormElement.checkValidity documentation> 
-checkValidity :: (MonadDOM m) => HTMLFormElement -> m Bool
-checkValidity self
-  = liftDOM ((self ^. jsf "checkValidity" ()) >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.checkValidity Mozilla HTMLFormElement.checkValidity documentation> 
-checkValidity_ :: (MonadDOM m) => HTMLFormElement -> m ()
-checkValidity_ self
-  = liftDOM (void (self ^. jsf "checkValidity" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/submit MDN HTMLFormElement.submit documentation>
+submit :: (MonadDOM m) => HTMLFormElement -> m ()
+submit self = liftDOM (void (self ^. jsf "submit" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.reportValidity Mozilla HTMLFormElement.reportValidity documentation> 
-reportValidity :: (MonadDOM m) => HTMLFormElement -> m Bool
-reportValidity self
-  = liftDOM ((self ^. jsf "reportValidity" ()) >>= valToBool)
+-- | <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 (self ^. jss "acceptCharset" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.reportValidity Mozilla HTMLFormElement.reportValidity documentation> 
-reportValidity_ :: (MonadDOM m) => HTMLFormElement -> m ()
-reportValidity_ self
-  = liftDOM (void (self ^. jsf "reportValidity" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/acceptCharset MDN HTMLFormElement.acceptCharset documentation>
+getAcceptCharset :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getAcceptCharset self = liftDOM (((self ^. js "acceptCharset") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.requestAutocomplete Mozilla HTMLFormElement.requestAutocomplete documentation> 
-requestAutocomplete :: (MonadDOM m) => HTMLFormElement -> m ()
-requestAutocomplete self
-  = liftDOM (void (self ^. jsf "requestAutocomplete" ()))
+-- | <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 (self ^. jss "action" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.acceptCharset Mozilla HTMLFormElement.acceptCharset documentation> 
-setAcceptCharset ::
-                 (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
-setAcceptCharset self val
-  = liftDOM (self ^. jss "acceptCharset" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/action MDN HTMLFormElement.action documentation>
+getAction :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getAction self = liftDOM (((self ^. js "action") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.acceptCharset Mozilla HTMLFormElement.acceptCharset documentation> 
-getAcceptCharset ::
-                 (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
-getAcceptCharset self
-  = liftDOM ((self ^. js "acceptCharset") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "autocomplete" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.action Mozilla HTMLFormElement.action documentation> 
-setAction ::
-          (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
-setAction self val = liftDOM (self ^. jss "action" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/autocomplete MDN HTMLFormElement.autocomplete documentation>
+getAutocomplete :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getAutocomplete self = liftDOM (((self ^. js "autocomplete") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.action Mozilla HTMLFormElement.action documentation> 
-getAction ::
-          (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
-getAction self
-  = liftDOM ((self ^. js "action") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "enctype" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocomplete Mozilla HTMLFormElement.autocomplete documentation> 
-setAutocomplete ::
-                (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
-setAutocomplete self val
-  = liftDOM (self ^. jss "autocomplete" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/enctype MDN HTMLFormElement.enctype documentation>
+getEnctype :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getEnctype self = liftDOM (((self ^. js "enctype") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocomplete Mozilla HTMLFormElement.autocomplete documentation> 
-getAutocomplete ::
-                (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
-getAutocomplete self
-  = liftDOM ((self ^. js "autocomplete") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "encoding" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.enctype Mozilla HTMLFormElement.enctype documentation> 
-setEnctype ::
-           (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
-setEnctype self val = liftDOM (self ^. jss "enctype" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/encoding MDN HTMLFormElement.encoding documentation>
+getEncoding :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getEncoding self = liftDOM (((self ^. js "encoding") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.enctype Mozilla HTMLFormElement.enctype documentation> 
-getEnctype ::
-           (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
-getEnctype self
-  = liftDOM ((self ^. js "enctype") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "method" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.encoding Mozilla HTMLFormElement.encoding documentation> 
-setEncoding ::
-            (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
-setEncoding self val
-  = liftDOM (self ^. jss "encoding" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/method MDN HTMLFormElement.method documentation>
+getMethod :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getMethod self = liftDOM (((self ^. js "method") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.encoding Mozilla HTMLFormElement.encoding documentation> 
-getEncoding ::
-            (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
-getEncoding self
-  = liftDOM ((self ^. js "encoding") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.method Mozilla HTMLFormElement.method documentation> 
-setMethod ::
-          (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
-setMethod self val = liftDOM (self ^. jss "method" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/name MDN HTMLFormElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.method Mozilla HTMLFormElement.method documentation> 
-getMethod ::
-          (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
-getMethod self
-  = liftDOM ((self ^. js "method") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/noValidate MDN HTMLFormElement.noValidate documentation>
+setNoValidate :: (MonadDOM m) => HTMLFormElement -> Bool -> m ()
+setNoValidate self val = liftDOM (void (self ^. jss "noValidate" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.name Mozilla HTMLFormElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/noValidate MDN HTMLFormElement.noValidate documentation>
+getNoValidate :: (MonadDOM m) => HTMLFormElement -> m Bool
+getNoValidate self = liftDOM (((self ^. js "noValidate") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.name Mozilla HTMLFormElement.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "target" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.noValidate Mozilla HTMLFormElement.noValidate documentation> 
-setNoValidate :: (MonadDOM m) => HTMLFormElement -> Bool -> m ()
-setNoValidate self val
-  = liftDOM (self ^. jss "noValidate" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/target MDN HTMLFormElement.target documentation>
+getTarget :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getTarget self = liftDOM (((self ^. js "target") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.noValidate Mozilla HTMLFormElement.noValidate documentation> 
-getNoValidate :: (MonadDOM m) => HTMLFormElement -> m Bool
-getNoValidate self
-  = liftDOM ((self ^. js "noValidate") >>= valToBool)
+-- | <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 (self ^. jss "rel" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.target Mozilla HTMLFormElement.target documentation> 
-setTarget ::
-          (MonadDOM m, ToJSString val) => HTMLFormElement -> val -> m ()
-setTarget self val = liftDOM (self ^. jss "target" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/rel MDN HTMLFormElement.rel documentation>
+getRel :: (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
+getRel self = liftDOM (((self ^. js "rel") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.target Mozilla HTMLFormElement.target documentation> 
-getTarget ::
-          (MonadDOM m, FromJSString result) => HTMLFormElement -> m result
-getTarget self
-  = liftDOM ((self ^. js "target") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/relList MDN HTMLFormElement.relList documentation>
+getRelList :: (MonadDOM m) => HTMLFormElement -> m DOMTokenList
+getRelList self = liftDOM (((self ^. js "relList") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.elements Mozilla HTMLFormElement.elements documentation> 
-getElements ::
-            (MonadDOM m) => HTMLFormElement -> m HTMLFormControlsCollection
-getElements self
-  = liftDOM ((self ^. js "elements") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/elements MDN HTMLFormElement.elements documentation>
+getElements :: (MonadDOM m) => HTMLFormElement -> m HTMLFormControlsCollection
+getElements self = liftDOM (((self ^. js "elements") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.length Mozilla HTMLFormElement.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLFormElement/length MDN HTMLFormElement.length documentation>
 getLength :: (MonadDOM m) => HTMLFormElement -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/HTMLFrameElement.hs b/src/JSDOM/Generated/HTMLFrameElement.hs
--- a/src/JSDOM/Generated/HTMLFrameElement.hs
+++ b/src/JSDOM/Generated/HTMLFrameElement.hs
@@ -1,176 +1,104 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLFrameElement
-       (getSVGDocument, getSVGDocument_, setName, getName, setScrolling,
-        getScrolling, setSrc, getSrc, setFrameBorder, getFrameBorder,
-        setLongDesc, getLongDesc, setNoResize, getNoResize,
-        getContentDocument, getContentWindow, setMarginHeight,
-        getMarginHeight, setMarginWidth, getMarginWidth, getWidth,
-        getHeight, setLocation, getLocation, getLocationUnsafe,
-        getLocationUnchecked, HTMLFrameElement(..), gTypeHTMLFrameElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.getSVGDocument Mozilla HTMLFrameElement.getSVGDocument documentation> 
-getSVGDocument :: (MonadDOM m) => HTMLFrameElement -> m Document
-getSVGDocument self
-  = liftDOM
-      ((self ^. jsf "getSVGDocument" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.getSVGDocument Mozilla HTMLFrameElement.getSVGDocument documentation> 
-getSVGDocument_ :: (MonadDOM m) => HTMLFrameElement -> m ()
-getSVGDocument_ self
-  = liftDOM (void (self ^. jsf "getSVGDocument" ()))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.name Mozilla HTMLFrameElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <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 (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.name Mozilla HTMLFrameElement.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.scrolling Mozilla HTMLFrameElement.scrolling documentation> 
-setScrolling ::
-             (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
-setScrolling self val
-  = liftDOM (self ^. jss "scrolling" (toJSVal val))
+-- | <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 (self ^. jss "scrolling" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.scrolling Mozilla HTMLFrameElement.scrolling documentation> 
-getScrolling ::
-             (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
-getScrolling self
-  = liftDOM ((self ^. js "scrolling") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "scrolling") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.src Mozilla HTMLFrameElement.src documentation> 
-setSrc ::
-       (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
-setSrc self val = liftDOM (self ^. jss "src" (toJSVal val))
+-- | <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 (self ^. jss "src" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.src Mozilla HTMLFrameElement.src documentation> 
-getSrc ::
-       (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
-getSrc self = liftDOM ((self ^. js "src") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "src") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.frameBorder Mozilla HTMLFrameElement.frameBorder documentation> 
-setFrameBorder ::
-               (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
-setFrameBorder self val
-  = liftDOM (self ^. jss "frameBorder" (toJSVal val))
+-- | <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 (self ^. jss "frameBorder" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.frameBorder Mozilla HTMLFrameElement.frameBorder documentation> 
-getFrameBorder ::
-               (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
-getFrameBorder self
-  = liftDOM ((self ^. js "frameBorder") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "frameBorder") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.longDesc Mozilla HTMLFrameElement.longDesc documentation> 
-setLongDesc ::
-            (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
-setLongDesc self val
-  = liftDOM (self ^. jss "longDesc" (toJSVal val))
+-- | <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 (self ^. jss "longDesc" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.longDesc Mozilla HTMLFrameElement.longDesc documentation> 
-getLongDesc ::
-            (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
-getLongDesc self
-  = liftDOM ((self ^. js "longDesc") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "longDesc") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.noResize Mozilla HTMLFrameElement.noResize documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-noresize HTMLFrameElement.noResize specification>
 setNoResize :: (MonadDOM m) => HTMLFrameElement -> Bool -> m ()
-setNoResize self val
-  = liftDOM (self ^. jss "noResize" (toJSVal val))
+setNoResize self val = liftDOM (void (self ^. jss "noResize" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.noResize Mozilla HTMLFrameElement.noResize documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-noresize HTMLFrameElement.noResize specification>
 getNoResize :: (MonadDOM m) => HTMLFrameElement -> m Bool
-getNoResize self = liftDOM ((self ^. js "noResize") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.contentDocument Mozilla HTMLFrameElement.contentDocument documentation> 
-getContentDocument ::
-                   (MonadDOM m) => HTMLFrameElement -> m Document
-getContentDocument self
-  = liftDOM ((self ^. js "contentDocument") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.contentWindow Mozilla HTMLFrameElement.contentWindow documentation> 
-getContentWindow :: (MonadDOM m) => HTMLFrameElement -> m Window
-getContentWindow self
-  = liftDOM ((self ^. js "contentWindow") >>= fromJSValUnchecked)
+getNoResize self = liftDOM (((self ^. js "noResize") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.marginHeight Mozilla HTMLFrameElement.marginHeight documentation> 
-setMarginHeight ::
-                (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
-setMarginHeight self val
-  = liftDOM (self ^. jss "marginHeight" (toJSVal val))
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-contentdocument HTMLFrameElement.contentDocument specification>
+getContentDocument :: (MonadDOM m) => HTMLFrameElement -> m (Maybe Document)
+getContentDocument self = liftDOM (((self ^. js "contentDocument") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.marginHeight Mozilla HTMLFrameElement.marginHeight documentation> 
-getMarginHeight ::
-                (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
-getMarginHeight self
-  = liftDOM ((self ^. js "marginHeight") >>= fromJSValUnchecked)
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-contentdocument HTMLFrameElement.contentDocument specification>
+getContentDocumentUnsafe :: (MonadDOM m, HasCallStack) => HTMLFrameElement -> m Document
+getContentDocumentUnsafe self = liftDOM ((((self ^. js "contentDocument") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.marginWidth Mozilla HTMLFrameElement.marginWidth documentation> 
-setMarginWidth ::
-               (MonadDOM m, ToJSString val) => HTMLFrameElement -> val -> m ()
-setMarginWidth self val
-  = liftDOM (self ^. jss "marginWidth" (toJSVal val))
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-contentdocument HTMLFrameElement.contentDocument specification>
+getContentDocumentUnchecked :: (MonadDOM m) => HTMLFrameElement -> m Document
+getContentDocumentUnchecked self = liftDOM (((self ^. js "contentDocument") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.marginWidth Mozilla HTMLFrameElement.marginWidth documentation> 
-getMarginWidth ::
-               (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
-getMarginWidth self
-  = liftDOM ((self ^. js "marginWidth") >>= fromJSValUnchecked)
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-contentwindow HTMLFrameElement.contentWindow specification>
+getContentWindow :: (MonadDOM m) => HTMLFrameElement -> m (Maybe Window)
+getContentWindow self = liftDOM (((self ^. js "contentWindow") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.width Mozilla HTMLFrameElement.width documentation> 
-getWidth :: (MonadDOM m) => HTMLFrameElement -> m Int
-getWidth self
-  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-contentwindow HTMLFrameElement.contentWindow specification>
+getContentWindowUnsafe :: (MonadDOM m, HasCallStack) => HTMLFrameElement -> m Window
+getContentWindowUnsafe self = liftDOM ((((self ^. js "contentWindow") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.height Mozilla HTMLFrameElement.height documentation> 
-getHeight :: (MonadDOM m) => HTMLFrameElement -> m Int
-getHeight self
-  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-frame-contentwindow HTMLFrameElement.contentWindow specification>
+getContentWindowUnchecked :: (MonadDOM m) => HTMLFrameElement -> m Window
+getContentWindowUnchecked self = liftDOM (((self ^. js "contentWindow") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
-setLocation ::
-            (MonadDOM m, ToJSString val) =>
-              HTMLFrameElement -> Maybe val -> m ()
-setLocation self val
-  = liftDOM (self ^. jss "location" (toJSVal val))
+-- | <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 (self ^. jss "marginHeight" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
-getLocation ::
-            (MonadDOM m, FromJSString result) =>
-              HTMLFrameElement -> m (Maybe result)
-getLocation self
-  = liftDOM ((self ^. js "location") >>= fromMaybeJSString)
+-- | <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 (((self ^. js "marginHeight") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
-getLocationUnsafe ::
-                  (MonadDOM m, HasCallStack, FromJSString result) =>
-                    HTMLFrameElement -> m result
-getLocationUnsafe self
-  = liftDOM
-      (((self ^. js "location") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (self ^. jss "marginWidth" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
-getLocationUnchecked ::
-                     (MonadDOM m, FromJSString result) => HTMLFrameElement -> m result
-getLocationUnchecked self
-  = liftDOM ((self ^. js "location") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "marginWidth") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLFrameSetElement.hs b/src/JSDOM/Generated/HTMLFrameSetElement.hs
--- a/src/JSDOM/Generated/HTMLFrameSetElement.hs
+++ b/src/JSDOM/Generated/HTMLFrameSetElement.hs
@@ -1,97 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLFrameSetElement
-       (setCols, getCols, setRows, getRows, blur, error, focus, focusin,
-        focusout, load, resize, scroll, webKitWillRevealBottom,
-        webKitWillRevealLeft, webKitWillRevealRight, webKitWillRevealTop,
-        HTMLFrameSetElement(..), gTypeHTMLFrameSetElement)
+       (setCols, getCols, setRows, getRows, HTMLFrameSetElement(..), gTypeHTMLFrameSetElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.cols Mozilla HTMLFrameSetElement.cols documentation> 
-setCols ::
-        (MonadDOM m, ToJSString val) => HTMLFrameSetElement -> val -> m ()
-setCols self val = liftDOM (self ^. jss "cols" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.cols Mozilla HTMLFrameSetElement.cols documentation> 
-getCols ::
-        (MonadDOM m, FromJSString result) =>
-          HTMLFrameSetElement -> m result
-getCols self = liftDOM ((self ^. js "cols") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.rows Mozilla HTMLFrameSetElement.rows documentation> 
-setRows ::
-        (MonadDOM m, ToJSString val) => HTMLFrameSetElement -> val -> m ()
-setRows self val = liftDOM (self ^. jss "rows" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.rows Mozilla HTMLFrameSetElement.rows documentation> 
-getRows ::
-        (MonadDOM m, FromJSString result) =>
-          HTMLFrameSetElement -> m result
-getRows self = liftDOM ((self ^. js "rows") >>= fromJSValUnchecked)
-
--- | <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")
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onwebkitwillrevealbottom Mozilla HTMLFrameSetElement.onwebkitwillrevealbottom documentation> 
-webKitWillRevealBottom :: EventName HTMLFrameSetElement Event
-webKitWillRevealBottom
-  = unsafeEventName (toJSString "webkitwillrevealbottom")
+-- | <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 (self ^. jss "cols" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onwebkitwillrevealleft Mozilla HTMLFrameSetElement.onwebkitwillrevealleft documentation> 
-webKitWillRevealLeft :: EventName HTMLFrameSetElement Event
-webKitWillRevealLeft
-  = unsafeEventName (toJSString "webkitwillrevealleft")
+-- | <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 (((self ^. js "cols") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onwebkitwillrevealright Mozilla HTMLFrameSetElement.onwebkitwillrevealright documentation> 
-webKitWillRevealRight :: EventName HTMLFrameSetElement Event
-webKitWillRevealRight
-  = unsafeEventName (toJSString "webkitwillrevealright")
+-- | <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 (self ^. jss "rows" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onwebkitwillrevealtop Mozilla HTMLFrameSetElement.onwebkitwillrevealtop documentation> 
-webKitWillRevealTop :: EventName HTMLFrameSetElement Event
-webKitWillRevealTop
-  = unsafeEventName (toJSString "webkitwillrevealtop")
+-- | <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 (((self ^. js "rows") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLHRElement.hs b/src/JSDOM/Generated/HTMLHRElement.hs
--- a/src/JSDOM/Generated/HTMLHRElement.hs
+++ b/src/JSDOM/Generated/HTMLHRElement.hs
@@ -1,73 +1,56 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLHRElement
-       (setAlign, getAlign, setColor, getColor, setNoShade, getNoShade,
-        setSize, getSize, setWidth, getWidth, HTMLHRElement(..),
-        gTypeHTMLHRElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.align Mozilla HTMLHRElement.align documentation> 
-setAlign ::
-         (MonadDOM m, ToJSString val) => HTMLHRElement -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+-- | <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 (self ^. jss "align" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.align Mozilla HTMLHRElement.align documentation> 
-getAlign ::
-         (MonadDOM m, FromJSString result) => HTMLHRElement -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "align") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.color Mozilla HTMLHRElement.color documentation> 
-setColor ::
-         (MonadDOM m, ToJSString val) => HTMLHRElement -> val -> m ()
-setColor self val = liftDOM (self ^. jss "color" (toJSVal val))
+-- | <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 (self ^. jss "color" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.color Mozilla HTMLHRElement.color documentation> 
-getColor ::
-         (MonadDOM m, FromJSString result) => HTMLHRElement -> m result
-getColor self
-  = liftDOM ((self ^. js "color") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "color") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.noShade Mozilla HTMLHRElement.noShade documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-hr-noshade HTMLHRElement.noShade specification>
 setNoShade :: (MonadDOM m) => HTMLHRElement -> Bool -> m ()
-setNoShade self val = liftDOM (self ^. jss "noShade" (toJSVal val))
+setNoShade self val = liftDOM (void (self ^. jss "noShade" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.noShade Mozilla HTMLHRElement.noShade documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-hr-noshade HTMLHRElement.noShade specification>
 getNoShade :: (MonadDOM m) => HTMLHRElement -> m Bool
-getNoShade self = liftDOM ((self ^. js "noShade") >>= valToBool)
+getNoShade self = liftDOM (((self ^. js "noShade") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.size Mozilla HTMLHRElement.size documentation> 
-setSize ::
-        (MonadDOM m, ToJSString val) => HTMLHRElement -> val -> m ()
-setSize self val = liftDOM (self ^. jss "size" (toJSVal val))
+-- | <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 (self ^. jss "size" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.size Mozilla HTMLHRElement.size documentation> 
-getSize ::
-        (MonadDOM m, FromJSString result) => HTMLHRElement -> m result
-getSize self = liftDOM ((self ^. js "size") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "size") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.width Mozilla HTMLHRElement.width documentation> 
-setWidth ::
-         (MonadDOM m, ToJSString val) => HTMLHRElement -> val -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+-- | <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 (self ^. jss "width" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.width Mozilla HTMLHRElement.width documentation> 
-getWidth ::
-         (MonadDOM m, FromJSString result) => HTMLHRElement -> m result
-getWidth self
-  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "width") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLHeadElement.hs b/src/JSDOM/Generated/HTMLHeadElement.hs
--- a/src/JSDOM/Generated/HTMLHeadElement.hs
+++ b/src/JSDOM/Generated/HTMLHeadElement.hs
@@ -1,31 +1,17 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLHeadElement
-       (setProfile, getProfile, HTMLHeadElement(..), gTypeHTMLHeadElement)
+       (HTMLHeadElement(..), gTypeHTMLHeadElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadElement.profile Mozilla HTMLHeadElement.profile documentation> 
-setProfile ::
-           (MonadDOM m, ToJSString val) => HTMLHeadElement -> val -> m ()
-setProfile self val = liftDOM (self ^. jss "profile" (toJSVal val))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadElement.profile Mozilla HTMLHeadElement.profile documentation> 
-getProfile ::
-           (MonadDOM m, FromJSString result) => HTMLHeadElement -> m result
-getProfile self
-  = liftDOM ((self ^. js "profile") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/HTMLHeadingElement.hs b/src/JSDOM/Generated/HTMLHeadingElement.hs
--- a/src/JSDOM/Generated/HTMLHeadingElement.hs
+++ b/src/JSDOM/Generated/HTMLHeadingElement.hs
@@ -1,32 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLHeadingElement
-       (setAlign, getAlign, HTMLHeadingElement(..),
-        gTypeHTMLHeadingElement)
+       (setAlign, getAlign, HTMLHeadingElement(..), gTypeHTMLHeadingElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadingElement.align Mozilla HTMLHeadingElement.align documentation> 
-setAlign ::
-         (MonadDOM m, ToJSString val) => HTMLHeadingElement -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+-- | <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 (self ^. jss "align" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadingElement.align Mozilla HTMLHeadingElement.align documentation> 
-getAlign ::
-         (MonadDOM m, FromJSString result) => HTMLHeadingElement -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "align") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLHtmlElement.hs b/src/JSDOM/Generated/HTMLHtmlElement.hs
--- a/src/JSDOM/Generated/HTMLHtmlElement.hs
+++ b/src/JSDOM/Generated/HTMLHtmlElement.hs
@@ -1,44 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLHtmlElement
-       (setVersion, getVersion, setManifest, getManifest,
-        HTMLHtmlElement(..), gTypeHTMLHtmlElement)
+       (setVersion, getVersion, HTMLHtmlElement(..), gTypeHTMLHtmlElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.version Mozilla HTMLHtmlElement.version documentation> 
-setVersion ::
-           (MonadDOM m, ToJSString val) => HTMLHtmlElement -> val -> m ()
-setVersion self val = liftDOM (self ^. jss "version" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.version Mozilla HTMLHtmlElement.version documentation> 
-getVersion ::
-           (MonadDOM m, FromJSString result) => HTMLHtmlElement -> m result
-getVersion self
-  = liftDOM ((self ^. js "version") >>= fromJSValUnchecked)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.manifest Mozilla HTMLHtmlElement.manifest documentation> 
-setManifest ::
-            (MonadDOM m, ToJSString val) => HTMLHtmlElement -> val -> m ()
-setManifest self val
-  = liftDOM (self ^. jss "manifest" (toJSVal val))
+-- | <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 (self ^. jss "version" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.manifest Mozilla HTMLHtmlElement.manifest documentation> 
-getManifest ::
-            (MonadDOM m, FromJSString result) => HTMLHtmlElement -> m result
-getManifest self
-  = liftDOM ((self ^. js "manifest") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLHtmlElement/version MDN HTMLHtmlElement.version documentation>
+getVersion :: (MonadDOM m, FromJSString result) => HTMLHtmlElement -> m result
+getVersion self = liftDOM (((self ^. js "version") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLHyperlinkElementUtils.hs b/src/JSDOM/Generated/HTMLHyperlinkElementUtils.hs
--- a/src/JSDOM/Generated/HTMLHyperlinkElementUtils.hs
+++ b/src/JSDOM/Generated/HTMLHyperlinkElementUtils.hs
@@ -1,220 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLHyperlinkElementUtils
-       (setHref, getHref, getOrigin, setProtocol, getProtocol,
-        setUsername, getUsername, setPassword, getPassword, setHost,
-        getHost, setHostname, getHostname, setPort, getPort, setPathname,
-        getPathname, setSearch, getSearch, setHash, getHash,
-        HTMLHyperlinkElementUtils(..), gTypeHTMLHyperlinkElementUtils,
-        IsHTMLHyperlinkElementUtils, toHTMLHyperlinkElementUtils)
+       (setHref, getHref, setTarget, getTarget, HTMLHyperlinkElementUtils(..), gTypeHTMLHyperlinkElementUtils, IsHTMLHyperlinkElementUtils, toHTMLHyperlinkElementUtils)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.href Mozilla HTMLHyperlinkElementUtils.href documentation> 
-setHref ::
-        (MonadDOM m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-          self -> val -> m ()
-setHref self val
-  = liftDOM
-      ((toHTMLHyperlinkElementUtils self) ^. jss "href" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.href Mozilla HTMLHyperlinkElementUtils.href documentation> 
-getHref ::
-        (MonadDOM m, IsHTMLHyperlinkElementUtils self,
-         FromJSString result) =>
-          self -> m result
-getHref self
-  = liftDOM
-      (((toHTMLHyperlinkElementUtils self) ^. js "href") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.origin Mozilla HTMLHyperlinkElementUtils.origin documentation> 
-getOrigin ::
-          (MonadDOM m, IsHTMLHyperlinkElementUtils self,
-           FromJSString result) =>
-            self -> m result
-getOrigin self
-  = liftDOM
-      (((toHTMLHyperlinkElementUtils self) ^. js "origin") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.protocol Mozilla HTMLHyperlinkElementUtils.protocol documentation> 
-setProtocol ::
-            (MonadDOM m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-              self -> val -> m ()
-setProtocol self val
-  = liftDOM
-      ((toHTMLHyperlinkElementUtils self) ^. jss "protocol"
-         (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.protocol Mozilla HTMLHyperlinkElementUtils.protocol documentation> 
-getProtocol ::
-            (MonadDOM m, IsHTMLHyperlinkElementUtils self,
-             FromJSString result) =>
-              self -> m result
-getProtocol self
-  = liftDOM
-      (((toHTMLHyperlinkElementUtils self) ^. js "protocol") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.username Mozilla HTMLHyperlinkElementUtils.username documentation> 
-setUsername ::
-            (MonadDOM m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-              self -> val -> m ()
-setUsername self val
-  = liftDOM
-      ((toHTMLHyperlinkElementUtils self) ^. jss "username"
-         (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.username Mozilla HTMLHyperlinkElementUtils.username documentation> 
-getUsername ::
-            (MonadDOM m, IsHTMLHyperlinkElementUtils self,
-             FromJSString result) =>
-              self -> m result
-getUsername self
-  = liftDOM
-      (((toHTMLHyperlinkElementUtils self) ^. js "username") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.password Mozilla HTMLHyperlinkElementUtils.password documentation> 
-setPassword ::
-            (MonadDOM m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-              self -> val -> m ()
-setPassword self val
-  = liftDOM
-      ((toHTMLHyperlinkElementUtils self) ^. jss "password"
-         (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.password Mozilla HTMLHyperlinkElementUtils.password documentation> 
-getPassword ::
-            (MonadDOM m, IsHTMLHyperlinkElementUtils self,
-             FromJSString result) =>
-              self -> m result
-getPassword self
-  = liftDOM
-      (((toHTMLHyperlinkElementUtils self) ^. js "password") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.host Mozilla HTMLHyperlinkElementUtils.host documentation> 
-setHost ::
-        (MonadDOM m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-          self -> val -> m ()
-setHost self val
-  = liftDOM
-      ((toHTMLHyperlinkElementUtils self) ^. jss "host" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.host Mozilla HTMLHyperlinkElementUtils.host documentation> 
-getHost ::
-        (MonadDOM m, IsHTMLHyperlinkElementUtils self,
-         FromJSString result) =>
-          self -> m result
-getHost self
-  = liftDOM
-      (((toHTMLHyperlinkElementUtils self) ^. js "host") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.hostname Mozilla HTMLHyperlinkElementUtils.hostname documentation> 
-setHostname ::
-            (MonadDOM m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-              self -> val -> m ()
-setHostname self val
-  = liftDOM
-      ((toHTMLHyperlinkElementUtils self) ^. jss "hostname"
-         (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.hostname Mozilla HTMLHyperlinkElementUtils.hostname documentation> 
-getHostname ::
-            (MonadDOM m, IsHTMLHyperlinkElementUtils self,
-             FromJSString result) =>
-              self -> m result
-getHostname self
-  = liftDOM
-      (((toHTMLHyperlinkElementUtils self) ^. js "hostname") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.port Mozilla HTMLHyperlinkElementUtils.port documentation> 
-setPort ::
-        (MonadDOM m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-          self -> val -> m ()
-setPort self val
-  = liftDOM
-      ((toHTMLHyperlinkElementUtils self) ^. jss "port" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.port Mozilla HTMLHyperlinkElementUtils.port documentation> 
-getPort ::
-        (MonadDOM m, IsHTMLHyperlinkElementUtils self,
-         FromJSString result) =>
-          self -> m result
-getPort self
-  = liftDOM
-      (((toHTMLHyperlinkElementUtils self) ^. js "port") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.pathname Mozilla HTMLHyperlinkElementUtils.pathname documentation> 
-setPathname ::
-            (MonadDOM m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-              self -> val -> m ()
-setPathname self val
-  = liftDOM
-      ((toHTMLHyperlinkElementUtils self) ^. jss "pathname"
-         (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.pathname Mozilla HTMLHyperlinkElementUtils.pathname documentation> 
-getPathname ::
-            (MonadDOM m, IsHTMLHyperlinkElementUtils self,
-             FromJSString result) =>
-              self -> m result
-getPathname self
-  = liftDOM
-      (((toHTMLHyperlinkElementUtils self) ^. js "pathname") >>=
-         fromJSValUnchecked)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.search Mozilla HTMLHyperlinkElementUtils.search documentation> 
-setSearch ::
-          (MonadDOM m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-            self -> val -> m ()
-setSearch self val
-  = liftDOM
-      ((toHTMLHyperlinkElementUtils self) ^. jss "search" (toJSVal val))
+-- | <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 ((Types.toHTMLHyperlinkElementUtils self) ^. jss "href" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.search Mozilla HTMLHyperlinkElementUtils.search documentation> 
-getSearch ::
-          (MonadDOM m, IsHTMLHyperlinkElementUtils self,
-           FromJSString result) =>
-            self -> m result
-getSearch self
-  = liftDOM
-      (((toHTMLHyperlinkElementUtils self) ^. js "search") >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toHTMLHyperlinkElementUtils self) ^. js "href") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.hash Mozilla HTMLHyperlinkElementUtils.hash documentation> 
-setHash ::
-        (MonadDOM m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
-          self -> val -> m ()
-setHash self val
-  = liftDOM
-      ((toHTMLHyperlinkElementUtils self) ^. jss "hash" (toJSVal val))
+-- | <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 ((Types.toHTMLHyperlinkElementUtils self) ^. jss "target" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.hash Mozilla HTMLHyperlinkElementUtils.hash documentation> 
-getHash ::
-        (MonadDOM m, IsHTMLHyperlinkElementUtils self,
-         FromJSString result) =>
-          self -> m result
-getHash self
-  = liftDOM
-      (((toHTMLHyperlinkElementUtils self) ^. js "hash") >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toHTMLHyperlinkElementUtils self) ^. js "target") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLIFrameElement.hs b/src/JSDOM/Generated/HTMLIFrameElement.hs
--- a/src/JSDOM/Generated/HTMLIFrameElement.hs
+++ b/src/JSDOM/Generated/HTMLIFrameElement.hs
@@ -1,188 +1,180 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLIFrameElement
-       (getSVGDocument, getSVGDocument_, setAlign, getAlign,
-        setFrameBorder, getFrameBorder, setHeight, getHeight, setLongDesc,
-        getLongDesc, setMarginHeight, getMarginHeight, setMarginWidth,
-        getMarginWidth, setName, getName, getSandbox, setAllowFullscreen,
-        getAllowFullscreen, setScrolling, getScrolling, setSrc, getSrc,
-        setSrcdoc, getSrcdoc, setWidth, getWidth, getContentDocument,
-        getContentWindow, HTMLIFrameElement(..), gTypeHTMLIFrameElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.getSVGDocument Mozilla HTMLIFrameElement.getSVGDocument documentation> 
-getSVGDocument :: (MonadDOM m) => HTMLIFrameElement -> m Document
-getSVGDocument self
-  = liftDOM
-      ((self ^. jsf "getSVGDocument" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/getSVGDocument MDN HTMLIFrameElement.getSVGDocument documentation>
+getSVGDocument :: (MonadDOM m) => HTMLIFrameElement -> m (Maybe Document)
+getSVGDocument self = liftDOM (((self ^. jsf "getSVGDocument" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.getSVGDocument Mozilla HTMLIFrameElement.getSVGDocument documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/getSVGDocument MDN HTMLIFrameElement.getSVGDocument documentation>
 getSVGDocument_ :: (MonadDOM m) => HTMLIFrameElement -> m ()
-getSVGDocument_ self
-  = liftDOM (void (self ^. jsf "getSVGDocument" ()))
+getSVGDocument_ self = liftDOM (void (self ^. jsf "getSVGDocument" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.align Mozilla HTMLIFrameElement.align documentation> 
-setAlign ::
-         (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/getSVGDocument MDN HTMLIFrameElement.getSVGDocument documentation>
+getSVGDocumentUnsafe :: (MonadDOM m, HasCallStack) => HTMLIFrameElement -> m Document
+getSVGDocumentUnsafe self = liftDOM ((((self ^. jsf "getSVGDocument" ()) >>= 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> 
-getAlign ::
-         (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/getSVGDocument MDN HTMLIFrameElement.getSVGDocument documentation>
+getSVGDocumentUnchecked :: (MonadDOM m) => HTMLIFrameElement -> m Document
+getSVGDocumentUnchecked self = liftDOM (((self ^. jsf "getSVGDocument" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.frameBorder Mozilla HTMLIFrameElement.frameBorder documentation> 
-setFrameBorder ::
-               (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setFrameBorder self val
-  = liftDOM (self ^. jss "frameBorder" (toJSVal val))
+-- | <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 (self ^. jss "src" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.frameBorder Mozilla HTMLIFrameElement.frameBorder documentation> 
-getFrameBorder ::
-               (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
-getFrameBorder self
-  = liftDOM ((self ^. js "frameBorder") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/src MDN HTMLIFrameElement.src documentation>
+getSrc :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getSrc self = liftDOM (((self ^. js "src") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.height Mozilla HTMLIFrameElement.height documentation> 
-setHeight ::
-          (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+-- | <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 (self ^. jss "srcdoc" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.height Mozilla HTMLIFrameElement.height documentation> 
-getHeight ::
-          (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
-getHeight self
-  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/srcdoc MDN HTMLIFrameElement.srcdoc documentation>
+getSrcdoc :: (MonadDOM m) => HTMLIFrameElement -> m TrustedHTMLOrString
+getSrcdoc self = liftDOM (((self ^. js "srcdoc") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.longDesc Mozilla HTMLIFrameElement.longDesc documentation> 
-setLongDesc ::
-            (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setLongDesc self val
-  = liftDOM (self ^. jss "longDesc" (toJSVal val))
+-- | <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 (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.longDesc Mozilla HTMLIFrameElement.longDesc documentation> 
-getLongDesc ::
-            (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
-getLongDesc self
-  = liftDOM ((self ^. js "longDesc") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/name MDN HTMLIFrameElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.marginHeight Mozilla HTMLIFrameElement.marginHeight documentation> 
-setMarginHeight ::
-                (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setMarginHeight self val
-  = liftDOM (self ^. jss "marginHeight" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/sandbox MDN HTMLIFrameElement.sandbox documentation>
+getSandbox :: (MonadDOM m) => HTMLIFrameElement -> m DOMTokenList
+getSandbox self = liftDOM (((self ^. js "sandbox") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.marginHeight Mozilla HTMLIFrameElement.marginHeight documentation> 
-getMarginHeight ::
-                (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
-getMarginHeight self
-  = liftDOM ((self ^. js "marginHeight") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "allow" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.marginWidth Mozilla HTMLIFrameElement.marginWidth documentation> 
-setMarginWidth ::
-               (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setMarginWidth self val
-  = liftDOM (self ^. jss "marginWidth" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/allow MDN HTMLIFrameElement.allow documentation>
+getAllow :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getAllow self = liftDOM (((self ^. js "allow") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.marginWidth Mozilla HTMLIFrameElement.marginWidth documentation> 
-getMarginWidth ::
-               (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
-getMarginWidth self
-  = liftDOM ((self ^. js "marginWidth") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/allowFullscreen MDN HTMLIFrameElement.allowFullscreen documentation>
+setAllowFullscreen :: (MonadDOM m) => HTMLIFrameElement -> Bool -> m ()
+setAllowFullscreen self val = liftDOM (void (self ^. jss "allowFullscreen" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.name Mozilla HTMLIFrameElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/allowFullscreen MDN HTMLIFrameElement.allowFullscreen documentation>
+getAllowFullscreen :: (MonadDOM m) => HTMLIFrameElement -> m Bool
+getAllowFullscreen self = liftDOM (((self ^. js "allowFullscreen") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.name Mozilla HTMLIFrameElement.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "width" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.sandbox Mozilla HTMLIFrameElement.sandbox documentation> 
-getSandbox :: (MonadDOM m) => HTMLIFrameElement -> m DOMTokenList
-getSandbox self
-  = liftDOM ((self ^. js "sandbox") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/width MDN HTMLIFrameElement.width documentation>
+getWidth :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.allowFullscreen Mozilla HTMLIFrameElement.allowFullscreen documentation> 
-setAllowFullscreen ::
-                   (MonadDOM m) => HTMLIFrameElement -> Bool -> m ()
-setAllowFullscreen self val
-  = liftDOM (self ^. jss "allowFullscreen" (toJSVal val))
+-- | <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 (self ^. jss "height" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.allowFullscreen Mozilla HTMLIFrameElement.allowFullscreen documentation> 
-getAllowFullscreen :: (MonadDOM m) => HTMLIFrameElement -> m Bool
-getAllowFullscreen self
-  = liftDOM ((self ^. js "allowFullscreen") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/height MDN HTMLIFrameElement.height documentation>
+getHeight :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.scrolling Mozilla HTMLIFrameElement.scrolling documentation> 
-setScrolling ::
-             (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setScrolling self val
-  = liftDOM (self ^. jss "scrolling" (toJSVal val))
+-- | <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 (self ^. jss "referrerPolicy" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.scrolling Mozilla HTMLIFrameElement.scrolling documentation> 
-getScrolling ::
-             (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
-getScrolling self
-  = liftDOM ((self ^. js "scrolling") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/referrerPolicy MDN HTMLIFrameElement.referrerPolicy documentation>
+getReferrerPolicy :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getReferrerPolicy self = liftDOM (((self ^. js "referrerPolicy") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.src Mozilla HTMLIFrameElement.src documentation> 
-setSrc ::
-       (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setSrc self val = liftDOM (self ^. jss "src" (toJSVal val))
+-- | <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 (self ^. jss "loading" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.src Mozilla HTMLIFrameElement.src documentation> 
-getSrc ::
-       (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
-getSrc self = liftDOM ((self ^. js "src") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/loading MDN HTMLIFrameElement.loading documentation>
+getLoading :: (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
+getLoading self = liftDOM (((self ^. js "loading") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.srcdoc Mozilla HTMLIFrameElement.srcdoc documentation> 
-setSrcdoc ::
-          (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setSrcdoc self val = liftDOM (self ^. jss "srcdoc" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/contentDocument MDN HTMLIFrameElement.contentDocument documentation>
+getContentDocument :: (MonadDOM m) => HTMLIFrameElement -> m (Maybe Document)
+getContentDocument self = liftDOM (((self ^. js "contentDocument") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.srcdoc Mozilla HTMLIFrameElement.srcdoc documentation> 
-getSrcdoc ::
-          (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
-getSrcdoc self
-  = liftDOM ((self ^. js "srcdoc") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/contentDocument MDN HTMLIFrameElement.contentDocument documentation>
+getContentDocumentUnsafe :: (MonadDOM m, HasCallStack) => HTMLIFrameElement -> m Document
+getContentDocumentUnsafe self = liftDOM ((((self ^. js "contentDocument") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.width Mozilla HTMLIFrameElement.width documentation> 
-setWidth ::
-         (MonadDOM m, ToJSString val) => HTMLIFrameElement -> val -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/contentDocument MDN HTMLIFrameElement.contentDocument documentation>
+getContentDocumentUnchecked :: (MonadDOM m) => HTMLIFrameElement -> m Document
+getContentDocumentUnchecked self = liftDOM (((self ^. js "contentDocument") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.width Mozilla HTMLIFrameElement.width documentation> 
-getWidth ::
-         (MonadDOM m, FromJSString result) => HTMLIFrameElement -> m result
-getWidth self
-  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/contentWindow MDN HTMLIFrameElement.contentWindow documentation>
+getContentWindow :: (MonadDOM m) => HTMLIFrameElement -> m (Maybe Window)
+getContentWindow self = liftDOM (((self ^. js "contentWindow") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.contentDocument Mozilla HTMLIFrameElement.contentDocument documentation> 
-getContentDocument ::
-                   (MonadDOM m) => HTMLIFrameElement -> m Document
-getContentDocument self
-  = liftDOM ((self ^. js "contentDocument") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/contentWindow MDN HTMLIFrameElement.contentWindow documentation>
+getContentWindowUnsafe :: (MonadDOM m, HasCallStack) => HTMLIFrameElement -> m Window
+getContentWindowUnsafe self = liftDOM ((((self ^. js "contentWindow") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.contentWindow Mozilla HTMLIFrameElement.contentWindow documentation> 
-getContentWindow :: (MonadDOM m) => HTMLIFrameElement -> m Window
-getContentWindow self
-  = liftDOM ((self ^. js "contentWindow") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLIFrameElement/contentWindow MDN HTMLIFrameElement.contentWindow documentation>
+getContentWindowUnchecked :: (MonadDOM m) => HTMLIFrameElement -> m Window
+getContentWindowUnchecked self = liftDOM (((self ^. js "contentWindow") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "align" (toJSVal val)))
+
+-- | <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 (((self ^. js "align") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "scrolling" (toJSVal val)))
+
+-- | <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 (((self ^. js "scrolling") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "frameBorder" (toJSVal val)))
+
+-- | <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 (((self ^. js "frameBorder") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "longDesc" (toJSVal val)))
+
+-- | <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 (((self ^. js "longDesc") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "marginHeight" (toJSVal val)))
+
+-- | <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 (((self ^. js "marginHeight") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "marginWidth" (toJSVal val)))
+
+-- | <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 (((self ^. js "marginWidth") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLImageElement.hs b/src/JSDOM/Generated/HTMLImageElement.hs
--- a/src/JSDOM/Generated/HTMLImageElement.hs
+++ b/src/JSDOM/Generated/HTMLImageElement.hs
@@ -1,238 +1,212 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLImageElement
-       (setName, getName, setAlign, getAlign, setAlt, getAlt, setBorder,
-        getBorder, setCrossOrigin, getCrossOrigin, getCrossOriginUnsafe,
-        getCrossOriginUnchecked, setHeight, getHeight, setHspace,
-        getHspace, setIsMap, getIsMap, setLongDesc, getLongDesc, setSrc,
-        getSrc, setSrcset, getSrcset, setSizes, getSizes, getCurrentSrc,
-        setUseMap, getUseMap, setVspace, getVspace, setWidth, getWidth,
-        getComplete, setLowsrc, getLowsrc, getNaturalHeight,
-        getNaturalWidth, getX, getY, HTMLImageElement(..),
-        gTypeHTMLImageElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.name Mozilla HTMLImageElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/decode MDN HTMLImageElement.decode documentation>
+decode :: (MonadDOM m) => HTMLImageElement -> m ()
+decode self = liftDOM (void (((self ^. jsf "decode" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.name Mozilla HTMLImageElement.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "alt" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.align Mozilla HTMLImageElement.align documentation> 
-setAlign ::
-         (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/alt MDN HTMLImageElement.alt documentation>
+getAlt :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getAlt self = liftDOM (((self ^. js "alt") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.align Mozilla HTMLImageElement.align documentation> 
-getAlign ::
-         (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "src" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.alt Mozilla HTMLImageElement.alt documentation> 
-setAlt ::
-       (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
-setAlt self val = liftDOM (self ^. jss "alt" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/src MDN HTMLImageElement.src documentation>
+getSrc :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getSrc self = liftDOM (((self ^. js "src") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.alt Mozilla HTMLImageElement.alt documentation> 
-getAlt ::
-       (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
-getAlt self = liftDOM ((self ^. js "alt") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "srcset" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.border Mozilla HTMLImageElement.border documentation> 
-setBorder ::
-          (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
-setBorder self val = liftDOM (self ^. jss "border" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/srcset MDN HTMLImageElement.srcset documentation>
+getSrcset :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getSrcset self = liftDOM (((self ^. js "srcset") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.border Mozilla HTMLImageElement.border documentation> 
-getBorder ::
-          (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
-getBorder self
-  = liftDOM ((self ^. js "border") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "sizes" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
-setCrossOrigin ::
-               (MonadDOM m, ToJSString val) =>
-                 HTMLImageElement -> Maybe val -> m ()
-setCrossOrigin self val
-  = liftDOM (self ^. jss "crossOrigin" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/sizes MDN HTMLImageElement.sizes documentation>
+getSizes :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getSizes self = liftDOM (((self ^. js "sizes") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
-getCrossOrigin ::
-               (MonadDOM m, FromJSString result) =>
-                 HTMLImageElement -> m (Maybe result)
-getCrossOrigin self
-  = liftDOM ((self ^. js "crossOrigin") >>= fromMaybeJSString)
+-- | <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 (self ^. jss "crossOrigin" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
-getCrossOriginUnsafe ::
-                     (MonadDOM m, HasCallStack, FromJSString result) =>
-                       HTMLImageElement -> m result
-getCrossOriginUnsafe self
-  = liftDOM
-      (((self ^. js "crossOrigin") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((self ^. js "crossOrigin") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
-getCrossOriginUnchecked ::
-                        (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
-getCrossOriginUnchecked self
-  = liftDOM ((self ^. js "crossOrigin") >>= fromJSValUnchecked)
+-- | <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 ((((self ^. js "crossOrigin") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.height Mozilla HTMLImageElement.height documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/crossOrigin MDN HTMLImageElement.crossOrigin documentation>
+getCrossOriginUnchecked :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getCrossOriginUnchecked self = liftDOM (((self ^. js "crossOrigin") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "useMap" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/useMap MDN HTMLImageElement.useMap documentation>
+getUseMap :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getUseMap self = liftDOM (((self ^. js "useMap") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/isMap MDN HTMLImageElement.isMap documentation>
+setIsMap :: (MonadDOM m) => HTMLImageElement -> Bool -> m ()
+setIsMap self val = liftDOM (void (self ^. jss "isMap" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/isMap MDN HTMLImageElement.isMap documentation>
+getIsMap :: (MonadDOM m) => HTMLImageElement -> m Bool
+getIsMap self = liftDOM (((self ^. js "isMap") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/width MDN HTMLImageElement.width documentation>
+setWidth :: (MonadDOM m) => HTMLImageElement -> Word -> m ()
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/width MDN HTMLImageElement.width documentation>
+getWidth :: (MonadDOM m) => HTMLImageElement -> m Word
+getWidth self = liftDOM ((P.round <$> ((self ^. js "width") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/height MDN HTMLImageElement.height documentation>
 setHeight :: (MonadDOM m) => HTMLImageElement -> Word -> m ()
-setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+setHeight self val = liftDOM (void (self ^. jss "height" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.height Mozilla HTMLImageElement.height documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/height MDN HTMLImageElement.height documentation>
 getHeight :: (MonadDOM m) => HTMLImageElement -> m Word
-getHeight self
-  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
+getHeight self = liftDOM ((P.round <$> ((self ^. js "height") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.hspace Mozilla HTMLImageElement.hspace documentation> 
-setHspace :: (MonadDOM m) => HTMLImageElement -> Word -> m ()
-setHspace self val = liftDOM (self ^. jss "hspace" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/naturalWidth MDN HTMLImageElement.naturalWidth documentation>
+getNaturalWidth :: (MonadDOM m) => HTMLImageElement -> m Word
+getNaturalWidth self = liftDOM ((P.round <$> ((self ^. js "naturalWidth") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.hspace Mozilla HTMLImageElement.hspace documentation> 
-getHspace :: (MonadDOM m) => HTMLImageElement -> m Word
-getHspace self
-  = liftDOM (round <$> ((self ^. js "hspace") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/naturalHeight MDN HTMLImageElement.naturalHeight documentation>
+getNaturalHeight :: (MonadDOM m) => HTMLImageElement -> m Word
+getNaturalHeight self = liftDOM ((P.round <$> ((self ^. js "naturalHeight") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.isMap Mozilla HTMLImageElement.isMap documentation> 
-setIsMap :: (MonadDOM m) => HTMLImageElement -> Bool -> m ()
-setIsMap self val = liftDOM (self ^. jss "isMap" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/complete MDN HTMLImageElement.complete documentation>
+getComplete :: (MonadDOM m) => HTMLImageElement -> m Bool
+getComplete self = liftDOM (((self ^. js "complete") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.isMap Mozilla HTMLImageElement.isMap documentation> 
-getIsMap :: (MonadDOM m) => HTMLImageElement -> m Bool
-getIsMap self = liftDOM ((self ^. js "isMap") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/currentSrc MDN HTMLImageElement.currentSrc documentation>
+getCurrentSrc :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getCurrentSrc self = liftDOM (((self ^. js "currentSrc") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.longDesc Mozilla HTMLImageElement.longDesc documentation> 
-setLongDesc ::
-            (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
-setLongDesc self val
-  = liftDOM (self ^. jss "longDesc" (toJSVal val))
+-- | <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 (self ^. jss "referrerPolicy" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.longDesc Mozilla HTMLImageElement.longDesc documentation> 
-getLongDesc ::
-            (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
-getLongDesc self
-  = liftDOM ((self ^. js "longDesc") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/referrerPolicy MDN HTMLImageElement.referrerPolicy documentation>
+getReferrerPolicy :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getReferrerPolicy self = liftDOM (((self ^. js "referrerPolicy") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.src Mozilla HTMLImageElement.src documentation> 
-setSrc ::
-       (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
-setSrc self val = liftDOM (self ^. jss "src" (toJSVal val))
+-- | <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 (self ^. jss "decoding" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.src Mozilla HTMLImageElement.src documentation> 
-getSrc ::
-       (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
-getSrc self = liftDOM ((self ^. js "src") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/decoding MDN HTMLImageElement.decoding documentation>
+getDecoding :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getDecoding self = liftDOM (((self ^. js "decoding") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.srcset Mozilla HTMLImageElement.srcset documentation> 
-setSrcset ::
-          (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
-setSrcset self val = liftDOM (self ^. jss "srcset" (toJSVal val))
+-- | <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 (self ^. jss "loading" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.srcset Mozilla HTMLImageElement.srcset documentation> 
-getSrcset ::
-          (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
-getSrcset self
-  = liftDOM ((self ^. js "srcset") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/loading MDN HTMLImageElement.loading documentation>
+getLoading :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getLoading self = liftDOM (((self ^. js "loading") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.sizes Mozilla HTMLImageElement.sizes documentation> 
-setSizes ::
-         (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
-setSizes self val = liftDOM (self ^. jss "sizes" (toJSVal val))
+-- | <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 (self ^. jss "fetchPriority" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.sizes Mozilla HTMLImageElement.sizes documentation> 
-getSizes ::
-         (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
-getSizes self
-  = liftDOM ((self ^. js "sizes") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/fetchPriority MDN HTMLImageElement.fetchPriority documentation>
+getFetchPriority :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getFetchPriority self = liftDOM (((self ^. js "fetchPriority") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.currentSrc Mozilla HTMLImageElement.currentSrc documentation> 
-getCurrentSrc ::
-              (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
-getCurrentSrc self
-  = liftDOM ((self ^. js "currentSrc") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/x MDN HTMLImageElement.x documentation>
+getX :: (MonadDOM m) => HTMLImageElement -> m Int
+getX self = liftDOM ((P.round <$> ((self ^. js "x") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.useMap Mozilla HTMLImageElement.useMap documentation> 
-setUseMap ::
-          (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
-setUseMap self val = liftDOM (self ^. jss "useMap" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/y MDN HTMLImageElement.y documentation>
+getY :: (MonadDOM m) => HTMLImageElement -> m Int
+getY self = liftDOM ((P.round <$> ((self ^. js "y") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.useMap Mozilla HTMLImageElement.useMap documentation> 
-getUseMap ::
-          (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
-getUseMap self
-  = liftDOM ((self ^. js "useMap") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.vspace Mozilla HTMLImageElement.vspace documentation> 
-setVspace :: (MonadDOM m) => HTMLImageElement -> Word -> m ()
-setVspace self val = liftDOM (self ^. jss "vspace" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/name MDN HTMLImageElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.vspace Mozilla HTMLImageElement.vspace documentation> 
-getVspace :: (MonadDOM m) => HTMLImageElement -> m Word
-getVspace self
-  = liftDOM (round <$> ((self ^. js "vspace") >>= valToNumber))
+-- | <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 (self ^. jss "lowsrc" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.width Mozilla HTMLImageElement.width documentation> 
-setWidth :: (MonadDOM m) => HTMLImageElement -> Word -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+-- | <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 (((self ^. js "lowsrc") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.width Mozilla HTMLImageElement.width documentation> 
-getWidth :: (MonadDOM m) => HTMLImageElement -> m Word
-getWidth self
-  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
+-- | <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 (self ^. jss "align" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.complete Mozilla HTMLImageElement.complete documentation> 
-getComplete :: (MonadDOM m) => HTMLImageElement -> m Bool
-getComplete self = liftDOM ((self ^. js "complete") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/align MDN HTMLImageElement.align documentation>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getAlign self = liftDOM (((self ^. js "align") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.lowsrc Mozilla HTMLImageElement.lowsrc documentation> 
-setLowsrc ::
-          (MonadDOM m, ToJSString val) => HTMLImageElement -> val -> m ()
-setLowsrc self val = liftDOM (self ^. jss "lowsrc" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/hspace MDN HTMLImageElement.hspace documentation>
+setHspace :: (MonadDOM m) => HTMLImageElement -> Word -> m ()
+setHspace self val = liftDOM (void (self ^. jss "hspace" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.lowsrc Mozilla HTMLImageElement.lowsrc documentation> 
-getLowsrc ::
-          (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
-getLowsrc self
-  = liftDOM ((self ^. js "lowsrc") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/hspace MDN HTMLImageElement.hspace documentation>
+getHspace :: (MonadDOM m) => HTMLImageElement -> m Word
+getHspace self = liftDOM ((P.round <$> ((self ^. js "hspace") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.naturalHeight Mozilla HTMLImageElement.naturalHeight documentation> 
-getNaturalHeight :: (MonadDOM m) => HTMLImageElement -> m Int
-getNaturalHeight self
-  = liftDOM
-      (round <$> ((self ^. js "naturalHeight") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/vspace MDN HTMLImageElement.vspace documentation>
+setVspace :: (MonadDOM m) => HTMLImageElement -> Word -> m ()
+setVspace self val = liftDOM (void (self ^. jss "vspace" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.naturalWidth Mozilla HTMLImageElement.naturalWidth documentation> 
-getNaturalWidth :: (MonadDOM m) => HTMLImageElement -> m Int
-getNaturalWidth self
-  = liftDOM (round <$> ((self ^. js "naturalWidth") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/vspace MDN HTMLImageElement.vspace documentation>
+getVspace :: (MonadDOM m) => HTMLImageElement -> m Word
+getVspace self = liftDOM ((P.round <$> ((self ^. js "vspace") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.x Mozilla HTMLImageElement.x documentation> 
-getX :: (MonadDOM m) => HTMLImageElement -> m Int
-getX self = liftDOM (round <$> ((self ^. js "x") >>= valToNumber))
+-- | <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 (self ^. jss "longDesc" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.y Mozilla HTMLImageElement.y documentation> 
-getY :: (MonadDOM m) => HTMLImageElement -> m Int
-getY self = liftDOM (round <$> ((self ^. js "y") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/longDesc MDN HTMLImageElement.longDesc documentation>
+getLongDesc :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getLongDesc self = liftDOM (((self ^. js "longDesc") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "border" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLImageElement/border MDN HTMLImageElement.border documentation>
+getBorder :: (MonadDOM m, FromJSString result) => HTMLImageElement -> m result
+getBorder self = liftDOM (((self ^. js "border") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLInputElement.hs b/src/JSDOM/Generated/HTMLInputElement.hs
--- a/src/JSDOM/Generated/HTMLInputElement.hs
+++ b/src/JSDOM/Generated/HTMLInputElement.hs
@@ -1,610 +1,484 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLInputElement
-       (stepUp, stepDown, checkValidity, checkValidity_, reportValidity,
-        reportValidity_, setCustomValidity, select, setRangeText,
-        setRangeText4, setSelectionRange, setAccept, getAccept, setAlt,
-        getAlt, setAutocomplete, getAutocomplete, setAutofocus,
-        getAutofocus, setDefaultChecked, getDefaultChecked, setChecked,
-        getChecked, setDirName, getDirName, setDisabled, getDisabled,
-        getForm, setFiles, getFiles, getFilesUnsafe, getFilesUnchecked,
-        setFormAction, getFormAction, setFormEnctype, getFormEnctype,
-        setFormMethod, getFormMethod, setFormNoValidate, getFormNoValidate,
-        setFormTarget, getFormTarget, setHeight, getHeight,
-        setIndeterminate, getIndeterminate, getList, setMax, getMax,
-        setMinLength, getMinLength, setMaxLength, getMaxLength, setMin,
-        getMin, 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,
-        setSelectionStart, getSelectionStart, setSelectionEnd,
-        getSelectionEnd, setSelectionDirection, getSelectionDirection,
-        setAlign, getAlign, setUseMap, getUseMap, setIncremental,
-        getIncremental, setCapture, getCapture, HTMLInputElement(..),
-        gTypeHTMLInputElement)
+       (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 ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.stepUp Mozilla HTMLInputElement.stepUp documentation> 
-stepUp :: (MonadDOM m) => HTMLInputElement -> Maybe Int -> m ()
-stepUp self n = liftDOM (void (self ^. jsf "stepUp" [toJSVal n]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.stepDown Mozilla HTMLInputElement.stepDown documentation> 
-stepDown :: (MonadDOM m) => HTMLInputElement -> Maybe Int -> m ()
-stepDown self n
-  = liftDOM (void (self ^. jsf "stepDown" [toJSVal n]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.checkValidity Mozilla HTMLInputElement.checkValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/checkValidity MDN HTMLInputElement.checkValidity documentation>
 checkValidity :: (MonadDOM m) => HTMLInputElement -> m Bool
-checkValidity self
-  = liftDOM ((self ^. jsf "checkValidity" ()) >>= valToBool)
+checkValidity self = liftDOM (((self ^. jsf "checkValidity" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.checkValidity Mozilla HTMLInputElement.checkValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/checkValidity MDN HTMLInputElement.checkValidity documentation>
 checkValidity_ :: (MonadDOM m) => HTMLInputElement -> m ()
-checkValidity_ self
-  = liftDOM (void (self ^. jsf "checkValidity" ()))
+checkValidity_ self = liftDOM (void (self ^. jsf "checkValidity" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.reportValidity Mozilla HTMLInputElement.reportValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/reportValidity MDN HTMLInputElement.reportValidity documentation>
 reportValidity :: (MonadDOM m) => HTMLInputElement -> m Bool
-reportValidity self
-  = liftDOM ((self ^. jsf "reportValidity" ()) >>= valToBool)
+reportValidity self = liftDOM (((self ^. jsf "reportValidity" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.reportValidity Mozilla HTMLInputElement.reportValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/reportValidity MDN HTMLInputElement.reportValidity documentation>
 reportValidity_ :: (MonadDOM m) => HTMLInputElement -> m ()
-reportValidity_ self
-  = liftDOM (void (self ^. jsf "reportValidity" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setCustomValidity Mozilla HTMLInputElement.setCustomValidity documentation> 
-setCustomValidity ::
-                  (MonadDOM m, ToJSString error) => HTMLInputElement -> error -> m ()
-setCustomValidity self error
-  = liftDOM (void (self ^. jsf "setCustomValidity" [toJSVal error]))
+reportValidity_ self = liftDOM (void (self ^. jsf "reportValidity" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.select Mozilla HTMLInputElement.select documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/select MDN HTMLInputElement.select documentation>
 select :: (MonadDOM m) => HTMLInputElement -> m ()
 select self = liftDOM (void (self ^. jsf "select" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setRangeText Mozilla HTMLInputElement.setRangeText documentation> 
-setRangeText ::
-             (MonadDOM m, ToJSString replacement) =>
-               HTMLInputElement -> replacement -> m ()
-setRangeText self replacement
-  = liftDOM (void (self ^. jsf "setRangeText" [toJSVal replacement]))
+-- | <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 (self ^. jsf "setCustomValidity" [toJSVal error]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setRangeText Mozilla HTMLInputElement.setRangeText documentation> 
-setRangeText4 ::
-              (MonadDOM m, ToJSString replacement, ToJSString selectionMode) =>
-                HTMLInputElement ->
-                  replacement -> Word -> Word -> Maybe selectionMode -> m ()
-setRangeText4 self replacement start end selectionMode
-  = liftDOM
-      (void
-         (self ^. jsf "setRangeText"
-            [toJSVal replacement, toJSVal start, toJSVal end,
-             toJSVal selectionMode]))
+-- | <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 (self ^. jsf "setRangeText" [toJSVal replacement]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setSelectionRange Mozilla HTMLInputElement.setSelectionRange documentation> 
-setSelectionRange ::
-                  (MonadDOM m, ToJSString direction) =>
-                    HTMLInputElement -> Int -> Int -> Maybe direction -> m ()
-setSelectionRange self start end direction
-  = liftDOM
-      (void
-         (self ^. jsf "setSelectionRange"
-            [toJSVal start, toJSVal end, toJSVal direction]))
+-- | <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 (self ^. jsf "setRangeText" [toJSVal replacement, toJSVal start, toJSVal end, P.maybe (P.return jsUndefined) toJSVal selectionMode]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.accept Mozilla HTMLInputElement.accept documentation> 
-setAccept ::
-          (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setAccept self val = liftDOM (self ^. jss "accept" (toJSVal val))
+-- | <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 (self ^. jsf "setSelectionRange" [toJSVal start, toJSVal end, P.maybe (P.return jsUndefined) toJSVal direction]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.accept Mozilla HTMLInputElement.accept documentation> 
-getAccept ::
-          (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getAccept self
-  = liftDOM ((self ^. js "accept") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/showPicker MDN HTMLInputElement.showPicker documentation>
+showPicker :: (MonadDOM m) => HTMLInputElement -> m ()
+showPicker self = liftDOM (void (self ^. jsf "showPicker" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.alt Mozilla HTMLInputElement.alt documentation> 
-setAlt ::
-       (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setAlt self val = liftDOM (self ^. jss "alt" (toJSVal val))
+-- | <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 (self ^. jsf "stepDown" [P.maybe (P.return jsUndefined) toJSVal n]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.alt Mozilla HTMLInputElement.alt documentation> 
-getAlt ::
-       (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getAlt self = liftDOM ((self ^. js "alt") >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "stepUp" [P.maybe (P.return jsUndefined) toJSVal n]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocomplete Mozilla HTMLInputElement.autocomplete documentation> 
-setAutocomplete ::
-                (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setAutocomplete self val
-  = liftDOM (self ^. jss "autocomplete" (toJSVal val))
+-- | <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 (self ^. jss "accept" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocomplete Mozilla HTMLInputElement.autocomplete documentation> 
-getAutocomplete ::
-                (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getAutocomplete self
-  = liftDOM ((self ^. js "autocomplete") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/accept MDN HTMLInputElement.accept documentation>
+getAccept :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getAccept self = liftDOM (((self ^. js "accept") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autofocus Mozilla HTMLInputElement.autofocus documentation> 
-setAutofocus :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
-setAutofocus self val
-  = liftDOM (self ^. jss "autofocus" (toJSVal val))
+-- | <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 (self ^. jss "alt" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autofocus Mozilla HTMLInputElement.autofocus documentation> 
-getAutofocus :: (MonadDOM m) => HTMLInputElement -> m Bool
-getAutofocus self
-  = liftDOM ((self ^. js "autofocus") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/alt MDN HTMLInputElement.alt documentation>
+getAlt :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getAlt self = liftDOM (((self ^. js "alt") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultChecked Mozilla HTMLInputElement.defaultChecked documentation> 
-setDefaultChecked ::
-                  (MonadDOM m) => HTMLInputElement -> Bool -> m ()
-setDefaultChecked self val
-  = liftDOM (self ^. jss "defaultChecked" (toJSVal val))
+-- | <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 (self ^. jss "autocomplete" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultChecked Mozilla HTMLInputElement.defaultChecked documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/autocomplete MDN HTMLInputElement.autocomplete documentation>
+getAutocomplete :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getAutocomplete self = liftDOM (((self ^. js "autocomplete") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/defaultChecked MDN HTMLInputElement.defaultChecked documentation>
+setDefaultChecked :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setDefaultChecked self val = liftDOM (void (self ^. jss "defaultChecked" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/defaultChecked MDN HTMLInputElement.defaultChecked documentation>
 getDefaultChecked :: (MonadDOM m) => HTMLInputElement -> m Bool
-getDefaultChecked self
-  = liftDOM ((self ^. js "defaultChecked") >>= valToBool)
+getDefaultChecked self = liftDOM (((self ^. js "defaultChecked") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.checked Mozilla HTMLInputElement.checked documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/checked MDN HTMLInputElement.checked documentation>
 setChecked :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
-setChecked self val = liftDOM (self ^. jss "checked" (toJSVal val))
+setChecked self val = liftDOM (void (self ^. jss "checked" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.checked Mozilla HTMLInputElement.checked documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/checked MDN HTMLInputElement.checked documentation>
 getChecked :: (MonadDOM m) => HTMLInputElement -> m Bool
-getChecked self = liftDOM ((self ^. js "checked") >>= valToBool)
+getChecked self = liftDOM (((self ^. js "checked") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.dirName Mozilla HTMLInputElement.dirName documentation> 
-setDirName ::
-           (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setDirName self val = liftDOM (self ^. jss "dirName" (toJSVal val))
+-- | <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 (self ^. jss "colorSpace" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.dirName Mozilla HTMLInputElement.dirName documentation> 
-getDirName ::
-           (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getDirName self
-  = liftDOM ((self ^. js "dirName") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/colorSpace MDN HTMLInputElement.colorSpace documentation>
+getColorSpace :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getColorSpace self = liftDOM (((self ^. js "colorSpace") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.disabled Mozilla HTMLInputElement.disabled documentation> 
+-- | <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 (self ^. jss "dirName" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/dirName MDN HTMLInputElement.dirName documentation>
+getDirName :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getDirName self = liftDOM (((self ^. js "dirName") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/disabled MDN HTMLInputElement.disabled documentation>
 setDisabled :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
-setDisabled self val
-  = liftDOM (self ^. jss "disabled" (toJSVal val))
+setDisabled self val = liftDOM (void (self ^. jss "disabled" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.disabled Mozilla HTMLInputElement.disabled documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/disabled MDN HTMLInputElement.disabled documentation>
 getDisabled :: (MonadDOM m) => HTMLInputElement -> m Bool
-getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+getDisabled self = liftDOM (((self ^. js "disabled") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.form Mozilla HTMLInputElement.form documentation> 
-getForm :: (MonadDOM m) => HTMLInputElement -> m HTMLFormElement
-getForm self = liftDOM ((self ^. js "form") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/form MDN HTMLInputElement.form documentation>
+getForm :: (MonadDOM m) => HTMLInputElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.files Mozilla HTMLInputElement.files documentation> 
-setFiles ::
-         (MonadDOM m) => HTMLInputElement -> Maybe FileList -> m ()
-setFiles self val = liftDOM (self ^. jss "files" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/form MDN HTMLInputElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLInputElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((self ^. js "form") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.files Mozilla HTMLInputElement.files documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/form MDN HTMLInputElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLInputElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "files" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/files MDN HTMLInputElement.files documentation>
 getFiles :: (MonadDOM m) => HTMLInputElement -> m (Maybe FileList)
-getFiles self = liftDOM ((self ^. js "files") >>= fromJSVal)
+getFiles self = liftDOM (((self ^. js "files") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.files Mozilla HTMLInputElement.files documentation> 
-getFilesUnsafe ::
-               (MonadDOM m, HasCallStack) => HTMLInputElement -> m FileList
-getFilesUnsafe self
-  = liftDOM
-      (((self ^. js "files") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/files MDN HTMLInputElement.files documentation>
+getFilesUnsafe :: (MonadDOM m, HasCallStack) => HTMLInputElement -> m FileList
+getFilesUnsafe self = liftDOM ((((self ^. js "files") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.files Mozilla HTMLInputElement.files documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/files MDN HTMLInputElement.files documentation>
 getFilesUnchecked :: (MonadDOM m) => HTMLInputElement -> m FileList
-getFilesUnchecked self
-  = liftDOM ((self ^. js "files") >>= fromJSValUnchecked)
+getFilesUnchecked self = liftDOM (((self ^. js "files") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formAction Mozilla HTMLInputElement.formAction documentation> 
-setFormAction ::
-              (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setFormAction self val
-  = liftDOM (self ^. jss "formAction" (toJSVal val))
+-- | <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 (self ^. jss "formAction" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formAction Mozilla HTMLInputElement.formAction documentation> 
-getFormAction ::
-              (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getFormAction self
-  = liftDOM ((self ^. js "formAction") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/formAction MDN HTMLInputElement.formAction documentation>
+getFormAction :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getFormAction self = liftDOM (((self ^. js "formAction") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formEnctype Mozilla HTMLInputElement.formEnctype documentation> 
-setFormEnctype ::
-               (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setFormEnctype self val
-  = liftDOM (self ^. jss "formEnctype" (toJSVal val))
+-- | <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 (self ^. jss "formEnctype" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formEnctype Mozilla HTMLInputElement.formEnctype documentation> 
-getFormEnctype ::
-               (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getFormEnctype self
-  = liftDOM ((self ^. js "formEnctype") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/formEnctype MDN HTMLInputElement.formEnctype documentation>
+getFormEnctype :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getFormEnctype self = liftDOM (((self ^. js "formEnctype") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formMethod Mozilla HTMLInputElement.formMethod documentation> 
-setFormMethod ::
-              (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setFormMethod self val
-  = liftDOM (self ^. jss "formMethod" (toJSVal val))
+-- | <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 (self ^. jss "formMethod" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formMethod Mozilla HTMLInputElement.formMethod documentation> 
-getFormMethod ::
-              (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getFormMethod self
-  = liftDOM ((self ^. js "formMethod") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/formMethod MDN HTMLInputElement.formMethod documentation>
+getFormMethod :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getFormMethod self = liftDOM (((self ^. js "formMethod") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formNoValidate Mozilla HTMLInputElement.formNoValidate documentation> 
-setFormNoValidate ::
-                  (MonadDOM m) => HTMLInputElement -> Bool -> m ()
-setFormNoValidate self val
-  = liftDOM (self ^. jss "formNoValidate" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/formNoValidate MDN HTMLInputElement.formNoValidate documentation>
+setFormNoValidate :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setFormNoValidate self val = liftDOM (void (self ^. jss "formNoValidate" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formNoValidate Mozilla HTMLInputElement.formNoValidate documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/formNoValidate MDN HTMLInputElement.formNoValidate documentation>
 getFormNoValidate :: (MonadDOM m) => HTMLInputElement -> m Bool
-getFormNoValidate self
-  = liftDOM ((self ^. js "formNoValidate") >>= valToBool)
+getFormNoValidate self = liftDOM (((self ^. js "formNoValidate") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formTarget Mozilla HTMLInputElement.formTarget documentation> 
-setFormTarget ::
-              (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setFormTarget self val
-  = liftDOM (self ^. jss "formTarget" (toJSVal val))
+-- | <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 (self ^. jss "formTarget" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formTarget Mozilla HTMLInputElement.formTarget documentation> 
-getFormTarget ::
-              (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getFormTarget self
-  = liftDOM ((self ^. js "formTarget") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/formTarget MDN HTMLInputElement.formTarget documentation>
+getFormTarget :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getFormTarget self = liftDOM (((self ^. js "formTarget") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.height Mozilla HTMLInputElement.height documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/height MDN HTMLInputElement.height documentation>
 setHeight :: (MonadDOM m) => HTMLInputElement -> Word -> m ()
-setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+setHeight self val = liftDOM (void (self ^. jss "height" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.height Mozilla HTMLInputElement.height documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/height MDN HTMLInputElement.height documentation>
 getHeight :: (MonadDOM m) => HTMLInputElement -> m Word
-getHeight self
-  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
+getHeight self = liftDOM ((P.round <$> ((self ^. js "height") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.indeterminate Mozilla HTMLInputElement.indeterminate documentation> 
-setIndeterminate ::
-                 (MonadDOM m) => HTMLInputElement -> Bool -> m ()
-setIndeterminate self val
-  = liftDOM (self ^. jss "indeterminate" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/indeterminate MDN HTMLInputElement.indeterminate documentation>
+setIndeterminate :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setIndeterminate self val = liftDOM (void (self ^. jss "indeterminate" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.indeterminate Mozilla HTMLInputElement.indeterminate documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/indeterminate MDN HTMLInputElement.indeterminate documentation>
 getIndeterminate :: (MonadDOM m) => HTMLInputElement -> m Bool
-getIndeterminate self
-  = liftDOM ((self ^. js "indeterminate") >>= valToBool)
+getIndeterminate self = liftDOM (((self ^. js "indeterminate") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.list Mozilla HTMLInputElement.list documentation> 
-getList :: (MonadDOM m) => HTMLInputElement -> m HTMLElement
-getList self = liftDOM ((self ^. js "list") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/list MDN HTMLInputElement.list documentation>
+getList :: (MonadDOM m) => HTMLInputElement -> m (Maybe HTMLDataListElement)
+getList self = liftDOM (((self ^. js "list") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.max Mozilla HTMLInputElement.max documentation> 
-setMax ::
-       (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setMax self val = liftDOM (self ^. jss "max" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/list MDN HTMLInputElement.list documentation>
+getListUnsafe :: (MonadDOM m, HasCallStack) => HTMLInputElement -> m HTMLDataListElement
+getListUnsafe self = liftDOM ((((self ^. js "list") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.max Mozilla HTMLInputElement.max documentation> 
-getMax ::
-       (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getMax self = liftDOM ((self ^. js "max") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/list MDN HTMLInputElement.list documentation>
+getListUnchecked :: (MonadDOM m) => HTMLInputElement -> m HTMLDataListElement
+getListUnchecked self = liftDOM (((self ^. js "list") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.minLength Mozilla HTMLInputElement.minLength documentation> 
-setMinLength :: (MonadDOM m) => HTMLInputElement -> Int -> m ()
-setMinLength self val
-  = liftDOM (self ^. jss "minLength" (toJSVal val))
+-- | <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 (self ^. jss "max" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.minLength Mozilla HTMLInputElement.minLength documentation> 
-getMinLength :: (MonadDOM m) => HTMLInputElement -> m Int
-getMinLength self
-  = liftDOM (round <$> ((self ^. js "minLength") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/max MDN HTMLInputElement.max documentation>
+getMax :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getMax self = liftDOM (((self ^. js "max") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.maxLength Mozilla HTMLInputElement.maxLength documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/maxLength MDN HTMLInputElement.maxLength documentation>
 setMaxLength :: (MonadDOM m) => HTMLInputElement -> Int -> m ()
-setMaxLength self val
-  = liftDOM (self ^. jss "maxLength" (toJSVal val))
+setMaxLength self val = liftDOM (void (self ^. jss "maxLength" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.maxLength Mozilla HTMLInputElement.maxLength documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/maxLength MDN HTMLInputElement.maxLength documentation>
 getMaxLength :: (MonadDOM m) => HTMLInputElement -> m Int
-getMaxLength self
-  = liftDOM (round <$> ((self ^. js "maxLength") >>= valToNumber))
+getMaxLength self = liftDOM ((P.round <$> ((self ^. js "maxLength") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.min Mozilla HTMLInputElement.min documentation> 
-setMin ::
-       (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setMin self val = liftDOM (self ^. jss "min" (toJSVal val))
+-- | <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 (self ^. jss "min" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.min Mozilla HTMLInputElement.min documentation> 
-getMin ::
-       (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getMin self = liftDOM ((self ^. js "min") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/min MDN HTMLInputElement.min documentation>
+getMin :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getMin self = liftDOM (((self ^. js "min") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.multiple Mozilla HTMLInputElement.multiple documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/minLength MDN HTMLInputElement.minLength documentation>
+setMinLength :: (MonadDOM m) => HTMLInputElement -> Int -> m ()
+setMinLength self val = liftDOM (void (self ^. jss "minLength" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/minLength MDN HTMLInputElement.minLength documentation>
+getMinLength :: (MonadDOM m) => HTMLInputElement -> m Int
+getMinLength self = liftDOM ((P.round <$> ((self ^. js "minLength") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/multiple MDN HTMLInputElement.multiple documentation>
 setMultiple :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
-setMultiple self val
-  = liftDOM (self ^. jss "multiple" (toJSVal val))
+setMultiple self val = liftDOM (void (self ^. jss "multiple" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.multiple Mozilla HTMLInputElement.multiple documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/multiple MDN HTMLInputElement.multiple documentation>
 getMultiple :: (MonadDOM m) => HTMLInputElement -> m Bool
-getMultiple self = liftDOM ((self ^. js "multiple") >>= valToBool)
+getMultiple self = liftDOM (((self ^. js "multiple") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.name Mozilla HTMLInputElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <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 (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.name Mozilla HTMLInputElement.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/name MDN HTMLInputElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.pattern Mozilla HTMLInputElement.pattern documentation> 
-setPattern ::
-           (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setPattern self val = liftDOM (self ^. jss "pattern" (toJSVal val))
+-- | <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 (self ^. jss "pattern" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.pattern Mozilla HTMLInputElement.pattern documentation> 
-getPattern ::
-           (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getPattern self
-  = liftDOM ((self ^. js "pattern") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/pattern MDN HTMLInputElement.pattern documentation>
+getPattern :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getPattern self = liftDOM (((self ^. js "pattern") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.placeholder Mozilla HTMLInputElement.placeholder documentation> 
-setPlaceholder ::
-               (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setPlaceholder self val
-  = liftDOM (self ^. jss "placeholder" (toJSVal val))
+-- | <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 (self ^. jss "placeholder" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.placeholder Mozilla HTMLInputElement.placeholder documentation> 
-getPlaceholder ::
-               (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getPlaceholder self
-  = liftDOM ((self ^. js "placeholder") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/placeholder MDN HTMLInputElement.placeholder documentation>
+getPlaceholder :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getPlaceholder self = liftDOM (((self ^. js "placeholder") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.readOnly Mozilla HTMLInputElement.readOnly documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/readOnly MDN HTMLInputElement.readOnly documentation>
 setReadOnly :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
-setReadOnly self val
-  = liftDOM (self ^. jss "readOnly" (toJSVal val))
+setReadOnly self val = liftDOM (void (self ^. jss "readOnly" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.readOnly Mozilla HTMLInputElement.readOnly documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/readOnly MDN HTMLInputElement.readOnly documentation>
 getReadOnly :: (MonadDOM m) => HTMLInputElement -> m Bool
-getReadOnly self = liftDOM ((self ^. js "readOnly") >>= valToBool)
+getReadOnly self = liftDOM (((self ^. js "readOnly") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.required Mozilla HTMLInputElement.required documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/required MDN HTMLInputElement.required documentation>
 setRequired :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
-setRequired self val
-  = liftDOM (self ^. jss "required" (toJSVal val))
+setRequired self val = liftDOM (void (self ^. jss "required" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.required Mozilla HTMLInputElement.required documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/required MDN HTMLInputElement.required documentation>
 getRequired :: (MonadDOM m) => HTMLInputElement -> m Bool
-getRequired self = liftDOM ((self ^. js "required") >>= valToBool)
+getRequired self = liftDOM (((self ^. js "required") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.size Mozilla HTMLInputElement.size documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/size MDN HTMLInputElement.size documentation>
 setSize :: (MonadDOM m) => HTMLInputElement -> Word -> m ()
-setSize self val = liftDOM (self ^. jss "size" (toJSVal val))
+setSize self val = liftDOM (void (self ^. jss "size" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.size Mozilla HTMLInputElement.size documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/size MDN HTMLInputElement.size documentation>
 getSize :: (MonadDOM m) => HTMLInputElement -> m Word
-getSize self
-  = liftDOM (round <$> ((self ^. js "size") >>= valToNumber))
+getSize self = liftDOM ((P.round <$> ((self ^. js "size") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.src Mozilla HTMLInputElement.src documentation> 
-setSrc ::
-       (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setSrc self val = liftDOM (self ^. jss "src" (toJSVal val))
+-- | <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 (self ^. jss "src" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.src Mozilla HTMLInputElement.src documentation> 
-getSrc ::
-       (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getSrc self = liftDOM ((self ^. js "src") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/src MDN HTMLInputElement.src documentation>
+getSrc :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getSrc self = liftDOM (((self ^. js "src") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.step Mozilla HTMLInputElement.step documentation> 
-setStep ::
-        (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setStep self val = liftDOM (self ^. jss "step" (toJSVal val))
+-- | <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 (self ^. jss "step" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.step Mozilla HTMLInputElement.step documentation> 
-getStep ::
-        (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getStep self = liftDOM ((self ^. js "step") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/step MDN HTMLInputElement.step documentation>
+getStep :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getStep self = liftDOM (((self ^. js "step") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.type Mozilla HTMLInputElement.type documentation> 
-setType ::
-        (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+-- | <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 (self ^. jss "type" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.type Mozilla HTMLInputElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/type MDN HTMLInputElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultValue Mozilla HTMLInputElement.defaultValue documentation> 
-setDefaultValue ::
-                (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setDefaultValue self val
-  = liftDOM (self ^. jss "defaultValue" (toJSVal val))
+-- | <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 (self ^. jss "defaultValue" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultValue Mozilla HTMLInputElement.defaultValue documentation> 
-getDefaultValue ::
-                (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getDefaultValue self
-  = liftDOM ((self ^. js "defaultValue") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/defaultValue MDN HTMLInputElement.defaultValue documentation>
+getDefaultValue :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getDefaultValue self = liftDOM (((self ^. js "defaultValue") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.value Mozilla HTMLInputElement.value documentation> 
-setValue ::
-         (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+-- | <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 (self ^. jss "value" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.value Mozilla HTMLInputElement.value documentation> 
-getValue ::
-         (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getValue self
-  = liftDOM ((self ^. js "value") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/value MDN HTMLInputElement.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getValue self = liftDOM (((self ^. js "value") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsDate Mozilla HTMLInputElement.valueAsDate documentation> 
-setValueAsDate ::
-               (MonadDOM m, IsDate val) => HTMLInputElement -> Maybe val -> m ()
-setValueAsDate self val
-  = liftDOM (self ^. jss "valueAsDate" (toJSVal val))
+-- | <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 (self ^. jss "valueAsDate" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsDate Mozilla HTMLInputElement.valueAsDate documentation> 
-getValueAsDate ::
-               (MonadDOM m) => HTMLInputElement -> m (Maybe Date)
-getValueAsDate self
-  = liftDOM ((self ^. js "valueAsDate") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/valueAsDate MDN HTMLInputElement.valueAsDate documentation>
+getValueAsDate :: (MonadDOM m) => HTMLInputElement -> m (Maybe GObject)
+getValueAsDate self = liftDOM (((self ^. js "valueAsDate") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsDate Mozilla HTMLInputElement.valueAsDate documentation> 
-getValueAsDateUnsafe ::
-                     (MonadDOM m, HasCallStack) => HTMLInputElement -> m Date
-getValueAsDateUnsafe self
-  = liftDOM
-      (((self ^. js "valueAsDate") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/valueAsDate MDN HTMLInputElement.valueAsDate documentation>
+getValueAsDateUnsafe :: (MonadDOM m, HasCallStack) => HTMLInputElement -> m GObject
+getValueAsDateUnsafe self = liftDOM ((((self ^. js "valueAsDate") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsDate Mozilla HTMLInputElement.valueAsDate documentation> 
-getValueAsDateUnchecked ::
-                        (MonadDOM m) => HTMLInputElement -> m Date
-getValueAsDateUnchecked self
-  = liftDOM ((self ^. js "valueAsDate") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/valueAsDate MDN HTMLInputElement.valueAsDate documentation>
+getValueAsDateUnchecked :: (MonadDOM m) => HTMLInputElement -> m GObject
+getValueAsDateUnchecked self = liftDOM (((self ^. js "valueAsDate") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsNumber Mozilla HTMLInputElement.valueAsNumber documentation> 
-setValueAsNumber ::
-                 (MonadDOM m) => HTMLInputElement -> Double -> m ()
-setValueAsNumber self val
-  = liftDOM (self ^. jss "valueAsNumber" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/valueAsNumber MDN HTMLInputElement.valueAsNumber documentation>
+setValueAsNumber :: (MonadDOM m) => HTMLInputElement -> Double -> m ()
+setValueAsNumber self val = liftDOM (void (self ^. jss "valueAsNumber" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsNumber Mozilla HTMLInputElement.valueAsNumber documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/valueAsNumber MDN HTMLInputElement.valueAsNumber documentation>
 getValueAsNumber :: (MonadDOM m) => HTMLInputElement -> m Double
-getValueAsNumber self
-  = liftDOM ((self ^. js "valueAsNumber") >>= valToNumber)
+getValueAsNumber self = liftDOM (((self ^. js "valueAsNumber") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.width Mozilla HTMLInputElement.width documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/width MDN HTMLInputElement.width documentation>
 setWidth :: (MonadDOM m) => HTMLInputElement -> Word -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.width Mozilla HTMLInputElement.width documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/width MDN HTMLInputElement.width documentation>
 getWidth :: (MonadDOM m) => HTMLInputElement -> m Word
-getWidth self
-  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
+getWidth self = liftDOM ((P.round <$> ((self ^. js "width") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.willValidate Mozilla HTMLInputElement.willValidate documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/willValidate MDN HTMLInputElement.willValidate documentation>
 getWillValidate :: (MonadDOM m) => HTMLInputElement -> m Bool
-getWillValidate self
-  = liftDOM ((self ^. js "willValidate") >>= valToBool)
+getWillValidate self = liftDOM (((self ^. js "willValidate") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.validity Mozilla HTMLInputElement.validity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/validity MDN HTMLInputElement.validity documentation>
 getValidity :: (MonadDOM m) => HTMLInputElement -> m ValidityState
-getValidity self
-  = liftDOM ((self ^. js "validity") >>= fromJSValUnchecked)
+getValidity self = liftDOM (((self ^. js "validity") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.validationMessage Mozilla HTMLInputElement.validationMessage documentation> 
-getValidationMessage ::
-                     (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getValidationMessage self
-  = liftDOM ((self ^. js "validationMessage") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/validationMessage MDN HTMLInputElement.validationMessage documentation>
+getValidationMessage :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getValidationMessage self = liftDOM (((self ^. js "validationMessage") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.labels Mozilla HTMLInputElement.labels documentation> 
-getLabels :: (MonadDOM m) => HTMLInputElement -> m NodeList
-getLabels self
-  = liftDOM ((self ^. js "labels") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/labels MDN HTMLInputElement.labels documentation>
+getLabels :: (MonadDOM m) => HTMLInputElement -> m (Maybe NodeList)
+getLabels self = liftDOM (((self ^. js "labels") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionStart Mozilla HTMLInputElement.selectionStart documentation> 
-setSelectionStart ::
-                  (MonadDOM m) => HTMLInputElement -> Int -> m ()
-setSelectionStart self val
-  = liftDOM (self ^. jss "selectionStart" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/labels MDN HTMLInputElement.labels documentation>
+getLabelsUnsafe :: (MonadDOM m, HasCallStack) => HTMLInputElement -> m NodeList
+getLabelsUnsafe self = liftDOM ((((self ^. js "labels") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionStart Mozilla HTMLInputElement.selectionStart documentation> 
-getSelectionStart :: (MonadDOM m) => HTMLInputElement -> m Int
-getSelectionStart self
-  = liftDOM
-      (round <$> ((self ^. js "selectionStart") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/labels MDN HTMLInputElement.labels documentation>
+getLabelsUnchecked :: (MonadDOM m) => HTMLInputElement -> m NodeList
+getLabelsUnchecked self = liftDOM (((self ^. js "labels") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionEnd Mozilla HTMLInputElement.selectionEnd documentation> 
-setSelectionEnd :: (MonadDOM m) => HTMLInputElement -> Int -> m ()
-setSelectionEnd self val
-  = liftDOM (self ^. jss "selectionEnd" (toJSVal val))
+-- | <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 (self ^. jss "selectionStart" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionEnd Mozilla HTMLInputElement.selectionEnd documentation> 
-getSelectionEnd :: (MonadDOM m) => HTMLInputElement -> m Int
-getSelectionEnd self
-  = liftDOM (round <$> ((self ^. js "selectionEnd") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionStart MDN HTMLInputElement.selectionStart documentation>
+getSelectionStart :: (MonadDOM m) => HTMLInputElement -> m (Maybe Word)
+getSelectionStart self = liftDOM (((self ^. js "selectionStart") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionDirection Mozilla HTMLInputElement.selectionDirection documentation> 
-setSelectionDirection ::
-                      (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setSelectionDirection self val
-  = liftDOM (self ^. jss "selectionDirection" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionStart MDN HTMLInputElement.selectionStart documentation>
+getSelectionStartUnsafe :: (MonadDOM m, HasCallStack) => HTMLInputElement -> m Word
+getSelectionStartUnsafe self = liftDOM ((((self ^. js "selectionStart") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionDirection Mozilla HTMLInputElement.selectionDirection documentation> 
-getSelectionDirection ::
-                      (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getSelectionDirection self
-  = liftDOM
-      ((self ^. js "selectionDirection") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionStart MDN HTMLInputElement.selectionStart documentation>
+getSelectionStartUnchecked :: (MonadDOM m) => HTMLInputElement -> m Word
+getSelectionStartUnchecked self = liftDOM ((P.round <$> ((self ^. js "selectionStart") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.align Mozilla HTMLInputElement.align documentation> 
-setAlign ::
-         (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+-- | <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 (self ^. jss "selectionEnd" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.align Mozilla HTMLInputElement.align documentation> 
-getAlign ::
-         (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionEnd MDN HTMLInputElement.selectionEnd documentation>
+getSelectionEnd :: (MonadDOM m) => HTMLInputElement -> m (Maybe Word)
+getSelectionEnd self = liftDOM (((self ^. js "selectionEnd") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.useMap Mozilla HTMLInputElement.useMap documentation> 
-setUseMap ::
-          (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setUseMap self val = liftDOM (self ^. jss "useMap" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionEnd MDN HTMLInputElement.selectionEnd documentation>
+getSelectionEndUnsafe :: (MonadDOM m, HasCallStack) => HTMLInputElement -> m Word
+getSelectionEndUnsafe self = liftDOM ((((self ^. js "selectionEnd") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.useMap Mozilla HTMLInputElement.useMap documentation> 
-getUseMap ::
-          (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getUseMap self
-  = liftDOM ((self ^. js "useMap") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionEnd MDN HTMLInputElement.selectionEnd documentation>
+getSelectionEndUnchecked :: (MonadDOM m) => HTMLInputElement -> m Word
+getSelectionEndUnchecked self = liftDOM ((P.round <$> ((self ^. js "selectionEnd") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.incremental Mozilla HTMLInputElement.incremental documentation> 
-setIncremental :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
-setIncremental self val
-  = liftDOM (self ^. jss "incremental" (toJSVal val))
+-- | <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 (self ^. jss "selectionDirection" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.incremental Mozilla HTMLInputElement.incremental documentation> 
-getIncremental :: (MonadDOM m) => HTMLInputElement -> m Bool
-getIncremental self
-  = liftDOM ((self ^. js "incremental") >>= valToBool)
+-- | <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 (((self ^. js "selectionDirection") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.capture Mozilla HTMLInputElement.capture documentation> 
-setCapture ::
-           (MonadDOM m, ToJSString val) => HTMLInputElement -> val -> m ()
-setCapture self val = liftDOM (self ^. jss "capture" (toJSVal val))
+-- | <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 ((((self ^. js "selectionDirection") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.capture Mozilla HTMLInputElement.capture documentation> 
-getCapture ::
-           (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
-getCapture self
-  = liftDOM ((self ^. js "capture") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/selectionDirection MDN HTMLInputElement.selectionDirection documentation>
+getSelectionDirectionUnchecked :: (MonadDOM m, FromJSString result) => HTMLInputElement -> m result
+getSelectionDirectionUnchecked self = liftDOM (((self ^. js "selectionDirection") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/webkitdirectory MDN HTMLInputElement.webkitdirectory documentation>
+setWebkitdirectory :: (MonadDOM m) => HTMLInputElement -> Bool -> m ()
+setWebkitdirectory self val = liftDOM (void (self ^. jss "webkitdirectory" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/webkitdirectory MDN HTMLInputElement.webkitdirectory documentation>
+getWebkitdirectory :: (MonadDOM m) => HTMLInputElement -> m Bool
+getWebkitdirectory self = liftDOM (((self ^. js "webkitdirectory") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLInputElement/webkitEntries MDN HTMLInputElement.webkitEntries documentation>
+getWebkitEntries :: (MonadDOM m) => HTMLInputElement -> m [FileSystemEntry]
+getWebkitEntries self = liftDOM (((self ^. js "webkitEntries") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "align" (toJSVal val)))
+
+-- | <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 (((self ^. js "align") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "useMap" (toJSVal val)))
+
+-- | <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 (((self ^. js "useMap") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLKeygenElement.hs b/src/JSDOM/Generated/HTMLKeygenElement.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/HTMLKeygenElement.hs
+++ /dev/null
@@ -1,134 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.HTMLKeygenElement
-       (checkValidity, checkValidity_, reportValidity, reportValidity_,
-        setCustomValidity, setAutofocus, getAutofocus, setChallenge,
-        getChallenge, setDisabled, getDisabled, getForm, setKeytype,
-        getKeytype, setName, getName, getType, getWillValidate,
-        getValidity, getValidationMessage, getLabels,
-        HTMLKeygenElement(..), gTypeHTMLKeygenElement)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.checkValidity Mozilla HTMLKeygenElement.checkValidity documentation> 
-checkValidity :: (MonadDOM m) => HTMLKeygenElement -> m Bool
-checkValidity self
-  = liftDOM ((self ^. jsf "checkValidity" ()) >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.checkValidity Mozilla HTMLKeygenElement.checkValidity documentation> 
-checkValidity_ :: (MonadDOM m) => HTMLKeygenElement -> m ()
-checkValidity_ self
-  = liftDOM (void (self ^. jsf "checkValidity" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.reportValidity Mozilla HTMLKeygenElement.reportValidity documentation> 
-reportValidity :: (MonadDOM m) => HTMLKeygenElement -> m Bool
-reportValidity self
-  = liftDOM ((self ^. jsf "reportValidity" ()) >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.reportValidity Mozilla HTMLKeygenElement.reportValidity documentation> 
-reportValidity_ :: (MonadDOM m) => HTMLKeygenElement -> m ()
-reportValidity_ self
-  = liftDOM (void (self ^. jsf "reportValidity" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.setCustomValidity Mozilla HTMLKeygenElement.setCustomValidity documentation> 
-setCustomValidity ::
-                  (MonadDOM m, ToJSString error) =>
-                    HTMLKeygenElement -> error -> m ()
-setCustomValidity self error
-  = liftDOM (void (self ^. jsf "setCustomValidity" [toJSVal error]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.autofocus Mozilla HTMLKeygenElement.autofocus documentation> 
-setAutofocus :: (MonadDOM m) => HTMLKeygenElement -> Bool -> m ()
-setAutofocus self val
-  = liftDOM (self ^. jss "autofocus" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.autofocus Mozilla HTMLKeygenElement.autofocus documentation> 
-getAutofocus :: (MonadDOM m) => HTMLKeygenElement -> m Bool
-getAutofocus self
-  = liftDOM ((self ^. js "autofocus") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.challenge Mozilla HTMLKeygenElement.challenge documentation> 
-setChallenge ::
-             (MonadDOM m, ToJSString val) => HTMLKeygenElement -> val -> m ()
-setChallenge self val
-  = liftDOM (self ^. jss "challenge" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.challenge Mozilla HTMLKeygenElement.challenge documentation> 
-getChallenge ::
-             (MonadDOM m, FromJSString result) => HTMLKeygenElement -> m result
-getChallenge self
-  = liftDOM ((self ^. js "challenge") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.disabled Mozilla HTMLKeygenElement.disabled documentation> 
-setDisabled :: (MonadDOM m) => HTMLKeygenElement -> Bool -> m ()
-setDisabled self val
-  = liftDOM (self ^. jss "disabled" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.disabled Mozilla HTMLKeygenElement.disabled documentation> 
-getDisabled :: (MonadDOM m) => HTMLKeygenElement -> m Bool
-getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.form Mozilla HTMLKeygenElement.form documentation> 
-getForm :: (MonadDOM m) => HTMLKeygenElement -> m HTMLFormElement
-getForm self = liftDOM ((self ^. js "form") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.keytype Mozilla HTMLKeygenElement.keytype documentation> 
-setKeytype ::
-           (MonadDOM m, ToJSString val) => HTMLKeygenElement -> val -> m ()
-setKeytype self val = liftDOM (self ^. jss "keytype" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.keytype Mozilla HTMLKeygenElement.keytype documentation> 
-getKeytype ::
-           (MonadDOM m, FromJSString result) => HTMLKeygenElement -> m result
-getKeytype self
-  = liftDOM ((self ^. js "keytype") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.name Mozilla HTMLKeygenElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLKeygenElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.name Mozilla HTMLKeygenElement.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => HTMLKeygenElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.type Mozilla HTMLKeygenElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => HTMLKeygenElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.willValidate Mozilla HTMLKeygenElement.willValidate documentation> 
-getWillValidate :: (MonadDOM m) => HTMLKeygenElement -> m Bool
-getWillValidate self
-  = liftDOM ((self ^. js "willValidate") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.validity Mozilla HTMLKeygenElement.validity documentation> 
-getValidity :: (MonadDOM m) => HTMLKeygenElement -> m ValidityState
-getValidity self
-  = liftDOM ((self ^. js "validity") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.validationMessage Mozilla HTMLKeygenElement.validationMessage documentation> 
-getValidationMessage ::
-                     (MonadDOM m, FromJSString result) => HTMLKeygenElement -> m result
-getValidationMessage self
-  = liftDOM ((self ^. js "validationMessage") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.labels Mozilla HTMLKeygenElement.labels documentation> 
-getLabels :: (MonadDOM m) => HTMLKeygenElement -> m NodeList
-getLabels self
-  = liftDOM ((self ^. js "labels") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/HTMLLIElement.hs b/src/JSDOM/Generated/HTMLLIElement.hs
--- a/src/JSDOM/Generated/HTMLLIElement.hs
+++ b/src/JSDOM/Generated/HTMLLIElement.hs
@@ -1,40 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLLIElement
-       (setType, getType, setValue, getValue, HTMLLIElement(..),
-        gTypeHTMLLIElement)
+       (setValue, getValue, setType, getType, HTMLLIElement(..), gTypeHTMLLIElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.type Mozilla HTMLLIElement.type documentation> 
-setType ::
-        (MonadDOM m, ToJSString val) => HTMLLIElement -> val -> m ()
-setType self val = liftDOM (self ^. jss "type" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.type Mozilla HTMLLIElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => HTMLLIElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.value Mozilla HTMLLIElement.value documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLIElement/value MDN HTMLLIElement.value documentation>
 setValue :: (MonadDOM m) => HTMLLIElement -> Int -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+setValue self val = liftDOM (void (self ^. jss "value" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.value Mozilla HTMLLIElement.value documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLIElement/value MDN HTMLLIElement.value documentation>
 getValue :: (MonadDOM m) => HTMLLIElement -> m Int
-getValue self
-  = liftDOM (round <$> ((self ^. js "value") >>= valToNumber))
+getValue self = liftDOM ((P.round <$> ((self ^. js "value") >>= valToNumber)))
+
+-- | <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 (self ^. jss "type" (toJSVal val)))
+
+-- | <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 (((self ^. js "type") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLLabelElement.hs b/src/JSDOM/Generated/HTMLLabelElement.hs
--- a/src/JSDOM/Generated/HTMLLabelElement.hs
+++ b/src/JSDOM/Generated/HTMLLabelElement.hs
@@ -1,41 +1,48 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLLabelElement
-       (getForm, setHtmlFor, getHtmlFor, getControl, HTMLLabelElement(..),
-        gTypeHTMLLabelElement)
+       (getForm, getFormUnsafe, getFormUnchecked, setHtmlFor, getHtmlFor, getControl, getControlUnsafe, getControlUnchecked, HTMLLabelElement(..), gTypeHTMLLabelElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.form Mozilla HTMLLabelElement.form documentation> 
-getForm :: (MonadDOM m) => HTMLLabelElement -> m HTMLFormElement
-getForm self = liftDOM ((self ^. js "form") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLabelElement/form MDN HTMLLabelElement.form documentation>
+getForm :: (MonadDOM m) => HTMLLabelElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.htmlFor Mozilla HTMLLabelElement.htmlFor documentation> 
-setHtmlFor ::
-           (MonadDOM m, ToJSString val) => HTMLLabelElement -> val -> m ()
-setHtmlFor self val = liftDOM (self ^. jss "htmlFor" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLabelElement/form MDN HTMLLabelElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLLabelElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((self ^. js "form") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.htmlFor Mozilla HTMLLabelElement.htmlFor documentation> 
-getHtmlFor ::
-           (MonadDOM m, FromJSString result) => HTMLLabelElement -> m result
-getHtmlFor self
-  = liftDOM ((self ^. js "htmlFor") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLabelElement/form MDN HTMLLabelElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLLabelElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.control Mozilla HTMLLabelElement.control documentation> 
-getControl :: (MonadDOM m) => HTMLLabelElement -> m HTMLElement
-getControl self
-  = liftDOM ((self ^. js "control") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "htmlFor" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLabelElement/htmlFor MDN HTMLLabelElement.htmlFor documentation>
+getHtmlFor :: (MonadDOM m, FromJSString result) => HTMLLabelElement -> m result
+getHtmlFor self = liftDOM (((self ^. js "htmlFor") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLabelElement/control MDN HTMLLabelElement.control documentation>
+getControl :: (MonadDOM m) => HTMLLabelElement -> m (Maybe HTMLElement)
+getControl self = liftDOM (((self ^. js "control") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLabelElement/control MDN HTMLLabelElement.control documentation>
+getControlUnsafe :: (MonadDOM m, HasCallStack) => HTMLLabelElement -> m HTMLElement
+getControlUnsafe self = liftDOM ((((self ^. js "control") >>= 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 (((self ^. js "control") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLLegendElement.hs b/src/JSDOM/Generated/HTMLLegendElement.hs
--- a/src/JSDOM/Generated/HTMLLegendElement.hs
+++ b/src/JSDOM/Generated/HTMLLegendElement.hs
@@ -1,36 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLLegendElement
-       (getForm, setAlign, getAlign, HTMLLegendElement(..),
-        gTypeHTMLLegendElement)
+       (getForm, getFormUnsafe, getFormUnchecked, setAlign, getAlign, HTMLLegendElement(..), gTypeHTMLLegendElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement.form Mozilla HTMLLegendElement.form documentation> 
-getForm :: (MonadDOM m) => HTMLLegendElement -> m HTMLFormElement
-getForm self = liftDOM ((self ^. js "form") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLegendElement/form MDN HTMLLegendElement.form documentation>
+getForm :: (MonadDOM m) => HTMLLegendElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement.align Mozilla HTMLLegendElement.align documentation> 
-setAlign ::
-         (MonadDOM m, ToJSString val) => HTMLLegendElement -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLegendElement/form MDN HTMLLegendElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLLegendElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((self ^. js "form") >>= 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 ::
-         (MonadDOM m, FromJSString result) => HTMLLegendElement -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLegendElement/form MDN HTMLLegendElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLLegendElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "align" (toJSVal val)))
+
+-- | <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 (((self ^. js "align") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLLinkElement.hs b/src/JSDOM/Generated/HTMLLinkElement.hs
--- a/src/JSDOM/Generated/HTMLLinkElement.hs
+++ b/src/JSDOM/Generated/HTMLLinkElement.hs
@@ -1,197 +1,164 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLLinkElement
-       (setDisabled, getDisabled, setCharset, getCharset, setHref,
-        getHref, setHreflang, getHreflang, setMedia, getMedia, setRel,
-        getRel, setRev, getRev, getSizes, setTarget, getTarget, setType,
-        getType, setAs, getAs, setCrossOrigin, getCrossOrigin,
-        getCrossOriginUnsafe, getCrossOriginUnchecked, getSheet,
-        getRelList, setNonce, getNonce, setIntegrity, getIntegrity,
-        HTMLLinkElement(..), gTypeHTMLLinkElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.disabled Mozilla HTMLLinkElement.disabled documentation> 
-setDisabled :: (MonadDOM m) => HTMLLinkElement -> Bool -> m ()
-setDisabled self val
-  = liftDOM (self ^. jss "disabled" (toJSVal val))
+-- | <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 (self ^. jss "href" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.disabled Mozilla HTMLLinkElement.disabled documentation> 
-getDisabled :: (MonadDOM m) => HTMLLinkElement -> m Bool
-getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/href MDN HTMLLinkElement.href documentation>
+getHref :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getHref self = liftDOM (((self ^. js "href") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.charset Mozilla HTMLLinkElement.charset documentation> 
-setCharset ::
-           (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setCharset self val = liftDOM (self ^. jss "charset" (toJSVal val))
+-- | <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 (self ^. jss "crossOrigin" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.charset Mozilla HTMLLinkElement.charset documentation> 
-getCharset ::
-           (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
-getCharset self
-  = liftDOM ((self ^. js "charset") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "crossOrigin") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.href Mozilla HTMLLinkElement.href documentation> 
-setHref ::
-        (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setHref self val = liftDOM (self ^. jss "href" (toJSVal val))
+-- | <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 ((((self ^. js "crossOrigin") >>= fromMaybeJSString) >>= 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 ::
-        (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
-getHref self = liftDOM ((self ^. js "href") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/crossOrigin MDN HTMLLinkElement.crossOrigin documentation>
+getCrossOriginUnchecked :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getCrossOriginUnchecked self = liftDOM (((self ^. js "crossOrigin") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.hreflang Mozilla HTMLLinkElement.hreflang documentation> 
-setHreflang ::
-            (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setHreflang self val
-  = liftDOM (self ^. jss "hreflang" (toJSVal val))
+-- | <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 (self ^. jss "rel" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.hreflang Mozilla HTMLLinkElement.hreflang documentation> 
-getHreflang ::
-            (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
-getHreflang self
-  = liftDOM ((self ^. js "hreflang") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/rel MDN HTMLLinkElement.rel documentation>
+getRel :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getRel self = liftDOM (((self ^. js "rel") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.media Mozilla HTMLLinkElement.media documentation> 
-setMedia ::
-         (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setMedia self val = liftDOM (self ^. jss "media" (toJSVal val))
+-- | <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 (self ^. jss "as" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.media Mozilla HTMLLinkElement.media documentation> 
-getMedia ::
-         (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
-getMedia self
-  = liftDOM ((self ^. js "media") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/as MDN HTMLLinkElement.as documentation>
+getAs :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getAs self = liftDOM (((self ^. js "as") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.rel Mozilla HTMLLinkElement.rel documentation> 
-setRel ::
-       (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setRel self val = liftDOM (self ^. jss "rel" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/relList MDN HTMLLinkElement.relList documentation>
+getRelList :: (MonadDOM m) => HTMLLinkElement -> m DOMTokenList
+getRelList self = liftDOM (((self ^. js "relList") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.rel Mozilla HTMLLinkElement.rel documentation> 
-getRel ::
-       (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
-getRel self = liftDOM ((self ^. js "rel") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "media" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.rev Mozilla HTMLLinkElement.rev documentation> 
-setRev ::
-       (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setRev self val = liftDOM (self ^. jss "rev" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/media MDN HTMLLinkElement.media documentation>
+getMedia :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getMedia self = liftDOM (((self ^. js "media") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.rev Mozilla HTMLLinkElement.rev documentation> 
-getRev ::
-       (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
-getRev self = liftDOM ((self ^. js "rev") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "integrity" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.sizes Mozilla HTMLLinkElement.sizes documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/integrity MDN HTMLLinkElement.integrity documentation>
+getIntegrity :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getIntegrity self = liftDOM (((self ^. js "integrity") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "hreflang" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/hreflang MDN HTMLLinkElement.hreflang documentation>
+getHreflang :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getHreflang self = liftDOM (((self ^. js "hreflang") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "type" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/type MDN HTMLLinkElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/sizes MDN HTMLLinkElement.sizes documentation>
 getSizes :: (MonadDOM m) => HTMLLinkElement -> m DOMTokenList
-getSizes self
-  = liftDOM ((self ^. js "sizes") >>= fromJSValUnchecked)
+getSizes self = liftDOM (((self ^. js "sizes") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.target Mozilla HTMLLinkElement.target documentation> 
-setTarget ::
-          (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setTarget self val = liftDOM (self ^. jss "target" (toJSVal val))
+-- | <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 (self ^. jss "imageSrcset" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.target Mozilla HTMLLinkElement.target documentation> 
-getTarget ::
-          (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
-getTarget self
-  = liftDOM ((self ^. js "target") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/imageSrcset MDN HTMLLinkElement.imageSrcset documentation>
+getImageSrcset :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getImageSrcset self = liftDOM (((self ^. js "imageSrcset") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.type Mozilla HTMLLinkElement.type documentation> 
-setType ::
-        (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+-- | <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 (self ^. jss "imageSizes" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.type Mozilla HTMLLinkElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/imageSizes MDN HTMLLinkElement.imageSizes documentation>
+getImageSizes :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getImageSizes self = liftDOM (((self ^. js "imageSizes") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.as Mozilla HTMLLinkElement.as documentation> 
-setAs ::
-      (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setAs self val = liftDOM (self ^. jss "as" (toJSVal val))
+-- | <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 (self ^. jss "referrerPolicy" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.as Mozilla HTMLLinkElement.as documentation> 
-getAs ::
-      (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
-getAs self = liftDOM ((self ^. js "as") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/referrerPolicy MDN HTMLLinkElement.referrerPolicy documentation>
+getReferrerPolicy :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getReferrerPolicy self = liftDOM (((self ^. js "referrerPolicy") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.crossOrigin Mozilla HTMLLinkElement.crossOrigin documentation> 
-setCrossOrigin ::
-               (MonadDOM m, ToJSString val) =>
-                 HTMLLinkElement -> Maybe val -> m ()
-setCrossOrigin self val
-  = liftDOM (self ^. jss "crossOrigin" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/blocking MDN HTMLLinkElement.blocking documentation>
+getBlocking :: (MonadDOM m) => HTMLLinkElement -> m DOMTokenList
+getBlocking self = liftDOM (((self ^. js "blocking") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.crossOrigin Mozilla HTMLLinkElement.crossOrigin documentation> 
-getCrossOrigin ::
-               (MonadDOM m, FromJSString result) =>
-                 HTMLLinkElement -> m (Maybe result)
-getCrossOrigin self
-  = liftDOM ((self ^. js "crossOrigin") >>= fromMaybeJSString)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/disabled MDN HTMLLinkElement.disabled documentation>
+setDisabled :: (MonadDOM m) => HTMLLinkElement -> Bool -> m ()
+setDisabled self val = liftDOM (void (self ^. jss "disabled" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.crossOrigin Mozilla HTMLLinkElement.crossOrigin documentation> 
-getCrossOriginUnsafe ::
-                     (MonadDOM m, HasCallStack, FromJSString result) =>
-                       HTMLLinkElement -> m result
-getCrossOriginUnsafe self
-  = liftDOM
-      (((self ^. js "crossOrigin") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/disabled MDN HTMLLinkElement.disabled documentation>
+getDisabled :: (MonadDOM m) => HTMLLinkElement -> m Bool
+getDisabled self = liftDOM (((self ^. js "disabled") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.crossOrigin Mozilla HTMLLinkElement.crossOrigin documentation> 
-getCrossOriginUnchecked ::
-                        (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
-getCrossOriginUnchecked self
-  = liftDOM ((self ^. js "crossOrigin") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "fetchPriority" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.sheet Mozilla HTMLLinkElement.sheet documentation> 
-getSheet :: (MonadDOM m) => HTMLLinkElement -> m StyleSheet
-getSheet self
-  = liftDOM ((self ^. js "sheet") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLLinkElement/fetchPriority MDN HTMLLinkElement.fetchPriority documentation>
+getFetchPriority :: (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
+getFetchPriority self = liftDOM (((self ^. js "fetchPriority") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.relList Mozilla HTMLLinkElement.relList documentation> 
-getRelList :: (MonadDOM m) => HTMLLinkElement -> m DOMTokenList
-getRelList self
-  = liftDOM ((self ^. js "relList") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "charset" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.nonce Mozilla HTMLLinkElement.nonce documentation> 
-setNonce ::
-         (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setNonce self val = liftDOM (self ^. jss "nonce" (toJSVal val))
+-- | <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 (((self ^. js "charset") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.nonce Mozilla HTMLLinkElement.nonce documentation> 
-getNonce ::
-         (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
-getNonce self
-  = liftDOM ((self ^. js "nonce") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "rev" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.integrity Mozilla HTMLLinkElement.integrity documentation> 
-setIntegrity ::
-             (MonadDOM m, ToJSString val) => HTMLLinkElement -> val -> m ()
-setIntegrity self val
-  = liftDOM (self ^. jss "integrity" (toJSVal val))
+-- | <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 (((self ^. js "rev") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.integrity Mozilla HTMLLinkElement.integrity documentation> 
-getIntegrity ::
-             (MonadDOM m, FromJSString result) => HTMLLinkElement -> m result
-getIntegrity self
-  = liftDOM ((self ^. js "integrity") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "target" (toJSVal val)))
+
+-- | <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 (((self ^. js "target") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLMapElement.hs b/src/JSDOM/Generated/HTMLMapElement.hs
--- a/src/JSDOM/Generated/HTMLMapElement.hs
+++ b/src/JSDOM/Generated/HTMLMapElement.hs
@@ -1,36 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLMapElement
-       (getAreas, setName, getName, HTMLMapElement(..),
-        gTypeHTMLMapElement)
+       (setName, getName, getAreas, HTMLMapElement(..), gTypeHTMLMapElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement.areas Mozilla HTMLMapElement.areas documentation> 
-getAreas :: (MonadDOM m) => HTMLMapElement -> m HTMLCollection
-getAreas self
-  = liftDOM ((self ^. js "areas") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement.name Mozilla HTMLMapElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLMapElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMapElement/name MDN HTMLMapElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLMapElement -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement.name Mozilla HTMLMapElement.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => HTMLMapElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMapElement/areas MDN HTMLMapElement.areas documentation>
+getAreas :: (MonadDOM m) => HTMLMapElement -> m HTMLCollection
+getAreas self = liftDOM (((self ^. js "areas") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLMarqueeElement.hs b/src/JSDOM/Generated/HTMLMarqueeElement.hs
--- a/src/JSDOM/Generated/HTMLMarqueeElement.hs
+++ b/src/JSDOM/Generated/HTMLMarqueeElement.hs
@@ -1,149 +1,112 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLMarqueeElement
-       (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)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.start Mozilla HTMLMarqueeElement.start documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-start HTMLMarqueeElement.start specification>
 start :: (MonadDOM m) => HTMLMarqueeElement -> m ()
 start self = liftDOM (void (self ^. jsf "start" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.stop Mozilla HTMLMarqueeElement.stop documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-stop HTMLMarqueeElement.stop specification>
 stop :: (MonadDOM m) => HTMLMarqueeElement -> m ()
 stop self = liftDOM (void (self ^. jsf "stop" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.behavior Mozilla HTMLMarqueeElement.behavior documentation> 
-setBehavior ::
-            (MonadDOM m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
-setBehavior self val
-  = liftDOM (self ^. jss "behavior" (toJSVal val))
+-- | <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 (self ^. jss "behavior" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.behavior Mozilla HTMLMarqueeElement.behavior documentation> 
-getBehavior ::
-            (MonadDOM m, FromJSString result) => HTMLMarqueeElement -> m result
-getBehavior self
-  = liftDOM ((self ^. js "behavior") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "behavior") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.bgColor Mozilla HTMLMarqueeElement.bgColor documentation> 
-setBgColor ::
-           (MonadDOM m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
-setBgColor self val = liftDOM (self ^. jss "bgColor" (toJSVal val))
+-- | <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 (self ^. jss "bgColor" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.bgColor Mozilla HTMLMarqueeElement.bgColor documentation> 
-getBgColor ::
-           (MonadDOM m, FromJSString result) => HTMLMarqueeElement -> m result
-getBgColor self
-  = liftDOM ((self ^. js "bgColor") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "bgColor") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.direction Mozilla HTMLMarqueeElement.direction documentation> 
-setDirection ::
-             (MonadDOM m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
-setDirection self val
-  = liftDOM (self ^. jss "direction" (toJSVal val))
+-- | <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 (self ^. jss "direction" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.direction Mozilla HTMLMarqueeElement.direction documentation> 
-getDirection ::
-             (MonadDOM m, FromJSString result) => HTMLMarqueeElement -> m result
-getDirection self
-  = liftDOM ((self ^. js "direction") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "direction") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.height Mozilla HTMLMarqueeElement.height documentation> 
-setHeight ::
-          (MonadDOM m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
-setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+-- | <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 (self ^. jss "height" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.height Mozilla HTMLMarqueeElement.height documentation> 
-getHeight ::
-          (MonadDOM m, FromJSString result) => HTMLMarqueeElement -> m result
-getHeight self
-  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "height") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.hspace Mozilla HTMLMarqueeElement.hspace documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-hspace HTMLMarqueeElement.hspace specification>
 setHspace :: (MonadDOM m) => HTMLMarqueeElement -> Word -> m ()
-setHspace self val = liftDOM (self ^. jss "hspace" (toJSVal val))
+setHspace self val = liftDOM (void (self ^. jss "hspace" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.hspace Mozilla HTMLMarqueeElement.hspace documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-hspace HTMLMarqueeElement.hspace specification>
 getHspace :: (MonadDOM m) => HTMLMarqueeElement -> m Word
-getHspace self
-  = liftDOM (round <$> ((self ^. js "hspace") >>= valToNumber))
+getHspace self = liftDOM ((P.round <$> ((self ^. js "hspace") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.loop Mozilla HTMLMarqueeElement.loop documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-loop HTMLMarqueeElement.loop specification>
 setLoop :: (MonadDOM m) => HTMLMarqueeElement -> Int -> m ()
-setLoop self val = liftDOM (self ^. jss "loop" (toJSVal val))
+setLoop self val = liftDOM (void (self ^. jss "loop" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.loop Mozilla HTMLMarqueeElement.loop documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-loop HTMLMarqueeElement.loop specification>
 getLoop :: (MonadDOM m) => HTMLMarqueeElement -> m Int
-getLoop self
-  = liftDOM (round <$> ((self ^. js "loop") >>= valToNumber))
+getLoop self = liftDOM ((P.round <$> ((self ^. js "loop") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollAmount Mozilla HTMLMarqueeElement.scrollAmount documentation> 
-setScrollAmount ::
-                (MonadDOM m) => HTMLMarqueeElement -> Word -> m ()
-setScrollAmount self val
-  = liftDOM (self ^. jss "scrollAmount" (toJSVal val))
+-- | <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 (self ^. jss "scrollAmount" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollAmount Mozilla HTMLMarqueeElement.scrollAmount documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-scrollamount HTMLMarqueeElement.scrollAmount specification>
 getScrollAmount :: (MonadDOM m) => HTMLMarqueeElement -> m Word
-getScrollAmount self
-  = liftDOM (round <$> ((self ^. js "scrollAmount") >>= valToNumber))
+getScrollAmount self = liftDOM ((P.round <$> ((self ^. js "scrollAmount") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollDelay Mozilla HTMLMarqueeElement.scrollDelay documentation> 
-setScrollDelay ::
-               (MonadDOM m) => HTMLMarqueeElement -> Word -> m ()
-setScrollDelay self val
-  = liftDOM (self ^. jss "scrollDelay" (toJSVal val))
+-- | <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 (self ^. jss "scrollDelay" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollDelay Mozilla HTMLMarqueeElement.scrollDelay documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-scrolldelay HTMLMarqueeElement.scrollDelay specification>
 getScrollDelay :: (MonadDOM m) => HTMLMarqueeElement -> m Word
-getScrollDelay self
-  = liftDOM (round <$> ((self ^. js "scrollDelay") >>= valToNumber))
+getScrollDelay self = liftDOM ((P.round <$> ((self ^. js "scrollDelay") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.trueSpeed Mozilla HTMLMarqueeElement.trueSpeed documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-truespeed HTMLMarqueeElement.trueSpeed specification>
 setTrueSpeed :: (MonadDOM m) => HTMLMarqueeElement -> Bool -> m ()
-setTrueSpeed self val
-  = liftDOM (self ^. jss "trueSpeed" (toJSVal val))
+setTrueSpeed self val = liftDOM (void (self ^. jss "trueSpeed" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.trueSpeed Mozilla HTMLMarqueeElement.trueSpeed documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-truespeed HTMLMarqueeElement.trueSpeed specification>
 getTrueSpeed :: (MonadDOM m) => HTMLMarqueeElement -> m Bool
-getTrueSpeed self
-  = liftDOM ((self ^. js "trueSpeed") >>= valToBool)
+getTrueSpeed self = liftDOM (((self ^. js "trueSpeed") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.vspace Mozilla HTMLMarqueeElement.vspace documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-vspace HTMLMarqueeElement.vspace specification>
 setVspace :: (MonadDOM m) => HTMLMarqueeElement -> Word -> m ()
-setVspace self val = liftDOM (self ^. jss "vspace" (toJSVal val))
+setVspace self val = liftDOM (void (self ^. jss "vspace" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.vspace Mozilla HTMLMarqueeElement.vspace documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-vspace HTMLMarqueeElement.vspace specification>
 getVspace :: (MonadDOM m) => HTMLMarqueeElement -> m Word
-getVspace self
-  = liftDOM (round <$> ((self ^. js "vspace") >>= valToNumber))
+getVspace self = liftDOM ((P.round <$> ((self ^. js "vspace") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.width Mozilla HTMLMarqueeElement.width documentation> 
-setWidth ::
-         (MonadDOM m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+-- | <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 (self ^. jss "width" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.width Mozilla HTMLMarqueeElement.width documentation> 
-getWidth ::
-         (MonadDOM m, FromJSString result) => HTMLMarqueeElement -> m result
-getWidth self
-  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "width") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLMediaElement.hs b/src/JSDOM/Generated/HTMLMediaElement.hs
--- a/src/JSDOM/Generated/HTMLMediaElement.hs
+++ b/src/JSDOM/Generated/HTMLMediaElement.hs
@@ -1,705 +1,318 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLMediaElement
-       (load, canPlayType, canPlayType_, getStartDate, getStartDate_,
-        play, pause, fastSeek, webkitSetMediaKeys, setMediaKeys,
-        addTextTrack, addTextTrack_, getVideoPlaybackQuality,
-        getVideoPlaybackQuality_, 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, getError, 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, getPlayed, getSeekable, getEnded, setAutoplay,
-        getAutoplay, setLoop, getLoop, setControls, getControls, setVolume,
-        getVolume, setMuted, getMuted, setDefaultMuted, getDefaultMuted,
-        setWebkitPreservesPitch, getWebkitPreservesPitch,
-        getWebkitHasClosedCaptions, setWebkitClosedCaptionsVisible,
-        getWebkitClosedCaptionsVisible, getWebkitAudioDecodedByteCount,
-        getWebkitVideoDecodedByteCount, getWebkitKeys, getMediaKeys,
-        encrypted, waitingforkey, getAudioTracks, getTextTracks,
-        getVideoTracks, setMediaGroup, getMediaGroup, setController,
-        getController, getControllerUnsafe, getControllerUnchecked,
-        getWebkitCurrentPlaybackTargetIsWireless, setKind, getKind,
-        setSession, getSession, getSessionUnsafe, getSessionUnchecked,
-        HTMLMediaElement(..), gTypeHTMLMediaElement, IsHTMLMediaElement,
-        toHTMLMediaElement)
+       (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 ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.load Mozilla HTMLMediaElement.load documentation> 
-load :: (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
-load self
-  = liftDOM (void ((toHTMLMediaElement self) ^. jsf "load" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.canPlayType Mozilla HTMLMediaElement.canPlayType documentation> 
-canPlayType ::
-            (MonadDOM m, IsHTMLMediaElement self, ToJSString type',
-             FromJSString result) =>
-              self -> type' -> m result
-canPlayType self type'
-  = liftDOM
-      (((toHTMLMediaElement self) ^. jsf "canPlayType" [toJSVal type'])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.canPlayType Mozilla HTMLMediaElement.canPlayType documentation> 
-canPlayType_ ::
-             (MonadDOM m, IsHTMLMediaElement self, ToJSString type') =>
-               self -> type' -> m ()
-canPlayType_ self type'
-  = liftDOM
-      (void
-         ((toHTMLMediaElement self) ^. jsf "canPlayType" [toJSVal type']))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.getStartDate Mozilla HTMLMediaElement.getStartDate documentation> 
-getStartDate ::
-             (MonadDOM m, IsHTMLMediaElement self) => self -> m Date
-getStartDate self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. jsf "getStartDate" ()) >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toHTMLMediaElement self) ^. jsf "addTextTrack" [toJSVal kind, P.maybe (P.return jsUndefined) toJSVal label, P.maybe (P.return jsUndefined) toJSVal language]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.getStartDate Mozilla HTMLMediaElement.getStartDate documentation> 
-getStartDate_ ::
-              (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
-getStartDate_ self
-  = liftDOM
-      (void ((toHTMLMediaElement self) ^. jsf "getStartDate" ()))
+-- | <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 ((Types.toHTMLMediaElement self) ^. jsf "addTextTrack" [toJSVal kind, P.maybe (P.return jsUndefined) toJSVal label, P.maybe (P.return jsUndefined) toJSVal language]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.play Mozilla HTMLMediaElement.play documentation> 
-play :: (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
-play self
-  = liftDOM
-      (void
-         (((toHTMLMediaElement self) ^. jsf "play" ()) >>= readPromise))
+-- | <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 ((((Types.toHTMLMediaElement self) ^. jsf "canPlayType" [toJSVal type']) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.pause Mozilla HTMLMediaElement.pause documentation> 
-pause :: (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
-pause self
-  = liftDOM (void ((toHTMLMediaElement self) ^. jsf "pause" ()))
+-- | <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 ((Types.toHTMLMediaElement self) ^. jsf "canPlayType" [toJSVal type']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.fastSeek Mozilla HTMLMediaElement.fastSeek documentation> 
-fastSeek ::
-         (MonadDOM m, IsHTMLMediaElement self) => self -> Double -> m ()
-fastSeek self time
-  = liftDOM
-      (void ((toHTMLMediaElement self) ^. jsf "fastSeek" [toJSVal time]))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/captureStream MDN HTMLMediaElement.captureStream documentation>
+captureStream :: (MonadDOM m, IsHTMLMediaElement self) => self -> m MediaStream
+captureStream self = liftDOM ((((Types.toHTMLMediaElement self) ^. jsf "captureStream" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitSetMediaKeys Mozilla HTMLMediaElement.webkitSetMediaKeys documentation> 
-webkitSetMediaKeys ::
-                   (MonadDOM m, IsHTMLMediaElement self) =>
-                     self -> Maybe WebKitMediaKeys -> m ()
-webkitSetMediaKeys self mediaKeys
-  = liftDOM
-      (void
-         ((toHTMLMediaElement self) ^. jsf "webkitSetMediaKeys"
-            [toJSVal mediaKeys]))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/captureStream MDN HTMLMediaElement.captureStream documentation>
+captureStream_ :: (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
+captureStream_ self = liftDOM (void ((Types.toHTMLMediaElement self) ^. jsf "captureStream" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.setMediaKeys Mozilla HTMLMediaElement.setMediaKeys documentation> 
-setMediaKeys ::
-             (MonadDOM m, IsHTMLMediaElement self) =>
-               self -> Maybe MediaKeys -> m ()
-setMediaKeys self mediaKeys
-  = liftDOM
-      (void
-         (((toHTMLMediaElement self) ^. jsf "setMediaKeys"
-             [toJSVal mediaKeys])
-            >>= readPromise))
+-- | <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 ((Types.toHTMLMediaElement self) ^. jsf "fastSeek" [toJSVal time]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.addTextTrack Mozilla HTMLMediaElement.addTextTrack documentation> 
-addTextTrack ::
-             (MonadDOM m, IsHTMLMediaElement self, ToJSString kind,
-              ToJSString label, ToJSString language) =>
-               self -> kind -> Maybe label -> Maybe language -> m TextTrack
-addTextTrack self kind label language
-  = liftDOM
-      (((toHTMLMediaElement self) ^. jsf "addTextTrack"
-          [toJSVal kind, toJSVal label, toJSVal language])
-         >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/getStartDate MDN HTMLMediaElement.getStartDate documentation>
+getStartDate :: (MonadDOM m, IsHTMLMediaElement self) => self -> m GObject
+getStartDate self = liftDOM ((((Types.toHTMLMediaElement self) ^. jsf "getStartDate" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.addTextTrack Mozilla HTMLMediaElement.addTextTrack documentation> 
-addTextTrack_ ::
-              (MonadDOM m, IsHTMLMediaElement self, ToJSString kind,
-               ToJSString label, ToJSString language) =>
-                self -> kind -> Maybe label -> Maybe language -> m ()
-addTextTrack_ self kind label language
-  = liftDOM
-      (void
-         ((toHTMLMediaElement self) ^. jsf "addTextTrack"
-            [toJSVal kind, toJSVal label, toJSVal language]))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/getStartDate MDN HTMLMediaElement.getStartDate documentation>
+getStartDate_ :: (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
+getStartDate_ self = liftDOM (void ((Types.toHTMLMediaElement self) ^. jsf "getStartDate" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.getVideoPlaybackQuality Mozilla HTMLMediaElement.getVideoPlaybackQuality documentation> 
-getVideoPlaybackQuality ::
-                        (MonadDOM m, IsHTMLMediaElement self) =>
-                          self -> m VideoPlaybackQuality
-getVideoPlaybackQuality self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. jsf "getVideoPlaybackQuality" ())
-         >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/load MDN HTMLMediaElement.load documentation>
+load :: (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
+load self = liftDOM (void ((Types.toHTMLMediaElement self) ^. jsf "load" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.getVideoPlaybackQuality Mozilla HTMLMediaElement.getVideoPlaybackQuality documentation> 
-getVideoPlaybackQuality_ ::
-                         (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
-getVideoPlaybackQuality_ self
-  = liftDOM
-      (void
-         ((toHTMLMediaElement self) ^. jsf "getVideoPlaybackQuality" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/pause MDN HTMLMediaElement.pause documentation>
+pause :: (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
+pause self = liftDOM (void ((Types.toHTMLMediaElement self) ^. jsf "pause" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitShowPlaybackTargetPicker Mozilla HTMLMediaElement.webkitShowPlaybackTargetPicker documentation> 
-webkitShowPlaybackTargetPicker ::
-                               (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
-webkitShowPlaybackTargetPicker self
-  = liftDOM
-      (void
-         ((toHTMLMediaElement self) ^. jsf "webkitShowPlaybackTargetPicker"
-            ()))
-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://developer.mozilla.org/docs/Web/API/HTMLMediaElement/play MDN HTMLMediaElement.play documentation>
+play :: (MonadDOM m, IsHTMLMediaElement self) => self -> m ()
+play self = liftDOM (void ((((Types.toHTMLMediaElement self) ^. jsf "play" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.error Mozilla HTMLMediaElement.error documentation> 
-getError ::
-         (MonadDOM m, IsHTMLMediaElement self) => self -> m MediaError
-getError self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "error") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toHTMLMediaElement self) ^. jsf "setMediaKeys" [toJSVal mediaKeys]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.src Mozilla HTMLMediaElement.src documentation> 
-setSrc ::
-       (MonadDOM m, IsHTMLMediaElement self, ToJSString val) =>
-         self -> val -> m ()
-setSrc self val
-  = liftDOM ((toHTMLMediaElement self) ^. jss "src" (toJSVal val))
+-- | <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 ((((Types.toHTMLMediaElement self) ^. jsf "setSinkId" [toJSVal sinkId]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.src Mozilla HTMLMediaElement.src documentation> 
-getSrc ::
-       (MonadDOM m, IsHTMLMediaElement self, FromJSString result) =>
-         self -> m result
-getSrc self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "src") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toHTMLMediaElement self) ^. js "error") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
-setSrcObject ::
-             (MonadDOM m, IsHTMLMediaElement self, IsMediaProvider val) =>
-               self -> Maybe val -> m ()
-setSrcObject self val
-  = liftDOM
-      ((toHTMLMediaElement self) ^. jss "srcObject" (toJSVal val))
+-- | <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 (((((Types.toHTMLMediaElement self) ^. js "error") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
-getSrcObject ::
-             (MonadDOM m, IsHTMLMediaElement self) =>
-               self -> m (Maybe MediaProvider)
-getSrcObject self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "srcObject") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/error MDN HTMLMediaElement.error documentation>
+getErrorUnchecked :: (MonadDOM m, IsHTMLMediaElement self) => self -> m MediaError
+getErrorUnchecked self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "error") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
-getSrcObjectUnsafe ::
-                   (MonadDOM m, IsHTMLMediaElement self, HasCallStack) =>
-                     self -> m MediaProvider
-getSrcObjectUnsafe self
-  = liftDOM
-      ((((toHTMLMediaElement self) ^. js "srcObject") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 ((Types.toHTMLMediaElement self) ^. jss "src" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
-getSrcObjectUnchecked ::
-                      (MonadDOM m, IsHTMLMediaElement self) => self -> m MediaProvider
-getSrcObjectUnchecked self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "srcObject") >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toHTMLMediaElement self) ^. js "src") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.currentSrc Mozilla HTMLMediaElement.currentSrc documentation> 
-getCurrentSrc ::
-              (MonadDOM m, IsHTMLMediaElement self, FromJSString result) =>
-                self -> m result
-getCurrentSrc self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "currentSrc") >>=
-         fromJSValUnchecked)
+-- | <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 ((Types.toHTMLMediaElement self) ^. jss "srcObject" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.crossOrigin Mozilla HTMLMediaElement.crossOrigin documentation> 
-setCrossOrigin ::
-               (MonadDOM m, IsHTMLMediaElement self, ToJSString val) =>
-                 self -> Maybe val -> m ()
-setCrossOrigin self val
-  = liftDOM
-      ((toHTMLMediaElement self) ^. jss "crossOrigin" (toJSVal val))
+-- | <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 ((((Types.toHTMLMediaElement self) ^. js "srcObject") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.crossOrigin Mozilla HTMLMediaElement.crossOrigin documentation> 
-getCrossOrigin ::
-               (MonadDOM m, IsHTMLMediaElement self, FromJSString result) =>
-                 self -> m (Maybe result)
-getCrossOrigin self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "crossOrigin") >>=
-         fromMaybeJSString)
+-- | <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 (((((Types.toHTMLMediaElement self) ^. js "srcObject") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.crossOrigin Mozilla HTMLMediaElement.crossOrigin documentation> 
-getCrossOriginUnsafe ::
-                     (MonadDOM m, IsHTMLMediaElement self, HasCallStack,
-                      FromJSString result) =>
-                       self -> m result
-getCrossOriginUnsafe self
-  = liftDOM
-      ((((toHTMLMediaElement self) ^. js "crossOrigin") >>=
-          fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") 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 ((((Types.toHTMLMediaElement self) ^. js "srcObject") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.crossOrigin Mozilla HTMLMediaElement.crossOrigin documentation> 
-getCrossOriginUnchecked ::
-                        (MonadDOM m, IsHTMLMediaElement self, FromJSString result) =>
-                          self -> m result
-getCrossOriginUnchecked self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "crossOrigin") >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toHTMLMediaElement self) ^. js "currentSrc") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.networkState Mozilla HTMLMediaElement.networkState documentation> 
-getNetworkState ::
-                (MonadDOM m, IsHTMLMediaElement self) => self -> m Word
-getNetworkState self
-  = liftDOM
-      (round <$>
-         (((toHTMLMediaElement self) ^. js "networkState") >>= valToNumber))
+-- | <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 ((Types.toHTMLMediaElement self) ^. jss "crossOrigin" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.preload Mozilla HTMLMediaElement.preload documentation> 
-setPreload ::
-           (MonadDOM m, IsHTMLMediaElement self, ToJSString val) =>
-             self -> val -> m ()
-setPreload self val
-  = liftDOM
-      ((toHTMLMediaElement self) ^. jss "preload" (toJSVal val))
+-- | <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 ((((Types.toHTMLMediaElement self) ^. js "crossOrigin") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.preload Mozilla HTMLMediaElement.preload documentation> 
-getPreload ::
-           (MonadDOM m, IsHTMLMediaElement self, FromJSString result) =>
-             self -> m result
-getPreload self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "preload") >>=
-         fromJSValUnchecked)
+-- | <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 (((((Types.toHTMLMediaElement self) ^. js "crossOrigin") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.buffered Mozilla HTMLMediaElement.buffered documentation> 
-getBuffered ::
-            (MonadDOM m, IsHTMLMediaElement self) => self -> m TimeRanges
-getBuffered self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "buffered") >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toHTMLMediaElement self) ^. js "crossOrigin") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.readyState Mozilla HTMLMediaElement.readyState documentation> 
-getReadyState ::
-              (MonadDOM m, IsHTMLMediaElement self) => self -> m Word
-getReadyState self
-  = liftDOM
-      (round <$>
-         (((toHTMLMediaElement self) ^. js "readyState") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/networkState MDN HTMLMediaElement.networkState documentation>
+getNetworkState :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Word
+getNetworkState self = liftDOM ((P.round <$> (((Types.toHTMLMediaElement self) ^. js "networkState") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.seeking Mozilla HTMLMediaElement.seeking documentation> 
-getSeeking ::
-           (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
-getSeeking self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "seeking") >>= valToBool)
+-- | <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 ((Types.toHTMLMediaElement self) ^. jss "preload" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.currentTime Mozilla HTMLMediaElement.currentTime documentation> 
-setCurrentTime ::
-               (MonadDOM m, IsHTMLMediaElement self) => self -> Double -> m ()
-setCurrentTime self val
-  = liftDOM
-      ((toHTMLMediaElement self) ^. jss "currentTime" (toJSVal val))
+-- | <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 ((((Types.toHTMLMediaElement self) ^. js "preload") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.currentTime Mozilla HTMLMediaElement.currentTime documentation> 
-getCurrentTime ::
-               (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
-getCurrentTime self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "currentTime") >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/buffered MDN HTMLMediaElement.buffered documentation>
+getBuffered :: (MonadDOM m, IsHTMLMediaElement self) => self -> m TimeRanges
+getBuffered self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "buffered") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.duration Mozilla HTMLMediaElement.duration documentation> 
-getDuration ::
-            (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
-getDuration self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "duration") >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/readyState MDN HTMLMediaElement.readyState documentation>
+getReadyState :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Word
+getReadyState self = liftDOM ((P.round <$> (((Types.toHTMLMediaElement self) ^. js "readyState") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.paused Mozilla HTMLMediaElement.paused documentation> 
-getPaused ::
-          (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
-getPaused self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "paused") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/seeking MDN HTMLMediaElement.seeking documentation>
+getSeeking :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getSeeking self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "seeking") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.defaultPlaybackRate Mozilla HTMLMediaElement.defaultPlaybackRate documentation> 
-setDefaultPlaybackRate ::
-                       (MonadDOM m, IsHTMLMediaElement self) => self -> Double -> m ()
-setDefaultPlaybackRate self val
-  = liftDOM
-      ((toHTMLMediaElement self) ^. jss "defaultPlaybackRate"
-         (toJSVal val))
+-- | <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 ((Types.toHTMLMediaElement self) ^. jss "currentTime" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.defaultPlaybackRate Mozilla HTMLMediaElement.defaultPlaybackRate documentation> 
-getDefaultPlaybackRate ::
-                       (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
-getDefaultPlaybackRate self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "defaultPlaybackRate") >>=
-         valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/currentTime MDN HTMLMediaElement.currentTime documentation>
+getCurrentTime :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
+getCurrentTime self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "currentTime") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.playbackRate Mozilla HTMLMediaElement.playbackRate documentation> 
-setPlaybackRate ::
-                (MonadDOM m, IsHTMLMediaElement self) => self -> Double -> m ()
-setPlaybackRate self val
-  = liftDOM
-      ((toHTMLMediaElement self) ^. jss "playbackRate" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/duration MDN HTMLMediaElement.duration documentation>
+getDuration :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
+getDuration self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "duration") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.playbackRate Mozilla HTMLMediaElement.playbackRate documentation> 
-getPlaybackRate ::
-                (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
-getPlaybackRate self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "playbackRate") >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/paused MDN HTMLMediaElement.paused documentation>
+getPaused :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getPaused self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "paused") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.played Mozilla HTMLMediaElement.played documentation> 
-getPlayed ::
-          (MonadDOM m, IsHTMLMediaElement self) => self -> m TimeRanges
-getPlayed self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "played") >>= fromJSValUnchecked)
+-- | <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 ((Types.toHTMLMediaElement self) ^. jss "defaultPlaybackRate" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.seekable Mozilla HTMLMediaElement.seekable documentation> 
-getSeekable ::
-            (MonadDOM m, IsHTMLMediaElement self) => self -> m TimeRanges
-getSeekable self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "seekable") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/defaultPlaybackRate MDN HTMLMediaElement.defaultPlaybackRate documentation>
+getDefaultPlaybackRate :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
+getDefaultPlaybackRate self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "defaultPlaybackRate") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.ended Mozilla HTMLMediaElement.ended documentation> 
-getEnded :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
-getEnded self
-  = liftDOM (((toHTMLMediaElement self) ^. js "ended") >>= valToBool)
+-- | <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 ((Types.toHTMLMediaElement self) ^. jss "playbackRate" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.autoplay Mozilla HTMLMediaElement.autoplay documentation> 
-setAutoplay ::
-            (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
-setAutoplay self val
-  = liftDOM
-      ((toHTMLMediaElement self) ^. jss "autoplay" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/playbackRate MDN HTMLMediaElement.playbackRate documentation>
+getPlaybackRate :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
+getPlaybackRate self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "playbackRate") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.autoplay Mozilla HTMLMediaElement.autoplay documentation> 
-getAutoplay ::
-            (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
-getAutoplay self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "autoplay") >>= valToBool)
+-- | <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 ((Types.toHTMLMediaElement self) ^. jss "preservesPitch" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.loop Mozilla HTMLMediaElement.loop documentation> 
-setLoop ::
-        (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
-setLoop self val
-  = liftDOM ((toHTMLMediaElement self) ^. jss "loop" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/preservesPitch MDN HTMLMediaElement.preservesPitch documentation>
+getPreservesPitch :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getPreservesPitch self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "preservesPitch") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.loop Mozilla HTMLMediaElement.loop documentation> 
-getLoop :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
-getLoop self
-  = liftDOM (((toHTMLMediaElement self) ^. js "loop") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/played MDN HTMLMediaElement.played documentation>
+getPlayed :: (MonadDOM m, IsHTMLMediaElement self) => self -> m TimeRanges
+getPlayed self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "played") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controls Mozilla HTMLMediaElement.controls documentation> 
-setControls ::
-            (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
-setControls self val
-  = liftDOM
-      ((toHTMLMediaElement self) ^. jss "controls" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/seekable MDN HTMLMediaElement.seekable documentation>
+getSeekable :: (MonadDOM m, IsHTMLMediaElement self) => self -> m TimeRanges
+getSeekable self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "seekable") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controls Mozilla HTMLMediaElement.controls documentation> 
-getControls ::
-            (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
-getControls self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "controls") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/ended MDN HTMLMediaElement.ended documentation>
+getEnded :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getEnded self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "ended") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.volume Mozilla HTMLMediaElement.volume documentation> 
-setVolume ::
-          (MonadDOM m, IsHTMLMediaElement self) => self -> Double -> m ()
-setVolume self val
-  = liftDOM ((toHTMLMediaElement self) ^. jss "volume" (toJSVal val))
+-- | <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 ((Types.toHTMLMediaElement self) ^. jss "autoplay" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.volume Mozilla HTMLMediaElement.volume documentation> 
-getVolume ::
-          (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
-getVolume self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "volume") >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/autoplay MDN HTMLMediaElement.autoplay documentation>
+getAutoplay :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getAutoplay self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "autoplay") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.muted Mozilla HTMLMediaElement.muted documentation> 
-setMuted ::
-         (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
-setMuted self val
-  = liftDOM ((toHTMLMediaElement self) ^. jss "muted" (toJSVal val))
+-- | <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 ((Types.toHTMLMediaElement self) ^. jss "loop" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.muted Mozilla HTMLMediaElement.muted documentation> 
-getMuted :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
-getMuted self
-  = liftDOM (((toHTMLMediaElement self) ^. js "muted") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/loop MDN HTMLMediaElement.loop documentation>
+getLoop :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getLoop self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "loop") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.defaultMuted Mozilla HTMLMediaElement.defaultMuted documentation> 
-setDefaultMuted ::
-                (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
-setDefaultMuted self val
-  = liftDOM
-      ((toHTMLMediaElement self) ^. jss "defaultMuted" (toJSVal val))
+-- | <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 ((Types.toHTMLMediaElement self) ^. jss "controls" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.defaultMuted Mozilla HTMLMediaElement.defaultMuted documentation> 
-getDefaultMuted ::
-                (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
-getDefaultMuted self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "defaultMuted") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/controls MDN HTMLMediaElement.controls documentation>
+getControls :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getControls self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "controls") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitPreservesPitch Mozilla HTMLMediaElement.webkitPreservesPitch documentation> 
-setWebkitPreservesPitch ::
-                        (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
-setWebkitPreservesPitch self val
-  = liftDOM
-      ((toHTMLMediaElement self) ^. jss "webkitPreservesPitch"
-         (toJSVal val))
+-- | <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 ((Types.toHTMLMediaElement self) ^. jss "volume" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitPreservesPitch Mozilla HTMLMediaElement.webkitPreservesPitch documentation> 
-getWebkitPreservesPitch ::
-                        (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
-getWebkitPreservesPitch self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "webkitPreservesPitch") >>=
-         valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/volume MDN HTMLMediaElement.volume documentation>
+getVolume :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Double
+getVolume self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "volume") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitHasClosedCaptions Mozilla HTMLMediaElement.webkitHasClosedCaptions documentation> 
-getWebkitHasClosedCaptions ::
-                           (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
-getWebkitHasClosedCaptions self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "webkitHasClosedCaptions") >>=
-         valToBool)
+-- | <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 ((Types.toHTMLMediaElement self) ^. jss "muted" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitClosedCaptionsVisible Mozilla HTMLMediaElement.webkitClosedCaptionsVisible documentation> 
-setWebkitClosedCaptionsVisible ::
-                               (MonadDOM m, IsHTMLMediaElement self) => self -> Bool -> m ()
-setWebkitClosedCaptionsVisible self val
-  = liftDOM
-      ((toHTMLMediaElement self) ^. jss "webkitClosedCaptionsVisible"
-         (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/muted MDN HTMLMediaElement.muted documentation>
+getMuted :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getMuted self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "muted") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitClosedCaptionsVisible Mozilla HTMLMediaElement.webkitClosedCaptionsVisible documentation> 
-getWebkitClosedCaptionsVisible ::
-                               (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
-getWebkitClosedCaptionsVisible self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "webkitClosedCaptionsVisible")
-         >>= valToBool)
+-- | <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 ((Types.toHTMLMediaElement self) ^. jss "defaultMuted" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitAudioDecodedByteCount Mozilla HTMLMediaElement.webkitAudioDecodedByteCount documentation> 
-getWebkitAudioDecodedByteCount ::
-                               (MonadDOM m, IsHTMLMediaElement self) => self -> m Word
-getWebkitAudioDecodedByteCount self
-  = liftDOM
-      (round <$>
-         (((toHTMLMediaElement self) ^. js "webkitAudioDecodedByteCount")
-            >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/defaultMuted MDN HTMLMediaElement.defaultMuted documentation>
+getDefaultMuted :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getDefaultMuted self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "defaultMuted") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitVideoDecodedByteCount Mozilla HTMLMediaElement.webkitVideoDecodedByteCount documentation> 
-getWebkitVideoDecodedByteCount ::
-                               (MonadDOM m, IsHTMLMediaElement self) => self -> m Word
-getWebkitVideoDecodedByteCount self
-  = liftDOM
-      (round <$>
-         (((toHTMLMediaElement self) ^. js "webkitVideoDecodedByteCount")
-            >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/audioTracks MDN HTMLMediaElement.audioTracks documentation>
+getAudioTracks :: (MonadDOM m, IsHTMLMediaElement self) => self -> m AudioTrackList
+getAudioTracks self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "audioTracks") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitKeys Mozilla HTMLMediaElement.webkitKeys documentation> 
-getWebkitKeys ::
-              (MonadDOM m, IsHTMLMediaElement self) => self -> m WebKitMediaKeys
-getWebkitKeys self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "webkitKeys") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/videoTracks MDN HTMLMediaElement.videoTracks documentation>
+getVideoTracks :: (MonadDOM m, IsHTMLMediaElement self) => self -> m VideoTrackList
+getVideoTracks self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "videoTracks") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.mediaKeys Mozilla HTMLMediaElement.mediaKeys documentation> 
-getMediaKeys ::
-             (MonadDOM m, IsHTMLMediaElement self) => self -> m MediaKeys
-getMediaKeys self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "mediaKeys") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/textTracks MDN HTMLMediaElement.textTracks documentation>
+getTextTracks :: (MonadDOM m, IsHTMLMediaElement self) => self -> m TextTrackList
+getTextTracks self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "textTracks") >>= fromJSValUnchecked))
 
--- | <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/docs/Web/API/HTMLMediaElement/sinkId MDN HTMLMediaElement.sinkId documentation>
+getSinkId :: (MonadDOM m, IsHTMLMediaElement self, FromJSString result) => self -> m result
+getSinkId self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "sinkId") >>= fromJSValUnchecked))
 
--- | <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")
+-- | <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 ((((Types.toHTMLMediaElement self) ^. js "mediaKeys") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.audioTracks Mozilla HTMLMediaElement.audioTracks documentation> 
-getAudioTracks ::
-               (MonadDOM m, IsHTMLMediaElement self) => self -> m AudioTrackList
-getAudioTracks self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "audioTracks") >>=
-         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 (((((Types.toHTMLMediaElement self) ^. js "mediaKeys") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.textTracks Mozilla HTMLMediaElement.textTracks documentation> 
-getTextTracks ::
-              (MonadDOM m, IsHTMLMediaElement self) => self -> m TextTrackList
-getTextTracks self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "textTracks") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/mediaKeys MDN HTMLMediaElement.mediaKeys documentation>
+getMediaKeysUnchecked :: (MonadDOM m, IsHTMLMediaElement self) => self -> m MediaKeys
+getMediaKeysUnchecked self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "mediaKeys") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.videoTracks Mozilla HTMLMediaElement.videoTracks documentation> 
-getVideoTracks ::
-               (MonadDOM m, IsHTMLMediaElement self) => self -> m VideoTrackList
-getVideoTracks self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "videoTracks") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/remote MDN HTMLMediaElement.remote documentation>
+getRemote :: (MonadDOM m, IsHTMLMediaElement self) => self -> m RemotePlayback
+getRemote self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "remote") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.mediaGroup Mozilla HTMLMediaElement.mediaGroup documentation> 
-setMediaGroup ::
-              (MonadDOM m, IsHTMLMediaElement self, ToJSString val) =>
-                self -> val -> m ()
-setMediaGroup self val
-  = liftDOM
-      ((toHTMLMediaElement self) ^. jss "mediaGroup" (toJSVal val))
+-- | <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 ((Types.toHTMLMediaElement self) ^. jss "disableRemotePlayback" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.mediaGroup Mozilla HTMLMediaElement.mediaGroup documentation> 
-getMediaGroup ::
-              (MonadDOM m, IsHTMLMediaElement self, FromJSString result) =>
-                self -> m result
-getMediaGroup self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "mediaGroup") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/disableRemotePlayback MDN HTMLMediaElement.disableRemotePlayback documentation>
+getDisableRemotePlayback :: (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
+getDisableRemotePlayback self = liftDOM ((((Types.toHTMLMediaElement self) ^. js "disableRemotePlayback") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controller Mozilla HTMLMediaElement.controller documentation> 
-setController ::
-              (MonadDOM m, IsHTMLMediaElement self) =>
-                self -> Maybe MediaController -> m ()
-setController self val
-  = liftDOM
-      ((toHTMLMediaElement self) ^. jss "controller" (toJSVal val))
+pattern NETWORK_EMPTY = 0
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controller Mozilla HTMLMediaElement.controller documentation> 
-getController ::
-              (MonadDOM m, IsHTMLMediaElement self) =>
-                self -> m (Maybe MediaController)
-getController self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "controller") >>= fromJSVal)
+pattern NETWORK_IDLE = 1
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controller Mozilla HTMLMediaElement.controller documentation> 
-getControllerUnsafe ::
-                    (MonadDOM m, IsHTMLMediaElement self, HasCallStack) =>
-                      self -> m MediaController
-getControllerUnsafe self
-  = liftDOM
-      ((((toHTMLMediaElement self) ^. js "controller") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+pattern NETWORK_LOADING = 2
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controller Mozilla HTMLMediaElement.controller documentation> 
-getControllerUnchecked ::
-                       (MonadDOM m, IsHTMLMediaElement self) => self -> m MediaController
-getControllerUnchecked self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "controller") >>=
-         fromJSValUnchecked)
+pattern NETWORK_NO_SOURCE = 3
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitCurrentPlaybackTargetIsWireless Mozilla HTMLMediaElement.webkitCurrentPlaybackTargetIsWireless documentation> 
-getWebkitCurrentPlaybackTargetIsWireless ::
-                                         (MonadDOM m, IsHTMLMediaElement self) => self -> m Bool
-getWebkitCurrentPlaybackTargetIsWireless self
-  = liftDOM
-      (((toHTMLMediaElement self) ^.
-          js "webkitCurrentPlaybackTargetIsWireless")
-         >>= valToBool)
+pattern HAVE_NOTHING = 0
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.kind Mozilla HTMLMediaElement.kind documentation> 
-setKind ::
-        (MonadDOM m, IsHTMLMediaElement self, ToJSString val) =>
-          self -> val -> m ()
-setKind self val
-  = liftDOM ((toHTMLMediaElement self) ^. jss "kind" (toJSVal val))
+pattern HAVE_METADATA = 1
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.kind Mozilla HTMLMediaElement.kind documentation> 
-getKind ::
-        (MonadDOM m, IsHTMLMediaElement self, FromJSString result) =>
-          self -> m result
-getKind self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "kind") >>= fromJSValUnchecked)
+pattern HAVE_CURRENT_DATA = 2
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.session Mozilla HTMLMediaElement.session documentation> 
-setSession ::
-           (MonadDOM m, IsHTMLMediaElement self) =>
-             self -> Maybe MediaSession -> m ()
-setSession self val
-  = liftDOM
-      ((toHTMLMediaElement self) ^. jss "session" (toJSVal val))
+pattern HAVE_FUTURE_DATA = 3
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.session Mozilla HTMLMediaElement.session documentation> 
-getSession ::
-           (MonadDOM m, IsHTMLMediaElement self) =>
-             self -> m (Maybe MediaSession)
-getSession self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "session") >>= fromJSVal)
+pattern HAVE_ENOUGH_DATA = 4
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.session Mozilla HTMLMediaElement.session documentation> 
-getSessionUnsafe ::
-                 (MonadDOM m, IsHTMLMediaElement self, HasCallStack) =>
-                   self -> m MediaSession
-getSessionUnsafe self
-  = liftDOM
-      ((((toHTMLMediaElement self) ^. js "session") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://w3c.github.io/encrypted-media/#dom-htmlmediaelement-onencrypted encrypted event>
+encrypted :: (IsHTMLMediaElement self, IsEventTarget self) => EventName self MediaEncryptedEvent
+encrypted = unsafeEventName (toJSString "encrypted")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.session Mozilla HTMLMediaElement.session documentation> 
-getSessionUnchecked ::
-                    (MonadDOM m, IsHTMLMediaElement self) => self -> m MediaSession
-getSessionUnchecked self
-  = liftDOM
-      (((toHTMLMediaElement self) ^. js "session") >>=
-         fromJSValUnchecked)
+-- | <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/JSDOM/Generated/HTMLMenuElement.hs b/src/JSDOM/Generated/HTMLMenuElement.hs
--- a/src/JSDOM/Generated/HTMLMenuElement.hs
+++ b/src/JSDOM/Generated/HTMLMenuElement.hs
@@ -1,28 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLMenuElement
        (setCompact, getCompact, HTMLMenuElement(..), gTypeHTMLMenuElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMenuElement.compact Mozilla HTMLMenuElement.compact documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMenuElement/compact MDN HTMLMenuElement.compact documentation>
 setCompact :: (MonadDOM m) => HTMLMenuElement -> Bool -> m ()
-setCompact self val = liftDOM (self ^. jss "compact" (toJSVal val))
+setCompact self val = liftDOM (void (self ^. jss "compact" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMenuElement.compact Mozilla HTMLMenuElement.compact documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMenuElement/compact MDN HTMLMenuElement.compact documentation>
 getCompact :: (MonadDOM m) => HTMLMenuElement -> m Bool
-getCompact self = liftDOM ((self ^. js "compact") >>= valToBool)
+getCompact self = liftDOM (((self ^. js "compact") >>= valToBool))
diff --git a/src/JSDOM/Generated/HTMLMetaElement.hs b/src/JSDOM/Generated/HTMLMetaElement.hs
--- a/src/JSDOM/Generated/HTMLMetaElement.hs
+++ b/src/JSDOM/Generated/HTMLMetaElement.hs
@@ -1,66 +1,56 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLMetaElement
-       (setContent, getContent, setHttpEquiv, getHttpEquiv, setName,
-        getName, setScheme, getScheme, HTMLMetaElement(..),
-        gTypeHTMLMetaElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.content Mozilla HTMLMetaElement.content documentation> 
-setContent ::
-           (MonadDOM m, ToJSString val) => HTMLMetaElement -> val -> m ()
-setContent self val = liftDOM (self ^. jss "content" (toJSVal val))
+-- | <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 (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.content Mozilla HTMLMetaElement.content documentation> 
-getContent ::
-           (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
-getContent self
-  = liftDOM ((self ^. js "content") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMetaElement/name MDN HTMLMetaElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.httpEquiv Mozilla HTMLMetaElement.httpEquiv documentation> 
-setHttpEquiv ::
-             (MonadDOM m, ToJSString val) => HTMLMetaElement -> val -> m ()
-setHttpEquiv self val
-  = liftDOM (self ^. jss "httpEquiv" (toJSVal val))
+-- | <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 (self ^. jss "httpEquiv" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.httpEquiv Mozilla HTMLMetaElement.httpEquiv documentation> 
-getHttpEquiv ::
-             (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
-getHttpEquiv self
-  = liftDOM ((self ^. js "httpEquiv") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMetaElement/httpEquiv MDN HTMLMetaElement.httpEquiv documentation>
+getHttpEquiv :: (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
+getHttpEquiv self = liftDOM (((self ^. js "httpEquiv") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.name Mozilla HTMLMetaElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLMetaElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <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 (self ^. jss "content" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.name Mozilla HTMLMetaElement.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMetaElement/content MDN HTMLMetaElement.content documentation>
+getContent :: (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
+getContent self = liftDOM (((self ^. js "content") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.scheme Mozilla HTMLMetaElement.scheme documentation> 
-setScheme ::
-          (MonadDOM m, ToJSString val) => HTMLMetaElement -> val -> m ()
-setScheme self val = liftDOM (self ^. jss "scheme" (toJSVal val))
+-- | <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 (self ^. jss "media" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.scheme Mozilla HTMLMetaElement.scheme documentation> 
-getScheme ::
-          (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
-getScheme self
-  = liftDOM ((self ^. js "scheme") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMetaElement/media MDN HTMLMetaElement.media documentation>
+getMedia :: (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
+getMedia self = liftDOM (((self ^. js "media") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "scheme" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMetaElement/scheme MDN HTMLMetaElement.scheme documentation>
+getScheme :: (MonadDOM m, FromJSString result) => HTMLMetaElement -> m result
+getScheme self = liftDOM (((self ^. js "scheme") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLMeterElement.hs b/src/JSDOM/Generated/HTMLMeterElement.hs
--- a/src/JSDOM/Generated/HTMLMeterElement.hs
+++ b/src/JSDOM/Generated/HTMLMeterElement.hs
@@ -1,75 +1,68 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLMeterElement
-       (setValue, getValue, setMin, getMin, setMax, getMax, setLow,
-        getLow, setHigh, getHigh, setOptimum, getOptimum, getLabels,
-        HTMLMeterElement(..), gTypeHTMLMeterElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.value Mozilla HTMLMeterElement.value documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/value MDN HTMLMeterElement.value documentation>
 setValue :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+setValue self val = liftDOM (void (self ^. jss "value" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.value Mozilla HTMLMeterElement.value documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/value MDN HTMLMeterElement.value documentation>
 getValue :: (MonadDOM m) => HTMLMeterElement -> m Double
-getValue self = liftDOM ((self ^. js "value") >>= valToNumber)
+getValue self = liftDOM (((self ^. js "value") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.min Mozilla HTMLMeterElement.min documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/min MDN HTMLMeterElement.min documentation>
 setMin :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
-setMin self val = liftDOM (self ^. jss "min" (toJSVal val))
+setMin self val = liftDOM (void (self ^. jss "min" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.min Mozilla HTMLMeterElement.min documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/min MDN HTMLMeterElement.min documentation>
 getMin :: (MonadDOM m) => HTMLMeterElement -> m Double
-getMin self = liftDOM ((self ^. js "min") >>= valToNumber)
+getMin self = liftDOM (((self ^. js "min") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.max Mozilla HTMLMeterElement.max documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/max MDN HTMLMeterElement.max documentation>
 setMax :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
-setMax self val = liftDOM (self ^. jss "max" (toJSVal val))
+setMax self val = liftDOM (void (self ^. jss "max" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.max Mozilla HTMLMeterElement.max documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/max MDN HTMLMeterElement.max documentation>
 getMax :: (MonadDOM m) => HTMLMeterElement -> m Double
-getMax self = liftDOM ((self ^. js "max") >>= valToNumber)
+getMax self = liftDOM (((self ^. js "max") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.low Mozilla HTMLMeterElement.low documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/low MDN HTMLMeterElement.low documentation>
 setLow :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
-setLow self val = liftDOM (self ^. jss "low" (toJSVal val))
+setLow self val = liftDOM (void (self ^. jss "low" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.low Mozilla HTMLMeterElement.low documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/low MDN HTMLMeterElement.low documentation>
 getLow :: (MonadDOM m) => HTMLMeterElement -> m Double
-getLow self = liftDOM ((self ^. js "low") >>= valToNumber)
+getLow self = liftDOM (((self ^. js "low") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.high Mozilla HTMLMeterElement.high documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/high MDN HTMLMeterElement.high documentation>
 setHigh :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
-setHigh self val = liftDOM (self ^. jss "high" (toJSVal val))
+setHigh self val = liftDOM (void (self ^. jss "high" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.high Mozilla HTMLMeterElement.high documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/high MDN HTMLMeterElement.high documentation>
 getHigh :: (MonadDOM m) => HTMLMeterElement -> m Double
-getHigh self = liftDOM ((self ^. js "high") >>= valToNumber)
+getHigh self = liftDOM (((self ^. js "high") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.optimum Mozilla HTMLMeterElement.optimum documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/optimum MDN HTMLMeterElement.optimum documentation>
 setOptimum :: (MonadDOM m) => HTMLMeterElement -> Double -> m ()
-setOptimum self val = liftDOM (self ^. jss "optimum" (toJSVal val))
+setOptimum self val = liftDOM (void (self ^. jss "optimum" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.optimum Mozilla HTMLMeterElement.optimum documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/optimum MDN HTMLMeterElement.optimum documentation>
 getOptimum :: (MonadDOM m) => HTMLMeterElement -> m Double
-getOptimum self = liftDOM ((self ^. js "optimum") >>= valToNumber)
+getOptimum self = liftDOM (((self ^. js "optimum") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.labels Mozilla HTMLMeterElement.labels documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLMeterElement/labels MDN HTMLMeterElement.labels documentation>
 getLabels :: (MonadDOM m) => HTMLMeterElement -> m NodeList
-getLabels self
-  = liftDOM ((self ^. js "labels") >>= fromJSValUnchecked)
+getLabels self = liftDOM (((self ^. js "labels") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLModElement.hs b/src/JSDOM/Generated/HTMLModElement.hs
--- a/src/JSDOM/Generated/HTMLModElement.hs
+++ b/src/JSDOM/Generated/HTMLModElement.hs
@@ -1,43 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLModElement
-       (setCite, getCite, setDateTime, getDateTime, HTMLModElement(..),
-        gTypeHTMLModElement)
+       (setCite, getCite, setDateTime, getDateTime, HTMLModElement(..), gTypeHTMLModElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.cite Mozilla HTMLModElement.cite documentation> 
-setCite ::
-        (MonadDOM m, ToJSString val) => HTMLModElement -> val -> m ()
-setCite self val = liftDOM (self ^. jss "cite" (toJSVal val))
+-- | <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 (self ^. jss "cite" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.cite Mozilla HTMLModElement.cite documentation> 
-getCite ::
-        (MonadDOM m, FromJSString result) => HTMLModElement -> m result
-getCite self = liftDOM ((self ^. js "cite") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLModElement/cite MDN HTMLModElement.cite documentation>
+getCite :: (MonadDOM m, FromJSString result) => HTMLModElement -> m result
+getCite self = liftDOM (((self ^. js "cite") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.dateTime Mozilla HTMLModElement.dateTime documentation> 
-setDateTime ::
-            (MonadDOM m, ToJSString val) => HTMLModElement -> val -> m ()
-setDateTime self val
-  = liftDOM (self ^. jss "dateTime" (toJSVal val))
+-- | <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 (self ^. jss "dateTime" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.dateTime Mozilla HTMLModElement.dateTime documentation> 
-getDateTime ::
-            (MonadDOM m, FromJSString result) => HTMLModElement -> m result
-getDateTime self
-  = liftDOM ((self ^. js "dateTime") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLModElement/dateTime MDN HTMLModElement.dateTime documentation>
+getDateTime :: (MonadDOM m, FromJSString result) => HTMLModElement -> m result
+getDateTime self = liftDOM (((self ^. js "dateTime") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLOListElement.hs b/src/JSDOM/Generated/HTMLOListElement.hs
--- a/src/JSDOM/Generated/HTMLOListElement.hs
+++ b/src/JSDOM/Generated/HTMLOListElement.hs
@@ -1,58 +1,48 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLOListElement
-       (setCompact, getCompact, setStart, getStart, setReversed,
-        getReversed, setType, getType, HTMLOListElement(..),
-        gTypeHTMLOListElement)
+       (setReversed, getReversed, setStart, getStart, setType, getType, setCompact, getCompact, HTMLOListElement(..), gTypeHTMLOListElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.compact Mozilla HTMLOListElement.compact documentation> 
-setCompact :: (MonadDOM m) => HTMLOListElement -> Bool -> m ()
-setCompact self val = liftDOM (self ^. jss "compact" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOListElement/reversed MDN HTMLOListElement.reversed documentation>
+setReversed :: (MonadDOM m) => HTMLOListElement -> Bool -> m ()
+setReversed self val = liftDOM (void (self ^. jss "reversed" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.compact Mozilla HTMLOListElement.compact documentation> 
-getCompact :: (MonadDOM m) => HTMLOListElement -> m Bool
-getCompact self = liftDOM ((self ^. js "compact") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOListElement/reversed MDN HTMLOListElement.reversed documentation>
+getReversed :: (MonadDOM m) => HTMLOListElement -> m Bool
+getReversed self = liftDOM (((self ^. js "reversed") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.start Mozilla HTMLOListElement.start documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOListElement/start MDN HTMLOListElement.start documentation>
 setStart :: (MonadDOM m) => HTMLOListElement -> Int -> m ()
-setStart self val = liftDOM (self ^. jss "start" (toJSVal val))
+setStart self val = liftDOM (void (self ^. jss "start" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.start Mozilla HTMLOListElement.start documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOListElement/start MDN HTMLOListElement.start documentation>
 getStart :: (MonadDOM m) => HTMLOListElement -> m Int
-getStart self
-  = liftDOM (round <$> ((self ^. js "start") >>= valToNumber))
+getStart self = liftDOM ((P.round <$> ((self ^. js "start") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.reversed Mozilla HTMLOListElement.reversed documentation> 
-setReversed :: (MonadDOM m) => HTMLOListElement -> Bool -> m ()
-setReversed self val
-  = liftDOM (self ^. jss "reversed" (toJSVal val))
+-- | <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 (self ^. jss "type" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.reversed Mozilla HTMLOListElement.reversed documentation> 
-getReversed :: (MonadDOM m) => HTMLOListElement -> m Bool
-getReversed self = liftDOM ((self ^. js "reversed") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOListElement/type MDN HTMLOListElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLOListElement -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.type Mozilla HTMLOListElement.type documentation> 
-setType ::
-        (MonadDOM m, ToJSString val) => HTMLOListElement -> val -> m ()
-setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOListElement/compact MDN HTMLOListElement.compact documentation>
+setCompact :: (MonadDOM m) => HTMLOListElement -> Bool -> m ()
+setCompact self val = liftDOM (void (self ^. jss "compact" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.type Mozilla HTMLOListElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => HTMLOListElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOListElement/compact MDN HTMLOListElement.compact documentation>
+getCompact :: (MonadDOM m) => HTMLOListElement -> m Bool
+getCompact self = liftDOM (((self ^. js "compact") >>= valToBool))
diff --git a/src/JSDOM/Generated/HTMLObjectElement.hs b/src/JSDOM/Generated/HTMLObjectElement.hs
--- a/src/JSDOM/Generated/HTMLObjectElement.hs
+++ b/src/JSDOM/Generated/HTMLObjectElement.hs
@@ -1,260 +1,228 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLObjectElement
-       (checkValidity, checkValidity_, reportValidity, reportValidity_,
-        setCustomValidity, getSVGDocument, getSVGDocument_, getForm,
-        setCode, getCode, setAlign, getAlign, setArchive, getArchive,
-        setBorder, getBorder, setCodeBase, getCodeBase, setCodeType,
-        getCodeType, setData, getData, setDeclare, getDeclare, setHeight,
-        getHeight, setHspace, getHspace, setName, getName, setStandby,
-        getStandby, setType, getType, setUseMap, getUseMap, setVspace,
-        getVspace, setWidth, getWidth, getWillValidate, getValidity,
-        getValidationMessage, getContentDocument, HTMLObjectElement(..),
-        gTypeHTMLObjectElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.checkValidity Mozilla HTMLObjectElement.checkValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/checkValidity MDN HTMLObjectElement.checkValidity documentation>
 checkValidity :: (MonadDOM m) => HTMLObjectElement -> m Bool
-checkValidity self
-  = liftDOM ((self ^. jsf "checkValidity" ()) >>= valToBool)
+checkValidity self = liftDOM (((self ^. jsf "checkValidity" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.checkValidity Mozilla HTMLObjectElement.checkValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/checkValidity MDN HTMLObjectElement.checkValidity documentation>
 checkValidity_ :: (MonadDOM m) => HTMLObjectElement -> m ()
-checkValidity_ self
-  = liftDOM (void (self ^. jsf "checkValidity" ()))
+checkValidity_ self = liftDOM (void (self ^. jsf "checkValidity" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.reportValidity Mozilla HTMLObjectElement.reportValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/getSVGDocument MDN HTMLObjectElement.getSVGDocument documentation>
+getSVGDocument :: (MonadDOM m) => HTMLObjectElement -> m (Maybe Document)
+getSVGDocument self = liftDOM (((self ^. jsf "getSVGDocument" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/getSVGDocument MDN HTMLObjectElement.getSVGDocument documentation>
+getSVGDocument_ :: (MonadDOM m) => HTMLObjectElement -> m ()
+getSVGDocument_ self = liftDOM (void (self ^. jsf "getSVGDocument" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/getSVGDocument MDN HTMLObjectElement.getSVGDocument documentation>
+getSVGDocumentUnsafe :: (MonadDOM m, HasCallStack) => HTMLObjectElement -> m Document
+getSVGDocumentUnsafe self = liftDOM ((((self ^. jsf "getSVGDocument" ()) >>= 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 (((self ^. jsf "getSVGDocument" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/reportValidity MDN HTMLObjectElement.reportValidity documentation>
 reportValidity :: (MonadDOM m) => HTMLObjectElement -> m Bool
-reportValidity self
-  = liftDOM ((self ^. jsf "reportValidity" ()) >>= valToBool)
+reportValidity self = liftDOM (((self ^. jsf "reportValidity" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.reportValidity Mozilla HTMLObjectElement.reportValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/reportValidity MDN HTMLObjectElement.reportValidity documentation>
 reportValidity_ :: (MonadDOM m) => HTMLObjectElement -> m ()
-reportValidity_ self
-  = liftDOM (void (self ^. jsf "reportValidity" ()))
+reportValidity_ self = liftDOM (void (self ^. jsf "reportValidity" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.setCustomValidity Mozilla HTMLObjectElement.setCustomValidity documentation> 
-setCustomValidity ::
-                  (MonadDOM m, ToJSString error) =>
-                    HTMLObjectElement -> error -> m ()
-setCustomValidity self error
-  = liftDOM (void (self ^. jsf "setCustomValidity" [toJSVal error]))
+-- | <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 (self ^. jsf "setCustomValidity" [toJSVal error]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.getSVGDocument Mozilla HTMLObjectElement.getSVGDocument documentation> 
-getSVGDocument :: (MonadDOM m) => HTMLObjectElement -> m Document
-getSVGDocument self
-  = liftDOM
-      ((self ^. jsf "getSVGDocument" ()) >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "data" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.getSVGDocument Mozilla HTMLObjectElement.getSVGDocument documentation> 
-getSVGDocument_ :: (MonadDOM m) => HTMLObjectElement -> m ()
-getSVGDocument_ self
-  = liftDOM (void (self ^. jsf "getSVGDocument" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/data MDN HTMLObjectElement.data documentation>
+getData :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.form Mozilla HTMLObjectElement.form documentation> 
-getForm :: (MonadDOM m) => HTMLObjectElement -> m HTMLFormElement
-getForm self = liftDOM ((self ^. js "form") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "type" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.code Mozilla HTMLObjectElement.code documentation> 
-setCode ::
-        (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setCode self val = liftDOM (self ^. jss "code" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/type MDN HTMLObjectElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.code Mozilla HTMLObjectElement.code documentation> 
-getCode ::
-        (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
-getCode self = liftDOM ((self ^. js "code") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.align Mozilla HTMLObjectElement.align documentation> 
-setAlign ::
-         (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/name MDN HTMLObjectElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.align Mozilla HTMLObjectElement.align documentation> 
-getAlign ::
-         (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/form MDN HTMLObjectElement.form documentation>
+getForm :: (MonadDOM m) => HTMLObjectElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.archive Mozilla HTMLObjectElement.archive documentation> 
-setArchive ::
-           (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setArchive self val = liftDOM (self ^. jss "archive" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/form MDN HTMLObjectElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLObjectElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((self ^. js "form") >>= 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> 
-getArchive ::
-           (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
-getArchive self
-  = liftDOM ((self ^. js "archive") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/form MDN HTMLObjectElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLObjectElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.border Mozilla HTMLObjectElement.border documentation> 
-setBorder ::
-          (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setBorder self val = liftDOM (self ^. jss "border" (toJSVal val))
+-- | <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 (self ^. jss "width" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.border Mozilla HTMLObjectElement.border documentation> 
-getBorder ::
-          (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
-getBorder self
-  = liftDOM ((self ^. js "border") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/width MDN HTMLObjectElement.width documentation>
+getWidth :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.codeBase Mozilla HTMLObjectElement.codeBase documentation> 
-setCodeBase ::
-            (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setCodeBase self val
-  = liftDOM (self ^. jss "codeBase" (toJSVal val))
+-- | <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 (self ^. jss "height" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.codeBase Mozilla HTMLObjectElement.codeBase documentation> 
-getCodeBase ::
-            (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
-getCodeBase self
-  = liftDOM ((self ^. js "codeBase") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/height MDN HTMLObjectElement.height documentation>
+getHeight :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.codeType Mozilla HTMLObjectElement.codeType documentation> 
-setCodeType ::
-            (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setCodeType self val
-  = liftDOM (self ^. jss "codeType" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/contentDocument MDN HTMLObjectElement.contentDocument documentation>
+getContentDocument :: (MonadDOM m) => HTMLObjectElement -> m (Maybe Document)
+getContentDocument self = liftDOM (((self ^. js "contentDocument") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.codeType Mozilla HTMLObjectElement.codeType documentation> 
-getCodeType ::
-            (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
-getCodeType self
-  = liftDOM ((self ^. js "codeType") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/contentDocument MDN HTMLObjectElement.contentDocument documentation>
+getContentDocumentUnsafe :: (MonadDOM m, HasCallStack) => HTMLObjectElement -> m Document
+getContentDocumentUnsafe self = liftDOM ((((self ^. js "contentDocument") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.data Mozilla HTMLObjectElement.data documentation> 
-setData ::
-        (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setData self val = liftDOM (self ^. jss "data" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/contentDocument MDN HTMLObjectElement.contentDocument documentation>
+getContentDocumentUnchecked :: (MonadDOM m) => HTMLObjectElement -> m Document
+getContentDocumentUnchecked self = liftDOM (((self ^. js "contentDocument") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.data Mozilla HTMLObjectElement.data documentation> 
-getData ::
-        (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
-getData self = liftDOM ((self ^. js "data") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/contentWindow MDN HTMLObjectElement.contentWindow documentation>
+getContentWindow :: (MonadDOM m) => HTMLObjectElement -> m (Maybe Window)
+getContentWindow self = liftDOM (((self ^. js "contentWindow") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.declare Mozilla HTMLObjectElement.declare documentation> 
-setDeclare :: (MonadDOM m) => HTMLObjectElement -> Bool -> m ()
-setDeclare self val = liftDOM (self ^. jss "declare" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/contentWindow MDN HTMLObjectElement.contentWindow documentation>
+getContentWindowUnsafe :: (MonadDOM m, HasCallStack) => HTMLObjectElement -> m Window
+getContentWindowUnsafe self = liftDOM ((((self ^. js "contentWindow") >>= 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> 
-getDeclare :: (MonadDOM m) => HTMLObjectElement -> m Bool
-getDeclare self = liftDOM ((self ^. js "declare") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/contentWindow MDN HTMLObjectElement.contentWindow documentation>
+getContentWindowUnchecked :: (MonadDOM m) => HTMLObjectElement -> m Window
+getContentWindowUnchecked self = liftDOM (((self ^. js "contentWindow") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.height Mozilla HTMLObjectElement.height documentation> 
-setHeight ::
-          (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/willValidate MDN HTMLObjectElement.willValidate documentation>
+getWillValidate :: (MonadDOM m) => HTMLObjectElement -> m Bool
+getWillValidate self = liftDOM (((self ^. js "willValidate") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.height Mozilla HTMLObjectElement.height documentation> 
-getHeight ::
-          (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
-getHeight self
-  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/validity MDN HTMLObjectElement.validity documentation>
+getValidity :: (MonadDOM m) => HTMLObjectElement -> m ValidityState
+getValidity self = liftDOM (((self ^. js "validity") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.hspace Mozilla HTMLObjectElement.hspace documentation> 
-setHspace :: (MonadDOM m) => HTMLObjectElement -> Word -> m ()
-setHspace self val = liftDOM (self ^. jss "hspace" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/validationMessage MDN HTMLObjectElement.validationMessage documentation>
+getValidationMessage :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getValidationMessage self = liftDOM (((self ^. js "validationMessage") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.hspace Mozilla HTMLObjectElement.hspace documentation> 
-getHspace :: (MonadDOM m) => HTMLObjectElement -> m Word
-getHspace self
-  = liftDOM (round <$> ((self ^. js "hspace") >>= valToNumber))
+-- | <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 (self ^. jss "align" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.name Mozilla HTMLObjectElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <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 (((self ^. js "align") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.name Mozilla HTMLObjectElement.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "archive" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.standby Mozilla HTMLObjectElement.standby documentation> 
-setStandby ::
-           (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setStandby self val = liftDOM (self ^. jss "standby" (toJSVal val))
+-- | <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 (((self ^. js "archive") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.standby Mozilla HTMLObjectElement.standby documentation> 
-getStandby ::
-           (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
-getStandby self
-  = liftDOM ((self ^. js "standby") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "code" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.type Mozilla HTMLObjectElement.type documentation> 
-setType ::
-        (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+-- | <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 (((self ^. js "code") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.type Mozilla HTMLObjectElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "declare" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.useMap Mozilla HTMLObjectElement.useMap documentation> 
-setUseMap ::
-          (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setUseMap self val = liftDOM (self ^. jss "useMap" (toJSVal val))
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-declare HTMLObjectElement.declare specification>
+getDeclare :: (MonadDOM m) => HTMLObjectElement -> m Bool
+getDeclare self = liftDOM (((self ^. js "declare") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.useMap Mozilla HTMLObjectElement.useMap documentation> 
-getUseMap ::
-          (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
-getUseMap self
-  = liftDOM ((self ^. js "useMap") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "hspace" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.vspace Mozilla HTMLObjectElement.vspace documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-hspace HTMLObjectElement.hspace specification>
+getHspace :: (MonadDOM m) => HTMLObjectElement -> m Word
+getHspace self = liftDOM ((P.round <$> ((self ^. js "hspace") >>= valToNumber)))
+
+-- | <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 (self ^. jss "standby" (toJSVal val)))
+
+-- | <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 (((self ^. js "standby") >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-vspace HTMLObjectElement.vspace specification>
 setVspace :: (MonadDOM m) => HTMLObjectElement -> Word -> m ()
-setVspace self val = liftDOM (self ^. jss "vspace" (toJSVal val))
+setVspace self val = liftDOM (void (self ^. jss "vspace" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.vspace Mozilla HTMLObjectElement.vspace documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-object-vspace HTMLObjectElement.vspace specification>
 getVspace :: (MonadDOM m) => HTMLObjectElement -> m Word
-getVspace self
-  = liftDOM (round <$> ((self ^. js "vspace") >>= valToNumber))
+getVspace self = liftDOM ((P.round <$> ((self ^. js "vspace") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.width Mozilla HTMLObjectElement.width documentation> 
-setWidth ::
-         (MonadDOM m, ToJSString val) => HTMLObjectElement -> val -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+-- | <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 (self ^. jss "codeBase" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.width Mozilla HTMLObjectElement.width documentation> 
-getWidth ::
-         (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
-getWidth self
-  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "codeBase") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.willValidate Mozilla HTMLObjectElement.willValidate documentation> 
-getWillValidate :: (MonadDOM m) => HTMLObjectElement -> m Bool
-getWillValidate self
-  = liftDOM ((self ^. js "willValidate") >>= valToBool)
+-- | <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 (self ^. jss "codeType" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.validity Mozilla HTMLObjectElement.validity documentation> 
-getValidity :: (MonadDOM m) => HTMLObjectElement -> m ValidityState
-getValidity self
-  = liftDOM ((self ^. js "validity") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "codeType") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.validationMessage Mozilla HTMLObjectElement.validationMessage documentation> 
-getValidationMessage ::
-                     (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
-getValidationMessage self
-  = liftDOM ((self ^. js "validationMessage") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "useMap" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.contentDocument Mozilla HTMLObjectElement.contentDocument documentation> 
-getContentDocument ::
-                   (MonadDOM m) => HTMLObjectElement -> m Document
-getContentDocument self
-  = liftDOM ((self ^. js "contentDocument") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLObjectElement/useMap MDN HTMLObjectElement.useMap documentation>
+getUseMap :: (MonadDOM m, FromJSString result) => HTMLObjectElement -> m result
+getUseMap self = liftDOM (((self ^. js "useMap") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "border" (toJSVal val)))
+
+-- | <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 (((self ^. js "border") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLOptGroupElement.hs b/src/JSDOM/Generated/HTMLOptGroupElement.hs
--- a/src/JSDOM/Generated/HTMLOptGroupElement.hs
+++ b/src/JSDOM/Generated/HTMLOptGroupElement.hs
@@ -1,42 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLOptGroupElement
-       (setDisabled, getDisabled, setLabel, getLabel,
-        HTMLOptGroupElement(..), gTypeHTMLOptGroupElement)
+       (setDisabled, getDisabled, setLabel, getLabel, HTMLOptGroupElement(..), gTypeHTMLOptGroupElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.disabled Mozilla HTMLOptGroupElement.disabled documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptGroupElement/disabled MDN HTMLOptGroupElement.disabled documentation>
 setDisabled :: (MonadDOM m) => HTMLOptGroupElement -> Bool -> m ()
-setDisabled self val
-  = liftDOM (self ^. jss "disabled" (toJSVal val))
+setDisabled self val = liftDOM (void (self ^. jss "disabled" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.disabled Mozilla HTMLOptGroupElement.disabled documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptGroupElement/disabled MDN HTMLOptGroupElement.disabled documentation>
 getDisabled :: (MonadDOM m) => HTMLOptGroupElement -> m Bool
-getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+getDisabled self = liftDOM (((self ^. js "disabled") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.label Mozilla HTMLOptGroupElement.label documentation> 
-setLabel ::
-         (MonadDOM m, ToJSString val) => HTMLOptGroupElement -> val -> m ()
-setLabel self val = liftDOM (self ^. jss "label" (toJSVal val))
+-- | <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 (self ^. jss "label" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.label Mozilla HTMLOptGroupElement.label documentation> 
-getLabel ::
-         (MonadDOM m, FromJSString result) =>
-           HTMLOptGroupElement -> m result
-getLabel self
-  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptGroupElement/label MDN HTMLOptGroupElement.label documentation>
+getLabel :: (MonadDOM m, FromJSString result) => HTMLOptGroupElement -> m result
+getLabel self = liftDOM (((self ^. js "label") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLOptionElement.hs b/src/JSDOM/Generated/HTMLOptionElement.hs
--- a/src/JSDOM/Generated/HTMLOptionElement.hs
+++ b/src/JSDOM/Generated/HTMLOptionElement.hs
@@ -1,93 +1,80 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLOptionElement
-       (setDisabled, getDisabled, getForm, setLabel, getLabel,
-        setDefaultSelected, getDefaultSelected, setSelected, getSelected,
-        setValue, getValue, setText, getText, getIndex,
-        HTMLOptionElement(..), gTypeHTMLOptionElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.disabled Mozilla HTMLOptionElement.disabled documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/disabled MDN HTMLOptionElement.disabled documentation>
 setDisabled :: (MonadDOM m) => HTMLOptionElement -> Bool -> m ()
-setDisabled self val
-  = liftDOM (self ^. jss "disabled" (toJSVal val))
+setDisabled self val = liftDOM (void (self ^. jss "disabled" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.disabled Mozilla HTMLOptionElement.disabled documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/disabled MDN HTMLOptionElement.disabled documentation>
 getDisabled :: (MonadDOM m) => HTMLOptionElement -> m Bool
-getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+getDisabled self = liftDOM (((self ^. js "disabled") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.form Mozilla HTMLOptionElement.form documentation> 
-getForm :: (MonadDOM m) => HTMLOptionElement -> m HTMLFormElement
-getForm self = liftDOM ((self ^. js "form") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/form MDN HTMLOptionElement.form documentation>
+getForm :: (MonadDOM m) => HTMLOptionElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.label Mozilla HTMLOptionElement.label documentation> 
-setLabel ::
-         (MonadDOM m, ToJSString val) => HTMLOptionElement -> val -> m ()
-setLabel self val = liftDOM (self ^. jss "label" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/form MDN HTMLOptionElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLOptionElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((self ^. js "form") >>= 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> 
-getLabel ::
-         (MonadDOM m, FromJSString result) => HTMLOptionElement -> m result
-getLabel self
-  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/form MDN HTMLOptionElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLOptionElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.defaultSelected Mozilla HTMLOptionElement.defaultSelected documentation> 
-setDefaultSelected ::
-                   (MonadDOM m) => HTMLOptionElement -> Bool -> m ()
-setDefaultSelected self val
-  = liftDOM (self ^. jss "defaultSelected" (toJSVal val))
+-- | <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 (self ^. jss "label" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.defaultSelected Mozilla HTMLOptionElement.defaultSelected documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/label MDN HTMLOptionElement.label documentation>
+getLabel :: (MonadDOM m, FromJSString result) => HTMLOptionElement -> m result
+getLabel self = liftDOM (((self ^. js "label") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/defaultSelected MDN HTMLOptionElement.defaultSelected documentation>
+setDefaultSelected :: (MonadDOM m) => HTMLOptionElement -> Bool -> m ()
+setDefaultSelected self val = liftDOM (void (self ^. jss "defaultSelected" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/defaultSelected MDN HTMLOptionElement.defaultSelected documentation>
 getDefaultSelected :: (MonadDOM m) => HTMLOptionElement -> m Bool
-getDefaultSelected self
-  = liftDOM ((self ^. js "defaultSelected") >>= valToBool)
+getDefaultSelected self = liftDOM (((self ^. js "defaultSelected") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.selected Mozilla HTMLOptionElement.selected documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/selected MDN HTMLOptionElement.selected documentation>
 setSelected :: (MonadDOM m) => HTMLOptionElement -> Bool -> m ()
-setSelected self val
-  = liftDOM (self ^. jss "selected" (toJSVal val))
+setSelected self val = liftDOM (void (self ^. jss "selected" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.selected Mozilla HTMLOptionElement.selected documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/selected MDN HTMLOptionElement.selected documentation>
 getSelected :: (MonadDOM m) => HTMLOptionElement -> m Bool
-getSelected self = liftDOM ((self ^. js "selected") >>= valToBool)
+getSelected self = liftDOM (((self ^. js "selected") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.value Mozilla HTMLOptionElement.value documentation> 
-setValue ::
-         (MonadDOM m, ToJSString val) => HTMLOptionElement -> val -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+-- | <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 (self ^. jss "value" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.value Mozilla HTMLOptionElement.value documentation> 
-getValue ::
-         (MonadDOM m, FromJSString result) => HTMLOptionElement -> m result
-getValue self
-  = liftDOM ((self ^. js "value") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/value MDN HTMLOptionElement.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => HTMLOptionElement -> m result
+getValue self = liftDOM (((self ^. js "value") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.text Mozilla HTMLOptionElement.text documentation> 
-setText ::
-        (MonadDOM m, ToJSString val) => HTMLOptionElement -> val -> m ()
-setText self val = liftDOM (self ^. jss "text" (toJSVal val))
+-- | <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 (self ^. jss "text" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.text Mozilla HTMLOptionElement.text documentation> 
-getText ::
-        (MonadDOM m, FromJSString result) => HTMLOptionElement -> m result
-getText self = liftDOM ((self ^. js "text") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/text MDN HTMLOptionElement.text documentation>
+getText :: (MonadDOM m, FromJSString result) => HTMLOptionElement -> m result
+getText self = liftDOM (((self ^. js "text") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.index Mozilla HTMLOptionElement.index documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionElement/index MDN HTMLOptionElement.index documentation>
 getIndex :: (MonadDOM m) => HTMLOptionElement -> m Int
-getIndex self
-  = liftDOM (round <$> ((self ^. js "index") >>= valToNumber))
+getIndex self = liftDOM ((P.round <$> ((self ^. js "index") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/HTMLOptionsCollection.hs b/src/JSDOM/Generated/HTMLOptionsCollection.hs
--- a/src/JSDOM/Generated/HTMLOptionsCollection.hs
+++ b/src/JSDOM/Generated/HTMLOptionsCollection.hs
@@ -1,115 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLOptionsCollection
-       (addBefore, remove, item, item_, itemUnsafe, itemUnchecked,
-        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
-        setLength, getLength, setSelectedIndex, getSelectedIndex,
-        HTMLOptionsCollection(..), gTypeHTMLOptionsCollection)
+       (add, remove, setLength, getLength, setSelectedIndex, getSelectedIndex, HTMLOptionsCollection(..), gTypeHTMLOptionsCollection)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.add Mozilla HTMLOptionsCollection.add documentation> 
-addBefore ::
-          (MonadDOM m, IsHTMLOptionElementOrGroup element,
-           IsHTMLElementOrLong before) =>
-            HTMLOptionsCollection -> element -> Maybe before -> m ()
-addBefore self element before
-  = liftDOM
-      (void (self ^. jsf "add" [toJSVal element, toJSVal before]))
+-- | <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 (self ^. jsf "add" [toJSVal element, toJSVal before]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.remove Mozilla HTMLOptionsCollection.remove documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionsCollection/remove MDN HTMLOptionsCollection.remove documentation>
 remove :: (MonadDOM m) => HTMLOptionsCollection -> Int -> m ()
-remove self index
-  = liftDOM (void (self ^. jsf "remove" [toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.item Mozilla HTMLOptionsCollection.item documentation> 
-item ::
-     (MonadDOM m) =>
-       HTMLOptionsCollection -> Word -> m (Maybe HTMLOptionElement)
-item self index
-  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.item Mozilla HTMLOptionsCollection.item documentation> 
-item_ :: (MonadDOM m) => HTMLOptionsCollection -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.item Mozilla HTMLOptionsCollection.item documentation> 
-itemUnsafe ::
-           (MonadDOM m, HasCallStack) =>
-             HTMLOptionsCollection -> Word -> m HTMLOptionElement
-itemUnsafe self index
-  = liftDOM
-      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.item Mozilla HTMLOptionsCollection.item documentation> 
-itemUnchecked ::
-              (MonadDOM m) =>
-                HTMLOptionsCollection -> Word -> m HTMLOptionElement
-itemUnchecked self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.namedItem Mozilla HTMLOptionsCollection.namedItem documentation> 
-namedItem ::
-          (MonadDOM m, ToJSString name) =>
-            HTMLOptionsCollection -> name -> m (Maybe HTMLOptionElement)
-namedItem self name = liftDOM ((self ! name) >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.namedItem Mozilla HTMLOptionsCollection.namedItem documentation> 
-namedItem_ ::
-           (MonadDOM m, ToJSString name) =>
-             HTMLOptionsCollection -> name -> m ()
-namedItem_ self name = liftDOM (void (self ! name))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.namedItem Mozilla HTMLOptionsCollection.namedItem documentation> 
-namedItemUnsafe ::
-                (MonadDOM m, ToJSString name, HasCallStack) =>
-                  HTMLOptionsCollection -> name -> m HTMLOptionElement
-namedItemUnsafe self name
-  = liftDOM
-      (((self ! name) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.namedItem Mozilla HTMLOptionsCollection.namedItem documentation> 
-namedItemUnchecked ::
-                   (MonadDOM m, ToJSString name) =>
-                     HTMLOptionsCollection -> name -> m HTMLOptionElement
-namedItemUnchecked self name
-  = liftDOM ((self ! name) >>= fromJSValUnchecked)
+remove self index = liftDOM (void (self ^. jsf "remove" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.length Mozilla HTMLOptionsCollection.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionsCollection/length MDN HTMLOptionsCollection.length documentation>
 setLength :: (MonadDOM m) => HTMLOptionsCollection -> Word -> m ()
-setLength self val = liftDOM (self ^. jss "length" (toJSVal val))
+setLength self val = liftDOM (void (self ^. jss "length" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.length Mozilla HTMLOptionsCollection.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionsCollection/length MDN HTMLOptionsCollection.length documentation>
 getLength :: (MonadDOM m) => HTMLOptionsCollection -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.selectedIndex Mozilla HTMLOptionsCollection.selectedIndex documentation> 
-setSelectedIndex ::
-                 (MonadDOM m) => HTMLOptionsCollection -> Int -> m ()
-setSelectedIndex self val
-  = liftDOM (self ^. jss "selectedIndex" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionsCollection/selectedIndex MDN HTMLOptionsCollection.selectedIndex documentation>
+setSelectedIndex :: (MonadDOM m) => HTMLOptionsCollection -> Int -> m ()
+setSelectedIndex self val = liftDOM (void (self ^. jss "selectedIndex" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.selectedIndex Mozilla HTMLOptionsCollection.selectedIndex documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOptionsCollection/selectedIndex MDN HTMLOptionsCollection.selectedIndex documentation>
 getSelectedIndex :: (MonadDOM m) => HTMLOptionsCollection -> m Int
-getSelectedIndex self
-  = liftDOM
-      (round <$> ((self ^. js "selectedIndex") >>= valToNumber))
+getSelectedIndex self = liftDOM ((P.round <$> ((self ^. js "selectedIndex") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/HTMLOrSVGOrMathMLElement.hs b/src/JSDOM/Generated/HTMLOrSVGOrMathMLElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/HTMLOrSVGOrMathMLElement.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.HTMLOrSVGOrMathMLElement
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/blur MDN HTMLOrSVGOrMathMLElement.blur documentation>
+blur :: (MonadDOM m, IsHTMLOrSVGOrMathMLElement self) => self -> m ()
+blur self = liftDOM (void ((Types.toHTMLOrSVGOrMathMLElement self) ^. jsf "blur" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/focus MDN HTMLOrSVGOrMathMLElement.focus documentation>
+focus :: (MonadDOM m, IsHTMLOrSVGOrMathMLElement self) => self -> m ()
+focus self = liftDOM (void ((Types.toHTMLOrSVGOrMathMLElement self) ^. jsf "focus" ()))
+
+-- | <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 ((Types.toHTMLOrSVGOrMathMLElement self) ^. jsf "focus" [P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/dataset MDN HTMLOrSVGOrMathMLElement.dataset documentation>
+getDataset :: (MonadDOM m, IsHTMLOrSVGOrMathMLElement self) => self -> m DOMStringMap
+getDataset self = liftDOM ((((Types.toHTMLOrSVGOrMathMLElement self) ^. js "dataset") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toHTMLOrSVGOrMathMLElement self) ^. jss "nonce" (toJSVal val)))
+
+-- | <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 ((((Types.toHTMLOrSVGOrMathMLElement self) ^. js "nonce") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toHTMLOrSVGOrMathMLElement self) ^. jss "autofocus" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/autofocus MDN HTMLOrSVGOrMathMLElement.autofocus documentation>
+getAutofocus :: (MonadDOM m, IsHTMLOrSVGOrMathMLElement self) => self -> m Bool
+getAutofocus self = liftDOM ((((Types.toHTMLOrSVGOrMathMLElement self) ^. js "autofocus") >>= valToBool))
+
+-- | <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 ((Types.toHTMLOrSVGOrMathMLElement self) ^. jss "tabIndex" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLElement/tabIndex MDN HTMLOrSVGOrMathMLElement.tabIndex documentation>
+getTabIndex :: (MonadDOM m, IsHTMLOrSVGOrMathMLElement self) => self -> m Int
+getTabIndex self = liftDOM ((P.round <$> (((Types.toHTMLOrSVGOrMathMLElement self) ^. js "tabIndex") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/HTMLOutputElement.hs b/src/JSDOM/Generated/HTMLOutputElement.hs
--- a/src/JSDOM/Generated/HTMLOutputElement.hs
+++ b/src/JSDOM/Generated/HTMLOutputElement.hs
@@ -1,119 +1,96 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLOutputElement
-       (checkValidity, checkValidity_, reportValidity, reportValidity_,
-        setCustomValidity, getHtmlFor, getForm, setName, getName, getType,
-        setDefaultValue, getDefaultValue, setValue, getValue,
-        getWillValidate, getValidity, getValidationMessage, getLabels,
-        HTMLOutputElement(..), gTypeHTMLOutputElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.checkValidity Mozilla HTMLOutputElement.checkValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/checkValidity MDN HTMLOutputElement.checkValidity documentation>
 checkValidity :: (MonadDOM m) => HTMLOutputElement -> m Bool
-checkValidity self
-  = liftDOM ((self ^. jsf "checkValidity" ()) >>= valToBool)
+checkValidity self = liftDOM (((self ^. jsf "checkValidity" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.checkValidity Mozilla HTMLOutputElement.checkValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/checkValidity MDN HTMLOutputElement.checkValidity documentation>
 checkValidity_ :: (MonadDOM m) => HTMLOutputElement -> m ()
-checkValidity_ self
-  = liftDOM (void (self ^. jsf "checkValidity" ()))
+checkValidity_ self = liftDOM (void (self ^. jsf "checkValidity" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.reportValidity Mozilla HTMLOutputElement.reportValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/reportValidity MDN HTMLOutputElement.reportValidity documentation>
 reportValidity :: (MonadDOM m) => HTMLOutputElement -> m Bool
-reportValidity self
-  = liftDOM ((self ^. jsf "reportValidity" ()) >>= valToBool)
+reportValidity self = liftDOM (((self ^. jsf "reportValidity" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.reportValidity Mozilla HTMLOutputElement.reportValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/reportValidity MDN HTMLOutputElement.reportValidity documentation>
 reportValidity_ :: (MonadDOM m) => HTMLOutputElement -> m ()
-reportValidity_ self
-  = liftDOM (void (self ^. jsf "reportValidity" ()))
+reportValidity_ self = liftDOM (void (self ^. jsf "reportValidity" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.setCustomValidity Mozilla HTMLOutputElement.setCustomValidity documentation> 
-setCustomValidity ::
-                  (MonadDOM m, ToJSString error) =>
-                    HTMLOutputElement -> error -> m ()
-setCustomValidity self error
-  = liftDOM (void (self ^. jsf "setCustomValidity" [toJSVal error]))
+-- | <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 (self ^. jsf "setCustomValidity" [toJSVal error]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.htmlFor Mozilla HTMLOutputElement.htmlFor documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/htmlFor MDN HTMLOutputElement.htmlFor documentation>
 getHtmlFor :: (MonadDOM m) => HTMLOutputElement -> m DOMTokenList
-getHtmlFor self
-  = liftDOM ((self ^. js "htmlFor") >>= fromJSValUnchecked)
+getHtmlFor self = liftDOM (((self ^. js "htmlFor") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.form Mozilla HTMLOutputElement.form documentation> 
-getForm :: (MonadDOM m) => HTMLOutputElement -> m HTMLFormElement
-getForm self = liftDOM ((self ^. js "form") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/form MDN HTMLOutputElement.form documentation>
+getForm :: (MonadDOM m) => HTMLOutputElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.name Mozilla HTMLOutputElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLOutputElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/form MDN HTMLOutputElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLOutputElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((self ^. js "form") >>= 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> 
-getName ::
-        (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/form MDN HTMLOutputElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLOutputElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.type Mozilla HTMLOutputElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.defaultValue Mozilla HTMLOutputElement.defaultValue documentation> 
-setDefaultValue ::
-                (MonadDOM m, ToJSString val) => HTMLOutputElement -> val -> m ()
-setDefaultValue self val
-  = liftDOM (self ^. jss "defaultValue" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/name MDN HTMLOutputElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.defaultValue Mozilla HTMLOutputElement.defaultValue documentation> 
-getDefaultValue ::
-                (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
-getDefaultValue self
-  = liftDOM ((self ^. js "defaultValue") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/type MDN HTMLOutputElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.value Mozilla HTMLOutputElement.value documentation> 
-setValue ::
-         (MonadDOM m, ToJSString val) => HTMLOutputElement -> val -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+-- | <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 (self ^. jss "defaultValue" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.value Mozilla HTMLOutputElement.value documentation> 
-getValue ::
-         (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
-getValue self
-  = liftDOM ((self ^. js "value") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/defaultValue MDN HTMLOutputElement.defaultValue documentation>
+getDefaultValue :: (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
+getDefaultValue self = liftDOM (((self ^. js "defaultValue") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.willValidate Mozilla HTMLOutputElement.willValidate documentation> 
+-- | <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 (self ^. jss "value" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/value MDN HTMLOutputElement.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
+getValue self = liftDOM (((self ^. js "value") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/willValidate MDN HTMLOutputElement.willValidate documentation>
 getWillValidate :: (MonadDOM m) => HTMLOutputElement -> m Bool
-getWillValidate self
-  = liftDOM ((self ^. js "willValidate") >>= valToBool)
+getWillValidate self = liftDOM (((self ^. js "willValidate") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.validity Mozilla HTMLOutputElement.validity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/validity MDN HTMLOutputElement.validity documentation>
 getValidity :: (MonadDOM m) => HTMLOutputElement -> m ValidityState
-getValidity self
-  = liftDOM ((self ^. js "validity") >>= fromJSValUnchecked)
+getValidity self = liftDOM (((self ^. js "validity") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.validationMessage Mozilla HTMLOutputElement.validationMessage documentation> 
-getValidationMessage ::
-                     (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
-getValidationMessage self
-  = liftDOM ((self ^. js "validationMessage") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/validationMessage MDN HTMLOutputElement.validationMessage documentation>
+getValidationMessage :: (MonadDOM m, FromJSString result) => HTMLOutputElement -> m result
+getValidationMessage self = liftDOM (((self ^. js "validationMessage") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.labels Mozilla HTMLOutputElement.labels documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLOutputElement/labels MDN HTMLOutputElement.labels documentation>
 getLabels :: (MonadDOM m) => HTMLOutputElement -> m NodeList
-getLabels self
-  = liftDOM ((self ^. js "labels") >>= fromJSValUnchecked)
+getLabels self = liftDOM (((self ^. js "labels") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLParagraphElement.hs b/src/JSDOM/Generated/HTMLParagraphElement.hs
--- a/src/JSDOM/Generated/HTMLParagraphElement.hs
+++ b/src/JSDOM/Generated/HTMLParagraphElement.hs
@@ -1,33 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLParagraphElement
-       (setAlign, getAlign, HTMLParagraphElement(..),
-        gTypeHTMLParagraphElement)
+       (setAlign, getAlign, HTMLParagraphElement(..), gTypeHTMLParagraphElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParagraphElement.align Mozilla HTMLParagraphElement.align documentation> 
-setAlign ::
-         (MonadDOM m, ToJSString val) => HTMLParagraphElement -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+-- | <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 (self ^. jss "align" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParagraphElement.align Mozilla HTMLParagraphElement.align documentation> 
-getAlign ::
-         (MonadDOM m, FromJSString result) =>
-           HTMLParagraphElement -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "align") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLParamElement.hs b/src/JSDOM/Generated/HTMLParamElement.hs
--- a/src/JSDOM/Generated/HTMLParamElement.hs
+++ b/src/JSDOM/Generated/HTMLParamElement.hs
@@ -1,65 +1,48 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLParamElement
-       (setName, getName, setType, getType, setValue, getValue,
-        setValueType, getValueType, HTMLParamElement(..),
-        gTypeHTMLParamElement)
+       (setName, getName, setValue, getValue, setType, getType, setValueType, getValueType, HTMLParamElement(..), gTypeHTMLParamElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.name Mozilla HTMLParamElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLParamElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <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 (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.name Mozilla HTMLParamElement.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => HTMLParamElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.type Mozilla HTMLParamElement.type documentation> 
-setType ::
-        (MonadDOM m, ToJSString val) => HTMLParamElement -> val -> m ()
-setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+-- | <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 (self ^. jss "value" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.type Mozilla HTMLParamElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => HTMLParamElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "value") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.value Mozilla HTMLParamElement.value documentation> 
-setValue ::
-         (MonadDOM m, ToJSString val) => HTMLParamElement -> val -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+-- | <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 (self ^. jss "type" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.value Mozilla HTMLParamElement.value documentation> 
-getValue ::
-         (MonadDOM m, FromJSString result) => HTMLParamElement -> m result
-getValue self
-  = liftDOM ((self ^. js "value") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.valueType Mozilla HTMLParamElement.valueType documentation> 
-setValueType ::
-             (MonadDOM m, ToJSString val) => HTMLParamElement -> val -> m ()
-setValueType self val
-  = liftDOM (self ^. jss "valueType" (toJSVal val))
+-- | <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 (self ^. jss "valueType" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.valueType Mozilla HTMLParamElement.valueType documentation> 
-getValueType ::
-             (MonadDOM m, FromJSString result) => HTMLParamElement -> m result
-getValueType self
-  = liftDOM ((self ^. js "valueType") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "valueType") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLPictureElement.hs b/src/JSDOM/Generated/HTMLPictureElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/HTMLPictureElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.HTMLPictureElement
+       (HTMLPictureElement(..), gTypeHTMLPictureElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/HTMLPreElement.hs b/src/JSDOM/Generated/HTMLPreElement.hs
--- a/src/JSDOM/Generated/HTMLPreElement.hs
+++ b/src/JSDOM/Generated/HTMLPreElement.hs
@@ -1,38 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLPreElement
-       (setWidth, getWidth, setWrap, getWrap, HTMLPreElement(..),
-        gTypeHTMLPreElement)
+       (setWidth, getWidth, HTMLPreElement(..), gTypeHTMLPreElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.width Mozilla HTMLPreElement.width documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-pre-width HTMLPreElement.width specification>
 setWidth :: (MonadDOM m) => HTMLPreElement -> Int -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.width Mozilla HTMLPreElement.width documentation> 
+-- | <https://html.spec.whatwg.org/multipage/obsolete.html#dom-pre-width HTMLPreElement.width specification>
 getWidth :: (MonadDOM m) => HTMLPreElement -> m Int
-getWidth self
-  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.wrap Mozilla HTMLPreElement.wrap documentation> 
-setWrap :: (MonadDOM m) => HTMLPreElement -> Bool -> m ()
-setWrap self val = liftDOM (self ^. jss "wrap" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.wrap Mozilla HTMLPreElement.wrap documentation> 
-getWrap :: (MonadDOM m) => HTMLPreElement -> m Bool
-getWrap self = liftDOM ((self ^. js "wrap") >>= valToBool)
+getWidth self = liftDOM ((P.round <$> ((self ^. js "width") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/HTMLProgressElement.hs b/src/JSDOM/Generated/HTMLProgressElement.hs
--- a/src/JSDOM/Generated/HTMLProgressElement.hs
+++ b/src/JSDOM/Generated/HTMLProgressElement.hs
@@ -1,47 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLProgressElement
-       (setValue, getValue, setMax, getMax, getPosition, getLabels,
-        HTMLProgressElement(..), gTypeHTMLProgressElement)
+       (setValue, getValue, setMax, getMax, getPosition, getLabels, HTMLProgressElement(..), gTypeHTMLProgressElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.value Mozilla HTMLProgressElement.value documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLProgressElement/value MDN HTMLProgressElement.value documentation>
 setValue :: (MonadDOM m) => HTMLProgressElement -> Double -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+setValue self val = liftDOM (void (self ^. jss "value" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.value Mozilla HTMLProgressElement.value documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLProgressElement/value MDN HTMLProgressElement.value documentation>
 getValue :: (MonadDOM m) => HTMLProgressElement -> m Double
-getValue self = liftDOM ((self ^. js "value") >>= valToNumber)
+getValue self = liftDOM (((self ^. js "value") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.max Mozilla HTMLProgressElement.max documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLProgressElement/max MDN HTMLProgressElement.max documentation>
 setMax :: (MonadDOM m) => HTMLProgressElement -> Double -> m ()
-setMax self val = liftDOM (self ^. jss "max" (toJSVal val))
+setMax self val = liftDOM (void (self ^. jss "max" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.max Mozilla HTMLProgressElement.max documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLProgressElement/max MDN HTMLProgressElement.max documentation>
 getMax :: (MonadDOM m) => HTMLProgressElement -> m Double
-getMax self = liftDOM ((self ^. js "max") >>= valToNumber)
+getMax self = liftDOM (((self ^. js "max") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.position Mozilla HTMLProgressElement.position documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLProgressElement/position MDN HTMLProgressElement.position documentation>
 getPosition :: (MonadDOM m) => HTMLProgressElement -> m Double
-getPosition self
-  = liftDOM ((self ^. js "position") >>= valToNumber)
+getPosition self = liftDOM (((self ^. js "position") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.labels Mozilla HTMLProgressElement.labels documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLProgressElement/labels MDN HTMLProgressElement.labels documentation>
 getLabels :: (MonadDOM m) => HTMLProgressElement -> m NodeList
-getLabels self
-  = liftDOM ((self ^. js "labels") >>= fromJSValUnchecked)
+getLabels self = liftDOM (((self ^. js "labels") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLQuoteElement.hs b/src/JSDOM/Generated/HTMLQuoteElement.hs
--- a/src/JSDOM/Generated/HTMLQuoteElement.hs
+++ b/src/JSDOM/Generated/HTMLQuoteElement.hs
@@ -1,30 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLQuoteElement
        (setCite, getCite, HTMLQuoteElement(..), gTypeHTMLQuoteElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLQuoteElement.cite Mozilla HTMLQuoteElement.cite documentation> 
-setCite ::
-        (MonadDOM m, ToJSString val) => HTMLQuoteElement -> val -> m ()
-setCite self val = liftDOM (self ^. jss "cite" (toJSVal val))
+-- | <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 (self ^. jss "cite" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLQuoteElement.cite Mozilla HTMLQuoteElement.cite documentation> 
-getCite ::
-        (MonadDOM m, FromJSString result) => HTMLQuoteElement -> m result
-getCite self = liftDOM ((self ^. js "cite") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLQuoteElement/cite MDN HTMLQuoteElement.cite documentation>
+getCite :: (MonadDOM m, FromJSString result) => HTMLQuoteElement -> m result
+getCite self = liftDOM (((self ^. js "cite") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLScriptElement.hs b/src/JSDOM/Generated/HTMLScriptElement.hs
--- a/src/JSDOM/Generated/HTMLScriptElement.hs
+++ b/src/JSDOM/Generated/HTMLScriptElement.hs
@@ -1,165 +1,164 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLScriptElement
-       (setText, getText, setHtmlFor, getHtmlFor, setEvent, getEvent,
-        setCharset, getCharset, setAsync, getAsync, setDefer, getDefer,
-        setSrc, getSrc, setType, getType, setCrossOrigin, getCrossOrigin,
-        getCrossOriginUnsafe, getCrossOriginUnchecked, setNonce, getNonce,
-        setNoModule, getNoModule, setIntegrity, getIntegrity,
-        HTMLScriptElement(..), gTypeHTMLScriptElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.text Mozilla HTMLScriptElement.text documentation> 
-setText ::
-        (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
-setText self val = liftDOM (self ^. jss "text" (toJSVal val))
+-- | <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 ((((jsg "HTMLScriptElement") ^. jsf "supports" [toJSVal type']) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.text Mozilla HTMLScriptElement.text documentation> 
-getText ::
-        (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
-getText self = liftDOM ((self ^. js "text") >>= fromJSValUnchecked)
+-- | <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 ((jsg "HTMLScriptElement") ^. jsf "supports" [toJSVal type']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.htmlFor Mozilla HTMLScriptElement.htmlFor documentation> 
-setHtmlFor ::
-           (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
-setHtmlFor self val = liftDOM (self ^. jss "htmlFor" (toJSVal val))
+-- | <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 (self ^. jss "type" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.htmlFor Mozilla HTMLScriptElement.htmlFor documentation> 
-getHtmlFor ::
-           (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
-getHtmlFor self
-  = liftDOM ((self ^. js "htmlFor") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/type MDN HTMLScriptElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.event Mozilla HTMLScriptElement.event documentation> 
-setEvent ::
-         (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
-setEvent self val = liftDOM (self ^. jss "event" (toJSVal val))
+-- | <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 (self ^. jss "src" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.event Mozilla HTMLScriptElement.event documentation> 
-getEvent ::
-         (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
-getEvent self
-  = liftDOM ((self ^. js "event") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/src MDN HTMLScriptElement.src documentation>
+getSrc :: (MonadDOM m) => HTMLScriptElement -> m TrustedScriptURLOrString
+getSrc self = liftDOM (((self ^. js "src") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.charset Mozilla HTMLScriptElement.charset documentation> 
-setCharset ::
-           (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
-setCharset self val = liftDOM (self ^. jss "charset" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/noModule MDN HTMLScriptElement.noModule documentation>
+setNoModule :: (MonadDOM m) => HTMLScriptElement -> Bool -> m ()
+setNoModule self val = liftDOM (void (self ^. jss "noModule" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.charset Mozilla HTMLScriptElement.charset documentation> 
-getCharset ::
-           (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
-getCharset self
-  = liftDOM ((self ^. js "charset") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/noModule MDN HTMLScriptElement.noModule documentation>
+getNoModule :: (MonadDOM m) => HTMLScriptElement -> m Bool
+getNoModule self = liftDOM (((self ^. js "noModule") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.async Mozilla HTMLScriptElement.async documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/async MDN HTMLScriptElement.async documentation>
 setAsync :: (MonadDOM m) => HTMLScriptElement -> Bool -> m ()
-setAsync self val = liftDOM (self ^. jss "async" (toJSVal val))
+setAsync self val = liftDOM (void (self ^. jss "async" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.async Mozilla HTMLScriptElement.async documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/async MDN HTMLScriptElement.async documentation>
 getAsync :: (MonadDOM m) => HTMLScriptElement -> m Bool
-getAsync self = liftDOM ((self ^. js "async") >>= valToBool)
+getAsync self = liftDOM (((self ^. js "async") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.defer Mozilla HTMLScriptElement.defer documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/defer MDN HTMLScriptElement.defer documentation>
 setDefer :: (MonadDOM m) => HTMLScriptElement -> Bool -> m ()
-setDefer self val = liftDOM (self ^. jss "defer" (toJSVal val))
+setDefer self val = liftDOM (void (self ^. jss "defer" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.defer Mozilla HTMLScriptElement.defer documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/defer MDN HTMLScriptElement.defer documentation>
 getDefer :: (MonadDOM m) => HTMLScriptElement -> m Bool
-getDefer self = liftDOM ((self ^. js "defer") >>= valToBool)
+getDefer self = liftDOM (((self ^. js "defer") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.src Mozilla HTMLScriptElement.src documentation> 
-setSrc ::
-       (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
-setSrc self val = liftDOM (self ^. jss "src" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/blocking MDN HTMLScriptElement.blocking documentation>
+getBlocking :: (MonadDOM m) => HTMLScriptElement -> m DOMTokenList
+getBlocking self = liftDOM (((self ^. js "blocking") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.src Mozilla HTMLScriptElement.src documentation> 
-getSrc ::
-       (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
-getSrc self = liftDOM ((self ^. js "src") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "crossOrigin" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.type Mozilla HTMLScriptElement.type documentation> 
-setType ::
-        (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
-setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+-- | <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 (((self ^. js "crossOrigin") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.type Mozilla HTMLScriptElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <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 ((((self ^. js "crossOrigin") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
-setCrossOrigin ::
-               (MonadDOM m, ToJSString val) =>
-                 HTMLScriptElement -> Maybe val -> m ()
-setCrossOrigin self val
-  = liftDOM (self ^. jss "crossOrigin" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/crossOrigin MDN HTMLScriptElement.crossOrigin documentation>
+getCrossOriginUnchecked :: (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getCrossOriginUnchecked self = liftDOM (((self ^. js "crossOrigin") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
-getCrossOrigin ::
-               (MonadDOM m, FromJSString result) =>
-                 HTMLScriptElement -> m (Maybe result)
-getCrossOrigin self
-  = liftDOM ((self ^. js "crossOrigin") >>= fromMaybeJSString)
+-- | <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 (self ^. jss "referrerPolicy" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
-getCrossOriginUnsafe ::
-                     (MonadDOM m, HasCallStack, FromJSString result) =>
-                       HTMLScriptElement -> m result
-getCrossOriginUnsafe self
-  = liftDOM
-      (((self ^. js "crossOrigin") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/referrerPolicy MDN HTMLScriptElement.referrerPolicy documentation>
+getReferrerPolicy :: (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getReferrerPolicy self = liftDOM (((self ^. js "referrerPolicy") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
-getCrossOriginUnchecked ::
-                        (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
-getCrossOriginUnchecked self
-  = liftDOM ((self ^. js "crossOrigin") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "integrity" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.nonce Mozilla HTMLScriptElement.nonce documentation> 
-setNonce ::
-         (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
-setNonce self val = liftDOM (self ^. jss "nonce" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/integrity MDN HTMLScriptElement.integrity documentation>
+getIntegrity :: (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getIntegrity self = liftDOM (((self ^. js "integrity") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.nonce Mozilla HTMLScriptElement.nonce documentation> 
-getNonce ::
-         (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
-getNonce self
-  = liftDOM ((self ^. js "nonce") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "fetchPriority" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.noModule Mozilla HTMLScriptElement.noModule documentation> 
-setNoModule :: (MonadDOM m) => HTMLScriptElement -> Bool -> m ()
-setNoModule self val
-  = liftDOM (self ^. jss "noModule" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/fetchPriority MDN HTMLScriptElement.fetchPriority documentation>
+getFetchPriority :: (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
+getFetchPriority self = liftDOM (((self ^. js "fetchPriority") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.noModule Mozilla HTMLScriptElement.noModule documentation> 
-getNoModule :: (MonadDOM m) => HTMLScriptElement -> m Bool
-getNoModule self = liftDOM ((self ^. js "noModule") >>= valToBool)
+-- | <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 (self ^. jss "innerText" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.integrity Mozilla HTMLScriptElement.integrity documentation> 
-setIntegrity ::
-             (MonadDOM m, ToJSString val) => HTMLScriptElement -> val -> m ()
-setIntegrity self val
-  = liftDOM (self ^. jss "integrity" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/innerText MDN HTMLScriptElement.innerText documentation>
+getInnerText :: (MonadDOM m) => HTMLScriptElement -> m TrustedScriptOrString
+getInnerText self = liftDOM (((self ^. js "innerText") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.integrity Mozilla HTMLScriptElement.integrity documentation> 
-getIntegrity ::
-             (MonadDOM m, FromJSString result) => HTMLScriptElement -> m result
-getIntegrity self
-  = liftDOM ((self ^. js "integrity") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "textContent" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/textContent MDN HTMLScriptElement.textContent documentation>
+getTextContent :: (MonadDOM m) => HTMLScriptElement -> m (Maybe TrustedScriptOrString)
+getTextContent self = liftDOM (((self ^. js "textContent") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/textContent MDN HTMLScriptElement.textContent documentation>
+getTextContentUnsafe :: (MonadDOM m, HasCallStack) => HTMLScriptElement -> m TrustedScriptOrString
+getTextContentUnsafe self = liftDOM ((((self ^. js "textContent") >>= 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 (((self ^. js "textContent") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "text" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLScriptElement/text MDN HTMLScriptElement.text documentation>
+getText :: (MonadDOM m) => HTMLScriptElement -> m TrustedScriptOrString
+getText self = liftDOM (((self ^. js "text") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "charset" (toJSVal val)))
+
+-- | <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 (((self ^. js "charset") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "event" (toJSVal val)))
+
+-- | <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 (((self ^. js "event") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "htmlFor" (toJSVal val)))
+
+-- | <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 (((self ^. js "htmlFor") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLSelectElement.hs b/src/JSDOM/Generated/HTMLSelectElement.hs
--- a/src/JSDOM/Generated/HTMLSelectElement.hs
+++ b/src/JSDOM/Generated/HTMLSelectElement.hs
@@ -1,291 +1,196 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLSelectElement
-       (item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_,
-        namedItemUnsafe, namedItemUnchecked, addBefore, removeThis, remove,
-        checkValidity, checkValidity_, reportValidity, reportValidity_,
-        setCustomValidity, setAutofocus, getAutofocus, 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, setAutocomplete, getAutocomplete, HTMLSelectElement(..),
-        gTypeHTMLSelectElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
-item ::
-     (MonadDOM m) =>
-       HTMLSelectElement -> Word -> m (Maybe HTMLOptionElement)
-item self index
-  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+-- | <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 (self ^. jsf "add" [toJSVal element, toJSVal before]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
-item_ :: (MonadDOM m) => HTMLSelectElement -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/checkValidity MDN HTMLSelectElement.checkValidity documentation>
+checkValidity :: (MonadDOM m) => HTMLSelectElement -> m Bool
+checkValidity self = liftDOM (((self ^. jsf "checkValidity" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
-itemUnsafe ::
-           (MonadDOM m, HasCallStack) =>
-             HTMLSelectElement -> Word -> m HTMLOptionElement
-itemUnsafe self index
-  = liftDOM
-      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
-         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 (self ^. jsf "checkValidity" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
-itemUnchecked ::
-              (MonadDOM m) => HTMLSelectElement -> Word -> m HTMLOptionElement
-itemUnchecked self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.namedItem Mozilla HTMLSelectElement.namedItem documentation> 
-namedItem ::
-          (MonadDOM m, ToJSString name) =>
-            HTMLSelectElement -> name -> m (Maybe HTMLOptionElement)
-namedItem self name
-  = liftDOM ((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/item MDN HTMLSelectElement.item documentation>
+item_ :: (MonadDOM m) => HTMLSelectElement -> Word -> m ()
+item_ self index = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.namedItem Mozilla HTMLSelectElement.namedItem documentation> 
-namedItem_ ::
-           (MonadDOM m, ToJSString name) => HTMLSelectElement -> name -> m ()
-namedItem_ self name
-  = liftDOM (void (self ^. jsf "namedItem" [toJSVal 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 ((((self ^. jsf "item" [toJSVal 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 ::
-                (MonadDOM m, ToJSString name, HasCallStack) =>
-                  HTMLSelectElement -> name -> m HTMLOptionElement
-namedItemUnsafe self name
-  = liftDOM
-      (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSVal) >>=
-         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 (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.namedItem Mozilla HTMLSelectElement.namedItem documentation> 
-namedItemUnchecked ::
-                   (MonadDOM m, ToJSString name) =>
-                     HTMLSelectElement -> name -> m HTMLOptionElement
-namedItemUnchecked self name
-  = liftDOM
-      ((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.add Mozilla HTMLSelectElement.add documentation> 
-addBefore ::
-          (MonadDOM m, IsHTMLOptionElementOrGroup element,
-           IsHTMLElementOrLong before) =>
-            HTMLSelectElement -> element -> Maybe before -> m ()
-addBefore self element before
-  = liftDOM
-      (void (self ^. jsf "add" [toJSVal element, toJSVal before]))
+-- | <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 (self ^. jsf "namedItem" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.remove Mozilla HTMLSelectElement.remove documentation> 
+-- | <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 ((((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <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 (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/remove MDN HTMLSelectElement.remove documentation>
 removeThis :: (MonadDOM m) => HTMLSelectElement -> m ()
 removeThis self = liftDOM (void (self ^. jsf "remove" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.remove Mozilla HTMLSelectElement.remove documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/remove MDN HTMLSelectElement.remove documentation>
 remove :: (MonadDOM m) => HTMLSelectElement -> Int -> m ()
-remove self index
-  = liftDOM (void (self ^. jsf "remove" [toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.checkValidity Mozilla HTMLSelectElement.checkValidity documentation> 
-checkValidity :: (MonadDOM m) => HTMLSelectElement -> m Bool
-checkValidity self
-  = liftDOM ((self ^. jsf "checkValidity" ()) >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.checkValidity Mozilla HTMLSelectElement.checkValidity documentation> 
-checkValidity_ :: (MonadDOM m) => HTMLSelectElement -> m ()
-checkValidity_ self
-  = liftDOM (void (self ^. jsf "checkValidity" ()))
+remove self index = liftDOM (void (self ^. jsf "remove" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.reportValidity Mozilla HTMLSelectElement.reportValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/reportValidity MDN HTMLSelectElement.reportValidity documentation>
 reportValidity :: (MonadDOM m) => HTMLSelectElement -> m Bool
-reportValidity self
-  = liftDOM ((self ^. jsf "reportValidity" ()) >>= valToBool)
+reportValidity self = liftDOM (((self ^. jsf "reportValidity" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.reportValidity Mozilla HTMLSelectElement.reportValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/reportValidity MDN HTMLSelectElement.reportValidity documentation>
 reportValidity_ :: (MonadDOM m) => HTMLSelectElement -> m ()
-reportValidity_ self
-  = liftDOM (void (self ^. jsf "reportValidity" ()))
+reportValidity_ self = liftDOM (void (self ^. jsf "reportValidity" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.setCustomValidity Mozilla HTMLSelectElement.setCustomValidity documentation> 
-setCustomValidity ::
-                  (MonadDOM m, ToJSString error) =>
-                    HTMLSelectElement -> error -> m ()
-setCustomValidity self error
-  = liftDOM (void (self ^. jsf "setCustomValidity" [toJSVal error]))
+-- | <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 (self ^. jsf "setCustomValidity" [toJSVal error]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.autofocus Mozilla HTMLSelectElement.autofocus documentation> 
-setAutofocus :: (MonadDOM m) => HTMLSelectElement -> Bool -> m ()
-setAutofocus self val
-  = liftDOM (self ^. jss "autofocus" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/showPicker MDN HTMLSelectElement.showPicker documentation>
+showPicker :: (MonadDOM m) => HTMLSelectElement -> m ()
+showPicker self = liftDOM (void (self ^. jsf "showPicker" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.autofocus Mozilla HTMLSelectElement.autofocus documentation> 
-getAutofocus :: (MonadDOM m) => HTMLSelectElement -> m Bool
-getAutofocus self
-  = liftDOM ((self ^. js "autofocus") >>= valToBool)
+-- | <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 (self ^. jss "autocomplete" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.disabled Mozilla HTMLSelectElement.disabled documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/autocomplete MDN HTMLSelectElement.autocomplete documentation>
+getAutocomplete :: (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
+getAutocomplete self = liftDOM (((self ^. js "autocomplete") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/disabled MDN HTMLSelectElement.disabled documentation>
 setDisabled :: (MonadDOM m) => HTMLSelectElement -> Bool -> m ()
-setDisabled self val
-  = liftDOM (self ^. jss "disabled" (toJSVal val))
+setDisabled self val = liftDOM (void (self ^. jss "disabled" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.disabled Mozilla HTMLSelectElement.disabled documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/disabled MDN HTMLSelectElement.disabled documentation>
 getDisabled :: (MonadDOM m) => HTMLSelectElement -> m Bool
-getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+getDisabled self = liftDOM (((self ^. js "disabled") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.form Mozilla HTMLSelectElement.form documentation> 
-getForm ::
-        (MonadDOM m) => HTMLSelectElement -> m (Maybe HTMLFormElement)
-getForm self = liftDOM ((self ^. js "form") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/form MDN HTMLSelectElement.form documentation>
+getForm :: (MonadDOM m) => HTMLSelectElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.form Mozilla HTMLSelectElement.form documentation> 
-getFormUnsafe ::
-              (MonadDOM m, HasCallStack) =>
-                HTMLSelectElement -> m HTMLFormElement
-getFormUnsafe self
-  = liftDOM
-      (((self ^. js "form") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/form MDN HTMLSelectElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLSelectElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((self ^. js "form") >>= 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> 
-getFormUnchecked ::
-                 (MonadDOM m) => HTMLSelectElement -> m HTMLFormElement
-getFormUnchecked self
-  = liftDOM ((self ^. js "form") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/form MDN HTMLSelectElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLSelectElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.multiple Mozilla HTMLSelectElement.multiple documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/multiple MDN HTMLSelectElement.multiple documentation>
 setMultiple :: (MonadDOM m) => HTMLSelectElement -> Bool -> m ()
-setMultiple self val
-  = liftDOM (self ^. jss "multiple" (toJSVal val))
+setMultiple self val = liftDOM (void (self ^. jss "multiple" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.multiple Mozilla HTMLSelectElement.multiple documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/multiple MDN HTMLSelectElement.multiple documentation>
 getMultiple :: (MonadDOM m) => HTMLSelectElement -> m Bool
-getMultiple self = liftDOM ((self ^. js "multiple") >>= valToBool)
+getMultiple self = liftDOM (((self ^. js "multiple") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.name Mozilla HTMLSelectElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLSelectElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <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 (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.name Mozilla HTMLSelectElement.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/name MDN HTMLSelectElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.required Mozilla HTMLSelectElement.required documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/required MDN HTMLSelectElement.required documentation>
 setRequired :: (MonadDOM m) => HTMLSelectElement -> Bool -> m ()
-setRequired self val
-  = liftDOM (self ^. jss "required" (toJSVal val))
+setRequired self val = liftDOM (void (self ^. jss "required" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.required Mozilla HTMLSelectElement.required documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/required MDN HTMLSelectElement.required documentation>
 getRequired :: (MonadDOM m) => HTMLSelectElement -> m Bool
-getRequired self = liftDOM ((self ^. js "required") >>= valToBool)
+getRequired self = liftDOM (((self ^. js "required") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.size Mozilla HTMLSelectElement.size documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/size MDN HTMLSelectElement.size documentation>
 setSize :: (MonadDOM m) => HTMLSelectElement -> Word -> m ()
-setSize self val = liftDOM (self ^. jss "size" (toJSVal val))
+setSize self val = liftDOM (void (self ^. jss "size" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.size Mozilla HTMLSelectElement.size documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/size MDN HTMLSelectElement.size documentation>
 getSize :: (MonadDOM m) => HTMLSelectElement -> m Word
-getSize self
-  = liftDOM (round <$> ((self ^. js "size") >>= valToNumber))
+getSize self = liftDOM ((P.round <$> ((self ^. js "size") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.type Mozilla HTMLSelectElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/type MDN HTMLSelectElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.options Mozilla HTMLSelectElement.options documentation> 
-getOptions ::
-           (MonadDOM m) => HTMLSelectElement -> m HTMLOptionsCollection
-getOptions self
-  = liftDOM ((self ^. js "options") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/options MDN HTMLSelectElement.options documentation>
+getOptions :: (MonadDOM m) => HTMLSelectElement -> m HTMLOptionsCollection
+getOptions self = liftDOM (((self ^. js "options") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.length Mozilla HTMLSelectElement.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/length MDN HTMLSelectElement.length documentation>
 setLength :: (MonadDOM m) => HTMLSelectElement -> Word -> m ()
-setLength self val = liftDOM (self ^. jss "length" (toJSVal val))
+setLength self val = liftDOM (void (self ^. jss "length" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.length Mozilla HTMLSelectElement.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/length MDN HTMLSelectElement.length documentation>
 getLength :: (MonadDOM m) => HTMLSelectElement -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.selectedOptions Mozilla HTMLSelectElement.selectedOptions documentation> 
-getSelectedOptions ::
-                   (MonadDOM m) => HTMLSelectElement -> m HTMLCollection
-getSelectedOptions self
-  = liftDOM ((self ^. js "selectedOptions") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/selectedOptions MDN HTMLSelectElement.selectedOptions documentation>
+getSelectedOptions :: (MonadDOM m) => HTMLSelectElement -> m HTMLCollection
+getSelectedOptions self = liftDOM (((self ^. js "selectedOptions") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.selectedIndex Mozilla HTMLSelectElement.selectedIndex documentation> 
-setSelectedIndex ::
-                 (MonadDOM m) => HTMLSelectElement -> Int -> m ()
-setSelectedIndex self val
-  = liftDOM (self ^. jss "selectedIndex" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/selectedIndex MDN HTMLSelectElement.selectedIndex documentation>
+setSelectedIndex :: (MonadDOM m) => HTMLSelectElement -> Int -> m ()
+setSelectedIndex self val = liftDOM (void (self ^. jss "selectedIndex" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.selectedIndex Mozilla HTMLSelectElement.selectedIndex documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/selectedIndex MDN HTMLSelectElement.selectedIndex documentation>
 getSelectedIndex :: (MonadDOM m) => HTMLSelectElement -> m Int
-getSelectedIndex self
-  = liftDOM
-      (round <$> ((self ^. js "selectedIndex") >>= valToNumber))
+getSelectedIndex self = liftDOM ((P.round <$> ((self ^. js "selectedIndex") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.value Mozilla HTMLSelectElement.value documentation> 
-setValue ::
-         (MonadDOM m, ToJSString val) => HTMLSelectElement -> val -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+-- | <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 (self ^. jss "value" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.value Mozilla HTMLSelectElement.value documentation> 
-getValue ::
-         (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
-getValue self
-  = liftDOM ((self ^. js "value") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/value MDN HTMLSelectElement.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
+getValue self = liftDOM (((self ^. js "value") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.willValidate Mozilla HTMLSelectElement.willValidate documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/willValidate MDN HTMLSelectElement.willValidate documentation>
 getWillValidate :: (MonadDOM m) => HTMLSelectElement -> m Bool
-getWillValidate self
-  = liftDOM ((self ^. js "willValidate") >>= valToBool)
+getWillValidate self = liftDOM (((self ^. js "willValidate") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.validity Mozilla HTMLSelectElement.validity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/validity MDN HTMLSelectElement.validity documentation>
 getValidity :: (MonadDOM m) => HTMLSelectElement -> m ValidityState
-getValidity self
-  = liftDOM ((self ^. js "validity") >>= fromJSValUnchecked)
+getValidity self = liftDOM (((self ^. js "validity") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.validationMessage Mozilla HTMLSelectElement.validationMessage documentation> 
-getValidationMessage ::
-                     (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
-getValidationMessage self
-  = liftDOM ((self ^. js "validationMessage") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/validationMessage MDN HTMLSelectElement.validationMessage documentation>
+getValidationMessage :: (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
+getValidationMessage self = liftDOM (((self ^. js "validationMessage") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.labels Mozilla HTMLSelectElement.labels documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSelectElement/labels MDN HTMLSelectElement.labels documentation>
 getLabels :: (MonadDOM m) => HTMLSelectElement -> m NodeList
-getLabels self
-  = liftDOM ((self ^. js "labels") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.autocomplete Mozilla HTMLSelectElement.autocomplete documentation> 
-setAutocomplete ::
-                (MonadDOM m, ToJSString val) => HTMLSelectElement -> val -> m ()
-setAutocomplete self val
-  = liftDOM (self ^. jss "autocomplete" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.autocomplete Mozilla HTMLSelectElement.autocomplete documentation> 
-getAutocomplete ::
-                (MonadDOM m, FromJSString result) => HTMLSelectElement -> m result
-getAutocomplete self
-  = liftDOM ((self ^. js "autocomplete") >>= fromJSValUnchecked)
+getLabels self = liftDOM (((self ^. js "labels") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLSelectedContentElement.hs b/src/JSDOM/Generated/HTMLSelectedContentElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/HTMLSelectedContentElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.HTMLSelectedContentElement
+       (HTMLSelectedContentElement(..), gTypeHTMLSelectedContentElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/HTMLSlotElement.hs b/src/JSDOM/Generated/HTMLSlotElement.hs
--- a/src/JSDOM/Generated/HTMLSlotElement.hs
+++ b/src/JSDOM/Generated/HTMLSlotElement.hs
@@ -1,47 +1,44 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLSlotElement
-       (assignedNodes, assignedNodes_, setName, getName,
-        HTMLSlotElement(..), gTypeHTMLSlotElement)
+       (assign, assignedElements, assignedElements_, assignedNodes, assignedNodes_, setName, getName, HTMLSlotElement(..), gTypeHTMLSlotElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement.assignedNodes Mozilla HTMLSlotElement.assignedNodes documentation> 
-assignedNodes ::
-              (MonadDOM m) =>
-                HTMLSlotElement -> Maybe AssignedNodesOptions -> m [Node]
-assignedNodes self options
-  = liftDOM
-      ((self ^. jsf "assignedNodes" [toJSVal options]) >>=
-         fromJSArrayUnchecked)
+-- | <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 (self ^. jsf "assign" ([] ++ P.map toJSVal nodes)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement.assignedNodes Mozilla HTMLSlotElement.assignedNodes documentation> 
-assignedNodes_ ::
-               (MonadDOM m) =>
-                 HTMLSlotElement -> Maybe AssignedNodesOptions -> m ()
-assignedNodes_ self options
-  = liftDOM (void (self ^. jsf "assignedNodes" [toJSVal options]))
+-- | <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 (((self ^. jsf "assignedElements" [P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement.name Mozilla HTMLSlotElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLSlotElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <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 (self ^. jsf "assignedElements" [P.maybe (P.return jsUndefined) toJSVal options]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement.name Mozilla HTMLSlotElement.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => HTMLSlotElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "assignedNodes" [P.maybe (P.return jsUndefined) toJSVal options]) >>= 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 (self ^. jsf "assignedNodes" [P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 (self ^. jss "name" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSlotElement/name MDN HTMLSlotElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLSlotElement -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLSourceElement.hs b/src/JSDOM/Generated/HTMLSourceElement.hs
--- a/src/JSDOM/Generated/HTMLSourceElement.hs
+++ b/src/JSDOM/Generated/HTMLSourceElement.hs
@@ -1,75 +1,72 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLSourceElement
-       (setSrc, getSrc, setType, getType, setSrcset, getSrcset, setSizes,
-        getSizes, setMedia, getMedia, HTMLSourceElement(..),
-        gTypeHTMLSourceElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.src Mozilla HTMLSourceElement.src documentation> 
-setSrc ::
-       (MonadDOM m, ToJSString val) => HTMLSourceElement -> val -> m ()
-setSrc self val = liftDOM (self ^. jss "src" (toJSVal val))
+-- | <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 (self ^. jss "src" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.src Mozilla HTMLSourceElement.src documentation> 
-getSrc ::
-       (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
-getSrc self = liftDOM ((self ^. js "src") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/src MDN HTMLSourceElement.src documentation>
+getSrc :: (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
+getSrc self = liftDOM (((self ^. js "src") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.type Mozilla HTMLSourceElement.type documentation> 
-setType ::
-        (MonadDOM m, ToJSString val) => HTMLSourceElement -> val -> m ()
-setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+-- | <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 (self ^. jss "type" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.type Mozilla HTMLSourceElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/type MDN HTMLSourceElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.srcset Mozilla HTMLSourceElement.srcset documentation> 
-setSrcset ::
-          (MonadDOM m, ToJSString val) => HTMLSourceElement -> val -> m ()
-setSrcset self val = liftDOM (self ^. jss "srcset" (toJSVal val))
+-- | <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 (self ^. jss "srcset" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.srcset Mozilla HTMLSourceElement.srcset documentation> 
-getSrcset ::
-          (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
-getSrcset self
-  = liftDOM ((self ^. js "srcset") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/srcset MDN HTMLSourceElement.srcset documentation>
+getSrcset :: (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
+getSrcset self = liftDOM (((self ^. js "srcset") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.sizes Mozilla HTMLSourceElement.sizes documentation> 
-setSizes ::
-         (MonadDOM m, ToJSString val) => HTMLSourceElement -> val -> m ()
-setSizes self val = liftDOM (self ^. jss "sizes" (toJSVal val))
+-- | <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 (self ^. jss "sizes" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.sizes Mozilla HTMLSourceElement.sizes documentation> 
-getSizes ::
-         (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
-getSizes self
-  = liftDOM ((self ^. js "sizes") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/sizes MDN HTMLSourceElement.sizes documentation>
+getSizes :: (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
+getSizes self = liftDOM (((self ^. js "sizes") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.media Mozilla HTMLSourceElement.media documentation> 
-setMedia ::
-         (MonadDOM m, ToJSString val) => HTMLSourceElement -> val -> m ()
-setMedia self val = liftDOM (self ^. jss "media" (toJSVal val))
+-- | <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 (self ^. jss "media" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.media Mozilla HTMLSourceElement.media documentation> 
-getMedia ::
-         (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
-getMedia self
-  = liftDOM ((self ^. js "media") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/media MDN HTMLSourceElement.media documentation>
+getMedia :: (MonadDOM m, FromJSString result) => HTMLSourceElement -> m result
+getMedia self = liftDOM (((self ^. js "media") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/width MDN HTMLSourceElement.width documentation>
+setWidth :: (MonadDOM m) => HTMLSourceElement -> Word -> m ()
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/width MDN HTMLSourceElement.width documentation>
+getWidth :: (MonadDOM m) => HTMLSourceElement -> m Word
+getWidth self = liftDOM ((P.round <$> ((self ^. js "width") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/height MDN HTMLSourceElement.height documentation>
+setHeight :: (MonadDOM m) => HTMLSourceElement -> Word -> m ()
+setHeight self val = liftDOM (void (self ^. jss "height" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLSourceElement/height MDN HTMLSourceElement.height documentation>
+getHeight :: (MonadDOM m) => HTMLSourceElement -> m Word
+getHeight self = liftDOM ((P.round <$> ((self ^. js "height") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/HTMLSpanElement.hs b/src/JSDOM/Generated/HTMLSpanElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/HTMLSpanElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.HTMLSpanElement
+       (HTMLSpanElement(..), gTypeHTMLSpanElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/HTMLStyleElement.hs b/src/JSDOM/Generated/HTMLStyleElement.hs
--- a/src/JSDOM/Generated/HTMLStyleElement.hs
+++ b/src/JSDOM/Generated/HTMLStyleElement.hs
@@ -1,68 +1,44 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLStyleElement
-       (setDisabled, getDisabled, setMedia, getMedia, setType, getType,
-        getSheet, setNonce, getNonce, HTMLStyleElement(..),
-        gTypeHTMLStyleElement)
+       (setDisabled, getDisabled, setMedia, getMedia, getBlocking, setType, getType, HTMLStyleElement(..), gTypeHTMLStyleElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.disabled Mozilla HTMLStyleElement.disabled documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLStyleElement/disabled MDN HTMLStyleElement.disabled documentation>
 setDisabled :: (MonadDOM m) => HTMLStyleElement -> Bool -> m ()
-setDisabled self val
-  = liftDOM (self ^. jss "disabled" (toJSVal val))
+setDisabled self val = liftDOM (void (self ^. jss "disabled" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.disabled Mozilla HTMLStyleElement.disabled documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLStyleElement/disabled MDN HTMLStyleElement.disabled documentation>
 getDisabled :: (MonadDOM m) => HTMLStyleElement -> m Bool
-getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.media Mozilla HTMLStyleElement.media documentation> 
-setMedia ::
-         (MonadDOM m, ToJSString val) => HTMLStyleElement -> val -> m ()
-setMedia self val = liftDOM (self ^. jss "media" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.media Mozilla HTMLStyleElement.media documentation> 
-getMedia ::
-         (MonadDOM m, FromJSString result) => HTMLStyleElement -> m result
-getMedia self
-  = liftDOM ((self ^. js "media") >>= fromJSValUnchecked)
+getDisabled self = liftDOM (((self ^. js "disabled") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.type Mozilla HTMLStyleElement.type documentation> 
-setType ::
-        (MonadDOM m, ToJSString val) => HTMLStyleElement -> val -> m ()
-setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+-- | <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 (self ^. jss "media" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.type Mozilla HTMLStyleElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => HTMLStyleElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLStyleElement/media MDN HTMLStyleElement.media documentation>
+getMedia :: (MonadDOM m, FromJSString result) => HTMLStyleElement -> m result
+getMedia self = liftDOM (((self ^. js "media") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.sheet Mozilla HTMLStyleElement.sheet documentation> 
-getSheet :: (MonadDOM m) => HTMLStyleElement -> m StyleSheet
-getSheet self
-  = liftDOM ((self ^. js "sheet") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLStyleElement/blocking MDN HTMLStyleElement.blocking documentation>
+getBlocking :: (MonadDOM m) => HTMLStyleElement -> m DOMTokenList
+getBlocking self = liftDOM (((self ^. js "blocking") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.nonce Mozilla HTMLStyleElement.nonce documentation> 
-setNonce ::
-         (MonadDOM m, ToJSString val) => HTMLStyleElement -> val -> m ()
-setNonce self val = liftDOM (self ^. jss "nonce" (toJSVal val))
+-- | <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 (self ^. jss "type" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.nonce Mozilla HTMLStyleElement.nonce documentation> 
-getNonce ::
-         (MonadDOM m, FromJSString result) => HTMLStyleElement -> m result
-getNonce self
-  = liftDOM ((self ^. js "nonce") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLStyleElement/type MDN HTMLStyleElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLStyleElement -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLTableCaptionElement.hs b/src/JSDOM/Generated/HTMLTableCaptionElement.hs
--- a/src/JSDOM/Generated/HTMLTableCaptionElement.hs
+++ b/src/JSDOM/Generated/HTMLTableCaptionElement.hs
@@ -1,34 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLTableCaptionElement
-       (setAlign, getAlign, HTMLTableCaptionElement(..),
-        gTypeHTMLTableCaptionElement)
+       (setAlign, getAlign, HTMLTableCaptionElement(..), gTypeHTMLTableCaptionElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCaptionElement.align Mozilla HTMLTableCaptionElement.align documentation> 
-setAlign ::
-         (MonadDOM m, ToJSString val) =>
-           HTMLTableCaptionElement -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+-- | <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 (self ^. jss "align" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCaptionElement.align Mozilla HTMLTableCaptionElement.align documentation> 
-getAlign ::
-         (MonadDOM m, FromJSString result) =>
-           HTMLTableCaptionElement -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCaptionElement/align MDN HTMLTableCaptionElement.align documentation>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLTableCaptionElement -> m result
+getAlign self = liftDOM (((self ^. js "align") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLTableCellElement.hs b/src/JSDOM/Generated/HTMLTableCellElement.hs
--- a/src/JSDOM/Generated/HTMLTableCellElement.hs
+++ b/src/JSDOM/Generated/HTMLTableCellElement.hs
@@ -1,185 +1,132 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLTableCellElement
-       (getCellIndex, setAlign, getAlign, setAxis, getAxis, setBgColor,
-        getBgColor, setCh, getCh, setChOff, getChOff, setColSpan,
-        getColSpan, setRowSpan, getRowSpan, setHeaders, getHeaders,
-        setHeight, getHeight, setNoWrap, getNoWrap, setVAlign, getVAlign,
-        setWidth, getWidth, setAbbr, getAbbr, setScope, getScope,
-        HTMLTableCellElement(..), gTypeHTMLTableCellElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.cellIndex Mozilla HTMLTableCellElement.cellIndex documentation> 
-getCellIndex :: (MonadDOM m) => HTMLTableCellElement -> m Int
-getCellIndex self
-  = liftDOM (round <$> ((self ^. js "cellIndex") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/colSpan MDN HTMLTableCellElement.colSpan documentation>
+setColSpan :: (MonadDOM m) => HTMLTableCellElement -> Word -> m ()
+setColSpan self val = liftDOM (void (self ^. jss "colSpan" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.align Mozilla HTMLTableCellElement.align documentation> 
-setAlign ::
-         (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/colSpan MDN HTMLTableCellElement.colSpan documentation>
+getColSpan :: (MonadDOM m) => HTMLTableCellElement -> m Word
+getColSpan self = liftDOM ((P.round <$> ((self ^. js "colSpan") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.align Mozilla HTMLTableCellElement.align documentation> 
-getAlign ::
-         (MonadDOM m, FromJSString result) =>
-           HTMLTableCellElement -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/rowSpan MDN HTMLTableCellElement.rowSpan documentation>
+setRowSpan :: (MonadDOM m) => HTMLTableCellElement -> Word -> m ()
+setRowSpan self val = liftDOM (void (self ^. jss "rowSpan" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.axis Mozilla HTMLTableCellElement.axis documentation> 
-setAxis ::
-        (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setAxis self val = liftDOM (self ^. jss "axis" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/rowSpan MDN HTMLTableCellElement.rowSpan documentation>
+getRowSpan :: (MonadDOM m) => HTMLTableCellElement -> m Word
+getRowSpan self = liftDOM ((P.round <$> ((self ^. js "rowSpan") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.axis Mozilla HTMLTableCellElement.axis documentation> 
-getAxis ::
-        (MonadDOM m, FromJSString result) =>
-          HTMLTableCellElement -> m result
-getAxis self = liftDOM ((self ^. js "axis") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "headers" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.bgColor Mozilla HTMLTableCellElement.bgColor documentation> 
-setBgColor ::
-           (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setBgColor self val = liftDOM (self ^. jss "bgColor" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/headers MDN HTMLTableCellElement.headers documentation>
+getHeaders :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getHeaders self = liftDOM (((self ^. js "headers") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.bgColor Mozilla HTMLTableCellElement.bgColor documentation> 
-getBgColor ::
-           (MonadDOM m, FromJSString result) =>
-             HTMLTableCellElement -> m result
-getBgColor self
-  = liftDOM ((self ^. js "bgColor") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/cellIndex MDN HTMLTableCellElement.cellIndex documentation>
+getCellIndex :: (MonadDOM m) => HTMLTableCellElement -> m Int
+getCellIndex self = liftDOM ((P.round <$> ((self ^. js "cellIndex") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.ch Mozilla HTMLTableCellElement.ch documentation> 
-setCh ::
-      (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setCh self val = liftDOM (self ^. jss "ch" (toJSVal val))
+-- | <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 (self ^. jss "scope" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.ch Mozilla HTMLTableCellElement.ch documentation> 
-getCh ::
-      (MonadDOM m, FromJSString result) =>
-        HTMLTableCellElement -> m result
-getCh self = liftDOM ((self ^. js "ch") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/scope MDN HTMLTableCellElement.scope documentation>
+getScope :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getScope self = liftDOM (((self ^. js "scope") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.chOff Mozilla HTMLTableCellElement.chOff documentation> 
-setChOff ::
-         (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setChOff self val = liftDOM (self ^. jss "chOff" (toJSVal val))
+-- | <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 (self ^. jss "abbr" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.chOff Mozilla HTMLTableCellElement.chOff documentation> 
-getChOff ::
-         (MonadDOM m, FromJSString result) =>
-           HTMLTableCellElement -> m result
-getChOff self
-  = liftDOM ((self ^. js "chOff") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/abbr MDN HTMLTableCellElement.abbr documentation>
+getAbbr :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getAbbr self = liftDOM (((self ^. js "abbr") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.colSpan Mozilla HTMLTableCellElement.colSpan documentation> 
-setColSpan :: (MonadDOM m) => HTMLTableCellElement -> Word -> m ()
-setColSpan self val = liftDOM (self ^. jss "colSpan" (toJSVal val))
+-- | <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 (self ^. jss "align" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.colSpan Mozilla HTMLTableCellElement.colSpan documentation> 
-getColSpan :: (MonadDOM m) => HTMLTableCellElement -> m Word
-getColSpan self
-  = liftDOM (round <$> ((self ^. js "colSpan") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/align MDN HTMLTableCellElement.align documentation>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getAlign self = liftDOM (((self ^. js "align") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.rowSpan Mozilla HTMLTableCellElement.rowSpan documentation> 
-setRowSpan :: (MonadDOM m) => HTMLTableCellElement -> Word -> m ()
-setRowSpan self val = liftDOM (self ^. jss "rowSpan" (toJSVal val))
+-- | <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 (self ^. jss "axis" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.rowSpan Mozilla HTMLTableCellElement.rowSpan documentation> 
-getRowSpan :: (MonadDOM m) => HTMLTableCellElement -> m Word
-getRowSpan self
-  = liftDOM (round <$> ((self ^. js "rowSpan") >>= valToNumber))
+-- | <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 (((self ^. js "axis") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.headers Mozilla HTMLTableCellElement.headers documentation> 
-setHeaders ::
-           (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setHeaders self val = liftDOM (self ^. jss "headers" (toJSVal val))
+-- | <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 (self ^. jss "height" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.headers Mozilla HTMLTableCellElement.headers documentation> 
-getHeaders ::
-           (MonadDOM m, FromJSString result) =>
-             HTMLTableCellElement -> m result
-getHeaders self
-  = liftDOM ((self ^. js "headers") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "height") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.height Mozilla HTMLTableCellElement.height documentation> 
-setHeight ::
-          (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+-- | <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 (self ^. jss "width" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.height Mozilla HTMLTableCellElement.height documentation> 
-getHeight ::
-          (MonadDOM m, FromJSString result) =>
-            HTMLTableCellElement -> m result
-getHeight self
-  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "width") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.noWrap Mozilla HTMLTableCellElement.noWrap documentation> 
-setNoWrap :: (MonadDOM m) => HTMLTableCellElement -> Bool -> m ()
-setNoWrap self val = liftDOM (self ^. jss "noWrap" (toJSVal val))
+-- | <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 (self ^. jss "ch" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.noWrap Mozilla HTMLTableCellElement.noWrap documentation> 
-getNoWrap :: (MonadDOM m) => HTMLTableCellElement -> m Bool
-getNoWrap self = liftDOM ((self ^. js "noWrap") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/ch MDN HTMLTableCellElement.ch documentation>
+getCh :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getCh self = liftDOM (((self ^. js "ch") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.vAlign Mozilla HTMLTableCellElement.vAlign documentation> 
-setVAlign ::
-          (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setVAlign self val = liftDOM (self ^. jss "vAlign" (toJSVal val))
+-- | <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 (self ^. jss "chOff" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.vAlign Mozilla HTMLTableCellElement.vAlign documentation> 
-getVAlign ::
-          (MonadDOM m, FromJSString result) =>
-            HTMLTableCellElement -> m result
-getVAlign self
-  = liftDOM ((self ^. js "vAlign") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/chOff MDN HTMLTableCellElement.chOff documentation>
+getChOff :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getChOff self = liftDOM (((self ^. js "chOff") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.width Mozilla HTMLTableCellElement.width documentation> 
-setWidth ::
-         (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/noWrap MDN HTMLTableCellElement.noWrap documentation>
+setNoWrap :: (MonadDOM m) => HTMLTableCellElement -> Bool -> m ()
+setNoWrap self val = liftDOM (void (self ^. jss "noWrap" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.width Mozilla HTMLTableCellElement.width documentation> 
-getWidth ::
-         (MonadDOM m, FromJSString result) =>
-           HTMLTableCellElement -> m result
-getWidth self
-  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/noWrap MDN HTMLTableCellElement.noWrap documentation>
+getNoWrap :: (MonadDOM m) => HTMLTableCellElement -> m Bool
+getNoWrap self = liftDOM (((self ^. js "noWrap") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.abbr Mozilla HTMLTableCellElement.abbr documentation> 
-setAbbr ::
-        (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setAbbr self val = liftDOM (self ^. jss "abbr" (toJSVal val))
+-- | <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 (self ^. jss "vAlign" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.abbr Mozilla HTMLTableCellElement.abbr documentation> 
-getAbbr ::
-        (MonadDOM m, FromJSString result) =>
-          HTMLTableCellElement -> m result
-getAbbr self = liftDOM ((self ^. js "abbr") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/vAlign MDN HTMLTableCellElement.vAlign documentation>
+getVAlign :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getVAlign self = liftDOM (((self ^. js "vAlign") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.scope Mozilla HTMLTableCellElement.scope documentation> 
-setScope ::
-         (MonadDOM m, ToJSString val) => HTMLTableCellElement -> val -> m ()
-setScope self val = liftDOM (self ^. jss "scope" (toJSVal val))
+-- | <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 (self ^. jss "bgColor" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.scope Mozilla HTMLTableCellElement.scope documentation> 
-getScope ::
-         (MonadDOM m, FromJSString result) =>
-           HTMLTableCellElement -> m result
-getScope self
-  = liftDOM ((self ^. js "scope") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableCellElement/bgColor MDN HTMLTableCellElement.bgColor documentation>
+getBgColor :: (MonadDOM m, FromJSString result) => HTMLTableCellElement -> m result
+getBgColor self = liftDOM (((self ^. js "bgColor") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLTableColElement.hs b/src/JSDOM/Generated/HTMLTableColElement.hs
--- a/src/JSDOM/Generated/HTMLTableColElement.hs
+++ b/src/JSDOM/Generated/HTMLTableColElement.hs
@@ -1,90 +1,64 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLTableColElement
-       (setAlign, getAlign, setCh, getCh, setChOff, getChOff, setSpan,
-        getSpan, setVAlign, getVAlign, setWidth, getWidth,
-        HTMLTableColElement(..), gTypeHTMLTableColElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.align Mozilla HTMLTableColElement.align documentation> 
-setAlign ::
-         (MonadDOM m, ToJSString val) => HTMLTableColElement -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableColElement/span MDN HTMLTableColElement.span documentation>
+setSpan :: (MonadDOM m) => HTMLTableColElement -> Word -> m ()
+setSpan self val = liftDOM (void (self ^. jss "span" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.align Mozilla HTMLTableColElement.align documentation> 
-getAlign ::
-         (MonadDOM m, FromJSString result) =>
-           HTMLTableColElement -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableColElement/span MDN HTMLTableColElement.span documentation>
+getSpan :: (MonadDOM m) => HTMLTableColElement -> m Word
+getSpan self = liftDOM ((P.round <$> ((self ^. js "span") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.ch Mozilla HTMLTableColElement.ch documentation> 
-setCh ::
-      (MonadDOM m, ToJSString val) => HTMLTableColElement -> val -> m ()
-setCh self val = liftDOM (self ^. jss "ch" (toJSVal val))
+-- | <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 (self ^. jss "align" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.ch Mozilla HTMLTableColElement.ch documentation> 
-getCh ::
-      (MonadDOM m, FromJSString result) =>
-        HTMLTableColElement -> m result
-getCh self = liftDOM ((self ^. js "ch") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableColElement/align MDN HTMLTableColElement.align documentation>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLTableColElement -> m result
+getAlign self = liftDOM (((self ^. js "align") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.chOff Mozilla HTMLTableColElement.chOff documentation> 
-setChOff ::
-         (MonadDOM m, ToJSString val) => HTMLTableColElement -> val -> m ()
-setChOff self val = liftDOM (self ^. jss "chOff" (toJSVal val))
+-- | <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 (self ^. jss "ch" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.chOff Mozilla HTMLTableColElement.chOff documentation> 
-getChOff ::
-         (MonadDOM m, FromJSString result) =>
-           HTMLTableColElement -> m result
-getChOff self
-  = liftDOM ((self ^. js "chOff") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableColElement/ch MDN HTMLTableColElement.ch documentation>
+getCh :: (MonadDOM m, FromJSString result) => HTMLTableColElement -> m result
+getCh self = liftDOM (((self ^. js "ch") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.span Mozilla HTMLTableColElement.span documentation> 
-setSpan :: (MonadDOM m) => HTMLTableColElement -> Word -> m ()
-setSpan self val = liftDOM (self ^. jss "span" (toJSVal val))
+-- | <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 (self ^. jss "chOff" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.span Mozilla HTMLTableColElement.span documentation> 
-getSpan :: (MonadDOM m) => HTMLTableColElement -> m Word
-getSpan self
-  = liftDOM (round <$> ((self ^. js "span") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableColElement/chOff MDN HTMLTableColElement.chOff documentation>
+getChOff :: (MonadDOM m, FromJSString result) => HTMLTableColElement -> m result
+getChOff self = liftDOM (((self ^. js "chOff") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.vAlign Mozilla HTMLTableColElement.vAlign documentation> 
-setVAlign ::
-          (MonadDOM m, ToJSString val) => HTMLTableColElement -> val -> m ()
-setVAlign self val = liftDOM (self ^. jss "vAlign" (toJSVal val))
+-- | <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 (self ^. jss "vAlign" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.vAlign Mozilla HTMLTableColElement.vAlign documentation> 
-getVAlign ::
-          (MonadDOM m, FromJSString result) =>
-            HTMLTableColElement -> m result
-getVAlign self
-  = liftDOM ((self ^. js "vAlign") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableColElement/vAlign MDN HTMLTableColElement.vAlign documentation>
+getVAlign :: (MonadDOM m, FromJSString result) => HTMLTableColElement -> m result
+getVAlign self = liftDOM (((self ^. js "vAlign") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.width Mozilla HTMLTableColElement.width documentation> 
-setWidth ::
-         (MonadDOM m, ToJSString val) => HTMLTableColElement -> val -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+-- | <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 (self ^. jss "width" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.width Mozilla HTMLTableColElement.width documentation> 
-getWidth ::
-         (MonadDOM m, FromJSString result) =>
-           HTMLTableColElement -> m result
-getWidth self
-  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "width") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLTableElement.hs b/src/JSDOM/Generated/HTMLTableElement.hs
--- a/src/JSDOM/Generated/HTMLTableElement.hs
+++ b/src/JSDOM/Generated/HTMLTableElement.hs
@@ -1,287 +1,200 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLTableElement
-       (createTHead, createTHead_, deleteTHead, createTFoot, createTFoot_,
-        deleteTFoot, createTBody, createTBody_, createCaption,
-        createCaption_, deleteCaption, insertRow, insertRow_, deleteRow,
-        setCaption, getCaption, getCaptionUnsafe, getCaptionUnchecked,
-        setTHead, getTHead, getTHeadUnsafe, getTHeadUnchecked, setTFoot,
-        getTFoot, getTFootUnsafe, getTFootUnchecked, getRows, getTBodies,
-        setAlign, getAlign, setBgColor, getBgColor, setBorder, getBorder,
-        setCellPadding, getCellPadding, setCellSpacing, getCellSpacing,
-        setFrame, getFrame, setRules, getRules, setSummary, getSummary,
-        setWidth, getWidth, HTMLTableElement(..), gTypeHTMLTableElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTHead Mozilla HTMLTableElement.createTHead documentation> 
-createTHead :: (MonadDOM m) => HTMLTableElement -> m HTMLElement
-createTHead self
-  = liftDOM ((self ^. jsf "createTHead" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/createCaption MDN HTMLTableElement.createCaption documentation>
+createCaption :: (MonadDOM m) => HTMLTableElement -> m HTMLTableCaptionElement
+createCaption self = liftDOM (((self ^. jsf "createCaption" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTHead Mozilla HTMLTableElement.createTHead documentation> 
-createTHead_ :: (MonadDOM m) => HTMLTableElement -> m ()
-createTHead_ self = liftDOM (void (self ^. jsf "createTHead" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/createCaption MDN HTMLTableElement.createCaption documentation>
+createCaption_ :: (MonadDOM m) => HTMLTableElement -> m ()
+createCaption_ self = liftDOM (void (self ^. jsf "createCaption" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.deleteTHead Mozilla HTMLTableElement.deleteTHead documentation> 
-deleteTHead :: (MonadDOM m) => HTMLTableElement -> m ()
-deleteTHead self = liftDOM (void (self ^. jsf "deleteTHead" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/createTBody MDN HTMLTableElement.createTBody documentation>
+createTBody :: (MonadDOM m) => HTMLTableElement -> m HTMLTableSectionElement
+createTBody self = liftDOM (((self ^. jsf "createTBody" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTFoot Mozilla HTMLTableElement.createTFoot documentation> 
-createTFoot :: (MonadDOM m) => HTMLTableElement -> m HTMLElement
-createTFoot self
-  = liftDOM ((self ^. jsf "createTFoot" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/createTBody MDN HTMLTableElement.createTBody documentation>
+createTBody_ :: (MonadDOM m) => HTMLTableElement -> m ()
+createTBody_ self = liftDOM (void (self ^. jsf "createTBody" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTFoot Mozilla HTMLTableElement.createTFoot documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/createTFoot MDN HTMLTableElement.createTFoot documentation>
+createTFoot :: (MonadDOM m) => HTMLTableElement -> m HTMLTableSectionElement
+createTFoot self = liftDOM (((self ^. jsf "createTFoot" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/createTFoot MDN HTMLTableElement.createTFoot documentation>
 createTFoot_ :: (MonadDOM m) => HTMLTableElement -> m ()
 createTFoot_ self = liftDOM (void (self ^. jsf "createTFoot" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.deleteTFoot Mozilla HTMLTableElement.deleteTFoot documentation> 
-deleteTFoot :: (MonadDOM m) => HTMLTableElement -> m ()
-deleteTFoot self = liftDOM (void (self ^. jsf "deleteTFoot" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/createTHead MDN HTMLTableElement.createTHead documentation>
+createTHead :: (MonadDOM m) => HTMLTableElement -> m HTMLTableSectionElement
+createTHead self = liftDOM (((self ^. jsf "createTHead" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTBody Mozilla HTMLTableElement.createTBody documentation> 
-createTBody :: (MonadDOM m) => HTMLTableElement -> m HTMLElement
-createTBody self
-  = liftDOM ((self ^. jsf "createTBody" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/createTHead MDN HTMLTableElement.createTHead documentation>
+createTHead_ :: (MonadDOM m) => HTMLTableElement -> m ()
+createTHead_ self = liftDOM (void (self ^. jsf "createTHead" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTBody Mozilla HTMLTableElement.createTBody documentation> 
-createTBody_ :: (MonadDOM m) => HTMLTableElement -> m ()
-createTBody_ self = liftDOM (void (self ^. jsf "createTBody" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/deleteCaption MDN HTMLTableElement.deleteCaption documentation>
+deleteCaption :: (MonadDOM m) => HTMLTableElement -> m ()
+deleteCaption self = liftDOM (void (self ^. jsf "deleteCaption" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createCaption Mozilla HTMLTableElement.createCaption documentation> 
-createCaption :: (MonadDOM m) => HTMLTableElement -> m HTMLElement
-createCaption self
-  = liftDOM ((self ^. jsf "createCaption" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/deleteRow MDN HTMLTableElement.deleteRow documentation>
+deleteRow :: (MonadDOM m) => HTMLTableElement -> Int -> m ()
+deleteRow self index = liftDOM (void (self ^. jsf "deleteRow" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createCaption Mozilla HTMLTableElement.createCaption documentation> 
-createCaption_ :: (MonadDOM m) => HTMLTableElement -> m ()
-createCaption_ self
-  = liftDOM (void (self ^. jsf "createCaption" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/deleteTFoot MDN HTMLTableElement.deleteTFoot documentation>
+deleteTFoot :: (MonadDOM m) => HTMLTableElement -> m ()
+deleteTFoot self = liftDOM (void (self ^. jsf "deleteTFoot" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.deleteCaption Mozilla HTMLTableElement.deleteCaption documentation> 
-deleteCaption :: (MonadDOM m) => HTMLTableElement -> m ()
-deleteCaption self
-  = liftDOM (void (self ^. jsf "deleteCaption" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/deleteTHead MDN HTMLTableElement.deleteTHead documentation>
+deleteTHead :: (MonadDOM m) => HTMLTableElement -> m ()
+deleteTHead self = liftDOM (void (self ^. jsf "deleteTHead" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.insertRow Mozilla HTMLTableElement.insertRow documentation> 
-insertRow ::
-          (MonadDOM m) => HTMLTableElement -> Maybe Int -> m HTMLElement
-insertRow self index
-  = liftDOM
-      ((self ^. jsf "insertRow" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "insertRow" [P.maybe (P.return jsUndefined) toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.insertRow Mozilla HTMLTableElement.insertRow documentation> 
+-- | <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 (self ^. jsf "insertRow" [toJSVal index]))
+insertRow_ self index = liftDOM (void (self ^. jsf "insertRow" [P.maybe (P.return jsUndefined) toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.deleteRow Mozilla HTMLTableElement.deleteRow documentation> 
-deleteRow :: (MonadDOM m) => HTMLTableElement -> Int -> m ()
-deleteRow self index
-  = liftDOM (void (self ^. jsf "deleteRow" [toJSVal index]))
+-- | <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 (self ^. jss "caption" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.caption Mozilla HTMLTableElement.caption documentation> 
-setCaption ::
-           (MonadDOM m) =>
-             HTMLTableElement -> Maybe HTMLTableCaptionElement -> m ()
-setCaption self val = liftDOM (self ^. jss "caption" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/caption MDN HTMLTableElement.caption documentation>
+getCaption :: (MonadDOM m) => HTMLTableElement -> m (Maybe HTMLTableCaptionElement)
+getCaption self = liftDOM (((self ^. js "caption") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.caption Mozilla HTMLTableElement.caption documentation> 
-getCaption ::
-           (MonadDOM m) =>
-             HTMLTableElement -> m (Maybe HTMLTableCaptionElement)
-getCaption self = liftDOM ((self ^. js "caption") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/caption MDN HTMLTableElement.caption documentation>
+getCaptionUnsafe :: (MonadDOM m, HasCallStack) => HTMLTableElement -> m HTMLTableCaptionElement
+getCaptionUnsafe self = liftDOM ((((self ^. js "caption") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.caption Mozilla HTMLTableElement.caption documentation> 
-getCaptionUnsafe ::
-                 (MonadDOM m, HasCallStack) =>
-                   HTMLTableElement -> m HTMLTableCaptionElement
-getCaptionUnsafe self
-  = liftDOM
-      (((self ^. js "caption") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/caption MDN HTMLTableElement.caption documentation>
+getCaptionUnchecked :: (MonadDOM m) => HTMLTableElement -> m HTMLTableCaptionElement
+getCaptionUnchecked self = liftDOM (((self ^. js "caption") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.caption Mozilla HTMLTableElement.caption documentation> 
-getCaptionUnchecked ::
-                    (MonadDOM m) => HTMLTableElement -> m HTMLTableCaptionElement
-getCaptionUnchecked self
-  = liftDOM ((self ^. js "caption") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "tHead" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tHead Mozilla HTMLTableElement.tHead documentation> 
-setTHead ::
-         (MonadDOM m) =>
-           HTMLTableElement -> Maybe HTMLTableSectionElement -> m ()
-setTHead self val = liftDOM (self ^. jss "tHead" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tHead MDN HTMLTableElement.tHead documentation>
+getTHead :: (MonadDOM m) => HTMLTableElement -> m (Maybe HTMLTableSectionElement)
+getTHead self = liftDOM (((self ^. js "tHead") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tHead Mozilla HTMLTableElement.tHead documentation> 
-getTHead ::
-         (MonadDOM m) =>
-           HTMLTableElement -> m (Maybe HTMLTableSectionElement)
-getTHead self = liftDOM ((self ^. js "tHead") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tHead MDN HTMLTableElement.tHead documentation>
+getTHeadUnsafe :: (MonadDOM m, HasCallStack) => HTMLTableElement -> m HTMLTableSectionElement
+getTHeadUnsafe self = liftDOM ((((self ^. js "tHead") >>= 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> 
-getTHeadUnsafe ::
-               (MonadDOM m, HasCallStack) =>
-                 HTMLTableElement -> m HTMLTableSectionElement
-getTHeadUnsafe self
-  = liftDOM
-      (((self ^. js "tHead") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tHead MDN HTMLTableElement.tHead documentation>
+getTHeadUnchecked :: (MonadDOM m) => HTMLTableElement -> m HTMLTableSectionElement
+getTHeadUnchecked self = liftDOM (((self ^. js "tHead") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tHead Mozilla HTMLTableElement.tHead documentation> 
-getTHeadUnchecked ::
-                  (MonadDOM m) => HTMLTableElement -> m HTMLTableSectionElement
-getTHeadUnchecked self
-  = liftDOM ((self ^. js "tHead") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "tFoot" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tFoot Mozilla HTMLTableElement.tFoot documentation> 
-setTFoot ::
-         (MonadDOM m) =>
-           HTMLTableElement -> Maybe HTMLTableSectionElement -> m ()
-setTFoot self val = liftDOM (self ^. jss "tFoot" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tFoot MDN HTMLTableElement.tFoot documentation>
+getTFoot :: (MonadDOM m) => HTMLTableElement -> m (Maybe HTMLTableSectionElement)
+getTFoot self = liftDOM (((self ^. js "tFoot") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tFoot Mozilla HTMLTableElement.tFoot documentation> 
-getTFoot ::
-         (MonadDOM m) =>
-           HTMLTableElement -> m (Maybe HTMLTableSectionElement)
-getTFoot self = liftDOM ((self ^. js "tFoot") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tFoot MDN HTMLTableElement.tFoot documentation>
+getTFootUnsafe :: (MonadDOM m, HasCallStack) => HTMLTableElement -> m HTMLTableSectionElement
+getTFootUnsafe self = liftDOM ((((self ^. js "tFoot") >>= 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> 
-getTFootUnsafe ::
-               (MonadDOM m, HasCallStack) =>
-                 HTMLTableElement -> m HTMLTableSectionElement
-getTFootUnsafe self
-  = liftDOM
-      (((self ^. js "tFoot") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tFoot MDN HTMLTableElement.tFoot documentation>
+getTFootUnchecked :: (MonadDOM m) => HTMLTableElement -> m HTMLTableSectionElement
+getTFootUnchecked self = liftDOM (((self ^. js "tFoot") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tFoot Mozilla HTMLTableElement.tFoot documentation> 
-getTFootUnchecked ::
-                  (MonadDOM m) => HTMLTableElement -> m HTMLTableSectionElement
-getTFootUnchecked self
-  = liftDOM ((self ^. js "tFoot") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/tBodies MDN HTMLTableElement.tBodies documentation>
+getTBodies :: (MonadDOM m) => HTMLTableElement -> m HTMLCollection
+getTBodies self = liftDOM (((self ^. js "tBodies") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.rows Mozilla HTMLTableElement.rows documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/rows MDN HTMLTableElement.rows documentation>
 getRows :: (MonadDOM m) => HTMLTableElement -> m HTMLCollection
-getRows self = liftDOM ((self ^. js "rows") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tBodies Mozilla HTMLTableElement.tBodies documentation> 
-getTBodies :: (MonadDOM m) => HTMLTableElement -> m HTMLCollection
-getTBodies self
-  = liftDOM ((self ^. js "tBodies") >>= fromJSValUnchecked)
+getRows self = liftDOM (((self ^. js "rows") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.align Mozilla HTMLTableElement.align documentation> 
-setAlign ::
-         (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+-- | <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 (self ^. jss "align" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.align Mozilla HTMLTableElement.align documentation> 
-getAlign ::
-         (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/align MDN HTMLTableElement.align documentation>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getAlign self = liftDOM (((self ^. js "align") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.bgColor Mozilla HTMLTableElement.bgColor documentation> 
-setBgColor ::
-           (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
-setBgColor self val = liftDOM (self ^. jss "bgColor" (toJSVal val))
+-- | <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 (self ^. jss "border" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.bgColor Mozilla HTMLTableElement.bgColor documentation> 
-getBgColor ::
-           (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
-getBgColor self
-  = liftDOM ((self ^. js "bgColor") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/border MDN HTMLTableElement.border documentation>
+getBorder :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getBorder self = liftDOM (((self ^. js "border") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.border Mozilla HTMLTableElement.border documentation> 
-setBorder ::
-          (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
-setBorder self val = liftDOM (self ^. jss "border" (toJSVal val))
+-- | <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 (self ^. jss "frame" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.border Mozilla HTMLTableElement.border documentation> 
-getBorder ::
-          (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
-getBorder self
-  = liftDOM ((self ^. js "border") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/frame MDN HTMLTableElement.frame documentation>
+getFrame :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getFrame self = liftDOM (((self ^. js "frame") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.cellPadding Mozilla HTMLTableElement.cellPadding documentation> 
-setCellPadding ::
-               (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
-setCellPadding self val
-  = liftDOM (self ^. jss "cellPadding" (toJSVal val))
+-- | <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 (self ^. jss "rules" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.cellPadding Mozilla HTMLTableElement.cellPadding documentation> 
-getCellPadding ::
-               (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
-getCellPadding self
-  = liftDOM ((self ^. js "cellPadding") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/rules MDN HTMLTableElement.rules documentation>
+getRules :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getRules self = liftDOM (((self ^. js "rules") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.cellSpacing Mozilla HTMLTableElement.cellSpacing documentation> 
-setCellSpacing ::
-               (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
-setCellSpacing self val
-  = liftDOM (self ^. jss "cellSpacing" (toJSVal val))
+-- | <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 (self ^. jss "summary" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.cellSpacing Mozilla HTMLTableElement.cellSpacing documentation> 
-getCellSpacing ::
-               (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
-getCellSpacing self
-  = liftDOM ((self ^. js "cellSpacing") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/summary MDN HTMLTableElement.summary documentation>
+getSummary :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getSummary self = liftDOM (((self ^. js "summary") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.frame Mozilla HTMLTableElement.frame documentation> 
-setFrame ::
-         (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
-setFrame self val = liftDOM (self ^. jss "frame" (toJSVal val))
+-- | <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 (self ^. jss "width" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.frame Mozilla HTMLTableElement.frame documentation> 
-getFrame ::
-         (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
-getFrame self
-  = liftDOM ((self ^. js "frame") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/width MDN HTMLTableElement.width documentation>
+getWidth :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.rules Mozilla HTMLTableElement.rules documentation> 
-setRules ::
-         (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
-setRules self val = liftDOM (self ^. jss "rules" (toJSVal val))
+-- | <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 (self ^. jss "bgColor" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.rules Mozilla HTMLTableElement.rules documentation> 
-getRules ::
-         (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
-getRules self
-  = liftDOM ((self ^. js "rules") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/bgColor MDN HTMLTableElement.bgColor documentation>
+getBgColor :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getBgColor self = liftDOM (((self ^. js "bgColor") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.summary Mozilla HTMLTableElement.summary documentation> 
-setSummary ::
-           (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
-setSummary self val = liftDOM (self ^. jss "summary" (toJSVal val))
+-- | <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 (self ^. jss "cellPadding" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.summary Mozilla HTMLTableElement.summary documentation> 
-getSummary ::
-           (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
-getSummary self
-  = liftDOM ((self ^. js "summary") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/cellPadding MDN HTMLTableElement.cellPadding documentation>
+getCellPadding :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getCellPadding self = liftDOM (((self ^. js "cellPadding") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.width Mozilla HTMLTableElement.width documentation> 
-setWidth ::
-         (MonadDOM m, ToJSString val) => HTMLTableElement -> val -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+-- | <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 (self ^. jss "cellSpacing" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.width Mozilla HTMLTableElement.width documentation> 
-getWidth ::
-         (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
-getWidth self
-  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableElement/cellSpacing MDN HTMLTableElement.cellSpacing documentation>
+getCellSpacing :: (MonadDOM m, FromJSString result) => HTMLTableElement -> m result
+getCellSpacing self = liftDOM (((self ^. js "cellSpacing") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLTableRowElement.hs b/src/JSDOM/Generated/HTMLTableRowElement.hs
--- a/src/JSDOM/Generated/HTMLTableRowElement.hs
+++ b/src/JSDOM/Generated/HTMLTableRowElement.hs
@@ -1,116 +1,80 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLTableRowElement
-       (insertCell, insertCell_, deleteCell, getRowIndex,
-        getSectionRowIndex, getCells, setAlign, getAlign, setBgColor,
-        getBgColor, setCh, getCh, setChOff, getChOff, setVAlign, getVAlign,
-        HTMLTableRowElement(..), gTypeHTMLTableRowElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.insertCell Mozilla HTMLTableRowElement.insertCell documentation> 
-insertCell ::
-           (MonadDOM m) => HTMLTableRowElement -> Maybe Int -> m HTMLElement
-insertCell self index
-  = liftDOM
-      ((self ^. jsf "insertCell" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/deleteCell MDN HTMLTableRowElement.deleteCell documentation>
+deleteCell :: (MonadDOM m) => HTMLTableRowElement -> Int -> m ()
+deleteCell self index = liftDOM (void (self ^. jsf "deleteCell" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.insertCell Mozilla HTMLTableRowElement.insertCell documentation> 
-insertCell_ ::
-            (MonadDOM m) => HTMLTableRowElement -> Maybe Int -> m ()
-insertCell_ self index
-  = liftDOM (void (self ^. jsf "insertCell" [toJSVal index]))
+-- | <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 (((self ^. jsf "insertCell" [P.maybe (P.return jsUndefined) toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.deleteCell Mozilla HTMLTableRowElement.deleteCell documentation> 
-deleteCell :: (MonadDOM m) => HTMLTableRowElement -> Int -> m ()
-deleteCell self index
-  = liftDOM (void (self ^. jsf "deleteCell" [toJSVal index]))
+-- | <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 (self ^. jsf "insertCell" [P.maybe (P.return jsUndefined) toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.rowIndex Mozilla HTMLTableRowElement.rowIndex documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/rowIndex MDN HTMLTableRowElement.rowIndex documentation>
 getRowIndex :: (MonadDOM m) => HTMLTableRowElement -> m Int
-getRowIndex self
-  = liftDOM (round <$> ((self ^. js "rowIndex") >>= valToNumber))
+getRowIndex self = liftDOM ((P.round <$> ((self ^. js "rowIndex") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.sectionRowIndex Mozilla HTMLTableRowElement.sectionRowIndex documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/sectionRowIndex MDN HTMLTableRowElement.sectionRowIndex documentation>
 getSectionRowIndex :: (MonadDOM m) => HTMLTableRowElement -> m Int
-getSectionRowIndex self
-  = liftDOM
-      (round <$> ((self ^. js "sectionRowIndex") >>= valToNumber))
+getSectionRowIndex self = liftDOM ((P.round <$> ((self ^. js "sectionRowIndex") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.cells Mozilla HTMLTableRowElement.cells documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/cells MDN HTMLTableRowElement.cells documentation>
 getCells :: (MonadDOM m) => HTMLTableRowElement -> m HTMLCollection
-getCells self
-  = liftDOM ((self ^. js "cells") >>= fromJSValUnchecked)
+getCells self = liftDOM (((self ^. js "cells") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.align Mozilla HTMLTableRowElement.align documentation> 
-setAlign ::
-         (MonadDOM m, ToJSString val) => HTMLTableRowElement -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+-- | <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 (self ^. jss "align" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.align Mozilla HTMLTableRowElement.align documentation> 
-getAlign ::
-         (MonadDOM m, FromJSString result) =>
-           HTMLTableRowElement -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/align MDN HTMLTableRowElement.align documentation>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLTableRowElement -> m result
+getAlign self = liftDOM (((self ^. js "align") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.bgColor Mozilla HTMLTableRowElement.bgColor documentation> 
-setBgColor ::
-           (MonadDOM m, ToJSString val) => HTMLTableRowElement -> val -> m ()
-setBgColor self val = liftDOM (self ^. jss "bgColor" (toJSVal val))
+-- | <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 (self ^. jss "ch" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.bgColor Mozilla HTMLTableRowElement.bgColor documentation> 
-getBgColor ::
-           (MonadDOM m, FromJSString result) =>
-             HTMLTableRowElement -> m result
-getBgColor self
-  = liftDOM ((self ^. js "bgColor") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/ch MDN HTMLTableRowElement.ch documentation>
+getCh :: (MonadDOM m, FromJSString result) => HTMLTableRowElement -> m result
+getCh self = liftDOM (((self ^. js "ch") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.ch Mozilla HTMLTableRowElement.ch documentation> 
-setCh ::
-      (MonadDOM m, ToJSString val) => HTMLTableRowElement -> val -> m ()
-setCh self val = liftDOM (self ^. jss "ch" (toJSVal val))
+-- | <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 (self ^. jss "chOff" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.ch Mozilla HTMLTableRowElement.ch documentation> 
-getCh ::
-      (MonadDOM m, FromJSString result) =>
-        HTMLTableRowElement -> m result
-getCh self = liftDOM ((self ^. js "ch") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/chOff MDN HTMLTableRowElement.chOff documentation>
+getChOff :: (MonadDOM m, FromJSString result) => HTMLTableRowElement -> m result
+getChOff self = liftDOM (((self ^. js "chOff") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.chOff Mozilla HTMLTableRowElement.chOff documentation> 
-setChOff ::
-         (MonadDOM m, ToJSString val) => HTMLTableRowElement -> val -> m ()
-setChOff self val = liftDOM (self ^. jss "chOff" (toJSVal val))
+-- | <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 (self ^. jss "vAlign" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.chOff Mozilla HTMLTableRowElement.chOff documentation> 
-getChOff ::
-         (MonadDOM m, FromJSString result) =>
-           HTMLTableRowElement -> m result
-getChOff self
-  = liftDOM ((self ^. js "chOff") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/vAlign MDN HTMLTableRowElement.vAlign documentation>
+getVAlign :: (MonadDOM m, FromJSString result) => HTMLTableRowElement -> m result
+getVAlign self = liftDOM (((self ^. js "vAlign") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.vAlign Mozilla HTMLTableRowElement.vAlign documentation> 
-setVAlign ::
-          (MonadDOM m, ToJSString val) => HTMLTableRowElement -> val -> m ()
-setVAlign self val = liftDOM (self ^. jss "vAlign" (toJSVal val))
+-- | <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 (self ^. jss "bgColor" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.vAlign Mozilla HTMLTableRowElement.vAlign documentation> 
-getVAlign ::
-          (MonadDOM m, FromJSString result) =>
-            HTMLTableRowElement -> m result
-getVAlign self
-  = liftDOM ((self ^. js "vAlign") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableRowElement/bgColor MDN HTMLTableRowElement.bgColor documentation>
+getBgColor :: (MonadDOM m, FromJSString result) => HTMLTableRowElement -> m result
+getBgColor self = liftDOM (((self ^. js "bgColor") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLTableSectionElement.hs b/src/JSDOM/Generated/HTMLTableSectionElement.hs
--- a/src/JSDOM/Generated/HTMLTableSectionElement.hs
+++ b/src/JSDOM/Generated/HTMLTableSectionElement.hs
@@ -1,97 +1,64 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLTableSectionElement
-       (insertRow, insertRow_, deleteRow, setAlign, getAlign, setCh,
-        getCh, setChOff, getChOff, setVAlign, getVAlign, getRows,
-        HTMLTableSectionElement(..), gTypeHTMLTableSectionElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.insertRow Mozilla HTMLTableSectionElement.insertRow documentation> 
-insertRow ::
-          (MonadDOM m) =>
-            HTMLTableSectionElement -> Maybe Int -> m HTMLElement
-insertRow self index
-  = liftDOM
-      ((self ^. jsf "insertRow" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/deleteRow MDN HTMLTableSectionElement.deleteRow documentation>
+deleteRow :: (MonadDOM m) => HTMLTableSectionElement -> Int -> m ()
+deleteRow self index = liftDOM (void (self ^. jsf "deleteRow" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.insertRow Mozilla HTMLTableSectionElement.insertRow documentation> 
-insertRow_ ::
-           (MonadDOM m) => HTMLTableSectionElement -> Maybe Int -> m ()
-insertRow_ self index
-  = liftDOM (void (self ^. jsf "insertRow" [toJSVal index]))
+-- | <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 (((self ^. jsf "insertRow" [P.maybe (P.return jsUndefined) toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.deleteRow Mozilla HTMLTableSectionElement.deleteRow documentation> 
-deleteRow :: (MonadDOM m) => HTMLTableSectionElement -> Int -> m ()
-deleteRow self index
-  = liftDOM (void (self ^. jsf "deleteRow" [toJSVal index]))
+-- | <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 (self ^. jsf "insertRow" [P.maybe (P.return jsUndefined) toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.align Mozilla HTMLTableSectionElement.align documentation> 
-setAlign ::
-         (MonadDOM m, ToJSString val) =>
-           HTMLTableSectionElement -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/rows MDN HTMLTableSectionElement.rows documentation>
+getRows :: (MonadDOM m) => HTMLTableSectionElement -> m HTMLCollection
+getRows self = liftDOM (((self ^. js "rows") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.align Mozilla HTMLTableSectionElement.align documentation> 
-getAlign ::
-         (MonadDOM m, FromJSString result) =>
-           HTMLTableSectionElement -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "align" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.ch Mozilla HTMLTableSectionElement.ch documentation> 
-setCh ::
-      (MonadDOM m, ToJSString val) =>
-        HTMLTableSectionElement -> val -> m ()
-setCh self val = liftDOM (self ^. jss "ch" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/align MDN HTMLTableSectionElement.align documentation>
+getAlign :: (MonadDOM m, FromJSString result) => HTMLTableSectionElement -> m result
+getAlign self = liftDOM (((self ^. js "align") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.ch Mozilla HTMLTableSectionElement.ch documentation> 
-getCh ::
-      (MonadDOM m, FromJSString result) =>
-        HTMLTableSectionElement -> m result
-getCh self = liftDOM ((self ^. js "ch") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "ch" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.chOff Mozilla HTMLTableSectionElement.chOff documentation> 
-setChOff ::
-         (MonadDOM m, ToJSString val) =>
-           HTMLTableSectionElement -> val -> m ()
-setChOff self val = liftDOM (self ^. jss "chOff" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/ch MDN HTMLTableSectionElement.ch documentation>
+getCh :: (MonadDOM m, FromJSString result) => HTMLTableSectionElement -> m result
+getCh self = liftDOM (((self ^. js "ch") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.chOff Mozilla HTMLTableSectionElement.chOff documentation> 
-getChOff ::
-         (MonadDOM m, FromJSString result) =>
-           HTMLTableSectionElement -> m result
-getChOff self
-  = liftDOM ((self ^. js "chOff") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "chOff" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.vAlign Mozilla HTMLTableSectionElement.vAlign documentation> 
-setVAlign ::
-          (MonadDOM m, ToJSString val) =>
-            HTMLTableSectionElement -> val -> m ()
-setVAlign self val = liftDOM (self ^. jss "vAlign" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/chOff MDN HTMLTableSectionElement.chOff documentation>
+getChOff :: (MonadDOM m, FromJSString result) => HTMLTableSectionElement -> m result
+getChOff self = liftDOM (((self ^. js "chOff") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.vAlign Mozilla HTMLTableSectionElement.vAlign documentation> 
-getVAlign ::
-          (MonadDOM m, FromJSString result) =>
-            HTMLTableSectionElement -> m result
-getVAlign self
-  = liftDOM ((self ^. js "vAlign") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "vAlign" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.rows Mozilla HTMLTableSectionElement.rows documentation> 
-getRows ::
-        (MonadDOM m) => HTMLTableSectionElement -> m HTMLCollection
-getRows self = liftDOM ((self ^. js "rows") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTableSectionElement/vAlign MDN HTMLTableSectionElement.vAlign documentation>
+getVAlign :: (MonadDOM m, FromJSString result) => HTMLTableSectionElement -> m result
+getVAlign self = liftDOM (((self ^. js "vAlign") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLTemplateElement.hs b/src/JSDOM/Generated/HTMLTemplateElement.hs
--- a/src/JSDOM/Generated/HTMLTemplateElement.hs
+++ b/src/JSDOM/Generated/HTMLTemplateElement.hs
@@ -1,26 +1,68 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLTemplateElement
-       (getContent, HTMLTemplateElement(..), gTypeHTMLTemplateElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement.content Mozilla HTMLTemplateElement.content documentation> 
-getContent ::
-           (MonadDOM m) => HTMLTemplateElement -> m DocumentFragment
-getContent self
-  = liftDOM ((self ^. js "content") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/content MDN HTMLTemplateElement.content documentation>
+getContent :: (MonadDOM m) => HTMLTemplateElement -> m DocumentFragment
+getContent self = liftDOM (((self ^. js "content") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "shadowRootMode" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootMode MDN HTMLTemplateElement.shadowRootMode documentation>
+getShadowRootMode :: (MonadDOM m, FromJSString result) => HTMLTemplateElement -> m result
+getShadowRootMode self = liftDOM (((self ^. js "shadowRootMode") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootDelegatesFocus MDN HTMLTemplateElement.shadowRootDelegatesFocus documentation>
+setShadowRootDelegatesFocus :: (MonadDOM m) => HTMLTemplateElement -> Bool -> m ()
+setShadowRootDelegatesFocus self val = liftDOM (void (self ^. jss "shadowRootDelegatesFocus" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootDelegatesFocus MDN HTMLTemplateElement.shadowRootDelegatesFocus documentation>
+getShadowRootDelegatesFocus :: (MonadDOM m) => HTMLTemplateElement -> m Bool
+getShadowRootDelegatesFocus self = liftDOM (((self ^. js "shadowRootDelegatesFocus") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootSerializable MDN HTMLTemplateElement.shadowRootSerializable documentation>
+setShadowRootSerializable :: (MonadDOM m) => HTMLTemplateElement -> Bool -> m ()
+setShadowRootSerializable self val = liftDOM (void (self ^. jss "shadowRootSerializable" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootSerializable MDN HTMLTemplateElement.shadowRootSerializable documentation>
+getShadowRootSerializable :: (MonadDOM m) => HTMLTemplateElement -> m Bool
+getShadowRootSerializable self = liftDOM (((self ^. js "shadowRootSerializable") >>= valToBool))
+
+-- | <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 (self ^. jss "shadowRootSlotAssignment" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootSlotAssignment MDN HTMLTemplateElement.shadowRootSlotAssignment documentation>
+getShadowRootSlotAssignment :: (MonadDOM m, FromJSString result) => HTMLTemplateElement -> m result
+getShadowRootSlotAssignment self = liftDOM (((self ^. js "shadowRootSlotAssignment") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootClonable MDN HTMLTemplateElement.shadowRootClonable documentation>
+setShadowRootClonable :: (MonadDOM m) => HTMLTemplateElement -> Bool -> m ()
+setShadowRootClonable self val = liftDOM (void (self ^. jss "shadowRootClonable" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootClonable MDN HTMLTemplateElement.shadowRootClonable documentation>
+getShadowRootClonable :: (MonadDOM m) => HTMLTemplateElement -> m Bool
+getShadowRootClonable self = liftDOM (((self ^. js "shadowRootClonable") >>= valToBool))
+
+-- | <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 (self ^. jss "shadowRootCustomElementRegistry" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTemplateElement/shadowRootCustomElementRegistry MDN HTMLTemplateElement.shadowRootCustomElementRegistry documentation>
+getShadowRootCustomElementRegistry :: (MonadDOM m, FromJSString result) => HTMLTemplateElement -> m result
+getShadowRootCustomElementRegistry self = liftDOM (((self ^. js "shadowRootCustomElementRegistry") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLTextAreaElement.hs b/src/JSDOM/Generated/HTMLTextAreaElement.hs
--- a/src/JSDOM/Generated/HTMLTextAreaElement.hs
+++ b/src/JSDOM/Generated/HTMLTextAreaElement.hs
@@ -1,328 +1,224 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLTextAreaElement
-       (checkValidity, checkValidity_, reportValidity, reportValidity_,
-        setCustomValidity, select, setRangeText, setRangeText4,
-        setSelectionRange, setAutofocus, getAutofocus, setDirName,
-        getDirName, setDisabled, getDisabled, getForm, setMinLength,
-        getMinLength, setMaxLength, getMaxLength, setName, getName,
-        setPlaceholder, getPlaceholder, setReadOnly, getReadOnly,
-        setRequired, getRequired, setRows, getRows, setCols, getCols,
-        setWrap, getWrap, getType, setDefaultValue, getDefaultValue,
-        setValue, getValue, getTextLength, getWillValidate, getValidity,
-        getValidationMessage, getLabels, setSelectionStart,
-        getSelectionStart, setSelectionEnd, getSelectionEnd,
-        setSelectionDirection, getSelectionDirection, setAutocomplete,
-        getAutocomplete, HTMLTextAreaElement(..), gTypeHTMLTextAreaElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.checkValidity Mozilla HTMLTextAreaElement.checkValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/checkValidity MDN HTMLTextAreaElement.checkValidity documentation>
 checkValidity :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
-checkValidity self
-  = liftDOM ((self ^. jsf "checkValidity" ()) >>= valToBool)
+checkValidity self = liftDOM (((self ^. jsf "checkValidity" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.checkValidity Mozilla HTMLTextAreaElement.checkValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/checkValidity MDN HTMLTextAreaElement.checkValidity documentation>
 checkValidity_ :: (MonadDOM m) => HTMLTextAreaElement -> m ()
-checkValidity_ self
-  = liftDOM (void (self ^. jsf "checkValidity" ()))
+checkValidity_ self = liftDOM (void (self ^. jsf "checkValidity" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.reportValidity Mozilla HTMLTextAreaElement.reportValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/reportValidity MDN HTMLTextAreaElement.reportValidity documentation>
 reportValidity :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
-reportValidity self
-  = liftDOM ((self ^. jsf "reportValidity" ()) >>= valToBool)
+reportValidity self = liftDOM (((self ^. jsf "reportValidity" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.reportValidity Mozilla HTMLTextAreaElement.reportValidity documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/reportValidity MDN HTMLTextAreaElement.reportValidity documentation>
 reportValidity_ :: (MonadDOM m) => HTMLTextAreaElement -> m ()
-reportValidity_ self
-  = liftDOM (void (self ^. jsf "reportValidity" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setCustomValidity Mozilla HTMLTextAreaElement.setCustomValidity documentation> 
-setCustomValidity ::
-                  (MonadDOM m, ToJSString error) =>
-                    HTMLTextAreaElement -> error -> m ()
-setCustomValidity self error
-  = liftDOM (void (self ^. jsf "setCustomValidity" [toJSVal error]))
+reportValidity_ self = liftDOM (void (self ^. jsf "reportValidity" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.select Mozilla HTMLTextAreaElement.select documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/select MDN HTMLTextAreaElement.select documentation>
 select :: (MonadDOM m) => HTMLTextAreaElement -> m ()
 select self = liftDOM (void (self ^. jsf "select" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setRangeText Mozilla HTMLTextAreaElement.setRangeText documentation> 
-setRangeText ::
-             (MonadDOM m, ToJSString replacement) =>
-               HTMLTextAreaElement -> replacement -> m ()
-setRangeText self replacement
-  = liftDOM (void (self ^. jsf "setRangeText" [toJSVal replacement]))
+-- | <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 (self ^. jsf "setCustomValidity" [toJSVal error]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setRangeText Mozilla HTMLTextAreaElement.setRangeText documentation> 
-setRangeText4 ::
-              (MonadDOM m, ToJSString replacement, ToJSString selectionMode) =>
-                HTMLTextAreaElement ->
-                  replacement -> Word -> Word -> Maybe selectionMode -> m ()
-setRangeText4 self replacement start end selectionMode
-  = liftDOM
-      (void
-         (self ^. jsf "setRangeText"
-            [toJSVal replacement, toJSVal start, toJSVal end,
-             toJSVal selectionMode]))
+-- | <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 (self ^. jsf "setRangeText" [toJSVal replacement]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setSelectionRange Mozilla HTMLTextAreaElement.setSelectionRange documentation> 
-setSelectionRange ::
-                  (MonadDOM m, ToJSString direction) =>
-                    HTMLTextAreaElement ->
-                      Maybe Int -> Maybe Int -> Maybe direction -> m ()
-setSelectionRange self start end direction
-  = liftDOM
-      (void
-         (self ^. jsf "setSelectionRange"
-            [toJSVal start, toJSVal end, toJSVal direction]))
+-- | <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 (self ^. jsf "setRangeText" [toJSVal replacement, toJSVal start, toJSVal end, P.maybe (P.return jsUndefined) toJSVal selectionMode]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autofocus Mozilla HTMLTextAreaElement.autofocus documentation> 
-setAutofocus :: (MonadDOM m) => HTMLTextAreaElement -> Bool -> m ()
-setAutofocus self val
-  = liftDOM (self ^. jss "autofocus" (toJSVal val))
+-- | <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 (self ^. jsf "setSelectionRange" [toJSVal start, toJSVal end, P.maybe (P.return jsUndefined) toJSVal direction]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autofocus Mozilla HTMLTextAreaElement.autofocus documentation> 
-getAutofocus :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
-getAutofocus self
-  = liftDOM ((self ^. js "autofocus") >>= valToBool)
+-- | <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 (self ^. jss "autocomplete" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.dirName Mozilla HTMLTextAreaElement.dirName documentation> 
-setDirName ::
-           (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
-setDirName self val = liftDOM (self ^. jss "dirName" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/autocomplete MDN HTMLTextAreaElement.autocomplete documentation>
+getAutocomplete :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getAutocomplete self = liftDOM (((self ^. js "autocomplete") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.dirName Mozilla HTMLTextAreaElement.dirName documentation> 
-getDirName ::
-           (MonadDOM m, FromJSString result) =>
-             HTMLTextAreaElement -> m result
-getDirName self
-  = liftDOM ((self ^. js "dirName") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/cols MDN HTMLTextAreaElement.cols documentation>
+setCols :: (MonadDOM m) => HTMLTextAreaElement -> Word -> m ()
+setCols self val = liftDOM (void (self ^. jss "cols" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.disabled Mozilla HTMLTextAreaElement.disabled documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/cols MDN HTMLTextAreaElement.cols documentation>
+getCols :: (MonadDOM m) => HTMLTextAreaElement -> m Word
+getCols self = liftDOM ((P.round <$> ((self ^. js "cols") >>= valToNumber)))
+
+-- | <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 (self ^. jss "dirName" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/dirName MDN HTMLTextAreaElement.dirName documentation>
+getDirName :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getDirName self = liftDOM (((self ^. js "dirName") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/disabled MDN HTMLTextAreaElement.disabled documentation>
 setDisabled :: (MonadDOM m) => HTMLTextAreaElement -> Bool -> m ()
-setDisabled self val
-  = liftDOM (self ^. jss "disabled" (toJSVal val))
+setDisabled self val = liftDOM (void (self ^. jss "disabled" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.disabled Mozilla HTMLTextAreaElement.disabled documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/disabled MDN HTMLTextAreaElement.disabled documentation>
 getDisabled :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
-getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+getDisabled self = liftDOM (((self ^. js "disabled") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.form Mozilla HTMLTextAreaElement.form documentation> 
-getForm :: (MonadDOM m) => HTMLTextAreaElement -> m HTMLFormElement
-getForm self = liftDOM ((self ^. js "form") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/form MDN HTMLTextAreaElement.form documentation>
+getForm :: (MonadDOM m) => HTMLTextAreaElement -> m (Maybe HTMLFormElement)
+getForm self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.minLength Mozilla HTMLTextAreaElement.minLength documentation> 
-setMinLength :: (MonadDOM m) => HTMLTextAreaElement -> Int -> m ()
-setMinLength self val
-  = liftDOM (self ^. jss "minLength" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/form MDN HTMLTextAreaElement.form documentation>
+getFormUnsafe :: (MonadDOM m, HasCallStack) => HTMLTextAreaElement -> m HTMLFormElement
+getFormUnsafe self = liftDOM ((((self ^. js "form") >>= 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> 
-getMinLength :: (MonadDOM m) => HTMLTextAreaElement -> m Int
-getMinLength self
-  = liftDOM (round <$> ((self ^. js "minLength") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/form MDN HTMLTextAreaElement.form documentation>
+getFormUnchecked :: (MonadDOM m) => HTMLTextAreaElement -> m HTMLFormElement
+getFormUnchecked self = liftDOM (((self ^. js "form") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.maxLength Mozilla HTMLTextAreaElement.maxLength documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/maxLength MDN HTMLTextAreaElement.maxLength documentation>
 setMaxLength :: (MonadDOM m) => HTMLTextAreaElement -> Int -> m ()
-setMaxLength self val
-  = liftDOM (self ^. jss "maxLength" (toJSVal val))
+setMaxLength self val = liftDOM (void (self ^. jss "maxLength" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.maxLength Mozilla HTMLTextAreaElement.maxLength documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/maxLength MDN HTMLTextAreaElement.maxLength documentation>
 getMaxLength :: (MonadDOM m) => HTMLTextAreaElement -> m Int
-getMaxLength self
-  = liftDOM (round <$> ((self ^. js "maxLength") >>= valToNumber))
+getMaxLength self = liftDOM ((P.round <$> ((self ^. js "maxLength") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.name Mozilla HTMLTextAreaElement.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/minLength MDN HTMLTextAreaElement.minLength documentation>
+setMinLength :: (MonadDOM m) => HTMLTextAreaElement -> Int -> m ()
+setMinLength self val = liftDOM (void (self ^. jss "minLength" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.name Mozilla HTMLTextAreaElement.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) =>
-          HTMLTextAreaElement -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/minLength MDN HTMLTextAreaElement.minLength documentation>
+getMinLength :: (MonadDOM m) => HTMLTextAreaElement -> m Int
+getMinLength self = liftDOM ((P.round <$> ((self ^. js "minLength") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.placeholder Mozilla HTMLTextAreaElement.placeholder documentation> 
-setPlaceholder ::
-               (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
-setPlaceholder self val
-  = liftDOM (self ^. jss "placeholder" (toJSVal val))
+-- | <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 (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.placeholder Mozilla HTMLTextAreaElement.placeholder documentation> 
-getPlaceholder ::
-               (MonadDOM m, FromJSString result) =>
-                 HTMLTextAreaElement -> m result
-getPlaceholder self
-  = liftDOM ((self ^. js "placeholder") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/name MDN HTMLTextAreaElement.name documentation>
+getName :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.readOnly Mozilla HTMLTextAreaElement.readOnly documentation> 
+-- | <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 (self ^. jss "placeholder" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/placeholder MDN HTMLTextAreaElement.placeholder documentation>
+getPlaceholder :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getPlaceholder self = liftDOM (((self ^. js "placeholder") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/readOnly MDN HTMLTextAreaElement.readOnly documentation>
 setReadOnly :: (MonadDOM m) => HTMLTextAreaElement -> Bool -> m ()
-setReadOnly self val
-  = liftDOM (self ^. jss "readOnly" (toJSVal val))
+setReadOnly self val = liftDOM (void (self ^. jss "readOnly" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.readOnly Mozilla HTMLTextAreaElement.readOnly documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/readOnly MDN HTMLTextAreaElement.readOnly documentation>
 getReadOnly :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
-getReadOnly self = liftDOM ((self ^. js "readOnly") >>= valToBool)
+getReadOnly self = liftDOM (((self ^. js "readOnly") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.required Mozilla HTMLTextAreaElement.required documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/required MDN HTMLTextAreaElement.required documentation>
 setRequired :: (MonadDOM m) => HTMLTextAreaElement -> Bool -> m ()
-setRequired self val
-  = liftDOM (self ^. jss "required" (toJSVal val))
+setRequired self val = liftDOM (void (self ^. jss "required" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.required Mozilla HTMLTextAreaElement.required documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/required MDN HTMLTextAreaElement.required documentation>
 getRequired :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
-getRequired self = liftDOM ((self ^. js "required") >>= valToBool)
+getRequired self = liftDOM (((self ^. js "required") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.rows Mozilla HTMLTextAreaElement.rows documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/rows MDN HTMLTextAreaElement.rows documentation>
 setRows :: (MonadDOM m) => HTMLTextAreaElement -> Word -> m ()
-setRows self val = liftDOM (self ^. jss "rows" (toJSVal val))
+setRows self val = liftDOM (void (self ^. jss "rows" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.rows Mozilla HTMLTextAreaElement.rows documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/rows MDN HTMLTextAreaElement.rows documentation>
 getRows :: (MonadDOM m) => HTMLTextAreaElement -> m Word
-getRows self
-  = liftDOM (round <$> ((self ^. js "rows") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.cols Mozilla HTMLTextAreaElement.cols documentation> 
-setCols :: (MonadDOM m) => HTMLTextAreaElement -> Word -> m ()
-setCols self val = liftDOM (self ^. jss "cols" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.cols Mozilla HTMLTextAreaElement.cols documentation> 
-getCols :: (MonadDOM m) => HTMLTextAreaElement -> m Word
-getCols self
-  = liftDOM (round <$> ((self ^. js "cols") >>= valToNumber))
+getRows self = liftDOM ((P.round <$> ((self ^. js "rows") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.wrap Mozilla HTMLTextAreaElement.wrap documentation> 
-setWrap ::
-        (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
-setWrap self val = liftDOM (self ^. jss "wrap" (toJSVal val))
+-- | <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 (self ^. jss "wrap" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.wrap Mozilla HTMLTextAreaElement.wrap documentation> 
-getWrap ::
-        (MonadDOM m, FromJSString result) =>
-          HTMLTextAreaElement -> m result
-getWrap self = liftDOM ((self ^. js "wrap") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/wrap MDN HTMLTextAreaElement.wrap documentation>
+getWrap :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getWrap self = liftDOM (((self ^. js "wrap") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.type Mozilla HTMLTextAreaElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) =>
-          HTMLTextAreaElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/type MDN HTMLTextAreaElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.defaultValue Mozilla HTMLTextAreaElement.defaultValue documentation> 
-setDefaultValue ::
-                (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
-setDefaultValue self val
-  = liftDOM (self ^. jss "defaultValue" (toJSVal val))
+-- | <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 (self ^. jss "defaultValue" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.defaultValue Mozilla HTMLTextAreaElement.defaultValue documentation> 
-getDefaultValue ::
-                (MonadDOM m, FromJSString result) =>
-                  HTMLTextAreaElement -> m result
-getDefaultValue self
-  = liftDOM ((self ^. js "defaultValue") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/defaultValue MDN HTMLTextAreaElement.defaultValue documentation>
+getDefaultValue :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getDefaultValue self = liftDOM (((self ^. js "defaultValue") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.value Mozilla HTMLTextAreaElement.value documentation> 
-setValue ::
-         (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+-- | <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 (self ^. jss "value" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.value Mozilla HTMLTextAreaElement.value documentation> 
-getValue ::
-         (MonadDOM m, FromJSString result) =>
-           HTMLTextAreaElement -> m result
-getValue self
-  = liftDOM ((self ^. js "value") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/value MDN HTMLTextAreaElement.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getValue self = liftDOM (((self ^. js "value") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.textLength Mozilla HTMLTextAreaElement.textLength documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/textLength MDN HTMLTextAreaElement.textLength documentation>
 getTextLength :: (MonadDOM m) => HTMLTextAreaElement -> m Word
-getTextLength self
-  = liftDOM (round <$> ((self ^. js "textLength") >>= valToNumber))
+getTextLength self = liftDOM ((P.round <$> ((self ^. js "textLength") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.willValidate Mozilla HTMLTextAreaElement.willValidate documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/willValidate MDN HTMLTextAreaElement.willValidate documentation>
 getWillValidate :: (MonadDOM m) => HTMLTextAreaElement -> m Bool
-getWillValidate self
-  = liftDOM ((self ^. js "willValidate") >>= valToBool)
+getWillValidate self = liftDOM (((self ^. js "willValidate") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.validity Mozilla HTMLTextAreaElement.validity documentation> 
-getValidity ::
-            (MonadDOM m) => HTMLTextAreaElement -> m ValidityState
-getValidity self
-  = liftDOM ((self ^. js "validity") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/validity MDN HTMLTextAreaElement.validity documentation>
+getValidity :: (MonadDOM m) => HTMLTextAreaElement -> m ValidityState
+getValidity self = liftDOM (((self ^. js "validity") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.validationMessage Mozilla HTMLTextAreaElement.validationMessage documentation> 
-getValidationMessage ::
-                     (MonadDOM m, FromJSString result) =>
-                       HTMLTextAreaElement -> m result
-getValidationMessage self
-  = liftDOM ((self ^. js "validationMessage") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/validationMessage MDN HTMLTextAreaElement.validationMessage documentation>
+getValidationMessage :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getValidationMessage self = liftDOM (((self ^. js "validationMessage") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.labels Mozilla HTMLTextAreaElement.labels documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/labels MDN HTMLTextAreaElement.labels documentation>
 getLabels :: (MonadDOM m) => HTMLTextAreaElement -> m NodeList
-getLabels self
-  = liftDOM ((self ^. js "labels") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionStart Mozilla HTMLTextAreaElement.selectionStart documentation> 
-setSelectionStart ::
-                  (MonadDOM m) => HTMLTextAreaElement -> Int -> m ()
-setSelectionStart self val
-  = liftDOM (self ^. jss "selectionStart" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionStart Mozilla HTMLTextAreaElement.selectionStart documentation> 
-getSelectionStart :: (MonadDOM m) => HTMLTextAreaElement -> m Int
-getSelectionStart self
-  = liftDOM
-      (round <$> ((self ^. js "selectionStart") >>= valToNumber))
+getLabels self = liftDOM (((self ^. js "labels") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionEnd Mozilla HTMLTextAreaElement.selectionEnd documentation> 
-setSelectionEnd ::
-                (MonadDOM m) => HTMLTextAreaElement -> Int -> m ()
-setSelectionEnd self val
-  = liftDOM (self ^. jss "selectionEnd" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/selectionStart MDN HTMLTextAreaElement.selectionStart documentation>
+setSelectionStart :: (MonadDOM m) => HTMLTextAreaElement -> Word -> m ()
+setSelectionStart self val = liftDOM (void (self ^. jss "selectionStart" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionEnd Mozilla HTMLTextAreaElement.selectionEnd documentation> 
-getSelectionEnd :: (MonadDOM m) => HTMLTextAreaElement -> m Int
-getSelectionEnd self
-  = liftDOM (round <$> ((self ^. js "selectionEnd") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/selectionStart MDN HTMLTextAreaElement.selectionStart documentation>
+getSelectionStart :: (MonadDOM m) => HTMLTextAreaElement -> m Word
+getSelectionStart self = liftDOM ((P.round <$> ((self ^. js "selectionStart") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionDirection Mozilla HTMLTextAreaElement.selectionDirection documentation> 
-setSelectionDirection ::
-                      (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
-setSelectionDirection self val
-  = liftDOM (self ^. jss "selectionDirection" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/selectionEnd MDN HTMLTextAreaElement.selectionEnd documentation>
+setSelectionEnd :: (MonadDOM m) => HTMLTextAreaElement -> Word -> m ()
+setSelectionEnd self val = liftDOM (void (self ^. jss "selectionEnd" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionDirection Mozilla HTMLTextAreaElement.selectionDirection documentation> 
-getSelectionDirection ::
-                      (MonadDOM m, FromJSString result) =>
-                        HTMLTextAreaElement -> m result
-getSelectionDirection self
-  = liftDOM
-      ((self ^. js "selectionDirection") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/selectionEnd MDN HTMLTextAreaElement.selectionEnd documentation>
+getSelectionEnd :: (MonadDOM m) => HTMLTextAreaElement -> m Word
+getSelectionEnd self = liftDOM ((P.round <$> ((self ^. js "selectionEnd") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autocomplete Mozilla HTMLTextAreaElement.autocomplete documentation> 
-setAutocomplete ::
-                (MonadDOM m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
-setAutocomplete self val
-  = liftDOM (self ^. jss "autocomplete" (toJSVal val))
+-- | <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 (self ^. jss "selectionDirection" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autocomplete Mozilla HTMLTextAreaElement.autocomplete documentation> 
-getAutocomplete ::
-                (MonadDOM m, FromJSString result) =>
-                  HTMLTextAreaElement -> m result
-getAutocomplete self
-  = liftDOM ((self ^. js "autocomplete") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTextAreaElement/selectionDirection MDN HTMLTextAreaElement.selectionDirection documentation>
+getSelectionDirection :: (MonadDOM m, FromJSString result) => HTMLTextAreaElement -> m result
+getSelectionDirection self = liftDOM (((self ^. js "selectionDirection") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLTimeElement.hs b/src/JSDOM/Generated/HTMLTimeElement.hs
--- a/src/JSDOM/Generated/HTMLTimeElement.hs
+++ b/src/JSDOM/Generated/HTMLTimeElement.hs
@@ -1,33 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLTimeElement
-       (setDateTime, getDateTime, HTMLTimeElement(..),
-        gTypeHTMLTimeElement)
+       (setDateTime, getDateTime, HTMLTimeElement(..), gTypeHTMLTimeElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTimeElement.dateTime Mozilla HTMLTimeElement.dateTime documentation> 
-setDateTime ::
-            (MonadDOM m, ToJSString val) => HTMLTimeElement -> val -> m ()
-setDateTime self val
-  = liftDOM (self ^. jss "dateTime" (toJSVal val))
+-- | <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 (self ^. jss "dateTime" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTimeElement.dateTime Mozilla HTMLTimeElement.dateTime documentation> 
-getDateTime ::
-            (MonadDOM m, FromJSString result) => HTMLTimeElement -> m result
-getDateTime self
-  = liftDOM ((self ^. js "dateTime") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTimeElement/dateTime MDN HTMLTimeElement.dateTime documentation>
+getDateTime :: (MonadDOM m, FromJSString result) => HTMLTimeElement -> m result
+getDateTime self = liftDOM (((self ^. js "dateTime") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLTitleElement.hs b/src/JSDOM/Generated/HTMLTitleElement.hs
--- a/src/JSDOM/Generated/HTMLTitleElement.hs
+++ b/src/JSDOM/Generated/HTMLTitleElement.hs
@@ -1,30 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLTitleElement
        (setText, getText, HTMLTitleElement(..), gTypeHTMLTitleElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement.text Mozilla HTMLTitleElement.text documentation> 
-setText ::
-        (MonadDOM m, ToJSString val) => HTMLTitleElement -> val -> m ()
-setText self val = liftDOM (self ^. jss "text" (toJSVal val))
+-- | <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 (self ^. jss "text" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement.text Mozilla HTMLTitleElement.text documentation> 
-getText ::
-        (MonadDOM m, FromJSString result) => HTMLTitleElement -> m result
-getText self = liftDOM ((self ^. js "text") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTitleElement/text MDN HTMLTitleElement.text documentation>
+getText :: (MonadDOM m, FromJSString result) => HTMLTitleElement -> m result
+getText self = liftDOM (((self ^. js "text") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLTrackElement.hs b/src/JSDOM/Generated/HTMLTrackElement.hs
--- a/src/JSDOM/Generated/HTMLTrackElement.hs
+++ b/src/JSDOM/Generated/HTMLTrackElement.hs
@@ -1,87 +1,72 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLTrackElement
-       (pattern NONE, pattern LOADING, pattern LOADED, pattern ERROR,
-        setKind, getKind, setSrc, getSrc, setSrclang, getSrclang, setLabel,
-        getLabel, setDefault, getDefault, getReadyState, getTrack,
-        HTMLTrackElement(..), gTypeHTMLTrackElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-pattern NONE = 0
-pattern LOADING = 1
-pattern LOADED = 2
-pattern ERROR = 3
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.kind Mozilla HTMLTrackElement.kind documentation> 
-setKind ::
-        (MonadDOM m, ToJSString val) => HTMLTrackElement -> val -> m ()
-setKind self val = liftDOM (self ^. jss "kind" (toJSVal val))
+-- | <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 (self ^. jss "kind" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.kind Mozilla HTMLTrackElement.kind documentation> 
-getKind ::
-        (MonadDOM m, FromJSString result) => HTMLTrackElement -> m result
-getKind self = liftDOM ((self ^. js "kind") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/kind MDN HTMLTrackElement.kind documentation>
+getKind :: (MonadDOM m, FromJSString result) => HTMLTrackElement -> m result
+getKind self = liftDOM (((self ^. js "kind") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.src Mozilla HTMLTrackElement.src documentation> 
-setSrc ::
-       (MonadDOM m, ToJSString val) => HTMLTrackElement -> val -> m ()
-setSrc self val = liftDOM (self ^. jss "src" (toJSVal val))
+-- | <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 (self ^. jss "src" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.src Mozilla HTMLTrackElement.src documentation> 
-getSrc ::
-       (MonadDOM m, FromJSString result) => HTMLTrackElement -> m result
-getSrc self = liftDOM ((self ^. js "src") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/src MDN HTMLTrackElement.src documentation>
+getSrc :: (MonadDOM m, FromJSString result) => HTMLTrackElement -> m result
+getSrc self = liftDOM (((self ^. js "src") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.srclang Mozilla HTMLTrackElement.srclang documentation> 
-setSrclang ::
-           (MonadDOM m, ToJSString val) => HTMLTrackElement -> val -> m ()
-setSrclang self val = liftDOM (self ^. jss "srclang" (toJSVal val))
+-- | <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 (self ^. jss "srclang" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.srclang Mozilla HTMLTrackElement.srclang documentation> 
-getSrclang ::
-           (MonadDOM m, FromJSString result) => HTMLTrackElement -> m result
-getSrclang self
-  = liftDOM ((self ^. js "srclang") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/srclang MDN HTMLTrackElement.srclang documentation>
+getSrclang :: (MonadDOM m, FromJSString result) => HTMLTrackElement -> m result
+getSrclang self = liftDOM (((self ^. js "srclang") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.label Mozilla HTMLTrackElement.label documentation> 
-setLabel ::
-         (MonadDOM m, ToJSString val) => HTMLTrackElement -> val -> m ()
-setLabel self val = liftDOM (self ^. jss "label" (toJSVal val))
+-- | <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 (self ^. jss "label" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.label Mozilla HTMLTrackElement.label documentation> 
-getLabel ::
-         (MonadDOM m, FromJSString result) => HTMLTrackElement -> m result
-getLabel self
-  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/label MDN HTMLTrackElement.label documentation>
+getLabel :: (MonadDOM m, FromJSString result) => HTMLTrackElement -> m result
+getLabel self = liftDOM (((self ^. js "label") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.default Mozilla HTMLTrackElement.default documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/default MDN HTMLTrackElement.default documentation>
 setDefault :: (MonadDOM m) => HTMLTrackElement -> Bool -> m ()
-setDefault self val = liftDOM (self ^. jss "default" (toJSVal val))
+setDefault self val = liftDOM (void (self ^. jss "default" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.default Mozilla HTMLTrackElement.default documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/default MDN HTMLTrackElement.default documentation>
 getDefault :: (MonadDOM m) => HTMLTrackElement -> m Bool
-getDefault self = liftDOM ((self ^. js "default") >>= valToBool)
+getDefault self = liftDOM (((self ^. js "default") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.readyState Mozilla HTMLTrackElement.readyState documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/readyState MDN HTMLTrackElement.readyState documentation>
 getReadyState :: (MonadDOM m) => HTMLTrackElement -> m Word
-getReadyState self
-  = liftDOM (round <$> ((self ^. js "readyState") >>= valToNumber))
+getReadyState self = liftDOM ((P.round <$> ((self ^. js "readyState") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.track Mozilla HTMLTrackElement.track documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/track MDN HTMLTrackElement.track documentation>
 getTrack :: (MonadDOM m) => HTMLTrackElement -> m TextTrack
-getTrack self
-  = liftDOM ((self ^. js "track") >>= fromJSValUnchecked)
+getTrack self = liftDOM (((self ^. js "track") >>= fromJSValUnchecked))
+
+pattern NONE = 0
+
+pattern LOADING = 1
+
+pattern LOADED = 2
+
+pattern ERROR = 3
diff --git a/src/JSDOM/Generated/HTMLUListElement.hs b/src/JSDOM/Generated/HTMLUListElement.hs
--- a/src/JSDOM/Generated/HTMLUListElement.hs
+++ b/src/JSDOM/Generated/HTMLUListElement.hs
@@ -1,39 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLUListElement
-       (setCompact, getCompact, setType, getType, HTMLUListElement(..),
-        gTypeHTMLUListElement)
+       (setCompact, getCompact, setType, getType, HTMLUListElement(..), gTypeHTMLUListElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.compact Mozilla HTMLUListElement.compact documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLUListElement/compact MDN HTMLUListElement.compact documentation>
 setCompact :: (MonadDOM m) => HTMLUListElement -> Bool -> m ()
-setCompact self val = liftDOM (self ^. jss "compact" (toJSVal val))
+setCompact self val = liftDOM (void (self ^. jss "compact" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.compact Mozilla HTMLUListElement.compact documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLUListElement/compact MDN HTMLUListElement.compact documentation>
 getCompact :: (MonadDOM m) => HTMLUListElement -> m Bool
-getCompact self = liftDOM ((self ^. js "compact") >>= valToBool)
+getCompact self = liftDOM (((self ^. js "compact") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.type Mozilla HTMLUListElement.type documentation> 
-setType ::
-        (MonadDOM m, ToJSString val) => HTMLUListElement -> val -> m ()
-setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+-- | <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 (self ^. jss "type" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.type Mozilla HTMLUListElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => HTMLUListElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "type") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HTMLUnknownElement.hs b/src/JSDOM/Generated/HTMLUnknownElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/HTMLUnknownElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.HTMLUnknownElement
+       (HTMLUnknownElement(..), gTypeHTMLUnknownElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/HTMLVideoElement.hs b/src/JSDOM/Generated/HTMLVideoElement.hs
--- a/src/JSDOM/Generated/HTMLVideoElement.hs
+++ b/src/JSDOM/Generated/HTMLVideoElement.hs
@@ -1,171 +1,100 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HTMLVideoElement
-       (webkitEnterFullscreen, webkitExitFullscreen,
-        webkitEnterFullScreen, webkitExitFullScreen,
-        webkitSupportsPresentationMode, webkitSupportsPresentationMode_,
-        webkitSetPresentationMode, setWidth, getWidth, setHeight,
-        getHeight, getVideoWidth, getVideoHeight, setPoster, getPoster,
-        setPlaysInline, getPlaysInline, getWebkitSupportsFullscreen,
-        getWebkitDisplayingFullscreen,
-        setWebkitWirelessVideoPlaybackDisabled,
-        getWebkitWirelessVideoPlaybackDisabled, getWebkitDecodedFrameCount,
-        getWebkitDroppedFrameCount, getWebkitPresentationMode,
-        HTMLVideoElement(..), gTypeHTMLVideoElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitEnterFullscreen Mozilla HTMLVideoElement.webkitEnterFullscreen documentation> 
-webkitEnterFullscreen :: (MonadDOM m) => HTMLVideoElement -> m ()
-webkitEnterFullscreen self
-  = liftDOM (void (self ^. jsf "webkitEnterFullscreen" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/cancelVideoFrameCallback MDN HTMLVideoElement.cancelVideoFrameCallback documentation>
+cancelVideoFrameCallback :: (MonadDOM m) => HTMLVideoElement -> Word -> m ()
+cancelVideoFrameCallback self handle = liftDOM (void (self ^. jsf "cancelVideoFrameCallback" [toJSVal handle]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitExitFullscreen Mozilla HTMLVideoElement.webkitExitFullscreen documentation> 
-webkitExitFullscreen :: (MonadDOM m) => HTMLVideoElement -> m ()
-webkitExitFullscreen self
-  = liftDOM (void (self ^. jsf "webkitExitFullscreen" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/getVideoPlaybackQuality MDN HTMLVideoElement.getVideoPlaybackQuality documentation>
+getVideoPlaybackQuality :: (MonadDOM m) => HTMLVideoElement -> m VideoPlaybackQuality
+getVideoPlaybackQuality self = liftDOM (((self ^. jsf "getVideoPlaybackQuality" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitEnterFullScreen Mozilla HTMLVideoElement.webkitEnterFullScreen documentation> 
-webkitEnterFullScreen :: (MonadDOM m) => HTMLVideoElement -> m ()
-webkitEnterFullScreen self
-  = liftDOM (void (self ^. jsf "webkitEnterFullScreen" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/getVideoPlaybackQuality MDN HTMLVideoElement.getVideoPlaybackQuality documentation>
+getVideoPlaybackQuality_ :: (MonadDOM m) => HTMLVideoElement -> m ()
+getVideoPlaybackQuality_ self = liftDOM (void (self ^. jsf "getVideoPlaybackQuality" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitExitFullScreen Mozilla HTMLVideoElement.webkitExitFullScreen documentation> 
-webkitExitFullScreen :: (MonadDOM m) => HTMLVideoElement -> m ()
-webkitExitFullScreen self
-  = liftDOM (void (self ^. jsf "webkitExitFullScreen" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/requestPictureInPicture MDN HTMLVideoElement.requestPictureInPicture documentation>
+requestPictureInPicture :: (MonadDOM m) => HTMLVideoElement -> m PictureInPictureWindow
+requestPictureInPicture self = liftDOM (((((self ^. jsf "requestPictureInPicture" ()) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitSupportsPresentationMode Mozilla HTMLVideoElement.webkitSupportsPresentationMode documentation> 
-webkitSupportsPresentationMode ::
-                               (MonadDOM m) => HTMLVideoElement -> VideoPresentationMode -> m Bool
-webkitSupportsPresentationMode self mode
-  = liftDOM
-      ((self ^. jsf "webkitSupportsPresentationMode" [toJSVal mode]) >>=
-         valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/requestPictureInPicture MDN HTMLVideoElement.requestPictureInPicture documentation>
+requestPictureInPicture_ :: (MonadDOM m) => HTMLVideoElement -> m ()
+requestPictureInPicture_ self = liftDOM (void (((self ^. jsf "requestPictureInPicture" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitSupportsPresentationMode Mozilla HTMLVideoElement.webkitSupportsPresentationMode documentation> 
-webkitSupportsPresentationMode_ ::
-                                (MonadDOM m) => HTMLVideoElement -> VideoPresentationMode -> m ()
-webkitSupportsPresentationMode_ self mode
-  = liftDOM
-      (void
-         (self ^. jsf "webkitSupportsPresentationMode" [toJSVal mode]))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/requestVideoFrameCallback MDN HTMLVideoElement.requestVideoFrameCallback documentation>
+requestVideoFrameCallback :: (MonadDOM m) => HTMLVideoElement -> VideoFrameRequestCallback -> m Word
+requestVideoFrameCallback self callback' = liftDOM ((P.round <$> ((self ^. jsf "requestVideoFrameCallback" [toJSVal callback']) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitSetPresentationMode Mozilla HTMLVideoElement.webkitSetPresentationMode documentation> 
-webkitSetPresentationMode ::
-                          (MonadDOM m) => HTMLVideoElement -> VideoPresentationMode -> m ()
-webkitSetPresentationMode self mode
-  = liftDOM
-      (void (self ^. jsf "webkitSetPresentationMode" [toJSVal mode]))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/requestVideoFrameCallback MDN HTMLVideoElement.requestVideoFrameCallback documentation>
+requestVideoFrameCallback_ :: (MonadDOM m) => HTMLVideoElement -> VideoFrameRequestCallback -> m ()
+requestVideoFrameCallback_ self callback' = liftDOM (void (self ^. jsf "requestVideoFrameCallback" [toJSVal callback']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.width Mozilla HTMLVideoElement.width documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/width MDN HTMLVideoElement.width documentation>
 setWidth :: (MonadDOM m) => HTMLVideoElement -> Word -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.width Mozilla HTMLVideoElement.width documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/width MDN HTMLVideoElement.width documentation>
 getWidth :: (MonadDOM m) => HTMLVideoElement -> m Word
-getWidth self
-  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
+getWidth self = liftDOM ((P.round <$> ((self ^. js "width") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.height Mozilla HTMLVideoElement.height documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/height MDN HTMLVideoElement.height documentation>
 setHeight :: (MonadDOM m) => HTMLVideoElement -> Word -> m ()
-setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+setHeight self val = liftDOM (void (self ^. jss "height" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.height Mozilla HTMLVideoElement.height documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/height MDN HTMLVideoElement.height documentation>
 getHeight :: (MonadDOM m) => HTMLVideoElement -> m Word
-getHeight self
-  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
+getHeight self = liftDOM ((P.round <$> ((self ^. js "height") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.videoWidth Mozilla HTMLVideoElement.videoWidth documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/videoWidth MDN HTMLVideoElement.videoWidth documentation>
 getVideoWidth :: (MonadDOM m) => HTMLVideoElement -> m Word
-getVideoWidth self
-  = liftDOM (round <$> ((self ^. js "videoWidth") >>= valToNumber))
+getVideoWidth self = liftDOM ((P.round <$> ((self ^. js "videoWidth") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.videoHeight Mozilla HTMLVideoElement.videoHeight documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/videoHeight MDN HTMLVideoElement.videoHeight documentation>
 getVideoHeight :: (MonadDOM m) => HTMLVideoElement -> m Word
-getVideoHeight self
-  = liftDOM (round <$> ((self ^. js "videoHeight") >>= valToNumber))
+getVideoHeight self = liftDOM ((P.round <$> ((self ^. js "videoHeight") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.poster Mozilla HTMLVideoElement.poster documentation> 
-setPoster ::
-          (MonadDOM m, ToJSString val) => HTMLVideoElement -> val -> m ()
-setPoster self val = liftDOM (self ^. jss "poster" (toJSVal val))
+-- | <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 (self ^. jss "poster" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.poster Mozilla HTMLVideoElement.poster documentation> 
-getPoster ::
-          (MonadDOM m, FromJSString result) => HTMLVideoElement -> m result
-getPoster self
-  = liftDOM ((self ^. js "poster") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/poster MDN HTMLVideoElement.poster documentation>
+getPoster :: (MonadDOM m, FromJSString result) => HTMLVideoElement -> m result
+getPoster self = liftDOM (((self ^. js "poster") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.playsInline Mozilla HTMLVideoElement.playsInline documentation> 
+-- | <https://html.spec.whatwg.org/multipage/media.html#dom-video-playsinline HTMLVideoElement.playsInline specification>
 setPlaysInline :: (MonadDOM m) => HTMLVideoElement -> Bool -> m ()
-setPlaysInline self val
-  = liftDOM (self ^. jss "playsInline" (toJSVal val))
+setPlaysInline self val = liftDOM (void (self ^. jss "playsInline" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.playsInline Mozilla HTMLVideoElement.playsInline documentation> 
+-- | <https://html.spec.whatwg.org/multipage/media.html#dom-video-playsinline HTMLVideoElement.playsInline specification>
 getPlaysInline :: (MonadDOM m) => HTMLVideoElement -> m Bool
-getPlaysInline self
-  = liftDOM ((self ^. js "playsInline") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitSupportsFullscreen Mozilla HTMLVideoElement.webkitSupportsFullscreen documentation> 
-getWebkitSupportsFullscreen ::
-                            (MonadDOM m) => HTMLVideoElement -> m Bool
-getWebkitSupportsFullscreen self
-  = liftDOM ((self ^. js "webkitSupportsFullscreen") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitDisplayingFullscreen Mozilla HTMLVideoElement.webkitDisplayingFullscreen documentation> 
-getWebkitDisplayingFullscreen ::
-                              (MonadDOM m) => HTMLVideoElement -> m Bool
-getWebkitDisplayingFullscreen self
-  = liftDOM ((self ^. js "webkitDisplayingFullscreen") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitWirelessVideoPlaybackDisabled Mozilla HTMLVideoElement.webkitWirelessVideoPlaybackDisabled documentation> 
-setWebkitWirelessVideoPlaybackDisabled ::
-                                       (MonadDOM m) => HTMLVideoElement -> Bool -> m ()
-setWebkitWirelessVideoPlaybackDisabled self val
-  = liftDOM
-      (self ^. jss "webkitWirelessVideoPlaybackDisabled" (toJSVal val))
+getPlaysInline self = liftDOM (((self ^. js "playsInline") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitWirelessVideoPlaybackDisabled Mozilla HTMLVideoElement.webkitWirelessVideoPlaybackDisabled documentation> 
-getWebkitWirelessVideoPlaybackDisabled ::
-                                       (MonadDOM m) => HTMLVideoElement -> m Bool
-getWebkitWirelessVideoPlaybackDisabled self
-  = liftDOM
-      ((self ^. js "webkitWirelessVideoPlaybackDisabled") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/disablePictureInPicture MDN HTMLVideoElement.disablePictureInPicture documentation>
+setDisablePictureInPicture :: (MonadDOM m) => HTMLVideoElement -> Bool -> m ()
+setDisablePictureInPicture self val = liftDOM (void (self ^. jss "disablePictureInPicture" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitDecodedFrameCount Mozilla HTMLVideoElement.webkitDecodedFrameCount documentation> 
-getWebkitDecodedFrameCount ::
-                           (MonadDOM m) => HTMLVideoElement -> m Word
-getWebkitDecodedFrameCount self
-  = liftDOM
-      (round <$>
-         ((self ^. js "webkitDecodedFrameCount") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/disablePictureInPicture MDN HTMLVideoElement.disablePictureInPicture documentation>
+getDisablePictureInPicture :: (MonadDOM m) => HTMLVideoElement -> m Bool
+getDisablePictureInPicture self = liftDOM (((self ^. js "disablePictureInPicture") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitDroppedFrameCount Mozilla HTMLVideoElement.webkitDroppedFrameCount documentation> 
-getWebkitDroppedFrameCount ::
-                           (MonadDOM m) => HTMLVideoElement -> m Word
-getWebkitDroppedFrameCount self
-  = liftDOM
-      (round <$>
-         ((self ^. js "webkitDroppedFrameCount") >>= valToNumber))
+-- | <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 ::
-                          (MonadDOM m) => HTMLVideoElement -> m VideoPresentationMode
-getWebkitPresentationMode self
-  = liftDOM
-      ((self ^. js "webkitPresentationMode") >>= 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/JSDOM/Generated/HashChangeEvent.hs b/src/JSDOM/Generated/HashChangeEvent.hs
--- a/src/JSDOM/Generated/HashChangeEvent.hs
+++ b/src/JSDOM/Generated/HashChangeEvent.hs
@@ -1,55 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.HashChangeEvent
-       (newHashChangeEvent, initHashChangeEvent, getOldURL, getNewURL,
-        HashChangeEvent(..), gTypeHashChangeEvent)
+       (newHashChangeEvent, getOldURL, getNewURL, HashChangeEvent(..), gTypeHashChangeEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent Mozilla HashChangeEvent documentation> 
-newHashChangeEvent ::
-                   (MonadDOM m, ToJSString type') =>
-                     type' -> Maybe HashChangeEventInit -> m HashChangeEvent
-newHashChangeEvent type' eventInitDict
-  = liftDOM
-      (HashChangeEvent <$>
-         new (jsg "HashChangeEvent") [toJSVal type', toJSVal eventInitDict])
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent.initHashChangeEvent Mozilla HashChangeEvent.initHashChangeEvent documentation> 
-initHashChangeEvent ::
-                    (MonadDOM m, ToJSString type', ToJSString oldURL,
-                     ToJSString newURL) =>
-                      HashChangeEvent ->
-                        Maybe type' -> Bool -> Bool -> Maybe oldURL -> Maybe newURL -> m ()
-initHashChangeEvent self type' canBubble cancelable oldURL newURL
-  = liftDOM
-      (void
-         (self ^. jsf "initHashChangeEvent"
-            [toJSVal type', toJSVal canBubble, toJSVal cancelable,
-             toJSVal oldURL, toJSVal newURL]))
+-- | <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 (((new (jsg "HashChangeEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent.oldURL Mozilla HashChangeEvent.oldURL documentation> 
-getOldURL ::
-          (MonadDOM m, FromJSString result) => HashChangeEvent -> m result
-getOldURL self
-  = liftDOM ((self ^. js "oldURL") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HashChangeEvent/oldURL MDN HashChangeEvent.oldURL documentation>
+getOldURL :: (MonadDOM m, FromJSString result) => HashChangeEvent -> m result
+getOldURL self = liftDOM (((self ^. js "oldURL") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent.newURL Mozilla HashChangeEvent.newURL documentation> 
-getNewURL ::
-          (MonadDOM m, FromJSString result) => HashChangeEvent -> m result
-getNewURL self
-  = liftDOM ((self ^. js "newURL") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/HashChangeEvent/newURL MDN HashChangeEvent.newURL documentation>
+getNewURL :: (MonadDOM m, FromJSString result) => HashChangeEvent -> m result
+getNewURL self = liftDOM (((self ^. js "newURL") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HashChangeEventInit.hs b/src/JSDOM/Generated/HashChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/HashChangeEventInit.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.HashChangeEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#hashchangeeventinit HashChangeEventInit specification>
+newHashChangeEventInit :: (MonadDOM m) => m HashChangeEventInit
+newHashChangeEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+setOldURL :: (MonadDOM m, ToJSString val) => HashChangeEventInit -> val -> m ()
+setOldURL self val = liftDOM (void (self ^. jss "oldURL" (toJSVal val)))
+
+getOldURL :: (MonadDOM m, FromJSString result) => HashChangeEventInit -> m (Maybe result)
+getOldURL self = liftDOM (((self ^. js "oldURL") >>= fromMaybeJSString))
+
+getOldURLUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => HashChangeEventInit -> m result
+getOldURLUnsafe self = liftDOM ((((self ^. js "oldURL") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getOldURLUnchecked :: (MonadDOM m, FromJSString result) => HashChangeEventInit -> m result
+getOldURLUnchecked self = liftDOM (((self ^. js "oldURL") >>= fromJSValUnchecked))
+
+setNewURL :: (MonadDOM m, ToJSString val) => HashChangeEventInit -> val -> m ()
+setNewURL self val = liftDOM (void (self ^. jss "newURL" (toJSVal val)))
+
+getNewURL :: (MonadDOM m, FromJSString result) => HashChangeEventInit -> m (Maybe result)
+getNewURL self = liftDOM (((self ^. js "newURL") >>= fromMaybeJSString))
+
+getNewURLUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => HashChangeEventInit -> m result
+getNewURLUnsafe self = liftDOM ((((self ^. js "newURL") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getNewURLUnchecked :: (MonadDOM m, FromJSString result) => HashChangeEventInit -> m result
+getNewURLUnchecked self = liftDOM (((self ^. js "newURL") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Headers.hs b/src/JSDOM/Generated/Headers.hs
--- a/src/JSDOM/Generated/Headers.hs
+++ b/src/JSDOM/Generated/Headers.hs
@@ -1,79 +1,64 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fetch (webref). Do not edit.
 module JSDOM.Generated.Headers
-       (append, delete, get, get_, getUnsafe, getUnchecked, has, has_,
-        set, Headers(..), gTypeHeaders)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.append Mozilla Headers.append documentation> 
-append ::
-       (MonadDOM m, ToJSString name, ToJSString value) =>
-         Headers -> name -> value -> m ()
-append self name value
-  = liftDOM
-      (void (self ^. jsf "append" [toJSVal name, toJSVal value]))
+-- | <https://developer.mozilla.org/docs/Web/API/Headers/Headers MDN Headers. documentation>
+newHeaders :: (MonadDOM m, IsHeadersInit init) => Maybe init -> m Headers
+newHeaders init = liftDOM (((new (jsg "Headers") [P.maybe (P.return jsUndefined) toJSVal init]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.delete Mozilla Headers.delete documentation> 
+-- | <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 (self ^. jsf "append" [toJSVal name, toJSVal value]))
+
+-- | <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 (self ^. jsf "delete" [toJSVal name]))
+delete self name = liftDOM (void (self ^. jsf "delete" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.get Mozilla Headers.get documentation> 
-get ::
-    (MonadDOM m, ToJSString name, FromJSString result) =>
-      Headers -> name -> m (Maybe result)
-get self name
-  = liftDOM
-      ((self ^. jsf "get" [toJSVal name]) >>= fromMaybeJSString)
+-- | <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 (((self ^. jsf "get" [toJSVal name]) >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.get Mozilla Headers.get documentation> 
+-- | <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 (self ^. jsf "get" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.get Mozilla Headers.get documentation> 
-getUnsafe ::
-          (MonadDOM m, ToJSString name, HasCallStack, FromJSString result) =>
-            Headers -> name -> m result
-getUnsafe self name
-  = liftDOM
-      (((self ^. jsf "get" [toJSVal name]) >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 ((((self ^. jsf "get" [toJSVal name]) >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.get Mozilla Headers.get documentation> 
-getUnchecked ::
-             (MonadDOM m, ToJSString name, FromJSString result) =>
-               Headers -> name -> m result
-getUnchecked self name
-  = liftDOM
-      ((self ^. jsf "get" [toJSVal name]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "get" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.has Mozilla Headers.has documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Headers/getSetCookie MDN Headers.getSetCookie documentation>
+getSetCookie :: (MonadDOM m, FromJSString result) => Headers -> m [result]
+getSetCookie self = liftDOM (((self ^. jsf "getSetCookie" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Headers/getSetCookie MDN Headers.getSetCookie documentation>
+getSetCookie_ :: (MonadDOM m) => Headers -> m ()
+getSetCookie_ self = liftDOM (void (self ^. jsf "getSetCookie" ()))
+
+-- | <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 ((self ^. jsf "has" [toJSVal name]) >>= valToBool)
+has self name = liftDOM (((self ^. jsf "has" [toJSVal name]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.has Mozilla Headers.has documentation> 
+-- | <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 (self ^. jsf "has" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.set Mozilla Headers.set documentation> 
-set ::
-    (MonadDOM m, ToJSString name, ToJSString value) =>
-      Headers -> name -> value -> m ()
-set self name value
-  = liftDOM (void (self ^. jsf "set" [toJSVal name, toJSVal value]))
+-- | <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 (self ^. jsf "set" [toJSVal name, toJSVal value]))
diff --git a/src/JSDOM/Generated/HevcEncoderConfig.hs b/src/JSDOM/Generated/HevcEncoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/HevcEncoderConfig.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-hevc-codec-registration (webref). Do not edit.
+module JSDOM.Generated.HevcEncoderConfig
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dictdef-hevcencoderconfig HevcEncoderConfig specification>
+newHevcEncoderConfig :: (MonadDOM m) => m HevcEncoderConfig
+newHevcEncoderConfig = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "format" (toJSVal val)))
+
+-- | <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 (((self ^. js "format") >>= 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 ((((self ^. js "format") >>= 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 (((self ^. js "format") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Highlight.hs b/src/JSDOM/Generated/Highlight.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Highlight.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-highlight-api-1 (webref). Do not edit.
+module JSDOM.Generated.Highlight
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Highlight/Highlight MDN Highlight. documentation>
+newHighlight :: (MonadDOM m, IsAbstractRange initialRanges) => [initialRanges] -> m Highlight
+newHighlight initialRanges = liftDOM (((new (jsg "Highlight") ([] ++ P.map toJSVal initialRanges)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Highlight/priority MDN Highlight.priority documentation>
+setPriority :: (MonadDOM m) => Highlight -> Int -> m ()
+setPriority self val = liftDOM (void (self ^. jss "priority" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Highlight/priority MDN Highlight.priority documentation>
+getPriority :: (MonadDOM m) => Highlight -> m Int
+getPriority self = liftDOM ((P.round <$> ((self ^. js "priority") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Highlight/type MDN Highlight.type documentation>
+setType :: (MonadDOM m) => Highlight -> HighlightType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Highlight/type MDN Highlight.type documentation>
+getType :: (MonadDOM m) => Highlight -> m HighlightType
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HighlightHitResult.hs b/src/JSDOM/Generated/HighlightHitResult.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/HighlightHitResult.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-highlight-api-1 (webref). Do not edit.
+module JSDOM.Generated.HighlightHitResult
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dictdef-highlighthitresult HighlightHitResult specification>
+newHighlightHitResult :: (MonadDOM m) => m HighlightHitResult
+newHighlightHitResult = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "highlight" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dom-highlighthitresult-highlight HighlightHitResult.highlight specification>
+getHighlight :: (MonadDOM m) => HighlightHitResult -> m (Maybe Highlight)
+getHighlight self = liftDOM (((self ^. js "highlight") >>= 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 ((((self ^. js "highlight") >>= 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 (((self ^. js "highlight") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "ranges" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dom-highlighthitresult-ranges HighlightHitResult.ranges specification>
+getRanges :: (MonadDOM m) => HighlightHitResult -> m (Maybe [AbstractRange])
+getRanges self = liftDOM (((self ^. js "ranges") >>= 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 ((((self ^. js "ranges") >>= 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 (((self ^. js "ranges") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/HighlightRegistry.hs b/src/JSDOM/Generated/HighlightRegistry.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/HighlightRegistry.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-highlight-api-1 (webref). Do not edit.
+module JSDOM.Generated.HighlightRegistry
+       (highlightsFromPoint, highlightsFromPoint_, HighlightRegistry(..), gTypeHighlightRegistry)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "highlightsFromPoint" [toJSVal x, toJSVal y, P.maybe (P.return jsUndefined) toJSVal options]) >>= 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 (self ^. jsf "highlightsFromPoint" [toJSVal x, toJSVal y, P.maybe (P.return jsUndefined) toJSVal options]))
diff --git a/src/JSDOM/Generated/HighlightsFromPointOptions.hs b/src/JSDOM/Generated/HighlightsFromPointOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/HighlightsFromPointOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-highlight-api-1 (webref). Do not edit.
+module JSDOM.Generated.HighlightsFromPointOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dictdef-highlightsfrompointoptions HighlightsFromPointOptions specification>
+newHighlightsFromPointOptions :: (MonadDOM m) => m HighlightsFromPointOptions
+newHighlightsFromPointOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "shadowRoots" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-highlight-api-1/#dom-highlightsfrompointoptions-shadowroots HighlightsFromPointOptions.shadowRoots specification>
+getShadowRoots :: (MonadDOM m) => HighlightsFromPointOptions -> m (Maybe [ShadowRoot])
+getShadowRoots self = liftDOM (((self ^. js "shadowRoots") >>= 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 ((((self ^. js "shadowRoots") >>= 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 (((self ^. js "shadowRoots") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/History.hs b/src/JSDOM/Generated/History.hs
--- a/src/JSDOM/Generated/History.hs
+++ b/src/JSDOM/Generated/History.hs
@@ -1,77 +1,52 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.History
-       (back, forward, go, pushState, replaceState, getLength,
-        setScrollRestoration, getScrollRestoration, getState, History(..),
-        gTypeHistory)
+       (back, forward, go, pushState, replaceState, getLength, setScrollRestoration, getScrollRestoration, getState, History(..), gTypeHistory)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.back Mozilla History.back documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/History/back MDN History.back documentation>
 back :: (MonadDOM m) => History -> m ()
 back self = liftDOM (void (self ^. jsf "back" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.forward Mozilla History.forward documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/History/forward MDN History.forward documentation>
 forward :: (MonadDOM m) => History -> m ()
 forward self = liftDOM (void (self ^. jsf "forward" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.go Mozilla History.go documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/History/go MDN History.go documentation>
 go :: (MonadDOM m) => History -> Maybe Int -> m ()
-go self distance
-  = liftDOM (void (self ^. jsf "go" [toJSVal distance]))
+go self delta = liftDOM (void (self ^. jsf "go" [P.maybe (P.return jsUndefined) toJSVal delta]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.pushState Mozilla History.pushState documentation> 
-pushState ::
-          (MonadDOM m, ToJSVal data', ToJSString title, ToJSString url) =>
-            History -> data' -> title -> Maybe url -> m ()
-pushState self data' title url
-  = liftDOM
-      (void
-         (self ^. jsf "pushState"
-            [toJSVal data', toJSVal title, toJSVal url]))
+-- | <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 (self ^. jsf "pushState" [toJSVal data', toJSVal unused, toJSVal url]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.replaceState Mozilla History.replaceState documentation> 
-replaceState ::
-             (MonadDOM m, ToJSVal data', ToJSString title, ToJSString url) =>
-               History -> data' -> title -> Maybe url -> m ()
-replaceState self data' title url
-  = liftDOM
-      (void
-         (self ^. jsf "replaceState"
-            [toJSVal data', toJSVal title, toJSVal url]))
+-- | <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 (self ^. jsf "replaceState" [toJSVal data', toJSVal unused, toJSVal url]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.length Mozilla History.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/History/length MDN History.length documentation>
 getLength :: (MonadDOM m) => History -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.scrollRestoration Mozilla History.scrollRestoration documentation> 
-setScrollRestoration ::
-                     (MonadDOM m) => History -> ScrollRestoration -> m ()
-setScrollRestoration self val
-  = liftDOM (self ^. jss "scrollRestoration" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/History/scrollRestoration MDN History.scrollRestoration documentation>
+setScrollRestoration :: (MonadDOM m) => History -> ScrollRestoration -> m ()
+setScrollRestoration self val = liftDOM (void (self ^. jss "scrollRestoration" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.scrollRestoration Mozilla History.scrollRestoration documentation> 
-getScrollRestoration ::
-                     (MonadDOM m) => History -> m ScrollRestoration
-getScrollRestoration self
-  = liftDOM ((self ^. js "scrollRestoration") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/History/scrollRestoration MDN History.scrollRestoration documentation>
+getScrollRestoration :: (MonadDOM m) => History -> m ScrollRestoration
+getScrollRestoration self = liftDOM (((self ^. js "scrollRestoration") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/History.state Mozilla History.state documentation> 
-getState :: (MonadDOM m) => History -> m SerializedScriptValue
-getState self
-  = liftDOM ((self ^. js "state") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/History/state MDN History.state documentation>
+getState :: (MonadDOM m) => History -> m JSVal
+getState self = liftDOM (self ^. js "state")
diff --git a/src/JSDOM/Generated/HyperlinkElementUtils.hs b/src/JSDOM/Generated/HyperlinkElementUtils.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/HyperlinkElementUtils.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.HyperlinkElementUtils
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toHyperlinkElementUtils self) ^. js "origin") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toHyperlinkElementUtils self) ^. jss "protocol" (toJSVal val)))
+
+-- | <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 ((((Types.toHyperlinkElementUtils self) ^. js "protocol") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toHyperlinkElementUtils self) ^. jss "username" (toJSVal val)))
+
+-- | <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 ((((Types.toHyperlinkElementUtils self) ^. js "username") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toHyperlinkElementUtils self) ^. jss "password" (toJSVal val)))
+
+-- | <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 ((((Types.toHyperlinkElementUtils self) ^. js "password") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toHyperlinkElementUtils self) ^. jss "host" (toJSVal val)))
+
+-- | <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 ((((Types.toHyperlinkElementUtils self) ^. js "host") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toHyperlinkElementUtils self) ^. jss "hostname" (toJSVal val)))
+
+-- | <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 ((((Types.toHyperlinkElementUtils self) ^. js "hostname") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toHyperlinkElementUtils self) ^. jss "port" (toJSVal val)))
+
+-- | <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 ((((Types.toHyperlinkElementUtils self) ^. js "port") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toHyperlinkElementUtils self) ^. jss "pathname" (toJSVal val)))
+
+-- | <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 ((((Types.toHyperlinkElementUtils self) ^. js "pathname") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toHyperlinkElementUtils self) ^. jss "search" (toJSVal val)))
+
+-- | <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 ((((Types.toHyperlinkElementUtils self) ^. js "search") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toHyperlinkElementUtils self) ^. jss "hash" (toJSVal val)))
+
+-- | <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 ((((Types.toHyperlinkElementUtils self) ^. js "hash") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toHyperlinkElementUtils self) ^. jss "hreflang" (toJSVal val)))
+
+-- | <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 ((((Types.toHyperlinkElementUtils self) ^. js "hreflang") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toHyperlinkElementUtils self) ^. jss "type" (toJSVal val)))
+
+-- | <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 ((((Types.toHyperlinkElementUtils self) ^. js "type") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/IDBCursor.hs b/src/JSDOM/Generated/IDBCursor.hs
--- a/src/JSDOM/Generated/IDBCursor.hs
+++ b/src/JSDOM/Generated/IDBCursor.hs
@@ -1,98 +1,64 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module JSDOM.Generated.IDBCursor
-       (update, update_, advance, continue, continuePrimaryKey, delete,
-        delete_, getSource, getDirection, getKey, getPrimaryKey,
-        IDBCursor(..), gTypeIDBCursor, IsIDBCursor, toIDBCursor)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.update Mozilla IDBCursor.update documentation> 
-update ::
-       (MonadDOM m, IsIDBCursor self, ToJSVal value) =>
-         self -> value -> m IDBRequest
-update self value
-  = liftDOM
-      (((toIDBCursor self) ^. jsf "update" [toJSVal value]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.update Mozilla IDBCursor.update documentation> 
-update_ ::
-        (MonadDOM m, IsIDBCursor self, ToJSVal value) =>
-          self -> value -> m ()
-update_ self value
-  = liftDOM
-      (void ((toIDBCursor self) ^. jsf "update" [toJSVal value]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.advance Mozilla IDBCursor.advance documentation> 
+-- | <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 ((toIDBCursor self) ^. jsf "advance" [toJSVal count]))
+advance self count = liftDOM (void ((Types.toIDBCursor self) ^. jsf "advance" [toJSVal count]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.continue Mozilla IDBCursor.continue documentation> 
-continue ::
-         (MonadDOM m, IsIDBCursor self, ToJSVal key) =>
-           self -> Maybe key -> m ()
-continue self key
-  = liftDOM
-      (void ((toIDBCursor self) ^. jsf "continue" [toJSVal key]))
+-- | <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 ((Types.toIDBCursor self) ^. jsf "continue" [toJSVal key]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.continuePrimaryKey Mozilla IDBCursor.continuePrimaryKey documentation> 
-continuePrimaryKey ::
-                   (MonadDOM m, IsIDBCursor self, ToJSVal key, ToJSVal primaryKey) =>
-                     self -> key -> primaryKey -> m ()
-continuePrimaryKey self key primaryKey
-  = liftDOM
-      (void
-         ((toIDBCursor self) ^. jsf "continuePrimaryKey"
-            [toJSVal key, toJSVal primaryKey]))
+-- | <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 ((Types.toIDBCursor self) ^. jsf "continuePrimaryKey" [toJSVal key, toJSVal primaryKey]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.delete Mozilla IDBCursor.delete documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/delete MDN IDBCursor.delete documentation>
 delete :: (MonadDOM m, IsIDBCursor self) => self -> m IDBRequest
-delete self
-  = liftDOM
-      (((toIDBCursor self) ^. jsf "delete" ()) >>= fromJSValUnchecked)
+delete self = liftDOM ((((Types.toIDBCursor self) ^. jsf "delete" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.delete Mozilla IDBCursor.delete documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/delete MDN IDBCursor.delete documentation>
 delete_ :: (MonadDOM m, IsIDBCursor self) => self -> m ()
-delete_ self
-  = liftDOM (void ((toIDBCursor self) ^. jsf "delete" ()))
+delete_ self = liftDOM (void ((Types.toIDBCursor self) ^. jsf "delete" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.source Mozilla IDBCursor.source documentation> 
-getSource ::
-          (MonadDOM m, IsIDBCursor self) => self -> m IDBCursorSource
-getSource self
-  = liftDOM
-      (((toIDBCursor self) ^. js "source") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toIDBCursor self) ^. jsf "update" [toJSVal value]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.direction Mozilla IDBCursor.direction documentation> 
-getDirection ::
-             (MonadDOM m, IsIDBCursor self) => self -> m IDBCursorDirection
-getDirection self
-  = liftDOM
-      (((toIDBCursor self) ^. js "direction") >>= fromJSValUnchecked)
+-- | <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 ((Types.toIDBCursor self) ^. jsf "update" [toJSVal value]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.key Mozilla IDBCursor.key documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/source MDN IDBCursor.source documentation>
+getSource :: (MonadDOM m, IsIDBCursor self) => self -> m IDBObjectStoreOrIDBIndex
+getSource self = liftDOM ((((Types.toIDBCursor self) ^. js "source") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/direction MDN IDBCursor.direction documentation>
+getDirection :: (MonadDOM m, IsIDBCursor self) => self -> m IDBCursorDirection
+getDirection self = liftDOM ((((Types.toIDBCursor self) ^. js "direction") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/key MDN IDBCursor.key documentation>
 getKey :: (MonadDOM m, IsIDBCursor self) => self -> m JSVal
-getKey self
-  = liftDOM (((toIDBCursor self) ^. js "key") >>= toJSVal)
+getKey self = liftDOM ((Types.toIDBCursor self) ^. js "key")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.primaryKey Mozilla IDBCursor.primaryKey documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/primaryKey MDN IDBCursor.primaryKey documentation>
 getPrimaryKey :: (MonadDOM m, IsIDBCursor self) => self -> m JSVal
-getPrimaryKey self
-  = liftDOM (((toIDBCursor self) ^. js "primaryKey") >>= toJSVal)
+getPrimaryKey self = liftDOM ((Types.toIDBCursor self) ^. js "primaryKey")
+
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursor/request MDN IDBCursor.request documentation>
+getRequest :: (MonadDOM m, IsIDBCursor self) => self -> m IDBRequest
+getRequest self = liftDOM ((((Types.toIDBCursor self) ^. js "request") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/IDBCursorWithValue.hs b/src/JSDOM/Generated/IDBCursorWithValue.hs
--- a/src/JSDOM/Generated/IDBCursorWithValue.hs
+++ b/src/JSDOM/Generated/IDBCursorWithValue.hs
@@ -1,23 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module JSDOM.Generated.IDBCursorWithValue
-       (getValue, IDBCursorWithValue(..), gTypeIDBCursorWithValue) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (getValue, IDBCursorWithValue(..), gTypeIDBCursorWithValue)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursorWithValue.value Mozilla IDBCursorWithValue.value documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBCursorWithValue/value MDN IDBCursorWithValue.value documentation>
 getValue :: (MonadDOM m) => IDBCursorWithValue -> m JSVal
-getValue self = liftDOM ((self ^. js "value") >>= toJSVal)
+getValue self = liftDOM (self ^. js "value")
diff --git a/src/JSDOM/Generated/IDBDatabase.hs b/src/JSDOM/Generated/IDBDatabase.hs
--- a/src/JSDOM/Generated/IDBDatabase.hs
+++ b/src/JSDOM/Generated/IDBDatabase.hs
@@ -1,105 +1,76 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module JSDOM.Generated.IDBDatabase
-       (createObjectStore, createObjectStore_, deleteObjectStore,
-        transaction, transaction_, close, getName, getVersion,
-        getObjectStoreNames, abort, closeEvent, error, versionChange,
-        IDBDatabase(..), gTypeIDBDatabase)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.createObjectStore Mozilla IDBDatabase.createObjectStore documentation> 
-createObjectStore ::
-                  (MonadDOM m, ToJSString name) =>
-                    IDBDatabase ->
-                      name -> Maybe IDBObjectStoreParameters -> m IDBObjectStore
-createObjectStore self name parameters
-  = liftDOM
-      ((self ^. jsf "createObjectStore"
-          [toJSVal name, toJSVal parameters])
-         >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBDatabase/close MDN IDBDatabase.close documentation>
+close :: (MonadDOM m) => IDBDatabase -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.createObjectStore Mozilla IDBDatabase.createObjectStore documentation> 
-createObjectStore_ ::
-                   (MonadDOM m, ToJSString name) =>
-                     IDBDatabase -> name -> Maybe IDBObjectStoreParameters -> m ()
-createObjectStore_ self name parameters
-  = liftDOM
-      (void
-         (self ^. jsf "createObjectStore"
-            [toJSVal name, toJSVal parameters]))
+-- | <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 (((self ^. jsf "createObjectStore" [toJSVal name, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.deleteObjectStore Mozilla IDBDatabase.deleteObjectStore documentation> 
-deleteObjectStore ::
-                  (MonadDOM m, ToJSString name) => IDBDatabase -> name -> m ()
-deleteObjectStore self name
-  = liftDOM (void (self ^. jsf "deleteObjectStore" [toJSVal name]))
+-- | <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 (self ^. jsf "createObjectStore" [toJSVal name, P.maybe (P.return jsUndefined) toJSVal options]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.transaction Mozilla IDBDatabase.transaction documentation> 
-transaction ::
-            (MonadDOM m, IsStringOrStrings storeNames) =>
-              IDBDatabase ->
-                storeNames -> Maybe IDBTransactionMode -> m IDBTransaction
-transaction self storeNames mode
-  = liftDOM
-      ((self ^. jsf "transaction" [toJSVal storeNames, toJSVal mode]) >>=
-         fromJSValUnchecked)
+-- | <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 (self ^. jsf "deleteObjectStore" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.transaction Mozilla IDBDatabase.transaction documentation> 
-transaction_ ::
-             (MonadDOM m, IsStringOrStrings storeNames) =>
-               IDBDatabase -> storeNames -> Maybe IDBTransactionMode -> m ()
-transaction_ self storeNames mode
-  = liftDOM
-      (void
-         (self ^. jsf "transaction" [toJSVal storeNames, toJSVal mode]))
+-- | <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 (((self ^. jsf "transaction" [toJSVal storeNames, P.maybe (P.return jsUndefined) toJSVal mode]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.close Mozilla IDBDatabase.close documentation> 
-close :: (MonadDOM m) => IDBDatabase -> m ()
-close self = liftDOM (void (self ^. jsf "close" ()))
+-- | <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 (self ^. jsf "transaction" [toJSVal storeNames, P.maybe (P.return jsUndefined) toJSVal mode]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.name Mozilla IDBDatabase.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => IDBDatabase -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "transaction" [toJSVal storeNames, P.maybe (P.return jsUndefined) toJSVal mode, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.version Mozilla IDBDatabase.version documentation> 
-getVersion :: (MonadDOM m) => IDBDatabase -> m Word64
-getVersion self
-  = liftDOM (round <$> ((self ^. js "version") >>= valToNumber))
+-- | <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 (self ^. jsf "transaction" [toJSVal storeNames, P.maybe (P.return jsUndefined) toJSVal mode, P.maybe (P.return jsUndefined) toJSVal options]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.objectStoreNames Mozilla IDBDatabase.objectStoreNames documentation> 
-getObjectStoreNames ::
-                    (MonadDOM m) => IDBDatabase -> m DOMStringList
-getObjectStoreNames self
-  = liftDOM ((self ^. js "objectStoreNames") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBDatabase/name MDN IDBDatabase.name documentation>
+getName :: (MonadDOM m, FromJSString result) => IDBDatabase -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.onabort Mozilla IDBDatabase.onabort documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBDatabase/version MDN IDBDatabase.version documentation>
+getVersion :: (MonadDOM m) => IDBDatabase -> m Word53
+getVersion self = liftDOM (((self ^. js "version") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IDBDatabase/objectStoreNames MDN IDBDatabase.objectStoreNames documentation>
+getObjectStoreNames :: (MonadDOM m) => IDBDatabase -> m DOMStringList
+getObjectStoreNames self = liftDOM (((self ^. js "objectStoreNames") >>= fromJSValUnchecked))
+
+-- | <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/JSDOM/Generated/IDBDatabaseInfo.hs b/src/JSDOM/Generated/IDBDatabaseInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/IDBDatabaseInfo.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
+module JSDOM.Generated.IDBDatabaseInfo
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/IndexedDB/#dictdef-idbdatabaseinfo IDBDatabaseInfo specification>
+newIDBDatabaseInfo :: (MonadDOM m) => m IDBDatabaseInfo
+newIDBDatabaseInfo = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabaseinfo-name IDBDatabaseInfo.name specification>
+setName :: (MonadDOM m, ToJSString val) => IDBDatabaseInfo -> val -> m ()
+setName self val = liftDOM (void (self ^. jss "name" (toJSVal val)))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabaseinfo-name IDBDatabaseInfo.name specification>
+getName :: (MonadDOM m, FromJSString result) => IDBDatabaseInfo -> m (Maybe result)
+getName self = liftDOM (((self ^. js "name") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabaseinfo-name IDBDatabaseInfo.name specification>
+getNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => IDBDatabaseInfo -> m result
+getNameUnsafe self = liftDOM ((((self ^. js "name") >>= fromMaybeJSString) >>= 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 (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabaseinfo-version IDBDatabaseInfo.version specification>
+setVersion :: (MonadDOM m) => IDBDatabaseInfo -> Word53 -> m ()
+setVersion self val = liftDOM (void (self ^. jss "version" (toJSVal val)))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabaseinfo-version IDBDatabaseInfo.version specification>
+getVersion :: (MonadDOM m) => IDBDatabaseInfo -> m (Maybe Word53)
+getVersion self = liftDOM (((self ^. js "version") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbdatabaseinfo-version IDBDatabaseInfo.version specification>
+getVersionUnsafe :: (MonadDOM m, HasCallStack) => IDBDatabaseInfo -> m Word53
+getVersionUnsafe self = liftDOM ((((self ^. js "version") >>= 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 (((self ^. js "version") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/IDBFactory.hs b/src/JSDOM/Generated/IDBFactory.hs
--- a/src/JSDOM/Generated/IDBFactory.hs
+++ b/src/JSDOM/Generated/IDBFactory.hs
@@ -1,76 +1,48 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module JSDOM.Generated.IDBFactory
-       (open, open_, deleteDatabase, deleteDatabase_, cmp, cmp_,
-        IDBFactory(..), gTypeIDBFactory)
+       (cmp, cmp_, databases, databases_, deleteDatabase, deleteDatabase_, open, open_, IDBFactory(..), gTypeIDBFactory)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.open Mozilla IDBFactory.open documentation> 
-open ::
-     (MonadDOM m, ToJSString name) =>
-       IDBFactory -> name -> Maybe Word64 -> m IDBOpenDBRequest
-open self name version
-  = liftDOM
-      ((self ^. jsf "open"
-          [toJSVal name,
-           maybe (return jsUndefined) integralToDoubleToJSVal version])
-         >>= fromJSValUnchecked)
+-- | <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 ((P.round <$> ((self ^. jsf "cmp" [toJSVal first, toJSVal second]) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.open Mozilla IDBFactory.open documentation> 
-open_ ::
-      (MonadDOM m, ToJSString name) =>
-        IDBFactory -> name -> Maybe Word64 -> m ()
-open_ self name version
-  = liftDOM
-      (void
-         (self ^. jsf "open"
-            [toJSVal name,
-             maybe (return jsUndefined) integralToDoubleToJSVal 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 (self ^. jsf "cmp" [toJSVal first, toJSVal second]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.deleteDatabase Mozilla IDBFactory.deleteDatabase documentation> 
-deleteDatabase ::
-               (MonadDOM m, ToJSString name) =>
-                 IDBFactory -> name -> m IDBOpenDBRequest
-deleteDatabase self name
-  = liftDOM
-      ((self ^. jsf "deleteDatabase" [toJSVal name]) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBFactory/databases MDN IDBFactory.databases documentation>
+databases :: (MonadDOM m) => IDBFactory -> m [IDBDatabaseInfo]
+databases self = liftDOM (((((self ^. jsf "databases" ()) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.deleteDatabase Mozilla IDBFactory.deleteDatabase documentation> 
-deleteDatabase_ ::
-                (MonadDOM m, ToJSString name) => IDBFactory -> name -> m ()
-deleteDatabase_ self name
-  = liftDOM (void (self ^. jsf "deleteDatabase" [toJSVal name]))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBFactory/databases MDN IDBFactory.databases documentation>
+databases_ :: (MonadDOM m) => IDBFactory -> m ()
+databases_ self = liftDOM (void (((self ^. jsf "databases" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.cmp Mozilla IDBFactory.cmp documentation> 
-cmp ::
-    (MonadDOM m, ToJSVal first, ToJSVal second) =>
-      IDBFactory -> first -> second -> m Int
-cmp self first second
-  = liftDOM
-      (round <$>
-         ((self ^. jsf "cmp" [toJSVal first, toJSVal second]) >>=
-            valToNumber))
+-- | <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 (((self ^. jsf "deleteDatabase" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.cmp Mozilla IDBFactory.cmp documentation> 
-cmp_ ::
-     (MonadDOM m, ToJSVal first, ToJSVal second) =>
-       IDBFactory -> first -> second -> m ()
-cmp_ self first second
-  = liftDOM
-      (void (self ^. jsf "cmp" [toJSVal first, toJSVal second]))
+-- | <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 (self ^. jsf "deleteDatabase" [toJSVal name]))
+
+-- | <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 (((self ^. jsf "open" [toJSVal name, P.maybe (P.return jsUndefined) toJSVal version]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "open" [toJSVal name, P.maybe (P.return jsUndefined) toJSVal version]))
diff --git a/src/JSDOM/Generated/IDBGetAllOptions.hs b/src/JSDOM/Generated/IDBGetAllOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/IDBGetAllOptions.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
+module JSDOM.Generated.IDBGetAllOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/IndexedDB/#dictdef-idbgetalloptions IDBGetAllOptions specification>
+newIDBGetAllOptions :: (MonadDOM m) => m IDBGetAllOptions
+newIDBGetAllOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-query IDBGetAllOptions.query specification>
+setQuery :: (MonadDOM m) => IDBGetAllOptions -> JSVal -> m ()
+setQuery self val = liftDOM (void (self ^. jss "query" (toJSVal val)))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-query IDBGetAllOptions.query specification>
+getQuery :: (MonadDOM m) => IDBGetAllOptions -> m JSVal
+getQuery self = liftDOM (self ^. js "query")
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-count IDBGetAllOptions.count specification>
+setCount :: (MonadDOM m) => IDBGetAllOptions -> Word -> m ()
+setCount self val = liftDOM (void (self ^. jss "count" (toJSVal val)))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-count IDBGetAllOptions.count specification>
+getCount :: (MonadDOM m) => IDBGetAllOptions -> m (Maybe Word)
+getCount self = liftDOM (((self ^. js "count") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-count IDBGetAllOptions.count specification>
+getCountUnsafe :: (MonadDOM m, HasCallStack) => IDBGetAllOptions -> m Word
+getCountUnsafe self = liftDOM ((((self ^. js "count") >>= 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 ((P.round <$> ((self ^. js "count") >>= valToNumber)))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-direction IDBGetAllOptions.direction specification>
+setDirection :: (MonadDOM m) => IDBGetAllOptions -> IDBCursorDirection -> m ()
+setDirection self val = liftDOM (void (self ^. jss "direction" (toJSVal val)))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-direction IDBGetAllOptions.direction specification>
+getDirection :: (MonadDOM m) => IDBGetAllOptions -> m (Maybe IDBCursorDirection)
+getDirection self = liftDOM (((self ^. js "direction") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbgetalloptions-direction IDBGetAllOptions.direction specification>
+getDirectionUnsafe :: (MonadDOM m, HasCallStack) => IDBGetAllOptions -> m IDBCursorDirection
+getDirectionUnsafe self = liftDOM ((((self ^. js "direction") >>= 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 (((self ^. js "direction") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/IDBIndex.hs b/src/JSDOM/Generated/IDBIndex.hs
--- a/src/JSDOM/Generated/IDBIndex.hs
+++ b/src/JSDOM/Generated/IDBIndex.hs
@@ -1,277 +1,104 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module JSDOM.Generated.IDBIndex
-       (openCursorRange, openCursorRange_, openCursor, openCursor_,
-        openKeyCursorRange, openKeyCursorRange_, openKeyCursor,
-        openKeyCursor_, getRange, getRange_, get, get_, getKeyRange,
-        getKeyRange_, getKey, getKey_, getAllRange, getAllRange_, getAll,
-        getAll_, getAllKeysRange, getAllKeysRange_, getAllKeys,
-        getAllKeys_, countRange, countRange_, count, count_, setName,
-        getName, getObjectStore, getKeyPath, getKeyPathUnsafe,
-        getKeyPathUnchecked, getMultiEntry, getUnique, IDBIndex(..),
-        gTypeIDBIndex)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
-openCursorRange ::
-                (MonadDOM m) =>
-                  IDBIndex ->
-                    Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m IDBRequest
-openCursorRange self range direction
-  = liftDOM
-      ((self ^. jsf "openCursor" [toJSVal range, toJSVal direction]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
-openCursorRange_ ::
-                 (MonadDOM m) =>
-                   IDBIndex -> Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m ()
-openCursorRange_ self range direction
-  = liftDOM
-      (void
-         (self ^. jsf "openCursor" [toJSVal range, toJSVal direction]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
-openCursor ::
-           (MonadDOM m, ToJSVal key) =>
-             IDBIndex -> key -> Maybe IDBCursorDirection -> m IDBRequest
-openCursor self key direction
-  = liftDOM
-      ((self ^. jsf "openCursor" [toJSVal key, toJSVal direction]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
-openCursor_ ::
-            (MonadDOM m, ToJSVal key) =>
-              IDBIndex -> key -> Maybe IDBCursorDirection -> m ()
-openCursor_ self key direction
-  = liftDOM
-      (void (self ^. jsf "openCursor" [toJSVal key, toJSVal direction]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
-openKeyCursorRange ::
-                   (MonadDOM m) =>
-                     IDBIndex ->
-                       Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m IDBRequest
-openKeyCursorRange self range direction
-  = liftDOM
-      ((self ^. jsf "openKeyCursor" [toJSVal range, toJSVal direction])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
-openKeyCursorRange_ ::
-                    (MonadDOM m) =>
-                      IDBIndex -> Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m ()
-openKeyCursorRange_ self range direction
-  = liftDOM
-      (void
-         (self ^. jsf "openKeyCursor" [toJSVal range, toJSVal direction]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
-openKeyCursor ::
-              (MonadDOM m, ToJSVal key) =>
-                IDBIndex -> key -> Maybe IDBCursorDirection -> m IDBRequest
-openKeyCursor self key direction
-  = liftDOM
-      ((self ^. jsf "openKeyCursor" [toJSVal key, toJSVal direction]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
-openKeyCursor_ ::
-               (MonadDOM m, ToJSVal key) =>
-                 IDBIndex -> key -> Maybe IDBCursorDirection -> m ()
-openKeyCursor_ self key direction
-  = liftDOM
-      (void
-         (self ^. jsf "openKeyCursor" [toJSVal key, toJSVal direction]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
-getRange ::
-         (MonadDOM m) => IDBIndex -> Maybe IDBKeyRange -> m IDBRequest
-getRange self key
-  = liftDOM
-      ((self ^. jsf "get" [toJSVal key]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
-getRange_ :: (MonadDOM m) => IDBIndex -> Maybe IDBKeyRange -> m ()
-getRange_ self key
-  = liftDOM (void (self ^. jsf "get" [toJSVal key]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
-get :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> m IDBRequest
-get self key
-  = liftDOM
-      ((self ^. jsf "get" [toJSVal key]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
-get_ :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> m ()
-get_ self key = liftDOM (void (self ^. jsf "get" [toJSVal key]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
-getKeyRange ::
-            (MonadDOM m) => IDBIndex -> Maybe IDBKeyRange -> m IDBRequest
-getKeyRange self key
-  = liftDOM
-      ((self ^. jsf "getKey" [toJSVal key]) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/count MDN IDBIndex.count documentation>
+count :: (MonadDOM m) => IDBIndex -> JSVal -> m IDBRequest
+count self query = liftDOM (((self ^. jsf "count" [toJSVal query]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
-getKeyRange_ ::
-             (MonadDOM m) => IDBIndex -> Maybe IDBKeyRange -> m ()
-getKeyRange_ self key
-  = liftDOM (void (self ^. jsf "getKey" [toJSVal 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 (self ^. jsf "count" [toJSVal query]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
-getKey ::
-       (MonadDOM m, ToJSVal key) => IDBIndex -> key -> m IDBRequest
-getKey self key
-  = liftDOM
-      ((self ^. jsf "getKey" [toJSVal key]) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/get MDN IDBIndex.get documentation>
+get :: (MonadDOM m) => IDBIndex -> JSVal -> m IDBRequest
+get self query = liftDOM (((self ^. jsf "get" [toJSVal query]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
-getKey_ :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> m ()
-getKey_ self key
-  = liftDOM (void (self ^. jsf "getKey" [toJSVal 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 (self ^. jsf "get" [toJSVal query]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAll Mozilla IDBIndex.getAll documentation> 
-getAllRange ::
-            (MonadDOM m) =>
-              IDBIndex -> Maybe IDBKeyRange -> Maybe Word -> m IDBRequest
-getAllRange self range count
-  = liftDOM
-      ((self ^. jsf "getAll" [toJSVal range, toJSVal count]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "getAll" [toJSVal queryOrOptions, P.maybe (P.return jsUndefined) toJSVal count]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAll Mozilla IDBIndex.getAll documentation> 
-getAllRange_ ::
-             (MonadDOM m) => IDBIndex -> Maybe IDBKeyRange -> Maybe Word -> m ()
-getAllRange_ self range count
-  = liftDOM
-      (void (self ^. jsf "getAll" [toJSVal range, toJSVal 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 (self ^. jsf "getAll" [toJSVal queryOrOptions, P.maybe (P.return jsUndefined) toJSVal count]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAll Mozilla IDBIndex.getAll documentation> 
-getAll ::
-       (MonadDOM m, ToJSVal key) =>
-         IDBIndex -> key -> Maybe Word -> m IDBRequest
-getAll self key count
-  = liftDOM
-      ((self ^. jsf "getAll" [toJSVal key, toJSVal count]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "getAllKeys" [toJSVal queryOrOptions, P.maybe (P.return jsUndefined) toJSVal count]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAll Mozilla IDBIndex.getAll documentation> 
-getAll_ ::
-        (MonadDOM m, ToJSVal key) => IDBIndex -> key -> Maybe Word -> m ()
-getAll_ self key count
-  = liftDOM
-      (void (self ^. jsf "getAll" [toJSVal key, toJSVal 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 (self ^. jsf "getAllKeys" [toJSVal queryOrOptions, P.maybe (P.return jsUndefined) toJSVal count]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAllKeys Mozilla IDBIndex.getAllKeys documentation> 
-getAllKeysRange ::
-                (MonadDOM m) =>
-                  IDBIndex -> Maybe IDBKeyRange -> Maybe Word -> m IDBRequest
-getAllKeysRange self range count
-  = liftDOM
-      ((self ^. jsf "getAllKeys" [toJSVal range, toJSVal count]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "getAllRecords" [P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAllKeys Mozilla IDBIndex.getAllKeys documentation> 
-getAllKeysRange_ ::
-                 (MonadDOM m) => IDBIndex -> Maybe IDBKeyRange -> Maybe Word -> m ()
-getAllKeysRange_ self range count
-  = liftDOM
-      (void (self ^. jsf "getAllKeys" [toJSVal range, toJSVal 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 (self ^. jsf "getAllRecords" [P.maybe (P.return jsUndefined) toJSVal options]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAllKeys Mozilla IDBIndex.getAllKeys documentation> 
-getAllKeys ::
-           (MonadDOM m, ToJSVal key) =>
-             IDBIndex -> key -> Maybe Word -> m IDBRequest
-getAllKeys self key count
-  = liftDOM
-      ((self ^. jsf "getAllKeys" [toJSVal key, toJSVal count]) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/getKey MDN IDBIndex.getKey documentation>
+getKey :: (MonadDOM m) => IDBIndex -> JSVal -> m IDBRequest
+getKey self query = liftDOM (((self ^. jsf "getKey" [toJSVal query]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAllKeys Mozilla IDBIndex.getAllKeys documentation> 
-getAllKeys_ ::
-            (MonadDOM m, ToJSVal key) => IDBIndex -> key -> Maybe Word -> m ()
-getAllKeys_ self key count
-  = liftDOM
-      (void (self ^. jsf "getAllKeys" [toJSVal key, toJSVal 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 (self ^. jsf "getKey" [toJSVal query]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
-countRange ::
-           (MonadDOM m) => IDBIndex -> Maybe IDBKeyRange -> m IDBRequest
-countRange self range
-  = liftDOM
-      ((self ^. jsf "count" [toJSVal range]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "openCursor" [toJSVal query, P.maybe (P.return jsUndefined) toJSVal direction]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
-countRange_ ::
-            (MonadDOM m) => IDBIndex -> Maybe IDBKeyRange -> m ()
-countRange_ self range
-  = liftDOM (void (self ^. jsf "count" [toJSVal 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 (self ^. jsf "openCursor" [toJSVal query, P.maybe (P.return jsUndefined) toJSVal direction]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
-count ::
-      (MonadDOM m, ToJSVal key) => IDBIndex -> key -> m IDBRequest
-count self key
-  = liftDOM
-      ((self ^. jsf "count" [toJSVal key]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "openKeyCursor" [toJSVal query, P.maybe (P.return jsUndefined) toJSVal direction]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
-count_ :: (MonadDOM m, ToJSVal key) => IDBIndex -> key -> m ()
-count_ self key
-  = liftDOM (void (self ^. jsf "count" [toJSVal 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 (self ^. jsf "openKeyCursor" [toJSVal query, P.maybe (P.return jsUndefined) toJSVal direction]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.name Mozilla IDBIndex.name documentation> 
+-- | <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 (self ^. jss "name" (toJSVal val))
+setName self val = liftDOM (void (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.name Mozilla IDBIndex.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => IDBIndex -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/name MDN IDBIndex.name documentation>
+getName :: (MonadDOM m, FromJSString result) => IDBIndex -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.objectStore Mozilla IDBIndex.objectStore documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/objectStore MDN IDBIndex.objectStore documentation>
 getObjectStore :: (MonadDOM m) => IDBIndex -> m IDBObjectStore
-getObjectStore self
-  = liftDOM ((self ^. js "objectStore") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.keyPath Mozilla IDBIndex.keyPath documentation> 
-getKeyPath :: (MonadDOM m) => IDBIndex -> m (Maybe IDBKeyPath)
-getKeyPath self = liftDOM ((self ^. js "keyPath") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.keyPath Mozilla IDBIndex.keyPath documentation> 
-getKeyPathUnsafe ::
-                 (MonadDOM m, HasCallStack) => IDBIndex -> m IDBKeyPath
-getKeyPathUnsafe self
-  = liftDOM
-      (((self ^. js "keyPath") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+getObjectStore self = liftDOM (((self ^. js "objectStore") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.keyPath Mozilla IDBIndex.keyPath documentation> 
-getKeyPathUnchecked :: (MonadDOM m) => IDBIndex -> m IDBKeyPath
-getKeyPathUnchecked self
-  = liftDOM ((self ^. js "keyPath") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/keyPath MDN IDBIndex.keyPath documentation>
+getKeyPath :: (MonadDOM m) => IDBIndex -> m JSVal
+getKeyPath self = liftDOM (self ^. js "keyPath")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.multiEntry Mozilla IDBIndex.multiEntry documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/multiEntry MDN IDBIndex.multiEntry documentation>
 getMultiEntry :: (MonadDOM m) => IDBIndex -> m Bool
-getMultiEntry self
-  = liftDOM ((self ^. js "multiEntry") >>= valToBool)
+getMultiEntry self = liftDOM (((self ^. js "multiEntry") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.unique Mozilla IDBIndex.unique documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBIndex/unique MDN IDBIndex.unique documentation>
 getUnique :: (MonadDOM m) => IDBIndex -> m Bool
-getUnique self = liftDOM ((self ^. js "unique") >>= valToBool)
+getUnique self = liftDOM (((self ^. js "unique") >>= valToBool))
diff --git a/src/JSDOM/Generated/IDBIndexParameters.hs b/src/JSDOM/Generated/IDBIndexParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/IDBIndexParameters.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
+module JSDOM.Generated.IDBIndexParameters
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/IndexedDB/#dictdef-idbindexparameters IDBIndexParameters specification>
+newIDBIndexParameters :: (MonadDOM m) => m IDBIndexParameters
+newIDBIndexParameters = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbindexparameters-unique IDBIndexParameters.unique specification>
+setUnique :: (MonadDOM m) => IDBIndexParameters -> Bool -> m ()
+setUnique self val = liftDOM (void (self ^. jss "unique" (toJSVal val)))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbindexparameters-unique IDBIndexParameters.unique specification>
+getUnique :: (MonadDOM m) => IDBIndexParameters -> m (Maybe Bool)
+getUnique self = liftDOM (((self ^. js "unique") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbindexparameters-unique IDBIndexParameters.unique specification>
+getUniqueUnsafe :: (MonadDOM m, HasCallStack) => IDBIndexParameters -> m Bool
+getUniqueUnsafe self = liftDOM ((((self ^. js "unique") >>= 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 (((self ^. js "unique") >>= valToBool))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbindexparameters-multientry IDBIndexParameters.multiEntry specification>
+setMultiEntry :: (MonadDOM m) => IDBIndexParameters -> Bool -> m ()
+setMultiEntry self val = liftDOM (void (self ^. jss "multiEntry" (toJSVal val)))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbindexparameters-multientry IDBIndexParameters.multiEntry specification>
+getMultiEntry :: (MonadDOM m) => IDBIndexParameters -> m (Maybe Bool)
+getMultiEntry self = liftDOM (((self ^. js "multiEntry") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbindexparameters-multientry IDBIndexParameters.multiEntry specification>
+getMultiEntryUnsafe :: (MonadDOM m, HasCallStack) => IDBIndexParameters -> m Bool
+getMultiEntryUnsafe self = liftDOM ((((self ^. js "multiEntry") >>= 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 (((self ^. js "multiEntry") >>= valToBool))
diff --git a/src/JSDOM/Generated/IDBKeyRange.hs b/src/JSDOM/Generated/IDBKeyRange.hs
--- a/src/JSDOM/Generated/IDBKeyRange.hs
+++ b/src/JSDOM/Generated/IDBKeyRange.hs
@@ -1,121 +1,72 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module JSDOM.Generated.IDBKeyRange
-       (only, only_, lowerBound, lowerBound_, upperBound, upperBound_,
-        bound, bound_, includes, includes_, getLower, getUpper,
-        getLowerOpen, getUpperOpen, IDBKeyRange(..), gTypeIDBKeyRange)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.only Mozilla IDBKeyRange.only documentation> 
-only :: (MonadDOM m, ToJSVal value) => value -> m IDBKeyRange
-only value
-  = liftDOM
-      (((jsg "IDBKeyRange") ^. jsf "only" [toJSVal value]) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/includes MDN IDBKeyRange.includes documentation>
+includes :: (MonadDOM m) => IDBKeyRange -> JSVal -> m Bool
+includes self key = liftDOM (((self ^. jsf "includes" [toJSVal key]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.only Mozilla IDBKeyRange.only documentation> 
-only_ :: (MonadDOM m, ToJSVal value) => value -> m ()
-only_ value
-  = liftDOM
-      (void ((jsg "IDBKeyRange") ^. jsf "only" [toJSVal value]))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/includes MDN IDBKeyRange.includes documentation>
+includes_ :: (MonadDOM m) => IDBKeyRange -> JSVal -> m ()
+includes_ self key = liftDOM (void (self ^. jsf "includes" [toJSVal key]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerBound Mozilla IDBKeyRange.lowerBound documentation> 
-lowerBound ::
-           (MonadDOM m, ToJSVal lower) => lower -> Bool -> m IDBKeyRange
-lowerBound lower open
-  = liftDOM
-      (((jsg "IDBKeyRange") ^. jsf "lowerBound"
-          [toJSVal lower, toJSVal open])
-         >>= fromJSValUnchecked)
+-- | <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 ((((jsg "IDBKeyRange") ^. jsf "bound" [toJSVal lower, toJSVal upper, P.maybe (P.return jsUndefined) toJSVal lowerOpen, P.maybe (P.return jsUndefined) toJSVal upperOpen]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerBound Mozilla IDBKeyRange.lowerBound documentation> 
-lowerBound_ :: (MonadDOM m, ToJSVal lower) => lower -> Bool -> m ()
-lowerBound_ lower open
-  = liftDOM
-      (void
-         ((jsg "IDBKeyRange") ^. jsf "lowerBound"
-            [toJSVal lower, toJSVal open]))
+-- | <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 ((jsg "IDBKeyRange") ^. jsf "bound" [toJSVal lower, toJSVal upper, P.maybe (P.return jsUndefined) toJSVal lowerOpen, P.maybe (P.return jsUndefined) toJSVal upperOpen]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperBound Mozilla IDBKeyRange.upperBound documentation> 
-upperBound ::
-           (MonadDOM m, ToJSVal upper) => upper -> Bool -> m IDBKeyRange
-upperBound upper open
-  = liftDOM
-      (((jsg "IDBKeyRange") ^. jsf "upperBound"
-          [toJSVal upper, toJSVal open])
-         >>= fromJSValUnchecked)
+-- | <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 ((((jsg "IDBKeyRange") ^. jsf "lowerBound" [toJSVal lower, P.maybe (P.return jsUndefined) toJSVal open]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperBound Mozilla IDBKeyRange.upperBound documentation> 
-upperBound_ :: (MonadDOM m, ToJSVal upper) => upper -> Bool -> m ()
-upperBound_ upper open
-  = liftDOM
-      (void
-         ((jsg "IDBKeyRange") ^. jsf "upperBound"
-            [toJSVal upper, toJSVal open]))
+-- | <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 ((jsg "IDBKeyRange") ^. jsf "lowerBound" [toJSVal lower, P.maybe (P.return jsUndefined) toJSVal open]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.bound Mozilla IDBKeyRange.bound documentation> 
-bound ::
-      (MonadDOM m, ToJSVal lower, ToJSVal upper) =>
-        lower -> upper -> Bool -> Bool -> m IDBKeyRange
-bound lower upper lowerOpen upperOpen
-  = liftDOM
-      (((jsg "IDBKeyRange") ^. jsf "bound"
-          [toJSVal lower, toJSVal upper, toJSVal lowerOpen,
-           toJSVal upperOpen])
-         >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/only_static MDN IDBKeyRange.only documentation>
+only :: (MonadDOM m) => JSVal -> m IDBKeyRange
+only value = liftDOM ((((jsg "IDBKeyRange") ^. jsf "only" [toJSVal value]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.bound Mozilla IDBKeyRange.bound documentation> 
-bound_ ::
-       (MonadDOM m, ToJSVal lower, ToJSVal upper) =>
-         lower -> upper -> Bool -> Bool -> m ()
-bound_ lower upper lowerOpen upperOpen
-  = liftDOM
-      (void
-         ((jsg "IDBKeyRange") ^. jsf "bound"
-            [toJSVal lower, toJSVal upper, toJSVal lowerOpen,
-             toJSVal upperOpen]))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/only_static MDN IDBKeyRange.only documentation>
+only_ :: (MonadDOM m) => JSVal -> m ()
+only_ value = liftDOM (void ((jsg "IDBKeyRange") ^. jsf "only" [toJSVal value]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.includes Mozilla IDBKeyRange.includes documentation> 
-includes ::
-         (MonadDOM m, ToJSVal key) => IDBKeyRange -> key -> m Bool
-includes self key
-  = liftDOM ((self ^. jsf "includes" [toJSVal key]) >>= valToBool)
+-- | <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 ((((jsg "IDBKeyRange") ^. jsf "upperBound" [toJSVal upper, P.maybe (P.return jsUndefined) toJSVal open]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.includes Mozilla IDBKeyRange.includes documentation> 
-includes_ ::
-          (MonadDOM m, ToJSVal key) => IDBKeyRange -> key -> m ()
-includes_ self key
-  = liftDOM (void (self ^. jsf "includes" [toJSVal key]))
+-- | <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 ((jsg "IDBKeyRange") ^. jsf "upperBound" [toJSVal upper, P.maybe (P.return jsUndefined) toJSVal open]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lower Mozilla IDBKeyRange.lower documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/lower MDN IDBKeyRange.lower documentation>
 getLower :: (MonadDOM m) => IDBKeyRange -> m JSVal
-getLower self = liftDOM ((self ^. js "lower") >>= toJSVal)
+getLower self = liftDOM (self ^. js "lower")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upper Mozilla IDBKeyRange.upper documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/upper MDN IDBKeyRange.upper documentation>
 getUpper :: (MonadDOM m) => IDBKeyRange -> m JSVal
-getUpper self = liftDOM ((self ^. js "upper") >>= toJSVal)
+getUpper self = liftDOM (self ^. js "upper")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerOpen Mozilla IDBKeyRange.lowerOpen documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/lowerOpen MDN IDBKeyRange.lowerOpen documentation>
 getLowerOpen :: (MonadDOM m) => IDBKeyRange -> m Bool
-getLowerOpen self
-  = liftDOM ((self ^. js "lowerOpen") >>= valToBool)
+getLowerOpen self = liftDOM (((self ^. js "lowerOpen") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperOpen Mozilla IDBKeyRange.upperOpen documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBKeyRange/upperOpen MDN IDBKeyRange.upperOpen documentation>
 getUpperOpen :: (MonadDOM m) => IDBKeyRange -> m Bool
-getUpperOpen self
-  = liftDOM ((self ^. js "upperOpen") >>= valToBool)
+getUpperOpen self = liftDOM (((self ^. js "upperOpen") >>= valToBool))
diff --git a/src/JSDOM/Generated/IDBObjectStore.hs b/src/JSDOM/Generated/IDBObjectStore.hs
--- a/src/JSDOM/Generated/IDBObjectStore.hs
+++ b/src/JSDOM/Generated/IDBObjectStore.hs
@@ -1,403 +1,156 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module JSDOM.Generated.IDBObjectStore
-       (put, put_, add, add_, deleteRange, deleteRange_, delete, delete_,
-        getRange, getRange_, get, get_, getKeyRange, getKeyRange_, getKey,
-        getKey_, clear, clear_, openCursorRange, openCursorRange_,
-        openCursor, openCursor_, openKeyCursorRange, openKeyCursorRange_,
-        openKeyCursor, openKeyCursor_, getAllRange, getAllRange_, getAll,
-        getAll_, getAllKeysRange, getAllKeysRange_, getAllKeys,
-        getAllKeys_, createIndex, createIndex_, index, index_, deleteIndex,
-        countRange, countRange_, count, count_, setName, getName,
-        getKeyPath, getKeyPathUnsafe, getKeyPathUnchecked, getIndexNames,
-        getTransaction, getAutoIncrement, IDBObjectStore(..),
-        gTypeIDBObjectStore)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.put Mozilla IDBObjectStore.put documentation> 
-put ::
-    (MonadDOM m, ToJSVal value, ToJSVal key) =>
-      IDBObjectStore -> value -> Maybe key -> m IDBRequest
-put self value key
-  = liftDOM
-      ((self ^. jsf "put" [toJSVal value, toJSVal key]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.put Mozilla IDBObjectStore.put documentation> 
-put_ ::
-     (MonadDOM m, ToJSVal value, ToJSVal key) =>
-       IDBObjectStore -> value -> Maybe key -> m ()
-put_ self value key
-  = liftDOM (void (self ^. jsf "put" [toJSVal value, toJSVal key]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.add Mozilla IDBObjectStore.add documentation> 
-add ::
-    (MonadDOM m, ToJSVal value, ToJSVal key) =>
-      IDBObjectStore -> value -> Maybe key -> m IDBRequest
-add self value key
-  = liftDOM
-      ((self ^. jsf "add" [toJSVal value, toJSVal key]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.add Mozilla IDBObjectStore.add documentation> 
-add_ ::
-     (MonadDOM m, ToJSVal value, ToJSVal key) =>
-       IDBObjectStore -> value -> Maybe key -> m ()
-add_ self value key
-  = liftDOM (void (self ^. jsf "add" [toJSVal value, toJSVal key]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
-deleteRange ::
-            (MonadDOM m) => IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
-deleteRange self keyRange
-  = liftDOM
-      ((self ^. jsf "delete" [toJSVal keyRange]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
-deleteRange_ ::
-             (MonadDOM m) => IDBObjectStore -> Maybe IDBKeyRange -> m ()
-deleteRange_ self keyRange
-  = liftDOM (void (self ^. jsf "delete" [toJSVal keyRange]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
-delete ::
-       (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> m IDBRequest
-delete self key
-  = liftDOM
-      ((self ^. jsf "delete" [toJSVal key]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
-delete_ ::
-        (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> m ()
-delete_ self key
-  = liftDOM (void (self ^. jsf "delete" [toJSVal key]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
-getRange ::
-         (MonadDOM m) => IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
-getRange self key
-  = liftDOM
-      ((self ^. jsf "get" [toJSVal key]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
-getRange_ ::
-          (MonadDOM m) => IDBObjectStore -> Maybe IDBKeyRange -> m ()
-getRange_ self key
-  = liftDOM (void (self ^. jsf "get" [toJSVal key]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
-get ::
-    (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> m IDBRequest
-get self key
-  = liftDOM
-      ((self ^. jsf "get" [toJSVal key]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
-get_ :: (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> m ()
-get_ self key = liftDOM (void (self ^. jsf "get" [toJSVal key]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getKey Mozilla IDBObjectStore.getKey documentation> 
-getKeyRange ::
-            (MonadDOM m) => IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
-getKeyRange self key
-  = liftDOM
-      ((self ^. jsf "getKey" [toJSVal key]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getKey Mozilla IDBObjectStore.getKey documentation> 
-getKeyRange_ ::
-             (MonadDOM m) => IDBObjectStore -> Maybe IDBKeyRange -> m ()
-getKeyRange_ self key
-  = liftDOM (void (self ^. jsf "getKey" [toJSVal key]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getKey Mozilla IDBObjectStore.getKey documentation> 
-getKey ::
-       (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> m IDBRequest
-getKey self key
-  = liftDOM
-      ((self ^. jsf "getKey" [toJSVal key]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "add" [toJSVal value, toJSVal key]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getKey Mozilla IDBObjectStore.getKey documentation> 
-getKey_ ::
-        (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> m ()
-getKey_ self key
-  = liftDOM (void (self ^. jsf "getKey" [toJSVal key]))
+-- | <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 (self ^. jsf "add" [toJSVal value, toJSVal key]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.clear Mozilla IDBObjectStore.clear documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/clear MDN IDBObjectStore.clear documentation>
 clear :: (MonadDOM m) => IDBObjectStore -> m IDBRequest
-clear self
-  = liftDOM ((self ^. jsf "clear" ()) >>= fromJSValUnchecked)
+clear self = liftDOM (((self ^. jsf "clear" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.clear Mozilla IDBObjectStore.clear documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/clear MDN IDBObjectStore.clear documentation>
 clear_ :: (MonadDOM m) => IDBObjectStore -> m ()
 clear_ self = liftDOM (void (self ^. jsf "clear" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
-openCursorRange ::
-                (MonadDOM m) =>
-                  IDBObjectStore ->
-                    Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m IDBRequest
-openCursorRange self range direction
-  = liftDOM
-      ((self ^. jsf "openCursor" [toJSVal range, toJSVal direction]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
-openCursorRange_ ::
-                 (MonadDOM m) =>
-                   IDBObjectStore ->
-                     Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m ()
-openCursorRange_ self range direction
-  = liftDOM
-      (void
-         (self ^. jsf "openCursor" [toJSVal range, toJSVal direction]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
-openCursor ::
-           (MonadDOM m, ToJSVal key) =>
-             IDBObjectStore -> key -> Maybe IDBCursorDirection -> m IDBRequest
-openCursor self key direction
-  = liftDOM
-      ((self ^. jsf "openCursor" [toJSVal key, toJSVal direction]) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/count MDN IDBObjectStore.count documentation>
+count :: (MonadDOM m) => IDBObjectStore -> JSVal -> m IDBRequest
+count self query = liftDOM (((self ^. jsf "count" [toJSVal query]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
-openCursor_ ::
-            (MonadDOM m, ToJSVal key) =>
-              IDBObjectStore -> key -> Maybe IDBCursorDirection -> m ()
-openCursor_ self key direction
-  = liftDOM
-      (void (self ^. jsf "openCursor" [toJSVal key, toJSVal direction]))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/count MDN IDBObjectStore.count documentation>
+count_ :: (MonadDOM m) => IDBObjectStore -> JSVal -> m ()
+count_ self query = liftDOM (void (self ^. jsf "count" [toJSVal query]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openKeyCursor Mozilla IDBObjectStore.openKeyCursor documentation> 
-openKeyCursorRange ::
-                   (MonadDOM m) =>
-                     IDBObjectStore ->
-                       Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m IDBRequest
-openKeyCursorRange self range direction
-  = liftDOM
-      ((self ^. jsf "openKeyCursor" [toJSVal range, toJSVal direction])
-         >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "createIndex" [toJSVal name, toJSVal keyPath, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openKeyCursor Mozilla IDBObjectStore.openKeyCursor documentation> 
-openKeyCursorRange_ ::
-                    (MonadDOM m) =>
-                      IDBObjectStore ->
-                        Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m ()
-openKeyCursorRange_ self range direction
-  = liftDOM
-      (void
-         (self ^. jsf "openKeyCursor" [toJSVal range, toJSVal direction]))
+-- | <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 (self ^. jsf "createIndex" [toJSVal name, toJSVal keyPath, P.maybe (P.return jsUndefined) toJSVal options]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openKeyCursor Mozilla IDBObjectStore.openKeyCursor documentation> 
-openKeyCursor ::
-              (MonadDOM m, ToJSVal key) =>
-                IDBObjectStore -> key -> Maybe IDBCursorDirection -> m IDBRequest
-openKeyCursor self key direction
-  = liftDOM
-      ((self ^. jsf "openKeyCursor" [toJSVal key, toJSVal direction]) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/delete MDN IDBObjectStore.delete documentation>
+delete :: (MonadDOM m) => IDBObjectStore -> JSVal -> m IDBRequest
+delete self query = liftDOM (((self ^. jsf "delete" [toJSVal query]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openKeyCursor Mozilla IDBObjectStore.openKeyCursor documentation> 
-openKeyCursor_ ::
-               (MonadDOM m, ToJSVal key) =>
-                 IDBObjectStore -> key -> Maybe IDBCursorDirection -> m ()
-openKeyCursor_ self key direction
-  = liftDOM
-      (void
-         (self ^. jsf "openKeyCursor" [toJSVal key, toJSVal direction]))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/delete MDN IDBObjectStore.delete documentation>
+delete_ :: (MonadDOM m) => IDBObjectStore -> JSVal -> m ()
+delete_ self query = liftDOM (void (self ^. jsf "delete" [toJSVal query]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAll Mozilla IDBObjectStore.getAll documentation> 
-getAllRange ::
-            (MonadDOM m) =>
-              IDBObjectStore -> Maybe IDBKeyRange -> Maybe Word -> m IDBRequest
-getAllRange self range count
-  = liftDOM
-      ((self ^. jsf "getAll" [toJSVal range, toJSVal count]) >>=
-         fromJSValUnchecked)
+-- | <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 (self ^. jsf "deleteIndex" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAll Mozilla IDBObjectStore.getAll documentation> 
-getAllRange_ ::
-             (MonadDOM m) =>
-               IDBObjectStore -> Maybe IDBKeyRange -> Maybe Word -> m ()
-getAllRange_ self range count
-  = liftDOM
-      (void (self ^. jsf "getAll" [toJSVal range, toJSVal count]))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/get MDN IDBObjectStore.get documentation>
+get :: (MonadDOM m) => IDBObjectStore -> JSVal -> m IDBRequest
+get self query = liftDOM (((self ^. jsf "get" [toJSVal query]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAll Mozilla IDBObjectStore.getAll documentation> 
-getAll ::
-       (MonadDOM m, ToJSVal key) =>
-         IDBObjectStore -> key -> Maybe Word -> m IDBRequest
-getAll self key count
-  = liftDOM
-      ((self ^. jsf "getAll" [toJSVal key, toJSVal count]) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/get MDN IDBObjectStore.get documentation>
+get_ :: (MonadDOM m) => IDBObjectStore -> JSVal -> m ()
+get_ self query = liftDOM (void (self ^. jsf "get" [toJSVal query]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAll Mozilla IDBObjectStore.getAll documentation> 
-getAll_ ::
-        (MonadDOM m, ToJSVal key) =>
-          IDBObjectStore -> key -> Maybe Word -> m ()
-getAll_ self key count
-  = liftDOM
-      (void (self ^. jsf "getAll" [toJSVal key, toJSVal count]))
+-- | <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 (((self ^. jsf "getAll" [toJSVal queryOrOptions, P.maybe (P.return jsUndefined) toJSVal count]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAllKeys Mozilla IDBObjectStore.getAllKeys documentation> 
-getAllKeysRange ::
-                (MonadDOM m) =>
-                  IDBObjectStore -> Maybe IDBKeyRange -> Maybe Word -> m IDBRequest
-getAllKeysRange self range count
-  = liftDOM
-      ((self ^. jsf "getAllKeys" [toJSVal range, toJSVal count]) >>=
-         fromJSValUnchecked)
+-- | <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 (self ^. jsf "getAll" [toJSVal queryOrOptions, P.maybe (P.return jsUndefined) toJSVal count]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAllKeys Mozilla IDBObjectStore.getAllKeys documentation> 
-getAllKeysRange_ ::
-                 (MonadDOM m) =>
-                   IDBObjectStore -> Maybe IDBKeyRange -> Maybe Word -> m ()
-getAllKeysRange_ self range count
-  = liftDOM
-      (void (self ^. jsf "getAllKeys" [toJSVal range, toJSVal count]))
+-- | <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 (((self ^. jsf "getAllKeys" [toJSVal queryOrOptions, P.maybe (P.return jsUndefined) toJSVal count]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAllKeys Mozilla IDBObjectStore.getAllKeys documentation> 
-getAllKeys ::
-           (MonadDOM m, ToJSVal key) =>
-             IDBObjectStore -> key -> Maybe Word -> m IDBRequest
-getAllKeys self key count
-  = liftDOM
-      ((self ^. jsf "getAllKeys" [toJSVal key, toJSVal count]) >>=
-         fromJSValUnchecked)
+-- | <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 (self ^. jsf "getAllKeys" [toJSVal queryOrOptions, P.maybe (P.return jsUndefined) toJSVal count]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAllKeys Mozilla IDBObjectStore.getAllKeys documentation> 
-getAllKeys_ ::
-            (MonadDOM m, ToJSVal key) =>
-              IDBObjectStore -> key -> Maybe Word -> m ()
-getAllKeys_ self key count
-  = liftDOM
-      (void (self ^. jsf "getAllKeys" [toJSVal key, toJSVal count]))
+-- | <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 (((self ^. jsf "getAllRecords" [P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.createIndex Mozilla IDBObjectStore.createIndex documentation> 
-createIndex ::
-            (MonadDOM m, ToJSString name, IsStringOrStrings keyPath) =>
-              IDBObjectStore ->
-                name -> keyPath -> Maybe IDBIndexParameters -> m IDBIndex
-createIndex self name keyPath options
-  = liftDOM
-      ((self ^. jsf "createIndex"
-          [toJSVal name, toJSVal keyPath, toJSVal options])
-         >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "getAllRecords" [P.maybe (P.return jsUndefined) toJSVal options]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.createIndex Mozilla IDBObjectStore.createIndex documentation> 
-createIndex_ ::
-             (MonadDOM m, ToJSString name, IsStringOrStrings keyPath) =>
-               IDBObjectStore ->
-                 name -> keyPath -> Maybe IDBIndexParameters -> m ()
-createIndex_ self name keyPath options
-  = liftDOM
-      (void
-         (self ^. jsf "createIndex"
-            [toJSVal name, toJSVal keyPath, toJSVal options]))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/getKey MDN IDBObjectStore.getKey documentation>
+getKey :: (MonadDOM m) => IDBObjectStore -> JSVal -> m IDBRequest
+getKey self query = liftDOM (((self ^. jsf "getKey" [toJSVal query]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.index Mozilla IDBObjectStore.index documentation> 
-index ::
-      (MonadDOM m, ToJSString name) =>
-        IDBObjectStore -> name -> m IDBIndex
-index self name
-  = liftDOM
-      ((self ^. jsf "index" [toJSVal name]) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/getKey MDN IDBObjectStore.getKey documentation>
+getKey_ :: (MonadDOM m) => IDBObjectStore -> JSVal -> m ()
+getKey_ self query = liftDOM (void (self ^. jsf "getKey" [toJSVal query]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.index Mozilla IDBObjectStore.index documentation> 
-index_ ::
-       (MonadDOM m, ToJSString name) => IDBObjectStore -> name -> m ()
-index_ self name
-  = liftDOM (void (self ^. jsf "index" [toJSVal name]))
+-- | <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 (((self ^. jsf "index" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.deleteIndex Mozilla IDBObjectStore.deleteIndex documentation> 
-deleteIndex ::
-            (MonadDOM m, ToJSString name) => IDBObjectStore -> name -> m ()
-deleteIndex self name
-  = liftDOM (void (self ^. jsf "deleteIndex" [toJSVal name]))
+-- | <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 (self ^. jsf "index" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
-countRange ::
-           (MonadDOM m) => IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
-countRange self range
-  = liftDOM
-      ((self ^. jsf "count" [toJSVal range]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "openCursor" [toJSVal query, P.maybe (P.return jsUndefined) toJSVal direction]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
-countRange_ ::
-            (MonadDOM m) => IDBObjectStore -> Maybe IDBKeyRange -> m ()
-countRange_ self range
-  = liftDOM (void (self ^. jsf "count" [toJSVal 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 (self ^. jsf "openCursor" [toJSVal query, P.maybe (P.return jsUndefined) toJSVal direction]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
-count ::
-      (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> m IDBRequest
-count self key
-  = liftDOM
-      ((self ^. jsf "count" [toJSVal key]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "openKeyCursor" [toJSVal query, P.maybe (P.return jsUndefined) toJSVal direction]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
-count_ ::
-       (MonadDOM m, ToJSVal key) => IDBObjectStore -> key -> m ()
-count_ self key
-  = liftDOM (void (self ^. jsf "count" [toJSVal 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 (self ^. jsf "openKeyCursor" [toJSVal query, P.maybe (P.return jsUndefined) toJSVal direction]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.name Mozilla IDBObjectStore.name documentation> 
-setName ::
-        (MonadDOM m, ToJSString val) => IDBObjectStore -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
+-- | <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 (((self ^. jsf "put" [toJSVal value, toJSVal key]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.name Mozilla IDBObjectStore.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => IDBObjectStore -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "put" [toJSVal value, toJSVal key]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.keyPath Mozilla IDBObjectStore.keyPath documentation> 
-getKeyPath ::
-           (MonadDOM m) => IDBObjectStore -> m (Maybe IDBKeyPath)
-getKeyPath self = liftDOM ((self ^. js "keyPath") >>= fromJSVal)
+-- | <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 (self ^. jss "name" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.keyPath Mozilla IDBObjectStore.keyPath documentation> 
-getKeyPathUnsafe ::
-                 (MonadDOM m, HasCallStack) => IDBObjectStore -> m IDBKeyPath
-getKeyPathUnsafe self
-  = liftDOM
-      (((self ^. js "keyPath") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/name MDN IDBObjectStore.name documentation>
+getName :: (MonadDOM m, FromJSString result) => IDBObjectStore -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.keyPath Mozilla IDBObjectStore.keyPath documentation> 
-getKeyPathUnchecked ::
-                    (MonadDOM m) => IDBObjectStore -> m IDBKeyPath
-getKeyPathUnchecked self
-  = liftDOM ((self ^. js "keyPath") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/keyPath MDN IDBObjectStore.keyPath documentation>
+getKeyPath :: (MonadDOM m) => IDBObjectStore -> m JSVal
+getKeyPath self = liftDOM (self ^. js "keyPath")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.indexNames Mozilla IDBObjectStore.indexNames documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/indexNames MDN IDBObjectStore.indexNames documentation>
 getIndexNames :: (MonadDOM m) => IDBObjectStore -> m DOMStringList
-getIndexNames self
-  = liftDOM ((self ^. js "indexNames") >>= fromJSValUnchecked)
+getIndexNames self = liftDOM (((self ^. js "indexNames") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.transaction Mozilla IDBObjectStore.transaction documentation> 
-getTransaction ::
-               (MonadDOM m) => IDBObjectStore -> m IDBTransaction
-getTransaction self
-  = liftDOM ((self ^. js "transaction") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/transaction MDN IDBObjectStore.transaction documentation>
+getTransaction :: (MonadDOM m) => IDBObjectStore -> m IDBTransaction
+getTransaction self = liftDOM (((self ^. js "transaction") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.autoIncrement Mozilla IDBObjectStore.autoIncrement documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBObjectStore/autoIncrement MDN IDBObjectStore.autoIncrement documentation>
 getAutoIncrement :: (MonadDOM m) => IDBObjectStore -> m Bool
-getAutoIncrement self
-  = liftDOM ((self ^. js "autoIncrement") >>= valToBool)
+getAutoIncrement self = liftDOM (((self ^. js "autoIncrement") >>= valToBool))
diff --git a/src/JSDOM/Generated/IDBObjectStoreParameters.hs b/src/JSDOM/Generated/IDBObjectStoreParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/IDBObjectStoreParameters.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
+module JSDOM.Generated.IDBObjectStoreParameters
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/IndexedDB/#dictdef-idbobjectstoreparameters IDBObjectStoreParameters specification>
+newIDBObjectStoreParameters :: (MonadDOM m) => m IDBObjectStoreParameters
+newIDBObjectStoreParameters = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "keyPath" (toJSVal val)))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbobjectstoreparameters-keypath IDBObjectStoreParameters.keyPath specification>
+getKeyPath :: (MonadDOM m) => IDBObjectStoreParameters -> m (Maybe StringOrSequenceString)
+getKeyPath self = liftDOM (((self ^. js "keyPath") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbobjectstoreparameters-keypath IDBObjectStoreParameters.keyPath specification>
+getKeyPathUnsafe :: (MonadDOM m, HasCallStack) => IDBObjectStoreParameters -> m StringOrSequenceString
+getKeyPathUnsafe self = liftDOM ((((self ^. js "keyPath") >>= 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 (((self ^. js "keyPath") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbobjectstoreparameters-autoincrement IDBObjectStoreParameters.autoIncrement specification>
+setAutoIncrement :: (MonadDOM m) => IDBObjectStoreParameters -> Bool -> m ()
+setAutoIncrement self val = liftDOM (void (self ^. jss "autoIncrement" (toJSVal val)))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbobjectstoreparameters-autoincrement IDBObjectStoreParameters.autoIncrement specification>
+getAutoIncrement :: (MonadDOM m) => IDBObjectStoreParameters -> m (Maybe Bool)
+getAutoIncrement self = liftDOM (((self ^. js "autoIncrement") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbobjectstoreparameters-autoincrement IDBObjectStoreParameters.autoIncrement specification>
+getAutoIncrementUnsafe :: (MonadDOM m, HasCallStack) => IDBObjectStoreParameters -> m Bool
+getAutoIncrementUnsafe self = liftDOM ((((self ^. js "autoIncrement") >>= 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 (((self ^. js "autoIncrement") >>= valToBool))
diff --git a/src/JSDOM/Generated/IDBOpenDBRequest.hs b/src/JSDOM/Generated/IDBOpenDBRequest.hs
--- a/src/JSDOM/Generated/IDBOpenDBRequest.hs
+++ b/src/JSDOM/Generated/IDBOpenDBRequest.hs
@@ -1,29 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module JSDOM.Generated.IDBOpenDBRequest
-       (blocked, upgradeNeeded, IDBOpenDBRequest(..),
-        gTypeIDBOpenDBRequest)
+       (blocked, upgradeNeeded, IDBOpenDBRequest(..), gTypeIDBOpenDBRequest)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.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/JSDOM/Generated/IDBRecord.hs b/src/JSDOM/Generated/IDBRecord.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/IDBRecord.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
+module JSDOM.Generated.IDBRecord
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbrecord-key IDBRecord.key specification>
+getKey :: (MonadDOM m) => IDBRecord -> m JSVal
+getKey self = liftDOM (self ^. js "key")
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbrecord-primarykey IDBRecord.primaryKey specification>
+getPrimaryKey :: (MonadDOM m) => IDBRecord -> m JSVal
+getPrimaryKey self = liftDOM (self ^. js "primaryKey")
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbrecord-value IDBRecord.value specification>
+getValue :: (MonadDOM m) => IDBRecord -> m JSVal
+getValue self = liftDOM (self ^. js "value")
diff --git a/src/JSDOM/Generated/IDBRequest.hs b/src/JSDOM/Generated/IDBRequest.hs
--- a/src/JSDOM/Generated/IDBRequest.hs
+++ b/src/JSDOM/Generated/IDBRequest.hs
@@ -1,114 +1,68 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module JSDOM.Generated.IDBRequest
-       (getResult, getResultUnsafe, getResultUnchecked, getError,
-        getErrorUnsafe, getErrorUnchecked, getSource, getSourceUnsafe,
-        getSourceUnchecked, getTransaction, getReadyState, success, error,
-        IDBRequest(..), gTypeIDBRequest, IsIDBRequest, toIDBRequest)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.result Mozilla IDBRequest.result documentation> 
-getResult ::
-          (MonadDOM m, IsIDBRequest self) =>
-            self -> m (Maybe IDBRequestResult)
-getResult self
-  = liftDOM (((toIDBRequest self) ^. js "result") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBRequest/result MDN IDBRequest.result documentation>
+getResult :: (MonadDOM m, IsIDBRequest self) => self -> m JSVal
+getResult self = liftDOM ((Types.toIDBRequest self) ^. js "result")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.result Mozilla IDBRequest.result documentation> 
-getResultUnsafe ::
-                (MonadDOM m, IsIDBRequest self, HasCallStack) =>
-                  self -> m IDBRequestResult
-getResultUnsafe self
-  = liftDOM
-      ((((toIDBRequest self) ^. js "result") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 ((((Types.toIDBRequest self) ^. js "error") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.result Mozilla IDBRequest.result documentation> 
-getResultUnchecked ::
-                   (MonadDOM m, IsIDBRequest self) => self -> m IDBRequestResult
-getResultUnchecked self
-  = liftDOM
-      (((toIDBRequest self) ^. js "result") >>= fromJSValUnchecked)
+-- | <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 (((((Types.toIDBRequest self) ^. js "error") >>= 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> 
-getError ::
-         (MonadDOM m, IsIDBRequest self) => self -> m (Maybe DOMError)
-getError self
-  = liftDOM (((toIDBRequest self) ^. js "error") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBRequest/error MDN IDBRequest.error documentation>
+getErrorUnchecked :: (MonadDOM m, IsIDBRequest self) => self -> m DOMException
+getErrorUnchecked self = liftDOM ((((Types.toIDBRequest self) ^. js "error") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.error Mozilla IDBRequest.error documentation> 
-getErrorUnsafe ::
-               (MonadDOM m, IsIDBRequest self, HasCallStack) => self -> m DOMError
-getErrorUnsafe self
-  = liftDOM
-      ((((toIDBRequest self) ^. js "error") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 ((((Types.toIDBRequest self) ^. js "source") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.error Mozilla IDBRequest.error documentation> 
-getErrorUnchecked ::
-                  (MonadDOM m, IsIDBRequest self) => self -> m DOMError
-getErrorUnchecked self
-  = liftDOM
-      (((toIDBRequest self) ^. js "error") >>= fromJSValUnchecked)
+-- | <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 (((((Types.toIDBRequest self) ^. js "source") >>= 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> 
-getSource ::
-          (MonadDOM m, IsIDBRequest self) =>
-            self -> m (Maybe IDBRequestSource)
-getSource self
-  = liftDOM (((toIDBRequest self) ^. js "source") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBRequest/source MDN IDBRequest.source documentation>
+getSourceUnchecked :: (MonadDOM m, IsIDBRequest self) => self -> m IDBObjectStoreOrIDBIndexOrIDBCursor
+getSourceUnchecked self = liftDOM ((((Types.toIDBRequest self) ^. js "source") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.source Mozilla IDBRequest.source documentation> 
-getSourceUnsafe ::
-                (MonadDOM m, IsIDBRequest self, HasCallStack) =>
-                  self -> m IDBRequestSource
-getSourceUnsafe self
-  = liftDOM
-      ((((toIDBRequest self) ^. js "source") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 ((((Types.toIDBRequest self) ^. js "transaction") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.source Mozilla IDBRequest.source documentation> 
-getSourceUnchecked ::
-                   (MonadDOM m, IsIDBRequest self) => self -> m IDBRequestSource
-getSourceUnchecked self
-  = liftDOM
-      (((toIDBRequest self) ^. js "source") >>= fromJSValUnchecked)
+-- | <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 (((((Types.toIDBRequest self) ^. js "transaction") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.transaction Mozilla IDBRequest.transaction documentation> 
-getTransaction ::
-               (MonadDOM m, IsIDBRequest self) => self -> m IDBTransaction
-getTransaction self
-  = liftDOM
-      (((toIDBRequest self) ^. js "transaction") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBRequest/transaction MDN IDBRequest.transaction documentation>
+getTransactionUnchecked :: (MonadDOM m, IsIDBRequest self) => self -> m IDBTransaction
+getTransactionUnchecked self = liftDOM ((((Types.toIDBRequest self) ^. js "transaction") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.readyState Mozilla IDBRequest.readyState documentation> 
-getReadyState ::
-              (MonadDOM m, IsIDBRequest self) => self -> m IDBRequestReadyState
-getReadyState self
-  = liftDOM
-      (((toIDBRequest self) ^. js "readyState") >>= 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 ((((Types.toIDBRequest self) ^. js "readyState") >>= 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/JSDOM/Generated/IDBTransaction.hs b/src/JSDOM/Generated/IDBTransaction.hs
--- a/src/JSDOM/Generated/IDBTransaction.hs
+++ b/src/JSDOM/Generated/IDBTransaction.hs
@@ -1,71 +1,72 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module JSDOM.Generated.IDBTransaction
-       (objectStore, objectStore_, abort, getObjectStoreNames, getMode,
-        getDb, getError, abortEvent, complete, error, IDBTransaction(..),
-        gTypeIDBTransaction)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.objectStore Mozilla IDBTransaction.objectStore documentation> 
-objectStore ::
-            (MonadDOM m, ToJSString name) =>
-              IDBTransaction -> name -> m IDBObjectStore
-objectStore self name
-  = liftDOM
-      ((self ^. jsf "objectStore" [toJSVal name]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.objectStore Mozilla IDBTransaction.objectStore documentation> 
-objectStore_ ::
-             (MonadDOM m, ToJSString name) => IDBTransaction -> name -> m ()
-objectStore_ self name
-  = liftDOM (void (self ^. jsf "objectStore" [toJSVal name]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.abort Mozilla IDBTransaction.abort documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/abort MDN IDBTransaction.abort documentation>
 abort :: (MonadDOM m) => IDBTransaction -> m ()
 abort self = liftDOM (void (self ^. jsf "abort" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.objectStoreNames Mozilla IDBTransaction.objectStoreNames documentation> 
-getObjectStoreNames ::
-                    (MonadDOM m) => IDBTransaction -> m DOMStringList
-getObjectStoreNames self
-  = liftDOM ((self ^. js "objectStoreNames") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/commit MDN IDBTransaction.commit documentation>
+commit :: (MonadDOM m) => IDBTransaction -> m ()
+commit self = liftDOM (void (self ^. jsf "commit" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.mode Mozilla IDBTransaction.mode documentation> 
+-- | <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 (((self ^. jsf "objectStore" [toJSVal name]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "objectStore" [toJSVal name]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/objectStoreNames MDN IDBTransaction.objectStoreNames documentation>
+getObjectStoreNames :: (MonadDOM m) => IDBTransaction -> m DOMStringList
+getObjectStoreNames self = liftDOM (((self ^. js "objectStoreNames") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/mode MDN IDBTransaction.mode documentation>
 getMode :: (MonadDOM m) => IDBTransaction -> m IDBTransactionMode
-getMode self = liftDOM ((self ^. js "mode") >>= fromJSValUnchecked)
+getMode self = liftDOM (((self ^. js "mode") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.db Mozilla IDBTransaction.db documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/durability MDN IDBTransaction.durability documentation>
+getDurability :: (MonadDOM m) => IDBTransaction -> m IDBTransactionDurability
+getDurability self = liftDOM (((self ^. js "durability") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/db MDN IDBTransaction.db documentation>
 getDb :: (MonadDOM m) => IDBTransaction -> m IDBDatabase
-getDb self = liftDOM ((self ^. js "db") >>= fromJSValUnchecked)
+getDb self = liftDOM (((self ^. js "db") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.error Mozilla IDBTransaction.error documentation> 
-getError :: (MonadDOM m) => IDBTransaction -> m DOMError
-getError self
-  = liftDOM ((self ^. js "error") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBTransaction/error MDN IDBTransaction.error documentation>
+getError :: (MonadDOM m) => IDBTransaction -> m (Maybe DOMException)
+getError self = liftDOM (((self ^. js "error") >>= 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 ((((self ^. js "error") >>= 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 (((self ^. js "error") >>= fromJSValUnchecked))
+
+-- | <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/JSDOM/Generated/IDBTransactionOptions.hs b/src/JSDOM/Generated/IDBTransactionOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/IDBTransactionOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
+module JSDOM.Generated.IDBTransactionOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/IndexedDB/#dictdef-idbtransactionoptions IDBTransactionOptions specification>
+newIDBTransactionOptions :: (MonadDOM m) => m IDBTransactionOptions
+newIDBTransactionOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbtransactionoptions-durability IDBTransactionOptions.durability specification>
+setDurability :: (MonadDOM m) => IDBTransactionOptions -> IDBTransactionDurability -> m ()
+setDurability self val = liftDOM (void (self ^. jss "durability" (toJSVal val)))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbtransactionoptions-durability IDBTransactionOptions.durability specification>
+getDurability :: (MonadDOM m) => IDBTransactionOptions -> m (Maybe IDBTransactionDurability)
+getDurability self = liftDOM (((self ^. js "durability") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbtransactionoptions-durability IDBTransactionOptions.durability specification>
+getDurabilityUnsafe :: (MonadDOM m, HasCallStack) => IDBTransactionOptions -> m IDBTransactionDurability
+getDurabilityUnsafe self = liftDOM ((((self ^. js "durability") >>= 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 (((self ^. js "durability") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/IDBVersionChangeEvent.hs b/src/JSDOM/Generated/IDBVersionChangeEvent.hs
--- a/src/JSDOM/Generated/IDBVersionChangeEvent.hs
+++ b/src/JSDOM/Generated/IDBVersionChangeEvent.hs
@@ -1,60 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
 module JSDOM.Generated.IDBVersionChangeEvent
-       (newIDBVersionChangeEvent, getOldVersion, getNewVersion,
-        getNewVersionUnsafe, getNewVersionUnchecked,
-        IDBVersionChangeEvent(..), gTypeIDBVersionChangeEvent)
+       (newIDBVersionChangeEvent, getOldVersion, getNewVersion, getNewVersionUnsafe, getNewVersionUnchecked, IDBVersionChangeEvent(..), gTypeIDBVersionChangeEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent Mozilla IDBVersionChangeEvent documentation> 
-newIDBVersionChangeEvent ::
-                         (MonadDOM m, ToJSString type') =>
-                           type' -> Maybe IDBVersionChangeEventInit -> m IDBVersionChangeEvent
-newIDBVersionChangeEvent type' eventInitDict
-  = liftDOM
-      (IDBVersionChangeEvent <$>
-         new (jsg "IDBVersionChangeEvent")
-           [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "IDBVersionChangeEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent.oldVersion Mozilla IDBVersionChangeEvent.oldVersion documentation> 
-getOldVersion :: (MonadDOM m) => IDBVersionChangeEvent -> m Word64
-getOldVersion self
-  = liftDOM (round <$> ((self ^. js "oldVersion") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/IDBVersionChangeEvent/oldVersion MDN IDBVersionChangeEvent.oldVersion documentation>
+getOldVersion :: (MonadDOM m) => IDBVersionChangeEvent -> m Word53
+getOldVersion self = liftDOM (((self ^. js "oldVersion") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent.newVersion Mozilla IDBVersionChangeEvent.newVersion documentation> 
-getNewVersion ::
-              (MonadDOM m) => IDBVersionChangeEvent -> m (Maybe Word64)
-getNewVersion self
-  = liftDOM
-      ((self ^. js "newVersion") >>= integralFromDoubleFromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBVersionChangeEvent/newVersion MDN IDBVersionChangeEvent.newVersion documentation>
+getNewVersion :: (MonadDOM m) => IDBVersionChangeEvent -> m (Maybe Word53)
+getNewVersion self = liftDOM (((self ^. js "newVersion") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent.newVersion Mozilla IDBVersionChangeEvent.newVersion documentation> 
-getNewVersionUnsafe ::
-                    (MonadDOM m, HasCallStack) => IDBVersionChangeEvent -> m Word64
-getNewVersionUnsafe self
-  = liftDOM
-      (((self ^. js "newVersion") >>= integralFromDoubleFromJSVal) >>=
-         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 ((((self ^. js "newVersion") >>= 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 ::
-                       (MonadDOM m) => IDBVersionChangeEvent -> m Word64
-getNewVersionUnchecked self
-  = liftDOM
-      ((self ^. js "newVersion") >>=
-         integralFromDoubleFromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IDBVersionChangeEvent/newVersion MDN IDBVersionChangeEvent.newVersion documentation>
+getNewVersionUnchecked :: (MonadDOM m) => IDBVersionChangeEvent -> m Word53
+getNewVersionUnchecked self = liftDOM (((self ^. js "newVersion") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/IDBVersionChangeEventInit.hs b/src/JSDOM/Generated/IDBVersionChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/IDBVersionChangeEventInit.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from IndexedDB-3 (webref). Do not edit.
+module JSDOM.Generated.IDBVersionChangeEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/IndexedDB/#dictdef-idbversionchangeeventinit IDBVersionChangeEventInit specification>
+newIDBVersionChangeEventInit :: (MonadDOM m) => m IDBVersionChangeEventInit
+newIDBVersionChangeEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbversionchangeeventinit-oldversion IDBVersionChangeEventInit.oldVersion specification>
+setOldVersion :: (MonadDOM m) => IDBVersionChangeEventInit -> Word53 -> m ()
+setOldVersion self val = liftDOM (void (self ^. jss "oldVersion" (toJSVal val)))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbversionchangeeventinit-oldversion IDBVersionChangeEventInit.oldVersion specification>
+getOldVersion :: (MonadDOM m) => IDBVersionChangeEventInit -> m (Maybe Word53)
+getOldVersion self = liftDOM (((self ^. js "oldVersion") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbversionchangeeventinit-oldversion IDBVersionChangeEventInit.oldVersion specification>
+getOldVersionUnsafe :: (MonadDOM m, HasCallStack) => IDBVersionChangeEventInit -> m Word53
+getOldVersionUnsafe self = liftDOM ((((self ^. js "oldVersion") >>= 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 (((self ^. js "oldVersion") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbversionchangeeventinit-newversion IDBVersionChangeEventInit.newVersion specification>
+setNewVersion :: (MonadDOM m) => IDBVersionChangeEventInit -> Maybe Word53 -> m ()
+setNewVersion self val = liftDOM (void (self ^. jss "newVersion" (toJSVal val)))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbversionchangeeventinit-newversion IDBVersionChangeEventInit.newVersion specification>
+getNewVersion :: (MonadDOM m) => IDBVersionChangeEventInit -> m (Maybe Word53)
+getNewVersion self = liftDOM (((self ^. js "newVersion") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-idbversionchangeeventinit-newversion IDBVersionChangeEventInit.newVersion specification>
+getNewVersionUnsafe :: (MonadDOM m, HasCallStack) => IDBVersionChangeEventInit -> m Word53
+getNewVersionUnsafe self = liftDOM ((((self ^. js "newVersion") >>= 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 (((self ^. js "newVersion") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/IIRFilterNode.hs b/src/JSDOM/Generated/IIRFilterNode.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/IIRFilterNode.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.IIRFilterNode
+       (newIIRFilterNode, getFrequencyResponse, IIRFilterNode(..), gTypeIIRFilterNode)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "IIRFilterNode") [toJSVal context, toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "getFrequencyResponse" [toJSVal frequencyHz, toJSVal magResponse, toJSVal phaseResponse]))
diff --git a/src/JSDOM/Generated/IIRFilterOptions.hs b/src/JSDOM/Generated/IIRFilterOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/IIRFilterOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.IIRFilterOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#IIRFilterOptions IIRFilterOptions specification>
+newIIRFilterOptions :: (MonadDOM m) => [Double] -> [Double] -> m IIRFilterOptions
+newIIRFilterOptions feedforward feedback = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "feedforward" (toJSVal feedforward)) P.>> (o ^. jss "feedback" (toJSVal feedback)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-iirfilteroptions-feedforward IIRFilterOptions.feedforward specification>
+setFeedforward :: (MonadDOM m) => IIRFilterOptions -> [Double] -> m ()
+setFeedforward self val = liftDOM (void (self ^. jss "feedforward" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-iirfilteroptions-feedforward IIRFilterOptions.feedforward specification>
+getFeedforward :: (MonadDOM m) => IIRFilterOptions -> m [Double]
+getFeedforward self = liftDOM (((self ^. js "feedforward") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-iirfilteroptions-feedback IIRFilterOptions.feedback specification>
+setFeedback :: (MonadDOM m) => IIRFilterOptions -> [Double] -> m ()
+setFeedback self val = liftDOM (void (self ^. jss "feedback" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-iirfilteroptions-feedback IIRFilterOptions.feedback specification>
+getFeedback :: (MonadDOM m) => IIRFilterOptions -> m [Double]
+getFeedback self = liftDOM (((self ^. js "feedback") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/IdentityCredentialRequestOptions.hs b/src/JSDOM/Generated/IdentityCredentialRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/IdentityCredentialRequestOptions.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fedcm-1 (webref). Do not edit.
+module JSDOM.Generated.IdentityCredentialRequestOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c-fedid.github.io/FedCM/#dictdef-identitycredentialrequestoptions IdentityCredentialRequestOptions specification>
+newIdentityCredentialRequestOptions :: (MonadDOM m) => [IdentityProviderRequestOptions] -> m IdentityCredentialRequestOptions
+newIdentityCredentialRequestOptions providers = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "providers" (toJSVal providers)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-providers IdentityCredentialRequestOptions.providers specification>
+setProviders :: (MonadDOM m) => IdentityCredentialRequestOptions -> [IdentityProviderRequestOptions] -> m ()
+setProviders self val = liftDOM (void (self ^. jss "providers" (toJSVal val)))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-providers IdentityCredentialRequestOptions.providers specification>
+getProviders :: (MonadDOM m) => IdentityCredentialRequestOptions -> m [IdentityProviderRequestOptions]
+getProviders self = liftDOM (((self ^. js "providers") >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-context IdentityCredentialRequestOptions.context specification>
+setContext :: (MonadDOM m) => IdentityCredentialRequestOptions -> IdentityCredentialRequestOptionsContext -> m ()
+setContext self val = liftDOM (void (self ^. jss "context" (toJSVal val)))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-context IdentityCredentialRequestOptions.context specification>
+getContext :: (MonadDOM m) => IdentityCredentialRequestOptions -> m (Maybe IdentityCredentialRequestOptionsContext)
+getContext self = liftDOM (((self ^. js "context") >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-context IdentityCredentialRequestOptions.context specification>
+getContextUnsafe :: (MonadDOM m, HasCallStack) => IdentityCredentialRequestOptions -> m IdentityCredentialRequestOptionsContext
+getContextUnsafe self = liftDOM ((((self ^. js "context") >>= 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 (((self ^. js "context") >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-mode IdentityCredentialRequestOptions.mode specification>
+setMode :: (MonadDOM m) => IdentityCredentialRequestOptions -> IdentityCredentialRequestOptionsMode -> m ()
+setMode self val = liftDOM (void (self ^. jss "mode" (toJSVal val)))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-mode IdentityCredentialRequestOptions.mode specification>
+getMode :: (MonadDOM m) => IdentityCredentialRequestOptions -> m (Maybe IdentityCredentialRequestOptionsMode)
+getMode self = liftDOM (((self ^. js "mode") >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identitycredentialrequestoptions-mode IdentityCredentialRequestOptions.mode specification>
+getModeUnsafe :: (MonadDOM m, HasCallStack) => IdentityCredentialRequestOptions -> m IdentityCredentialRequestOptionsMode
+getModeUnsafe self = liftDOM ((((self ^. js "mode") >>= 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 (((self ^. js "mode") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/IdentityProviderConfig.hs b/src/JSDOM/Generated/IdentityProviderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/IdentityProviderConfig.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fedcm-1 (webref). Do not edit.
+module JSDOM.Generated.IdentityProviderConfig
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "configURL" (toJSVal configURL)) P.>> (o ^. jss "clientId" (toJSVal clientId)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toIdentityProviderConfig self) ^. jss "configURL" (toJSVal val)))
+
+-- | <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 ((((Types.toIdentityProviderConfig self) ^. js "configURL") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toIdentityProviderConfig self) ^. jss "clientId" (toJSVal val)))
+
+-- | <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 ((((Types.toIdentityProviderConfig self) ^. js "clientId") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/IdentityProviderRequestOptions.hs b/src/JSDOM/Generated/IdentityProviderRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/IdentityProviderRequestOptions.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fedcm-1 (webref). Do not edit.
+module JSDOM.Generated.IdentityProviderRequestOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "configURL" (toJSVal configURL)) P.>> (o ^. jss "clientId" (toJSVal clientId)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "loginHint" (toJSVal val)))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-loginhint IdentityProviderRequestOptions.loginHint specification>
+getLoginHint :: (MonadDOM m, FromJSString result) => IdentityProviderRequestOptions -> m (Maybe result)
+getLoginHint self = liftDOM (((self ^. js "loginHint") >>= fromMaybeJSString))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-loginhint IdentityProviderRequestOptions.loginHint specification>
+getLoginHintUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => IdentityProviderRequestOptions -> m result
+getLoginHintUnsafe self = liftDOM ((((self ^. js "loginHint") >>= fromMaybeJSString) >>= 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 (((self ^. js "loginHint") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "domainHint" (toJSVal val)))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-domainhint IdentityProviderRequestOptions.domainHint specification>
+getDomainHint :: (MonadDOM m, FromJSString result) => IdentityProviderRequestOptions -> m (Maybe result)
+getDomainHint self = liftDOM (((self ^. js "domainHint") >>= fromMaybeJSString))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-domainhint IdentityProviderRequestOptions.domainHint specification>
+getDomainHintUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => IdentityProviderRequestOptions -> m result
+getDomainHintUnsafe self = liftDOM ((((self ^. js "domainHint") >>= fromMaybeJSString) >>= 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 (((self ^. js "domainHint") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "fields" (toJSVal val)))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-fields IdentityProviderRequestOptions.fields specification>
+getFields :: (MonadDOM m, FromJSString result) => IdentityProviderRequestOptions -> m (Maybe [result])
+getFields self = liftDOM (((self ^. js "fields") >>= 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 ((((self ^. js "fields") >>= 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 (((self ^. js "fields") >>= fromJSValUnchecked))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-params IdentityProviderRequestOptions.params specification>
+setParams :: (MonadDOM m) => IdentityProviderRequestOptions -> JSVal -> m ()
+setParams self val = liftDOM (void (self ^. jss "params" (toJSVal val)))
+
+-- | <https://w3c-fedid.github.io/FedCM/#dom-identityproviderrequestoptions-params IdentityProviderRequestOptions.params specification>
+getParams :: (MonadDOM m) => IdentityProviderRequestOptions -> m JSVal
+getParams self = liftDOM (self ^. js "params")
diff --git a/src/JSDOM/Generated/IdleDeadline.hs b/src/JSDOM/Generated/IdleDeadline.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/IdleDeadline.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from requestidlecallback (webref). Do not edit.
+module JSDOM.Generated.IdleDeadline
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/IdleDeadline/timeRemaining MDN IdleDeadline.timeRemaining documentation>
+timeRemaining :: (MonadDOM m) => IdleDeadline -> m Double
+timeRemaining self = liftDOM (((self ^. jsf "timeRemaining" ()) >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IdleDeadline/timeRemaining MDN IdleDeadline.timeRemaining documentation>
+timeRemaining_ :: (MonadDOM m) => IdleDeadline -> m ()
+timeRemaining_ self = liftDOM (void (self ^. jsf "timeRemaining" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IdleDeadline/didTimeout MDN IdleDeadline.didTimeout documentation>
+getDidTimeout :: (MonadDOM m) => IdleDeadline -> m Bool
+getDidTimeout self = liftDOM (((self ^. js "didTimeout") >>= valToBool))
diff --git a/src/JSDOM/Generated/IdleRequestCallback.hs b/src/JSDOM/Generated/IdleRequestCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/IdleRequestCallback.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from requestidlecallback (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newIdleRequestCallback :: (MonadDOM m) => (IdleDeadline -> JSM ()) -> m IdleRequestCallback
+newIdleRequestCallback callback = liftDOM (IdleRequestCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (deadline : _) -> do
+          deadline' <- fromJSValUnchecked deadline
+          callback deadline'))
+
+newIdleRequestCallbackSync :: (MonadDOM m) => (IdleDeadline -> JSM ()) -> m IdleRequestCallback
+newIdleRequestCallbackSync callback = liftDOM (IdleRequestCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (deadline : _) -> do
+          deadline' <- fromJSValUnchecked deadline
+          callback deadline'))
+
+newIdleRequestCallbackAsync :: (MonadDOM m) => (IdleDeadline -> JSM ()) -> m IdleRequestCallback
+newIdleRequestCallbackAsync callback = liftDOM (IdleRequestCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (deadline : _) -> do
+          deadline' <- fromJSValUnchecked deadline
+          callback deadline'))
diff --git a/src/JSDOM/Generated/IdleRequestOptions.hs b/src/JSDOM/Generated/IdleRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/IdleRequestOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from requestidlecallback (webref). Do not edit.
+module JSDOM.Generated.IdleRequestOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/requestidlecallback/#dom-idlerequestoptions IdleRequestOptions specification>
+newIdleRequestOptions :: (MonadDOM m) => m IdleRequestOptions
+newIdleRequestOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/requestidlecallback/#dom-idlerequestoptions-timeout IdleRequestOptions.timeout specification>
+setTimeout :: (MonadDOM m) => IdleRequestOptions -> Word -> m ()
+setTimeout self val = liftDOM (void (self ^. jss "timeout" (toJSVal val)))
+
+-- | <https://w3c.github.io/requestidlecallback/#dom-idlerequestoptions-timeout IdleRequestOptions.timeout specification>
+getTimeout :: (MonadDOM m) => IdleRequestOptions -> m (Maybe Word)
+getTimeout self = liftDOM (((self ^. js "timeout") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/requestidlecallback/#dom-idlerequestoptions-timeout IdleRequestOptions.timeout specification>
+getTimeoutUnsafe :: (MonadDOM m, HasCallStack) => IdleRequestOptions -> m Word
+getTimeoutUnsafe self = liftDOM ((((self ^. js "timeout") >>= 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 ((P.round <$> ((self ^. js "timeout") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/ImageBitmap.hs b/src/JSDOM/Generated/ImageBitmap.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ImageBitmap.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.ImageBitmap
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageBitmap/close MDN ImageBitmap.close documentation>
+close :: (MonadDOM m) => ImageBitmap -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageBitmap/width MDN ImageBitmap.width documentation>
+getWidth :: (MonadDOM m) => ImageBitmap -> m Word
+getWidth self = liftDOM ((P.round <$> ((self ^. js "width") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageBitmap/height MDN ImageBitmap.height documentation>
+getHeight :: (MonadDOM m) => ImageBitmap -> m Word
+getHeight self = liftDOM ((P.round <$> ((self ^. js "height") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/ImageBitmapRenderingContext.hs b/src/JSDOM/Generated/ImageBitmapRenderingContext.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ImageBitmapRenderingContext.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.ImageBitmapRenderingContext
+       (transferFromImageBitmap, getCanvas, ImageBitmapRenderingContext(..), gTypeImageBitmapRenderingContext)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "transferFromImageBitmap" [toJSVal bitmap]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageBitmapRenderingContext/canvas MDN ImageBitmapRenderingContext.canvas documentation>
+getCanvas :: (MonadDOM m) => ImageBitmapRenderingContext -> m HTMLCanvasElementOrOffscreenCanvas
+getCanvas self = liftDOM (((self ^. js "canvas") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ImageCapture.hs b/src/JSDOM/Generated/ImageCapture.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ImageCapture.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from image-capture (webref). Do not edit.
+module JSDOM.Generated.ImageCapture
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/ImageCapture MDN ImageCapture. documentation>
+newImageCapture :: (MonadDOM m, IsMediaStreamTrack videoTrack) => videoTrack -> m ImageCapture
+newImageCapture videoTrack = liftDOM (((new (jsg "ImageCapture") [toJSVal videoTrack]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/getPhotoCapabilities MDN ImageCapture.getPhotoCapabilities documentation>
+getPhotoCapabilities :: (MonadDOM m) => ImageCapture -> m PhotoCapabilities
+getPhotoCapabilities self = liftDOM (((((self ^. jsf "getPhotoCapabilities" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/getPhotoCapabilities MDN ImageCapture.getPhotoCapabilities documentation>
+getPhotoCapabilities_ :: (MonadDOM m) => ImageCapture -> m ()
+getPhotoCapabilities_ self = liftDOM (void (((self ^. jsf "getPhotoCapabilities" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/getPhotoSettings MDN ImageCapture.getPhotoSettings documentation>
+getPhotoSettings :: (MonadDOM m) => ImageCapture -> m PhotoSettings
+getPhotoSettings self = liftDOM (((((self ^. jsf "getPhotoSettings" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/getPhotoSettings MDN ImageCapture.getPhotoSettings documentation>
+getPhotoSettings_ :: (MonadDOM m) => ImageCapture -> m ()
+getPhotoSettings_ self = liftDOM (void (((self ^. jsf "getPhotoSettings" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/grabFrame MDN ImageCapture.grabFrame documentation>
+grabFrame :: (MonadDOM m) => ImageCapture -> m ImageBitmap
+grabFrame self = liftDOM (((((self ^. jsf "grabFrame" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/grabFrame MDN ImageCapture.grabFrame documentation>
+grabFrame_ :: (MonadDOM m) => ImageCapture -> m ()
+grabFrame_ self = liftDOM (void (((self ^. jsf "grabFrame" ()) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "takePhoto" [P.maybe (P.return jsUndefined) toJSVal photoSettings]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "takePhoto" [P.maybe (P.return jsUndefined) toJSVal photoSettings]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageCapture/track MDN ImageCapture.track documentation>
+getTrack :: (MonadDOM m) => ImageCapture -> m MediaStreamTrack
+getTrack self = liftDOM (((self ^. js "track") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ImageData.hs b/src/JSDOM/Generated/ImageData.hs
--- a/src/JSDOM/Generated/ImageData.hs
+++ b/src/JSDOM/Generated/ImageData.hs
@@ -1,50 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.ImageData
-       (newImageData, newImageData', getWidth, getHeight, getData,
-        ImageData(..), gTypeImageData)
+       (newImageData, newImageDataData', getWidth, getHeight, getData, getColorSpace, ImageData(..), gTypeImageData)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData Mozilla ImageData documentation> 
-newImageData ::
-             (MonadDOM m, IsUint8ClampedArray data') =>
-               data' -> Word -> Maybe Word -> m ImageData
-newImageData data' sw sh
-  = liftDOM
-      (ImageData <$>
-         new (jsg "ImageData") [toJSVal data', toJSVal sw, toJSVal sh])
+-- | <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 (((new (jsg "ImageData") [toJSVal sw, toJSVal sh, P.maybe (P.return jsUndefined) toJSVal settings]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData Mozilla ImageData documentation> 
-newImageData' :: (MonadDOM m) => Word -> Word -> m ImageData
-newImageData' sw sh
-  = liftDOM
-      (ImageData <$> new (jsg "ImageData") [toJSVal sw, toJSVal sh])
+-- | <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 (((new (jsg "ImageData") [toJSVal data', toJSVal sw, P.maybe (P.return jsUndefined) toJSVal sh, P.maybe (P.return jsUndefined) toJSVal settings]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData.width Mozilla ImageData.width documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ImageData/width MDN ImageData.width documentation>
 getWidth :: (MonadDOM m) => ImageData -> m Word
-getWidth self
-  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
+getWidth self = liftDOM ((P.round <$> ((self ^. js "width") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData.height Mozilla ImageData.height documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ImageData/height MDN ImageData.height documentation>
 getHeight :: (MonadDOM m) => ImageData -> m Word
-getHeight self
-  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
+getHeight self = liftDOM ((P.round <$> ((self ^. js "height") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData.data Mozilla ImageData.data documentation> 
-getData :: (MonadDOM m) => ImageData -> m Uint8ClampedArray
-getData self = liftDOM ((self ^. js "data") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/ImageData/data MDN ImageData.data documentation>
+getData :: (MonadDOM m) => ImageData -> m ImageDataArray
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageData/colorSpace MDN ImageData.colorSpace documentation>
+getColorSpace :: (MonadDOM m) => ImageData -> m PredefinedColorSpace
+getColorSpace self = liftDOM (((self ^. js "colorSpace") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ImageDataSettings.hs b/src/JSDOM/Generated/ImageDataSettings.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ImageDataSettings.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.ImageDataSettings
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/imagebitmap-and-animations.html#imagedatasettings ImageDataSettings specification>
+newImageDataSettings :: (MonadDOM m) => m ImageDataSettings
+newImageDataSettings = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "colorSpace" (toJSVal val)))
+
+-- | <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 (((self ^. js "colorSpace") >>= 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 ((((self ^. js "colorSpace") >>= 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 (((self ^. js "colorSpace") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "pixelFormat" (toJSVal val)))
+
+-- | <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 (((self ^. js "pixelFormat") >>= 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 ((((self ^. js "pixelFormat") >>= 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 (((self ^. js "pixelFormat") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ImageDecodeOptions.hs b/src/JSDOM/Generated/ImageDecodeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ImageDecodeOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.ImageDecodeOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-imagedecodeoptions ImageDecodeOptions specification>
+newImageDecodeOptions :: (MonadDOM m) => m ImageDecodeOptions
+newImageDecodeOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecodeoptions-frameindex ImageDecodeOptions.frameIndex specification>
+setFrameIndex :: (MonadDOM m) => ImageDecodeOptions -> Word -> m ()
+setFrameIndex self val = liftDOM (void (self ^. jss "frameIndex" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecodeoptions-frameindex ImageDecodeOptions.frameIndex specification>
+getFrameIndex :: (MonadDOM m) => ImageDecodeOptions -> m (Maybe Word)
+getFrameIndex self = liftDOM (((self ^. js "frameIndex") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecodeoptions-frameindex ImageDecodeOptions.frameIndex specification>
+getFrameIndexUnsafe :: (MonadDOM m, HasCallStack) => ImageDecodeOptions -> m Word
+getFrameIndexUnsafe self = liftDOM ((((self ^. js "frameIndex") >>= 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 ((P.round <$> ((self ^. js "frameIndex") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecodeoptions-completeframesonly ImageDecodeOptions.completeFramesOnly specification>
+setCompleteFramesOnly :: (MonadDOM m) => ImageDecodeOptions -> Bool -> m ()
+setCompleteFramesOnly self val = liftDOM (void (self ^. jss "completeFramesOnly" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecodeoptions-completeframesonly ImageDecodeOptions.completeFramesOnly specification>
+getCompleteFramesOnly :: (MonadDOM m) => ImageDecodeOptions -> m (Maybe Bool)
+getCompleteFramesOnly self = liftDOM (((self ^. js "completeFramesOnly") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecodeoptions-completeframesonly ImageDecodeOptions.completeFramesOnly specification>
+getCompleteFramesOnlyUnsafe :: (MonadDOM m, HasCallStack) => ImageDecodeOptions -> m Bool
+getCompleteFramesOnlyUnsafe self = liftDOM ((((self ^. js "completeFramesOnly") >>= 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 (((self ^. js "completeFramesOnly") >>= valToBool))
diff --git a/src/JSDOM/Generated/ImageDecodeResult.hs b/src/JSDOM/Generated/ImageDecodeResult.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ImageDecodeResult.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.ImageDecodeResult
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-imagedecoderesult ImageDecodeResult specification>
+newImageDecodeResult :: (MonadDOM m) => VideoFrame -> Bool -> m ImageDecodeResult
+newImageDecodeResult image complete = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "image" (toJSVal image)) P.>> (o ^. jss "complete" (toJSVal complete)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderesult-image ImageDecodeResult.image specification>
+setImage :: (MonadDOM m) => ImageDecodeResult -> VideoFrame -> m ()
+setImage self val = liftDOM (void (self ^. jss "image" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderesult-image ImageDecodeResult.image specification>
+getImage :: (MonadDOM m) => ImageDecodeResult -> m VideoFrame
+getImage self = liftDOM (((self ^. js "image") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderesult-complete ImageDecodeResult.complete specification>
+setComplete :: (MonadDOM m) => ImageDecodeResult -> Bool -> m ()
+setComplete self val = liftDOM (void (self ^. jss "complete" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderesult-complete ImageDecodeResult.complete specification>
+getComplete :: (MonadDOM m) => ImageDecodeResult -> m Bool
+getComplete self = liftDOM (((self ^. js "complete") >>= valToBool))
diff --git a/src/JSDOM/Generated/ImageDecoder.hs b/src/JSDOM/Generated/ImageDecoder.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ImageDecoder.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.ImageDecoder
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/ImageDecoder MDN ImageDecoder. documentation>
+newImageDecoder :: (MonadDOM m) => ImageDecoderInit -> m ImageDecoder
+newImageDecoder init = liftDOM (((new (jsg "ImageDecoder") [toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/close MDN ImageDecoder.close documentation>
+close :: (MonadDOM m) => ImageDecoder -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
+
+-- | <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 (((((self ^. jsf "decode" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "decode" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/reset MDN ImageDecoder.reset documentation>
+reset :: (MonadDOM m) => ImageDecoder -> m ()
+reset self = liftDOM (void (self ^. jsf "reset" ()))
+
+-- | <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 ((((((jsg "ImageDecoder") ^. jsf "isTypeSupported" [toJSVal type']) >>= readPromise)) >>= valToBool))
+
+-- | <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 ((((jsg "ImageDecoder") ^. jsf "isTypeSupported" [toJSVal type']) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/type MDN ImageDecoder.type documentation>
+getType :: (MonadDOM m, FromJSString result) => ImageDecoder -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/complete MDN ImageDecoder.complete documentation>
+getComplete :: (MonadDOM m) => ImageDecoder -> m Bool
+getComplete self = liftDOM (((self ^. js "complete") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/completed MDN ImageDecoder.completed documentation>
+getCompleted :: (MonadDOM m) => ImageDecoder -> m ()
+getCompleted self = liftDOM (void (((self ^. js "completed") >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageDecoder/tracks MDN ImageDecoder.tracks documentation>
+getTracks :: (MonadDOM m) => ImageDecoder -> m ImageTrackList
+getTracks self = liftDOM (((self ^. js "tracks") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ImageDecoderInit.hs b/src/JSDOM/Generated/ImageDecoderInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ImageDecoderInit.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.ImageDecoderInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-imagedecoderinit ImageDecoderInit specification>
+newImageDecoderInit :: (MonadDOM m, ToJSString type', IsImageBufferSource data') => type' -> data' -> m ImageDecoderInit
+newImageDecoderInit type' data' = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "type" (toJSVal type')) P.>> (o ^. jss "data" (toJSVal data')) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-type ImageDecoderInit.type specification>
+setType :: (MonadDOM m, ToJSString val) => ImageDecoderInit -> val -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-type ImageDecoderInit.type specification>
+getType :: (MonadDOM m, FromJSString result) => ImageDecoderInit -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-data ImageDecoderInit.data specification>
+setData :: (MonadDOM m, IsImageBufferSource val) => ImageDecoderInit -> val -> m ()
+setData self val = liftDOM (void (self ^. jss "data" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-data ImageDecoderInit.data specification>
+getData :: (MonadDOM m) => ImageDecoderInit -> m ImageBufferSource
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-colorspaceconversion ImageDecoderInit.colorSpaceConversion specification>
+setColorSpaceConversion :: (MonadDOM m) => ImageDecoderInit -> ColorSpaceConversion -> m ()
+setColorSpaceConversion self val = liftDOM (void (self ^. jss "colorSpaceConversion" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-colorspaceconversion ImageDecoderInit.colorSpaceConversion specification>
+getColorSpaceConversion :: (MonadDOM m) => ImageDecoderInit -> m (Maybe ColorSpaceConversion)
+getColorSpaceConversion self = liftDOM (((self ^. js "colorSpaceConversion") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-colorspaceconversion ImageDecoderInit.colorSpaceConversion specification>
+getColorSpaceConversionUnsafe :: (MonadDOM m, HasCallStack) => ImageDecoderInit -> m ColorSpaceConversion
+getColorSpaceConversionUnsafe self = liftDOM ((((self ^. js "colorSpaceConversion") >>= 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 (((self ^. js "colorSpaceConversion") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-desiredwidth ImageDecoderInit.desiredWidth specification>
+setDesiredWidth :: (MonadDOM m) => ImageDecoderInit -> Word -> m ()
+setDesiredWidth self val = liftDOM (void (self ^. jss "desiredWidth" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-desiredwidth ImageDecoderInit.desiredWidth specification>
+getDesiredWidth :: (MonadDOM m) => ImageDecoderInit -> m (Maybe Word)
+getDesiredWidth self = liftDOM (((self ^. js "desiredWidth") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-desiredwidth ImageDecoderInit.desiredWidth specification>
+getDesiredWidthUnsafe :: (MonadDOM m, HasCallStack) => ImageDecoderInit -> m Word
+getDesiredWidthUnsafe self = liftDOM ((((self ^. js "desiredWidth") >>= 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 ((P.round <$> ((self ^. js "desiredWidth") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-desiredheight ImageDecoderInit.desiredHeight specification>
+setDesiredHeight :: (MonadDOM m) => ImageDecoderInit -> Word -> m ()
+setDesiredHeight self val = liftDOM (void (self ^. jss "desiredHeight" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-desiredheight ImageDecoderInit.desiredHeight specification>
+getDesiredHeight :: (MonadDOM m) => ImageDecoderInit -> m (Maybe Word)
+getDesiredHeight self = liftDOM (((self ^. js "desiredHeight") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-desiredheight ImageDecoderInit.desiredHeight specification>
+getDesiredHeightUnsafe :: (MonadDOM m, HasCallStack) => ImageDecoderInit -> m Word
+getDesiredHeightUnsafe self = liftDOM ((((self ^. js "desiredHeight") >>= 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 ((P.round <$> ((self ^. js "desiredHeight") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-preferanimation ImageDecoderInit.preferAnimation specification>
+setPreferAnimation :: (MonadDOM m) => ImageDecoderInit -> Bool -> m ()
+setPreferAnimation self val = liftDOM (void (self ^. jss "preferAnimation" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-preferanimation ImageDecoderInit.preferAnimation specification>
+getPreferAnimation :: (MonadDOM m) => ImageDecoderInit -> m (Maybe Bool)
+getPreferAnimation self = liftDOM (((self ^. js "preferAnimation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-preferanimation ImageDecoderInit.preferAnimation specification>
+getPreferAnimationUnsafe :: (MonadDOM m, HasCallStack) => ImageDecoderInit -> m Bool
+getPreferAnimationUnsafe self = liftDOM ((((self ^. js "preferAnimation") >>= 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 (((self ^. js "preferAnimation") >>= valToBool))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-transfer ImageDecoderInit.transfer specification>
+setTransfer :: (MonadDOM m, IsArrayBuffer val) => ImageDecoderInit -> [val] -> m ()
+setTransfer self val = liftDOM (void (self ^. jss "transfer" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-transfer ImageDecoderInit.transfer specification>
+getTransfer :: (MonadDOM m) => ImageDecoderInit -> m (Maybe [ArrayBuffer])
+getTransfer self = liftDOM (((self ^. js "transfer") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-imagedecoderinit-transfer ImageDecoderInit.transfer specification>
+getTransferUnsafe :: (MonadDOM m, HasCallStack) => ImageDecoderInit -> m [ArrayBuffer]
+getTransferUnsafe self = liftDOM ((((self ^. js "transfer") >>= 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 (((self ^. js "transfer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ImageEncodeOptions.hs b/src/JSDOM/Generated/ImageEncodeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ImageEncodeOptions.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.ImageEncodeOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/canvas.html#imageencodeoptions ImageEncodeOptions specification>
+newImageEncodeOptions :: (MonadDOM m) => m ImageEncodeOptions
+newImageEncodeOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+setType :: (MonadDOM m, ToJSString val) => ImageEncodeOptions -> val -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+getType :: (MonadDOM m, FromJSString result) => ImageEncodeOptions -> m (Maybe result)
+getType self = liftDOM (((self ^. js "type") >>= fromMaybeJSString))
+
+getTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ImageEncodeOptions -> m result
+getTypeUnsafe self = liftDOM ((((self ^. js "type") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getTypeUnchecked :: (MonadDOM m, FromJSString result) => ImageEncodeOptions -> m result
+getTypeUnchecked self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+setQuality :: (MonadDOM m) => ImageEncodeOptions -> Double -> m ()
+setQuality self val = liftDOM (void (self ^. jss "quality" (toJSVal val)))
+
+getQuality :: (MonadDOM m) => ImageEncodeOptions -> m (Maybe Double)
+getQuality self = liftDOM (((self ^. js "quality") >>= fromJSValUnchecked))
+
+getQualityUnsafe :: (MonadDOM m, HasCallStack) => ImageEncodeOptions -> m Double
+getQualityUnsafe self = liftDOM ((((self ^. js "quality") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getQualityUnchecked :: (MonadDOM m) => ImageEncodeOptions -> m Double
+getQualityUnchecked self = liftDOM (((self ^. js "quality") >>= valToNumber))
diff --git a/src/JSDOM/Generated/ImageTrack.hs b/src/JSDOM/Generated/ImageTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ImageTrack.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.ImageTrack
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrack/animated MDN ImageTrack.animated documentation>
+getAnimated :: (MonadDOM m) => ImageTrack -> m Bool
+getAnimated self = liftDOM (((self ^. js "animated") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrack/frameCount MDN ImageTrack.frameCount documentation>
+getFrameCount :: (MonadDOM m) => ImageTrack -> m Word
+getFrameCount self = liftDOM ((P.round <$> ((self ^. js "frameCount") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrack/repetitionCount MDN ImageTrack.repetitionCount documentation>
+getRepetitionCount :: (MonadDOM m) => ImageTrack -> m Float
+getRepetitionCount self = liftDOM ((P.realToFrac <$> ((self ^. js "repetitionCount") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrack/selected MDN ImageTrack.selected documentation>
+setSelected :: (MonadDOM m) => ImageTrack -> Bool -> m ()
+setSelected self val = liftDOM (void (self ^. jss "selected" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrack/selected MDN ImageTrack.selected documentation>
+getSelected :: (MonadDOM m) => ImageTrack -> m Bool
+getSelected self = liftDOM (((self ^. js "selected") >>= valToBool))
diff --git a/src/JSDOM/Generated/ImageTrackList.hs b/src/JSDOM/Generated/ImageTrackList.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ImageTrackList.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.ImageTrackList
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrackList/ready MDN ImageTrackList.ready documentation>
+getReady :: (MonadDOM m) => ImageTrackList -> m ()
+getReady self = liftDOM (void (((self ^. js "ready") >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrackList/length MDN ImageTrackList.length documentation>
+getLength :: (MonadDOM m) => ImageTrackList -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrackList/selectedIndex MDN ImageTrackList.selectedIndex documentation>
+getSelectedIndex :: (MonadDOM m) => ImageTrackList -> m Int
+getSelectedIndex self = liftDOM ((P.round <$> ((self ^. js "selectedIndex") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrackList/selectedTrack MDN ImageTrackList.selectedTrack documentation>
+getSelectedTrack :: (MonadDOM m) => ImageTrackList -> m (Maybe ImageTrack)
+getSelectedTrack self = liftDOM (((self ^. js "selectedTrack") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ImageTrackList/selectedTrack MDN ImageTrackList.selectedTrack documentation>
+getSelectedTrackUnsafe :: (MonadDOM m, HasCallStack) => ImageTrackList -> m ImageTrack
+getSelectedTrackUnsafe self = liftDOM ((((self ^. js "selectedTrack") >>= 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 (((self ^. js "selectedTrack") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ImportNodeOptions.hs b/src/JSDOM/Generated/ImportNodeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ImportNodeOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.ImportNodeOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://dom.spec.whatwg.org/#dictdef-importnodeoptions ImportNodeOptions specification>
+newImportNodeOptions :: (MonadDOM m) => m ImportNodeOptions
+newImportNodeOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-importnodeoptions-customelementregistry ImportNodeOptions.customElementRegistry specification>
+setCustomElementRegistry :: (MonadDOM m) => ImportNodeOptions -> CustomElementRegistry -> m ()
+setCustomElementRegistry self val = liftDOM (void (self ^. jss "customElementRegistry" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-importnodeoptions-customelementregistry ImportNodeOptions.customElementRegistry specification>
+getCustomElementRegistry :: (MonadDOM m) => ImportNodeOptions -> m (Maybe CustomElementRegistry)
+getCustomElementRegistry self = liftDOM (((self ^. js "customElementRegistry") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-importnodeoptions-customelementregistry ImportNodeOptions.customElementRegistry specification>
+getCustomElementRegistryUnsafe :: (MonadDOM m, HasCallStack) => ImportNodeOptions -> m CustomElementRegistry
+getCustomElementRegistryUnsafe self = liftDOM ((((self ^. js "customElementRegistry") >>= 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 (((self ^. js "customElementRegistry") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-importnodeoptions-selfonly ImportNodeOptions.selfOnly specification>
+setSelfOnly :: (MonadDOM m) => ImportNodeOptions -> Bool -> m ()
+setSelfOnly self val = liftDOM (void (self ^. jss "selfOnly" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-importnodeoptions-selfonly ImportNodeOptions.selfOnly specification>
+getSelfOnly :: (MonadDOM m) => ImportNodeOptions -> m (Maybe Bool)
+getSelfOnly self = liftDOM (((self ^. js "selfOnly") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-importnodeoptions-selfonly ImportNodeOptions.selfOnly specification>
+getSelfOnlyUnsafe :: (MonadDOM m, HasCallStack) => ImportNodeOptions -> m Bool
+getSelfOnlyUnsafe self = liftDOM ((((self ^. js "selfOnly") >>= 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 (((self ^. js "selfOnly") >>= valToBool))
diff --git a/src/JSDOM/Generated/InputDeviceCapabilities.hs b/src/JSDOM/Generated/InputDeviceCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/InputDeviceCapabilities.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from input-device-capabilities (webref). Do not edit.
+module JSDOM.Generated.InputDeviceCapabilities
+       (InputDeviceCapabilities(..), gTypeInputDeviceCapabilities)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/InputDeviceInfo.hs b/src/JSDOM/Generated/InputDeviceInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/InputDeviceInfo.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module JSDOM.Generated.InputDeviceInfo
+       (getCapabilities, getCapabilities_, InputDeviceInfo(..), gTypeInputDeviceInfo)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/InputDeviceInfo/getCapabilities MDN InputDeviceInfo.getCapabilities documentation>
+getCapabilities :: (MonadDOM m) => InputDeviceInfo -> m MediaTrackCapabilities
+getCapabilities self = liftDOM (((self ^. jsf "getCapabilities" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/InputDeviceInfo/getCapabilities MDN InputDeviceInfo.getCapabilities documentation>
+getCapabilities_ :: (MonadDOM m) => InputDeviceInfo -> m ()
+getCapabilities_ self = liftDOM (void (self ^. jsf "getCapabilities" ()))
diff --git a/src/JSDOM/Generated/InputEvent.hs b/src/JSDOM/Generated/InputEvent.hs
--- a/src/JSDOM/Generated/InputEvent.hs
+++ b/src/JSDOM/Generated/InputEvent.hs
@@ -1,89 +1,60 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
 module JSDOM.Generated.InputEvent
-       (newInputEvent, getTargetRanges, getTargetRanges_, getInputType,
-        getData, getDataUnsafe, getDataUnchecked, getDataTransfer,
-        getDataTransferUnsafe, getDataTransferUnchecked, InputEvent(..),
-        gTypeInputEvent)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent Mozilla InputEvent documentation> 
-newInputEvent ::
-              (MonadDOM m, ToJSString type') =>
-                type' -> Maybe InputEventInit -> m InputEvent
-newInputEvent type' eventInitDict
-  = liftDOM
-      (InputEvent <$>
-         new (jsg "InputEvent") [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "InputEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.getTargetRanges Mozilla InputEvent.getTargetRanges documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/getTargetRanges MDN InputEvent.getTargetRanges documentation>
 getTargetRanges :: (MonadDOM m) => InputEvent -> m [StaticRange]
-getTargetRanges self
-  = liftDOM
-      ((self ^. jsf "getTargetRanges" ()) >>= fromJSArrayUnchecked)
+getTargetRanges self = liftDOM (((self ^. jsf "getTargetRanges" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.getTargetRanges Mozilla InputEvent.getTargetRanges documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/getTargetRanges MDN InputEvent.getTargetRanges documentation>
 getTargetRanges_ :: (MonadDOM m) => InputEvent -> m ()
-getTargetRanges_ self
-  = liftDOM (void (self ^. jsf "getTargetRanges" ()))
+getTargetRanges_ self = liftDOM (void (self ^. jsf "getTargetRanges" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.inputType Mozilla InputEvent.inputType documentation> 
-getInputType ::
-             (MonadDOM m, FromJSString result) => InputEvent -> m result
-getInputType self
-  = liftDOM ((self ^. js "inputType") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "data") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.data Mozilla InputEvent.data documentation> 
-getData ::
-        (MonadDOM m, FromJSString result) => InputEvent -> m (Maybe result)
-getData self = liftDOM ((self ^. js "data") >>= fromMaybeJSString)
+-- | <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 ((((self ^. js "data") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.data Mozilla InputEvent.data documentation> 
-getDataUnsafe ::
-              (MonadDOM m, HasCallStack, FromJSString result) =>
-                InputEvent -> m result
-getDataUnsafe self
-  = liftDOM
-      (((self ^. js "data") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/data MDN InputEvent.data documentation>
+getDataUnchecked :: (MonadDOM m, FromJSString result) => InputEvent -> m result
+getDataUnchecked self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.data Mozilla InputEvent.data documentation> 
-getDataUnchecked ::
-                 (MonadDOM m, FromJSString result) => InputEvent -> m result
-getDataUnchecked self
-  = liftDOM ((self ^. js "data") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/isComposing MDN InputEvent.isComposing documentation>
+getIsComposing :: (MonadDOM m) => InputEvent -> m Bool
+getIsComposing self = liftDOM (((self ^. js "isComposing") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.dataTransfer Mozilla InputEvent.dataTransfer documentation> 
-getDataTransfer ::
-                (MonadDOM m) => InputEvent -> m (Maybe DataTransfer)
-getDataTransfer self
-  = liftDOM ((self ^. js "dataTransfer") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/inputType MDN InputEvent.inputType documentation>
+getInputType :: (MonadDOM m, FromJSString result) => InputEvent -> m result
+getInputType self = liftDOM (((self ^. js "inputType") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.dataTransfer Mozilla InputEvent.dataTransfer documentation> 
-getDataTransferUnsafe ::
-                      (MonadDOM m, HasCallStack) => InputEvent -> m DataTransfer
-getDataTransferUnsafe self
-  = liftDOM
-      (((self ^. js "dataTransfer") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/dataTransfer MDN InputEvent.dataTransfer documentation>
+getDataTransfer :: (MonadDOM m) => InputEvent -> m (Maybe DataTransfer)
+getDataTransfer self = liftDOM (((self ^. js "dataTransfer") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.dataTransfer Mozilla InputEvent.dataTransfer documentation> 
-getDataTransferUnchecked ::
-                         (MonadDOM m) => InputEvent -> m DataTransfer
-getDataTransferUnchecked self
-  = liftDOM ((self ^. js "dataTransfer") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/dataTransfer MDN InputEvent.dataTransfer documentation>
+getDataTransferUnsafe :: (MonadDOM m, HasCallStack) => InputEvent -> m DataTransfer
+getDataTransferUnsafe self = liftDOM ((((self ^. js "dataTransfer") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/InputEvent/dataTransfer MDN InputEvent.dataTransfer documentation>
+getDataTransferUnchecked :: (MonadDOM m) => InputEvent -> m DataTransfer
+getDataTransferUnchecked self = liftDOM (((self ^. js "dataTransfer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/InputEventInit.hs b/src/JSDOM/Generated/InputEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/InputEventInit.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
+module JSDOM.Generated.InputEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/uievents/#dictdef-inputeventinit InputEventInit specification>
+newInputEventInit :: (MonadDOM m) => m InputEventInit
+newInputEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "data" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-data InputEventInit.data specification>
+getData :: (MonadDOM m, FromJSString result) => InputEventInit -> m (Maybe result)
+getData self = liftDOM (((self ^. js "data") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-data InputEventInit.data specification>
+getDataUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => InputEventInit -> m result
+getDataUnsafe self = liftDOM ((((self ^. js "data") >>= fromMaybeJSString) >>= 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 (((self ^. js "data") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-iscomposing InputEventInit.isComposing specification>
+setIsComposing :: (MonadDOM m) => InputEventInit -> Bool -> m ()
+setIsComposing self val = liftDOM (void (self ^. jss "isComposing" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-iscomposing InputEventInit.isComposing specification>
+getIsComposing :: (MonadDOM m) => InputEventInit -> m (Maybe Bool)
+getIsComposing self = liftDOM (((self ^. js "isComposing") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-iscomposing InputEventInit.isComposing specification>
+getIsComposingUnsafe :: (MonadDOM m, HasCallStack) => InputEventInit -> m Bool
+getIsComposingUnsafe self = liftDOM ((((self ^. js "isComposing") >>= 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 (((self ^. js "isComposing") >>= valToBool))
+
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-inputtype InputEventInit.inputType specification>
+setInputType :: (MonadDOM m, ToJSString val) => InputEventInit -> val -> m ()
+setInputType self val = liftDOM (void (self ^. jss "inputType" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-inputtype InputEventInit.inputType specification>
+getInputType :: (MonadDOM m, FromJSString result) => InputEventInit -> m (Maybe result)
+getInputType self = liftDOM (((self ^. js "inputType") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/uievents/#dom-inputeventinit-inputtype InputEventInit.inputType specification>
+getInputTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => InputEventInit -> m result
+getInputTypeUnsafe self = liftDOM ((((self ^. js "inputType") >>= fromMaybeJSString) >>= 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 (((self ^. js "inputType") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/input-events/#dom-inputeventinit-datatransfer InputEventInit.dataTransfer specification>
+setDataTransfer :: (MonadDOM m) => InputEventInit -> Maybe DataTransfer -> m ()
+setDataTransfer self val = liftDOM (void (self ^. jss "dataTransfer" (toJSVal val)))
+
+-- | <https://w3c.github.io/input-events/#dom-inputeventinit-datatransfer InputEventInit.dataTransfer specification>
+getDataTransfer :: (MonadDOM m) => InputEventInit -> m (Maybe DataTransfer)
+getDataTransfer self = liftDOM (((self ^. js "dataTransfer") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/input-events/#dom-inputeventinit-datatransfer InputEventInit.dataTransfer specification>
+getDataTransferUnsafe :: (MonadDOM m, HasCallStack) => InputEventInit -> m DataTransfer
+getDataTransferUnsafe self = liftDOM ((((self ^. js "dataTransfer") >>= 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 (((self ^. js "dataTransfer") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/input-events/#dom-inputeventinit-targetranges InputEventInit.targetRanges specification>
+setTargetRanges :: (MonadDOM m) => InputEventInit -> [StaticRange] -> m ()
+setTargetRanges self val = liftDOM (void (self ^. jss "targetRanges" (toJSVal val)))
+
+-- | <https://w3c.github.io/input-events/#dom-inputeventinit-targetranges InputEventInit.targetRanges specification>
+getTargetRanges :: (MonadDOM m) => InputEventInit -> m (Maybe [StaticRange])
+getTargetRanges self = liftDOM (((self ^. js "targetRanges") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/input-events/#dom-inputeventinit-targetranges InputEventInit.targetRanges specification>
+getTargetRangesUnsafe :: (MonadDOM m, HasCallStack) => InputEventInit -> m [StaticRange]
+getTargetRangesUnsafe self = liftDOM ((((self ^. js "targetRanges") >>= 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 (((self ^. js "targetRanges") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/InspectorFrontendHost.hs b/src/JSDOM/Generated/InspectorFrontendHost.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/InspectorFrontendHost.hs
+++ /dev/null
@@ -1,294 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.InspectorFrontendHost
-       (loaded, closeWindow, bringToFront, inspectedURLChanged,
-        setZoomFactor, zoomFactor, zoomFactor_,
-        userInterfaceLayoutDirection, userInterfaceLayoutDirection_,
-        requestSetDockSide, setAttachedWindowHeight,
-        setAttachedWindowWidth, startWindowDrag, moveWindowBy,
-        localizedStringsURL, localizedStringsURL_, backendCommandsURL,
-        backendCommandsURL_, debuggableType, debuggableType_,
-        inspectionLevel, inspectionLevel_, copyText, killText,
-        openInNewTab, canSave, canSave_, save, append, close, platform,
-        platform_, port, port_, showContextMenu,
-        dispatchEventAsContextMenuEvent, sendMessageToBackend,
-        unbufferedLog, isUnderTest, isUnderTest_, beep,
-        InspectorFrontendHost(..), gTypeInspectorFrontendHost)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.loaded Mozilla InspectorFrontendHost.loaded documentation> 
-loaded :: (MonadDOM m) => InspectorFrontendHost -> m ()
-loaded self = liftDOM (void (self ^. jsf "loaded" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.closeWindow Mozilla InspectorFrontendHost.closeWindow documentation> 
-closeWindow :: (MonadDOM m) => InspectorFrontendHost -> m ()
-closeWindow self = liftDOM (void (self ^. jsf "closeWindow" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.bringToFront Mozilla InspectorFrontendHost.bringToFront documentation> 
-bringToFront :: (MonadDOM m) => InspectorFrontendHost -> m ()
-bringToFront self = liftDOM (void (self ^. jsf "bringToFront" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.inspectedURLChanged Mozilla InspectorFrontendHost.inspectedURLChanged documentation> 
-inspectedURLChanged ::
-                    (MonadDOM m, ToJSString newURL) =>
-                      InspectorFrontendHost -> newURL -> m ()
-inspectedURLChanged self newURL
-  = liftDOM
-      (void (self ^. jsf "inspectedURLChanged" [toJSVal newURL]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.setZoomFactor Mozilla InspectorFrontendHost.setZoomFactor documentation> 
-setZoomFactor ::
-              (MonadDOM m) => InspectorFrontendHost -> Float -> m ()
-setZoomFactor self zoom
-  = liftDOM (void (self ^. jsf "setZoomFactor" [toJSVal zoom]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.zoomFactor Mozilla InspectorFrontendHost.zoomFactor documentation> 
-zoomFactor :: (MonadDOM m) => InspectorFrontendHost -> m Float
-zoomFactor self
-  = liftDOM
-      (realToFrac <$> ((self ^. jsf "zoomFactor" ()) >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.zoomFactor Mozilla InspectorFrontendHost.zoomFactor documentation> 
-zoomFactor_ :: (MonadDOM m) => InspectorFrontendHost -> m ()
-zoomFactor_ self = liftDOM (void (self ^. jsf "zoomFactor" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.userInterfaceLayoutDirection Mozilla InspectorFrontendHost.userInterfaceLayoutDirection documentation> 
-userInterfaceLayoutDirection ::
-                             (MonadDOM m, FromJSString result) =>
-                               InspectorFrontendHost -> m result
-userInterfaceLayoutDirection self
-  = liftDOM
-      ((self ^. jsf "userInterfaceLayoutDirection" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.userInterfaceLayoutDirection Mozilla InspectorFrontendHost.userInterfaceLayoutDirection documentation> 
-userInterfaceLayoutDirection_ ::
-                              (MonadDOM m) => InspectorFrontendHost -> m ()
-userInterfaceLayoutDirection_ self
-  = liftDOM (void (self ^. jsf "userInterfaceLayoutDirection" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.requestSetDockSide Mozilla InspectorFrontendHost.requestSetDockSide documentation> 
-requestSetDockSide ::
-                   (MonadDOM m, ToJSString side) =>
-                     InspectorFrontendHost -> side -> m ()
-requestSetDockSide self side
-  = liftDOM (void (self ^. jsf "requestSetDockSide" [toJSVal side]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.setAttachedWindowHeight Mozilla InspectorFrontendHost.setAttachedWindowHeight documentation> 
-setAttachedWindowHeight ::
-                        (MonadDOM m) => InspectorFrontendHost -> Word -> m ()
-setAttachedWindowHeight self height
-  = liftDOM
-      (void (self ^. jsf "setAttachedWindowHeight" [toJSVal height]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.setAttachedWindowWidth Mozilla InspectorFrontendHost.setAttachedWindowWidth documentation> 
-setAttachedWindowWidth ::
-                       (MonadDOM m) => InspectorFrontendHost -> Word -> m ()
-setAttachedWindowWidth self width
-  = liftDOM
-      (void (self ^. jsf "setAttachedWindowWidth" [toJSVal width]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.startWindowDrag Mozilla InspectorFrontendHost.startWindowDrag documentation> 
-startWindowDrag :: (MonadDOM m) => InspectorFrontendHost -> m ()
-startWindowDrag self
-  = liftDOM (void (self ^. jsf "startWindowDrag" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.moveWindowBy Mozilla InspectorFrontendHost.moveWindowBy documentation> 
-moveWindowBy ::
-             (MonadDOM m) => InspectorFrontendHost -> Float -> Float -> m ()
-moveWindowBy self x y
-  = liftDOM
-      (void (self ^. jsf "moveWindowBy" [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.localizedStringsURL Mozilla InspectorFrontendHost.localizedStringsURL documentation> 
-localizedStringsURL ::
-                    (MonadDOM m, FromJSString result) =>
-                      InspectorFrontendHost -> m result
-localizedStringsURL self
-  = liftDOM
-      ((self ^. jsf "localizedStringsURL" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.localizedStringsURL Mozilla InspectorFrontendHost.localizedStringsURL documentation> 
-localizedStringsURL_ ::
-                     (MonadDOM m) => InspectorFrontendHost -> m ()
-localizedStringsURL_ self
-  = liftDOM (void (self ^. jsf "localizedStringsURL" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.backendCommandsURL Mozilla InspectorFrontendHost.backendCommandsURL documentation> 
-backendCommandsURL ::
-                   (MonadDOM m, FromJSString result) =>
-                     InspectorFrontendHost -> m result
-backendCommandsURL self
-  = liftDOM
-      ((self ^. jsf "backendCommandsURL" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.backendCommandsURL Mozilla InspectorFrontendHost.backendCommandsURL documentation> 
-backendCommandsURL_ ::
-                    (MonadDOM m) => InspectorFrontendHost -> m ()
-backendCommandsURL_ self
-  = liftDOM (void (self ^. jsf "backendCommandsURL" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.debuggableType Mozilla InspectorFrontendHost.debuggableType documentation> 
-debuggableType ::
-               (MonadDOM m, FromJSString result) =>
-                 InspectorFrontendHost -> m result
-debuggableType self
-  = liftDOM
-      ((self ^. jsf "debuggableType" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.debuggableType Mozilla InspectorFrontendHost.debuggableType documentation> 
-debuggableType_ :: (MonadDOM m) => InspectorFrontendHost -> m ()
-debuggableType_ self
-  = liftDOM (void (self ^. jsf "debuggableType" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.inspectionLevel Mozilla InspectorFrontendHost.inspectionLevel documentation> 
-inspectionLevel :: (MonadDOM m) => InspectorFrontendHost -> m Word
-inspectionLevel self
-  = liftDOM
-      (round <$> ((self ^. jsf "inspectionLevel" ()) >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.inspectionLevel Mozilla InspectorFrontendHost.inspectionLevel documentation> 
-inspectionLevel_ :: (MonadDOM m) => InspectorFrontendHost -> m ()
-inspectionLevel_ self
-  = liftDOM (void (self ^. jsf "inspectionLevel" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.copyText Mozilla InspectorFrontendHost.copyText documentation> 
-copyText ::
-         (MonadDOM m, ToJSString text) =>
-           InspectorFrontendHost -> text -> m ()
-copyText self text
-  = liftDOM (void (self ^. jsf "copyText" [toJSVal text]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.killText Mozilla InspectorFrontendHost.killText documentation> 
-killText ::
-         (MonadDOM m, ToJSString text) =>
-           InspectorFrontendHost -> text -> Bool -> Bool -> m ()
-killText self text shouldPrependToKillRing shouldStartNewSequence
-  = liftDOM
-      (void
-         (self ^. jsf "killText"
-            [toJSVal text, toJSVal shouldPrependToKillRing,
-             toJSVal shouldStartNewSequence]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.openInNewTab Mozilla InspectorFrontendHost.openInNewTab documentation> 
-openInNewTab ::
-             (MonadDOM m, ToJSString url) =>
-               InspectorFrontendHost -> url -> m ()
-openInNewTab self url
-  = liftDOM (void (self ^. jsf "openInNewTab" [toJSVal url]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.canSave Mozilla InspectorFrontendHost.canSave documentation> 
-canSave :: (MonadDOM m) => InspectorFrontendHost -> m Bool
-canSave self = liftDOM ((self ^. jsf "canSave" ()) >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.canSave Mozilla InspectorFrontendHost.canSave documentation> 
-canSave_ :: (MonadDOM m) => InspectorFrontendHost -> m ()
-canSave_ self = liftDOM (void (self ^. jsf "canSave" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.save Mozilla InspectorFrontendHost.save documentation> 
-save ::
-     (MonadDOM m, ToJSString url, ToJSString content) =>
-       InspectorFrontendHost -> url -> content -> Bool -> Bool -> m ()
-save self url content base64Encoded forceSaveAs
-  = liftDOM
-      (void
-         (self ^. jsf "save"
-            [toJSVal url, toJSVal content, toJSVal base64Encoded,
-             toJSVal forceSaveAs]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.append Mozilla InspectorFrontendHost.append documentation> 
-append ::
-       (MonadDOM m, ToJSString url, ToJSString content) =>
-         InspectorFrontendHost -> url -> content -> m ()
-append self url content
-  = liftDOM
-      (void (self ^. jsf "append" [toJSVal url, toJSVal content]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.close Mozilla InspectorFrontendHost.close documentation> 
-close ::
-      (MonadDOM m, ToJSString url) =>
-        InspectorFrontendHost -> url -> m ()
-close self url = liftDOM (void (self ^. jsf "close" [toJSVal url]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.platform Mozilla InspectorFrontendHost.platform documentation> 
-platform ::
-         (MonadDOM m, FromJSString result) =>
-           InspectorFrontendHost -> m result
-platform self
-  = liftDOM ((self ^. jsf "platform" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.platform Mozilla InspectorFrontendHost.platform documentation> 
-platform_ :: (MonadDOM m) => InspectorFrontendHost -> m ()
-platform_ self = liftDOM (void (self ^. jsf "platform" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.port Mozilla InspectorFrontendHost.port documentation> 
-port ::
-     (MonadDOM m, FromJSString result) =>
-       InspectorFrontendHost -> m result
-port self
-  = liftDOM ((self ^. jsf "port" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.port Mozilla InspectorFrontendHost.port documentation> 
-port_ :: (MonadDOM m) => InspectorFrontendHost -> m ()
-port_ self = liftDOM (void (self ^. jsf "port" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.showContextMenu Mozilla InspectorFrontendHost.showContextMenu documentation> 
-showContextMenu ::
-                (MonadDOM m, IsMouseEvent event, ToJSVal items) =>
-                  InspectorFrontendHost -> event -> items -> m ()
-showContextMenu self event items
-  = liftDOM
-      (void
-         (self ^. jsf "showContextMenu" [toJSVal event, toJSVal items]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.dispatchEventAsContextMenuEvent Mozilla InspectorFrontendHost.dispatchEventAsContextMenuEvent documentation> 
-dispatchEventAsContextMenuEvent ::
-                                (MonadDOM m, IsEvent event) =>
-                                  InspectorFrontendHost -> Maybe event -> m ()
-dispatchEventAsContextMenuEvent self event
-  = liftDOM
-      (void
-         (self ^. jsf "dispatchEventAsContextMenuEvent" [toJSVal event]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.sendMessageToBackend Mozilla InspectorFrontendHost.sendMessageToBackend documentation> 
-sendMessageToBackend ::
-                     (MonadDOM m, ToJSString message) =>
-                       InspectorFrontendHost -> message -> m ()
-sendMessageToBackend self message
-  = liftDOM
-      (void (self ^. jsf "sendMessageToBackend" [toJSVal message]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.unbufferedLog Mozilla InspectorFrontendHost.unbufferedLog documentation> 
-unbufferedLog ::
-              (MonadDOM m, ToJSString message) =>
-                InspectorFrontendHost -> message -> m ()
-unbufferedLog self message
-  = liftDOM (void (self ^. jsf "unbufferedLog" [toJSVal message]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.isUnderTest Mozilla InspectorFrontendHost.isUnderTest documentation> 
-isUnderTest :: (MonadDOM m) => InspectorFrontendHost -> m Bool
-isUnderTest self
-  = liftDOM ((self ^. jsf "isUnderTest" ()) >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.isUnderTest Mozilla InspectorFrontendHost.isUnderTest documentation> 
-isUnderTest_ :: (MonadDOM m) => InspectorFrontendHost -> m ()
-isUnderTest_ self = liftDOM (void (self ^. jsf "isUnderTest" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.beep Mozilla InspectorFrontendHost.beep documentation> 
-beep :: (MonadDOM m) => InspectorFrontendHost -> m ()
-beep self = liftDOM (void (self ^. jsf "beep" ()))
diff --git a/src/JSDOM/Generated/InstallEvent.hs b/src/JSDOM/Generated/InstallEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/InstallEvent.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.InstallEvent
+       (newInstallEvent, addRoutes, InstallEvent(..), gTypeInstallEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "InstallEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "addRoutes" [toJSVal rules]) >>= readPromise)))
diff --git a/src/JSDOM/Generated/IntersectionObserver.hs b/src/JSDOM/Generated/IntersectionObserver.hs
--- a/src/JSDOM/Generated/IntersectionObserver.hs
+++ b/src/JSDOM/Generated/IntersectionObserver.hs
@@ -1,94 +1,64 @@
 {-# LANGUAGE PatternSynonyms #-}
--- 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 JSDOM.Generated.IntersectionObserver
-       (newIntersectionObserver, observe, unobserve, disconnect,
-        takeRecords, takeRecords_, getRoot, getRootUnsafe,
-        getRootUnchecked, getRootMargin, getThresholds,
-        IntersectionObserver(..), gTypeIntersectionObserver)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver Mozilla IntersectionObserver documentation> 
-newIntersectionObserver ::
-                        (MonadDOM m) =>
-                          IntersectionObserverCallback ->
-                            Maybe IntersectionObserverInit -> m IntersectionObserver
-newIntersectionObserver callback options
-  = liftDOM
-      (IntersectionObserver <$>
-         new (jsg "IntersectionObserver")
-           [toJSVal callback, toJSVal options])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.observe Mozilla IntersectionObserver.observe documentation> 
-observe ::
-        (MonadDOM m, IsElement target) =>
-          IntersectionObserver -> target -> m ()
-observe self target
-  = liftDOM (void (self ^. jsf "observe" [toJSVal target]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.unobserve Mozilla IntersectionObserver.unobserve documentation> 
-unobserve ::
-          (MonadDOM m, IsElement target) =>
-            IntersectionObserver -> target -> m ()
-unobserve self target
-  = liftDOM (void (self ^. jsf "unobserve" [toJSVal target]))
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/IntersectionObserver MDN IntersectionObserver. documentation>
+newIntersectionObserver :: (MonadDOM m) => IntersectionObserverCallback -> Maybe IntersectionObserverInit -> m IntersectionObserver
+newIntersectionObserver callback' options = liftDOM (((new (jsg "IntersectionObserver") [toJSVal callback', P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.disconnect Mozilla IntersectionObserver.disconnect documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/disconnect MDN IntersectionObserver.disconnect documentation>
 disconnect :: (MonadDOM m) => IntersectionObserver -> m ()
 disconnect self = liftDOM (void (self ^. jsf "disconnect" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.takeRecords Mozilla IntersectionObserver.takeRecords documentation> 
-takeRecords ::
-            (MonadDOM m) =>
-              IntersectionObserver -> m [IntersectionObserverEntry]
-takeRecords self
-  = liftDOM ((self ^. jsf "takeRecords" ()) >>= fromJSArrayUnchecked)
+-- | <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 (self ^. jsf "observe" [toJSVal target]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.takeRecords Mozilla IntersectionObserver.takeRecords documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/takeRecords MDN IntersectionObserver.takeRecords documentation>
+takeRecords :: (MonadDOM m) => IntersectionObserver -> m [IntersectionObserverEntry]
+takeRecords self = liftDOM (((self ^. jsf "takeRecords" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/takeRecords MDN IntersectionObserver.takeRecords documentation>
 takeRecords_ :: (MonadDOM m) => IntersectionObserver -> m ()
 takeRecords_ self = liftDOM (void (self ^. jsf "takeRecords" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.root Mozilla IntersectionObserver.root documentation> 
-getRoot ::
-        (MonadDOM m) => IntersectionObserver -> m (Maybe Element)
-getRoot self = liftDOM ((self ^. js "root") >>= fromJSVal)
+-- | <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 (self ^. jsf "unobserve" [toJSVal target]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.root Mozilla IntersectionObserver.root documentation> 
-getRootUnsafe ::
-              (MonadDOM m, HasCallStack) => IntersectionObserver -> m Element
-getRootUnsafe self
-  = liftDOM
-      (((self ^. js "root") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/root MDN IntersectionObserver.root documentation>
+getRoot :: (MonadDOM m) => IntersectionObserver -> m (Maybe ElementOrDocument)
+getRoot self = liftDOM (((self ^. js "root") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.root Mozilla IntersectionObserver.root documentation> 
-getRootUnchecked ::
-                 (MonadDOM m) => IntersectionObserver -> m Element
-getRootUnchecked self
-  = liftDOM ((self ^. js "root") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/root MDN IntersectionObserver.root documentation>
+getRootUnsafe :: (MonadDOM m, HasCallStack) => IntersectionObserver -> m ElementOrDocument
+getRootUnsafe self = liftDOM ((((self ^. js "root") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.rootMargin Mozilla IntersectionObserver.rootMargin documentation> 
-getRootMargin ::
-              (MonadDOM m, FromJSString result) =>
-                IntersectionObserver -> m result
-getRootMargin self
-  = liftDOM ((self ^. js "rootMargin") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/root MDN IntersectionObserver.root documentation>
+getRootUnchecked :: (MonadDOM m) => IntersectionObserver -> m ElementOrDocument
+getRootUnchecked self = liftDOM (((self ^. js "root") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.thresholds Mozilla IntersectionObserver.thresholds documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/rootMargin MDN IntersectionObserver.rootMargin documentation>
+getRootMargin :: (MonadDOM m, FromJSString result) => IntersectionObserver -> m result
+getRootMargin self = liftDOM (((self ^. js "rootMargin") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/scrollMargin MDN IntersectionObserver.scrollMargin documentation>
+getScrollMargin :: (MonadDOM m, FromJSString result) => IntersectionObserver -> m result
+getScrollMargin self = liftDOM (((self ^. js "scrollMargin") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserver/thresholds MDN IntersectionObserver.thresholds documentation>
 getThresholds :: (MonadDOM m) => IntersectionObserver -> m [Double]
-getThresholds self
-  = liftDOM ((self ^. js "thresholds") >>= fromJSArrayUnchecked)
+getThresholds self = liftDOM (((self ^. js "thresholds") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/IntersectionObserverCallback.hs b/src/JSDOM/Generated/IntersectionObserverCallback.hs
--- a/src/JSDOM/Generated/IntersectionObserverCallback.hs
+++ b/src/JSDOM/Generated/IntersectionObserverCallback.hs
@@ -1,69 +1,33 @@
-{-# LANGUAGE PatternSynonyms #-}
--- 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 JSDOM.Generated.IntersectionObserverCallback
-       (newIntersectionObserverCallback,
-        newIntersectionObserverCallbackSync,
-        newIntersectionObserverCallbackAsync, IntersectionObserverCallback)
+       (newIntersectionObserverCallback, newIntersectionObserverCallbackSync, newIntersectionObserverCallbackAsync, IntersectionObserverCallback)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverCallback Mozilla IntersectionObserverCallback documentation> 
-newIntersectionObserverCallback ::
-                                (MonadDOM m) =>
-                                  ([IntersectionObserverEntry] -> IntersectionObserver -> JSM ()) ->
-                                    m IntersectionObserverCallback
-newIntersectionObserverCallback callback
-  = liftDOM
-      (IntersectionObserverCallback . Callback <$>
-         function
-           (\ _ _ [entries, observer] ->
-              fromJSValUnchecked observer >>=
-                \ observer' ->
-                  fromJSArrayUnchecked entries >>= \ entries' -> callback entries'
-                    observer'))
+newIntersectionObserverCallback :: (MonadDOM m) => ([IntersectionObserverEntry] -> IntersectionObserver -> JSM ()) -> m IntersectionObserverCallback
+newIntersectionObserverCallback callback = liftDOM (IntersectionObserverCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (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 ::
-                                    (MonadDOM m) =>
-                                      ([IntersectionObserverEntry] ->
-                                         IntersectionObserver -> JSM ())
-                                        -> m IntersectionObserverCallback
-newIntersectionObserverCallbackSync callback
-  = liftDOM
-      (IntersectionObserverCallback . Callback <$>
-         function
-           (\ _ _ [entries, observer] ->
-              fromJSValUnchecked observer >>=
-                \ observer' ->
-                  fromJSArrayUnchecked entries >>= \ entries' -> callback entries'
-                    observer'))
+newIntersectionObserverCallbackSync :: (MonadDOM m) => ([IntersectionObserverEntry] -> IntersectionObserver -> JSM ()) -> m IntersectionObserverCallback
+newIntersectionObserverCallbackSync callback = liftDOM (IntersectionObserverCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (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 ::
-                                     (MonadDOM m) =>
-                                       ([IntersectionObserverEntry] ->
-                                          IntersectionObserver -> JSM ())
-                                         -> m IntersectionObserverCallback
-newIntersectionObserverCallbackAsync callback
-  = liftDOM
-      (IntersectionObserverCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [entries, observer] ->
-              fromJSValUnchecked observer >>=
-                \ observer' ->
-                  fromJSArrayUnchecked entries >>= \ entries' -> callback entries'
-                    observer'))
+newIntersectionObserverCallbackAsync :: (MonadDOM m) => ([IntersectionObserverEntry] -> IntersectionObserver -> JSM ()) -> m IntersectionObserverCallback
+newIntersectionObserverCallbackAsync callback = liftDOM (IntersectionObserverCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (entries : observer : _) -> do
+          entries' <- fromJSValUnchecked entries
+          observer' <- fromJSValUnchecked observer
+          callback entries' observer'))
diff --git a/src/JSDOM/Generated/IntersectionObserverEntry.hs b/src/JSDOM/Generated/IntersectionObserverEntry.hs
--- a/src/JSDOM/Generated/IntersectionObserverEntry.hs
+++ b/src/JSDOM/Generated/IntersectionObserverEntry.hs
@@ -1,68 +1,56 @@
 {-# LANGUAGE PatternSynonyms #-}
--- 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 JSDOM.Generated.IntersectionObserverEntry
-       (newIntersectionObserverEntry, getTime, getRootBounds,
-        getBoundingClientRect, getIntersectionRect, getIntersectionRatio,
-        getTarget, IntersectionObserverEntry(..),
-        gTypeIntersectionObserverEntry)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry Mozilla IntersectionObserverEntry documentation> 
-newIntersectionObserverEntry ::
-                             (MonadDOM m) =>
-                               IntersectionObserverEntryInit -> m IntersectionObserverEntry
-newIntersectionObserverEntry intersectionObserverEntryInit
-  = liftDOM
-      (IntersectionObserverEntry <$>
-         new (jsg "IntersectionObserverEntry")
-           [toJSVal intersectionObserverEntryInit])
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/IntersectionObserverEntry MDN IntersectionObserverEntry. documentation>
+newIntersectionObserverEntry :: (MonadDOM m) => IntersectionObserverEntryInit -> m IntersectionObserverEntry
+newIntersectionObserverEntry intersectionObserverEntryInit = liftDOM (((new (jsg "IntersectionObserverEntry") [toJSVal intersectionObserverEntryInit]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.time Mozilla IntersectionObserverEntry.time documentation> 
-getTime ::
-        (MonadDOM m) => IntersectionObserverEntry -> m DOMHighResTimeStamp
-getTime self = liftDOM ((self ^. js "time") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/time MDN IntersectionObserverEntry.time documentation>
+getTime :: (MonadDOM m) => IntersectionObserverEntry -> m Double
+getTime self = liftDOM (((self ^. js "time") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.rootBounds Mozilla IntersectionObserverEntry.rootBounds documentation> 
-getRootBounds ::
-              (MonadDOM m) => IntersectionObserverEntry -> m DOMRectReadOnly
-getRootBounds self
-  = liftDOM ((self ^. js "rootBounds") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/rootBounds MDN IntersectionObserverEntry.rootBounds documentation>
+getRootBounds :: (MonadDOM m) => IntersectionObserverEntry -> m (Maybe DOMRectReadOnly)
+getRootBounds self = liftDOM (((self ^. js "rootBounds") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.boundingClientRect Mozilla IntersectionObserverEntry.boundingClientRect documentation> 
-getBoundingClientRect ::
-                      (MonadDOM m) => IntersectionObserverEntry -> m DOMRectReadOnly
-getBoundingClientRect self
-  = liftDOM
-      ((self ^. js "boundingClientRect") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/rootBounds MDN IntersectionObserverEntry.rootBounds documentation>
+getRootBoundsUnsafe :: (MonadDOM m, HasCallStack) => IntersectionObserverEntry -> m DOMRectReadOnly
+getRootBoundsUnsafe self = liftDOM ((((self ^. js "rootBounds") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.intersectionRect Mozilla IntersectionObserverEntry.intersectionRect documentation> 
-getIntersectionRect ::
-                    (MonadDOM m) => IntersectionObserverEntry -> m DOMRectReadOnly
-getIntersectionRect self
-  = liftDOM ((self ^. js "intersectionRect") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/rootBounds MDN IntersectionObserverEntry.rootBounds documentation>
+getRootBoundsUnchecked :: (MonadDOM m) => IntersectionObserverEntry -> m DOMRectReadOnly
+getRootBoundsUnchecked self = liftDOM (((self ^. js "rootBounds") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.intersectionRatio Mozilla IntersectionObserverEntry.intersectionRatio documentation> 
-getIntersectionRatio ::
-                     (MonadDOM m) => IntersectionObserverEntry -> m Double
-getIntersectionRatio self
-  = liftDOM ((self ^. js "intersectionRatio") >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/boundingClientRect MDN IntersectionObserverEntry.boundingClientRect documentation>
+getBoundingClientRect :: (MonadDOM m) => IntersectionObserverEntry -> m DOMRectReadOnly
+getBoundingClientRect self = liftDOM (((self ^. js "boundingClientRect") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.target Mozilla IntersectionObserverEntry.target documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/intersectionRect MDN IntersectionObserverEntry.intersectionRect documentation>
+getIntersectionRect :: (MonadDOM m) => IntersectionObserverEntry -> m DOMRectReadOnly
+getIntersectionRect self = liftDOM (((self ^. js "intersectionRect") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/isIntersecting MDN IntersectionObserverEntry.isIntersecting documentation>
+getIsIntersecting :: (MonadDOM m) => IntersectionObserverEntry -> m Bool
+getIsIntersecting self = liftDOM (((self ^. js "isIntersecting") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/intersectionRatio MDN IntersectionObserverEntry.intersectionRatio documentation>
+getIntersectionRatio :: (MonadDOM m) => IntersectionObserverEntry -> m Double
+getIntersectionRatio self = liftDOM (((self ^. js "intersectionRatio") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/IntersectionObserverEntry/target MDN IntersectionObserverEntry.target documentation>
 getTarget :: (MonadDOM m) => IntersectionObserverEntry -> m Element
-getTarget self
-  = liftDOM ((self ^. js "target") >>= fromJSValUnchecked)
+getTarget self = liftDOM (((self ^. js "target") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/IntersectionObserverEntryInit.hs b/src/JSDOM/Generated/IntersectionObserverEntryInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/IntersectionObserverEntryInit.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from intersection-observer (webref). Do not edit.
+module JSDOM.Generated.IntersectionObserverEntryInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "time" (toJSVal time)) P.>> (o ^. jss "rootBounds" (toJSVal rootBounds)) P.>> (o ^. jss "boundingClientRect" (toJSVal boundingClientRect)) P.>> (o ^. jss "intersectionRect" (toJSVal intersectionRect)) P.>> (o ^. jss "isIntersecting" (toJSVal isIntersecting)) P.>> (o ^. jss "isVisible" (toJSVal isVisible)) P.>> (o ^. jss "intersectionRatio" (toJSVal intersectionRatio)) P.>> (o ^. jss "target" (toJSVal target)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-time IntersectionObserverEntryInit.time specification>
+setTime :: (MonadDOM m) => IntersectionObserverEntryInit -> Double -> m ()
+setTime self val = liftDOM (void (self ^. jss "time" (toJSVal val)))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-time IntersectionObserverEntryInit.time specification>
+getTime :: (MonadDOM m) => IntersectionObserverEntryInit -> m Double
+getTime self = liftDOM (((self ^. js "time") >>= valToNumber))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-rootbounds IntersectionObserverEntryInit.rootBounds specification>
+setRootBounds :: (MonadDOM m) => IntersectionObserverEntryInit -> Maybe DOMRectInit -> m ()
+setRootBounds self val = liftDOM (void (self ^. jss "rootBounds" (toJSVal val)))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-rootbounds IntersectionObserverEntryInit.rootBounds specification>
+getRootBounds :: (MonadDOM m) => IntersectionObserverEntryInit -> m (Maybe DOMRectInit)
+getRootBounds self = liftDOM (((self ^. js "rootBounds") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-rootbounds IntersectionObserverEntryInit.rootBounds specification>
+getRootBoundsUnsafe :: (MonadDOM m, HasCallStack) => IntersectionObserverEntryInit -> m DOMRectInit
+getRootBoundsUnsafe self = liftDOM ((((self ^. js "rootBounds") >>= 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 (((self ^. js "rootBounds") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-boundingclientrect IntersectionObserverEntryInit.boundingClientRect specification>
+setBoundingClientRect :: (MonadDOM m) => IntersectionObserverEntryInit -> DOMRectInit -> m ()
+setBoundingClientRect self val = liftDOM (void (self ^. jss "boundingClientRect" (toJSVal val)))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-boundingclientrect IntersectionObserverEntryInit.boundingClientRect specification>
+getBoundingClientRect :: (MonadDOM m) => IntersectionObserverEntryInit -> m DOMRectInit
+getBoundingClientRect self = liftDOM (((self ^. js "boundingClientRect") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-intersectionrect IntersectionObserverEntryInit.intersectionRect specification>
+setIntersectionRect :: (MonadDOM m) => IntersectionObserverEntryInit -> DOMRectInit -> m ()
+setIntersectionRect self val = liftDOM (void (self ^. jss "intersectionRect" (toJSVal val)))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-intersectionrect IntersectionObserverEntryInit.intersectionRect specification>
+getIntersectionRect :: (MonadDOM m) => IntersectionObserverEntryInit -> m DOMRectInit
+getIntersectionRect self = liftDOM (((self ^. js "intersectionRect") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-isintersecting IntersectionObserverEntryInit.isIntersecting specification>
+setIsIntersecting :: (MonadDOM m) => IntersectionObserverEntryInit -> Bool -> m ()
+setIsIntersecting self val = liftDOM (void (self ^. jss "isIntersecting" (toJSVal val)))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-isintersecting IntersectionObserverEntryInit.isIntersecting specification>
+getIsIntersecting :: (MonadDOM m) => IntersectionObserverEntryInit -> m Bool
+getIsIntersecting self = liftDOM (((self ^. js "isIntersecting") >>= valToBool))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-isvisible IntersectionObserverEntryInit.isVisible specification>
+setIsVisible :: (MonadDOM m) => IntersectionObserverEntryInit -> Bool -> m ()
+setIsVisible self val = liftDOM (void (self ^. jss "isVisible" (toJSVal val)))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-isvisible IntersectionObserverEntryInit.isVisible specification>
+getIsVisible :: (MonadDOM m) => IntersectionObserverEntryInit -> m Bool
+getIsVisible self = liftDOM (((self ^. js "isVisible") >>= valToBool))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-intersectionratio IntersectionObserverEntryInit.intersectionRatio specification>
+setIntersectionRatio :: (MonadDOM m) => IntersectionObserverEntryInit -> Double -> m ()
+setIntersectionRatio self val = liftDOM (void (self ^. jss "intersectionRatio" (toJSVal val)))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-intersectionratio IntersectionObserverEntryInit.intersectionRatio specification>
+getIntersectionRatio :: (MonadDOM m) => IntersectionObserverEntryInit -> m Double
+getIntersectionRatio self = liftDOM (((self ^. js "intersectionRatio") >>= valToNumber))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-target IntersectionObserverEntryInit.target specification>
+setTarget :: (MonadDOM m, IsElement val) => IntersectionObserverEntryInit -> val -> m ()
+setTarget self val = liftDOM (void (self ^. jss "target" (toJSVal val)))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentryinit-target IntersectionObserverEntryInit.target specification>
+getTarget :: (MonadDOM m) => IntersectionObserverEntryInit -> m Element
+getTarget self = liftDOM (((self ^. js "target") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/IntersectionObserverInit.hs b/src/JSDOM/Generated/IntersectionObserverInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/IntersectionObserverInit.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from intersection-observer (webref). Do not edit.
+module JSDOM.Generated.IntersectionObserverInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/IntersectionObserver/#dictdef-intersectionobserverinit IntersectionObserverInit specification>
+newIntersectionObserverInit :: (MonadDOM m) => m IntersectionObserverInit
+newIntersectionObserverInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "root" (toJSVal val)))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-root IntersectionObserverInit.root specification>
+getRoot :: (MonadDOM m) => IntersectionObserverInit -> m (Maybe ElementOrDocument)
+getRoot self = liftDOM (((self ^. js "root") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-root IntersectionObserverInit.root specification>
+getRootUnsafe :: (MonadDOM m, HasCallStack) => IntersectionObserverInit -> m ElementOrDocument
+getRootUnsafe self = liftDOM ((((self ^. js "root") >>= 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 (((self ^. js "root") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-rootmargin IntersectionObserverInit.rootMargin specification>
+setRootMargin :: (MonadDOM m, ToJSString val) => IntersectionObserverInit -> val -> m ()
+setRootMargin self val = liftDOM (void (self ^. jss "rootMargin" (toJSVal val)))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-rootmargin IntersectionObserverInit.rootMargin specification>
+getRootMargin :: (MonadDOM m, FromJSString result) => IntersectionObserverInit -> m (Maybe result)
+getRootMargin self = liftDOM (((self ^. js "rootMargin") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-rootmargin IntersectionObserverInit.rootMargin specification>
+getRootMarginUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => IntersectionObserverInit -> m result
+getRootMarginUnsafe self = liftDOM ((((self ^. js "rootMargin") >>= fromMaybeJSString) >>= 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 (((self ^. js "rootMargin") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-scrollmargin IntersectionObserverInit.scrollMargin specification>
+setScrollMargin :: (MonadDOM m, ToJSString val) => IntersectionObserverInit -> val -> m ()
+setScrollMargin self val = liftDOM (void (self ^. jss "scrollMargin" (toJSVal val)))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-scrollmargin IntersectionObserverInit.scrollMargin specification>
+getScrollMargin :: (MonadDOM m, FromJSString result) => IntersectionObserverInit -> m (Maybe result)
+getScrollMargin self = liftDOM (((self ^. js "scrollMargin") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-scrollmargin IntersectionObserverInit.scrollMargin specification>
+getScrollMarginUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => IntersectionObserverInit -> m result
+getScrollMarginUnsafe self = liftDOM ((((self ^. js "scrollMargin") >>= fromMaybeJSString) >>= 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 (((self ^. js "scrollMargin") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-threshold IntersectionObserverInit.threshold specification>
+setThreshold :: (MonadDOM m, IsDoubleOrSequenceDouble val) => IntersectionObserverInit -> val -> m ()
+setThreshold self val = liftDOM (void (self ^. jss "threshold" (toJSVal val)))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-threshold IntersectionObserverInit.threshold specification>
+getThreshold :: (MonadDOM m) => IntersectionObserverInit -> m (Maybe DoubleOrSequenceDouble)
+getThreshold self = liftDOM (((self ^. js "threshold") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-threshold IntersectionObserverInit.threshold specification>
+getThresholdUnsafe :: (MonadDOM m, HasCallStack) => IntersectionObserverInit -> m DoubleOrSequenceDouble
+getThresholdUnsafe self = liftDOM ((((self ^. js "threshold") >>= 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 (((self ^. js "threshold") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-delay IntersectionObserverInit.delay specification>
+setDelay :: (MonadDOM m) => IntersectionObserverInit -> Int -> m ()
+setDelay self val = liftDOM (void (self ^. jss "delay" (toJSVal val)))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-delay IntersectionObserverInit.delay specification>
+getDelay :: (MonadDOM m) => IntersectionObserverInit -> m (Maybe Int)
+getDelay self = liftDOM (((self ^. js "delay") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-delay IntersectionObserverInit.delay specification>
+getDelayUnsafe :: (MonadDOM m, HasCallStack) => IntersectionObserverInit -> m Int
+getDelayUnsafe self = liftDOM ((((self ^. js "delay") >>= 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 ((P.round <$> ((self ^. js "delay") >>= valToNumber)))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-trackvisibility IntersectionObserverInit.trackVisibility specification>
+setTrackVisibility :: (MonadDOM m) => IntersectionObserverInit -> Bool -> m ()
+setTrackVisibility self val = liftDOM (void (self ^. jss "trackVisibility" (toJSVal val)))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-trackvisibility IntersectionObserverInit.trackVisibility specification>
+getTrackVisibility :: (MonadDOM m) => IntersectionObserverInit -> m (Maybe Bool)
+getTrackVisibility self = liftDOM (((self ^. js "trackVisibility") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverinit-trackvisibility IntersectionObserverInit.trackVisibility specification>
+getTrackVisibilityUnsafe :: (MonadDOM m, HasCallStack) => IntersectionObserverInit -> m Bool
+getTrackVisibilityUnsafe self = liftDOM ((((self ^. js "trackVisibility") >>= 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 (((self ^. js "trackVisibility") >>= valToBool))
diff --git a/src/JSDOM/Generated/JsonWebKey.hs b/src/JSDOM/Generated/JsonWebKey.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/JsonWebKey.hs
@@ -0,0 +1,340 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcrypto-2 (webref). Do not edit.
+module JSDOM.Generated.JsonWebKey
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcrypto/#dfn-JsonWebKey JsonWebKey specification>
+newJsonWebKey :: (MonadDOM m) => m JsonWebKey
+newJsonWebKey = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-kty JsonWebKey.kty specification>
+setKty :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setKty self val = liftDOM (void (self ^. jss "kty" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-kty JsonWebKey.kty specification>
+getKty :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getKty self = liftDOM (((self ^. js "kty") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-kty JsonWebKey.kty specification>
+getKtyUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getKtyUnsafe self = liftDOM ((((self ^. js "kty") >>= fromMaybeJSString) >>= 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 (((self ^. js "kty") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-use JsonWebKey.use specification>
+setUse :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setUse self val = liftDOM (void (self ^. jss "use" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-use JsonWebKey.use specification>
+getUse :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getUse self = liftDOM (((self ^. js "use") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-use JsonWebKey.use specification>
+getUseUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getUseUnsafe self = liftDOM ((((self ^. js "use") >>= fromMaybeJSString) >>= 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 (((self ^. js "use") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "key_ops" (toJSVal val)))
+
+-- | <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 (((self ^. js "key_ops") >>= 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 ((((self ^. js "key_ops") >>= 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 (((self ^. js "key_ops") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-alg JsonWebKey.alg specification>
+setAlg :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setAlg self val = liftDOM (void (self ^. jss "alg" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-alg JsonWebKey.alg specification>
+getAlg :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getAlg self = liftDOM (((self ^. js "alg") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-alg JsonWebKey.alg specification>
+getAlgUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getAlgUnsafe self = liftDOM ((((self ^. js "alg") >>= fromMaybeJSString) >>= 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 (((self ^. js "alg") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-ext JsonWebKey.ext specification>
+setExt :: (MonadDOM m) => JsonWebKey -> Bool -> m ()
+setExt self val = liftDOM (void (self ^. jss "ext" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-ext JsonWebKey.ext specification>
+getExt :: (MonadDOM m) => JsonWebKey -> m (Maybe Bool)
+getExt self = liftDOM (((self ^. js "ext") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-ext JsonWebKey.ext specification>
+getExtUnsafe :: (MonadDOM m, HasCallStack) => JsonWebKey -> m Bool
+getExtUnsafe self = liftDOM ((((self ^. js "ext") >>= 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 (((self ^. js "ext") >>= valToBool))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-crv JsonWebKey.crv specification>
+setCrv :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setCrv self val = liftDOM (void (self ^. jss "crv" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-crv JsonWebKey.crv specification>
+getCrv :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getCrv self = liftDOM (((self ^. js "crv") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-crv JsonWebKey.crv specification>
+getCrvUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getCrvUnsafe self = liftDOM ((((self ^. js "crv") >>= fromMaybeJSString) >>= 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 (((self ^. js "crv") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-x JsonWebKey.x specification>
+setX :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setX self val = liftDOM (void (self ^. jss "x" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-x JsonWebKey.x specification>
+getX :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getX self = liftDOM (((self ^. js "x") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-x JsonWebKey.x specification>
+getXUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getXUnsafe self = liftDOM ((((self ^. js "x") >>= fromMaybeJSString) >>= 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 (((self ^. js "x") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-y JsonWebKey.y specification>
+setY :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setY self val = liftDOM (void (self ^. jss "y" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-y JsonWebKey.y specification>
+getY :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getY self = liftDOM (((self ^. js "y") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-y JsonWebKey.y specification>
+getYUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getYUnsafe self = liftDOM ((((self ^. js "y") >>= fromMaybeJSString) >>= 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 (((self ^. js "y") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-d JsonWebKey.d specification>
+setD :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setD self val = liftDOM (void (self ^. jss "d" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-d JsonWebKey.d specification>
+getD :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getD self = liftDOM (((self ^. js "d") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-d JsonWebKey.d specification>
+getDUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getDUnsafe self = liftDOM ((((self ^. js "d") >>= fromMaybeJSString) >>= 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 (((self ^. js "d") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-n JsonWebKey.n specification>
+setN :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setN self val = liftDOM (void (self ^. jss "n" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-n JsonWebKey.n specification>
+getN :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getN self = liftDOM (((self ^. js "n") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-n JsonWebKey.n specification>
+getNUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getNUnsafe self = liftDOM ((((self ^. js "n") >>= fromMaybeJSString) >>= 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 (((self ^. js "n") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-e JsonWebKey.e specification>
+setE :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setE self val = liftDOM (void (self ^. jss "e" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-e JsonWebKey.e specification>
+getE :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getE self = liftDOM (((self ^. js "e") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-e JsonWebKey.e specification>
+getEUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getEUnsafe self = liftDOM ((((self ^. js "e") >>= fromMaybeJSString) >>= 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 (((self ^. js "e") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-p JsonWebKey.p specification>
+setP :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setP self val = liftDOM (void (self ^. jss "p" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-p JsonWebKey.p specification>
+getP :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getP self = liftDOM (((self ^. js "p") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-p JsonWebKey.p specification>
+getPUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getPUnsafe self = liftDOM ((((self ^. js "p") >>= fromMaybeJSString) >>= 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 (((self ^. js "p") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-q JsonWebKey.q specification>
+setQ :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setQ self val = liftDOM (void (self ^. jss "q" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-q JsonWebKey.q specification>
+getQ :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getQ self = liftDOM (((self ^. js "q") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-q JsonWebKey.q specification>
+getQUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getQUnsafe self = liftDOM ((((self ^. js "q") >>= fromMaybeJSString) >>= 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 (((self ^. js "q") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-dp JsonWebKey.dp specification>
+setDp :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setDp self val = liftDOM (void (self ^. jss "dp" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-dp JsonWebKey.dp specification>
+getDp :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getDp self = liftDOM (((self ^. js "dp") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-dp JsonWebKey.dp specification>
+getDpUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getDpUnsafe self = liftDOM ((((self ^. js "dp") >>= fromMaybeJSString) >>= 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 (((self ^. js "dp") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-dq JsonWebKey.dq specification>
+setDq :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setDq self val = liftDOM (void (self ^. jss "dq" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-dq JsonWebKey.dq specification>
+getDq :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getDq self = liftDOM (((self ^. js "dq") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-dq JsonWebKey.dq specification>
+getDqUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getDqUnsafe self = liftDOM ((((self ^. js "dq") >>= fromMaybeJSString) >>= 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 (((self ^. js "dq") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-qi JsonWebKey.qi specification>
+setQi :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setQi self val = liftDOM (void (self ^. jss "qi" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-qi JsonWebKey.qi specification>
+getQi :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getQi self = liftDOM (((self ^. js "qi") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-qi JsonWebKey.qi specification>
+getQiUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getQiUnsafe self = liftDOM ((((self ^. js "qi") >>= fromMaybeJSString) >>= 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 (((self ^. js "qi") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-oth JsonWebKey.oth specification>
+setOth :: (MonadDOM m) => JsonWebKey -> [RsaOtherPrimesInfo] -> m ()
+setOth self val = liftDOM (void (self ^. jss "oth" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-oth JsonWebKey.oth specification>
+getOth :: (MonadDOM m) => JsonWebKey -> m (Maybe [RsaOtherPrimesInfo])
+getOth self = liftDOM (((self ^. js "oth") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-oth JsonWebKey.oth specification>
+getOthUnsafe :: (MonadDOM m, HasCallStack) => JsonWebKey -> m [RsaOtherPrimesInfo]
+getOthUnsafe self = liftDOM ((((self ^. js "oth") >>= 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 (((self ^. js "oth") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-k JsonWebKey.k specification>
+setK :: (MonadDOM m, ToJSString val) => JsonWebKey -> val -> m ()
+setK self val = liftDOM (void (self ^. jss "k" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-k JsonWebKey.k specification>
+getK :: (MonadDOM m, FromJSString result) => JsonWebKey -> m (Maybe result)
+getK self = liftDOM (((self ^. js "k") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-jsonwebkey-k JsonWebKey.k specification>
+getKUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => JsonWebKey -> m result
+getKUnsafe self = liftDOM ((((self ^. js "k") >>= fromMaybeJSString) >>= 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 (((self ^. js "k") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "pub" (toJSVal val)))
+
+-- | <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 (((self ^. js "pub") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "pub") >>= fromMaybeJSString) >>= 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 (((self ^. js "pub") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "priv" (toJSVal val)))
+
+-- | <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 (((self ^. js "priv") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "priv") >>= fromMaybeJSString) >>= 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 (((self ^. js "priv") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/KHR_parallel_shader_compile.hs b/src/JSDOM/Generated/KHR_parallel_shader_compile.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/KHR_parallel_shader_compile.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from KHR_parallel_shader_compile (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+pattern COMPLETION_STATUS_KHR = 0x91B1
diff --git a/src/JSDOM/Generated/KeySystemTrackConfiguration.hs b/src/JSDOM/Generated/KeySystemTrackConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/KeySystemTrackConfiguration.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module JSDOM.Generated.KeySystemTrackConfiguration
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/media-capabilities/#dictdef-keysystemtrackconfiguration KeySystemTrackConfiguration specification>
+newKeySystemTrackConfiguration :: (MonadDOM m) => m KeySystemTrackConfiguration
+newKeySystemTrackConfiguration = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "robustness" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-keysystemtrackconfiguration-robustness KeySystemTrackConfiguration.robustness specification>
+getRobustness :: (MonadDOM m, FromJSString result) => KeySystemTrackConfiguration -> m (Maybe result)
+getRobustness self = liftDOM (((self ^. js "robustness") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-keysystemtrackconfiguration-robustness KeySystemTrackConfiguration.robustness specification>
+getRobustnessUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => KeySystemTrackConfiguration -> m result
+getRobustnessUnsafe self = liftDOM ((((self ^. js "robustness") >>= fromMaybeJSString) >>= 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 (((self ^. js "robustness") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "encryptionScheme" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-keysystemtrackconfiguration-encryptionscheme KeySystemTrackConfiguration.encryptionScheme specification>
+getEncryptionScheme :: (MonadDOM m, FromJSString result) => KeySystemTrackConfiguration -> m (Maybe result)
+getEncryptionScheme self = liftDOM (((self ^. js "encryptionScheme") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-keysystemtrackconfiguration-encryptionscheme KeySystemTrackConfiguration.encryptionScheme specification>
+getEncryptionSchemeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => KeySystemTrackConfiguration -> m result
+getEncryptionSchemeUnsafe self = liftDOM ((((self ^. js "encryptionScheme") >>= fromMaybeJSString) >>= 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 (((self ^. js "encryptionScheme") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/KeyboardEvent.hs b/src/JSDOM/Generated/KeyboardEvent.hs
--- a/src/JSDOM/Generated/KeyboardEvent.hs
+++ b/src/JSDOM/Generated/KeyboardEvent.hs
@@ -1,145 +1,84 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
 module JSDOM.Generated.KeyboardEvent
-       (newKeyboardEvent, getModifierState, getModifierState_,
-        initKeyboardEvent, pattern DOM_KEY_LOCATION_STANDARD,
-        pattern DOM_KEY_LOCATION_LEFT, pattern DOM_KEY_LOCATION_RIGHT,
-        pattern DOM_KEY_LOCATION_NUMPAD, getKey, getCode, getLocation,
-        getCtrlKey, getShiftKey, getAltKey, getMetaKey, getRepeat,
-        getIsComposing, getKeyIdentifier, getKeyLocation, getAltGraphKey,
-        getCharCode, getKeyCode, getWhich, KeyboardEvent(..),
-        gTypeKeyboardEvent)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent Mozilla KeyboardEvent documentation> 
-newKeyboardEvent ::
-                 (MonadDOM m, ToJSString type') =>
-                   type' -> Maybe KeyboardEventInit -> m KeyboardEvent
-newKeyboardEvent type' eventInitDict
-  = liftDOM
-      (KeyboardEvent <$>
-         new (jsg "KeyboardEvent") [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "KeyboardEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.getModifierState Mozilla KeyboardEvent.getModifierState documentation> 
-getModifierState ::
-                 (MonadDOM m, ToJSString keyArg) =>
-                   KeyboardEvent -> keyArg -> m Bool
-getModifierState self keyArg
-  = liftDOM
-      ((self ^. jsf "getModifierState" [toJSVal keyArg]) >>= valToBool)
+-- | <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 (((self ^. jsf "getModifierState" [toJSVal keyArg]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.getModifierState Mozilla KeyboardEvent.getModifierState documentation> 
-getModifierState_ ::
-                  (MonadDOM m, ToJSString keyArg) => KeyboardEvent -> keyArg -> m ()
-getModifierState_ self keyArg
-  = liftDOM (void (self ^. jsf "getModifierState" [toJSVal keyArg]))
+-- | <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 (self ^. jsf "getModifierState" [toJSVal keyArg]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.initKeyboardEvent Mozilla KeyboardEvent.initKeyboardEvent documentation> 
-initKeyboardEvent ::
-                  (MonadDOM 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
-  = liftDOM
-      (void
-         (self ^. jsf "initKeyboardEvent"
-            [toJSVal type', toJSVal canBubble, toJSVal cancelable,
-             toJSVal view, toJSVal keyIdentifier, toJSVal location,
-             toJSVal ctrlKey, toJSVal altKey, toJSVal shiftKey, toJSVal metaKey,
-             toJSVal 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
+-- | <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 (self ^. jsf "initKeyboardEvent" [toJSVal typeArg, P.maybe (P.return jsUndefined) toJSVal bubblesArg, P.maybe (P.return jsUndefined) toJSVal cancelableArg, toJSVal viewArg, P.maybe (P.return jsUndefined) toJSVal keyArg, P.maybe (P.return jsUndefined) toJSVal locationArg, P.maybe (P.return jsUndefined) toJSVal ctrlKey, P.maybe (P.return jsUndefined) toJSVal altKey, P.maybe (P.return jsUndefined) toJSVal shiftKey, P.maybe (P.return jsUndefined) toJSVal metaKey]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.key Mozilla KeyboardEvent.key documentation> 
-getKey ::
-       (MonadDOM m, FromJSString result) => KeyboardEvent -> m result
-getKey self = liftDOM ((self ^. js "key") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/key MDN KeyboardEvent.key documentation>
+getKey :: (MonadDOM m, FromJSString result) => KeyboardEvent -> m result
+getKey self = liftDOM (((self ^. js "key") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.code Mozilla KeyboardEvent.code documentation> 
-getCode ::
-        (MonadDOM m, FromJSString result) => KeyboardEvent -> m result
-getCode self = liftDOM ((self ^. js "code") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/code MDN KeyboardEvent.code documentation>
+getCode :: (MonadDOM m, FromJSString result) => KeyboardEvent -> m result
+getCode self = liftDOM (((self ^. js "code") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.location Mozilla KeyboardEvent.location documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/location MDN KeyboardEvent.location documentation>
 getLocation :: (MonadDOM m) => KeyboardEvent -> m Word
-getLocation self
-  = liftDOM (round <$> ((self ^. js "location") >>= valToNumber))
+getLocation self = liftDOM ((P.round <$> ((self ^. js "location") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.ctrlKey Mozilla KeyboardEvent.ctrlKey documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/ctrlKey MDN KeyboardEvent.ctrlKey documentation>
 getCtrlKey :: (MonadDOM m) => KeyboardEvent -> m Bool
-getCtrlKey self = liftDOM ((self ^. js "ctrlKey") >>= valToBool)
+getCtrlKey self = liftDOM (((self ^. js "ctrlKey") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.shiftKey Mozilla KeyboardEvent.shiftKey documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/shiftKey MDN KeyboardEvent.shiftKey documentation>
 getShiftKey :: (MonadDOM m) => KeyboardEvent -> m Bool
-getShiftKey self = liftDOM ((self ^. js "shiftKey") >>= valToBool)
+getShiftKey self = liftDOM (((self ^. js "shiftKey") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.altKey Mozilla KeyboardEvent.altKey documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/altKey MDN KeyboardEvent.altKey documentation>
 getAltKey :: (MonadDOM m) => KeyboardEvent -> m Bool
-getAltKey self = liftDOM ((self ^. js "altKey") >>= valToBool)
+getAltKey self = liftDOM (((self ^. js "altKey") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.metaKey Mozilla KeyboardEvent.metaKey documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/metaKey MDN KeyboardEvent.metaKey documentation>
 getMetaKey :: (MonadDOM m) => KeyboardEvent -> m Bool
-getMetaKey self = liftDOM ((self ^. js "metaKey") >>= valToBool)
+getMetaKey self = liftDOM (((self ^. js "metaKey") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.repeat Mozilla KeyboardEvent.repeat documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/repeat MDN KeyboardEvent.repeat documentation>
 getRepeat :: (MonadDOM m) => KeyboardEvent -> m Bool
-getRepeat self = liftDOM ((self ^. js "repeat") >>= valToBool)
+getRepeat self = liftDOM (((self ^. js "repeat") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.isComposing Mozilla KeyboardEvent.isComposing documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/isComposing MDN KeyboardEvent.isComposing documentation>
 getIsComposing :: (MonadDOM m) => KeyboardEvent -> m Bool
-getIsComposing self
-  = liftDOM ((self ^. js "isComposing") >>= valToBool)
+getIsComposing self = liftDOM (((self ^. js "isComposing") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.keyIdentifier Mozilla KeyboardEvent.keyIdentifier documentation> 
-getKeyIdentifier ::
-                 (MonadDOM m, FromJSString result) => KeyboardEvent -> m result
-getKeyIdentifier self
-  = liftDOM ((self ^. js "keyIdentifier") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/charCode MDN KeyboardEvent.charCode documentation>
+getCharCode :: (MonadDOM m) => KeyboardEvent -> m Word
+getCharCode self = liftDOM ((P.round <$> ((self ^. js "charCode") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.keyLocation Mozilla KeyboardEvent.keyLocation documentation> 
-getKeyLocation :: (MonadDOM m) => KeyboardEvent -> m Word
-getKeyLocation self
-  = liftDOM (round <$> ((self ^. js "keyLocation") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/KeyboardEvent/keyCode MDN KeyboardEvent.keyCode documentation>
+getKeyCode :: (MonadDOM m) => KeyboardEvent -> m Word
+getKeyCode self = liftDOM ((P.round <$> ((self ^. js "keyCode") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.altGraphKey Mozilla KeyboardEvent.altGraphKey documentation> 
-getAltGraphKey :: (MonadDOM m) => KeyboardEvent -> m Bool
-getAltGraphKey self
-  = liftDOM ((self ^. js "altGraphKey") >>= valToBool)
+pattern DOM_KEY_LOCATION_STANDARD = 0x00
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.charCode Mozilla KeyboardEvent.charCode documentation> 
-getCharCode :: (MonadDOM m) => KeyboardEvent -> m Word
-getCharCode self
-  = liftDOM (round <$> ((self ^. js "charCode") >>= valToNumber))
+pattern DOM_KEY_LOCATION_LEFT = 0x01
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.keyCode Mozilla KeyboardEvent.keyCode documentation> 
-getKeyCode :: (MonadDOM m) => KeyboardEvent -> m Word
-getKeyCode self
-  = liftDOM (round <$> ((self ^. js "keyCode") >>= valToNumber))
+pattern DOM_KEY_LOCATION_RIGHT = 0x02
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.which Mozilla KeyboardEvent.which documentation> 
-getWhich :: (MonadDOM m) => KeyboardEvent -> m Word
-getWhich self
-  = liftDOM (round <$> ((self ^. js "which") >>= valToNumber))
+pattern DOM_KEY_LOCATION_NUMPAD = 0x03
diff --git a/src/JSDOM/Generated/KeyboardEventInit.hs b/src/JSDOM/Generated/KeyboardEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/KeyboardEventInit.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
+module JSDOM.Generated.KeyboardEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/uievents/#dictdef-keyboardeventinit KeyboardEventInit specification>
+newKeyboardEventInit :: (MonadDOM m) => m KeyboardEventInit
+newKeyboardEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-key KeyboardEventInit.key specification>
+setKey :: (MonadDOM m, ToJSString val) => KeyboardEventInit -> val -> m ()
+setKey self val = liftDOM (void (self ^. jss "key" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-key KeyboardEventInit.key specification>
+getKey :: (MonadDOM m, FromJSString result) => KeyboardEventInit -> m (Maybe result)
+getKey self = liftDOM (((self ^. js "key") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-key KeyboardEventInit.key specification>
+getKeyUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => KeyboardEventInit -> m result
+getKeyUnsafe self = liftDOM ((((self ^. js "key") >>= fromMaybeJSString) >>= 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 (((self ^. js "key") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-code KeyboardEventInit.code specification>
+setCode :: (MonadDOM m, ToJSString val) => KeyboardEventInit -> val -> m ()
+setCode self val = liftDOM (void (self ^. jss "code" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-code KeyboardEventInit.code specification>
+getCode :: (MonadDOM m, FromJSString result) => KeyboardEventInit -> m (Maybe result)
+getCode self = liftDOM (((self ^. js "code") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-code KeyboardEventInit.code specification>
+getCodeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => KeyboardEventInit -> m result
+getCodeUnsafe self = liftDOM ((((self ^. js "code") >>= fromMaybeJSString) >>= 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 (((self ^. js "code") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-location KeyboardEventInit.location specification>
+setLocation :: (MonadDOM m) => KeyboardEventInit -> Word -> m ()
+setLocation self val = liftDOM (void (self ^. jss "location" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-location KeyboardEventInit.location specification>
+getLocation :: (MonadDOM m) => KeyboardEventInit -> m (Maybe Word)
+getLocation self = liftDOM (((self ^. js "location") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-location KeyboardEventInit.location specification>
+getLocationUnsafe :: (MonadDOM m, HasCallStack) => KeyboardEventInit -> m Word
+getLocationUnsafe self = liftDOM ((((self ^. js "location") >>= 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 ((P.round <$> ((self ^. js "location") >>= valToNumber)))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-repeat KeyboardEventInit.repeat specification>
+setRepeat :: (MonadDOM m) => KeyboardEventInit -> Bool -> m ()
+setRepeat self val = liftDOM (void (self ^. jss "repeat" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-repeat KeyboardEventInit.repeat specification>
+getRepeat :: (MonadDOM m) => KeyboardEventInit -> m (Maybe Bool)
+getRepeat self = liftDOM (((self ^. js "repeat") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-repeat KeyboardEventInit.repeat specification>
+getRepeatUnsafe :: (MonadDOM m, HasCallStack) => KeyboardEventInit -> m Bool
+getRepeatUnsafe self = liftDOM ((((self ^. js "repeat") >>= 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 (((self ^. js "repeat") >>= valToBool))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-iscomposing KeyboardEventInit.isComposing specification>
+setIsComposing :: (MonadDOM m) => KeyboardEventInit -> Bool -> m ()
+setIsComposing self val = liftDOM (void (self ^. jss "isComposing" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-iscomposing KeyboardEventInit.isComposing specification>
+getIsComposing :: (MonadDOM m) => KeyboardEventInit -> m (Maybe Bool)
+getIsComposing self = liftDOM (((self ^. js "isComposing") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-iscomposing KeyboardEventInit.isComposing specification>
+getIsComposingUnsafe :: (MonadDOM m, HasCallStack) => KeyboardEventInit -> m Bool
+getIsComposingUnsafe self = liftDOM ((((self ^. js "isComposing") >>= 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 (((self ^. js "isComposing") >>= valToBool))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-charcode KeyboardEventInit.charCode specification>
+setCharCode :: (MonadDOM m) => KeyboardEventInit -> Word -> m ()
+setCharCode self val = liftDOM (void (self ^. jss "charCode" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-charcode KeyboardEventInit.charCode specification>
+getCharCode :: (MonadDOM m) => KeyboardEventInit -> m (Maybe Word)
+getCharCode self = liftDOM (((self ^. js "charCode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-charcode KeyboardEventInit.charCode specification>
+getCharCodeUnsafe :: (MonadDOM m, HasCallStack) => KeyboardEventInit -> m Word
+getCharCodeUnsafe self = liftDOM ((((self ^. js "charCode") >>= 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 ((P.round <$> ((self ^. js "charCode") >>= valToNumber)))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-keycode KeyboardEventInit.keyCode specification>
+setKeyCode :: (MonadDOM m) => KeyboardEventInit -> Word -> m ()
+setKeyCode self val = liftDOM (void (self ^. jss "keyCode" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-keycode KeyboardEventInit.keyCode specification>
+getKeyCode :: (MonadDOM m) => KeyboardEventInit -> m (Maybe Word)
+getKeyCode self = liftDOM (((self ^. js "keyCode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-keyboardeventinit-keycode KeyboardEventInit.keyCode specification>
+getKeyCodeUnsafe :: (MonadDOM m, HasCallStack) => KeyboardEventInit -> m Word
+getKeyCodeUnsafe self = liftDOM ((((self ^. js "keyCode") >>= 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 ((P.round <$> ((self ^. js "keyCode") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/KeyframeAnimationOptions.hs b/src/JSDOM/Generated/KeyframeAnimationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/KeyframeAnimationOptions.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module JSDOM.Generated.KeyframeAnimationOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/web-animations-1/#dictdef-keyframeanimationoptions KeyframeAnimationOptions specification>
+newKeyframeAnimationOptions :: (MonadDOM m) => m KeyframeAnimationOptions
+newKeyframeAnimationOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "id" (toJSVal val)))
+
+-- | <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 (((self ^. js "id") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "id") >>= fromMaybeJSString) >>= 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 (((self ^. js "id") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "timeline" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeanimationoptions-timeline KeyframeAnimationOptions.timeline specification>
+getTimeline :: (MonadDOM m) => KeyframeAnimationOptions -> m (Maybe AnimationTimeline)
+getTimeline self = liftDOM (((self ^. js "timeline") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-keyframeanimationoptions-timeline KeyframeAnimationOptions.timeline specification>
+getTimelineUnsafe :: (MonadDOM m, HasCallStack) => KeyframeAnimationOptions -> m AnimationTimeline
+getTimelineUnsafe self = liftDOM ((((self ^. js "timeline") >>= 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 (((self ^. js "timeline") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "rangeStart" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-rangestart KeyframeAnimationOptions.rangeStart specification>
+getRangeStart :: (MonadDOM m) => KeyframeAnimationOptions -> m (Maybe TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString)
+getRangeStart self = liftDOM (((self ^. js "rangeStart") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-rangestart KeyframeAnimationOptions.rangeStart specification>
+getRangeStartUnsafe :: (MonadDOM m, HasCallStack) => KeyframeAnimationOptions -> m TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString
+getRangeStartUnsafe self = liftDOM ((((self ^. js "rangeStart") >>= 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 (((self ^. js "rangeStart") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "rangeEnd" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-rangeend KeyframeAnimationOptions.rangeEnd specification>
+getRangeEnd :: (MonadDOM m) => KeyframeAnimationOptions -> m (Maybe TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString)
+getRangeEnd self = liftDOM (((self ^. js "rangeEnd") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-rangeend KeyframeAnimationOptions.rangeEnd specification>
+getRangeEndUnsafe :: (MonadDOM m, HasCallStack) => KeyframeAnimationOptions -> m TimelineRangeOffsetOrCSSNumericValueOrCSSKeywordValueOrString
+getRangeEndUnsafe self = liftDOM ((((self ^. js "rangeEnd") >>= 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 (((self ^. js "rangeEnd") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "trigger" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-trigger KeyframeAnimationOptions.trigger specification>
+getTrigger :: (MonadDOM m) => KeyframeAnimationOptions -> m (Maybe AnimationTrigger)
+getTrigger self = liftDOM (((self ^. js "trigger") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-keyframeanimationoptions-trigger KeyframeAnimationOptions.trigger specification>
+getTriggerUnsafe :: (MonadDOM m, HasCallStack) => KeyframeAnimationOptions -> m AnimationTrigger
+getTriggerUnsafe self = liftDOM ((((self ^. js "trigger") >>= 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 (((self ^. js "trigger") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/KeyframeEffect.hs b/src/JSDOM/Generated/KeyframeEffect.hs
--- a/src/JSDOM/Generated/KeyframeEffect.hs
+++ b/src/JSDOM/Generated/KeyframeEffect.hs
@@ -1,26 +1,84 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
 module JSDOM.Generated.KeyframeEffect
-       (newKeyframeEffect, KeyframeEffect(..), gTypeKeyframeEffect) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (newKeyframeEffect', newKeyframeEffect, getKeyframes, getKeyframes_, setKeyframes, setTarget, getTarget, getTargetUnsafe, getTargetUnchecked, setPseudoElement, getPseudoElement, getPseudoElementUnsafe, getPseudoElementUnchecked, setComposite, getComposite, setIterationComposite, getIterationComposite, KeyframeEffect(..), gTypeKeyframeEffect)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyframeEffect Mozilla KeyframeEffect documentation> 
-newKeyframeEffect ::
-                  (MonadDOM m, IsElement target) => Maybe target -> m KeyframeEffect
-newKeyframeEffect target
-  = liftDOM
-      (KeyframeEffect <$> new (jsg "KeyframeEffect") [toJSVal target])
+-- | <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 (((new (jsg "KeyframeEffect") [toJSVal target, toJSVal keyframes, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/KeyframeEffect MDN KeyframeEffect. documentation>
+newKeyframeEffect :: (MonadDOM m) => KeyframeEffect -> m KeyframeEffect
+newKeyframeEffect source = liftDOM (((new (jsg "KeyframeEffect") [toJSVal source]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/getKeyframes MDN KeyframeEffect.getKeyframes documentation>
+getKeyframes :: (MonadDOM m) => KeyframeEffect -> m [GObject]
+getKeyframes self = liftDOM (((self ^. jsf "getKeyframes" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/getKeyframes MDN KeyframeEffect.getKeyframes documentation>
+getKeyframes_ :: (MonadDOM m) => KeyframeEffect -> m ()
+getKeyframes_ self = liftDOM (void (self ^. jsf "getKeyframes" ()))
+
+-- | <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 (self ^. jsf "setKeyframes" [toJSVal keyframes]))
+
+-- | <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 (self ^. jss "target" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/target MDN KeyframeEffect.target documentation>
+getTarget :: (MonadDOM m) => KeyframeEffect -> m (Maybe Element)
+getTarget self = liftDOM (((self ^. js "target") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/target MDN KeyframeEffect.target documentation>
+getTargetUnsafe :: (MonadDOM m, HasCallStack) => KeyframeEffect -> m Element
+getTargetUnsafe self = liftDOM ((((self ^. js "target") >>= 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 (((self ^. js "target") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "pseudoElement" (toJSVal val)))
+
+-- | <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 (((self ^. js "pseudoElement") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "pseudoElement") >>= fromMaybeJSString) >>= 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 (((self ^. js "pseudoElement") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/composite MDN KeyframeEffect.composite documentation>
+setComposite :: (MonadDOM m) => KeyframeEffect -> CompositeOperation -> m ()
+setComposite self val = liftDOM (void (self ^. jss "composite" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/composite MDN KeyframeEffect.composite documentation>
+getComposite :: (MonadDOM m) => KeyframeEffect -> m CompositeOperation
+getComposite self = liftDOM (((self ^. js "composite") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/iterationComposite MDN KeyframeEffect.iterationComposite documentation>
+setIterationComposite :: (MonadDOM m) => KeyframeEffect -> IterationCompositeOperation -> m ()
+setIterationComposite self val = liftDOM (void (self ^. jss "iterationComposite" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/KeyframeEffect/iterationComposite MDN KeyframeEffect.iterationComposite documentation>
+getIterationComposite :: (MonadDOM m) => KeyframeEffect -> m IterationCompositeOperation
+getIterationComposite self = liftDOM (((self ^. js "iterationComposite") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/KeyframeEffectOptions.hs b/src/JSDOM/Generated/KeyframeEffectOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/KeyframeEffectOptions.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module JSDOM.Generated.KeyframeEffectOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/web-animations-1/#dictdef-keyframeeffectoptions KeyframeEffectOptions specification>
+newKeyframeEffectOptions :: (MonadDOM m) => m KeyframeEffectOptions
+newKeyframeEffectOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toKeyframeEffectOptions self) ^. jss "composite" (toJSVal val)))
+
+-- | <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 ((((Types.toKeyframeEffectOptions self) ^. js "composite") >>= 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 (((((Types.toKeyframeEffectOptions self) ^. js "composite") >>= 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 ((((Types.toKeyframeEffectOptions self) ^. js "composite") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toKeyframeEffectOptions self) ^. jss "pseudoElement" (toJSVal val)))
+
+-- | <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 ((((Types.toKeyframeEffectOptions self) ^. js "pseudoElement") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toKeyframeEffectOptions self) ^. js "pseudoElement") >>= fromMaybeJSString) >>= 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 ((((Types.toKeyframeEffectOptions self) ^. js "pseudoElement") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toKeyframeEffectOptions self) ^. jss "iterationComposite" (toJSVal val)))
+
+-- | <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 ((((Types.toKeyframeEffectOptions self) ^. js "iterationComposite") >>= 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 (((((Types.toKeyframeEffectOptions self) ^. js "iterationComposite") >>= 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 ((((Types.toKeyframeEffectOptions self) ^. js "iterationComposite") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/LargestContentfulPaint.hs b/src/JSDOM/Generated/LargestContentfulPaint.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/LargestContentfulPaint.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from largest-contentful-paint (webref). Do not edit.
+module JSDOM.Generated.LargestContentfulPaint
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/toJSON MDN LargestContentfulPaint.toJSON documentation>
+toJSON :: (MonadDOM m) => LargestContentfulPaint -> m GObject
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/toJSON MDN LargestContentfulPaint.toJSON documentation>
+toJSON_ :: (MonadDOM m) => LargestContentfulPaint -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/loadTime MDN LargestContentfulPaint.loadTime documentation>
+getLoadTime :: (MonadDOM m) => LargestContentfulPaint -> m Double
+getLoadTime self = liftDOM (((self ^. js "loadTime") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/renderTime MDN LargestContentfulPaint.renderTime documentation>
+getRenderTime :: (MonadDOM m) => LargestContentfulPaint -> m Double
+getRenderTime self = liftDOM (((self ^. js "renderTime") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/size MDN LargestContentfulPaint.size documentation>
+getSize :: (MonadDOM m) => LargestContentfulPaint -> m Word
+getSize self = liftDOM ((P.round <$> ((self ^. js "size") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/id MDN LargestContentfulPaint.id documentation>
+getId :: (MonadDOM m, FromJSString result) => LargestContentfulPaint -> m result
+getId self = liftDOM (((self ^. js "id") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/url MDN LargestContentfulPaint.url documentation>
+getUrl :: (MonadDOM m, FromJSString result) => LargestContentfulPaint -> m result
+getUrl self = liftDOM (((self ^. js "url") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/element MDN LargestContentfulPaint.element documentation>
+getElement :: (MonadDOM m) => LargestContentfulPaint -> m (Maybe Element)
+getElement self = liftDOM (((self ^. js "element") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/LargestContentfulPaint/element MDN LargestContentfulPaint.element documentation>
+getElementUnsafe :: (MonadDOM m, HasCallStack) => LargestContentfulPaint -> m Element
+getElementUnsafe self = liftDOM ((((self ^. js "element") >>= 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 (((self ^. js "element") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/LinkStyle.hs b/src/JSDOM/Generated/LinkStyle.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/LinkStyle.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
+module JSDOM.Generated.LinkStyle
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toLinkStyle self) ^. js "sheet") >>= 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 (((((Types.toLinkStyle self) ^. js "sheet") >>= 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 ((((Types.toLinkStyle self) ^. js "sheet") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Location.hs b/src/JSDOM/Generated/Location.hs
--- a/src/JSDOM/Generated/Location.hs
+++ b/src/JSDOM/Generated/Location.hs
@@ -1,132 +1,100 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.Location
-       (assign, replace, reload, setHref, getHref, setProtocol,
-        getProtocol, setHost, getHost, setHostname, getHostname, setPort,
-        getPort, setPathname, getPathname, setSearch, getSearch, setHash,
-        getHash, getOrigin, getAncestorOrigins, Location(..),
-        gTypeLocation)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.assign Mozilla Location.assign documentation> 
+-- | <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 (self ^. jsf "assign" [toJSVal url]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.replace Mozilla Location.replace documentation> 
-replace :: (MonadDOM m, ToJSString url) => Location -> url -> m ()
-replace self url
-  = liftDOM (void (self ^. jsf "replace" [toJSVal url]))
+assign self url = liftDOM (void (self ^. jsf "assign" [toJSVal url]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.reload Mozilla Location.reload documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Location/reload MDN Location.reload documentation>
 reload :: (MonadDOM m) => Location -> m ()
 reload self = liftDOM (void (self ^. jsf "reload" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.href Mozilla Location.href documentation> 
+-- | <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 (self ^. jsf "replace" [toJSVal url]))
+
+-- | <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 (self ^. jss "href" (toJSVal val))
+setHref self val = liftDOM (void (self ^. jss "href" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.href Mozilla Location.href documentation> 
-getHref ::
-        (MonadDOM m, FromJSString result) => Location -> m result
-getHref self = liftDOM ((self ^. js "href") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Location/href MDN Location.href documentation>
+getHref :: (MonadDOM m, FromJSString result) => Location -> m result
+getHref self = liftDOM (((self ^. js "href") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.protocol Mozilla Location.protocol documentation> 
-setProtocol ::
-            (MonadDOM m, ToJSString val) => Location -> val -> m ()
-setProtocol self val
-  = liftDOM (self ^. jss "protocol" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/Location/origin MDN Location.origin documentation>
+getOrigin :: (MonadDOM m, FromJSString result) => Location -> m result
+getOrigin self = liftDOM (((self ^. js "origin") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.protocol Mozilla Location.protocol documentation> 
-getProtocol ::
-            (MonadDOM m, FromJSString result) => Location -> m result
-getProtocol self
-  = liftDOM ((self ^. js "protocol") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "protocol" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.host Mozilla Location.host documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Location/protocol MDN Location.protocol documentation>
+getProtocol :: (MonadDOM m, FromJSString result) => Location -> m result
+getProtocol self = liftDOM (((self ^. js "protocol") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "host" (toJSVal val))
+setHost self val = liftDOM (void (self ^. jss "host" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.host Mozilla Location.host documentation> 
-getHost ::
-        (MonadDOM m, FromJSString result) => Location -> m result
-getHost self = liftDOM ((self ^. js "host") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Location/host MDN Location.host documentation>
+getHost :: (MonadDOM m, FromJSString result) => Location -> m result
+getHost self = liftDOM (((self ^. js "host") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.hostname Mozilla Location.hostname documentation> 
-setHostname ::
-            (MonadDOM m, ToJSString val) => Location -> val -> m ()
-setHostname self val
-  = liftDOM (self ^. jss "hostname" (toJSVal val))
+-- | <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 (self ^. jss "hostname" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.hostname Mozilla Location.hostname documentation> 
-getHostname ::
-            (MonadDOM m, FromJSString result) => Location -> m result
-getHostname self
-  = liftDOM ((self ^. js "hostname") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Location/hostname MDN Location.hostname documentation>
+getHostname :: (MonadDOM m, FromJSString result) => Location -> m result
+getHostname self = liftDOM (((self ^. js "hostname") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.port Mozilla Location.port documentation> 
+-- | <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 (self ^. jss "port" (toJSVal val))
+setPort self val = liftDOM (void (self ^. jss "port" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.port Mozilla Location.port documentation> 
-getPort ::
-        (MonadDOM m, FromJSString result) => Location -> m result
-getPort self = liftDOM ((self ^. js "port") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Location/port MDN Location.port documentation>
+getPort :: (MonadDOM m, FromJSString result) => Location -> m result
+getPort self = liftDOM (((self ^. js "port") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.pathname Mozilla Location.pathname documentation> 
-setPathname ::
-            (MonadDOM m, ToJSString val) => Location -> val -> m ()
-setPathname self val
-  = liftDOM (self ^. jss "pathname" (toJSVal val))
+-- | <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 (self ^. jss "pathname" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.pathname Mozilla Location.pathname documentation> 
-getPathname ::
-            (MonadDOM m, FromJSString result) => Location -> m result
-getPathname self
-  = liftDOM ((self ^. js "pathname") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Location/pathname MDN Location.pathname documentation>
+getPathname :: (MonadDOM m, FromJSString result) => Location -> m result
+getPathname self = liftDOM (((self ^. js "pathname") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.search Mozilla Location.search documentation> 
-setSearch ::
-          (MonadDOM m, ToJSString val) => Location -> val -> m ()
-setSearch self val = liftDOM (self ^. jss "search" (toJSVal val))
+-- | <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 (self ^. jss "search" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.search Mozilla Location.search documentation> 
-getSearch ::
-          (MonadDOM m, FromJSString result) => Location -> m result
-getSearch self
-  = liftDOM ((self ^. js "search") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Location/search MDN Location.search documentation>
+getSearch :: (MonadDOM m, FromJSString result) => Location -> m result
+getSearch self = liftDOM (((self ^. js "search") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.hash Mozilla Location.hash documentation> 
+-- | <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 (self ^. jss "hash" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.hash Mozilla Location.hash documentation> 
-getHash ::
-        (MonadDOM m, FromJSString result) => Location -> m result
-getHash self = liftDOM ((self ^. js "hash") >>= fromJSValUnchecked)
+setHash self val = liftDOM (void (self ^. jss "hash" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.origin Mozilla Location.origin documentation> 
-getOrigin ::
-          (MonadDOM m, FromJSString result) => Location -> m result
-getOrigin self
-  = liftDOM ((self ^. js "origin") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Location/hash MDN Location.hash documentation>
+getHash :: (MonadDOM m, FromJSString result) => Location -> m result
+getHash self = liftDOM (((self ^. js "hash") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.ancestorOrigins Mozilla Location.ancestorOrigins documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Location/ancestorOrigins MDN Location.ancestorOrigins documentation>
 getAncestorOrigins :: (MonadDOM m) => Location -> m DOMStringList
-getAncestorOrigins self
-  = liftDOM ((self ^. js "ancestorOrigins") >>= fromJSValUnchecked)
+getAncestorOrigins self = liftDOM (((self ^. js "ancestorOrigins") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Lock.hs b/src/JSDOM/Generated/Lock.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Lock.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-locks (webref). Do not edit.
+module JSDOM.Generated.Lock
+       (getName, getMode, Lock(..), gTypeLock)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Lock/name MDN Lock.name documentation>
+getName :: (MonadDOM m, FromJSString result) => Lock -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Lock/mode MDN Lock.mode documentation>
+getMode :: (MonadDOM m) => Lock -> m LockMode
+getMode self = liftDOM (((self ^. js "mode") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/LockGrantedCallback.hs b/src/JSDOM/Generated/LockGrantedCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/LockGrantedCallback.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-locks (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newLockGrantedCallback :: (MonadDOM m) => (Maybe Lock -> JSM ()) -> m LockGrantedCallback
+newLockGrantedCallback callback = liftDOM (LockGrantedCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (lock : _) -> do
+          lock' <- fromJSValUnchecked lock
+          callback lock'))
+
+newLockGrantedCallbackSync :: (MonadDOM m) => (Maybe Lock -> JSM ()) -> m LockGrantedCallback
+newLockGrantedCallbackSync callback = liftDOM (LockGrantedCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (lock : _) -> do
+          lock' <- fromJSValUnchecked lock
+          callback lock'))
+
+newLockGrantedCallbackAsync :: (MonadDOM m) => (Maybe Lock -> JSM ()) -> m LockGrantedCallback
+newLockGrantedCallbackAsync callback = liftDOM (LockGrantedCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (lock : _) -> do
+          lock' <- fromJSValUnchecked lock
+          callback lock'))
diff --git a/src/JSDOM/Generated/LockInfo.hs b/src/JSDOM/Generated/LockInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/LockInfo.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-locks (webref). Do not edit.
+module JSDOM.Generated.LockInfo
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/web-locks/#dictdef-lockinfo LockInfo specification>
+newLockInfo :: (MonadDOM m) => m LockInfo
+newLockInfo = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "name" (toJSVal val)))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-name LockInfo.name specification>
+getName :: (MonadDOM m, FromJSString result) => LockInfo -> m (Maybe result)
+getName self = liftDOM (((self ^. js "name") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-name LockInfo.name specification>
+getNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => LockInfo -> m result
+getNameUnsafe self = liftDOM ((((self ^. js "name") >>= fromMaybeJSString) >>= 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 (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-mode LockInfo.mode specification>
+setMode :: (MonadDOM m) => LockInfo -> LockMode -> m ()
+setMode self val = liftDOM (void (self ^. jss "mode" (toJSVal val)))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-mode LockInfo.mode specification>
+getMode :: (MonadDOM m) => LockInfo -> m (Maybe LockMode)
+getMode self = liftDOM (((self ^. js "mode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-mode LockInfo.mode specification>
+getModeUnsafe :: (MonadDOM m, HasCallStack) => LockInfo -> m LockMode
+getModeUnsafe self = liftDOM ((((self ^. js "mode") >>= 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 (((self ^. js "mode") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "clientId" (toJSVal val)))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-clientid LockInfo.clientId specification>
+getClientId :: (MonadDOM m, FromJSString result) => LockInfo -> m (Maybe result)
+getClientId self = liftDOM (((self ^. js "clientId") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockinfo-clientid LockInfo.clientId specification>
+getClientIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => LockInfo -> m result
+getClientIdUnsafe self = liftDOM ((((self ^. js "clientId") >>= fromMaybeJSString) >>= 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 (((self ^. js "clientId") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/LockManager.hs b/src/JSDOM/Generated/LockManager.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/LockManager.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-locks (webref). Do not edit.
+module JSDOM.Generated.LockManager
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/LockManager/query MDN LockManager.query documentation>
+query :: (MonadDOM m) => LockManager -> m LockManagerSnapshot
+query self = liftDOM (((((self ^. jsf "query" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/LockManager/query MDN LockManager.query documentation>
+query_ :: (MonadDOM m) => LockManager -> m ()
+query_ self = liftDOM (void (((self ^. jsf "query" ()) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "request" [toJSVal name, toJSVal callback']) >>= readPromise))
+
+-- | <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 (((self ^. jsf "request" [toJSVal name, toJSVal callback']) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "request" [toJSVal name, toJSVal options, toJSVal callback']) >>= readPromise))
+
+-- | <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 (((self ^. jsf "request" [toJSVal name, toJSVal options, toJSVal callback']) >>= readPromise)))
diff --git a/src/JSDOM/Generated/LockManagerSnapshot.hs b/src/JSDOM/Generated/LockManagerSnapshot.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/LockManagerSnapshot.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-locks (webref). Do not edit.
+module JSDOM.Generated.LockManagerSnapshot
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/web-locks/#dictdef-lockmanagersnapshot LockManagerSnapshot specification>
+newLockManagerSnapshot :: (MonadDOM m) => m LockManagerSnapshot
+newLockManagerSnapshot = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockmanagersnapshot-held LockManagerSnapshot.held specification>
+setHeld :: (MonadDOM m) => LockManagerSnapshot -> [LockInfo] -> m ()
+setHeld self val = liftDOM (void (self ^. jss "held" (toJSVal val)))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockmanagersnapshot-held LockManagerSnapshot.held specification>
+getHeld :: (MonadDOM m) => LockManagerSnapshot -> m (Maybe [LockInfo])
+getHeld self = liftDOM (((self ^. js "held") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockmanagersnapshot-held LockManagerSnapshot.held specification>
+getHeldUnsafe :: (MonadDOM m, HasCallStack) => LockManagerSnapshot -> m [LockInfo]
+getHeldUnsafe self = liftDOM ((((self ^. js "held") >>= 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 (((self ^. js "held") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockmanagersnapshot-pending LockManagerSnapshot.pending specification>
+setPending :: (MonadDOM m) => LockManagerSnapshot -> [LockInfo] -> m ()
+setPending self val = liftDOM (void (self ^. jss "pending" (toJSVal val)))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockmanagersnapshot-pending LockManagerSnapshot.pending specification>
+getPending :: (MonadDOM m) => LockManagerSnapshot -> m (Maybe [LockInfo])
+getPending self = liftDOM (((self ^. js "pending") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockmanagersnapshot-pending LockManagerSnapshot.pending specification>
+getPendingUnsafe :: (MonadDOM m, HasCallStack) => LockManagerSnapshot -> m [LockInfo]
+getPendingUnsafe self = liftDOM ((((self ^. js "pending") >>= 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 (((self ^. js "pending") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/LockOptions.hs b/src/JSDOM/Generated/LockOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/LockOptions.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-locks (webref). Do not edit.
+module JSDOM.Generated.LockOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/web-locks/#dictdef-lockoptions LockOptions specification>
+newLockOptions :: (MonadDOM m) => m LockOptions
+newLockOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-mode LockOptions.mode specification>
+setMode :: (MonadDOM m) => LockOptions -> LockMode -> m ()
+setMode self val = liftDOM (void (self ^. jss "mode" (toJSVal val)))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-mode LockOptions.mode specification>
+getMode :: (MonadDOM m) => LockOptions -> m (Maybe LockMode)
+getMode self = liftDOM (((self ^. js "mode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-mode LockOptions.mode specification>
+getModeUnsafe :: (MonadDOM m, HasCallStack) => LockOptions -> m LockMode
+getModeUnsafe self = liftDOM ((((self ^. js "mode") >>= 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 (((self ^. js "mode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-ifavailable LockOptions.ifAvailable specification>
+setIfAvailable :: (MonadDOM m) => LockOptions -> Bool -> m ()
+setIfAvailable self val = liftDOM (void (self ^. jss "ifAvailable" (toJSVal val)))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-ifavailable LockOptions.ifAvailable specification>
+getIfAvailable :: (MonadDOM m) => LockOptions -> m (Maybe Bool)
+getIfAvailable self = liftDOM (((self ^. js "ifAvailable") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-ifavailable LockOptions.ifAvailable specification>
+getIfAvailableUnsafe :: (MonadDOM m, HasCallStack) => LockOptions -> m Bool
+getIfAvailableUnsafe self = liftDOM ((((self ^. js "ifAvailable") >>= 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 (((self ^. js "ifAvailable") >>= valToBool))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-steal LockOptions.steal specification>
+setSteal :: (MonadDOM m) => LockOptions -> Bool -> m ()
+setSteal self val = liftDOM (void (self ^. jss "steal" (toJSVal val)))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-steal LockOptions.steal specification>
+getSteal :: (MonadDOM m) => LockOptions -> m (Maybe Bool)
+getSteal self = liftDOM (((self ^. js "steal") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-steal LockOptions.steal specification>
+getStealUnsafe :: (MonadDOM m, HasCallStack) => LockOptions -> m Bool
+getStealUnsafe self = liftDOM ((((self ^. js "steal") >>= 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 (((self ^. js "steal") >>= valToBool))
+
+-- | <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 (self ^. jss "signal" (toJSVal val)))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-signal LockOptions.signal specification>
+getSignal :: (MonadDOM m) => LockOptions -> m (Maybe AbortSignal)
+getSignal self = liftDOM (((self ^. js "signal") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-locks/#dom-lockoptions-signal LockOptions.signal specification>
+getSignalUnsafe :: (MonadDOM m, HasCallStack) => LockOptions -> m AbortSignal
+getSignalUnsafe self = liftDOM ((((self ^. js "signal") >>= 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 (((self ^. js "signal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MIDIAccess.hs b/src/JSDOM/Generated/MIDIAccess.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MIDIAccess.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module JSDOM.Generated.MIDIAccess
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIAccess/inputs MDN MIDIAccess.inputs documentation>
+getInputs :: (MonadDOM m) => MIDIAccess -> m MIDIInputMap
+getInputs self = liftDOM (((self ^. js "inputs") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIAccess/outputs MDN MIDIAccess.outputs documentation>
+getOutputs :: (MonadDOM m) => MIDIAccess -> m MIDIOutputMap
+getOutputs self = liftDOM (((self ^. js "outputs") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIAccess/sysexEnabled MDN MIDIAccess.sysexEnabled documentation>
+getSysexEnabled :: (MonadDOM m) => MIDIAccess -> m Bool
+getSysexEnabled self = liftDOM (((self ^. js "sysexEnabled") >>= valToBool))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midiaccess-onstatechange statechange event>
+statechange :: EventName MIDIAccess MIDIConnectionEvent
+statechange = unsafeEventName (toJSString "statechange")
diff --git a/src/JSDOM/Generated/MIDIConnectionEvent.hs b/src/JSDOM/Generated/MIDIConnectionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MIDIConnectionEvent.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module JSDOM.Generated.MIDIConnectionEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "MIDIConnectionEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIConnectionEvent/port MDN MIDIConnectionEvent.port documentation>
+getPort :: (MonadDOM m) => MIDIConnectionEvent -> m (Maybe MIDIPort)
+getPort self = liftDOM (((self ^. js "port") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIConnectionEvent/port MDN MIDIConnectionEvent.port documentation>
+getPortUnsafe :: (MonadDOM m, HasCallStack) => MIDIConnectionEvent -> m MIDIPort
+getPortUnsafe self = liftDOM ((((self ^. js "port") >>= 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 (((self ^. js "port") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MIDIConnectionEventInit.hs b/src/JSDOM/Generated/MIDIConnectionEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MIDIConnectionEventInit.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module JSDOM.Generated.MIDIConnectionEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midiconnectioneventinit MIDIConnectionEventInit specification>
+newMIDIConnectionEventInit :: (MonadDOM m) => m MIDIConnectionEventInit
+newMIDIConnectionEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "port" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midiconnectioneventinit-port MIDIConnectionEventInit.port specification>
+getPort :: (MonadDOM m) => MIDIConnectionEventInit -> m (Maybe MIDIPort)
+getPort self = liftDOM (((self ^. js "port") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midiconnectioneventinit-port MIDIConnectionEventInit.port specification>
+getPortUnsafe :: (MonadDOM m, HasCallStack) => MIDIConnectionEventInit -> m MIDIPort
+getPortUnsafe self = liftDOM ((((self ^. js "port") >>= 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 (((self ^. js "port") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MIDIInput.hs b/src/JSDOM/Generated/MIDIInput.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MIDIInput.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.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/JSDOM/Generated/MIDIInputMap.hs b/src/JSDOM/Generated/MIDIInputMap.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MIDIInputMap.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module JSDOM.Generated.MIDIInputMap
+       (MIDIInputMap(..), gTypeMIDIInputMap)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/MIDIMessageEvent.hs b/src/JSDOM/Generated/MIDIMessageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MIDIMessageEvent.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module JSDOM.Generated.MIDIMessageEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "MIDIMessageEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIMessageEvent/data MDN MIDIMessageEvent.data documentation>
+getData :: (MonadDOM m) => MIDIMessageEvent -> m (Maybe Uint8Array)
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIMessageEvent/data MDN MIDIMessageEvent.data documentation>
+getDataUnsafe :: (MonadDOM m, HasCallStack) => MIDIMessageEvent -> m Uint8Array
+getDataUnsafe self = liftDOM ((((self ^. js "data") >>= 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 (((self ^. js "data") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MIDIMessageEventInit.hs b/src/JSDOM/Generated/MIDIMessageEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MIDIMessageEventInit.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module JSDOM.Generated.MIDIMessageEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midimessageeventinit MIDIMessageEventInit specification>
+newMIDIMessageEventInit :: (MonadDOM m) => m MIDIMessageEventInit
+newMIDIMessageEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "data" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midimessageeventinit-data MIDIMessageEventInit.data specification>
+getData :: (MonadDOM m) => MIDIMessageEventInit -> m (Maybe Uint8Array)
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midimessageeventinit-data MIDIMessageEventInit.data specification>
+getDataUnsafe :: (MonadDOM m, HasCallStack) => MIDIMessageEventInit -> m Uint8Array
+getDataUnsafe self = liftDOM ((((self ^. js "data") >>= 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 (((self ^. js "data") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MIDIOptions.hs b/src/JSDOM/Generated/MIDIOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MIDIOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module JSDOM.Generated.MIDIOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midioptions MIDIOptions specification>
+newMIDIOptions :: (MonadDOM m) => m MIDIOptions
+newMIDIOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midioptions-sysex MIDIOptions.sysex specification>
+setSysex :: (MonadDOM m) => MIDIOptions -> Bool -> m ()
+setSysex self val = liftDOM (void (self ^. jss "sysex" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midioptions-sysex MIDIOptions.sysex specification>
+getSysex :: (MonadDOM m) => MIDIOptions -> m (Maybe Bool)
+getSysex self = liftDOM (((self ^. js "sysex") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midioptions-sysex MIDIOptions.sysex specification>
+getSysexUnsafe :: (MonadDOM m, HasCallStack) => MIDIOptions -> m Bool
+getSysexUnsafe self = liftDOM ((((self ^. js "sysex") >>= 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 (((self ^. js "sysex") >>= valToBool))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midioptions-software MIDIOptions.software specification>
+setSoftware :: (MonadDOM m) => MIDIOptions -> Bool -> m ()
+setSoftware self val = liftDOM (void (self ^. jss "software" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midioptions-software MIDIOptions.software specification>
+getSoftware :: (MonadDOM m) => MIDIOptions -> m (Maybe Bool)
+getSoftware self = liftDOM (((self ^. js "software") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-midi-api/#dom-midioptions-software MIDIOptions.software specification>
+getSoftwareUnsafe :: (MonadDOM m, HasCallStack) => MIDIOptions -> m Bool
+getSoftwareUnsafe self = liftDOM ((((self ^. js "software") >>= 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 (((self ^. js "software") >>= valToBool))
diff --git a/src/JSDOM/Generated/MIDIOutput.hs b/src/JSDOM/Generated/MIDIOutput.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MIDIOutput.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module JSDOM.Generated.MIDIOutput
+       (send, MIDIOutput(..), gTypeMIDIOutput)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "send" [toJSVal data', P.maybe (P.return jsUndefined) toJSVal timestamp]))
diff --git a/src/JSDOM/Generated/MIDIOutputMap.hs b/src/JSDOM/Generated/MIDIOutputMap.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MIDIOutputMap.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module JSDOM.Generated.MIDIOutputMap
+       (MIDIOutputMap(..), gTypeMIDIOutputMap)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/MIDIPort.hs b/src/JSDOM/Generated/MIDIPort.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MIDIPort.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webmidi (webref). Do not edit.
+module JSDOM.Generated.MIDIPort
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/close MDN MIDIPort.close documentation>
+close :: (MonadDOM m, IsMIDIPort self) => self -> m MIDIPort
+close self = liftDOM ((((((Types.toMIDIPort self) ^. jsf "close" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/close MDN MIDIPort.close documentation>
+close_ :: (MonadDOM m, IsMIDIPort self) => self -> m ()
+close_ self = liftDOM (void ((((Types.toMIDIPort self) ^. jsf "close" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/open MDN MIDIPort.open documentation>
+open :: (MonadDOM m, IsMIDIPort self) => self -> m MIDIPort
+open self = liftDOM ((((((Types.toMIDIPort self) ^. jsf "open" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/open MDN MIDIPort.open documentation>
+open_ :: (MonadDOM m, IsMIDIPort self) => self -> m ()
+open_ self = liftDOM (void ((((Types.toMIDIPort self) ^. jsf "open" ()) >>= readPromise)))
+
+-- | <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 ((((Types.toMIDIPort self) ^. js "id") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toMIDIPort self) ^. js "manufacturer") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toMIDIPort self) ^. js "manufacturer") >>= fromMaybeJSString) >>= 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 ((((Types.toMIDIPort self) ^. js "manufacturer") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toMIDIPort self) ^. js "name") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toMIDIPort self) ^. js "name") >>= fromMaybeJSString) >>= 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 ((((Types.toMIDIPort self) ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/type MDN MIDIPort.type documentation>
+getType :: (MonadDOM m, IsMIDIPort self) => self -> m MIDIPortType
+getType self = liftDOM ((((Types.toMIDIPort self) ^. js "type") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toMIDIPort self) ^. js "version") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toMIDIPort self) ^. js "version") >>= fromMaybeJSString) >>= 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 ((((Types.toMIDIPort self) ^. js "version") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/state MDN MIDIPort.state documentation>
+getState :: (MonadDOM m, IsMIDIPort self) => self -> m MIDIPortDeviceState
+getState self = liftDOM ((((Types.toMIDIPort self) ^. js "state") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MIDIPort/connection MDN MIDIPort.connection documentation>
+getConnection :: (MonadDOM m, IsMIDIPort self) => self -> m MIDIPortConnectionState
+getConnection self = liftDOM ((((Types.toMIDIPort self) ^. js "connection") >>= 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/JSDOM/Generated/MathMLElement.hs b/src/JSDOM/Generated/MathMLElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MathMLElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mathml-core (webref). Do not edit.
+module JSDOM.Generated.MathMLElement
+       (MathMLElement(..), gTypeMathMLElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/MediaCapabilities.hs b/src/JSDOM/Generated/MediaCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaCapabilities.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module JSDOM.Generated.MediaCapabilities
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaCapabilities/decodingInfo MDN MediaCapabilities.decodingInfo documentation>
+decodingInfo :: (MonadDOM m) => MediaCapabilities -> MediaDecodingConfiguration -> m MediaCapabilitiesDecodingInfo
+decodingInfo self configuration = liftDOM (((((self ^. jsf "decodingInfo" [toJSVal configuration]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaCapabilities/decodingInfo MDN MediaCapabilities.decodingInfo documentation>
+decodingInfo_ :: (MonadDOM m) => MediaCapabilities -> MediaDecodingConfiguration -> m ()
+decodingInfo_ self configuration = liftDOM (void (((self ^. jsf "decodingInfo" [toJSVal configuration]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaCapabilities/encodingInfo MDN MediaCapabilities.encodingInfo documentation>
+encodingInfo :: (MonadDOM m) => MediaCapabilities -> MediaEncodingConfiguration -> m MediaCapabilitiesEncodingInfo
+encodingInfo self configuration = liftDOM (((((self ^. jsf "encodingInfo" [toJSVal configuration]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaCapabilities/encodingInfo MDN MediaCapabilities.encodingInfo documentation>
+encodingInfo_ :: (MonadDOM m) => MediaCapabilities -> MediaEncodingConfiguration -> m ()
+encodingInfo_ self configuration = liftDOM (void (((self ^. jsf "encodingInfo" [toJSVal configuration]) >>= readPromise)))
diff --git a/src/JSDOM/Generated/MediaCapabilitiesDecodingInfo.hs b/src/JSDOM/Generated/MediaCapabilitiesDecodingInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaCapabilitiesDecodingInfo.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module JSDOM.Generated.MediaCapabilitiesDecodingInfo
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "supported" (toJSVal supported)) P.>> (o ^. jss "smooth" (toJSVal smooth)) P.>> (o ^. jss "powerEfficient" (toJSVal powerEfficient)) P.>> (o ^. jss "keySystemAccess" (toJSVal keySystemAccess)) P.>> (o ^. jss "configuration" (toJSVal configuration)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesdecodinginfo-keysystemaccess MediaCapabilitiesDecodingInfo.keySystemAccess specification>
+setKeySystemAccess :: (MonadDOM m) => MediaCapabilitiesDecodingInfo -> Maybe MediaKeySystemAccess -> m ()
+setKeySystemAccess self val = liftDOM (void (self ^. jss "keySystemAccess" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesdecodinginfo-keysystemaccess MediaCapabilitiesDecodingInfo.keySystemAccess specification>
+getKeySystemAccess :: (MonadDOM m) => MediaCapabilitiesDecodingInfo -> m (Maybe MediaKeySystemAccess)
+getKeySystemAccess self = liftDOM (((self ^. js "keySystemAccess") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesdecodinginfo-keysystemaccess MediaCapabilitiesDecodingInfo.keySystemAccess specification>
+getKeySystemAccessUnsafe :: (MonadDOM m, HasCallStack) => MediaCapabilitiesDecodingInfo -> m MediaKeySystemAccess
+getKeySystemAccessUnsafe self = liftDOM ((((self ^. js "keySystemAccess") >>= 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 (((self ^. js "keySystemAccess") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesdecodinginfo-configuration MediaCapabilitiesDecodingInfo.configuration specification>
+setConfiguration :: (MonadDOM m) => MediaCapabilitiesDecodingInfo -> MediaDecodingConfiguration -> m ()
+setConfiguration self val = liftDOM (void (self ^. jss "configuration" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesdecodinginfo-configuration MediaCapabilitiesDecodingInfo.configuration specification>
+getConfiguration :: (MonadDOM m) => MediaCapabilitiesDecodingInfo -> m MediaDecodingConfiguration
+getConfiguration self = liftDOM (((self ^. js "configuration") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaCapabilitiesEncodingInfo.hs b/src/JSDOM/Generated/MediaCapabilitiesEncodingInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaCapabilitiesEncodingInfo.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module JSDOM.Generated.MediaCapabilitiesEncodingInfo
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "supported" (toJSVal supported)) P.>> (o ^. jss "smooth" (toJSVal smooth)) P.>> (o ^. jss "powerEfficient" (toJSVal powerEfficient)) P.>> (o ^. jss "configuration" (toJSVal configuration)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesencodinginfo-configuration MediaCapabilitiesEncodingInfo.configuration specification>
+setConfiguration :: (MonadDOM m) => MediaCapabilitiesEncodingInfo -> MediaEncodingConfiguration -> m ()
+setConfiguration self val = liftDOM (void (self ^. jss "configuration" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesencodinginfo-configuration MediaCapabilitiesEncodingInfo.configuration specification>
+getConfiguration :: (MonadDOM m) => MediaCapabilitiesEncodingInfo -> m MediaEncodingConfiguration
+getConfiguration self = liftDOM (((self ^. js "configuration") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaCapabilitiesInfo.hs b/src/JSDOM/Generated/MediaCapabilitiesInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaCapabilitiesInfo.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module JSDOM.Generated.MediaCapabilitiesInfo
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/media-capabilities/#dictdef-mediacapabilitiesinfo MediaCapabilitiesInfo specification>
+newMediaCapabilitiesInfo :: (MonadDOM m) => Bool -> Bool -> Bool -> m MediaCapabilitiesInfo
+newMediaCapabilitiesInfo supported smooth powerEfficient = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "supported" (toJSVal supported)) P.>> (o ^. jss "smooth" (toJSVal smooth)) P.>> (o ^. jss "powerEfficient" (toJSVal powerEfficient)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaCapabilitiesInfo self) ^. jss "supported" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesinfo-supported MediaCapabilitiesInfo.supported specification>
+getSupported :: (MonadDOM m, IsMediaCapabilitiesInfo self) => self -> m Bool
+getSupported self = liftDOM ((((Types.toMediaCapabilitiesInfo self) ^. js "supported") >>= valToBool))
+
+-- | <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 ((Types.toMediaCapabilitiesInfo self) ^. jss "smooth" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesinfo-smooth MediaCapabilitiesInfo.smooth specification>
+getSmooth :: (MonadDOM m, IsMediaCapabilitiesInfo self) => self -> m Bool
+getSmooth self = liftDOM ((((Types.toMediaCapabilitiesInfo self) ^. js "smooth") >>= valToBool))
+
+-- | <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 ((Types.toMediaCapabilitiesInfo self) ^. jss "powerEfficient" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitiesinfo-powerefficient MediaCapabilitiesInfo.powerEfficient specification>
+getPowerEfficient :: (MonadDOM m, IsMediaCapabilitiesInfo self) => self -> m Bool
+getPowerEfficient self = liftDOM ((((Types.toMediaCapabilitiesInfo self) ^. js "powerEfficient") >>= valToBool))
diff --git a/src/JSDOM/Generated/MediaCapabilitiesKeySystemConfiguration.hs b/src/JSDOM/Generated/MediaCapabilitiesKeySystemConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaCapabilitiesKeySystemConfiguration.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module JSDOM.Generated.MediaCapabilitiesKeySystemConfiguration
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/media-capabilities/#dictdef-mediacapabilitieskeysystemconfiguration MediaCapabilitiesKeySystemConfiguration specification>
+newMediaCapabilitiesKeySystemConfiguration :: (MonadDOM m, ToJSString keySystem) => keySystem -> m MediaCapabilitiesKeySystemConfiguration
+newMediaCapabilitiesKeySystemConfiguration keySystem = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "keySystem" (toJSVal keySystem)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "keySystem" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-keysystem MediaCapabilitiesKeySystemConfiguration.keySystem specification>
+getKeySystem :: (MonadDOM m, FromJSString result) => MediaCapabilitiesKeySystemConfiguration -> m result
+getKeySystem self = liftDOM (((self ^. js "keySystem") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "initDataType" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-initdatatype MediaCapabilitiesKeySystemConfiguration.initDataType specification>
+getInitDataType :: (MonadDOM m, FromJSString result) => MediaCapabilitiesKeySystemConfiguration -> m (Maybe result)
+getInitDataType self = liftDOM (((self ^. js "initDataType") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-initdatatype MediaCapabilitiesKeySystemConfiguration.initDataType specification>
+getInitDataTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaCapabilitiesKeySystemConfiguration -> m result
+getInitDataTypeUnsafe self = liftDOM ((((self ^. js "initDataType") >>= fromMaybeJSString) >>= 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 (((self ^. js "initDataType") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-distinctiveidentifier MediaCapabilitiesKeySystemConfiguration.distinctiveIdentifier specification>
+setDistinctiveIdentifier :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> MediaKeysRequirement -> m ()
+setDistinctiveIdentifier self val = liftDOM (void (self ^. jss "distinctiveIdentifier" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-distinctiveidentifier MediaCapabilitiesKeySystemConfiguration.distinctiveIdentifier specification>
+getDistinctiveIdentifier :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> m (Maybe MediaKeysRequirement)
+getDistinctiveIdentifier self = liftDOM (((self ^. js "distinctiveIdentifier") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-distinctiveidentifier MediaCapabilitiesKeySystemConfiguration.distinctiveIdentifier specification>
+getDistinctiveIdentifierUnsafe :: (MonadDOM m, HasCallStack) => MediaCapabilitiesKeySystemConfiguration -> m MediaKeysRequirement
+getDistinctiveIdentifierUnsafe self = liftDOM ((((self ^. js "distinctiveIdentifier") >>= 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 (((self ^. js "distinctiveIdentifier") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-persistentstate MediaCapabilitiesKeySystemConfiguration.persistentState specification>
+setPersistentState :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> MediaKeysRequirement -> m ()
+setPersistentState self val = liftDOM (void (self ^. jss "persistentState" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-persistentstate MediaCapabilitiesKeySystemConfiguration.persistentState specification>
+getPersistentState :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> m (Maybe MediaKeysRequirement)
+getPersistentState self = liftDOM (((self ^. js "persistentState") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-persistentstate MediaCapabilitiesKeySystemConfiguration.persistentState specification>
+getPersistentStateUnsafe :: (MonadDOM m, HasCallStack) => MediaCapabilitiesKeySystemConfiguration -> m MediaKeysRequirement
+getPersistentStateUnsafe self = liftDOM ((((self ^. js "persistentState") >>= 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 (((self ^. js "persistentState") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "sessionTypes" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-sessiontypes MediaCapabilitiesKeySystemConfiguration.sessionTypes specification>
+getSessionTypes :: (MonadDOM m, FromJSString result) => MediaCapabilitiesKeySystemConfiguration -> m (Maybe [result])
+getSessionTypes self = liftDOM (((self ^. js "sessionTypes") >>= 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 ((((self ^. js "sessionTypes") >>= 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 (((self ^. js "sessionTypes") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-audio MediaCapabilitiesKeySystemConfiguration.audio specification>
+setAudio :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> KeySystemTrackConfiguration -> m ()
+setAudio self val = liftDOM (void (self ^. jss "audio" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-audio MediaCapabilitiesKeySystemConfiguration.audio specification>
+getAudio :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> m (Maybe KeySystemTrackConfiguration)
+getAudio self = liftDOM (((self ^. js "audio") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-audio MediaCapabilitiesKeySystemConfiguration.audio specification>
+getAudioUnsafe :: (MonadDOM m, HasCallStack) => MediaCapabilitiesKeySystemConfiguration -> m KeySystemTrackConfiguration
+getAudioUnsafe self = liftDOM ((((self ^. js "audio") >>= 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 (((self ^. js "audio") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-video MediaCapabilitiesKeySystemConfiguration.video specification>
+setVideo :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> KeySystemTrackConfiguration -> m ()
+setVideo self val = liftDOM (void (self ^. jss "video" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-video MediaCapabilitiesKeySystemConfiguration.video specification>
+getVideo :: (MonadDOM m) => MediaCapabilitiesKeySystemConfiguration -> m (Maybe KeySystemTrackConfiguration)
+getVideo self = liftDOM (((self ^. js "video") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediacapabilitieskeysystemconfiguration-video MediaCapabilitiesKeySystemConfiguration.video specification>
+getVideoUnsafe :: (MonadDOM m, HasCallStack) => MediaCapabilitiesKeySystemConfiguration -> m KeySystemTrackConfiguration
+getVideoUnsafe self = liftDOM ((((self ^. js "video") >>= 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 (((self ^. js "video") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaConfiguration.hs b/src/JSDOM/Generated/MediaConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaConfiguration.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module JSDOM.Generated.MediaConfiguration
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/media-capabilities/#dictdef-mediaconfiguration MediaConfiguration specification>
+newMediaConfiguration :: (MonadDOM m) => m MediaConfiguration
+newMediaConfiguration = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaConfiguration self) ^. jss "video" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediaconfiguration-video MediaConfiguration.video specification>
+getVideo :: (MonadDOM m, IsMediaConfiguration self) => self -> m (Maybe VideoConfiguration)
+getVideo self = liftDOM ((((Types.toMediaConfiguration self) ^. js "video") >>= 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 (((((Types.toMediaConfiguration self) ^. js "video") >>= 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 ((((Types.toMediaConfiguration self) ^. js "video") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaConfiguration self) ^. jss "audio" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediaconfiguration-audio MediaConfiguration.audio specification>
+getAudio :: (MonadDOM m, IsMediaConfiguration self) => self -> m (Maybe AudioConfiguration)
+getAudio self = liftDOM ((((Types.toMediaConfiguration self) ^. js "audio") >>= 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 (((((Types.toMediaConfiguration self) ^. js "audio") >>= 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 ((((Types.toMediaConfiguration self) ^. js "audio") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaController.hs b/src/JSDOM/Generated/MediaController.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/MediaController.hs
+++ /dev/null
@@ -1,121 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.MediaController
-       (newMediaController, play, pause, unpause, getBuffered,
-        getSeekable, getDuration, setCurrentTime, getCurrentTime,
-        getPaused, getPlayed, getPlaybackState, setDefaultPlaybackRate,
-        getDefaultPlaybackRate, setPlaybackRate, getPlaybackRate,
-        setVolume, getVolume, setMuted, getMuted, MediaController(..),
-        gTypeMediaController)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController Mozilla MediaController documentation> 
-newMediaController :: (MonadDOM m) => m MediaController
-newMediaController
-  = liftDOM (MediaController <$> new (jsg "MediaController") ())
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.play Mozilla MediaController.play documentation> 
-play :: (MonadDOM m) => MediaController -> m ()
-play self = liftDOM (void (self ^. jsf "play" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.pause Mozilla MediaController.pause documentation> 
-pause :: (MonadDOM m) => MediaController -> m ()
-pause self = liftDOM (void (self ^. jsf "pause" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.unpause Mozilla MediaController.unpause documentation> 
-unpause :: (MonadDOM m) => MediaController -> m ()
-unpause self = liftDOM (void (self ^. jsf "unpause" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.buffered Mozilla MediaController.buffered documentation> 
-getBuffered :: (MonadDOM m) => MediaController -> m TimeRanges
-getBuffered self
-  = liftDOM ((self ^. js "buffered") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.seekable Mozilla MediaController.seekable documentation> 
-getSeekable :: (MonadDOM m) => MediaController -> m TimeRanges
-getSeekable self
-  = liftDOM ((self ^. js "seekable") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.duration Mozilla MediaController.duration documentation> 
-getDuration :: (MonadDOM m) => MediaController -> m Double
-getDuration self
-  = liftDOM ((self ^. js "duration") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.currentTime Mozilla MediaController.currentTime documentation> 
-setCurrentTime :: (MonadDOM m) => MediaController -> Double -> m ()
-setCurrentTime self val
-  = liftDOM (self ^. jss "currentTime" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.currentTime Mozilla MediaController.currentTime documentation> 
-getCurrentTime :: (MonadDOM m) => MediaController -> m Double
-getCurrentTime self
-  = liftDOM ((self ^. js "currentTime") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.paused Mozilla MediaController.paused documentation> 
-getPaused :: (MonadDOM m) => MediaController -> m Bool
-getPaused self = liftDOM ((self ^. js "paused") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.played Mozilla MediaController.played documentation> 
-getPlayed :: (MonadDOM m) => MediaController -> m TimeRanges
-getPlayed self
-  = liftDOM ((self ^. js "played") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.playbackState Mozilla MediaController.playbackState documentation> 
-getPlaybackState ::
-                 (MonadDOM m, FromJSString result) => MediaController -> m result
-getPlaybackState self
-  = liftDOM ((self ^. js "playbackState") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.defaultPlaybackRate Mozilla MediaController.defaultPlaybackRate documentation> 
-setDefaultPlaybackRate ::
-                       (MonadDOM m) => MediaController -> Double -> m ()
-setDefaultPlaybackRate self val
-  = liftDOM (self ^. jss "defaultPlaybackRate" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.defaultPlaybackRate Mozilla MediaController.defaultPlaybackRate documentation> 
-getDefaultPlaybackRate ::
-                       (MonadDOM m) => MediaController -> m Double
-getDefaultPlaybackRate self
-  = liftDOM ((self ^. js "defaultPlaybackRate") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.playbackRate Mozilla MediaController.playbackRate documentation> 
-setPlaybackRate ::
-                (MonadDOM m) => MediaController -> Double -> m ()
-setPlaybackRate self val
-  = liftDOM (self ^. jss "playbackRate" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.playbackRate Mozilla MediaController.playbackRate documentation> 
-getPlaybackRate :: (MonadDOM m) => MediaController -> m Double
-getPlaybackRate self
-  = liftDOM ((self ^. js "playbackRate") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.volume Mozilla MediaController.volume documentation> 
-setVolume :: (MonadDOM m) => MediaController -> Double -> m ()
-setVolume self val = liftDOM (self ^. jss "volume" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.volume Mozilla MediaController.volume documentation> 
-getVolume :: (MonadDOM m) => MediaController -> m Double
-getVolume self = liftDOM ((self ^. js "volume") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.muted Mozilla MediaController.muted documentation> 
-setMuted :: (MonadDOM m) => MediaController -> Bool -> m ()
-setMuted self val = liftDOM (self ^. jss "muted" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.muted Mozilla MediaController.muted documentation> 
-getMuted :: (MonadDOM m) => MediaController -> m Bool
-getMuted self = liftDOM ((self ^. js "muted") >>= valToBool)
diff --git a/src/JSDOM/Generated/MediaControlsHost.hs b/src/JSDOM/Generated/MediaControlsHost.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/MediaControlsHost.hs
+++ /dev/null
@@ -1,242 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.MediaControlsHost
-       (sortedTrackListForMenu, sortedTrackListForMenu_,
-        sortedTrackListForMenuAudio, sortedTrackListForMenuAudio_,
-        displayNameForTrack, displayNameForTrack_, setSelectedTextTrack,
-        setPreparedToReturnVideoLayerToInline, updateTextTrackContainer,
-        enteredFullscreen, exitedFullscreen, generateUUID, generateUUID_,
-        base64StringForIconNameAndType, base64StringForIconNameAndType_,
-        getCaptionMenuOffItem, getCaptionMenuAutomaticItem,
-        getCaptionDisplayMode, getTextTrackContainer,
-        getAllowsInlineMediaPlayback, getSupportsFullscreen,
-        getIsVideoLayerInline, getUserGestureRequired,
-        getIsInMediaDocument, getShouldForceControlsDisplay,
-        getExternalDeviceDisplayName, getExternalDeviceType,
-        setControlsDependOnPageScaleFactor,
-        getControlsDependOnPageScaleFactor, getShadowRootCSSText,
-        MediaControlsHost(..), gTypeMediaControlsHost)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
-sortedTrackListForMenu ::
-                       (MonadDOM m) => MediaControlsHost -> TextTrackList -> m [TextTrack]
-sortedTrackListForMenu self trackList
-  = liftDOM
-      ((self ^. jsf "sortedTrackListForMenu" [toJSVal trackList]) >>=
-         fromJSArrayUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
-sortedTrackListForMenu_ ::
-                        (MonadDOM m) => MediaControlsHost -> TextTrackList -> m ()
-sortedTrackListForMenu_ self trackList
-  = liftDOM
-      (void (self ^. jsf "sortedTrackListForMenu" [toJSVal trackList]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
-sortedTrackListForMenuAudio ::
-                            (MonadDOM m) =>
-                              MediaControlsHost -> AudioTrackList -> m [AudioTrack]
-sortedTrackListForMenuAudio self trackList
-  = liftDOM
-      ((self ^. jsf "sortedTrackListForMenu" [toJSVal trackList]) >>=
-         fromJSArrayUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
-sortedTrackListForMenuAudio_ ::
-                             (MonadDOM m) => MediaControlsHost -> AudioTrackList -> m ()
-sortedTrackListForMenuAudio_ self trackList
-  = liftDOM
-      (void (self ^. jsf "sortedTrackListForMenu" [toJSVal trackList]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.displayNameForTrack Mozilla MediaControlsHost.displayNameForTrack documentation> 
-displayNameForTrack ::
-                    (MonadDOM m, IsTrack track, FromJSString result) =>
-                      MediaControlsHost -> Maybe track -> m result
-displayNameForTrack self track
-  = liftDOM
-      ((self ^. jsf "displayNameForTrack" [toJSVal track]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.displayNameForTrack Mozilla MediaControlsHost.displayNameForTrack documentation> 
-displayNameForTrack_ ::
-                     (MonadDOM m, IsTrack track) =>
-                       MediaControlsHost -> Maybe track -> m ()
-displayNameForTrack_ self track
-  = liftDOM
-      (void (self ^. jsf "displayNameForTrack" [toJSVal track]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.setSelectedTextTrack Mozilla MediaControlsHost.setSelectedTextTrack documentation> 
-setSelectedTextTrack ::
-                     (MonadDOM m) => MediaControlsHost -> Maybe TextTrack -> m ()
-setSelectedTextTrack self track
-  = liftDOM
-      (void (self ^. jsf "setSelectedTextTrack" [toJSVal track]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.setPreparedToReturnVideoLayerToInline Mozilla MediaControlsHost.setPreparedToReturnVideoLayerToInline documentation> 
-setPreparedToReturnVideoLayerToInline ::
-                                      (MonadDOM m) => MediaControlsHost -> Bool -> m ()
-setPreparedToReturnVideoLayerToInline self prepared
-  = liftDOM
-      (void
-         (self ^. jsf "setPreparedToReturnVideoLayerToInline"
-            [toJSVal prepared]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.updateTextTrackContainer Mozilla MediaControlsHost.updateTextTrackContainer documentation> 
-updateTextTrackContainer ::
-                         (MonadDOM m) => MediaControlsHost -> m ()
-updateTextTrackContainer self
-  = liftDOM (void (self ^. jsf "updateTextTrackContainer" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.enteredFullscreen Mozilla MediaControlsHost.enteredFullscreen documentation> 
-enteredFullscreen :: (MonadDOM m) => MediaControlsHost -> m ()
-enteredFullscreen self
-  = liftDOM (void (self ^. jsf "enteredFullscreen" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.exitedFullscreen Mozilla MediaControlsHost.exitedFullscreen documentation> 
-exitedFullscreen :: (MonadDOM m) => MediaControlsHost -> m ()
-exitedFullscreen self
-  = liftDOM (void (self ^. jsf "exitedFullscreen" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.generateUUID Mozilla MediaControlsHost.generateUUID documentation> 
-generateUUID ::
-             (MonadDOM m, FromJSString result) => MediaControlsHost -> m result
-generateUUID self
-  = liftDOM ((self ^. jsf "generateUUID" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.generateUUID Mozilla MediaControlsHost.generateUUID documentation> 
-generateUUID_ :: (MonadDOM m) => MediaControlsHost -> m ()
-generateUUID_ self = liftDOM (void (self ^. jsf "generateUUID" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.base64StringForIconNameAndType Mozilla MediaControlsHost.base64StringForIconNameAndType documentation> 
-base64StringForIconNameAndType ::
-                               (MonadDOM m, ToJSString iconName, ToJSString iconType,
-                                FromJSString result) =>
-                                 MediaControlsHost -> iconName -> iconType -> m result
-base64StringForIconNameAndType self iconName iconType
-  = liftDOM
-      ((self ^. jsf "base64StringForIconNameAndType"
-          [toJSVal iconName, toJSVal iconType])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.base64StringForIconNameAndType Mozilla MediaControlsHost.base64StringForIconNameAndType documentation> 
-base64StringForIconNameAndType_ ::
-                                (MonadDOM m, ToJSString iconName, ToJSString iconType) =>
-                                  MediaControlsHost -> iconName -> iconType -> m ()
-base64StringForIconNameAndType_ self iconName iconType
-  = liftDOM
-      (void
-         (self ^. jsf "base64StringForIconNameAndType"
-            [toJSVal iconName, toJSVal iconType]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionMenuOffItem Mozilla MediaControlsHost.captionMenuOffItem documentation> 
-getCaptionMenuOffItem ::
-                      (MonadDOM m) => MediaControlsHost -> m TextTrack
-getCaptionMenuOffItem self
-  = liftDOM
-      ((self ^. js "captionMenuOffItem") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionMenuAutomaticItem Mozilla MediaControlsHost.captionMenuAutomaticItem documentation> 
-getCaptionMenuAutomaticItem ::
-                            (MonadDOM m) => MediaControlsHost -> m TextTrack
-getCaptionMenuAutomaticItem self
-  = liftDOM
-      ((self ^. js "captionMenuAutomaticItem") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionDisplayMode Mozilla MediaControlsHost.captionDisplayMode documentation> 
-getCaptionDisplayMode ::
-                      (MonadDOM m, FromJSString result) => MediaControlsHost -> m result
-getCaptionDisplayMode self
-  = liftDOM
-      ((self ^. js "captionDisplayMode") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.textTrackContainer Mozilla MediaControlsHost.textTrackContainer documentation> 
-getTextTrackContainer ::
-                      (MonadDOM m) => MediaControlsHost -> m HTMLElement
-getTextTrackContainer self
-  = liftDOM
-      ((self ^. js "textTrackContainer") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.allowsInlineMediaPlayback Mozilla MediaControlsHost.allowsInlineMediaPlayback documentation> 
-getAllowsInlineMediaPlayback ::
-                             (MonadDOM m) => MediaControlsHost -> m Bool
-getAllowsInlineMediaPlayback self
-  = liftDOM ((self ^. js "allowsInlineMediaPlayback") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.supportsFullscreen Mozilla MediaControlsHost.supportsFullscreen documentation> 
-getSupportsFullscreen ::
-                      (MonadDOM m) => MediaControlsHost -> m Bool
-getSupportsFullscreen self
-  = liftDOM ((self ^. js "supportsFullscreen") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.isVideoLayerInline Mozilla MediaControlsHost.isVideoLayerInline documentation> 
-getIsVideoLayerInline ::
-                      (MonadDOM m) => MediaControlsHost -> m Bool
-getIsVideoLayerInline self
-  = liftDOM ((self ^. js "isVideoLayerInline") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.userGestureRequired Mozilla MediaControlsHost.userGestureRequired documentation> 
-getUserGestureRequired ::
-                       (MonadDOM m) => MediaControlsHost -> m Bool
-getUserGestureRequired self
-  = liftDOM ((self ^. js "userGestureRequired") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.isInMediaDocument Mozilla MediaControlsHost.isInMediaDocument documentation> 
-getIsInMediaDocument :: (MonadDOM m) => MediaControlsHost -> m Bool
-getIsInMediaDocument self
-  = liftDOM ((self ^. js "isInMediaDocument") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.shouldForceControlsDisplay Mozilla MediaControlsHost.shouldForceControlsDisplay documentation> 
-getShouldForceControlsDisplay ::
-                              (MonadDOM m) => MediaControlsHost -> m Bool
-getShouldForceControlsDisplay self
-  = liftDOM ((self ^. js "shouldForceControlsDisplay") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.externalDeviceDisplayName Mozilla MediaControlsHost.externalDeviceDisplayName documentation> 
-getExternalDeviceDisplayName ::
-                             (MonadDOM m, FromJSString result) => MediaControlsHost -> m result
-getExternalDeviceDisplayName self
-  = liftDOM
-      ((self ^. js "externalDeviceDisplayName") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.externalDeviceType Mozilla MediaControlsHost.externalDeviceType documentation> 
-getExternalDeviceType ::
-                      (MonadDOM m) => MediaControlsHost -> m DeviceType
-getExternalDeviceType self
-  = liftDOM
-      ((self ^. js "externalDeviceType") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.controlsDependOnPageScaleFactor Mozilla MediaControlsHost.controlsDependOnPageScaleFactor documentation> 
-setControlsDependOnPageScaleFactor ::
-                                   (MonadDOM m) => MediaControlsHost -> Bool -> m ()
-setControlsDependOnPageScaleFactor self val
-  = liftDOM
-      (self ^. jss "controlsDependOnPageScaleFactor" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.controlsDependOnPageScaleFactor Mozilla MediaControlsHost.controlsDependOnPageScaleFactor documentation> 
-getControlsDependOnPageScaleFactor ::
-                                   (MonadDOM m) => MediaControlsHost -> m Bool
-getControlsDependOnPageScaleFactor self
-  = liftDOM
-      ((self ^. js "controlsDependOnPageScaleFactor") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.shadowRootCSSText Mozilla MediaControlsHost.shadowRootCSSText documentation> 
-getShadowRootCSSText ::
-                     (MonadDOM m, FromJSString result) => MediaControlsHost -> m result
-getShadowRootCSSText self
-  = liftDOM ((self ^. js "shadowRootCSSText") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/MediaDecodingConfiguration.hs b/src/JSDOM/Generated/MediaDecodingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaDecodingConfiguration.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module JSDOM.Generated.MediaDecodingConfiguration
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/media-capabilities/#dictdef-mediadecodingconfiguration MediaDecodingConfiguration specification>
+newMediaDecodingConfiguration :: (MonadDOM m) => MediaDecodingType -> m MediaDecodingConfiguration
+newMediaDecodingConfiguration type' = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "type" (toJSVal type')) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediadecodingconfiguration-type MediaDecodingConfiguration.type specification>
+setType :: (MonadDOM m) => MediaDecodingConfiguration -> MediaDecodingType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediadecodingconfiguration-type MediaDecodingConfiguration.type specification>
+getType :: (MonadDOM m) => MediaDecodingConfiguration -> m MediaDecodingType
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediadecodingconfiguration-keysystemconfiguration MediaDecodingConfiguration.keySystemConfiguration specification>
+setKeySystemConfiguration :: (MonadDOM m) => MediaDecodingConfiguration -> MediaCapabilitiesKeySystemConfiguration -> m ()
+setKeySystemConfiguration self val = liftDOM (void (self ^. jss "keySystemConfiguration" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediadecodingconfiguration-keysystemconfiguration MediaDecodingConfiguration.keySystemConfiguration specification>
+getKeySystemConfiguration :: (MonadDOM m) => MediaDecodingConfiguration -> m (Maybe MediaCapabilitiesKeySystemConfiguration)
+getKeySystemConfiguration self = liftDOM (((self ^. js "keySystemConfiguration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediadecodingconfiguration-keysystemconfiguration MediaDecodingConfiguration.keySystemConfiguration specification>
+getKeySystemConfigurationUnsafe :: (MonadDOM m, HasCallStack) => MediaDecodingConfiguration -> m MediaCapabilitiesKeySystemConfiguration
+getKeySystemConfigurationUnsafe self = liftDOM ((((self ^. js "keySystemConfiguration") >>= 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 (((self ^. js "keySystemConfiguration") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaDeviceInfo.hs b/src/JSDOM/Generated/MediaDeviceInfo.hs
--- a/src/JSDOM/Generated/MediaDeviceInfo.hs
+++ b/src/JSDOM/Generated/MediaDeviceInfo.hs
@@ -1,55 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
 module JSDOM.Generated.MediaDeviceInfo
-       (newMediaDeviceInfo, getDeviceId, getKind, getLabel, getGroupId,
-        MediaDeviceInfo(..), gTypeMediaDeviceInfo)
+       (toJSON, toJSON_, getDeviceId, getKind, getLabel, getGroupId, MediaDeviceInfo(..), gTypeMediaDeviceInfo, IsMediaDeviceInfo, toMediaDeviceInfo)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo Mozilla MediaDeviceInfo documentation> 
-newMediaDeviceInfo ::
-                   (MonadDOM m, ToJSString deviceId, ToJSString label,
-                    ToJSString groupId) =>
-                     deviceId ->
-                       label -> groupId -> MediaDeviceKind -> m MediaDeviceInfo
-newMediaDeviceInfo deviceId label groupId kind
-  = liftDOM
-      (MediaDeviceInfo <$>
-         new (jsg "MediaDeviceInfo")
-           [toJSVal deviceId, toJSVal label, toJSVal groupId, toJSVal kind])
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDeviceInfo/toJSON MDN MediaDeviceInfo.toJSON documentation>
+toJSON :: (MonadDOM m, IsMediaDeviceInfo self) => self -> m GObject
+toJSON self = liftDOM ((((Types.toMediaDeviceInfo self) ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo.deviceId Mozilla MediaDeviceInfo.deviceId documentation> 
-getDeviceId ::
-            (MonadDOM m, FromJSString result) => MediaDeviceInfo -> m result
-getDeviceId self
-  = liftDOM ((self ^. js "deviceId") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDeviceInfo/toJSON MDN MediaDeviceInfo.toJSON documentation>
+toJSON_ :: (MonadDOM m, IsMediaDeviceInfo self) => self -> m ()
+toJSON_ self = liftDOM (void ((Types.toMediaDeviceInfo self) ^. jsf "toJSON" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo.kind Mozilla MediaDeviceInfo.kind documentation> 
-getKind :: (MonadDOM m) => MediaDeviceInfo -> m MediaDeviceKind
-getKind self = liftDOM ((self ^. js "kind") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toMediaDeviceInfo self) ^. js "deviceId") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo.label Mozilla MediaDeviceInfo.label documentation> 
-getLabel ::
-         (MonadDOM m, FromJSString result) => MediaDeviceInfo -> m result
-getLabel self
-  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDeviceInfo/kind MDN MediaDeviceInfo.kind documentation>
+getKind :: (MonadDOM m, IsMediaDeviceInfo self) => self -> m MediaDeviceKind
+getKind self = liftDOM ((((Types.toMediaDeviceInfo self) ^. js "kind") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo.groupId Mozilla MediaDeviceInfo.groupId documentation> 
-getGroupId ::
-           (MonadDOM m, FromJSString result) => MediaDeviceInfo -> m result
-getGroupId self
-  = liftDOM ((self ^. js "groupId") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toMediaDeviceInfo self) ^. js "label") >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toMediaDeviceInfo self) ^. js "groupId") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaDevices.hs b/src/JSDOM/Generated/MediaDevices.hs
--- a/src/JSDOM/Generated/MediaDevices.hs
+++ b/src/JSDOM/Generated/MediaDevices.hs
@@ -1,68 +1,52 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
 module JSDOM.Generated.MediaDevices
-       (enumerateDevices, enumerateDevices_, getSupportedConstraints,
-        getSupportedConstraints_, getUserMedia, getUserMedia_,
-        devicechange, MediaDevices(..), gTypeMediaDevices)
+       (enumerateDevices, enumerateDevices_, getDisplayMedia, getDisplayMedia_, getSupportedConstraints, getSupportedConstraints_, getUserMedia, getUserMedia_, devicechange, MediaDevices(..), gTypeMediaDevices)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.enumerateDevices Mozilla MediaDevices.enumerateDevices documentation> 
-enumerateDevices ::
-                 (MonadDOM m) => MediaDevices -> m [MediaDeviceInfo]
-enumerateDevices self
-  = liftDOM
-      (((self ^. jsf "enumerateDevices" ()) >>= readPromise) >>=
-         fromJSArrayUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDevices/enumerateDevices MDN MediaDevices.enumerateDevices documentation>
+enumerateDevices :: (MonadDOM m) => MediaDevices -> m [MediaDeviceInfo]
+enumerateDevices self = liftDOM (((((self ^. jsf "enumerateDevices" ()) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.enumerateDevices Mozilla MediaDevices.enumerateDevices documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDevices/enumerateDevices MDN MediaDevices.enumerateDevices documentation>
 enumerateDevices_ :: (MonadDOM m) => MediaDevices -> m ()
-enumerateDevices_ self
-  = liftDOM (void (self ^. jsf "enumerateDevices" ()))
+enumerateDevices_ self = liftDOM (void (((self ^. jsf "enumerateDevices" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.getSupportedConstraints Mozilla MediaDevices.getSupportedConstraints documentation> 
-getSupportedConstraints ::
-                        (MonadDOM m) => MediaDevices -> m MediaTrackSupportedConstraints
-getSupportedConstraints self
-  = liftDOM
-      ((self ^. jsf "getSupportedConstraints" ()) >>= fromJSValUnchecked)
+-- | <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 (((((self ^. jsf "getDisplayMedia" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.getSupportedConstraints Mozilla MediaDevices.getSupportedConstraints documentation> 
+-- | <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 (((self ^. jsf "getDisplayMedia" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDevices/getSupportedConstraints MDN MediaDevices.getSupportedConstraints documentation>
+getSupportedConstraints :: (MonadDOM m) => MediaDevices -> m MediaTrackSupportedConstraints
+getSupportedConstraints self = liftDOM (((self ^. jsf "getSupportedConstraints" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaDevices/getSupportedConstraints MDN MediaDevices.getSupportedConstraints documentation>
 getSupportedConstraints_ :: (MonadDOM m) => MediaDevices -> m ()
-getSupportedConstraints_ self
-  = liftDOM (void (self ^. jsf "getSupportedConstraints" ()))
+getSupportedConstraints_ self = liftDOM (void (self ^. jsf "getSupportedConstraints" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.getUserMedia Mozilla MediaDevices.getUserMedia documentation> 
-getUserMedia ::
-             (MonadDOM m) =>
-               MediaDevices -> Maybe MediaStreamConstraints -> m MediaStream
-getUserMedia self constraints
-  = liftDOM
-      (((self ^. jsf "getUserMedia" [toJSVal constraints]) >>=
-          readPromise)
-         >>= fromJSValUnchecked)
+-- | <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 (((((self ^. jsf "getUserMedia" [P.maybe (P.return jsUndefined) toJSVal constraints]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.getUserMedia Mozilla MediaDevices.getUserMedia documentation> 
-getUserMedia_ ::
-              (MonadDOM m) =>
-                MediaDevices -> Maybe MediaStreamConstraints -> m ()
-getUserMedia_ self constraints
-  = liftDOM (void (self ^. jsf "getUserMedia" [toJSVal constraints]))
+-- | <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 (((self ^. jsf "getUserMedia" [P.maybe (P.return jsUndefined) toJSVal constraints]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.ondevicechange Mozilla MediaDevices.ondevicechange documentation> 
-devicechange :: EventName MediaDevices ondevicechange
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediadevices-ondevicechange devicechange event>
+devicechange :: EventName MediaDevices DeviceChangeEvent
 devicechange = unsafeEventName (toJSString "devicechange")
diff --git a/src/JSDOM/Generated/MediaEffectInfo.hs b/src/JSDOM/Generated/MediaEffectInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaEffectInfo.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-extensions (webref). Do not edit.
+module JSDOM.Generated.MediaEffectInfo
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediaeffectinfo MediaEffectInfo specification>
+newMediaEffectInfo :: (MonadDOM m) => Bool -> m MediaEffectInfo
+newMediaEffectInfo enabled = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "enabled" (toJSVal enabled)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaEffectInfo self) ^. jss "enabled" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediaeffectinfo-enabled MediaEffectInfo.enabled specification>
+getEnabled :: (MonadDOM m, IsMediaEffectInfo self) => self -> m Bool
+getEnabled self = liftDOM ((((Types.toMediaEffectInfo self) ^. js "enabled") >>= valToBool))
diff --git a/src/JSDOM/Generated/MediaElementAudioSourceNode.hs b/src/JSDOM/Generated/MediaElementAudioSourceNode.hs
--- a/src/JSDOM/Generated/MediaElementAudioSourceNode.hs
+++ b/src/JSDOM/Generated/MediaElementAudioSourceNode.hs
@@ -1,27 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.MediaElementAudioSourceNode
-       (getMediaElement, MediaElementAudioSourceNode(..),
-        gTypeMediaElementAudioSourceNode)
+       (newMediaElementAudioSourceNode, getMediaElement, MediaElementAudioSourceNode(..), gTypeMediaElementAudioSourceNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaElementAudioSourceNode.mediaElement Mozilla MediaElementAudioSourceNode.mediaElement documentation> 
-getMediaElement ::
-                (MonadDOM m) => MediaElementAudioSourceNode -> m HTMLMediaElement
-getMediaElement self
-  = liftDOM ((self ^. js "mediaElement") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaElementAudioSourceNode/MediaElementAudioSourceNode MDN MediaElementAudioSourceNode. documentation>
+newMediaElementAudioSourceNode :: (MonadDOM m) => AudioContext -> MediaElementAudioSourceOptions -> m MediaElementAudioSourceNode
+newMediaElementAudioSourceNode context options = liftDOM (((new (jsg "MediaElementAudioSourceNode") [toJSVal context, toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaElementAudioSourceNode/mediaElement MDN MediaElementAudioSourceNode.mediaElement documentation>
+getMediaElement :: (MonadDOM m) => MediaElementAudioSourceNode -> m HTMLMediaElement
+getMediaElement self = liftDOM (((self ^. js "mediaElement") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaElementAudioSourceOptions.hs b/src/JSDOM/Generated/MediaElementAudioSourceOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaElementAudioSourceOptions.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.MediaElementAudioSourceOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#MediaElementAudioSourceOptions MediaElementAudioSourceOptions specification>
+newMediaElementAudioSourceOptions :: (MonadDOM m, IsHTMLMediaElement mediaElement) => mediaElement -> m MediaElementAudioSourceOptions
+newMediaElementAudioSourceOptions mediaElement = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "mediaElement" (toJSVal mediaElement)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "mediaElement" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-mediaelementaudiosourceoptions-mediaelement MediaElementAudioSourceOptions.mediaElement specification>
+getMediaElement :: (MonadDOM m) => MediaElementAudioSourceOptions -> m HTMLMediaElement
+getMediaElement self = liftDOM (((self ^. js "mediaElement") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaEncodingConfiguration.hs b/src/JSDOM/Generated/MediaEncodingConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaEncodingConfiguration.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module JSDOM.Generated.MediaEncodingConfiguration
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/media-capabilities/#dictdef-mediaencodingconfiguration MediaEncodingConfiguration specification>
+newMediaEncodingConfiguration :: (MonadDOM m) => MediaEncodingType -> m MediaEncodingConfiguration
+newMediaEncodingConfiguration type' = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "type" (toJSVal type')) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediaencodingconfiguration-type MediaEncodingConfiguration.type specification>
+setType :: (MonadDOM m) => MediaEncodingConfiguration -> MediaEncodingType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-mediaencodingconfiguration-type MediaEncodingConfiguration.type specification>
+getType :: (MonadDOM m) => MediaEncodingConfiguration -> m MediaEncodingType
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaEncryptedEvent.hs b/src/JSDOM/Generated/MediaEncryptedEvent.hs
--- a/src/JSDOM/Generated/MediaEncryptedEvent.hs
+++ b/src/JSDOM/Generated/MediaEncryptedEvent.hs
@@ -1,58 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
 module JSDOM.Generated.MediaEncryptedEvent
-       (newMediaEncryptedEvent, getInitDataType, getInitData,
-        getInitDataUnsafe, getInitDataUnchecked, MediaEncryptedEvent(..),
-        gTypeMediaEncryptedEvent)
+       (newMediaEncryptedEvent, getInitDataType, getInitData, getInitDataUnsafe, getInitDataUnchecked, MediaEncryptedEvent(..), gTypeMediaEncryptedEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent Mozilla MediaEncryptedEvent documentation> 
-newMediaEncryptedEvent ::
-                       (MonadDOM m, ToJSString type') =>
-                         type' -> Maybe MediaEncryptedEventInit -> m MediaEncryptedEvent
-newMediaEncryptedEvent type' eventInitDict
-  = liftDOM
-      (MediaEncryptedEvent <$>
-         new (jsg "MediaEncryptedEvent")
-           [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "MediaEncryptedEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent.initDataType Mozilla MediaEncryptedEvent.initDataType documentation> 
-getInitDataType ::
-                (MonadDOM m, FromJSString result) =>
-                  MediaEncryptedEvent -> m result
-getInitDataType self
-  = liftDOM ((self ^. js "initDataType") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaEncryptedEvent/initDataType MDN MediaEncryptedEvent.initDataType documentation>
+getInitDataType :: (MonadDOM m, FromJSString result) => MediaEncryptedEvent -> m result
+getInitDataType self = liftDOM (((self ^. js "initDataType") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent.initData Mozilla MediaEncryptedEvent.initData documentation> 
-getInitData ::
-            (MonadDOM m) => MediaEncryptedEvent -> m (Maybe ArrayBuffer)
-getInitData self = liftDOM ((self ^. js "initData") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaEncryptedEvent/initData MDN MediaEncryptedEvent.initData documentation>
+getInitData :: (MonadDOM m) => MediaEncryptedEvent -> m (Maybe ArrayBuffer)
+getInitData self = liftDOM (((self ^. js "initData") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent.initData Mozilla MediaEncryptedEvent.initData documentation> 
-getInitDataUnsafe ::
-                  (MonadDOM m, HasCallStack) => MediaEncryptedEvent -> m ArrayBuffer
-getInitDataUnsafe self
-  = liftDOM
-      (((self ^. js "initData") >>= fromJSVal) >>=
-         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 ((((self ^. js "initData") >>= 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 ::
-                     (MonadDOM m) => MediaEncryptedEvent -> m ArrayBuffer
-getInitDataUnchecked self
-  = liftDOM ((self ^. js "initData") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaEncryptedEvent/initData MDN MediaEncryptedEvent.initData documentation>
+getInitDataUnchecked :: (MonadDOM m) => MediaEncryptedEvent -> m ArrayBuffer
+getInitDataUnchecked self = liftDOM (((self ^. js "initData") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaEncryptedEventInit.hs b/src/JSDOM/Generated/MediaEncryptedEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaEncryptedEventInit.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
+module JSDOM.Generated.MediaEncryptedEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediaencryptedeventinit MediaEncryptedEventInit specification>
+newMediaEncryptedEventInit :: (MonadDOM m) => m MediaEncryptedEventInit
+newMediaEncryptedEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "initDataType" (toJSVal val)))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediaencryptedeventinit-initdatatype MediaEncryptedEventInit.initDataType specification>
+getInitDataType :: (MonadDOM m, FromJSString result) => MediaEncryptedEventInit -> m (Maybe result)
+getInitDataType self = liftDOM (((self ^. js "initDataType") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediaencryptedeventinit-initdatatype MediaEncryptedEventInit.initDataType specification>
+getInitDataTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaEncryptedEventInit -> m result
+getInitDataTypeUnsafe self = liftDOM ((((self ^. js "initDataType") >>= fromMaybeJSString) >>= 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 (((self ^. js "initDataType") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "initData" (toJSVal val)))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediaencryptedeventinit-initdata MediaEncryptedEventInit.initData specification>
+getInitData :: (MonadDOM m) => MediaEncryptedEventInit -> m (Maybe ArrayBuffer)
+getInitData self = liftDOM (((self ^. js "initData") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediaencryptedeventinit-initdata MediaEncryptedEventInit.initData specification>
+getInitDataUnsafe :: (MonadDOM m, HasCallStack) => MediaEncryptedEventInit -> m ArrayBuffer
+getInitDataUnsafe self = liftDOM ((((self ^. js "initData") >>= 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 (((self ^. js "initData") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaError.hs b/src/JSDOM/Generated/MediaError.hs
--- a/src/JSDOM/Generated/MediaError.hs
+++ b/src/JSDOM/Generated/MediaError.hs
@@ -1,31 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.MediaError
-       (pattern MEDIA_ERR_ABORTED, pattern MEDIA_ERR_NETWORK,
-        pattern MEDIA_ERR_DECODE, pattern MEDIA_ERR_SRC_NOT_SUPPORTED,
-        getCode, MediaError(..), gTypeMediaError)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaError/code MDN MediaError.code documentation>
+getCode :: (MonadDOM m) => MediaError -> m Word
+getCode self = liftDOM ((P.round <$> ((self ^. js "code") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaError/message MDN MediaError.message documentation>
+getMessage :: (MonadDOM m, FromJSString result) => MediaError -> m result
+getMessage self = liftDOM (((self ^. js "message") >>= fromJSValUnchecked))
+
 pattern MEDIA_ERR_ABORTED = 1
+
 pattern MEDIA_ERR_NETWORK = 2
+
 pattern MEDIA_ERR_DECODE = 3
-pattern MEDIA_ERR_SRC_NOT_SUPPORTED = 4
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaError.code Mozilla MediaError.code documentation> 
-getCode :: (MonadDOM m) => MediaError -> m Word
-getCode self
-  = liftDOM (round <$> ((self ^. js "code") >>= valToNumber))
+pattern MEDIA_ERR_SRC_NOT_SUPPORTED = 4
diff --git a/src/JSDOM/Generated/MediaImage.hs b/src/JSDOM/Generated/MediaImage.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaImage.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediasession (webref). Do not edit.
+module JSDOM.Generated.MediaImage
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediasession/#dictdef-mediaimage MediaImage specification>
+newMediaImage :: (MonadDOM m, ToJSString src) => src -> m MediaImage
+newMediaImage src = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "src" (toJSVal src)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-src MediaImage.src specification>
+setSrc :: (MonadDOM m, ToJSString val) => MediaImage -> val -> m ()
+setSrc self val = liftDOM (void (self ^. jss "src" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-src MediaImage.src specification>
+getSrc :: (MonadDOM m, FromJSString result) => MediaImage -> m result
+getSrc self = liftDOM (((self ^. js "src") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-sizes MediaImage.sizes specification>
+setSizes :: (MonadDOM m, ToJSString val) => MediaImage -> val -> m ()
+setSizes self val = liftDOM (void (self ^. jss "sizes" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-sizes MediaImage.sizes specification>
+getSizes :: (MonadDOM m, FromJSString result) => MediaImage -> m (Maybe result)
+getSizes self = liftDOM (((self ^. js "sizes") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-sizes MediaImage.sizes specification>
+getSizesUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaImage -> m result
+getSizesUnsafe self = liftDOM ((((self ^. js "sizes") >>= fromMaybeJSString) >>= 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 (((self ^. js "sizes") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-type MediaImage.type specification>
+setType :: (MonadDOM m, ToJSString val) => MediaImage -> val -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-type MediaImage.type specification>
+getType :: (MonadDOM m, FromJSString result) => MediaImage -> m (Maybe result)
+getType self = liftDOM (((self ^. js "type") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediaimage-type MediaImage.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaImage -> m result
+getTypeUnsafe self = liftDOM ((((self ^. js "type") >>= fromMaybeJSString) >>= 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 (((self ^. js "type") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaKeyMessageEvent.hs b/src/JSDOM/Generated/MediaKeyMessageEvent.hs
--- a/src/JSDOM/Generated/MediaKeyMessageEvent.hs
+++ b/src/JSDOM/Generated/MediaKeyMessageEvent.hs
@@ -1,42 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
 module JSDOM.Generated.MediaKeyMessageEvent
-       (newMediaKeyMessageEvent, getMessageType, getMessage,
-        MediaKeyMessageEvent(..), gTypeMediaKeyMessageEvent)
+       (newMediaKeyMessageEvent, getMessageType, getMessage, MediaKeyMessageEvent(..), gTypeMediaKeyMessageEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent Mozilla WebKitMediaKeyMessageEvent documentation> 
-newMediaKeyMessageEvent ::
-                        (MonadDOM m, ToJSString type') =>
-                          type' -> MediaKeyMessageEventInit -> m MediaKeyMessageEvent
-newMediaKeyMessageEvent type' eventInitDict
-  = liftDOM
-      (MediaKeyMessageEvent <$>
-         new (jsg "MediaKeyMessageEvent")
-           [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "MediaKeyMessageEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.messageType Mozilla WebKitMediaKeyMessageEvent.messageType documentation> 
-getMessageType ::
-               (MonadDOM m) => MediaKeyMessageEvent -> m MediaKeyMessageType
-getMessageType self
-  = liftDOM ((self ^. js "messageType") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeyMessageEvent/messageType MDN MediaKeyMessageEvent.messageType documentation>
+getMessageType :: (MonadDOM m) => MediaKeyMessageEvent -> m MediaKeyMessageType
+getMessageType self = liftDOM (((self ^. js "messageType") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.message Mozilla WebKitMediaKeyMessageEvent.message documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeyMessageEvent/message MDN MediaKeyMessageEvent.message documentation>
 getMessage :: (MonadDOM m) => MediaKeyMessageEvent -> m ArrayBuffer
-getMessage self
-  = liftDOM ((self ^. js "message") >>= fromJSValUnchecked)
+getMessage self = liftDOM (((self ^. js "message") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaKeyMessageEventInit.hs b/src/JSDOM/Generated/MediaKeyMessageEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaKeyMessageEventInit.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
+module JSDOM.Generated.MediaKeyMessageEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeymessageeventinit MediaKeyMessageEventInit specification>
+newMediaKeyMessageEventInit :: (MonadDOM m, IsArrayBuffer message) => MediaKeyMessageType -> message -> m MediaKeyMessageEventInit
+newMediaKeyMessageEventInit messageType message = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "messageType" (toJSVal messageType)) P.>> (o ^. jss "message" (toJSVal message)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeymessageeventinit-messagetype MediaKeyMessageEventInit.messageType specification>
+setMessageType :: (MonadDOM m) => MediaKeyMessageEventInit -> MediaKeyMessageType -> m ()
+setMessageType self val = liftDOM (void (self ^. jss "messageType" (toJSVal val)))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeymessageeventinit-messagetype MediaKeyMessageEventInit.messageType specification>
+getMessageType :: (MonadDOM m) => MediaKeyMessageEventInit -> m MediaKeyMessageType
+getMessageType self = liftDOM (((self ^. js "messageType") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "message" (toJSVal val)))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeymessageeventinit-message MediaKeyMessageEventInit.message specification>
+getMessage :: (MonadDOM m) => MediaKeyMessageEventInit -> m ArrayBuffer
+getMessage self = liftDOM (((self ^. js "message") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaKeySession.hs b/src/JSDOM/Generated/MediaKeySession.hs
--- a/src/JSDOM/Generated/MediaKeySession.hs
+++ b/src/JSDOM/Generated/MediaKeySession.hs
@@ -1,98 +1,64 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
 module JSDOM.Generated.MediaKeySession
-       (generateRequest, load, load_, update, close, remove, getSessionId,
-        getExpiration, getClosed, getKeyStatuses, keystatuseschange,
-        message, MediaKeySession(..), gTypeMediaKeySession)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.generateRequest Mozilla WebKitMediaKeySession.generateRequest documentation> 
-generateRequest ::
-                (MonadDOM m, ToJSString initDataType, IsBufferSource initData) =>
-                  MediaKeySession -> initDataType -> initData -> m ()
-generateRequest self initDataType initData
-  = liftDOM
-      (void
-         ((self ^. jsf "generateRequest"
-             [toJSVal initDataType, toJSVal initData])
-            >>= readPromise))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.load Mozilla WebKitMediaKeySession.load documentation> 
-load ::
-     (MonadDOM m, ToJSString sessionId) =>
-       MediaKeySession -> sessionId -> m Bool
-load self sessionId
-  = liftDOM
-      (((self ^. jsf "load" [toJSVal sessionId]) >>= readPromise) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySession/close MDN MediaKeySession.close documentation>
+close :: (MonadDOM m) => MediaKeySession -> m ()
+close self = liftDOM (void (((self ^. jsf "close" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.load Mozilla WebKitMediaKeySession.load documentation> 
-load_ ::
-      (MonadDOM m, ToJSString sessionId) =>
-        MediaKeySession -> sessionId -> m ()
-load_ self sessionId
-  = liftDOM (void (self ^. jsf "load" [toJSVal sessionId]))
+-- | <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 (((self ^. jsf "generateRequest" [toJSVal initDataType, toJSVal initData]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.update Mozilla WebKitMediaKeySession.update documentation> 
-update ::
-       (MonadDOM m, IsBufferSource response) =>
-         MediaKeySession -> response -> m ()
-update self response
-  = liftDOM
-      (void ((self ^. jsf "update" [toJSVal response]) >>= readPromise))
+-- | <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 (((((self ^. jsf "load" [toJSVal sessionId]) >>= readPromise)) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.close Mozilla WebKitMediaKeySession.close documentation> 
-close :: (MonadDOM m) => MediaKeySession -> m ()
-close self
-  = liftDOM (void ((self ^. jsf "close" ()) >>= readPromise))
+-- | <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 (((self ^. jsf "load" [toJSVal sessionId]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.remove Mozilla WebKitMediaKeySession.remove documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySession/remove MDN MediaKeySession.remove documentation>
 remove :: (MonadDOM m) => MediaKeySession -> m ()
-remove self
-  = liftDOM (void ((self ^. jsf "remove" ()) >>= readPromise))
+remove self = liftDOM (void (((self ^. jsf "remove" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.sessionId Mozilla WebKitMediaKeySession.sessionId documentation> 
-getSessionId ::
-             (MonadDOM m, FromJSString result) => MediaKeySession -> m result
-getSessionId self
-  = liftDOM ((self ^. js "sessionId") >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "update" [toJSVal response]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.expiration Mozilla WebKitMediaKeySession.expiration documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySession/sessionId MDN MediaKeySession.sessionId documentation>
+getSessionId :: (MonadDOM m, FromJSString result) => MediaKeySession -> m result
+getSessionId self = liftDOM (((self ^. js "sessionId") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySession/expiration MDN MediaKeySession.expiration documentation>
 getExpiration :: (MonadDOM m) => MediaKeySession -> m Double
-getExpiration self
-  = liftDOM ((self ^. js "expiration") >>= valToNumber)
+getExpiration self = liftDOM (((self ^. js "expiration") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.closed Mozilla WebKitMediaKeySession.closed documentation> 
-getClosed :: (MonadDOM m) => MediaKeySession -> m ()
-getClosed self
-  = liftDOM (void ((self ^. js "closed") >>= readPromise))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySession/closed MDN MediaKeySession.closed documentation>
+getClosed :: (MonadDOM m) => MediaKeySession -> m MediaKeySessionClosedReason
+getClosed self = liftDOM (((((self ^. js "closed") >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.keyStatuses Mozilla WebKitMediaKeySession.keyStatuses documentation> 
-getKeyStatuses ::
-               (MonadDOM m) => MediaKeySession -> m MediaKeyStatusMap
-getKeyStatuses self
-  = liftDOM ((self ^. js "keyStatuses") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySession/keyStatuses MDN MediaKeySession.keyStatuses documentation>
+getKeyStatuses :: (MonadDOM m) => MediaKeySession -> m MediaKeyStatusMap
+getKeyStatuses self = liftDOM (((self ^. js "keyStatuses") >>= fromJSValUnchecked))
 
--- | <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/JSDOM/Generated/MediaKeyStatusMap.hs b/src/JSDOM/Generated/MediaKeyStatusMap.hs
--- a/src/JSDOM/Generated/MediaKeyStatusMap.hs
+++ b/src/JSDOM/Generated/MediaKeyStatusMap.hs
@@ -1,54 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
 module JSDOM.Generated.MediaKeyStatusMap
-       (has, has_, get, get_, getSize, MediaKeyStatusMap(..),
-        gTypeMediaKeyStatusMap)
+       (get, get_, has, has_, getSize, MediaKeyStatusMap(..), gTypeMediaKeyStatusMap)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.has Mozilla MediaKeyStatusMap.has documentation> 
-has ::
-    (MonadDOM m, IsBufferSource keyId) =>
-      MediaKeyStatusMap -> keyId -> m Bool
-has self keyId
-  = liftDOM ((self ^. jsf "has" [toJSVal keyId]) >>= valToBool)
+-- | <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 (((self ^. jsf "get" [toJSVal keyId]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.has Mozilla MediaKeyStatusMap.has documentation> 
-has_ ::
-     (MonadDOM m, IsBufferSource keyId) =>
-       MediaKeyStatusMap -> keyId -> m ()
-has_ self keyId
-  = liftDOM (void (self ^. jsf "has" [toJSVal keyId]))
+-- | <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 (self ^. jsf "get" [toJSVal keyId]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.get Mozilla MediaKeyStatusMap.get documentation> 
-get ::
-    (MonadDOM m, IsBufferSource keyId) =>
-      MediaKeyStatusMap -> keyId -> m JSVal
-get self keyId
-  = liftDOM ((self ^. jsf "get" [toJSVal keyId]) >>= toJSVal)
+-- | <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 (((self ^. jsf "has" [toJSVal keyId]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.get Mozilla MediaKeyStatusMap.get documentation> 
-get_ ::
-     (MonadDOM m, IsBufferSource keyId) =>
-       MediaKeyStatusMap -> keyId -> m ()
-get_ self keyId
-  = liftDOM (void (self ^. jsf "get" [toJSVal keyId]))
+-- | <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 (self ^. jsf "has" [toJSVal keyId]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.size Mozilla MediaKeyStatusMap.size documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeyStatusMap/size MDN MediaKeyStatusMap.size documentation>
 getSize :: (MonadDOM m) => MediaKeyStatusMap -> m Word
-getSize self
-  = liftDOM (round <$> ((self ^. js "size") >>= valToNumber))
+getSize self = liftDOM ((P.round <$> ((self ^. js "size") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/MediaKeySystemAccess.hs b/src/JSDOM/Generated/MediaKeySystemAccess.hs
--- a/src/JSDOM/Generated/MediaKeySystemAccess.hs
+++ b/src/JSDOM/Generated/MediaKeySystemAccess.hs
@@ -1,55 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
 module JSDOM.Generated.MediaKeySystemAccess
-       (getConfiguration, getConfiguration_, createMediaKeys,
-        createMediaKeys_, getKeySystem, MediaKeySystemAccess(..),
-        gTypeMediaKeySystemAccess)
+       (createMediaKeys, createMediaKeys_, getConfiguration, getConfiguration_, getKeySystem, MediaKeySystemAccess(..), gTypeMediaKeySystemAccess)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess.getConfiguration Mozilla MediaKeySystemAccess.getConfiguration documentation> 
-getConfiguration ::
-                 (MonadDOM m) =>
-                   MediaKeySystemAccess -> m MediaKeySystemConfiguration
-getConfiguration self
-  = liftDOM
-      ((self ^. jsf "getConfiguration" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySystemAccess/createMediaKeys MDN MediaKeySystemAccess.createMediaKeys documentation>
+createMediaKeys :: (MonadDOM m) => MediaKeySystemAccess -> m MediaKeys
+createMediaKeys self = liftDOM (((((self ^. jsf "createMediaKeys" ()) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess.getConfiguration Mozilla MediaKeySystemAccess.getConfiguration documentation> 
-getConfiguration_ :: (MonadDOM m) => MediaKeySystemAccess -> m ()
-getConfiguration_ self
-  = liftDOM (void (self ^. jsf "getConfiguration" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySystemAccess/createMediaKeys MDN MediaKeySystemAccess.createMediaKeys documentation>
+createMediaKeys_ :: (MonadDOM m) => MediaKeySystemAccess -> m ()
+createMediaKeys_ self = liftDOM (void (((self ^. jsf "createMediaKeys" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess.createMediaKeys Mozilla MediaKeySystemAccess.createMediaKeys documentation> 
-createMediaKeys ::
-                (MonadDOM m) => MediaKeySystemAccess -> m MediaKeys
-createMediaKeys self
-  = liftDOM
-      (((self ^. jsf "createMediaKeys" ()) >>= readPromise) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySystemAccess/getConfiguration MDN MediaKeySystemAccess.getConfiguration documentation>
+getConfiguration :: (MonadDOM m) => MediaKeySystemAccess -> m MediaKeySystemConfiguration
+getConfiguration self = liftDOM (((self ^. jsf "getConfiguration" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess.createMediaKeys Mozilla MediaKeySystemAccess.createMediaKeys documentation> 
-createMediaKeys_ :: (MonadDOM m) => MediaKeySystemAccess -> m ()
-createMediaKeys_ self
-  = liftDOM (void (self ^. jsf "createMediaKeys" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySystemAccess/getConfiguration MDN MediaKeySystemAccess.getConfiguration documentation>
+getConfiguration_ :: (MonadDOM m) => MediaKeySystemAccess -> m ()
+getConfiguration_ self = liftDOM (void (self ^. jsf "getConfiguration" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess.keySystem Mozilla MediaKeySystemAccess.keySystem documentation> 
-getKeySystem ::
-             (MonadDOM m, FromJSString result) =>
-               MediaKeySystemAccess -> m result
-getKeySystem self
-  = liftDOM ((self ^. js "keySystem") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaKeySystemAccess/keySystem MDN MediaKeySystemAccess.keySystem documentation>
+getKeySystem :: (MonadDOM m, FromJSString result) => MediaKeySystemAccess -> m result
+getKeySystem self = liftDOM (((self ^. js "keySystem") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaKeySystemConfiguration.hs b/src/JSDOM/Generated/MediaKeySystemConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaKeySystemConfiguration.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
+module JSDOM.Generated.MediaKeySystemConfiguration
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration MediaKeySystemConfiguration specification>
+newMediaKeySystemConfiguration :: (MonadDOM m) => m MediaKeySystemConfiguration
+newMediaKeySystemConfiguration = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "label" (toJSVal val)))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-label MediaKeySystemConfiguration.label specification>
+getLabel :: (MonadDOM m, FromJSString result) => MediaKeySystemConfiguration -> m (Maybe result)
+getLabel self = liftDOM (((self ^. js "label") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-label MediaKeySystemConfiguration.label specification>
+getLabelUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaKeySystemConfiguration -> m result
+getLabelUnsafe self = liftDOM ((((self ^. js "label") >>= fromMaybeJSString) >>= 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 (((self ^. js "label") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "initDataTypes" (toJSVal val)))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-initdatatypes MediaKeySystemConfiguration.initDataTypes specification>
+getInitDataTypes :: (MonadDOM m, FromJSString result) => MediaKeySystemConfiguration -> m (Maybe [result])
+getInitDataTypes self = liftDOM (((self ^. js "initDataTypes") >>= 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 ((((self ^. js "initDataTypes") >>= 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 (((self ^. js "initDataTypes") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-audiocapabilities MediaKeySystemConfiguration.audioCapabilities specification>
+setAudioCapabilities :: (MonadDOM m) => MediaKeySystemConfiguration -> [MediaKeySystemMediaCapability] -> m ()
+setAudioCapabilities self val = liftDOM (void (self ^. jss "audioCapabilities" (toJSVal val)))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-audiocapabilities MediaKeySystemConfiguration.audioCapabilities specification>
+getAudioCapabilities :: (MonadDOM m) => MediaKeySystemConfiguration -> m (Maybe [MediaKeySystemMediaCapability])
+getAudioCapabilities self = liftDOM (((self ^. js "audioCapabilities") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-audiocapabilities MediaKeySystemConfiguration.audioCapabilities specification>
+getAudioCapabilitiesUnsafe :: (MonadDOM m, HasCallStack) => MediaKeySystemConfiguration -> m [MediaKeySystemMediaCapability]
+getAudioCapabilitiesUnsafe self = liftDOM ((((self ^. js "audioCapabilities") >>= 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 (((self ^. js "audioCapabilities") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-videocapabilities MediaKeySystemConfiguration.videoCapabilities specification>
+setVideoCapabilities :: (MonadDOM m) => MediaKeySystemConfiguration -> [MediaKeySystemMediaCapability] -> m ()
+setVideoCapabilities self val = liftDOM (void (self ^. jss "videoCapabilities" (toJSVal val)))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-videocapabilities MediaKeySystemConfiguration.videoCapabilities specification>
+getVideoCapabilities :: (MonadDOM m) => MediaKeySystemConfiguration -> m (Maybe [MediaKeySystemMediaCapability])
+getVideoCapabilities self = liftDOM (((self ^. js "videoCapabilities") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-videocapabilities MediaKeySystemConfiguration.videoCapabilities specification>
+getVideoCapabilitiesUnsafe :: (MonadDOM m, HasCallStack) => MediaKeySystemConfiguration -> m [MediaKeySystemMediaCapability]
+getVideoCapabilitiesUnsafe self = liftDOM ((((self ^. js "videoCapabilities") >>= 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 (((self ^. js "videoCapabilities") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-distinctiveidentifier MediaKeySystemConfiguration.distinctiveIdentifier specification>
+setDistinctiveIdentifier :: (MonadDOM m) => MediaKeySystemConfiguration -> MediaKeysRequirement -> m ()
+setDistinctiveIdentifier self val = liftDOM (void (self ^. jss "distinctiveIdentifier" (toJSVal val)))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-distinctiveidentifier MediaKeySystemConfiguration.distinctiveIdentifier specification>
+getDistinctiveIdentifier :: (MonadDOM m) => MediaKeySystemConfiguration -> m (Maybe MediaKeysRequirement)
+getDistinctiveIdentifier self = liftDOM (((self ^. js "distinctiveIdentifier") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-distinctiveidentifier MediaKeySystemConfiguration.distinctiveIdentifier specification>
+getDistinctiveIdentifierUnsafe :: (MonadDOM m, HasCallStack) => MediaKeySystemConfiguration -> m MediaKeysRequirement
+getDistinctiveIdentifierUnsafe self = liftDOM ((((self ^. js "distinctiveIdentifier") >>= 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 (((self ^. js "distinctiveIdentifier") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-persistentstate MediaKeySystemConfiguration.persistentState specification>
+setPersistentState :: (MonadDOM m) => MediaKeySystemConfiguration -> MediaKeysRequirement -> m ()
+setPersistentState self val = liftDOM (void (self ^. jss "persistentState" (toJSVal val)))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-persistentstate MediaKeySystemConfiguration.persistentState specification>
+getPersistentState :: (MonadDOM m) => MediaKeySystemConfiguration -> m (Maybe MediaKeysRequirement)
+getPersistentState self = liftDOM (((self ^. js "persistentState") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-persistentstate MediaKeySystemConfiguration.persistentState specification>
+getPersistentStateUnsafe :: (MonadDOM m, HasCallStack) => MediaKeySystemConfiguration -> m MediaKeysRequirement
+getPersistentStateUnsafe self = liftDOM ((((self ^. js "persistentState") >>= 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 (((self ^. js "persistentState") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "sessionTypes" (toJSVal val)))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemconfiguration-sessiontypes MediaKeySystemConfiguration.sessionTypes specification>
+getSessionTypes :: (MonadDOM m, FromJSString result) => MediaKeySystemConfiguration -> m (Maybe [result])
+getSessionTypes self = liftDOM (((self ^. js "sessionTypes") >>= 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 ((((self ^. js "sessionTypes") >>= 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 (((self ^. js "sessionTypes") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaKeySystemMediaCapability.hs b/src/JSDOM/Generated/MediaKeySystemMediaCapability.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaKeySystemMediaCapability.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
+module JSDOM.Generated.MediaKeySystemMediaCapability
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability MediaKeySystemMediaCapability specification>
+newMediaKeySystemMediaCapability :: (MonadDOM m) => m MediaKeySystemMediaCapability
+newMediaKeySystemMediaCapability = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "contentType" (toJSVal val)))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-contenttype MediaKeySystemMediaCapability.contentType specification>
+getContentType :: (MonadDOM m, FromJSString result) => MediaKeySystemMediaCapability -> m (Maybe result)
+getContentType self = liftDOM (((self ^. js "contentType") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-contenttype MediaKeySystemMediaCapability.contentType specification>
+getContentTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaKeySystemMediaCapability -> m result
+getContentTypeUnsafe self = liftDOM ((((self ^. js "contentType") >>= fromMaybeJSString) >>= 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 (((self ^. js "contentType") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "encryptionScheme" (toJSVal val)))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-encryptionscheme MediaKeySystemMediaCapability.encryptionScheme specification>
+getEncryptionScheme :: (MonadDOM m, FromJSString result) => MediaKeySystemMediaCapability -> m (Maybe result)
+getEncryptionScheme self = liftDOM (((self ^. js "encryptionScheme") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-encryptionscheme MediaKeySystemMediaCapability.encryptionScheme specification>
+getEncryptionSchemeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaKeySystemMediaCapability -> m result
+getEncryptionSchemeUnsafe self = liftDOM ((((self ^. js "encryptionScheme") >>= fromMaybeJSString) >>= 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 (((self ^. js "encryptionScheme") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "robustness" (toJSVal val)))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-robustness MediaKeySystemMediaCapability.robustness specification>
+getRobustness :: (MonadDOM m, FromJSString result) => MediaKeySystemMediaCapability -> m (Maybe result)
+getRobustness self = liftDOM (((self ^. js "robustness") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeysystemmediacapability-robustness MediaKeySystemMediaCapability.robustness specification>
+getRobustnessUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaKeySystemMediaCapability -> m result
+getRobustnessUnsafe self = liftDOM ((((self ^. js "robustness") >>= fromMaybeJSString) >>= 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 (((self ^. js "robustness") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaKeys.hs b/src/JSDOM/Generated/MediaKeys.hs
--- a/src/JSDOM/Generated/MediaKeys.hs
+++ b/src/JSDOM/Generated/MediaKeys.hs
@@ -1,56 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
 module JSDOM.Generated.MediaKeys
-       (createSession, createSession_, setServerCertificate,
-        setServerCertificate_, MediaKeys(..), gTypeMediaKeys)
+       (createSession, createSession_, getStatusForPolicy, getStatusForPolicy_, setServerCertificate, setServerCertificate_, MediaKeys(..), gTypeMediaKeys)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.createSession Mozilla WebKitMediaKeys.createSession documentation> 
-createSession ::
-              (MonadDOM m) =>
-                MediaKeys -> Maybe MediaKeySessionType -> m MediaKeySession
-createSession self sessionType
-  = liftDOM
-      ((self ^. jsf "createSession" [toJSVal sessionType]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "createSession" [P.maybe (P.return jsUndefined) toJSVal sessionType]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.createSession Mozilla WebKitMediaKeys.createSession documentation> 
-createSession_ ::
-               (MonadDOM m) => MediaKeys -> Maybe MediaKeySessionType -> m ()
-createSession_ self sessionType
-  = liftDOM
-      (void (self ^. jsf "createSession" [toJSVal 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 (self ^. jsf "createSession" [P.maybe (P.return jsUndefined) toJSVal sessionType]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.setServerCertificate Mozilla WebKitMediaKeys.setServerCertificate documentation> 
-setServerCertificate ::
-                     (MonadDOM m, IsBufferSource serverCertificate) =>
-                       MediaKeys -> serverCertificate -> m Bool
-setServerCertificate self serverCertificate
-  = liftDOM
-      (((self ^. jsf "setServerCertificate" [toJSVal serverCertificate])
-          >>= readPromise)
-         >>= fromJSValUnchecked)
+-- | <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 (((((self ^. jsf "getStatusForPolicy" [P.maybe (P.return jsUndefined) toJSVal policy]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.setServerCertificate Mozilla WebKitMediaKeys.setServerCertificate documentation> 
-setServerCertificate_ ::
-                      (MonadDOM m, IsBufferSource serverCertificate) =>
-                        MediaKeys -> serverCertificate -> m ()
-setServerCertificate_ self serverCertificate
-  = liftDOM
-      (void
-         (self ^. jsf "setServerCertificate" [toJSVal serverCertificate]))
+-- | <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 (((self ^. jsf "getStatusForPolicy" [P.maybe (P.return jsUndefined) toJSVal policy]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "setServerCertificate" [toJSVal serverCertificate]) >>= readPromise)) >>= valToBool))
+
+-- | <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 (((self ^. jsf "setServerCertificate" [toJSVal serverCertificate]) >>= readPromise)))
diff --git a/src/JSDOM/Generated/MediaKeysPolicy.hs b/src/JSDOM/Generated/MediaKeysPolicy.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaKeysPolicy.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encrypted-media-2 (webref). Do not edit.
+module JSDOM.Generated.MediaKeysPolicy
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeyspolicy MediaKeysPolicy specification>
+newMediaKeysPolicy :: (MonadDOM m) => m MediaKeysPolicy
+newMediaKeysPolicy = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "minHdcpVersion" (toJSVal val)))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeyspolicy-minhdcpversion MediaKeysPolicy.minHdcpVersion specification>
+getMinHdcpVersion :: (MonadDOM m, FromJSString result) => MediaKeysPolicy -> m (Maybe result)
+getMinHdcpVersion self = liftDOM (((self ^. js "minHdcpVersion") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/encrypted-media/#dom-mediakeyspolicy-minhdcpversion MediaKeysPolicy.minHdcpVersion specification>
+getMinHdcpVersionUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaKeysPolicy -> m result
+getMinHdcpVersionUnsafe self = liftDOM ((((self ^. js "minHdcpVersion") >>= fromMaybeJSString) >>= 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 (((self ^. js "minHdcpVersion") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaList.hs b/src/JSDOM/Generated/MediaList.hs
--- a/src/JSDOM/Generated/MediaList.hs
+++ b/src/JSDOM/Generated/MediaList.hs
@@ -1,82 +1,52 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module JSDOM.Generated.MediaList
-       (item, item_, itemUnsafe, itemUnchecked, deleteMedium,
-        appendMedium, setMediaText, getMediaText, getLength, MediaList(..),
-        gTypeMediaList)
+       (appendMedium, deleteMedium, item, item_, itemUnsafe, itemUnchecked, setMediaText, getMediaText, getLength, MediaList(..), gTypeMediaList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
-item ::
-     (MonadDOM m, FromJSString result) =>
-       MediaList -> Word -> m (Maybe result)
-item self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString)
+-- | <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 (self ^. jsf "appendMedium" [toJSVal medium]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
-item_ :: (MonadDOM m) => MediaList -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+-- | <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 (self ^. jsf "deleteMedium" [toJSVal medium]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
-itemUnsafe ::
-           (MonadDOM m, HasCallStack, FromJSString result) =>
-             MediaList -> Word -> m result
-itemUnsafe self index
-  = liftDOM
-      (((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
-itemUnchecked ::
-              (MonadDOM m, FromJSString result) => MediaList -> Word -> m result
-itemUnchecked self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaList/item MDN MediaList.item documentation>
+item_ :: (MonadDOM m) => MediaList -> Word -> m ()
+item_ self index = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.deleteMedium Mozilla MediaList.deleteMedium documentation> 
-deleteMedium ::
-             (MonadDOM m, ToJSString oldMedium) =>
-               MediaList -> oldMedium -> m ()
-deleteMedium self oldMedium
-  = liftDOM (void (self ^. jsf "deleteMedium" [toJSVal oldMedium]))
+-- | <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 ((((self ^. jsf "item" [toJSVal index]) >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.appendMedium Mozilla MediaList.appendMedium documentation> 
-appendMedium ::
-             (MonadDOM m, ToJSString newMedium) =>
-               MediaList -> newMedium -> m ()
-appendMedium self newMedium
-  = liftDOM (void (self ^. jsf "appendMedium" [toJSVal newMedium]))
+-- | <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 (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.mediaText Mozilla MediaList.mediaText documentation> 
-setMediaText ::
-             (MonadDOM m, ToJSString val) => MediaList -> val -> m ()
-setMediaText self val
-  = liftDOM (self ^. jss "mediaText" (toJSVal val))
+-- | <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 (self ^. jss "mediaText" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.mediaText Mozilla MediaList.mediaText documentation> 
-getMediaText ::
-             (MonadDOM m, FromJSString result) => MediaList -> m result
-getMediaText self
-  = liftDOM ((self ^. js "mediaText") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaList/mediaText MDN MediaList.mediaText documentation>
+getMediaText :: (MonadDOM m, FromJSString result) => MediaList -> m result
+getMediaText self = liftDOM (((self ^. js "mediaText") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.length Mozilla MediaList.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MediaList/length MDN MediaList.length documentation>
 getLength :: (MonadDOM m) => MediaList -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/MediaMetadata.hs b/src/JSDOM/Generated/MediaMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaMetadata.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediasession (webref). Do not edit.
+module JSDOM.Generated.MediaMetadata
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaMetadata/MediaMetadata MDN MediaMetadata. documentation>
+newMediaMetadata :: (MonadDOM m) => Maybe MediaMetadataInit -> m MediaMetadata
+newMediaMetadata init = liftDOM (((new (jsg "MediaMetadata") [P.maybe (P.return jsUndefined) toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "title" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaMetadata/title MDN MediaMetadata.title documentation>
+getTitle :: (MonadDOM m, FromJSString result) => MediaMetadata -> m result
+getTitle self = liftDOM (((self ^. js "title") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "artist" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaMetadata/artist MDN MediaMetadata.artist documentation>
+getArtist :: (MonadDOM m, FromJSString result) => MediaMetadata -> m result
+getArtist self = liftDOM (((self ^. js "artist") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "album" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaMetadata/album MDN MediaMetadata.album documentation>
+getAlbum :: (MonadDOM m, FromJSString result) => MediaMetadata -> m result
+getAlbum self = liftDOM (((self ^. js "album") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaMetadata/artwork MDN MediaMetadata.artwork documentation>
+setArtwork :: (MonadDOM m) => MediaMetadata -> [GObject] -> m ()
+setArtwork self val = liftDOM (void (self ^. jss "artwork" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaMetadata/artwork MDN MediaMetadata.artwork documentation>
+getArtwork :: (MonadDOM m) => MediaMetadata -> m [GObject]
+getArtwork self = liftDOM (((self ^. js "artwork") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaMetadataInit.hs b/src/JSDOM/Generated/MediaMetadataInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaMetadataInit.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediasession (webref). Do not edit.
+module JSDOM.Generated.MediaMetadataInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediasession/#dictdef-mediametadatainit MediaMetadataInit specification>
+newMediaMetadataInit :: (MonadDOM m) => m MediaMetadataInit
+newMediaMetadataInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-title MediaMetadataInit.title specification>
+setTitle :: (MonadDOM m, ToJSString val) => MediaMetadataInit -> val -> m ()
+setTitle self val = liftDOM (void (self ^. jss "title" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-title MediaMetadataInit.title specification>
+getTitle :: (MonadDOM m, FromJSString result) => MediaMetadataInit -> m (Maybe result)
+getTitle self = liftDOM (((self ^. js "title") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-title MediaMetadataInit.title specification>
+getTitleUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaMetadataInit -> m result
+getTitleUnsafe self = liftDOM ((((self ^. js "title") >>= fromMaybeJSString) >>= 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 (((self ^. js "title") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-artist MediaMetadataInit.artist specification>
+setArtist :: (MonadDOM m, ToJSString val) => MediaMetadataInit -> val -> m ()
+setArtist self val = liftDOM (void (self ^. jss "artist" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-artist MediaMetadataInit.artist specification>
+getArtist :: (MonadDOM m, FromJSString result) => MediaMetadataInit -> m (Maybe result)
+getArtist self = liftDOM (((self ^. js "artist") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-artist MediaMetadataInit.artist specification>
+getArtistUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaMetadataInit -> m result
+getArtistUnsafe self = liftDOM ((((self ^. js "artist") >>= fromMaybeJSString) >>= 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 (((self ^. js "artist") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-album MediaMetadataInit.album specification>
+setAlbum :: (MonadDOM m, ToJSString val) => MediaMetadataInit -> val -> m ()
+setAlbum self val = liftDOM (void (self ^. jss "album" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-album MediaMetadataInit.album specification>
+getAlbum :: (MonadDOM m, FromJSString result) => MediaMetadataInit -> m (Maybe result)
+getAlbum self = liftDOM (((self ^. js "album") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-album MediaMetadataInit.album specification>
+getAlbumUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaMetadataInit -> m result
+getAlbumUnsafe self = liftDOM ((((self ^. js "album") >>= fromMaybeJSString) >>= 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 (((self ^. js "album") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-artwork MediaMetadataInit.artwork specification>
+setArtwork :: (MonadDOM m) => MediaMetadataInit -> [MediaImage] -> m ()
+setArtwork self val = liftDOM (void (self ^. jss "artwork" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-artwork MediaMetadataInit.artwork specification>
+getArtwork :: (MonadDOM m) => MediaMetadataInit -> m (Maybe [MediaImage])
+getArtwork self = liftDOM (((self ^. js "artwork") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-artwork MediaMetadataInit.artwork specification>
+getArtworkUnsafe :: (MonadDOM m, HasCallStack) => MediaMetadataInit -> m [MediaImage]
+getArtworkUnsafe self = liftDOM ((((self ^. js "artwork") >>= 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 (((self ^. js "artwork") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-chapterinfo MediaMetadataInit.chapterInfo specification>
+setChapterInfo :: (MonadDOM m) => MediaMetadataInit -> [ChapterInformationInit] -> m ()
+setChapterInfo self val = liftDOM (void (self ^. jss "chapterInfo" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-chapterinfo MediaMetadataInit.chapterInfo specification>
+getChapterInfo :: (MonadDOM m) => MediaMetadataInit -> m (Maybe [ChapterInformationInit])
+getChapterInfo self = liftDOM (((self ^. js "chapterInfo") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediametadatainit-chapterinfo MediaMetadataInit.chapterInfo specification>
+getChapterInfoUnsafe :: (MonadDOM m, HasCallStack) => MediaMetadataInit -> m [ChapterInformationInit]
+getChapterInfoUnsafe self = liftDOM ((((self ^. js "chapterInfo") >>= 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 (((self ^. js "chapterInfo") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaPositionState.hs b/src/JSDOM/Generated/MediaPositionState.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaPositionState.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediasession (webref). Do not edit.
+module JSDOM.Generated.MediaPositionState
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediasession/#dictdef-mediapositionstate MediaPositionState specification>
+newMediaPositionState :: (MonadDOM m) => m MediaPositionState
+newMediaPositionState = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-duration MediaPositionState.duration specification>
+setDuration :: (MonadDOM m) => MediaPositionState -> Double -> m ()
+setDuration self val = liftDOM (void (self ^. jss "duration" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-duration MediaPositionState.duration specification>
+getDuration :: (MonadDOM m) => MediaPositionState -> m (Maybe Double)
+getDuration self = liftDOM (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-duration MediaPositionState.duration specification>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => MediaPositionState -> m Double
+getDurationUnsafe self = liftDOM ((((self ^. js "duration") >>= 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 (((self ^. js "duration") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-playbackrate MediaPositionState.playbackRate specification>
+setPlaybackRate :: (MonadDOM m) => MediaPositionState -> Double -> m ()
+setPlaybackRate self val = liftDOM (void (self ^. jss "playbackRate" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-playbackrate MediaPositionState.playbackRate specification>
+getPlaybackRate :: (MonadDOM m) => MediaPositionState -> m (Maybe Double)
+getPlaybackRate self = liftDOM (((self ^. js "playbackRate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-playbackrate MediaPositionState.playbackRate specification>
+getPlaybackRateUnsafe :: (MonadDOM m, HasCallStack) => MediaPositionState -> m Double
+getPlaybackRateUnsafe self = liftDOM ((((self ^. js "playbackRate") >>= 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 (((self ^. js "playbackRate") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-position MediaPositionState.position specification>
+setPosition :: (MonadDOM m) => MediaPositionState -> Double -> m ()
+setPosition self val = liftDOM (void (self ^. jss "position" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-position MediaPositionState.position specification>
+getPosition :: (MonadDOM m) => MediaPositionState -> m (Maybe Double)
+getPosition self = liftDOM (((self ^. js "position") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediapositionstate-position MediaPositionState.position specification>
+getPositionUnsafe :: (MonadDOM m, HasCallStack) => MediaPositionState -> m Double
+getPositionUnsafe self = liftDOM ((((self ^. js "position") >>= 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 (((self ^. js "position") >>= valToNumber))
diff --git a/src/JSDOM/Generated/MediaQueryList.hs b/src/JSDOM/Generated/MediaQueryList.hs
--- a/src/JSDOM/Generated/MediaQueryList.hs
+++ b/src/JSDOM/Generated/MediaQueryList.hs
@@ -1,45 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
 module JSDOM.Generated.MediaQueryList
-       (addListener, removeListener, getMedia, getMatches,
-        MediaQueryList(..), gTypeMediaQueryList)
+       (addListener, removeListener, getMedia, getMatches, change, MediaQueryList(..), gTypeMediaQueryList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.addListener Mozilla MediaQueryList.addListener documentation> 
-addListener ::
-            (MonadDOM m) =>
-              MediaQueryList -> Maybe MediaQueryListListener -> m ()
-addListener self listener
-  = liftDOM (void (self ^. jsf "addListener" [toJSVal listener]))
+-- | <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 (self ^. jsf "addListener" [toJSVal callback']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.removeListener Mozilla MediaQueryList.removeListener documentation> 
-removeListener ::
-               (MonadDOM m) =>
-                 MediaQueryList -> Maybe MediaQueryListListener -> m ()
-removeListener self listener
-  = liftDOM (void (self ^. jsf "removeListener" [toJSVal listener]))
+-- | <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 (self ^. jsf "removeListener" [toJSVal callback']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.media Mozilla MediaQueryList.media documentation> 
-getMedia ::
-         (MonadDOM m, FromJSString result) => MediaQueryList -> m result
-getMedia self
-  = liftDOM ((self ^. js "media") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaQueryList/media MDN MediaQueryList.media documentation>
+getMedia :: (MonadDOM m, FromJSString result) => MediaQueryList -> m result
+getMedia self = liftDOM (((self ^. js "media") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.matches Mozilla MediaQueryList.matches documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MediaQueryList/matches MDN MediaQueryList.matches documentation>
 getMatches :: (MonadDOM m) => MediaQueryList -> m Bool
-getMatches self = liftDOM ((self ^. js "matches") >>= valToBool)
+getMatches self = liftDOM (((self ^. js "matches") >>= valToBool))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-mediaquerylist-onchange change event>
+change :: EventName MediaQueryList MediaQueryListEvent
+change = unsafeEventName (toJSString "change")
diff --git a/src/JSDOM/Generated/MediaQueryListEvent.hs b/src/JSDOM/Generated/MediaQueryListEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaQueryListEvent.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module JSDOM.Generated.MediaQueryListEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "MediaQueryListEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaQueryListEvent/media MDN MediaQueryListEvent.media documentation>
+getMedia :: (MonadDOM m, FromJSString result) => MediaQueryListEvent -> m result
+getMedia self = liftDOM (((self ^. js "media") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaQueryListEvent/matches MDN MediaQueryListEvent.matches documentation>
+getMatches :: (MonadDOM m) => MediaQueryListEvent -> m Bool
+getMatches self = liftDOM (((self ^. js "matches") >>= valToBool))
diff --git a/src/JSDOM/Generated/MediaQueryListEventInit.hs b/src/JSDOM/Generated/MediaQueryListEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaQueryListEventInit.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module JSDOM.Generated.MediaQueryListEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dictdef-mediaquerylisteventinit MediaQueryListEventInit specification>
+newMediaQueryListEventInit :: (MonadDOM m) => m MediaQueryListEventInit
+newMediaQueryListEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "media" (toJSVal val)))
+
+-- | <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 (((self ^. js "media") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "media") >>= fromMaybeJSString) >>= 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 (((self ^. js "media") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-mediaquerylisteventinit-matches MediaQueryListEventInit.matches specification>
+setMatches :: (MonadDOM m) => MediaQueryListEventInit -> Bool -> m ()
+setMatches self val = liftDOM (void (self ^. jss "matches" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-mediaquerylisteventinit-matches MediaQueryListEventInit.matches specification>
+getMatches :: (MonadDOM m) => MediaQueryListEventInit -> m (Maybe Bool)
+getMatches self = liftDOM (((self ^. js "matches") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-mediaquerylisteventinit-matches MediaQueryListEventInit.matches specification>
+getMatchesUnsafe :: (MonadDOM m, HasCallStack) => MediaQueryListEventInit -> m Bool
+getMatchesUnsafe self = liftDOM ((((self ^. js "matches") >>= 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 (((self ^. js "matches") >>= valToBool))
diff --git a/src/JSDOM/Generated/MediaQueryListListener.hs b/src/JSDOM/Generated/MediaQueryListListener.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/MediaQueryListListener.hs
+++ /dev/null
@@ -1,51 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.MediaQueryListListener
-       (newMediaQueryListListener, newMediaQueryListListenerSync,
-        newMediaQueryListListenerAsync, MediaQueryListListener)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryListListener Mozilla MediaQueryListListener documentation> 
-newMediaQueryListListener ::
-                          (MonadDOM m) =>
-                            (Maybe MediaQueryList -> JSM ()) -> m MediaQueryListListener
-newMediaQueryListListener callback
-  = liftDOM
-      (MediaQueryListListener . Callback <$>
-         function
-           (\ _ _ [list] -> fromJSVal list >>= \ list' -> callback list'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryListListener Mozilla MediaQueryListListener documentation> 
-newMediaQueryListListenerSync ::
-                              (MonadDOM m) =>
-                                (Maybe MediaQueryList -> JSM ()) -> m MediaQueryListListener
-newMediaQueryListListenerSync callback
-  = liftDOM
-      (MediaQueryListListener . Callback <$>
-         function
-           (\ _ _ [list] -> fromJSVal list >>= \ list' -> callback list'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryListListener Mozilla MediaQueryListListener documentation> 
-newMediaQueryListListenerAsync ::
-                               (MonadDOM m) =>
-                                 (Maybe MediaQueryList -> JSM ()) -> m MediaQueryListListener
-newMediaQueryListListenerAsync callback
-  = liftDOM
-      (MediaQueryListListener . Callback <$>
-         asyncFunction
-           (\ _ _ [list] -> fromJSVal list >>= \ list' -> callback list'))
diff --git a/src/JSDOM/Generated/MediaRecorder.hs b/src/JSDOM/Generated/MediaRecorder.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaRecorder.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediastream-recording (webref). Do not edit.
+module JSDOM.Generated.MediaRecorder
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/MediaRecorder MDN MediaRecorder. documentation>
+newMediaRecorder :: (MonadDOM m) => MediaStream -> Maybe MediaRecorderOptions -> m MediaRecorder
+newMediaRecorder stream options = liftDOM (((new (jsg "MediaRecorder") [toJSVal stream, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/pause MDN MediaRecorder.pause documentation>
+pause :: (MonadDOM m) => MediaRecorder -> m ()
+pause self = liftDOM (void (self ^. jsf "pause" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/requestData MDN MediaRecorder.requestData documentation>
+requestData :: (MonadDOM m) => MediaRecorder -> m ()
+requestData self = liftDOM (void (self ^. jsf "requestData" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/resume MDN MediaRecorder.resume documentation>
+resume :: (MonadDOM m) => MediaRecorder -> m ()
+resume self = liftDOM (void (self ^. jsf "resume" ()))
+
+-- | <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 (self ^. jsf "start" [P.maybe (P.return jsUndefined) toJSVal timeslice]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/stop MDN MediaRecorder.stop documentation>
+stop :: (MonadDOM m) => MediaRecorder -> m ()
+stop self = liftDOM (void (self ^. jsf "stop" ()))
+
+-- | <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 ((((jsg "MediaRecorder") ^. jsf "isTypeSupported" [toJSVal type']) >>= valToBool))
+
+-- | <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 ((jsg "MediaRecorder") ^. jsf "isTypeSupported" [toJSVal type']))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/stream MDN MediaRecorder.stream documentation>
+getStream :: (MonadDOM m) => MediaRecorder -> m MediaStream
+getStream self = liftDOM (((self ^. js "stream") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/mimeType MDN MediaRecorder.mimeType documentation>
+getMimeType :: (MonadDOM m, FromJSString result) => MediaRecorder -> m result
+getMimeType self = liftDOM (((self ^. js "mimeType") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/state MDN MediaRecorder.state documentation>
+getState :: (MonadDOM m) => MediaRecorder -> m RecordingState
+getState self = liftDOM (((self ^. js "state") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/videoBitsPerSecond MDN MediaRecorder.videoBitsPerSecond documentation>
+getVideoBitsPerSecond :: (MonadDOM m) => MediaRecorder -> m Word
+getVideoBitsPerSecond self = liftDOM ((P.round <$> ((self ^. js "videoBitsPerSecond") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaRecorder/audioBitsPerSecond MDN MediaRecorder.audioBitsPerSecond documentation>
+getAudioBitsPerSecond :: (MonadDOM m) => MediaRecorder -> m Word
+getAudioBitsPerSecond self = liftDOM ((P.round <$> ((self ^. js "audioBitsPerSecond") >>= valToNumber)))
+
+-- | <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/JSDOM/Generated/MediaRecorderOptions.hs b/src/JSDOM/Generated/MediaRecorderOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaRecorderOptions.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediastream-recording (webref). Do not edit.
+module JSDOM.Generated.MediaRecorderOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-record/#dictdef-mediarecorderoptions MediaRecorderOptions specification>
+newMediaRecorderOptions :: (MonadDOM m) => m MediaRecorderOptions
+newMediaRecorderOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "mimeType" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-mimetype MediaRecorderOptions.mimeType specification>
+getMimeType :: (MonadDOM m, FromJSString result) => MediaRecorderOptions -> m (Maybe result)
+getMimeType self = liftDOM (((self ^. js "mimeType") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-mimetype MediaRecorderOptions.mimeType specification>
+getMimeTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaRecorderOptions -> m result
+getMimeTypeUnsafe self = liftDOM ((((self ^. js "mimeType") >>= fromMaybeJSString) >>= 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 (((self ^. js "mimeType") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-audiobitspersecond MediaRecorderOptions.audioBitsPerSecond specification>
+setAudioBitsPerSecond :: (MonadDOM m) => MediaRecorderOptions -> Word -> m ()
+setAudioBitsPerSecond self val = liftDOM (void (self ^. jss "audioBitsPerSecond" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-audiobitspersecond MediaRecorderOptions.audioBitsPerSecond specification>
+getAudioBitsPerSecond :: (MonadDOM m) => MediaRecorderOptions -> m (Maybe Word)
+getAudioBitsPerSecond self = liftDOM (((self ^. js "audioBitsPerSecond") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-audiobitspersecond MediaRecorderOptions.audioBitsPerSecond specification>
+getAudioBitsPerSecondUnsafe :: (MonadDOM m, HasCallStack) => MediaRecorderOptions -> m Word
+getAudioBitsPerSecondUnsafe self = liftDOM ((((self ^. js "audioBitsPerSecond") >>= 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 ((P.round <$> ((self ^. js "audioBitsPerSecond") >>= valToNumber)))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videobitspersecond MediaRecorderOptions.videoBitsPerSecond specification>
+setVideoBitsPerSecond :: (MonadDOM m) => MediaRecorderOptions -> Word -> m ()
+setVideoBitsPerSecond self val = liftDOM (void (self ^. jss "videoBitsPerSecond" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videobitspersecond MediaRecorderOptions.videoBitsPerSecond specification>
+getVideoBitsPerSecond :: (MonadDOM m) => MediaRecorderOptions -> m (Maybe Word)
+getVideoBitsPerSecond self = liftDOM (((self ^. js "videoBitsPerSecond") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videobitspersecond MediaRecorderOptions.videoBitsPerSecond specification>
+getVideoBitsPerSecondUnsafe :: (MonadDOM m, HasCallStack) => MediaRecorderOptions -> m Word
+getVideoBitsPerSecondUnsafe self = liftDOM ((((self ^. js "videoBitsPerSecond") >>= 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 ((P.round <$> ((self ^. js "videoBitsPerSecond") >>= valToNumber)))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-bitspersecond MediaRecorderOptions.bitsPerSecond specification>
+setBitsPerSecond :: (MonadDOM m) => MediaRecorderOptions -> Word -> m ()
+setBitsPerSecond self val = liftDOM (void (self ^. jss "bitsPerSecond" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-bitspersecond MediaRecorderOptions.bitsPerSecond specification>
+getBitsPerSecond :: (MonadDOM m) => MediaRecorderOptions -> m (Maybe Word)
+getBitsPerSecond self = liftDOM (((self ^. js "bitsPerSecond") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-bitspersecond MediaRecorderOptions.bitsPerSecond specification>
+getBitsPerSecondUnsafe :: (MonadDOM m, HasCallStack) => MediaRecorderOptions -> m Word
+getBitsPerSecondUnsafe self = liftDOM ((((self ^. js "bitsPerSecond") >>= 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 ((P.round <$> ((self ^. js "bitsPerSecond") >>= valToNumber)))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-audiobitratemode MediaRecorderOptions.audioBitrateMode specification>
+setAudioBitrateMode :: (MonadDOM m) => MediaRecorderOptions -> BitrateMode -> m ()
+setAudioBitrateMode self val = liftDOM (void (self ^. jss "audioBitrateMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-audiobitratemode MediaRecorderOptions.audioBitrateMode specification>
+getAudioBitrateMode :: (MonadDOM m) => MediaRecorderOptions -> m (Maybe BitrateMode)
+getAudioBitrateMode self = liftDOM (((self ^. js "audioBitrateMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-audiobitratemode MediaRecorderOptions.audioBitrateMode specification>
+getAudioBitrateModeUnsafe :: (MonadDOM m, HasCallStack) => MediaRecorderOptions -> m BitrateMode
+getAudioBitrateModeUnsafe self = liftDOM ((((self ^. js "audioBitrateMode") >>= 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 (((self ^. js "audioBitrateMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videokeyframeintervalduration MediaRecorderOptions.videoKeyFrameIntervalDuration specification>
+setVideoKeyFrameIntervalDuration :: (MonadDOM m) => MediaRecorderOptions -> Double -> m ()
+setVideoKeyFrameIntervalDuration self val = liftDOM (void (self ^. jss "videoKeyFrameIntervalDuration" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videokeyframeintervalduration MediaRecorderOptions.videoKeyFrameIntervalDuration specification>
+getVideoKeyFrameIntervalDuration :: (MonadDOM m) => MediaRecorderOptions -> m (Maybe Double)
+getVideoKeyFrameIntervalDuration self = liftDOM (((self ^. js "videoKeyFrameIntervalDuration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videokeyframeintervalduration MediaRecorderOptions.videoKeyFrameIntervalDuration specification>
+getVideoKeyFrameIntervalDurationUnsafe :: (MonadDOM m, HasCallStack) => MediaRecorderOptions -> m Double
+getVideoKeyFrameIntervalDurationUnsafe self = liftDOM ((((self ^. js "videoKeyFrameIntervalDuration") >>= 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 (((self ^. js "videoKeyFrameIntervalDuration") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videokeyframeintervalcount MediaRecorderOptions.videoKeyFrameIntervalCount specification>
+setVideoKeyFrameIntervalCount :: (MonadDOM m) => MediaRecorderOptions -> Word -> m ()
+setVideoKeyFrameIntervalCount self val = liftDOM (void (self ^. jss "videoKeyFrameIntervalCount" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videokeyframeintervalcount MediaRecorderOptions.videoKeyFrameIntervalCount specification>
+getVideoKeyFrameIntervalCount :: (MonadDOM m) => MediaRecorderOptions -> m (Maybe Word)
+getVideoKeyFrameIntervalCount self = liftDOM (((self ^. js "videoKeyFrameIntervalCount") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-record/#dom-mediarecorderoptions-videokeyframeintervalcount MediaRecorderOptions.videoKeyFrameIntervalCount specification>
+getVideoKeyFrameIntervalCountUnsafe :: (MonadDOM m, HasCallStack) => MediaRecorderOptions -> m Word
+getVideoKeyFrameIntervalCountUnsafe self = liftDOM ((((self ^. js "videoKeyFrameIntervalCount") >>= 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 ((P.round <$> ((self ^. js "videoKeyFrameIntervalCount") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/MediaRemoteControls.hs b/src/JSDOM/Generated/MediaRemoteControls.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/MediaRemoteControls.hs
+++ /dev/null
@@ -1,61 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.MediaRemoteControls
-       (newMediaRemoteControls, setPreviousTrackEnabled,
-        getPreviousTrackEnabled, setNextTrackEnabled, getNextTrackEnabled,
-        previoustrack, nexttrack, MediaRemoteControls(..),
-        gTypeMediaRemoteControls)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls Mozilla MediaRemoteControls documentation> 
-newMediaRemoteControls :: (MonadDOM m) => m MediaRemoteControls
-newMediaRemoteControls
-  = liftDOM
-      (MediaRemoteControls <$> new (jsg "MediaRemoteControls") ())
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls.previousTrackEnabled Mozilla MediaRemoteControls.previousTrackEnabled documentation> 
-setPreviousTrackEnabled ::
-                        (MonadDOM m) => MediaRemoteControls -> Bool -> m ()
-setPreviousTrackEnabled self val
-  = liftDOM (self ^. jss "previousTrackEnabled" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls.previousTrackEnabled Mozilla MediaRemoteControls.previousTrackEnabled documentation> 
-getPreviousTrackEnabled ::
-                        (MonadDOM m) => MediaRemoteControls -> m Bool
-getPreviousTrackEnabled self
-  = liftDOM ((self ^. js "previousTrackEnabled") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls.nextTrackEnabled Mozilla MediaRemoteControls.nextTrackEnabled documentation> 
-setNextTrackEnabled ::
-                    (MonadDOM m) => MediaRemoteControls -> Bool -> m ()
-setNextTrackEnabled self val
-  = liftDOM (self ^. jss "nextTrackEnabled" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls.nextTrackEnabled Mozilla MediaRemoteControls.nextTrackEnabled documentation> 
-getNextTrackEnabled ::
-                    (MonadDOM m) => MediaRemoteControls -> m Bool
-getNextTrackEnabled self
-  = liftDOM ((self ^. js "nextTrackEnabled") >>= valToBool)
-
--- | <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/JSDOM/Generated/MediaSession.hs b/src/JSDOM/Generated/MediaSession.hs
--- a/src/JSDOM/Generated/MediaSession.hs
+++ b/src/JSDOM/Generated/MediaSession.hs
@@ -1,62 +1,56 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediasession (webref). Do not edit.
 module JSDOM.Generated.MediaSession
-       (newMediaSession, setMetadata, deactivate, getKind, getControls,
-        getControlsUnsafe, getControlsUnchecked, MediaSession(..),
-        gTypeMediaSession)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession Mozilla MediaSession documentation> 
-newMediaSession ::
-                (MonadDOM m) => Maybe MediaSessionKind -> m MediaSession
-newMediaSession kind
-  = liftDOM
-      (MediaSession <$> new (jsg "MediaSession") [toJSVal kind])
+-- | <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 (self ^. jsf "setActionHandler" [toJSVal action, toJSVal handler]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.setMetadata Mozilla MediaSession.setMetadata documentation> 
-setMetadata ::
-            (MonadDOM m) => MediaSession -> Maybe MediaMetadata -> m ()
-setMetadata self metadata
-  = liftDOM (void (self ^. jsf "setMetadata" [toJSVal metadata]))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSession/setCameraActive MDN MediaSession.setCameraActive documentation>
+setCameraActive :: (MonadDOM m) => MediaSession -> Bool -> m ()
+setCameraActive self active = liftDOM (void (((self ^. jsf "setCameraActive" [toJSVal active]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.deactivate Mozilla MediaSession.deactivate documentation> 
-deactivate :: (MonadDOM m) => MediaSession -> m ()
-deactivate self = liftDOM (void (self ^. jsf "deactivate" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSession/setMicrophoneActive MDN MediaSession.setMicrophoneActive documentation>
+setMicrophoneActive :: (MonadDOM m) => MediaSession -> Bool -> m ()
+setMicrophoneActive self active = liftDOM (void (((self ^. jsf "setMicrophoneActive" [toJSVal active]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.kind Mozilla MediaSession.kind documentation> 
-getKind :: (MonadDOM m) => MediaSession -> m MediaSessionKind
-getKind self = liftDOM ((self ^. js "kind") >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "setPositionState" [P.maybe (P.return jsUndefined) toJSVal state]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.controls Mozilla MediaSession.controls documentation> 
-getControls ::
-            (MonadDOM m) => MediaSession -> m (Maybe MediaRemoteControls)
-getControls self = liftDOM ((self ^. js "controls") >>= fromJSVal)
+-- | <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 (self ^. jss "metadata" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.controls Mozilla MediaSession.controls documentation> 
-getControlsUnsafe ::
-                  (MonadDOM m, HasCallStack) => MediaSession -> m MediaRemoteControls
-getControlsUnsafe self
-  = liftDOM
-      (((self ^. js "controls") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSession/metadata MDN MediaSession.metadata documentation>
+getMetadata :: (MonadDOM m) => MediaSession -> m (Maybe MediaMetadata)
+getMetadata self = liftDOM (((self ^. js "metadata") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.controls Mozilla MediaSession.controls documentation> 
-getControlsUnchecked ::
-                     (MonadDOM m) => MediaSession -> m MediaRemoteControls
-getControlsUnchecked self
-  = liftDOM ((self ^. js "controls") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSession/metadata MDN MediaSession.metadata documentation>
+getMetadataUnsafe :: (MonadDOM m, HasCallStack) => MediaSession -> m MediaMetadata
+getMetadataUnsafe self = liftDOM ((((self ^. js "metadata") >>= 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 (((self ^. js "metadata") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSession/playbackState MDN MediaSession.playbackState documentation>
+setPlaybackState :: (MonadDOM m) => MediaSession -> MediaSessionPlaybackState -> m ()
+setPlaybackState self val = liftDOM (void (self ^. jss "playbackState" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSession/playbackState MDN MediaSession.playbackState documentation>
+getPlaybackState :: (MonadDOM m) => MediaSession -> m MediaSessionPlaybackState
+getPlaybackState self = liftDOM (((self ^. js "playbackState") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaSessionActionDetails.hs b/src/JSDOM/Generated/MediaSessionActionDetails.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaSessionActionDetails.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediasession (webref). Do not edit.
+module JSDOM.Generated.MediaSessionActionDetails
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediasession/#dictdef-mediasessionactiondetails MediaSessionActionDetails specification>
+newMediaSessionActionDetails :: (MonadDOM m) => MediaSessionAction -> m MediaSessionActionDetails
+newMediaSessionActionDetails action = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "action" (toJSVal action)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-action MediaSessionActionDetails.action specification>
+setAction :: (MonadDOM m) => MediaSessionActionDetails -> MediaSessionAction -> m ()
+setAction self val = liftDOM (void (self ^. jss "action" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-action MediaSessionActionDetails.action specification>
+getAction :: (MonadDOM m) => MediaSessionActionDetails -> m MediaSessionAction
+getAction self = liftDOM (((self ^. js "action") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-seekoffset MediaSessionActionDetails.seekOffset specification>
+setSeekOffset :: (MonadDOM m) => MediaSessionActionDetails -> Double -> m ()
+setSeekOffset self val = liftDOM (void (self ^. jss "seekOffset" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-seekoffset MediaSessionActionDetails.seekOffset specification>
+getSeekOffset :: (MonadDOM m) => MediaSessionActionDetails -> m (Maybe Double)
+getSeekOffset self = liftDOM (((self ^. js "seekOffset") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-seekoffset MediaSessionActionDetails.seekOffset specification>
+getSeekOffsetUnsafe :: (MonadDOM m, HasCallStack) => MediaSessionActionDetails -> m Double
+getSeekOffsetUnsafe self = liftDOM ((((self ^. js "seekOffset") >>= 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 (((self ^. js "seekOffset") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-seektime MediaSessionActionDetails.seekTime specification>
+setSeekTime :: (MonadDOM m) => MediaSessionActionDetails -> Double -> m ()
+setSeekTime self val = liftDOM (void (self ^. jss "seekTime" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-seektime MediaSessionActionDetails.seekTime specification>
+getSeekTime :: (MonadDOM m) => MediaSessionActionDetails -> m (Maybe Double)
+getSeekTime self = liftDOM (((self ^. js "seekTime") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-seektime MediaSessionActionDetails.seekTime specification>
+getSeekTimeUnsafe :: (MonadDOM m, HasCallStack) => MediaSessionActionDetails -> m Double
+getSeekTimeUnsafe self = liftDOM ((((self ^. js "seekTime") >>= 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 (((self ^. js "seekTime") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-fastseek MediaSessionActionDetails.fastSeek specification>
+setFastSeek :: (MonadDOM m) => MediaSessionActionDetails -> Bool -> m ()
+setFastSeek self val = liftDOM (void (self ^. jss "fastSeek" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-fastseek MediaSessionActionDetails.fastSeek specification>
+getFastSeek :: (MonadDOM m) => MediaSessionActionDetails -> m (Maybe Bool)
+getFastSeek self = liftDOM (((self ^. js "fastSeek") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-fastseek MediaSessionActionDetails.fastSeek specification>
+getFastSeekUnsafe :: (MonadDOM m, HasCallStack) => MediaSessionActionDetails -> m Bool
+getFastSeekUnsafe self = liftDOM ((((self ^. js "fastSeek") >>= 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 (((self ^. js "fastSeek") >>= valToBool))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-isactivating MediaSessionActionDetails.isActivating specification>
+setIsActivating :: (MonadDOM m) => MediaSessionActionDetails -> Bool -> m ()
+setIsActivating self val = liftDOM (void (self ^. jss "isActivating" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-isactivating MediaSessionActionDetails.isActivating specification>
+getIsActivating :: (MonadDOM m) => MediaSessionActionDetails -> m (Maybe Bool)
+getIsActivating self = liftDOM (((self ^. js "isActivating") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-isactivating MediaSessionActionDetails.isActivating specification>
+getIsActivatingUnsafe :: (MonadDOM m, HasCallStack) => MediaSessionActionDetails -> m Bool
+getIsActivatingUnsafe self = liftDOM ((((self ^. js "isActivating") >>= 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 (((self ^. js "isActivating") >>= valToBool))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-enterpictureinpicturereason MediaSessionActionDetails.enterPictureInPictureReason specification>
+setEnterPictureInPictureReason :: (MonadDOM m) => MediaSessionActionDetails -> MediaSessionEnterPictureInPictureReason -> m ()
+setEnterPictureInPictureReason self val = liftDOM (void (self ^. jss "enterPictureInPictureReason" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-enterpictureinpicturereason MediaSessionActionDetails.enterPictureInPictureReason specification>
+getEnterPictureInPictureReason :: (MonadDOM m) => MediaSessionActionDetails -> m (Maybe MediaSessionEnterPictureInPictureReason)
+getEnterPictureInPictureReason self = liftDOM (((self ^. js "enterPictureInPictureReason") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediasession/#dom-mediasessionactiondetails-enterpictureinpicturereason MediaSessionActionDetails.enterPictureInPictureReason specification>
+getEnterPictureInPictureReasonUnsafe :: (MonadDOM m, HasCallStack) => MediaSessionActionDetails -> m MediaSessionEnterPictureInPictureReason
+getEnterPictureInPictureReasonUnsafe self = liftDOM ((((self ^. js "enterPictureInPictureReason") >>= 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 (((self ^. js "enterPictureInPictureReason") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaSessionActionHandler.hs b/src/JSDOM/Generated/MediaSessionActionHandler.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaSessionActionHandler.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediasession (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newMediaSessionActionHandler :: (MonadDOM m) => (MediaSessionActionDetails -> JSM ()) -> m MediaSessionActionHandler
+newMediaSessionActionHandler callback = liftDOM (MediaSessionActionHandler . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (details : _) -> do
+          details' <- fromJSValUnchecked details
+          callback details'))
+
+newMediaSessionActionHandlerSync :: (MonadDOM m) => (MediaSessionActionDetails -> JSM ()) -> m MediaSessionActionHandler
+newMediaSessionActionHandlerSync callback = liftDOM (MediaSessionActionHandler . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (details : _) -> do
+          details' <- fromJSValUnchecked details
+          callback details'))
+
+newMediaSessionActionHandlerAsync :: (MonadDOM m) => (MediaSessionActionDetails -> JSM ()) -> m MediaSessionActionHandler
+newMediaSessionActionHandlerAsync callback = liftDOM (MediaSessionActionHandler . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (details : _) -> do
+          details' <- fromJSValUnchecked details
+          callback details'))
diff --git a/src/JSDOM/Generated/MediaSettingsRange.hs b/src/JSDOM/Generated/MediaSettingsRange.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaSettingsRange.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from image-capture (webref). Do not edit.
+module JSDOM.Generated.MediaSettingsRange
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-image/#dictdef-mediasettingsrange MediaSettingsRange specification>
+newMediaSettingsRange :: (MonadDOM m) => m MediaSettingsRange
+newMediaSettingsRange = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-max MediaSettingsRange.max specification>
+setMax :: (MonadDOM m) => MediaSettingsRange -> Double -> m ()
+setMax self val = liftDOM (void (self ^. jss "max" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-max MediaSettingsRange.max specification>
+getMax :: (MonadDOM m) => MediaSettingsRange -> m (Maybe Double)
+getMax self = liftDOM (((self ^. js "max") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-max MediaSettingsRange.max specification>
+getMaxUnsafe :: (MonadDOM m, HasCallStack) => MediaSettingsRange -> m Double
+getMaxUnsafe self = liftDOM ((((self ^. js "max") >>= 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 (((self ^. js "max") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-min MediaSettingsRange.min specification>
+setMin :: (MonadDOM m) => MediaSettingsRange -> Double -> m ()
+setMin self val = liftDOM (void (self ^. jss "min" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-min MediaSettingsRange.min specification>
+getMin :: (MonadDOM m) => MediaSettingsRange -> m (Maybe Double)
+getMin self = liftDOM (((self ^. js "min") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-min MediaSettingsRange.min specification>
+getMinUnsafe :: (MonadDOM m, HasCallStack) => MediaSettingsRange -> m Double
+getMinUnsafe self = liftDOM ((((self ^. js "min") >>= 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 (((self ^. js "min") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-step MediaSettingsRange.step specification>
+setStep :: (MonadDOM m) => MediaSettingsRange -> Double -> m ()
+setStep self val = liftDOM (void (self ^. jss "step" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-step MediaSettingsRange.step specification>
+getStep :: (MonadDOM m) => MediaSettingsRange -> m (Maybe Double)
+getStep self = liftDOM (((self ^. js "step") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediasettingsrange-step MediaSettingsRange.step specification>
+getStepUnsafe :: (MonadDOM m, HasCallStack) => MediaSettingsRange -> m Double
+getStepUnsafe self = liftDOM ((((self ^. js "step") >>= 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 (((self ^. js "step") >>= valToNumber))
diff --git a/src/JSDOM/Generated/MediaSource.hs b/src/JSDOM/Generated/MediaSource.hs
--- a/src/JSDOM/Generated/MediaSource.hs
+++ b/src/JSDOM/Generated/MediaSource.hs
@@ -1,126 +1,92 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-source-2 (webref). Do not edit.
 module JSDOM.Generated.MediaSource
-       (newMediaSource, addSourceBuffer, addSourceBuffer_,
-        removeSourceBuffer, endOfStream, isTypeSupported, isTypeSupported_,
-        setLiveSeekableRange, clearLiveSeekableRange, getSourceBuffers,
-        getActiveSourceBuffers, setDuration, getDuration, getReadyState,
-        sourceopen, sourceended, sourceclose, MediaSource(..),
-        gTypeMediaSource)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource Mozilla MediaSource documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/MediaSource MDN MediaSource. documentation>
 newMediaSource :: (MonadDOM m) => m MediaSource
-newMediaSource
-  = liftDOM (MediaSource <$> new (jsg "MediaSource") ())
+newMediaSource = liftDOM (((new (jsg "MediaSource") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.addSourceBuffer Mozilla MediaSource.addSourceBuffer documentation> 
-addSourceBuffer ::
-                (MonadDOM m, ToJSString type') =>
-                  MediaSource -> type' -> m SourceBuffer
-addSourceBuffer self type'
-  = liftDOM
-      ((self ^. jsf "addSourceBuffer" [toJSVal type']) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "addSourceBuffer" [toJSVal type']) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.addSourceBuffer Mozilla MediaSource.addSourceBuffer documentation> 
-addSourceBuffer_ ::
-                 (MonadDOM m, ToJSString type') => MediaSource -> type' -> m ()
-addSourceBuffer_ self type'
-  = liftDOM (void (self ^. jsf "addSourceBuffer" [toJSVal 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 (self ^. jsf "addSourceBuffer" [toJSVal type']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.removeSourceBuffer Mozilla MediaSource.removeSourceBuffer documentation> 
-removeSourceBuffer ::
-                   (MonadDOM m) => MediaSource -> SourceBuffer -> m ()
-removeSourceBuffer self buffer
-  = liftDOM
-      (void (self ^. jsf "removeSourceBuffer" [toJSVal buffer]))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/clearLiveSeekableRange MDN MediaSource.clearLiveSeekableRange documentation>
+clearLiveSeekableRange :: (MonadDOM m) => MediaSource -> m ()
+clearLiveSeekableRange self = liftDOM (void (self ^. jsf "clearLiveSeekableRange" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.endOfStream Mozilla MediaSource.endOfStream documentation> 
-endOfStream ::
-            (MonadDOM m) => MediaSource -> Maybe EndOfStreamError -> m ()
-endOfStream self error
-  = liftDOM (void (self ^. jsf "endOfStream" [toJSVal error]))
+-- | <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 (self ^. jsf "endOfStream" [P.maybe (P.return jsUndefined) toJSVal error]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.isTypeSupported Mozilla MediaSource.isTypeSupported documentation> 
-isTypeSupported ::
-                (MonadDOM m, ToJSString type') => type' -> m Bool
-isTypeSupported type'
-  = liftDOM
-      (((jsg "MediaSource") ^. jsf "isTypeSupported" [toJSVal type']) >>=
-         valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/removeSourceBuffer MDN MediaSource.removeSourceBuffer documentation>
+removeSourceBuffer :: (MonadDOM m) => MediaSource -> SourceBuffer -> m ()
+removeSourceBuffer self sourceBuffer = liftDOM (void (self ^. jsf "removeSourceBuffer" [toJSVal sourceBuffer]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.isTypeSupported Mozilla MediaSource.isTypeSupported documentation> 
+-- | <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 (self ^. jsf "setLiveSeekableRange" [toJSVal start, toJSVal end]))
+
+-- | <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 ((((jsg "MediaSource") ^. jsf "isTypeSupported" [toJSVal type']) >>= valToBool))
+
+-- | <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
-         ((jsg "MediaSource") ^. jsf "isTypeSupported" [toJSVal type']))
+isTypeSupported_ type' = liftDOM (void ((jsg "MediaSource") ^. jsf "isTypeSupported" [toJSVal type']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.setLiveSeekableRange Mozilla MediaSource.setLiveSeekableRange documentation> 
-setLiveSeekableRange ::
-                     (MonadDOM m) => MediaSource -> Double -> Double -> m ()
-setLiveSeekableRange self start end
-  = liftDOM
-      (void
-         (self ^. jsf "setLiveSeekableRange" [toJSVal start, toJSVal end]))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/handle MDN MediaSource.handle documentation>
+getHandle :: (MonadDOM m) => MediaSource -> m MediaSourceHandle
+getHandle self = liftDOM (((self ^. js "handle") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.clearLiveSeekableRange Mozilla MediaSource.clearLiveSeekableRange documentation> 
-clearLiveSeekableRange :: (MonadDOM m) => MediaSource -> m ()
-clearLiveSeekableRange self
-  = liftDOM (void (self ^. jsf "clearLiveSeekableRange" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/sourceBuffers MDN MediaSource.sourceBuffers documentation>
+getSourceBuffers :: (MonadDOM m) => MediaSource -> m SourceBufferList
+getSourceBuffers self = liftDOM (((self ^. js "sourceBuffers") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.sourceBuffers Mozilla MediaSource.sourceBuffers documentation> 
-getSourceBuffers ::
-                 (MonadDOM m) => MediaSource -> m SourceBufferList
-getSourceBuffers self
-  = liftDOM ((self ^. js "sourceBuffers") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/activeSourceBuffers MDN MediaSource.activeSourceBuffers documentation>
+getActiveSourceBuffers :: (MonadDOM m) => MediaSource -> m SourceBufferList
+getActiveSourceBuffers self = liftDOM (((self ^. js "activeSourceBuffers") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.activeSourceBuffers Mozilla MediaSource.activeSourceBuffers documentation> 
-getActiveSourceBuffers ::
-                       (MonadDOM m) => MediaSource -> m SourceBufferList
-getActiveSourceBuffers self
-  = liftDOM
-      ((self ^. js "activeSourceBuffers") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/readyState MDN MediaSource.readyState documentation>
+getReadyState :: (MonadDOM m) => MediaSource -> m ReadyState
+getReadyState self = liftDOM (((self ^. js "readyState") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.duration Mozilla MediaSource.duration documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/duration MDN MediaSource.duration documentation>
 setDuration :: (MonadDOM m) => MediaSource -> Double -> m ()
-setDuration self val
-  = liftDOM (self ^. jss "duration" (toJSVal val))
+setDuration self val = liftDOM (void (self ^. jss "duration" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.duration Mozilla MediaSource.duration documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/duration MDN MediaSource.duration documentation>
 getDuration :: (MonadDOM m) => MediaSource -> m Double
-getDuration self
-  = liftDOM ((self ^. js "duration") >>= valToNumber)
+getDuration self = liftDOM (((self ^. js "duration") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.readyState Mozilla MediaSource.readyState documentation> 
-getReadyState :: (MonadDOM m) => MediaSource -> m ReadyState
-getReadyState self
-  = liftDOM ((self ^. js "readyState") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaSource/canConstructInDedicatedWorker_static MDN MediaSource.canConstructInDedicatedWorker documentation>
+getCanConstructInDedicatedWorkerStatic :: (MonadDOM m) => m Bool
+getCanConstructInDedicatedWorkerStatic = liftDOM ((((jsg "MediaSource") ^. js "canConstructInDedicatedWorker") >>= valToBool))
 
--- | <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/JSDOM/Generated/MediaSourceHandle.hs b/src/JSDOM/Generated/MediaSourceHandle.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaSourceHandle.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-source-2 (webref). Do not edit.
+module JSDOM.Generated.MediaSourceHandle
+       (MediaSourceHandle(..), gTypeMediaSourceHandle)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/MediaStream.hs b/src/JSDOM/Generated/MediaStream.hs
--- a/src/JSDOM/Generated/MediaStream.hs
+++ b/src/JSDOM/Generated/MediaStream.hs
@@ -1,139 +1,100 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
 module JSDOM.Generated.MediaStream
-       (newMediaStream, newMediaStream', newMediaStream'', getAudioTracks,
-        getAudioTracks_, getVideoTracks, getVideoTracks_, getTracks,
-        getTracks_, getTrackById, getTrackById_, addTrack, removeTrack,
-        clone, clone_, getId, getActive, addTrackEvent, removeTrackEvent,
-        active, inactive, MediaStream(..), gTypeMediaStream)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/MediaStream MDN MediaStream. documentation>
 newMediaStream :: (MonadDOM m) => m MediaStream
-newMediaStream
-  = liftDOM (MediaStream <$> new (jsg "MediaStream") ())
+newMediaStream = liftDOM (((new (jsg "MediaStream") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/MediaStream MDN MediaStream. documentation>
 newMediaStream' :: (MonadDOM m) => MediaStream -> m MediaStream
-newMediaStream' stream
-  = liftDOM
-      (MediaStream <$> new (jsg "MediaStream") [toJSVal stream])
+newMediaStream' stream = liftDOM (((new (jsg "MediaStream") [toJSVal stream]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation> 
-newMediaStream'' ::
-                 (MonadDOM m, IsMediaStreamTrack tracks) =>
-                   [tracks] -> m MediaStream
-newMediaStream'' tracks
-  = liftDOM
-      (MediaStream <$> new (jsg "MediaStream") [toJSVal (array tracks)])
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/MediaStream MDN MediaStream. documentation>
+newMediaStream'' :: (MonadDOM m, IsMediaStreamTrack tracks) => [tracks] -> m MediaStream
+newMediaStream'' tracks = liftDOM (((new (jsg "MediaStream") [toJSVal tracks]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getAudioTracks Mozilla webkitMediaStream.getAudioTracks documentation> 
-getAudioTracks ::
-               (MonadDOM m) => MediaStream -> m [MediaStreamTrack]
-getAudioTracks self
-  = liftDOM
-      ((self ^. jsf "getAudioTracks" ()) >>= fromJSArrayUnchecked)
+-- | <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 (self ^. jsf "addTrack" [toJSVal track]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getAudioTracks Mozilla webkitMediaStream.getAudioTracks documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/clone MDN MediaStream.clone documentation>
+clone :: (MonadDOM m) => MediaStream -> m MediaStream
+clone self = liftDOM (((self ^. jsf "clone" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/clone MDN MediaStream.clone documentation>
+clone_ :: (MonadDOM m) => MediaStream -> m ()
+clone_ self = liftDOM (void (self ^. jsf "clone" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/getAudioTracks MDN MediaStream.getAudioTracks documentation>
+getAudioTracks :: (MonadDOM m) => MediaStream -> m [MediaStreamTrack]
+getAudioTracks self = liftDOM (((self ^. jsf "getAudioTracks" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/getAudioTracks MDN MediaStream.getAudioTracks documentation>
 getAudioTracks_ :: (MonadDOM m) => MediaStream -> m ()
-getAudioTracks_ self
-  = liftDOM (void (self ^. jsf "getAudioTracks" ()))
+getAudioTracks_ self = liftDOM (void (self ^. jsf "getAudioTracks" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getVideoTracks Mozilla webkitMediaStream.getVideoTracks documentation> 
-getVideoTracks ::
-               (MonadDOM m) => MediaStream -> m [MediaStreamTrack]
-getVideoTracks self
-  = liftDOM
-      ((self ^. jsf "getVideoTracks" ()) >>= fromJSArrayUnchecked)
+-- | <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 (((self ^. jsf "getTrackById" [toJSVal trackId]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getVideoTracks Mozilla webkitMediaStream.getVideoTracks documentation> 
-getVideoTracks_ :: (MonadDOM m) => MediaStream -> m ()
-getVideoTracks_ self
-  = liftDOM (void (self ^. jsf "getVideoTracks" ()))
+-- | <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 (self ^. jsf "getTrackById" [toJSVal trackId]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getTracks Mozilla webkitMediaStream.getTracks documentation> 
+-- | <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 ((((self ^. jsf "getTrackById" [toJSVal trackId]) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <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 (((self ^. jsf "getTrackById" [toJSVal trackId]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/getTracks MDN MediaStream.getTracks documentation>
 getTracks :: (MonadDOM m) => MediaStream -> m [MediaStreamTrack]
-getTracks self
-  = liftDOM ((self ^. jsf "getTracks" ()) >>= fromJSArrayUnchecked)
+getTracks self = liftDOM (((self ^. jsf "getTracks" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getTracks Mozilla webkitMediaStream.getTracks documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/getTracks MDN MediaStream.getTracks documentation>
 getTracks_ :: (MonadDOM m) => MediaStream -> m ()
 getTracks_ self = liftDOM (void (self ^. jsf "getTracks" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getTrackById Mozilla webkitMediaStream.getTrackById documentation> 
-getTrackById ::
-             (MonadDOM m, ToJSString trackId) =>
-               MediaStream -> trackId -> m MediaStreamTrack
-getTrackById self trackId
-  = liftDOM
-      ((self ^. jsf "getTrackById" [toJSVal trackId]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getTrackById Mozilla webkitMediaStream.getTrackById documentation> 
-getTrackById_ ::
-              (MonadDOM m, ToJSString trackId) => MediaStream -> trackId -> m ()
-getTrackById_ self trackId
-  = liftDOM (void (self ^. jsf "getTrackById" [toJSVal trackId]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.addTrack Mozilla webkitMediaStream.addTrack documentation> 
-addTrack ::
-         (MonadDOM m, IsMediaStreamTrack track) =>
-           MediaStream -> track -> m ()
-addTrack self track
-  = liftDOM (void (self ^. jsf "addTrack" [toJSVal track]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.removeTrack Mozilla webkitMediaStream.removeTrack documentation> 
-removeTrack ::
-            (MonadDOM m, IsMediaStreamTrack track) =>
-              MediaStream -> track -> m ()
-removeTrack self track
-  = liftDOM (void (self ^. jsf "removeTrack" [toJSVal track]))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/getVideoTracks MDN MediaStream.getVideoTracks documentation>
+getVideoTracks :: (MonadDOM m) => MediaStream -> m [MediaStreamTrack]
+getVideoTracks self = liftDOM (((self ^. jsf "getVideoTracks" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.clone Mozilla webkitMediaStream.clone documentation> 
-clone :: (MonadDOM m) => MediaStream -> m MediaStream
-clone self
-  = liftDOM ((self ^. jsf "clone" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/getVideoTracks MDN MediaStream.getVideoTracks documentation>
+getVideoTracks_ :: (MonadDOM m) => MediaStream -> m ()
+getVideoTracks_ self = liftDOM (void (self ^. jsf "getVideoTracks" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.clone Mozilla webkitMediaStream.clone documentation> 
-clone_ :: (MonadDOM m) => MediaStream -> m ()
-clone_ self = liftDOM (void (self ^. jsf "clone" ()))
+-- | <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 (self ^. jsf "removeTrack" [toJSVal track]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.id Mozilla webkitMediaStream.id documentation> 
-getId ::
-      (MonadDOM m, FromJSString result) => MediaStream -> m result
-getId self = liftDOM ((self ^. js "id") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/id MDN MediaStream.id documentation>
+getId :: (MonadDOM m, FromJSString result) => MediaStream -> m result
+getId self = liftDOM (((self ^. js "id") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.active Mozilla webkitMediaStream.active documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStream/active MDN MediaStream.active documentation>
 getActive :: (MonadDOM m) => MediaStream -> m Bool
-getActive self = liftDOM ((self ^. js "active") >>= valToBool)
+getActive self = liftDOM (((self ^. js "active") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.onaddtrack Mozilla webkitMediaStream.onaddtrack documentation> 
-addTrackEvent :: EventName MediaStream Event
+-- | <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.onremovetrack Mozilla webkitMediaStream.onremovetrack documentation> 
-removeTrackEvent :: EventName MediaStream Event
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastream-onremovetrack removetrack event>
+removeTrackEvent :: EventName MediaStream MediaStreamTrackEvent
 removeTrackEvent = unsafeEventName (toJSString "removetrack")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.onactive Mozilla webkitMediaStream.onactive documentation> 
-active :: EventName MediaStream Event
-active = unsafeEventName (toJSString "active")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.oninactive Mozilla webkitMediaStream.oninactive documentation> 
-inactive :: EventName MediaStream Event
-inactive = unsafeEventName (toJSString "inactive")
diff --git a/src/JSDOM/Generated/MediaStreamAudioDestinationNode.hs b/src/JSDOM/Generated/MediaStreamAudioDestinationNode.hs
--- a/src/JSDOM/Generated/MediaStreamAudioDestinationNode.hs
+++ b/src/JSDOM/Generated/MediaStreamAudioDestinationNode.hs
@@ -1,27 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.MediaStreamAudioDestinationNode
-       (getStream, MediaStreamAudioDestinationNode(..),
-        gTypeMediaStreamAudioDestinationNode)
+       (newMediaStreamAudioDestinationNode, getStream, MediaStreamAudioDestinationNode(..), gTypeMediaStreamAudioDestinationNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioDestinationNode.stream Mozilla MediaStreamAudioDestinationNode.stream documentation> 
-getStream ::
-          (MonadDOM m) => MediaStreamAudioDestinationNode -> m MediaStream
-getStream self
-  = liftDOM ((self ^. js "stream") >>= fromJSValUnchecked)
+-- | <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 (((new (jsg "MediaStreamAudioDestinationNode") [toJSVal context, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamAudioDestinationNode/stream MDN MediaStreamAudioDestinationNode.stream documentation>
+getStream :: (MonadDOM m) => MediaStreamAudioDestinationNode -> m MediaStream
+getStream self = liftDOM (((self ^. js "stream") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaStreamAudioSourceNode.hs b/src/JSDOM/Generated/MediaStreamAudioSourceNode.hs
--- a/src/JSDOM/Generated/MediaStreamAudioSourceNode.hs
+++ b/src/JSDOM/Generated/MediaStreamAudioSourceNode.hs
@@ -1,27 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.MediaStreamAudioSourceNode
-       (getMediaStream, MediaStreamAudioSourceNode(..),
-        gTypeMediaStreamAudioSourceNode)
+       (newMediaStreamAudioSourceNode, getMediaStream, MediaStreamAudioSourceNode(..), gTypeMediaStreamAudioSourceNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioSourceNode.mediaStream Mozilla MediaStreamAudioSourceNode.mediaStream documentation> 
-getMediaStream ::
-               (MonadDOM m) => MediaStreamAudioSourceNode -> m MediaStream
-getMediaStream self
-  = liftDOM ((self ^. js "mediaStream") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamAudioSourceNode/MediaStreamAudioSourceNode MDN MediaStreamAudioSourceNode. documentation>
+newMediaStreamAudioSourceNode :: (MonadDOM m) => AudioContext -> MediaStreamAudioSourceOptions -> m MediaStreamAudioSourceNode
+newMediaStreamAudioSourceNode context options = liftDOM (((new (jsg "MediaStreamAudioSourceNode") [toJSVal context, toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamAudioSourceNode/mediaStream MDN MediaStreamAudioSourceNode.mediaStream documentation>
+getMediaStream :: (MonadDOM m) => MediaStreamAudioSourceNode -> m MediaStream
+getMediaStream self = liftDOM (((self ^. js "mediaStream") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaStreamAudioSourceOptions.hs b/src/JSDOM/Generated/MediaStreamAudioSourceOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaStreamAudioSourceOptions.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.MediaStreamAudioSourceOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#MediaStreamAudioSourceOptions MediaStreamAudioSourceOptions specification>
+newMediaStreamAudioSourceOptions :: (MonadDOM m) => MediaStream -> m MediaStreamAudioSourceOptions
+newMediaStreamAudioSourceOptions mediaStream = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "mediaStream" (toJSVal mediaStream)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-mediastreamaudiosourceoptions-mediastream MediaStreamAudioSourceOptions.mediaStream specification>
+setMediaStream :: (MonadDOM m) => MediaStreamAudioSourceOptions -> MediaStream -> m ()
+setMediaStream self val = liftDOM (void (self ^. jss "mediaStream" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-mediastreamaudiosourceoptions-mediastream MediaStreamAudioSourceOptions.mediaStream specification>
+getMediaStream :: (MonadDOM m) => MediaStreamAudioSourceOptions -> m MediaStream
+getMediaStream self = liftDOM (((self ^. js "mediaStream") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaStreamConstraints.hs b/src/JSDOM/Generated/MediaStreamConstraints.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaStreamConstraints.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module JSDOM.Generated.MediaStreamConstraints
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamconstraints MediaStreamConstraints specification>
+newMediaStreamConstraints :: (MonadDOM m) => m MediaStreamConstraints
+newMediaStreamConstraints = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "video" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamconstraints-video MediaStreamConstraints.video specification>
+getVideo :: (MonadDOM m) => MediaStreamConstraints -> m (Maybe BoolOrMediaTrackConstraints)
+getVideo self = liftDOM (((self ^. js "video") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamconstraints-video MediaStreamConstraints.video specification>
+getVideoUnsafe :: (MonadDOM m, HasCallStack) => MediaStreamConstraints -> m BoolOrMediaTrackConstraints
+getVideoUnsafe self = liftDOM ((((self ^. js "video") >>= 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 (((self ^. js "video") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "audio" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamconstraints-audio MediaStreamConstraints.audio specification>
+getAudio :: (MonadDOM m) => MediaStreamConstraints -> m (Maybe BoolOrMediaTrackConstraints)
+getAudio self = liftDOM (((self ^. js "audio") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamconstraints-audio MediaStreamConstraints.audio specification>
+getAudioUnsafe :: (MonadDOM m, HasCallStack) => MediaStreamConstraints -> m BoolOrMediaTrackConstraints
+getAudioUnsafe self = liftDOM ((((self ^. js "audio") >>= 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 (((self ^. js "audio") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediastreamconstraints-semantics MediaStreamConstraints.semantics specification>
+setSemantics :: (MonadDOM m) => MediaStreamConstraints -> GetUserMediaSemantics -> m ()
+setSemantics self val = liftDOM (void (self ^. jss "semantics" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediastreamconstraints-semantics MediaStreamConstraints.semantics specification>
+getSemantics :: (MonadDOM m) => MediaStreamConstraints -> m (Maybe GetUserMediaSemantics)
+getSemantics self = liftDOM (((self ^. js "semantics") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediastreamconstraints-semantics MediaStreamConstraints.semantics specification>
+getSemanticsUnsafe :: (MonadDOM m, HasCallStack) => MediaStreamConstraints -> m GetUserMediaSemantics
+getSemanticsUnsafe self = liftDOM ((((self ^. js "semantics") >>= 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 (((self ^. js "semantics") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/prefer-current-tab/#dom-mediastreamconstraints-prefercurrenttab MediaStreamConstraints.preferCurrentTab specification>
+setPreferCurrentTab :: (MonadDOM m) => MediaStreamConstraints -> Bool -> m ()
+setPreferCurrentTab self val = liftDOM (void (self ^. jss "preferCurrentTab" (toJSVal val)))
+
+-- | <https://wicg.github.io/prefer-current-tab/#dom-mediastreamconstraints-prefercurrenttab MediaStreamConstraints.preferCurrentTab specification>
+getPreferCurrentTab :: (MonadDOM m) => MediaStreamConstraints -> m (Maybe Bool)
+getPreferCurrentTab self = liftDOM (((self ^. js "preferCurrentTab") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/prefer-current-tab/#dom-mediastreamconstraints-prefercurrenttab MediaStreamConstraints.preferCurrentTab specification>
+getPreferCurrentTabUnsafe :: (MonadDOM m, HasCallStack) => MediaStreamConstraints -> m Bool
+getPreferCurrentTabUnsafe self = liftDOM ((((self ^. js "preferCurrentTab") >>= 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 (((self ^. js "preferCurrentTab") >>= valToBool))
+
+-- | <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 (self ^. jss "peerIdentity" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-identity/#dom-mediastreamconstraints-peeridentity MediaStreamConstraints.peerIdentity specification>
+getPeerIdentity :: (MonadDOM m, FromJSString result) => MediaStreamConstraints -> m (Maybe result)
+getPeerIdentity self = liftDOM (((self ^. js "peerIdentity") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webrtc-identity/#dom-mediastreamconstraints-peeridentity MediaStreamConstraints.peerIdentity specification>
+getPeerIdentityUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaStreamConstraints -> m result
+getPeerIdentityUnsafe self = liftDOM ((((self ^. js "peerIdentity") >>= fromMaybeJSString) >>= 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 (((self ^. js "peerIdentity") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaStreamEvent.hs b/src/JSDOM/Generated/MediaStreamEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/MediaStreamEvent.hs
+++ /dev/null
@@ -1,50 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.MediaStreamEvent
-       (newMediaStreamEvent, getStream, getStreamUnsafe,
-        getStreamUnchecked, MediaStreamEvent(..), gTypeMediaStreamEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent Mozilla MediaStreamEvent documentation> 
-newMediaStreamEvent ::
-                    (MonadDOM m, ToJSString type') =>
-                      type' -> Maybe MediaStreamEventInit -> m MediaStreamEvent
-newMediaStreamEvent type' eventInitDict
-  = liftDOM
-      (MediaStreamEvent <$>
-         new (jsg "MediaStreamEvent")
-           [toJSVal type', toJSVal eventInitDict])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent.stream Mozilla MediaStreamEvent.stream documentation> 
-getStream ::
-          (MonadDOM m) => MediaStreamEvent -> m (Maybe MediaStream)
-getStream self = liftDOM ((self ^. js "stream") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent.stream Mozilla MediaStreamEvent.stream documentation> 
-getStreamUnsafe ::
-                (MonadDOM m, HasCallStack) => MediaStreamEvent -> m MediaStream
-getStreamUnsafe self
-  = liftDOM
-      (((self ^. js "stream") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent.stream Mozilla MediaStreamEvent.stream documentation> 
-getStreamUnchecked ::
-                   (MonadDOM m) => MediaStreamEvent -> m MediaStream
-getStreamUnchecked self
-  = liftDOM ((self ^. js "stream") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/MediaStreamTrack.hs b/src/JSDOM/Generated/MediaStreamTrack.hs
--- a/src/JSDOM/Generated/MediaStreamTrack.hs
+++ b/src/JSDOM/Generated/MediaStreamTrack.hs
@@ -1,178 +1,104 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
 module JSDOM.Generated.MediaStreamTrack
-       (clone, clone_, stop, getCapabilities, getCapabilities_,
-        getConstraints, getConstraints_, getSettings, getSettings_,
-        applyConstraints, getKind, getId, getLabel, setEnabled, getEnabled,
-        getMuted, mute, unmute, getReadyState, ended, overConstrained,
-        MediaStreamTrack(..), gTypeMediaStreamTrack, IsMediaStreamTrack,
-        toMediaStreamTrack)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.clone Mozilla MediaStreamTrack.clone documentation> 
-clone ::
-      (MonadDOM m, IsMediaStreamTrack self) => self -> m MediaStreamTrack
-clone self
-  = liftDOM
-      (((toMediaStreamTrack self) ^. jsf "clone" ()) >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toMediaStreamTrack self) ^. jsf "applyConstraints" [P.maybe (P.return jsUndefined) toJSVal constraints]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.clone Mozilla MediaStreamTrack.clone documentation> 
-clone_ :: (MonadDOM m, IsMediaStreamTrack self) => self -> m ()
-clone_ self
-  = liftDOM (void ((toMediaStreamTrack self) ^. jsf "clone" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/clone MDN MediaStreamTrack.clone documentation>
+clone :: (MonadDOM m, IsMediaStreamTrack self) => self -> m MediaStreamTrack
+clone self = liftDOM ((((Types.toMediaStreamTrack self) ^. jsf "clone" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.stop Mozilla MediaStreamTrack.stop documentation> 
-stop :: (MonadDOM m, IsMediaStreamTrack self) => self -> m ()
-stop self
-  = liftDOM (void ((toMediaStreamTrack self) ^. jsf "stop" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/clone MDN MediaStreamTrack.clone documentation>
+clone_ :: (MonadDOM m, IsMediaStreamTrack self) => self -> m ()
+clone_ self = liftDOM (void ((Types.toMediaStreamTrack self) ^. jsf "clone" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getCapabilities Mozilla MediaStreamTrack.getCapabilities documentation> 
-getCapabilities ::
-                (MonadDOM m, IsMediaStreamTrack self) =>
-                  self -> m MediaTrackCapabilities
-getCapabilities self
-  = liftDOM
-      (((toMediaStreamTrack self) ^. jsf "getCapabilities" ()) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getCapabilities MDN MediaStreamTrack.getCapabilities documentation>
+getCapabilities :: (MonadDOM m, IsMediaStreamTrack self) => self -> m MediaTrackCapabilities
+getCapabilities self = liftDOM ((((Types.toMediaStreamTrack self) ^. jsf "getCapabilities" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getCapabilities Mozilla MediaStreamTrack.getCapabilities documentation> 
-getCapabilities_ ::
-                 (MonadDOM m, IsMediaStreamTrack self) => self -> m ()
-getCapabilities_ self
-  = liftDOM
-      (void ((toMediaStreamTrack self) ^. jsf "getCapabilities" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getCapabilities MDN MediaStreamTrack.getCapabilities documentation>
+getCapabilities_ :: (MonadDOM m, IsMediaStreamTrack self) => self -> m ()
+getCapabilities_ self = liftDOM (void ((Types.toMediaStreamTrack self) ^. jsf "getCapabilities" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getConstraints Mozilla MediaStreamTrack.getConstraints documentation> 
-getConstraints ::
-               (MonadDOM m, IsMediaStreamTrack self) =>
-                 self -> m MediaTrackConstraints
-getConstraints self
-  = liftDOM
-      (((toMediaStreamTrack self) ^. jsf "getConstraints" ()) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getConstraints MDN MediaStreamTrack.getConstraints documentation>
+getConstraints :: (MonadDOM m, IsMediaStreamTrack self) => self -> m MediaTrackConstraints
+getConstraints self = liftDOM ((((Types.toMediaStreamTrack self) ^. jsf "getConstraints" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getConstraints Mozilla MediaStreamTrack.getConstraints documentation> 
-getConstraints_ ::
-                (MonadDOM m, IsMediaStreamTrack self) => self -> m ()
-getConstraints_ self
-  = liftDOM
-      (void ((toMediaStreamTrack self) ^. jsf "getConstraints" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getConstraints MDN MediaStreamTrack.getConstraints documentation>
+getConstraints_ :: (MonadDOM m, IsMediaStreamTrack self) => self -> m ()
+getConstraints_ self = liftDOM (void ((Types.toMediaStreamTrack self) ^. jsf "getConstraints" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getSettings Mozilla MediaStreamTrack.getSettings documentation> 
-getSettings ::
-            (MonadDOM m, IsMediaStreamTrack self) =>
-              self -> m MediaTrackSettings
-getSettings self
-  = liftDOM
-      (((toMediaStreamTrack self) ^. jsf "getSettings" ()) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getSettings MDN MediaStreamTrack.getSettings documentation>
+getSettings :: (MonadDOM m, IsMediaStreamTrack self) => self -> m MediaTrackSettings
+getSettings self = liftDOM ((((Types.toMediaStreamTrack self) ^. jsf "getSettings" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getSettings Mozilla MediaStreamTrack.getSettings documentation> 
-getSettings_ ::
-             (MonadDOM m, IsMediaStreamTrack self) => self -> m ()
-getSettings_ self
-  = liftDOM
-      (void ((toMediaStreamTrack self) ^. jsf "getSettings" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/getSettings MDN MediaStreamTrack.getSettings documentation>
+getSettings_ :: (MonadDOM m, IsMediaStreamTrack self) => self -> m ()
+getSettings_ self = liftDOM (void ((Types.toMediaStreamTrack self) ^. jsf "getSettings" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.applyConstraints Mozilla MediaStreamTrack.applyConstraints documentation> 
-applyConstraints ::
-                 (MonadDOM m, IsMediaStreamTrack self) =>
-                   self -> Maybe MediaTrackConstraints -> m ()
-applyConstraints self constraints
-  = liftDOM
-      (void
-         (((toMediaStreamTrack self) ^. jsf "applyConstraints"
-             [toJSVal constraints])
-            >>= readPromise))
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/stop MDN MediaStreamTrack.stop documentation>
+stop :: (MonadDOM m, IsMediaStreamTrack self) => self -> m ()
+stop self = liftDOM (void ((Types.toMediaStreamTrack self) ^. jsf "stop" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.kind Mozilla MediaStreamTrack.kind documentation> 
-getKind ::
-        (MonadDOM m, IsMediaStreamTrack self, FromJSString result) =>
-          self -> m result
-getKind self
-  = liftDOM
-      (((toMediaStreamTrack self) ^. js "kind") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toMediaStreamTrack self) ^. js "kind") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.id Mozilla MediaStreamTrack.id documentation> 
-getId ::
-      (MonadDOM m, IsMediaStreamTrack self, FromJSString result) =>
-        self -> m result
-getId self
-  = liftDOM
-      (((toMediaStreamTrack self) ^. js "id") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toMediaStreamTrack self) ^. js "id") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.label Mozilla MediaStreamTrack.label documentation> 
-getLabel ::
-         (MonadDOM m, IsMediaStreamTrack self, FromJSString result) =>
-           self -> m result
-getLabel self
-  = liftDOM
-      (((toMediaStreamTrack self) ^. js "label") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toMediaStreamTrack self) ^. js "label") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.enabled Mozilla MediaStreamTrack.enabled documentation> 
-setEnabled ::
-           (MonadDOM m, IsMediaStreamTrack self) => self -> Bool -> m ()
-setEnabled self val
-  = liftDOM
-      ((toMediaStreamTrack self) ^. jss "enabled" (toJSVal val))
+-- | <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 ((Types.toMediaStreamTrack self) ^. jss "enabled" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.enabled Mozilla MediaStreamTrack.enabled documentation> 
-getEnabled ::
-           (MonadDOM m, IsMediaStreamTrack self) => self -> m Bool
-getEnabled self
-  = liftDOM
-      (((toMediaStreamTrack self) ^. js "enabled") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/enabled MDN MediaStreamTrack.enabled documentation>
+getEnabled :: (MonadDOM m, IsMediaStreamTrack self) => self -> m Bool
+getEnabled self = liftDOM ((((Types.toMediaStreamTrack self) ^. js "enabled") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.muted Mozilla MediaStreamTrack.muted documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/muted MDN MediaStreamTrack.muted documentation>
 getMuted :: (MonadDOM m, IsMediaStreamTrack self) => self -> m Bool
-getMuted self
-  = liftDOM (((toMediaStreamTrack self) ^. js "muted") >>= valToBool)
+getMuted self = liftDOM ((((Types.toMediaStreamTrack self) ^. js "muted") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.onmute Mozilla MediaStreamTrack.onmute documentation> 
-mute ::
-     (IsMediaStreamTrack self, IsEventTarget self) =>
-       EventName self Event
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrack/readyState MDN MediaStreamTrack.readyState documentation>
+getReadyState :: (MonadDOM m, IsMediaStreamTrack self) => self -> m MediaStreamTrackState
+getReadyState self = liftDOM ((((Types.toMediaStreamTrack self) ^. js "readyState") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaStreamTrack self) ^. jss "contentHint" (toJSVal val)))
+
+-- | <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 ((((Types.toMediaStreamTrack self) ^. js "contentHint") >>= fromJSValUnchecked))
+
+-- | <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")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.readyState Mozilla MediaStreamTrack.readyState documentation> 
-getReadyState ::
-              (MonadDOM m, IsMediaStreamTrack self) =>
-                self -> m MediaStreamTrackState
-getReadyState self
-  = liftDOM
-      (((toMediaStreamTrack self) ^. js "readyState") >>=
-         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/JSDOM/Generated/MediaStreamTrackEvent.hs b/src/JSDOM/Generated/MediaStreamTrackEvent.hs
--- a/src/JSDOM/Generated/MediaStreamTrackEvent.hs
+++ b/src/JSDOM/Generated/MediaStreamTrackEvent.hs
@@ -1,37 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
 module JSDOM.Generated.MediaStreamTrackEvent
-       (newMediaStreamTrackEvent, getTrack, MediaStreamTrackEvent(..),
-        gTypeMediaStreamTrackEvent)
+       (newMediaStreamTrackEvent, getTrack, MediaStreamTrackEvent(..), gTypeMediaStreamTrackEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackEvent Mozilla MediaStreamTrackEvent documentation> 
-newMediaStreamTrackEvent ::
-                         (MonadDOM m, ToJSString type') =>
-                           type' -> MediaStreamTrackEventInit -> m MediaStreamTrackEvent
-newMediaStreamTrackEvent type' eventInitDict
-  = liftDOM
-      (MediaStreamTrackEvent <$>
-         new (jsg "MediaStreamTrackEvent")
-           [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "MediaStreamTrackEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackEvent.track Mozilla MediaStreamTrackEvent.track documentation> 
-getTrack ::
-         (MonadDOM m) => MediaStreamTrackEvent -> m MediaStreamTrack
-getTrack self
-  = liftDOM ((self ^. js "track") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrackEvent/track MDN MediaStreamTrackEvent.track documentation>
+getTrack :: (MonadDOM m) => MediaStreamTrackEvent -> m MediaStreamTrack
+getTrack self = liftDOM (((self ^. js "track") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaStreamTrackEventInit.hs b/src/JSDOM/Generated/MediaStreamTrackEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaStreamTrackEventInit.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module JSDOM.Generated.MediaStreamTrackEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamtrackeventinit MediaStreamTrackEventInit specification>
+newMediaStreamTrackEventInit :: (MonadDOM m, IsMediaStreamTrack track) => track -> m MediaStreamTrackEventInit
+newMediaStreamTrackEventInit track = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "track" (toJSVal track)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "track" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediastreamtrackeventinit-track MediaStreamTrackEventInit.track specification>
+getTrack :: (MonadDOM m) => MediaStreamTrackEventInit -> m MediaStreamTrack
+getTrack self = liftDOM (((self ^. js "track") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaStreamTrackHandle.hs b/src/JSDOM/Generated/MediaStreamTrackHandle.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaStreamTrackHandle.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-transform (webref). Do not edit.
+module JSDOM.Generated.MediaStreamTrackHandle
+       (MediaStreamTrackHandle(..), gTypeMediaStreamTrackHandle)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/MediaStreamTrackProcessor.hs b/src/JSDOM/Generated/MediaStreamTrackProcessor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaStreamTrackProcessor.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-transform (webref). Do not edit.
+module JSDOM.Generated.MediaStreamTrackProcessor
+       (newMediaStreamTrackProcessor, getReadable, MediaStreamTrackProcessor(..), gTypeMediaStreamTrackProcessor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrackProcessor/MediaStreamTrackProcessor MDN MediaStreamTrackProcessor. documentation>
+newMediaStreamTrackProcessor :: (MonadDOM m) => MediaStreamTrackProcessorInit -> m MediaStreamTrackProcessor
+newMediaStreamTrackProcessor init = liftDOM (((new (jsg "MediaStreamTrackProcessor") [toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MediaStreamTrackProcessor/readable MDN MediaStreamTrackProcessor.readable documentation>
+getReadable :: (MonadDOM m) => MediaStreamTrackProcessor -> m ReadableStream
+getReadable self = liftDOM (((self ^. js "readable") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaStreamTrackProcessorInit.hs b/src/JSDOM/Generated/MediaStreamTrackProcessorInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaStreamTrackProcessorInit.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-transform (webref). Do not edit.
+module JSDOM.Generated.MediaStreamTrackProcessorInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-transform/#dictdef-mediastreamtrackprocessorinit MediaStreamTrackProcessorInit specification>
+newMediaStreamTrackProcessorInit :: (MonadDOM m, IsMediaStreamTrackOrHandle track) => track -> m MediaStreamTrackProcessorInit
+newMediaStreamTrackProcessorInit track = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "track" (toJSVal track)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "track" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-transform/#dom-mediastreamtrackprocessorinit-track MediaStreamTrackProcessorInit.track specification>
+getTrack :: (MonadDOM m) => MediaStreamTrackProcessorInit -> m MediaStreamTrackOrHandle
+getTrack self = liftDOM (((self ^. js "track") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-transform/#dom-mediastreamtrackprocessorinit-maxbuffersize MediaStreamTrackProcessorInit.maxBufferSize specification>
+setMaxBufferSize :: (MonadDOM m) => MediaStreamTrackProcessorInit -> Word -> m ()
+setMaxBufferSize self val = liftDOM (void (self ^. jss "maxBufferSize" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-transform/#dom-mediastreamtrackprocessorinit-maxbuffersize MediaStreamTrackProcessorInit.maxBufferSize specification>
+getMaxBufferSize :: (MonadDOM m) => MediaStreamTrackProcessorInit -> m (Maybe Word)
+getMaxBufferSize self = liftDOM (((self ^. js "maxBufferSize") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-transform/#dom-mediastreamtrackprocessorinit-maxbuffersize MediaStreamTrackProcessorInit.maxBufferSize specification>
+getMaxBufferSizeUnsafe :: (MonadDOM m, HasCallStack) => MediaStreamTrackProcessorInit -> m Word
+getMaxBufferSizeUnsafe self = liftDOM ((((self ^. js "maxBufferSize") >>= 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 ((P.round <$> ((self ^. js "maxBufferSize") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/MediaTrackCapabilities.hs b/src/JSDOM/Generated/MediaTrackCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaTrackCapabilities.hs
@@ -0,0 +1,708 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module JSDOM.Generated.MediaTrackCapabilities
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities MediaTrackCapabilities specification>
+newMediaTrackCapabilities :: (MonadDOM m) => m MediaTrackCapabilities
+newMediaTrackCapabilities = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "width" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-width MediaTrackCapabilities.width specification>
+getWidth :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe ULongRange)
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-width MediaTrackCapabilities.width specification>
+getWidthUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m ULongRange
+getWidthUnsafe self = liftDOM ((((self ^. js "width") >>= 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 (((self ^. js "width") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "height" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-height MediaTrackCapabilities.height specification>
+getHeight :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe ULongRange)
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-height MediaTrackCapabilities.height specification>
+getHeightUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m ULongRange
+getHeightUnsafe self = liftDOM ((((self ^. js "height") >>= 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 (((self ^. js "height") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "aspectRatio" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-aspectratio MediaTrackCapabilities.aspectRatio specification>
+getAspectRatio :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe DoubleRange)
+getAspectRatio self = liftDOM (((self ^. js "aspectRatio") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-aspectratio MediaTrackCapabilities.aspectRatio specification>
+getAspectRatioUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m DoubleRange
+getAspectRatioUnsafe self = liftDOM ((((self ^. js "aspectRatio") >>= 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 (((self ^. js "aspectRatio") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "frameRate" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-framerate MediaTrackCapabilities.frameRate specification>
+getFrameRate :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe DoubleRange)
+getFrameRate self = liftDOM (((self ^. js "frameRate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-framerate MediaTrackCapabilities.frameRate specification>
+getFrameRateUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m DoubleRange
+getFrameRateUnsafe self = liftDOM ((((self ^. js "frameRate") >>= 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 (((self ^. js "frameRate") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "facingMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-facingmode MediaTrackCapabilities.facingMode specification>
+getFacingMode :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe [result])
+getFacingMode self = liftDOM (((self ^. js "facingMode") >>= 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 ((((self ^. js "facingMode") >>= 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 (((self ^. js "facingMode") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "resizeMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-resizemode MediaTrackCapabilities.resizeMode specification>
+getResizeMode :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe [result])
+getResizeMode self = liftDOM (((self ^. js "resizeMode") >>= 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 ((((self ^. js "resizeMode") >>= 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 (((self ^. js "resizeMode") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "sampleRate" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-samplerate MediaTrackCapabilities.sampleRate specification>
+getSampleRate :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe ULongRange)
+getSampleRate self = liftDOM (((self ^. js "sampleRate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-samplerate MediaTrackCapabilities.sampleRate specification>
+getSampleRateUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m ULongRange
+getSampleRateUnsafe self = liftDOM ((((self ^. js "sampleRate") >>= 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 (((self ^. js "sampleRate") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "sampleSize" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-samplesize MediaTrackCapabilities.sampleSize specification>
+getSampleSize :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe ULongRange)
+getSampleSize self = liftDOM (((self ^. js "sampleSize") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-samplesize MediaTrackCapabilities.sampleSize specification>
+getSampleSizeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m ULongRange
+getSampleSizeUnsafe self = liftDOM ((((self ^. js "sampleSize") >>= 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 (((self ^. js "sampleSize") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "echoCancellation" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-echocancellation MediaTrackCapabilities.echoCancellation specification>
+getEchoCancellation :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [BoolOrString])
+getEchoCancellation self = liftDOM (((self ^. js "echoCancellation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-echocancellation MediaTrackCapabilities.echoCancellation specification>
+getEchoCancellationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [BoolOrString]
+getEchoCancellationUnsafe self = liftDOM ((((self ^. js "echoCancellation") >>= 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 (((self ^. js "echoCancellation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-autogaincontrol MediaTrackCapabilities.autoGainControl specification>
+setAutoGainControl :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setAutoGainControl self val = liftDOM (void (self ^. jss "autoGainControl" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-autogaincontrol MediaTrackCapabilities.autoGainControl specification>
+getAutoGainControl :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getAutoGainControl self = liftDOM (((self ^. js "autoGainControl") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-autogaincontrol MediaTrackCapabilities.autoGainControl specification>
+getAutoGainControlUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getAutoGainControlUnsafe self = liftDOM ((((self ^. js "autoGainControl") >>= 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 (((self ^. js "autoGainControl") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-noisesuppression MediaTrackCapabilities.noiseSuppression specification>
+setNoiseSuppression :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setNoiseSuppression self val = liftDOM (void (self ^. jss "noiseSuppression" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-noisesuppression MediaTrackCapabilities.noiseSuppression specification>
+getNoiseSuppression :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getNoiseSuppression self = liftDOM (((self ^. js "noiseSuppression") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-noisesuppression MediaTrackCapabilities.noiseSuppression specification>
+getNoiseSuppressionUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getNoiseSuppressionUnsafe self = liftDOM ((((self ^. js "noiseSuppression") >>= 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 (((self ^. js "noiseSuppression") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "latency" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-latency MediaTrackCapabilities.latency specification>
+getLatency :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe DoubleRange)
+getLatency self = liftDOM (((self ^. js "latency") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-latency MediaTrackCapabilities.latency specification>
+getLatencyUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m DoubleRange
+getLatencyUnsafe self = liftDOM ((((self ^. js "latency") >>= 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 (((self ^. js "latency") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "channelCount" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-channelcount MediaTrackCapabilities.channelCount specification>
+getChannelCount :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe ULongRange)
+getChannelCount self = liftDOM (((self ^. js "channelCount") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-channelcount MediaTrackCapabilities.channelCount specification>
+getChannelCountUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m ULongRange
+getChannelCountUnsafe self = liftDOM ((((self ^. js "channelCount") >>= 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 (((self ^. js "channelCount") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "deviceId" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-deviceid MediaTrackCapabilities.deviceId specification>
+getDeviceId :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe result)
+getDeviceId self = liftDOM (((self ^. js "deviceId") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-deviceid MediaTrackCapabilities.deviceId specification>
+getDeviceIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackCapabilities -> m result
+getDeviceIdUnsafe self = liftDOM ((((self ^. js "deviceId") >>= fromMaybeJSString) >>= 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 (((self ^. js "deviceId") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "groupId" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-groupid MediaTrackCapabilities.groupId specification>
+getGroupId :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe result)
+getGroupId self = liftDOM (((self ^. js "groupId") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-groupid MediaTrackCapabilities.groupId specification>
+getGroupIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackCapabilities -> m result
+getGroupIdUnsafe self = liftDOM ((((self ^. js "groupId") >>= fromMaybeJSString) >>= 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 (((self ^. js "groupId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-backgroundblur MediaTrackCapabilities.backgroundBlur specification>
+setBackgroundBlur :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setBackgroundBlur self val = liftDOM (void (self ^. jss "backgroundBlur" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-backgroundblur MediaTrackCapabilities.backgroundBlur specification>
+getBackgroundBlur :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getBackgroundBlur self = liftDOM (((self ^. js "backgroundBlur") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackcapabilities-backgroundblur MediaTrackCapabilities.backgroundBlur specification>
+getBackgroundBlurUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getBackgroundBlurUnsafe self = liftDOM ((((self ^. js "backgroundBlur") >>= 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 (((self ^. js "backgroundBlur") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "whiteBalanceMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-whitebalancemode MediaTrackCapabilities.whiteBalanceMode specification>
+getWhiteBalanceMode :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe [result])
+getWhiteBalanceMode self = liftDOM (((self ^. js "whiteBalanceMode") >>= 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 ((((self ^. js "whiteBalanceMode") >>= 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 (((self ^. js "whiteBalanceMode") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "exposureMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposuremode MediaTrackCapabilities.exposureMode specification>
+getExposureMode :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe [result])
+getExposureMode self = liftDOM (((self ^. js "exposureMode") >>= 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 ((((self ^. js "exposureMode") >>= 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 (((self ^. js "exposureMode") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "focusMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-focusmode MediaTrackCapabilities.focusMode specification>
+getFocusMode :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe [result])
+getFocusMode self = liftDOM (((self ^. js "focusMode") >>= 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 ((((self ^. js "focusMode") >>= 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 (((self ^. js "focusMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposurecompensation MediaTrackCapabilities.exposureCompensation specification>
+setExposureCompensation :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setExposureCompensation self val = liftDOM (void (self ^. jss "exposureCompensation" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposurecompensation MediaTrackCapabilities.exposureCompensation specification>
+getExposureCompensation :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getExposureCompensation self = liftDOM (((self ^. js "exposureCompensation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposurecompensation MediaTrackCapabilities.exposureCompensation specification>
+getExposureCompensationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getExposureCompensationUnsafe self = liftDOM ((((self ^. js "exposureCompensation") >>= 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 (((self ^. js "exposureCompensation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposuretime MediaTrackCapabilities.exposureTime specification>
+setExposureTime :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setExposureTime self val = liftDOM (void (self ^. jss "exposureTime" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposuretime MediaTrackCapabilities.exposureTime specification>
+getExposureTime :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getExposureTime self = liftDOM (((self ^. js "exposureTime") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-exposuretime MediaTrackCapabilities.exposureTime specification>
+getExposureTimeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getExposureTimeUnsafe self = liftDOM ((((self ^. js "exposureTime") >>= 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 (((self ^. js "exposureTime") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-colortemperature MediaTrackCapabilities.colorTemperature specification>
+setColorTemperature :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setColorTemperature self val = liftDOM (void (self ^. jss "colorTemperature" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-colortemperature MediaTrackCapabilities.colorTemperature specification>
+getColorTemperature :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getColorTemperature self = liftDOM (((self ^. js "colorTemperature") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-colortemperature MediaTrackCapabilities.colorTemperature specification>
+getColorTemperatureUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getColorTemperatureUnsafe self = liftDOM ((((self ^. js "colorTemperature") >>= 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 (((self ^. js "colorTemperature") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-iso MediaTrackCapabilities.iso specification>
+setIso :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setIso self val = liftDOM (void (self ^. jss "iso" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-iso MediaTrackCapabilities.iso specification>
+getIso :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getIso self = liftDOM (((self ^. js "iso") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-iso MediaTrackCapabilities.iso specification>
+getIsoUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getIsoUnsafe self = liftDOM ((((self ^. js "iso") >>= 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 (((self ^. js "iso") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-brightness MediaTrackCapabilities.brightness specification>
+setBrightness :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setBrightness self val = liftDOM (void (self ^. jss "brightness" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-brightness MediaTrackCapabilities.brightness specification>
+getBrightness :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getBrightness self = liftDOM (((self ^. js "brightness") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-brightness MediaTrackCapabilities.brightness specification>
+getBrightnessUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getBrightnessUnsafe self = liftDOM ((((self ^. js "brightness") >>= 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 (((self ^. js "brightness") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-contrast MediaTrackCapabilities.contrast specification>
+setContrast :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setContrast self val = liftDOM (void (self ^. jss "contrast" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-contrast MediaTrackCapabilities.contrast specification>
+getContrast :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getContrast self = liftDOM (((self ^. js "contrast") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-contrast MediaTrackCapabilities.contrast specification>
+getContrastUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getContrastUnsafe self = liftDOM ((((self ^. js "contrast") >>= 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 (((self ^. js "contrast") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-saturation MediaTrackCapabilities.saturation specification>
+setSaturation :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setSaturation self val = liftDOM (void (self ^. jss "saturation" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-saturation MediaTrackCapabilities.saturation specification>
+getSaturation :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getSaturation self = liftDOM (((self ^. js "saturation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-saturation MediaTrackCapabilities.saturation specification>
+getSaturationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getSaturationUnsafe self = liftDOM ((((self ^. js "saturation") >>= 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 (((self ^. js "saturation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-sharpness MediaTrackCapabilities.sharpness specification>
+setSharpness :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setSharpness self val = liftDOM (void (self ^. jss "sharpness" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-sharpness MediaTrackCapabilities.sharpness specification>
+getSharpness :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getSharpness self = liftDOM (((self ^. js "sharpness") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-sharpness MediaTrackCapabilities.sharpness specification>
+getSharpnessUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getSharpnessUnsafe self = liftDOM ((((self ^. js "sharpness") >>= 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 (((self ^. js "sharpness") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-focusdistance MediaTrackCapabilities.focusDistance specification>
+setFocusDistance :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setFocusDistance self val = liftDOM (void (self ^. jss "focusDistance" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-focusdistance MediaTrackCapabilities.focusDistance specification>
+getFocusDistance :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getFocusDistance self = liftDOM (((self ^. js "focusDistance") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-focusdistance MediaTrackCapabilities.focusDistance specification>
+getFocusDistanceUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getFocusDistanceUnsafe self = liftDOM ((((self ^. js "focusDistance") >>= 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 (((self ^. js "focusDistance") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-pan MediaTrackCapabilities.pan specification>
+setPan :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setPan self val = liftDOM (void (self ^. jss "pan" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-pan MediaTrackCapabilities.pan specification>
+getPan :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getPan self = liftDOM (((self ^. js "pan") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-pan MediaTrackCapabilities.pan specification>
+getPanUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getPanUnsafe self = liftDOM ((((self ^. js "pan") >>= 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 (((self ^. js "pan") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-tilt MediaTrackCapabilities.tilt specification>
+setTilt :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setTilt self val = liftDOM (void (self ^. jss "tilt" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-tilt MediaTrackCapabilities.tilt specification>
+getTilt :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getTilt self = liftDOM (((self ^. js "tilt") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-tilt MediaTrackCapabilities.tilt specification>
+getTiltUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getTiltUnsafe self = liftDOM ((((self ^. js "tilt") >>= 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 (((self ^. js "tilt") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-zoom MediaTrackCapabilities.zoom specification>
+setZoom :: (MonadDOM m) => MediaTrackCapabilities -> MediaSettingsRange -> m ()
+setZoom self val = liftDOM (void (self ^. jss "zoom" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-zoom MediaTrackCapabilities.zoom specification>
+getZoom :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe MediaSettingsRange)
+getZoom self = liftDOM (((self ^. js "zoom") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-zoom MediaTrackCapabilities.zoom specification>
+getZoomUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m MediaSettingsRange
+getZoomUnsafe self = liftDOM ((((self ^. js "zoom") >>= 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 (((self ^. js "zoom") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-torch MediaTrackCapabilities.torch specification>
+setTorch :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setTorch self val = liftDOM (void (self ^. jss "torch" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-torch MediaTrackCapabilities.torch specification>
+getTorch :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getTorch self = liftDOM (((self ^. js "torch") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackcapabilities-torch MediaTrackCapabilities.torch specification>
+getTorchUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getTorchUnsafe self = liftDOM ((((self ^. js "torch") >>= 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 (((self ^. js "torch") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-powerefficient MediaTrackCapabilities.powerEfficient specification>
+setPowerEfficient :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setPowerEfficient self val = liftDOM (void (self ^. jss "powerEfficient" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-powerefficient MediaTrackCapabilities.powerEfficient specification>
+getPowerEfficient :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getPowerEfficient self = liftDOM (((self ^. js "powerEfficient") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-powerefficient MediaTrackCapabilities.powerEfficient specification>
+getPowerEfficientUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getPowerEfficientUnsafe self = liftDOM ((((self ^. js "powerEfficient") >>= 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 (((self ^. js "powerEfficient") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-powerefficientpixelformat MediaTrackCapabilities.powerEfficientPixelFormat specification>
+setPowerEfficientPixelFormat :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setPowerEfficientPixelFormat self val = liftDOM (void (self ^. jss "powerEfficientPixelFormat" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-powerefficientpixelformat MediaTrackCapabilities.powerEfficientPixelFormat specification>
+getPowerEfficientPixelFormat :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getPowerEfficientPixelFormat self = liftDOM (((self ^. js "powerEfficientPixelFormat") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-powerefficientpixelformat MediaTrackCapabilities.powerEfficientPixelFormat specification>
+getPowerEfficientPixelFormatUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getPowerEfficientPixelFormatUnsafe self = liftDOM ((((self ^. js "powerEfficientPixelFormat") >>= 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 (((self ^. js "powerEfficientPixelFormat") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-gesturereactions MediaTrackCapabilities.gestureReactions specification>
+setGestureReactions :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setGestureReactions self val = liftDOM (void (self ^. jss "gestureReactions" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-gesturereactions MediaTrackCapabilities.gestureReactions specification>
+getGestureReactions :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getGestureReactions self = liftDOM (((self ^. js "gestureReactions") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-gesturereactions MediaTrackCapabilities.gestureReactions specification>
+getGestureReactionsUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getGestureReactionsUnsafe self = liftDOM ((((self ^. js "gestureReactions") >>= 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 (((self ^. js "gestureReactions") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-faceframing MediaTrackCapabilities.faceFraming specification>
+setFaceFraming :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setFaceFraming self val = liftDOM (void (self ^. jss "faceFraming" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-faceframing MediaTrackCapabilities.faceFraming specification>
+getFaceFraming :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getFaceFraming self = liftDOM (((self ^. js "faceFraming") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-faceframing MediaTrackCapabilities.faceFraming specification>
+getFaceFramingUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getFaceFramingUnsafe self = liftDOM ((((self ^. js "faceFraming") >>= 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 (((self ^. js "faceFraming") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-eyegazecorrection MediaTrackCapabilities.eyeGazeCorrection specification>
+setEyeGazeCorrection :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setEyeGazeCorrection self val = liftDOM (void (self ^. jss "eyeGazeCorrection" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-eyegazecorrection MediaTrackCapabilities.eyeGazeCorrection specification>
+getEyeGazeCorrection :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getEyeGazeCorrection self = liftDOM (((self ^. js "eyeGazeCorrection") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-eyegazecorrection MediaTrackCapabilities.eyeGazeCorrection specification>
+getEyeGazeCorrectionUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getEyeGazeCorrectionUnsafe self = liftDOM ((((self ^. js "eyeGazeCorrection") >>= 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 (((self ^. js "eyeGazeCorrection") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-voiceisolation MediaTrackCapabilities.voiceIsolation specification>
+setVoiceIsolation :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setVoiceIsolation self val = liftDOM (void (self ^. jss "voiceIsolation" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-voiceisolation MediaTrackCapabilities.voiceIsolation specification>
+getVoiceIsolation :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getVoiceIsolation self = liftDOM (((self ^. js "voiceIsolation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-voiceisolation MediaTrackCapabilities.voiceIsolation specification>
+getVoiceIsolationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getVoiceIsolationUnsafe self = liftDOM ((((self ^. js "voiceIsolation") >>= 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 (((self ^. js "voiceIsolation") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "humanFaceDetectionMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-humanfacedetectionmode MediaTrackCapabilities.humanFaceDetectionMode specification>
+getHumanFaceDetectionMode :: (MonadDOM m, FromJSString result) => MediaTrackCapabilities -> m (Maybe [result])
+getHumanFaceDetectionMode self = liftDOM (((self ^. js "humanFaceDetectionMode") >>= 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 ((((self ^. js "humanFaceDetectionMode") >>= 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 (((self ^. js "humanFaceDetectionMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-backgroundsegmentationmask MediaTrackCapabilities.backgroundSegmentationMask specification>
+setBackgroundSegmentationMask :: (MonadDOM m) => MediaTrackCapabilities -> [Bool] -> m ()
+setBackgroundSegmentationMask self val = liftDOM (void (self ^. jss "backgroundSegmentationMask" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-backgroundsegmentationmask MediaTrackCapabilities.backgroundSegmentationMask specification>
+getBackgroundSegmentationMask :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe [Bool])
+getBackgroundSegmentationMask self = liftDOM (((self ^. js "backgroundSegmentationMask") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackcapabilities-backgroundsegmentationmask MediaTrackCapabilities.backgroundSegmentationMask specification>
+getBackgroundSegmentationMaskUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m [Bool]
+getBackgroundSegmentationMaskUnsafe self = liftDOM ((((self ^. js "backgroundSegmentationMask") >>= 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 (((self ^. js "backgroundSegmentationMask") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "displaySurface" (toJSVal val)))
+
+-- | <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 (((self ^. js "displaySurface") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "displaySurface") >>= fromMaybeJSString) >>= 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 (((self ^. js "displaySurface") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackcapabilities-logicalsurface MediaTrackCapabilities.logicalSurface specification>
+setLogicalSurface :: (MonadDOM m) => MediaTrackCapabilities -> Bool -> m ()
+setLogicalSurface self val = liftDOM (void (self ^. jss "logicalSurface" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackcapabilities-logicalsurface MediaTrackCapabilities.logicalSurface specification>
+getLogicalSurface :: (MonadDOM m) => MediaTrackCapabilities -> m (Maybe Bool)
+getLogicalSurface self = liftDOM (((self ^. js "logicalSurface") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatrackcapabilities-logicalsurface MediaTrackCapabilities.logicalSurface specification>
+getLogicalSurfaceUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackCapabilities -> m Bool
+getLogicalSurfaceUnsafe self = liftDOM ((((self ^. js "logicalSurface") >>= 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 (((self ^. js "logicalSurface") >>= valToBool))
+
+-- | <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 (self ^. jss "cursor" (toJSVal val)))
+
+-- | <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 (((self ^. js "cursor") >>= 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 ((((self ^. js "cursor") >>= 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 (((self ^. js "cursor") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaTrackConstraintSet.hs b/src/JSDOM/Generated/MediaTrackConstraintSet.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaTrackConstraintSet.hs
@@ -0,0 +1,724 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module JSDOM.Generated.MediaTrackConstraintSet
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset MediaTrackConstraintSet specification>
+newMediaTrackConstraintSet :: (MonadDOM m) => m MediaTrackConstraintSet
+newMediaTrackConstraintSet = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "width" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-width MediaTrackConstraintSet.width specification>
+getWidth :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainULong)
+getWidth self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "width") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "width") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "width") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "height" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-height MediaTrackConstraintSet.height specification>
+getHeight :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainULong)
+getHeight self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "height") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "height") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "height") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "aspectRatio" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-aspectratio MediaTrackConstraintSet.aspectRatio specification>
+getAspectRatio :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getAspectRatio self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "aspectRatio") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "aspectRatio") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "aspectRatio") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "frameRate" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-framerate MediaTrackConstraintSet.frameRate specification>
+getFrameRate :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getFrameRate self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "frameRate") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "frameRate") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "frameRate") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "facingMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-facingmode MediaTrackConstraintSet.facingMode specification>
+getFacingMode :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getFacingMode self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "facingMode") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "facingMode") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "facingMode") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "resizeMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-resizemode MediaTrackConstraintSet.resizeMode specification>
+getResizeMode :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getResizeMode self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "resizeMode") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "resizeMode") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "resizeMode") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "sampleRate" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-samplerate MediaTrackConstraintSet.sampleRate specification>
+getSampleRate :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainULong)
+getSampleRate self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "sampleRate") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "sampleRate") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "sampleRate") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "sampleSize" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-samplesize MediaTrackConstraintSet.sampleSize specification>
+getSampleSize :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainULong)
+getSampleSize self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "sampleSize") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "sampleSize") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "sampleSize") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "echoCancellation" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-echocancellation MediaTrackConstraintSet.echoCancellation specification>
+getEchoCancellation :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBooleanOrDOMString)
+getEchoCancellation self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "echoCancellation") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "echoCancellation") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "echoCancellation") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "autoGainControl" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-autogaincontrol MediaTrackConstraintSet.autoGainControl specification>
+getAutoGainControl :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getAutoGainControl self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "autoGainControl") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "autoGainControl") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "autoGainControl") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "noiseSuppression" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-noisesuppression MediaTrackConstraintSet.noiseSuppression specification>
+getNoiseSuppression :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getNoiseSuppression self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "noiseSuppression") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "noiseSuppression") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "noiseSuppression") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "latency" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-latency MediaTrackConstraintSet.latency specification>
+getLatency :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getLatency self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "latency") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "latency") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "latency") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "channelCount" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-channelcount MediaTrackConstraintSet.channelCount specification>
+getChannelCount :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainULong)
+getChannelCount self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "channelCount") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "channelCount") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "channelCount") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "deviceId" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-deviceid MediaTrackConstraintSet.deviceId specification>
+getDeviceId :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getDeviceId self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "deviceId") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "deviceId") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "deviceId") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "groupId" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-groupid MediaTrackConstraintSet.groupId specification>
+getGroupId :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getGroupId self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "groupId") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "groupId") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "groupId") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "backgroundBlur" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraintset-backgroundblur MediaTrackConstraintSet.backgroundBlur specification>
+getBackgroundBlur :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getBackgroundBlur self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "backgroundBlur") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "backgroundBlur") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "backgroundBlur") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "whiteBalanceMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-whitebalancemode MediaTrackConstraintSet.whiteBalanceMode specification>
+getWhiteBalanceMode :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getWhiteBalanceMode self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "whiteBalanceMode") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "whiteBalanceMode") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "whiteBalanceMode") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "exposureMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-exposuremode MediaTrackConstraintSet.exposureMode specification>
+getExposureMode :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getExposureMode self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "exposureMode") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "exposureMode") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "exposureMode") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "focusMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-focusmode MediaTrackConstraintSet.focusMode specification>
+getFocusMode :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getFocusMode self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "focusMode") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "focusMode") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "focusMode") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "pointsOfInterest" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-pointsofinterest MediaTrackConstraintSet.pointsOfInterest specification>
+getPointsOfInterest :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainPoint2D)
+getPointsOfInterest self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "pointsOfInterest") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "pointsOfInterest") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "pointsOfInterest") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "exposureCompensation" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-exposurecompensation MediaTrackConstraintSet.exposureCompensation specification>
+getExposureCompensation :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getExposureCompensation self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "exposureCompensation") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "exposureCompensation") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "exposureCompensation") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "exposureTime" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-exposuretime MediaTrackConstraintSet.exposureTime specification>
+getExposureTime :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getExposureTime self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "exposureTime") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "exposureTime") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "exposureTime") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "colorTemperature" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-colortemperature MediaTrackConstraintSet.colorTemperature specification>
+getColorTemperature :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getColorTemperature self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "colorTemperature") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "colorTemperature") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "colorTemperature") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "iso" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-iso MediaTrackConstraintSet.iso specification>
+getIso :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getIso self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "iso") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "iso") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "iso") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "brightness" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-brightness MediaTrackConstraintSet.brightness specification>
+getBrightness :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getBrightness self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "brightness") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "brightness") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "brightness") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "contrast" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-contrast MediaTrackConstraintSet.contrast specification>
+getContrast :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getContrast self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "contrast") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "contrast") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "contrast") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "saturation" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-saturation MediaTrackConstraintSet.saturation specification>
+getSaturation :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getSaturation self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "saturation") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "saturation") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "saturation") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "sharpness" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-sharpness MediaTrackConstraintSet.sharpness specification>
+getSharpness :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getSharpness self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "sharpness") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "sharpness") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "sharpness") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "focusDistance" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-focusdistance MediaTrackConstraintSet.focusDistance specification>
+getFocusDistance :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDouble)
+getFocusDistance self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "focusDistance") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "focusDistance") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "focusDistance") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "pan" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-pan MediaTrackConstraintSet.pan specification>
+getPan :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe BoolOrConstrainDouble)
+getPan self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "pan") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "pan") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "pan") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "tilt" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-tilt MediaTrackConstraintSet.tilt specification>
+getTilt :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe BoolOrConstrainDouble)
+getTilt self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "tilt") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "tilt") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "tilt") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "zoom" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-zoom MediaTrackConstraintSet.zoom specification>
+getZoom :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe BoolOrConstrainDouble)
+getZoom self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "zoom") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "zoom") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "zoom") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "torch" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatrackconstraintset-torch MediaTrackConstraintSet.torch specification>
+getTorch :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getTorch self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "torch") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "torch") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "torch") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "gestureReactions" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-gesturereactions MediaTrackConstraintSet.gestureReactions specification>
+getGestureReactions :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getGestureReactions self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "gestureReactions") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "gestureReactions") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "gestureReactions") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "faceFraming" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-faceframing MediaTrackConstraintSet.faceFraming specification>
+getFaceFraming :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getFaceFraming self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "faceFraming") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "faceFraming") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "faceFraming") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "eyeGazeCorrection" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-eyegazecorrection MediaTrackConstraintSet.eyeGazeCorrection specification>
+getEyeGazeCorrection :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getEyeGazeCorrection self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "eyeGazeCorrection") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "eyeGazeCorrection") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "eyeGazeCorrection") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "voiceIsolation" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-voiceisolation MediaTrackConstraintSet.voiceIsolation specification>
+getVoiceIsolation :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getVoiceIsolation self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "voiceIsolation") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "voiceIsolation") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "voiceIsolation") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "humanFaceDetectionMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-humanfacedetectionmode MediaTrackConstraintSet.humanFaceDetectionMode specification>
+getHumanFaceDetectionMode :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainDOMString)
+getHumanFaceDetectionMode self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "humanFaceDetectionMode") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "humanFaceDetectionMode") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "humanFaceDetectionMode") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "backgroundSegmentationMask" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatrackconstraintset-backgroundsegmentationmask MediaTrackConstraintSet.backgroundSegmentationMask specification>
+getBackgroundSegmentationMask :: (MonadDOM m, IsMediaTrackConstraintSet self) => self -> m (Maybe ConstrainBoolean)
+getBackgroundSegmentationMask self = liftDOM ((((Types.toMediaTrackConstraintSet self) ^. js "backgroundSegmentationMask") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "backgroundSegmentationMask") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "backgroundSegmentationMask") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "displaySurface" (toJSVal val)))
+
+-- | <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 ((((Types.toMediaTrackConstraintSet self) ^. js "displaySurface") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "displaySurface") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "displaySurface") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "logicalSurface" (toJSVal val)))
+
+-- | <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 ((((Types.toMediaTrackConstraintSet self) ^. js "logicalSurface") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "logicalSurface") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "logicalSurface") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "cursor" (toJSVal val)))
+
+-- | <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 ((((Types.toMediaTrackConstraintSet self) ^. js "cursor") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "cursor") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "cursor") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "restrictOwnAudio" (toJSVal val)))
+
+-- | <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 ((((Types.toMediaTrackConstraintSet self) ^. js "restrictOwnAudio") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "restrictOwnAudio") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "restrictOwnAudio") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toMediaTrackConstraintSet self) ^. jss "suppressLocalAudioPlayback" (toJSVal val)))
+
+-- | <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 ((((Types.toMediaTrackConstraintSet self) ^. js "suppressLocalAudioPlayback") >>= 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 (((((Types.toMediaTrackConstraintSet self) ^. js "suppressLocalAudioPlayback") >>= 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 ((((Types.toMediaTrackConstraintSet self) ^. js "suppressLocalAudioPlayback") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaTrackConstraints.hs b/src/JSDOM/Generated/MediaTrackConstraints.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaTrackConstraints.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module JSDOM.Generated.MediaTrackConstraints
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraints MediaTrackConstraints specification>
+newMediaTrackConstraints :: (MonadDOM m) => m MediaTrackConstraints
+newMediaTrackConstraints = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "advanced" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraints-advanced MediaTrackConstraints.advanced specification>
+getAdvanced :: (MonadDOM m) => MediaTrackConstraints -> m (Maybe [MediaTrackConstraintSet])
+getAdvanced self = liftDOM (((self ^. js "advanced") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatrackconstraints-advanced MediaTrackConstraints.advanced specification>
+getAdvancedUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackConstraints -> m [MediaTrackConstraintSet]
+getAdvancedUnsafe self = liftDOM ((((self ^. js "advanced") >>= 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 (((self ^. js "advanced") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MediaTrackSettings.hs b/src/JSDOM/Generated/MediaTrackSettings.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaTrackSettings.hs
@@ -0,0 +1,772 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module JSDOM.Generated.MediaTrackSettings
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings MediaTrackSettings specification>
+newMediaTrackSettings :: (MonadDOM m) => m MediaTrackSettings
+newMediaTrackSettings = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-width MediaTrackSettings.width specification>
+setWidth :: (MonadDOM m) => MediaTrackSettings -> Word -> m ()
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-width MediaTrackSettings.width specification>
+getWidth :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Word)
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-width MediaTrackSettings.width specification>
+getWidthUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Word
+getWidthUnsafe self = liftDOM ((((self ^. js "width") >>= 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 ((P.round <$> ((self ^. js "width") >>= valToNumber)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-height MediaTrackSettings.height specification>
+setHeight :: (MonadDOM m) => MediaTrackSettings -> Word -> m ()
+setHeight self val = liftDOM (void (self ^. jss "height" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-height MediaTrackSettings.height specification>
+getHeight :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Word)
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-height MediaTrackSettings.height specification>
+getHeightUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Word
+getHeightUnsafe self = liftDOM ((((self ^. js "height") >>= 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 ((P.round <$> ((self ^. js "height") >>= valToNumber)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-aspectratio MediaTrackSettings.aspectRatio specification>
+setAspectRatio :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setAspectRatio self val = liftDOM (void (self ^. jss "aspectRatio" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-aspectratio MediaTrackSettings.aspectRatio specification>
+getAspectRatio :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getAspectRatio self = liftDOM (((self ^. js "aspectRatio") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-aspectratio MediaTrackSettings.aspectRatio specification>
+getAspectRatioUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getAspectRatioUnsafe self = liftDOM ((((self ^. js "aspectRatio") >>= 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 (((self ^. js "aspectRatio") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-framerate MediaTrackSettings.frameRate specification>
+setFrameRate :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setFrameRate self val = liftDOM (void (self ^. jss "frameRate" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-framerate MediaTrackSettings.frameRate specification>
+getFrameRate :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getFrameRate self = liftDOM (((self ^. js "frameRate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-framerate MediaTrackSettings.frameRate specification>
+getFrameRateUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getFrameRateUnsafe self = liftDOM ((((self ^. js "frameRate") >>= 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 (((self ^. js "frameRate") >>= valToNumber))
+
+-- | <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 (self ^. jss "facingMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-facingmode MediaTrackSettings.facingMode specification>
+getFacingMode :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getFacingMode self = liftDOM (((self ^. js "facingMode") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-facingmode MediaTrackSettings.facingMode specification>
+getFacingModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getFacingModeUnsafe self = liftDOM ((((self ^. js "facingMode") >>= fromMaybeJSString) >>= 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 (((self ^. js "facingMode") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "resizeMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-resizemode MediaTrackSettings.resizeMode specification>
+getResizeMode :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getResizeMode self = liftDOM (((self ^. js "resizeMode") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-resizemode MediaTrackSettings.resizeMode specification>
+getResizeModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getResizeModeUnsafe self = liftDOM ((((self ^. js "resizeMode") >>= fromMaybeJSString) >>= 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 (((self ^. js "resizeMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-samplerate MediaTrackSettings.sampleRate specification>
+setSampleRate :: (MonadDOM m) => MediaTrackSettings -> Word -> m ()
+setSampleRate self val = liftDOM (void (self ^. jss "sampleRate" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-samplerate MediaTrackSettings.sampleRate specification>
+getSampleRate :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Word)
+getSampleRate self = liftDOM (((self ^. js "sampleRate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-samplerate MediaTrackSettings.sampleRate specification>
+getSampleRateUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Word
+getSampleRateUnsafe self = liftDOM ((((self ^. js "sampleRate") >>= 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 ((P.round <$> ((self ^. js "sampleRate") >>= valToNumber)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-samplesize MediaTrackSettings.sampleSize specification>
+setSampleSize :: (MonadDOM m) => MediaTrackSettings -> Word -> m ()
+setSampleSize self val = liftDOM (void (self ^. jss "sampleSize" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-samplesize MediaTrackSettings.sampleSize specification>
+getSampleSize :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Word)
+getSampleSize self = liftDOM (((self ^. js "sampleSize") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-samplesize MediaTrackSettings.sampleSize specification>
+getSampleSizeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Word
+getSampleSizeUnsafe self = liftDOM ((((self ^. js "sampleSize") >>= 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 ((P.round <$> ((self ^. js "sampleSize") >>= valToNumber)))
+
+-- | <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 (self ^. jss "echoCancellation" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-echocancellation MediaTrackSettings.echoCancellation specification>
+getEchoCancellation :: (MonadDOM m) => MediaTrackSettings -> m (Maybe BoolOrString)
+getEchoCancellation self = liftDOM (((self ^. js "echoCancellation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-echocancellation MediaTrackSettings.echoCancellation specification>
+getEchoCancellationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m BoolOrString
+getEchoCancellationUnsafe self = liftDOM ((((self ^. js "echoCancellation") >>= 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 (((self ^. js "echoCancellation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-autogaincontrol MediaTrackSettings.autoGainControl specification>
+setAutoGainControl :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setAutoGainControl self val = liftDOM (void (self ^. jss "autoGainControl" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-autogaincontrol MediaTrackSettings.autoGainControl specification>
+getAutoGainControl :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getAutoGainControl self = liftDOM (((self ^. js "autoGainControl") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-autogaincontrol MediaTrackSettings.autoGainControl specification>
+getAutoGainControlUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getAutoGainControlUnsafe self = liftDOM ((((self ^. js "autoGainControl") >>= 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 (((self ^. js "autoGainControl") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-noisesuppression MediaTrackSettings.noiseSuppression specification>
+setNoiseSuppression :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setNoiseSuppression self val = liftDOM (void (self ^. jss "noiseSuppression" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-noisesuppression MediaTrackSettings.noiseSuppression specification>
+getNoiseSuppression :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getNoiseSuppression self = liftDOM (((self ^. js "noiseSuppression") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-noisesuppression MediaTrackSettings.noiseSuppression specification>
+getNoiseSuppressionUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getNoiseSuppressionUnsafe self = liftDOM ((((self ^. js "noiseSuppression") >>= 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 (((self ^. js "noiseSuppression") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-latency MediaTrackSettings.latency specification>
+setLatency :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setLatency self val = liftDOM (void (self ^. jss "latency" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-latency MediaTrackSettings.latency specification>
+getLatency :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getLatency self = liftDOM (((self ^. js "latency") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-latency MediaTrackSettings.latency specification>
+getLatencyUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getLatencyUnsafe self = liftDOM ((((self ^. js "latency") >>= 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 (((self ^. js "latency") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-channelcount MediaTrackSettings.channelCount specification>
+setChannelCount :: (MonadDOM m) => MediaTrackSettings -> Word -> m ()
+setChannelCount self val = liftDOM (void (self ^. jss "channelCount" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-channelcount MediaTrackSettings.channelCount specification>
+getChannelCount :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Word)
+getChannelCount self = liftDOM (((self ^. js "channelCount") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-channelcount MediaTrackSettings.channelCount specification>
+getChannelCountUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Word
+getChannelCountUnsafe self = liftDOM ((((self ^. js "channelCount") >>= 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 ((P.round <$> ((self ^. js "channelCount") >>= valToNumber)))
+
+-- | <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 (self ^. jss "deviceId" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-deviceid MediaTrackSettings.deviceId specification>
+getDeviceId :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getDeviceId self = liftDOM (((self ^. js "deviceId") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-deviceid MediaTrackSettings.deviceId specification>
+getDeviceIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getDeviceIdUnsafe self = liftDOM ((((self ^. js "deviceId") >>= fromMaybeJSString) >>= 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 (((self ^. js "deviceId") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "groupId" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-groupid MediaTrackSettings.groupId specification>
+getGroupId :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getGroupId self = liftDOM (((self ^. js "groupId") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-groupid MediaTrackSettings.groupId specification>
+getGroupIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getGroupIdUnsafe self = liftDOM ((((self ^. js "groupId") >>= fromMaybeJSString) >>= 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 (((self ^. js "groupId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-backgroundblur MediaTrackSettings.backgroundBlur specification>
+setBackgroundBlur :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setBackgroundBlur self val = liftDOM (void (self ^. jss "backgroundBlur" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-backgroundblur MediaTrackSettings.backgroundBlur specification>
+getBackgroundBlur :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getBackgroundBlur self = liftDOM (((self ^. js "backgroundBlur") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksettings-backgroundblur MediaTrackSettings.backgroundBlur specification>
+getBackgroundBlurUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getBackgroundBlurUnsafe self = liftDOM ((((self ^. js "backgroundBlur") >>= 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 (((self ^. js "backgroundBlur") >>= valToBool))
+
+-- | <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 (self ^. jss "whiteBalanceMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-whitebalancemode MediaTrackSettings.whiteBalanceMode specification>
+getWhiteBalanceMode :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getWhiteBalanceMode self = liftDOM (((self ^. js "whiteBalanceMode") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-whitebalancemode MediaTrackSettings.whiteBalanceMode specification>
+getWhiteBalanceModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getWhiteBalanceModeUnsafe self = liftDOM ((((self ^. js "whiteBalanceMode") >>= fromMaybeJSString) >>= 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 (((self ^. js "whiteBalanceMode") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "exposureMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposuremode MediaTrackSettings.exposureMode specification>
+getExposureMode :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getExposureMode self = liftDOM (((self ^. js "exposureMode") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposuremode MediaTrackSettings.exposureMode specification>
+getExposureModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getExposureModeUnsafe self = liftDOM ((((self ^. js "exposureMode") >>= fromMaybeJSString) >>= 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 (((self ^. js "exposureMode") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "focusMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-focusmode MediaTrackSettings.focusMode specification>
+getFocusMode :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getFocusMode self = liftDOM (((self ^. js "focusMode") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-focusmode MediaTrackSettings.focusMode specification>
+getFocusModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getFocusModeUnsafe self = liftDOM ((((self ^. js "focusMode") >>= fromMaybeJSString) >>= 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 (((self ^. js "focusMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-pointsofinterest MediaTrackSettings.pointsOfInterest specification>
+setPointsOfInterest :: (MonadDOM m) => MediaTrackSettings -> [Point2D] -> m ()
+setPointsOfInterest self val = liftDOM (void (self ^. jss "pointsOfInterest" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-pointsofinterest MediaTrackSettings.pointsOfInterest specification>
+getPointsOfInterest :: (MonadDOM m) => MediaTrackSettings -> m (Maybe [Point2D])
+getPointsOfInterest self = liftDOM (((self ^. js "pointsOfInterest") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-pointsofinterest MediaTrackSettings.pointsOfInterest specification>
+getPointsOfInterestUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m [Point2D]
+getPointsOfInterestUnsafe self = liftDOM ((((self ^. js "pointsOfInterest") >>= 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 (((self ^. js "pointsOfInterest") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposurecompensation MediaTrackSettings.exposureCompensation specification>
+setExposureCompensation :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setExposureCompensation self val = liftDOM (void (self ^. jss "exposureCompensation" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposurecompensation MediaTrackSettings.exposureCompensation specification>
+getExposureCompensation :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getExposureCompensation self = liftDOM (((self ^. js "exposureCompensation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposurecompensation MediaTrackSettings.exposureCompensation specification>
+getExposureCompensationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getExposureCompensationUnsafe self = liftDOM ((((self ^. js "exposureCompensation") >>= 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 (((self ^. js "exposureCompensation") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposuretime MediaTrackSettings.exposureTime specification>
+setExposureTime :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setExposureTime self val = liftDOM (void (self ^. jss "exposureTime" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposuretime MediaTrackSettings.exposureTime specification>
+getExposureTime :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getExposureTime self = liftDOM (((self ^. js "exposureTime") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-exposuretime MediaTrackSettings.exposureTime specification>
+getExposureTimeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getExposureTimeUnsafe self = liftDOM ((((self ^. js "exposureTime") >>= 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 (((self ^. js "exposureTime") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-colortemperature MediaTrackSettings.colorTemperature specification>
+setColorTemperature :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setColorTemperature self val = liftDOM (void (self ^. jss "colorTemperature" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-colortemperature MediaTrackSettings.colorTemperature specification>
+getColorTemperature :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getColorTemperature self = liftDOM (((self ^. js "colorTemperature") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-colortemperature MediaTrackSettings.colorTemperature specification>
+getColorTemperatureUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getColorTemperatureUnsafe self = liftDOM ((((self ^. js "colorTemperature") >>= 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 (((self ^. js "colorTemperature") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-iso MediaTrackSettings.iso specification>
+setIso :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setIso self val = liftDOM (void (self ^. jss "iso" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-iso MediaTrackSettings.iso specification>
+getIso :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getIso self = liftDOM (((self ^. js "iso") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-iso MediaTrackSettings.iso specification>
+getIsoUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getIsoUnsafe self = liftDOM ((((self ^. js "iso") >>= 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 (((self ^. js "iso") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-brightness MediaTrackSettings.brightness specification>
+setBrightness :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setBrightness self val = liftDOM (void (self ^. jss "brightness" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-brightness MediaTrackSettings.brightness specification>
+getBrightness :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getBrightness self = liftDOM (((self ^. js "brightness") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-brightness MediaTrackSettings.brightness specification>
+getBrightnessUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getBrightnessUnsafe self = liftDOM ((((self ^. js "brightness") >>= 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 (((self ^. js "brightness") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-contrast MediaTrackSettings.contrast specification>
+setContrast :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setContrast self val = liftDOM (void (self ^. jss "contrast" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-contrast MediaTrackSettings.contrast specification>
+getContrast :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getContrast self = liftDOM (((self ^. js "contrast") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-contrast MediaTrackSettings.contrast specification>
+getContrastUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getContrastUnsafe self = liftDOM ((((self ^. js "contrast") >>= 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 (((self ^. js "contrast") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-saturation MediaTrackSettings.saturation specification>
+setSaturation :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setSaturation self val = liftDOM (void (self ^. jss "saturation" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-saturation MediaTrackSettings.saturation specification>
+getSaturation :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getSaturation self = liftDOM (((self ^. js "saturation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-saturation MediaTrackSettings.saturation specification>
+getSaturationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getSaturationUnsafe self = liftDOM ((((self ^. js "saturation") >>= 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 (((self ^. js "saturation") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-sharpness MediaTrackSettings.sharpness specification>
+setSharpness :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setSharpness self val = liftDOM (void (self ^. jss "sharpness" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-sharpness MediaTrackSettings.sharpness specification>
+getSharpness :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getSharpness self = liftDOM (((self ^. js "sharpness") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-sharpness MediaTrackSettings.sharpness specification>
+getSharpnessUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getSharpnessUnsafe self = liftDOM ((((self ^. js "sharpness") >>= 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 (((self ^. js "sharpness") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-focusdistance MediaTrackSettings.focusDistance specification>
+setFocusDistance :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setFocusDistance self val = liftDOM (void (self ^. jss "focusDistance" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-focusdistance MediaTrackSettings.focusDistance specification>
+getFocusDistance :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getFocusDistance self = liftDOM (((self ^. js "focusDistance") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-focusdistance MediaTrackSettings.focusDistance specification>
+getFocusDistanceUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getFocusDistanceUnsafe self = liftDOM ((((self ^. js "focusDistance") >>= 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 (((self ^. js "focusDistance") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-pan MediaTrackSettings.pan specification>
+setPan :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setPan self val = liftDOM (void (self ^. jss "pan" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-pan MediaTrackSettings.pan specification>
+getPan :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getPan self = liftDOM (((self ^. js "pan") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-pan MediaTrackSettings.pan specification>
+getPanUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getPanUnsafe self = liftDOM ((((self ^. js "pan") >>= 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 (((self ^. js "pan") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-tilt MediaTrackSettings.tilt specification>
+setTilt :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setTilt self val = liftDOM (void (self ^. jss "tilt" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-tilt MediaTrackSettings.tilt specification>
+getTilt :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getTilt self = liftDOM (((self ^. js "tilt") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-tilt MediaTrackSettings.tilt specification>
+getTiltUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getTiltUnsafe self = liftDOM ((((self ^. js "tilt") >>= 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 (((self ^. js "tilt") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-zoom MediaTrackSettings.zoom specification>
+setZoom :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setZoom self val = liftDOM (void (self ^. jss "zoom" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-zoom MediaTrackSettings.zoom specification>
+getZoom :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getZoom self = liftDOM (((self ^. js "zoom") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-zoom MediaTrackSettings.zoom specification>
+getZoomUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getZoomUnsafe self = liftDOM ((((self ^. js "zoom") >>= 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 (((self ^. js "zoom") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-torch MediaTrackSettings.torch specification>
+setTorch :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setTorch self val = liftDOM (void (self ^. jss "torch" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-torch MediaTrackSettings.torch specification>
+getTorch :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getTorch self = liftDOM (((self ^. js "torch") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksettings-torch MediaTrackSettings.torch specification>
+getTorchUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getTorchUnsafe self = liftDOM ((((self ^. js "torch") >>= 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 (((self ^. js "torch") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-powerefficient MediaTrackSettings.powerEfficient specification>
+setPowerEfficient :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setPowerEfficient self val = liftDOM (void (self ^. jss "powerEfficient" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-powerefficient MediaTrackSettings.powerEfficient specification>
+getPowerEfficient :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getPowerEfficient self = liftDOM (((self ^. js "powerEfficient") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-powerefficient MediaTrackSettings.powerEfficient specification>
+getPowerEfficientUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getPowerEfficientUnsafe self = liftDOM ((((self ^. js "powerEfficient") >>= 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 (((self ^. js "powerEfficient") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-powerefficientpixelformat MediaTrackSettings.powerEfficientPixelFormat specification>
+setPowerEfficientPixelFormat :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setPowerEfficientPixelFormat self val = liftDOM (void (self ^. jss "powerEfficientPixelFormat" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-powerefficientpixelformat MediaTrackSettings.powerEfficientPixelFormat specification>
+getPowerEfficientPixelFormat :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getPowerEfficientPixelFormat self = liftDOM (((self ^. js "powerEfficientPixelFormat") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-powerefficientpixelformat MediaTrackSettings.powerEfficientPixelFormat specification>
+getPowerEfficientPixelFormatUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getPowerEfficientPixelFormatUnsafe self = liftDOM ((((self ^. js "powerEfficientPixelFormat") >>= 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 (((self ^. js "powerEfficientPixelFormat") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-gesturereactions MediaTrackSettings.gestureReactions specification>
+setGestureReactions :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setGestureReactions self val = liftDOM (void (self ^. jss "gestureReactions" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-gesturereactions MediaTrackSettings.gestureReactions specification>
+getGestureReactions :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getGestureReactions self = liftDOM (((self ^. js "gestureReactions") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-gesturereactions MediaTrackSettings.gestureReactions specification>
+getGestureReactionsUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getGestureReactionsUnsafe self = liftDOM ((((self ^. js "gestureReactions") >>= 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 (((self ^. js "gestureReactions") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-faceframing MediaTrackSettings.faceFraming specification>
+setFaceFraming :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setFaceFraming self val = liftDOM (void (self ^. jss "faceFraming" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-faceframing MediaTrackSettings.faceFraming specification>
+getFaceFraming :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getFaceFraming self = liftDOM (((self ^. js "faceFraming") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-faceframing MediaTrackSettings.faceFraming specification>
+getFaceFramingUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getFaceFramingUnsafe self = liftDOM ((((self ^. js "faceFraming") >>= 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 (((self ^. js "faceFraming") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-eyegazecorrection MediaTrackSettings.eyeGazeCorrection specification>
+setEyeGazeCorrection :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setEyeGazeCorrection self val = liftDOM (void (self ^. jss "eyeGazeCorrection" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-eyegazecorrection MediaTrackSettings.eyeGazeCorrection specification>
+getEyeGazeCorrection :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getEyeGazeCorrection self = liftDOM (((self ^. js "eyeGazeCorrection") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-eyegazecorrection MediaTrackSettings.eyeGazeCorrection specification>
+getEyeGazeCorrectionUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getEyeGazeCorrectionUnsafe self = liftDOM ((((self ^. js "eyeGazeCorrection") >>= 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 (((self ^. js "eyeGazeCorrection") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-voiceisolation MediaTrackSettings.voiceIsolation specification>
+setVoiceIsolation :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setVoiceIsolation self val = liftDOM (void (self ^. jss "voiceIsolation" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-voiceisolation MediaTrackSettings.voiceIsolation specification>
+getVoiceIsolation :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getVoiceIsolation self = liftDOM (((self ^. js "voiceIsolation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-voiceisolation MediaTrackSettings.voiceIsolation specification>
+getVoiceIsolationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getVoiceIsolationUnsafe self = liftDOM ((((self ^. js "voiceIsolation") >>= 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 (((self ^. js "voiceIsolation") >>= valToBool))
+
+-- | <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 (self ^. jss "humanFaceDetectionMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-humanfacedetectionmode MediaTrackSettings.humanFaceDetectionMode specification>
+getHumanFaceDetectionMode :: (MonadDOM m, FromJSString result) => MediaTrackSettings -> m (Maybe result)
+getHumanFaceDetectionMode self = liftDOM (((self ^. js "humanFaceDetectionMode") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-humanfacedetectionmode MediaTrackSettings.humanFaceDetectionMode specification>
+getHumanFaceDetectionModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MediaTrackSettings -> m result
+getHumanFaceDetectionModeUnsafe self = liftDOM ((((self ^. js "humanFaceDetectionMode") >>= fromMaybeJSString) >>= 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 (((self ^. js "humanFaceDetectionMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-backgroundsegmentationmask MediaTrackSettings.backgroundSegmentationMask specification>
+setBackgroundSegmentationMask :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setBackgroundSegmentationMask self val = liftDOM (void (self ^. jss "backgroundSegmentationMask" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-backgroundsegmentationmask MediaTrackSettings.backgroundSegmentationMask specification>
+getBackgroundSegmentationMask :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getBackgroundSegmentationMask self = liftDOM (((self ^. js "backgroundSegmentationMask") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksettings-backgroundsegmentationmask MediaTrackSettings.backgroundSegmentationMask specification>
+getBackgroundSegmentationMaskUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getBackgroundSegmentationMaskUnsafe self = liftDOM ((((self ^. js "backgroundSegmentationMask") >>= 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 (((self ^. js "backgroundSegmentationMask") >>= valToBool))
+
+-- | <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 (self ^. jss "displaySurface" (toJSVal val)))
+
+-- | <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 (((self ^. js "displaySurface") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "displaySurface") >>= fromMaybeJSString) >>= 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 (((self ^. js "displaySurface") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-logicalsurface MediaTrackSettings.logicalSurface specification>
+setLogicalSurface :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setLogicalSurface self val = liftDOM (void (self ^. jss "logicalSurface" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-logicalsurface MediaTrackSettings.logicalSurface specification>
+getLogicalSurface :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getLogicalSurface self = liftDOM (((self ^. js "logicalSurface") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-logicalsurface MediaTrackSettings.logicalSurface specification>
+getLogicalSurfaceUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getLogicalSurfaceUnsafe self = liftDOM ((((self ^. js "logicalSurface") >>= 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 (((self ^. js "logicalSurface") >>= valToBool))
+
+-- | <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 (self ^. jss "cursor" (toJSVal val)))
+
+-- | <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 (((self ^. js "cursor") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "cursor") >>= fromMaybeJSString) >>= 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 (((self ^. js "cursor") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-restrictownaudio MediaTrackSettings.restrictOwnAudio specification>
+setRestrictOwnAudio :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setRestrictOwnAudio self val = liftDOM (void (self ^. jss "restrictOwnAudio" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-restrictownaudio MediaTrackSettings.restrictOwnAudio specification>
+getRestrictOwnAudio :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getRestrictOwnAudio self = liftDOM (((self ^. js "restrictOwnAudio") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-restrictownaudio MediaTrackSettings.restrictOwnAudio specification>
+getRestrictOwnAudioUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getRestrictOwnAudioUnsafe self = liftDOM ((((self ^. js "restrictOwnAudio") >>= 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 (((self ^. js "restrictOwnAudio") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-suppresslocalaudioplayback MediaTrackSettings.suppressLocalAudioPlayback specification>
+setSuppressLocalAudioPlayback :: (MonadDOM m) => MediaTrackSettings -> Bool -> m ()
+setSuppressLocalAudioPlayback self val = liftDOM (void (self ^. jss "suppressLocalAudioPlayback" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-suppresslocalaudioplayback MediaTrackSettings.suppressLocalAudioPlayback specification>
+getSuppressLocalAudioPlayback :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Bool)
+getSuppressLocalAudioPlayback self = liftDOM (((self ^. js "suppressLocalAudioPlayback") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-suppresslocalaudioplayback MediaTrackSettings.suppressLocalAudioPlayback specification>
+getSuppressLocalAudioPlaybackUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Bool
+getSuppressLocalAudioPlaybackUnsafe self = liftDOM ((((self ^. js "suppressLocalAudioPlayback") >>= 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 (((self ^. js "suppressLocalAudioPlayback") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-screenpixelratio MediaTrackSettings.screenPixelRatio specification>
+setScreenPixelRatio :: (MonadDOM m) => MediaTrackSettings -> Double -> m ()
+setScreenPixelRatio self val = liftDOM (void (self ^. jss "screenPixelRatio" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-screenpixelratio MediaTrackSettings.screenPixelRatio specification>
+getScreenPixelRatio :: (MonadDOM m) => MediaTrackSettings -> m (Maybe Double)
+getScreenPixelRatio self = liftDOM (((self ^. js "screenPixelRatio") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksettings-screenpixelratio MediaTrackSettings.screenPixelRatio specification>
+getScreenPixelRatioUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSettings -> m Double
+getScreenPixelRatioUnsafe self = liftDOM ((((self ^. js "screenPixelRatio") >>= 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 (((self ^. js "screenPixelRatio") >>= valToNumber))
diff --git a/src/JSDOM/Generated/MediaTrackSupportedConstraints.hs b/src/JSDOM/Generated/MediaTrackSupportedConstraints.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MediaTrackSupportedConstraints.hs
@@ -0,0 +1,756 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module JSDOM.Generated.MediaTrackSupportedConstraints
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints MediaTrackSupportedConstraints specification>
+newMediaTrackSupportedConstraints :: (MonadDOM m) => m MediaTrackSupportedConstraints
+newMediaTrackSupportedConstraints = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-width MediaTrackSupportedConstraints.width specification>
+setWidth :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-width MediaTrackSupportedConstraints.width specification>
+getWidth :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-width MediaTrackSupportedConstraints.width specification>
+getWidthUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getWidthUnsafe self = liftDOM ((((self ^. js "width") >>= 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 (((self ^. js "width") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-height MediaTrackSupportedConstraints.height specification>
+setHeight :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setHeight self val = liftDOM (void (self ^. jss "height" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-height MediaTrackSupportedConstraints.height specification>
+getHeight :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-height MediaTrackSupportedConstraints.height specification>
+getHeightUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getHeightUnsafe self = liftDOM ((((self ^. js "height") >>= 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 (((self ^. js "height") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-aspectratio MediaTrackSupportedConstraints.aspectRatio specification>
+setAspectRatio :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setAspectRatio self val = liftDOM (void (self ^. jss "aspectRatio" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-aspectratio MediaTrackSupportedConstraints.aspectRatio specification>
+getAspectRatio :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getAspectRatio self = liftDOM (((self ^. js "aspectRatio") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-aspectratio MediaTrackSupportedConstraints.aspectRatio specification>
+getAspectRatioUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getAspectRatioUnsafe self = liftDOM ((((self ^. js "aspectRatio") >>= 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 (((self ^. js "aspectRatio") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-framerate MediaTrackSupportedConstraints.frameRate specification>
+setFrameRate :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setFrameRate self val = liftDOM (void (self ^. jss "frameRate" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-framerate MediaTrackSupportedConstraints.frameRate specification>
+getFrameRate :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getFrameRate self = liftDOM (((self ^. js "frameRate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-framerate MediaTrackSupportedConstraints.frameRate specification>
+getFrameRateUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getFrameRateUnsafe self = liftDOM ((((self ^. js "frameRate") >>= 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 (((self ^. js "frameRate") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-facingmode MediaTrackSupportedConstraints.facingMode specification>
+setFacingMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setFacingMode self val = liftDOM (void (self ^. jss "facingMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-facingmode MediaTrackSupportedConstraints.facingMode specification>
+getFacingMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getFacingMode self = liftDOM (((self ^. js "facingMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-facingmode MediaTrackSupportedConstraints.facingMode specification>
+getFacingModeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getFacingModeUnsafe self = liftDOM ((((self ^. js "facingMode") >>= 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 (((self ^. js "facingMode") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-resizemode MediaTrackSupportedConstraints.resizeMode specification>
+setResizeMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setResizeMode self val = liftDOM (void (self ^. jss "resizeMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-resizemode MediaTrackSupportedConstraints.resizeMode specification>
+getResizeMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getResizeMode self = liftDOM (((self ^. js "resizeMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-resizemode MediaTrackSupportedConstraints.resizeMode specification>
+getResizeModeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getResizeModeUnsafe self = liftDOM ((((self ^. js "resizeMode") >>= 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 (((self ^. js "resizeMode") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-samplerate MediaTrackSupportedConstraints.sampleRate specification>
+setSampleRate :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setSampleRate self val = liftDOM (void (self ^. jss "sampleRate" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-samplerate MediaTrackSupportedConstraints.sampleRate specification>
+getSampleRate :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getSampleRate self = liftDOM (((self ^. js "sampleRate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-samplerate MediaTrackSupportedConstraints.sampleRate specification>
+getSampleRateUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getSampleRateUnsafe self = liftDOM ((((self ^. js "sampleRate") >>= 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 (((self ^. js "sampleRate") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-samplesize MediaTrackSupportedConstraints.sampleSize specification>
+setSampleSize :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setSampleSize self val = liftDOM (void (self ^. jss "sampleSize" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-samplesize MediaTrackSupportedConstraints.sampleSize specification>
+getSampleSize :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getSampleSize self = liftDOM (((self ^. js "sampleSize") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-samplesize MediaTrackSupportedConstraints.sampleSize specification>
+getSampleSizeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getSampleSizeUnsafe self = liftDOM ((((self ^. js "sampleSize") >>= 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 (((self ^. js "sampleSize") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-echocancellation MediaTrackSupportedConstraints.echoCancellation specification>
+setEchoCancellation :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setEchoCancellation self val = liftDOM (void (self ^. jss "echoCancellation" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-echocancellation MediaTrackSupportedConstraints.echoCancellation specification>
+getEchoCancellation :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getEchoCancellation self = liftDOM (((self ^. js "echoCancellation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-echocancellation MediaTrackSupportedConstraints.echoCancellation specification>
+getEchoCancellationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getEchoCancellationUnsafe self = liftDOM ((((self ^. js "echoCancellation") >>= 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 (((self ^. js "echoCancellation") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-autogaincontrol MediaTrackSupportedConstraints.autoGainControl specification>
+setAutoGainControl :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setAutoGainControl self val = liftDOM (void (self ^. jss "autoGainControl" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-autogaincontrol MediaTrackSupportedConstraints.autoGainControl specification>
+getAutoGainControl :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getAutoGainControl self = liftDOM (((self ^. js "autoGainControl") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-autogaincontrol MediaTrackSupportedConstraints.autoGainControl specification>
+getAutoGainControlUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getAutoGainControlUnsafe self = liftDOM ((((self ^. js "autoGainControl") >>= 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 (((self ^. js "autoGainControl") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-noisesuppression MediaTrackSupportedConstraints.noiseSuppression specification>
+setNoiseSuppression :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setNoiseSuppression self val = liftDOM (void (self ^. jss "noiseSuppression" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-noisesuppression MediaTrackSupportedConstraints.noiseSuppression specification>
+getNoiseSuppression :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getNoiseSuppression self = liftDOM (((self ^. js "noiseSuppression") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-noisesuppression MediaTrackSupportedConstraints.noiseSuppression specification>
+getNoiseSuppressionUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getNoiseSuppressionUnsafe self = liftDOM ((((self ^. js "noiseSuppression") >>= 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 (((self ^. js "noiseSuppression") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-latency MediaTrackSupportedConstraints.latency specification>
+setLatency :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setLatency self val = liftDOM (void (self ^. jss "latency" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-latency MediaTrackSupportedConstraints.latency specification>
+getLatency :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getLatency self = liftDOM (((self ^. js "latency") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-latency MediaTrackSupportedConstraints.latency specification>
+getLatencyUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getLatencyUnsafe self = liftDOM ((((self ^. js "latency") >>= 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 (((self ^. js "latency") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-channelcount MediaTrackSupportedConstraints.channelCount specification>
+setChannelCount :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setChannelCount self val = liftDOM (void (self ^. jss "channelCount" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-channelcount MediaTrackSupportedConstraints.channelCount specification>
+getChannelCount :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getChannelCount self = liftDOM (((self ^. js "channelCount") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-channelcount MediaTrackSupportedConstraints.channelCount specification>
+getChannelCountUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getChannelCountUnsafe self = liftDOM ((((self ^. js "channelCount") >>= 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 (((self ^. js "channelCount") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-deviceid MediaTrackSupportedConstraints.deviceId specification>
+setDeviceId :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setDeviceId self val = liftDOM (void (self ^. jss "deviceId" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-deviceid MediaTrackSupportedConstraints.deviceId specification>
+getDeviceId :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getDeviceId self = liftDOM (((self ^. js "deviceId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-deviceid MediaTrackSupportedConstraints.deviceId specification>
+getDeviceIdUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getDeviceIdUnsafe self = liftDOM ((((self ^. js "deviceId") >>= 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 (((self ^. js "deviceId") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-groupid MediaTrackSupportedConstraints.groupId specification>
+setGroupId :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setGroupId self val = liftDOM (void (self ^. jss "groupId" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-groupid MediaTrackSupportedConstraints.groupId specification>
+getGroupId :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getGroupId self = liftDOM (((self ^. js "groupId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-groupid MediaTrackSupportedConstraints.groupId specification>
+getGroupIdUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getGroupIdUnsafe self = liftDOM ((((self ^. js "groupId") >>= 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 (((self ^. js "groupId") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-backgroundblur MediaTrackSupportedConstraints.backgroundBlur specification>
+setBackgroundBlur :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setBackgroundBlur self val = liftDOM (void (self ^. jss "backgroundBlur" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-backgroundblur MediaTrackSupportedConstraints.backgroundBlur specification>
+getBackgroundBlur :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getBackgroundBlur self = liftDOM (((self ^. js "backgroundBlur") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-mediatracksupportedconstraints-backgroundblur MediaTrackSupportedConstraints.backgroundBlur specification>
+getBackgroundBlurUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getBackgroundBlurUnsafe self = liftDOM ((((self ^. js "backgroundBlur") >>= 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 (((self ^. js "backgroundBlur") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-whitebalancemode MediaTrackSupportedConstraints.whiteBalanceMode specification>
+setWhiteBalanceMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setWhiteBalanceMode self val = liftDOM (void (self ^. jss "whiteBalanceMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-whitebalancemode MediaTrackSupportedConstraints.whiteBalanceMode specification>
+getWhiteBalanceMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getWhiteBalanceMode self = liftDOM (((self ^. js "whiteBalanceMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-whitebalancemode MediaTrackSupportedConstraints.whiteBalanceMode specification>
+getWhiteBalanceModeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getWhiteBalanceModeUnsafe self = liftDOM ((((self ^. js "whiteBalanceMode") >>= 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 (((self ^. js "whiteBalanceMode") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposuremode MediaTrackSupportedConstraints.exposureMode specification>
+setExposureMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setExposureMode self val = liftDOM (void (self ^. jss "exposureMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposuremode MediaTrackSupportedConstraints.exposureMode specification>
+getExposureMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getExposureMode self = liftDOM (((self ^. js "exposureMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposuremode MediaTrackSupportedConstraints.exposureMode specification>
+getExposureModeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getExposureModeUnsafe self = liftDOM ((((self ^. js "exposureMode") >>= 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 (((self ^. js "exposureMode") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-focusmode MediaTrackSupportedConstraints.focusMode specification>
+setFocusMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setFocusMode self val = liftDOM (void (self ^. jss "focusMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-focusmode MediaTrackSupportedConstraints.focusMode specification>
+getFocusMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getFocusMode self = liftDOM (((self ^. js "focusMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-focusmode MediaTrackSupportedConstraints.focusMode specification>
+getFocusModeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getFocusModeUnsafe self = liftDOM ((((self ^. js "focusMode") >>= 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 (((self ^. js "focusMode") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-pointsofinterest MediaTrackSupportedConstraints.pointsOfInterest specification>
+setPointsOfInterest :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setPointsOfInterest self val = liftDOM (void (self ^. jss "pointsOfInterest" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-pointsofinterest MediaTrackSupportedConstraints.pointsOfInterest specification>
+getPointsOfInterest :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getPointsOfInterest self = liftDOM (((self ^. js "pointsOfInterest") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-pointsofinterest MediaTrackSupportedConstraints.pointsOfInterest specification>
+getPointsOfInterestUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getPointsOfInterestUnsafe self = liftDOM ((((self ^. js "pointsOfInterest") >>= 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 (((self ^. js "pointsOfInterest") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposurecompensation MediaTrackSupportedConstraints.exposureCompensation specification>
+setExposureCompensation :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setExposureCompensation self val = liftDOM (void (self ^. jss "exposureCompensation" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposurecompensation MediaTrackSupportedConstraints.exposureCompensation specification>
+getExposureCompensation :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getExposureCompensation self = liftDOM (((self ^. js "exposureCompensation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposurecompensation MediaTrackSupportedConstraints.exposureCompensation specification>
+getExposureCompensationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getExposureCompensationUnsafe self = liftDOM ((((self ^. js "exposureCompensation") >>= 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 (((self ^. js "exposureCompensation") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposuretime MediaTrackSupportedConstraints.exposureTime specification>
+setExposureTime :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setExposureTime self val = liftDOM (void (self ^. jss "exposureTime" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposuretime MediaTrackSupportedConstraints.exposureTime specification>
+getExposureTime :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getExposureTime self = liftDOM (((self ^. js "exposureTime") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-exposuretime MediaTrackSupportedConstraints.exposureTime specification>
+getExposureTimeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getExposureTimeUnsafe self = liftDOM ((((self ^. js "exposureTime") >>= 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 (((self ^. js "exposureTime") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-colortemperature MediaTrackSupportedConstraints.colorTemperature specification>
+setColorTemperature :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setColorTemperature self val = liftDOM (void (self ^. jss "colorTemperature" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-colortemperature MediaTrackSupportedConstraints.colorTemperature specification>
+getColorTemperature :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getColorTemperature self = liftDOM (((self ^. js "colorTemperature") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-colortemperature MediaTrackSupportedConstraints.colorTemperature specification>
+getColorTemperatureUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getColorTemperatureUnsafe self = liftDOM ((((self ^. js "colorTemperature") >>= 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 (((self ^. js "colorTemperature") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-iso MediaTrackSupportedConstraints.iso specification>
+setIso :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setIso self val = liftDOM (void (self ^. jss "iso" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-iso MediaTrackSupportedConstraints.iso specification>
+getIso :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getIso self = liftDOM (((self ^. js "iso") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-iso MediaTrackSupportedConstraints.iso specification>
+getIsoUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getIsoUnsafe self = liftDOM ((((self ^. js "iso") >>= 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 (((self ^. js "iso") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-brightness MediaTrackSupportedConstraints.brightness specification>
+setBrightness :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setBrightness self val = liftDOM (void (self ^. jss "brightness" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-brightness MediaTrackSupportedConstraints.brightness specification>
+getBrightness :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getBrightness self = liftDOM (((self ^. js "brightness") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-brightness MediaTrackSupportedConstraints.brightness specification>
+getBrightnessUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getBrightnessUnsafe self = liftDOM ((((self ^. js "brightness") >>= 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 (((self ^. js "brightness") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-contrast MediaTrackSupportedConstraints.contrast specification>
+setContrast :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setContrast self val = liftDOM (void (self ^. jss "contrast" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-contrast MediaTrackSupportedConstraints.contrast specification>
+getContrast :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getContrast self = liftDOM (((self ^. js "contrast") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-contrast MediaTrackSupportedConstraints.contrast specification>
+getContrastUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getContrastUnsafe self = liftDOM ((((self ^. js "contrast") >>= 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 (((self ^. js "contrast") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-pan MediaTrackSupportedConstraints.pan specification>
+setPan :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setPan self val = liftDOM (void (self ^. jss "pan" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-pan MediaTrackSupportedConstraints.pan specification>
+getPan :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getPan self = liftDOM (((self ^. js "pan") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-pan MediaTrackSupportedConstraints.pan specification>
+getPanUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getPanUnsafe self = liftDOM ((((self ^. js "pan") >>= 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 (((self ^. js "pan") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-saturation MediaTrackSupportedConstraints.saturation specification>
+setSaturation :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setSaturation self val = liftDOM (void (self ^. jss "saturation" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-saturation MediaTrackSupportedConstraints.saturation specification>
+getSaturation :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getSaturation self = liftDOM (((self ^. js "saturation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-saturation MediaTrackSupportedConstraints.saturation specification>
+getSaturationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getSaturationUnsafe self = liftDOM ((((self ^. js "saturation") >>= 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 (((self ^. js "saturation") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-sharpness MediaTrackSupportedConstraints.sharpness specification>
+setSharpness :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setSharpness self val = liftDOM (void (self ^. jss "sharpness" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-sharpness MediaTrackSupportedConstraints.sharpness specification>
+getSharpness :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getSharpness self = liftDOM (((self ^. js "sharpness") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-sharpness MediaTrackSupportedConstraints.sharpness specification>
+getSharpnessUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getSharpnessUnsafe self = liftDOM ((((self ^. js "sharpness") >>= 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 (((self ^. js "sharpness") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-focusdistance MediaTrackSupportedConstraints.focusDistance specification>
+setFocusDistance :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setFocusDistance self val = liftDOM (void (self ^. jss "focusDistance" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-focusdistance MediaTrackSupportedConstraints.focusDistance specification>
+getFocusDistance :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getFocusDistance self = liftDOM (((self ^. js "focusDistance") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-focusdistance MediaTrackSupportedConstraints.focusDistance specification>
+getFocusDistanceUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getFocusDistanceUnsafe self = liftDOM ((((self ^. js "focusDistance") >>= 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 (((self ^. js "focusDistance") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-tilt MediaTrackSupportedConstraints.tilt specification>
+setTilt :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setTilt self val = liftDOM (void (self ^. jss "tilt" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-tilt MediaTrackSupportedConstraints.tilt specification>
+getTilt :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getTilt self = liftDOM (((self ^. js "tilt") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-tilt MediaTrackSupportedConstraints.tilt specification>
+getTiltUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getTiltUnsafe self = liftDOM ((((self ^. js "tilt") >>= 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 (((self ^. js "tilt") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-zoom MediaTrackSupportedConstraints.zoom specification>
+setZoom :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setZoom self val = liftDOM (void (self ^. jss "zoom" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-zoom MediaTrackSupportedConstraints.zoom specification>
+getZoom :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getZoom self = liftDOM (((self ^. js "zoom") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-zoom MediaTrackSupportedConstraints.zoom specification>
+getZoomUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getZoomUnsafe self = liftDOM ((((self ^. js "zoom") >>= 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 (((self ^. js "zoom") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-torch MediaTrackSupportedConstraints.torch specification>
+setTorch :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setTorch self val = liftDOM (void (self ^. jss "torch" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-torch MediaTrackSupportedConstraints.torch specification>
+getTorch :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getTorch self = liftDOM (((self ^. js "torch") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-mediatracksupportedconstraints-torch MediaTrackSupportedConstraints.torch specification>
+getTorchUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getTorchUnsafe self = liftDOM ((((self ^. js "torch") >>= 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 (((self ^. js "torch") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-powerefficient MediaTrackSupportedConstraints.powerEfficient specification>
+setPowerEfficient :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setPowerEfficient self val = liftDOM (void (self ^. jss "powerEfficient" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-powerefficient MediaTrackSupportedConstraints.powerEfficient specification>
+getPowerEfficient :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getPowerEfficient self = liftDOM (((self ^. js "powerEfficient") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-powerefficient MediaTrackSupportedConstraints.powerEfficient specification>
+getPowerEfficientUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getPowerEfficientUnsafe self = liftDOM ((((self ^. js "powerEfficient") >>= 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 (((self ^. js "powerEfficient") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-powerefficientpixelformat MediaTrackSupportedConstraints.powerEfficientPixelFormat specification>
+setPowerEfficientPixelFormat :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setPowerEfficientPixelFormat self val = liftDOM (void (self ^. jss "powerEfficientPixelFormat" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-powerefficientpixelformat MediaTrackSupportedConstraints.powerEfficientPixelFormat specification>
+getPowerEfficientPixelFormat :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getPowerEfficientPixelFormat self = liftDOM (((self ^. js "powerEfficientPixelFormat") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-powerefficientpixelformat MediaTrackSupportedConstraints.powerEfficientPixelFormat specification>
+getPowerEfficientPixelFormatUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getPowerEfficientPixelFormatUnsafe self = liftDOM ((((self ^. js "powerEfficientPixelFormat") >>= 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 (((self ^. js "powerEfficientPixelFormat") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-gesturereactions MediaTrackSupportedConstraints.gestureReactions specification>
+setGestureReactions :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setGestureReactions self val = liftDOM (void (self ^. jss "gestureReactions" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-gesturereactions MediaTrackSupportedConstraints.gestureReactions specification>
+getGestureReactions :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getGestureReactions self = liftDOM (((self ^. js "gestureReactions") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-gesturereactions MediaTrackSupportedConstraints.gestureReactions specification>
+getGestureReactionsUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getGestureReactionsUnsafe self = liftDOM ((((self ^. js "gestureReactions") >>= 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 (((self ^. js "gestureReactions") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-faceframing MediaTrackSupportedConstraints.faceFraming specification>
+setFaceFraming :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setFaceFraming self val = liftDOM (void (self ^. jss "faceFraming" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-faceframing MediaTrackSupportedConstraints.faceFraming specification>
+getFaceFraming :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getFaceFraming self = liftDOM (((self ^. js "faceFraming") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-faceframing MediaTrackSupportedConstraints.faceFraming specification>
+getFaceFramingUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getFaceFramingUnsafe self = liftDOM ((((self ^. js "faceFraming") >>= 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 (((self ^. js "faceFraming") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-eyegazecorrection MediaTrackSupportedConstraints.eyeGazeCorrection specification>
+setEyeGazeCorrection :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setEyeGazeCorrection self val = liftDOM (void (self ^. jss "eyeGazeCorrection" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-eyegazecorrection MediaTrackSupportedConstraints.eyeGazeCorrection specification>
+getEyeGazeCorrection :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getEyeGazeCorrection self = liftDOM (((self ^. js "eyeGazeCorrection") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-eyegazecorrection MediaTrackSupportedConstraints.eyeGazeCorrection specification>
+getEyeGazeCorrectionUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getEyeGazeCorrectionUnsafe self = liftDOM ((((self ^. js "eyeGazeCorrection") >>= 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 (((self ^. js "eyeGazeCorrection") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-voiceisolation MediaTrackSupportedConstraints.voiceIsolation specification>
+setVoiceIsolation :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setVoiceIsolation self val = liftDOM (void (self ^. jss "voiceIsolation" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-voiceisolation MediaTrackSupportedConstraints.voiceIsolation specification>
+getVoiceIsolation :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getVoiceIsolation self = liftDOM (((self ^. js "voiceIsolation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-voiceisolation MediaTrackSupportedConstraints.voiceIsolation specification>
+getVoiceIsolationUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getVoiceIsolationUnsafe self = liftDOM ((((self ^. js "voiceIsolation") >>= 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 (((self ^. js "voiceIsolation") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-humanfacedetectionmode MediaTrackSupportedConstraints.humanFaceDetectionMode specification>
+setHumanFaceDetectionMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setHumanFaceDetectionMode self val = liftDOM (void (self ^. jss "humanFaceDetectionMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-humanfacedetectionmode MediaTrackSupportedConstraints.humanFaceDetectionMode specification>
+getHumanFaceDetectionMode :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getHumanFaceDetectionMode self = liftDOM (((self ^. js "humanFaceDetectionMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-humanfacedetectionmode MediaTrackSupportedConstraints.humanFaceDetectionMode specification>
+getHumanFaceDetectionModeUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getHumanFaceDetectionModeUnsafe self = liftDOM ((((self ^. js "humanFaceDetectionMode") >>= 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 (((self ^. js "humanFaceDetectionMode") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-backgroundsegmentationmask MediaTrackSupportedConstraints.backgroundSegmentationMask specification>
+setBackgroundSegmentationMask :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setBackgroundSegmentationMask self val = liftDOM (void (self ^. jss "backgroundSegmentationMask" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-backgroundsegmentationmask MediaTrackSupportedConstraints.backgroundSegmentationMask specification>
+getBackgroundSegmentationMask :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getBackgroundSegmentationMask self = liftDOM (((self ^. js "backgroundSegmentationMask") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-mediatracksupportedconstraints-backgroundsegmentationmask MediaTrackSupportedConstraints.backgroundSegmentationMask specification>
+getBackgroundSegmentationMaskUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getBackgroundSegmentationMaskUnsafe self = liftDOM ((((self ^. js "backgroundSegmentationMask") >>= 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 (((self ^. js "backgroundSegmentationMask") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-displaysurface MediaTrackSupportedConstraints.displaySurface specification>
+setDisplaySurface :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setDisplaySurface self val = liftDOM (void (self ^. jss "displaySurface" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-displaysurface MediaTrackSupportedConstraints.displaySurface specification>
+getDisplaySurface :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getDisplaySurface self = liftDOM (((self ^. js "displaySurface") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-displaysurface MediaTrackSupportedConstraints.displaySurface specification>
+getDisplaySurfaceUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getDisplaySurfaceUnsafe self = liftDOM ((((self ^. js "displaySurface") >>= 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 (((self ^. js "displaySurface") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-logicalsurface MediaTrackSupportedConstraints.logicalSurface specification>
+setLogicalSurface :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setLogicalSurface self val = liftDOM (void (self ^. jss "logicalSurface" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-logicalsurface MediaTrackSupportedConstraints.logicalSurface specification>
+getLogicalSurface :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getLogicalSurface self = liftDOM (((self ^. js "logicalSurface") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-logicalsurface MediaTrackSupportedConstraints.logicalSurface specification>
+getLogicalSurfaceUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getLogicalSurfaceUnsafe self = liftDOM ((((self ^. js "logicalSurface") >>= 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 (((self ^. js "logicalSurface") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-cursor MediaTrackSupportedConstraints.cursor specification>
+setCursor :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setCursor self val = liftDOM (void (self ^. jss "cursor" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-cursor MediaTrackSupportedConstraints.cursor specification>
+getCursor :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getCursor self = liftDOM (((self ^. js "cursor") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-cursor MediaTrackSupportedConstraints.cursor specification>
+getCursorUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getCursorUnsafe self = liftDOM ((((self ^. js "cursor") >>= 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 (((self ^. js "cursor") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-restrictownaudio MediaTrackSupportedConstraints.restrictOwnAudio specification>
+setRestrictOwnAudio :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setRestrictOwnAudio self val = liftDOM (void (self ^. jss "restrictOwnAudio" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-restrictownaudio MediaTrackSupportedConstraints.restrictOwnAudio specification>
+getRestrictOwnAudio :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getRestrictOwnAudio self = liftDOM (((self ^. js "restrictOwnAudio") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-restrictownaudio MediaTrackSupportedConstraints.restrictOwnAudio specification>
+getRestrictOwnAudioUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getRestrictOwnAudioUnsafe self = liftDOM ((((self ^. js "restrictOwnAudio") >>= 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 (((self ^. js "restrictOwnAudio") >>= valToBool))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-suppresslocalaudioplayback MediaTrackSupportedConstraints.suppressLocalAudioPlayback specification>
+setSuppressLocalAudioPlayback :: (MonadDOM m) => MediaTrackSupportedConstraints -> Bool -> m ()
+setSuppressLocalAudioPlayback self val = liftDOM (void (self ^. jss "suppressLocalAudioPlayback" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-suppresslocalaudioplayback MediaTrackSupportedConstraints.suppressLocalAudioPlayback specification>
+getSuppressLocalAudioPlayback :: (MonadDOM m) => MediaTrackSupportedConstraints -> m (Maybe Bool)
+getSuppressLocalAudioPlayback self = liftDOM (((self ^. js "suppressLocalAudioPlayback") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-screen-share/#dom-mediatracksupportedconstraints-suppresslocalaudioplayback MediaTrackSupportedConstraints.suppressLocalAudioPlayback specification>
+getSuppressLocalAudioPlaybackUnsafe :: (MonadDOM m, HasCallStack) => MediaTrackSupportedConstraints -> m Bool
+getSuppressLocalAudioPlaybackUnsafe self = liftDOM ((((self ^. js "suppressLocalAudioPlayback") >>= 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 (((self ^. js "suppressLocalAudioPlayback") >>= valToBool))
diff --git a/src/JSDOM/Generated/MessageChannel.hs b/src/JSDOM/Generated/MessageChannel.hs
--- a/src/JSDOM/Generated/MessageChannel.hs
+++ b/src/JSDOM/Generated/MessageChannel.hs
@@ -1,36 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.MessageChannel
-       (newMessageChannel, getPort1, getPort2, MessageChannel(..),
-        gTypeMessageChannel)
+       (newMessageChannel, getPort1, getPort2, MessageChannel(..), gTypeMessageChannel)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel Mozilla MessageChannel documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MessageChannel/MessageChannel MDN MessageChannel. documentation>
 newMessageChannel :: (MonadDOM m) => m MessageChannel
-newMessageChannel
-  = liftDOM (MessageChannel <$> new (jsg "MessageChannel") ())
+newMessageChannel = liftDOM (((new (jsg "MessageChannel") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel.port1 Mozilla MessageChannel.port1 documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MessageChannel/port1 MDN MessageChannel.port1 documentation>
 getPort1 :: (MonadDOM m) => MessageChannel -> m MessagePort
-getPort1 self
-  = liftDOM ((self ^. js "port1") >>= fromJSValUnchecked)
+getPort1 self = liftDOM (((self ^. js "port1") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel.port2 Mozilla MessageChannel.port2 documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MessageChannel/port2 MDN MessageChannel.port2 documentation>
 getPort2 :: (MonadDOM m) => MessageChannel -> m MessagePort
-getPort2 self
-  = liftDOM ((self ^. js "port2") >>= fromJSValUnchecked)
+getPort2 self = liftDOM (((self ^. js "port2") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MessageEvent.hs b/src/JSDOM/Generated/MessageEvent.hs
--- a/src/JSDOM/Generated/MessageEvent.hs
+++ b/src/JSDOM/Generated/MessageEvent.hs
@@ -1,89 +1,52 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.MessageEvent
-       (newMessageEvent, initMessageEvent, getOrigin, getLastEventId,
-        getSource, getSourceUnsafe, getSourceUnchecked, getData, getPorts,
-        MessageEvent(..), gTypeMessageEvent)
+       (newMessageEvent, initMessageEvent, getData, getOrigin, getLastEventId, getSource, getSourceUnsafe, getSourceUnchecked, getPorts, MessageEvent(..), gTypeMessageEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent Mozilla MessageEvent documentation> 
-newMessageEvent ::
-                (MonadDOM m, ToJSString type') =>
-                  type' -> Maybe MessageEventInit -> m MessageEvent
-newMessageEvent type' eventInitDict
-  = liftDOM
-      (MessageEvent <$>
-         new (jsg "MessageEvent") [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "MessageEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.initMessageEvent Mozilla MessageEvent.initMessageEvent documentation> 
-initMessageEvent ::
-                 (MonadDOM 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
-  = liftDOM
-      (void
-         (self ^. jsf "initMessageEvent"
-            [toJSVal type', toJSVal bubbles, toJSVal cancelable, toJSVal data',
-             toJSVal originArg, toJSVal lastEventId, toJSVal source,
-             toJSVal (array messagePorts)]))
+-- | <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 (self ^. jsf "initMessageEvent" [toJSVal type', P.maybe (P.return jsUndefined) toJSVal bubbles, P.maybe (P.return jsUndefined) toJSVal cancelable, toJSVal data', P.maybe (P.return jsUndefined) toJSVal origin, P.maybe (P.return jsUndefined) toJSVal lastEventId, toJSVal source, P.maybe (P.return jsUndefined) toJSVal ports]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.origin Mozilla MessageEvent.origin documentation> 
-getOrigin ::
-          (MonadDOM m, FromJSString result) => MessageEvent -> m result
-getOrigin self
-  = liftDOM ((self ^. js "origin") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MessageEvent/data MDN MessageEvent.data documentation>
+getData :: (MonadDOM m) => MessageEvent -> m JSVal
+getData self = liftDOM (self ^. js "data")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.lastEventId Mozilla MessageEvent.lastEventId documentation> 
-getLastEventId ::
-               (MonadDOM m, FromJSString result) => MessageEvent -> m result
-getLastEventId self
-  = liftDOM ((self ^. js "lastEventId") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MessageEvent/origin MDN MessageEvent.origin documentation>
+getOrigin :: (MonadDOM m, FromJSString result) => MessageEvent -> m result
+getOrigin self = liftDOM (((self ^. js "origin") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.source Mozilla MessageEvent.source documentation> 
-getSource :: (MonadDOM m) => MessageEvent -> m (Maybe EventTarget)
-getSource self = liftDOM ((self ^. js "source") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/MessageEvent/lastEventId MDN MessageEvent.lastEventId documentation>
+getLastEventId :: (MonadDOM m, FromJSString result) => MessageEvent -> m result
+getLastEventId self = liftDOM (((self ^. js "lastEventId") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.source Mozilla MessageEvent.source documentation> 
-getSourceUnsafe ::
-                (MonadDOM m, HasCallStack) => MessageEvent -> m EventTarget
-getSourceUnsafe self
-  = liftDOM
-      (((self ^. js "source") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/MessageEvent/source MDN MessageEvent.source documentation>
+getSource :: (MonadDOM m) => MessageEvent -> m (Maybe MessageEventSource)
+getSource self = liftDOM (((self ^. js "source") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.source Mozilla MessageEvent.source documentation> 
-getSourceUnchecked :: (MonadDOM m) => MessageEvent -> m EventTarget
-getSourceUnchecked self
-  = liftDOM ((self ^. js "source") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MessageEvent/source MDN MessageEvent.source documentation>
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => MessageEvent -> m MessageEventSource
+getSourceUnsafe self = liftDOM ((((self ^. js "source") >>= 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 :: (MonadDOM m) => MessageEvent -> m JSVal
-getData self = liftDOM ((self ^. js "data") >>= toJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/MessageEvent/source MDN MessageEvent.source documentation>
+getSourceUnchecked :: (MonadDOM m) => MessageEvent -> m MessageEventSource
+getSourceUnchecked self = liftDOM (((self ^. js "source") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.ports Mozilla MessageEvent.ports documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MessageEvent/ports MDN MessageEvent.ports documentation>
 getPorts :: (MonadDOM m) => MessageEvent -> m [MessagePort]
-getPorts self
-  = liftDOM ((self ^. js "ports") >>= fromJSArrayUnchecked)
+getPorts self = liftDOM (((self ^. js "ports") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MessageEventInit.hs b/src/JSDOM/Generated/MessageEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MessageEventInit.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.MessageEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/comms.html#messageeventinit MessageEventInit specification>
+newMessageEventInit :: (MonadDOM m) => m MessageEventInit
+newMessageEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "data" (toJSVal val)))
+
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-data MessageEventInit.data specification>
+getData :: (MonadDOM m) => MessageEventInit -> m JSVal
+getData self = liftDOM (self ^. js "data")
+
+-- | <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 (self ^. jss "origin" (toJSVal val)))
+
+-- | <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 (((self ^. js "origin") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "origin") >>= fromMaybeJSString) >>= 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 (((self ^. js "origin") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "lastEventId" (toJSVal val)))
+
+-- | <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 (((self ^. js "lastEventId") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "lastEventId") >>= fromMaybeJSString) >>= 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 (((self ^. js "lastEventId") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "source" (toJSVal val)))
+
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-source MessageEventInit.source specification>
+getSource :: (MonadDOM m) => MessageEventInit -> m (Maybe MessageEventSource)
+getSource self = liftDOM (((self ^. js "source") >>= 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 ((((self ^. js "source") >>= 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 (((self ^. js "source") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "ports" (toJSVal val)))
+
+-- | <https://html.spec.whatwg.org/multipage/comms.html#dom-messageeventinit-ports MessageEventInit.ports specification>
+getPorts :: (MonadDOM m) => MessageEventInit -> m (Maybe [MessagePort])
+getPorts self = liftDOM (((self ^. js "ports") >>= 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 ((((self ^. js "ports") >>= 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 (((self ^. js "ports") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MessageEventTarget.hs b/src/JSDOM/Generated/MessageEventTarget.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MessageEventTarget.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.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/JSDOM/Generated/MessagePort.hs b/src/JSDOM/Generated/MessagePort.hs
--- a/src/JSDOM/Generated/MessagePort.hs
+++ b/src/JSDOM/Generated/MessagePort.hs
@@ -1,43 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.MessagePort
-       (postMessage, start, close, message, MessagePort(..),
-        gTypeMessagePort)
+       (close, postMessage, postMessageOptions, start, closeEvent, MessagePort(..), gTypeMessagePort)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.postMessage Mozilla MessagePort.postMessage documentation> 
-postMessage ::
-            (MonadDOM m, ToJSVal message, IsGObject transfer) =>
-              MessagePort -> message -> [transfer] -> m ()
-postMessage self message transfer
-  = liftDOM
-      (void
-         (self ^. jsf "postMessage"
-            [toJSVal message, toJSVal (array transfer)]))
+-- | <https://developer.mozilla.org/docs/Web/API/MessagePort/close MDN MessagePort.close documentation>
+close :: (MonadDOM m) => MessagePort -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.start Mozilla MessagePort.start documentation> 
+-- | <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 (self ^. jsf "postMessage" [toJSVal message, toJSVal transfer]))
+
+-- | <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 (self ^. jsf "postMessage" [toJSVal message, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MessagePort/start MDN MessagePort.start documentation>
 start :: (MonadDOM m) => MessagePort -> m ()
 start self = liftDOM (void (self ^. jsf "start" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.close Mozilla MessagePort.close documentation> 
-close :: (MonadDOM m) => MessagePort -> m ()
-close self = liftDOM (void (self ^. jsf "close" ()))
-
--- | <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/JSDOM/Generated/MimeType.hs b/src/JSDOM/Generated/MimeType.hs
--- a/src/JSDOM/Generated/MimeType.hs
+++ b/src/JSDOM/Generated/MimeType.hs
@@ -1,43 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.MimeType
-       (getType, getSuffixes, getDescription, getEnabledPlugin,
-        MimeType(..), gTypeMimeType)
+       (getType, getDescription, getSuffixes, getEnabledPlugin, MimeType(..), gTypeMimeType)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.type Mozilla MimeType.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => MimeType -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.suffixes Mozilla MimeType.suffixes documentation> 
-getSuffixes ::
-            (MonadDOM m, FromJSString result) => MimeType -> m result
-getSuffixes self
-  = liftDOM ((self ^. js "suffixes") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "description") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.description Mozilla MimeType.description documentation> 
-getDescription ::
-               (MonadDOM m, FromJSString result) => MimeType -> m result
-getDescription self
-  = liftDOM ((self ^. js "description") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "suffixes") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.enabledPlugin Mozilla MimeType.enabledPlugin documentation> 
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-mimetype-enabledplugin MimeType.enabledPlugin specification>
 getEnabledPlugin :: (MonadDOM m) => MimeType -> m Plugin
-getEnabledPlugin self
-  = liftDOM ((self ^. js "enabledPlugin") >>= fromJSValUnchecked)
+getEnabledPlugin self = liftDOM (((self ^. js "enabledPlugin") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MimeTypeArray.hs b/src/JSDOM/Generated/MimeTypeArray.hs
--- a/src/JSDOM/Generated/MimeTypeArray.hs
+++ b/src/JSDOM/Generated/MimeTypeArray.hs
@@ -1,79 +1,44 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.MimeTypeArray
-       (item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_,
-        namedItemUnsafe, namedItemUnchecked, getLength, MimeTypeArray(..),
-        gTypeMimeTypeArray)
+       (item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked, getLength, MimeTypeArray(..), gTypeMimeTypeArray)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.item Mozilla MimeTypeArray.item documentation> 
 item :: (MonadDOM m) => MimeTypeArray -> Word -> m (Maybe MimeType)
-item self index
-  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+item self index = liftDOM (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.item Mozilla MimeTypeArray.item documentation> 
 item_ :: (MonadDOM m) => MimeTypeArray -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+item_ self index = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.item Mozilla MimeTypeArray.item documentation> 
-itemUnsafe ::
-           (MonadDOM m, HasCallStack) => MimeTypeArray -> Word -> m MimeType
-itemUnsafe self index
-  = liftDOM
-      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+itemUnsafe :: (MonadDOM m, HasCallStack) => MimeTypeArray -> Word -> m MimeType
+itemUnsafe self index = liftDOM ((((self ^. jsf "item" [toJSVal 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 ::
-              (MonadDOM m) => MimeTypeArray -> Word -> m MimeType
-itemUnchecked self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+itemUnchecked :: (MonadDOM m) => MimeTypeArray -> Word -> m MimeType
+itemUnchecked self index = liftDOM (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.namedItem Mozilla MimeTypeArray.namedItem documentation> 
-namedItem ::
-          (MonadDOM m, ToJSString name) =>
-            MimeTypeArray -> name -> m (Maybe MimeType)
-namedItem self name = liftDOM ((self ! name) >>= fromJSVal)
+namedItem :: (MonadDOM m, ToJSString name) => MimeTypeArray -> name -> m (Maybe MimeType)
+namedItem self name = liftDOM (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.namedItem Mozilla MimeTypeArray.namedItem documentation> 
-namedItem_ ::
-           (MonadDOM m, ToJSString name) => MimeTypeArray -> name -> m ()
-namedItem_ self name = liftDOM (void (self ! name))
+namedItem_ :: (MonadDOM m, ToJSString name) => MimeTypeArray -> name -> m ()
+namedItem_ self name = liftDOM (void (self ^. jsf "namedItem" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.namedItem Mozilla MimeTypeArray.namedItem documentation> 
-namedItemUnsafe ::
-                (MonadDOM m, ToJSString name, HasCallStack) =>
-                  MimeTypeArray -> name -> m MimeType
-namedItemUnsafe self name
-  = liftDOM
-      (((self ! name) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+namedItemUnsafe :: (MonadDOM m, ToJSString name, HasCallStack) => MimeTypeArray -> name -> m MimeType
+namedItemUnsafe self name = liftDOM ((((self ^. jsf "namedItem" [toJSVal 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 ::
-                   (MonadDOM m, ToJSString name) =>
-                     MimeTypeArray -> name -> m MimeType
-namedItemUnchecked self name
-  = liftDOM ((self ! name) >>= fromJSValUnchecked)
+namedItemUnchecked :: (MonadDOM m, ToJSString name) => MimeTypeArray -> name -> m MimeType
+namedItemUnchecked self name = liftDOM (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.length Mozilla MimeTypeArray.length documentation> 
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-mimetypearray-length MimeTypeArray.length specification>
 getLength :: (MonadDOM m) => MimeTypeArray -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/MouseEvent.hs b/src/JSDOM/Generated/MouseEvent.hs
--- a/src/JSDOM/Generated/MouseEvent.hs
+++ b/src/JSDOM/Generated/MouseEvent.hs
@@ -1,252 +1,124 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from pointerevents4 (webref). Do not edit.
 module JSDOM.Generated.MouseEvent
-       (newMouseEvent, initMouseEvent, pattern WEBKIT_FORCE_AT_MOUSE_DOWN,
-        pattern WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN, getScreenX, getScreenY,
-        getClientX, getClientY, getCtrlKey, getShiftKey, getAltKey,
-        getMetaKey, getButton, getRelatedTarget, getRelatedTargetUnsafe,
-        getRelatedTargetUnchecked, getMovementX, getMovementY,
-        getWebkitForce, getOffsetX, getOffsetY, getX, getY, getFromElement,
-        getFromElementUnsafe, getFromElementUnchecked, getToElement,
-        getToElementUnsafe, getToElementUnchecked, getDataTransfer,
-        getDataTransferUnsafe, getDataTransferUnchecked, MouseEvent(..),
-        gTypeMouseEvent, IsMouseEvent, toMouseEvent)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.Enums
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent Mozilla MouseEvent documentation> 
-newMouseEvent ::
-              (MonadDOM m, ToJSString type', IsMouseEventInit eventInitDict) =>
-                type' -> Maybe eventInitDict -> m MouseEvent
-newMouseEvent type' eventInitDict
-  = liftDOM
-      (MouseEvent <$>
-         new (jsg "MouseEvent") [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "MouseEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.initMouseEvent Mozilla MouseEvent.initMouseEvent documentation> 
-initMouseEvent ::
-               (MonadDOM 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
-  = liftDOM
-      (void
-         ((toMouseEvent self) ^. jsf "initMouseEvent"
-            [toJSVal type', toJSVal canBubble, toJSVal cancelable,
-             toJSVal view, toJSVal detail, toJSVal screenX, toJSVal screenY,
-             toJSVal clientX, toJSVal clientY, toJSVal ctrlKey, toJSVal altKey,
-             toJSVal shiftKey, toJSVal metaKey, toJSVal button,
-             toJSVal relatedTarget]))
-pattern WEBKIT_FORCE_AT_MOUSE_DOWN = 1
-pattern WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN = 2
+-- | <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 ((((Types.toMouseEvent self) ^. jsf "getModifierState" [toJSVal keyArg]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.screenX Mozilla MouseEvent.screenX documentation> 
+-- | <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 ((Types.toMouseEvent self) ^. jsf "getModifierState" [toJSVal keyArg]))
+
+-- | <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 ((Types.toMouseEvent self) ^. jsf "initMouseEvent" [toJSVal typeArg, P.maybe (P.return jsUndefined) toJSVal bubblesArg, P.maybe (P.return jsUndefined) toJSVal cancelableArg, toJSVal viewArg, P.maybe (P.return jsUndefined) toJSVal detailArg, P.maybe (P.return jsUndefined) toJSVal screenXArg, P.maybe (P.return jsUndefined) toJSVal screenYArg, P.maybe (P.return jsUndefined) toJSVal clientXArg, P.maybe (P.return jsUndefined) toJSVal clientYArg, P.maybe (P.return jsUndefined) toJSVal ctrlKeyArg, P.maybe (P.return jsUndefined) toJSVal altKeyArg, P.maybe (P.return jsUndefined) toJSVal shiftKeyArg, P.maybe (P.return jsUndefined) toJSVal metaKeyArg, P.maybe (P.return jsUndefined) toJSVal buttonArg, toJSVal relatedTargetArg]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/screenX MDN MouseEvent.screenX documentation>
 getScreenX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
-getScreenX self
-  = liftDOM
-      (round <$> (((toMouseEvent self) ^. js "screenX") >>= valToNumber))
+getScreenX self = liftDOM ((P.round <$> (((Types.toMouseEvent self) ^. js "screenX") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.screenY Mozilla MouseEvent.screenY documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/screenY MDN MouseEvent.screenY documentation>
 getScreenY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
-getScreenY self
-  = liftDOM
-      (round <$> (((toMouseEvent self) ^. js "screenY") >>= valToNumber))
+getScreenY self = liftDOM ((P.round <$> (((Types.toMouseEvent self) ^. js "screenY") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.clientX Mozilla MouseEvent.clientX documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/clientX MDN MouseEvent.clientX documentation>
 getClientX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
-getClientX self
-  = liftDOM
-      (round <$> (((toMouseEvent self) ^. js "clientX") >>= valToNumber))
+getClientX self = liftDOM ((P.round <$> (((Types.toMouseEvent self) ^. js "clientX") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.clientY Mozilla MouseEvent.clientY documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/clientY MDN MouseEvent.clientY documentation>
 getClientY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
-getClientY self
-  = liftDOM
-      (round <$> (((toMouseEvent self) ^. js "clientY") >>= valToNumber))
+getClientY self = liftDOM ((P.round <$> (((Types.toMouseEvent self) ^. js "clientY") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.ctrlKey Mozilla MouseEvent.ctrlKey documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/layerX MDN MouseEvent.layerX documentation>
+getLayerX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getLayerX self = liftDOM ((P.round <$> (((Types.toMouseEvent self) ^. js "layerX") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/layerY MDN MouseEvent.layerY documentation>
+getLayerY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getLayerY self = liftDOM ((P.round <$> (((Types.toMouseEvent self) ^. js "layerY") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/ctrlKey MDN MouseEvent.ctrlKey documentation>
 getCtrlKey :: (MonadDOM m, IsMouseEvent self) => self -> m Bool
-getCtrlKey self
-  = liftDOM (((toMouseEvent self) ^. js "ctrlKey") >>= valToBool)
+getCtrlKey self = liftDOM ((((Types.toMouseEvent self) ^. js "ctrlKey") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.shiftKey Mozilla MouseEvent.shiftKey documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/shiftKey MDN MouseEvent.shiftKey documentation>
 getShiftKey :: (MonadDOM m, IsMouseEvent self) => self -> m Bool
-getShiftKey self
-  = liftDOM (((toMouseEvent self) ^. js "shiftKey") >>= valToBool)
+getShiftKey self = liftDOM ((((Types.toMouseEvent self) ^. js "shiftKey") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.altKey Mozilla MouseEvent.altKey documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/altKey MDN MouseEvent.altKey documentation>
 getAltKey :: (MonadDOM m, IsMouseEvent self) => self -> m Bool
-getAltKey self
-  = liftDOM (((toMouseEvent self) ^. js "altKey") >>= valToBool)
+getAltKey self = liftDOM ((((Types.toMouseEvent self) ^. js "altKey") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.metaKey Mozilla MouseEvent.metaKey documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/metaKey MDN MouseEvent.metaKey documentation>
 getMetaKey :: (MonadDOM m, IsMouseEvent self) => self -> m Bool
-getMetaKey self
-  = liftDOM (((toMouseEvent self) ^. js "metaKey") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.button Mozilla MouseEvent.button documentation> 
-getButton :: (MonadDOM m, IsMouseEvent self) => self -> m Word
-getButton self
-  = liftDOM
-      (round <$> (((toMouseEvent self) ^. js "button") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.relatedTarget Mozilla MouseEvent.relatedTarget documentation> 
-getRelatedTarget ::
-                 (MonadDOM m, IsMouseEvent self) => self -> m (Maybe EventTarget)
-getRelatedTarget self
-  = liftDOM
-      (((toMouseEvent self) ^. js "relatedTarget") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.relatedTarget Mozilla MouseEvent.relatedTarget documentation> 
-getRelatedTargetUnsafe ::
-                       (MonadDOM m, IsMouseEvent self, HasCallStack) =>
-                         self -> m EventTarget
-getRelatedTargetUnsafe self
-  = liftDOM
-      ((((toMouseEvent self) ^. js "relatedTarget") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.relatedTarget Mozilla MouseEvent.relatedTarget documentation> 
-getRelatedTargetUnchecked ::
-                          (MonadDOM m, IsMouseEvent self) => self -> m EventTarget
-getRelatedTargetUnchecked self
-  = liftDOM
-      (((toMouseEvent self) ^. js "relatedTarget") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.movementX Mozilla MouseEvent.movementX documentation> 
-getMovementX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
-getMovementX self
-  = liftDOM
-      (round <$>
-         (((toMouseEvent self) ^. js "movementX") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.movementY Mozilla MouseEvent.movementY documentation> 
-getMovementY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
-getMovementY self
-  = liftDOM
-      (round <$>
-         (((toMouseEvent self) ^. js "movementY") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.webkitForce Mozilla MouseEvent.webkitForce documentation> 
-getWebkitForce ::
-               (MonadDOM m, IsMouseEvent self) => self -> m Double
-getWebkitForce self
-  = liftDOM
-      (((toMouseEvent self) ^. js "webkitForce") >>= valToNumber)
+getMetaKey self = liftDOM ((((Types.toMouseEvent self) ^. js "metaKey") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.offsetX Mozilla MouseEvent.offsetX documentation> 
-getOffsetX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
-getOffsetX self
-  = liftDOM
-      (round <$> (((toMouseEvent self) ^. js "offsetX") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/button MDN MouseEvent.button documentation>
+getButton :: (MonadDOM m, IsMouseEvent self) => self -> m Int
+getButton self = liftDOM ((P.round <$> (((Types.toMouseEvent self) ^. js "button") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.offsetY Mozilla MouseEvent.offsetY documentation> 
-getOffsetY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
-getOffsetY self
-  = liftDOM
-      (round <$> (((toMouseEvent self) ^. js "offsetY") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/buttons MDN MouseEvent.buttons documentation>
+getButtons :: (MonadDOM m, IsMouseEvent self) => self -> m Word
+getButtons self = liftDOM ((P.round <$> (((Types.toMouseEvent self) ^. js "buttons") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.x Mozilla MouseEvent.x documentation> 
-getX :: (MonadDOM m, IsMouseEvent self) => self -> m Int
-getX self
-  = liftDOM
-      (round <$> (((toMouseEvent self) ^. js "x") >>= valToNumber))
+-- | <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 ((((Types.toMouseEvent self) ^. js "relatedTarget") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.y Mozilla MouseEvent.y documentation> 
-getY :: (MonadDOM m, IsMouseEvent self) => self -> m Int
-getY self
-  = liftDOM
-      (round <$> (((toMouseEvent self) ^. js "y") >>= valToNumber))
+-- | <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 (((((Types.toMouseEvent self) ^. js "relatedTarget") >>= 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 ::
-               (MonadDOM m, IsMouseEvent self) => self -> m (Maybe Node)
-getFromElement self
-  = liftDOM (((toMouseEvent self) ^. js "fromElement") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/relatedTarget MDN MouseEvent.relatedTarget documentation>
+getRelatedTargetUnchecked :: (MonadDOM m, IsMouseEvent self) => self -> m EventTarget
+getRelatedTargetUnchecked self = liftDOM ((((Types.toMouseEvent self) ^. js "relatedTarget") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.fromElement Mozilla MouseEvent.fromElement documentation> 
-getFromElementUnsafe ::
-                     (MonadDOM m, IsMouseEvent self, HasCallStack) => self -> m Node
-getFromElementUnsafe self
-  = liftDOM
-      ((((toMouseEvent self) ^. js "fromElement") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/pageX MDN MouseEvent.pageX documentation>
+getPageX :: (MonadDOM m, IsMouseEvent self) => self -> m Double
+getPageX self = liftDOM ((((Types.toMouseEvent self) ^. js "pageX") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.fromElement Mozilla MouseEvent.fromElement documentation> 
-getFromElementUnchecked ::
-                        (MonadDOM m, IsMouseEvent self) => self -> m Node
-getFromElementUnchecked self
-  = liftDOM
-      (((toMouseEvent self) ^. js "fromElement") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/pageY MDN MouseEvent.pageY documentation>
+getPageY :: (MonadDOM m, IsMouseEvent self) => self -> m Double
+getPageY self = liftDOM ((((Types.toMouseEvent self) ^. js "pageY") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.toElement Mozilla MouseEvent.toElement documentation> 
-getToElement ::
-             (MonadDOM m, IsMouseEvent self) => self -> m (Maybe Node)
-getToElement self
-  = liftDOM (((toMouseEvent self) ^. js "toElement") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/x MDN MouseEvent.x documentation>
+getX :: (MonadDOM m, IsMouseEvent self) => self -> m Double
+getX self = liftDOM ((((Types.toMouseEvent self) ^. js "x") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.toElement Mozilla MouseEvent.toElement documentation> 
-getToElementUnsafe ::
-                   (MonadDOM m, IsMouseEvent self, HasCallStack) => self -> m Node
-getToElementUnsafe self
-  = liftDOM
-      ((((toMouseEvent self) ^. js "toElement") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/y MDN MouseEvent.y documentation>
+getY :: (MonadDOM m, IsMouseEvent self) => self -> m Double
+getY self = liftDOM ((((Types.toMouseEvent self) ^. js "y") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.toElement Mozilla MouseEvent.toElement documentation> 
-getToElementUnchecked ::
-                      (MonadDOM m, IsMouseEvent self) => self -> m Node
-getToElementUnchecked self
-  = liftDOM
-      (((toMouseEvent self) ^. js "toElement") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/offsetX MDN MouseEvent.offsetX documentation>
+getOffsetX :: (MonadDOM m, IsMouseEvent self) => self -> m Double
+getOffsetX self = liftDOM ((((Types.toMouseEvent self) ^. js "offsetX") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.dataTransfer Mozilla MouseEvent.dataTransfer documentation> 
-getDataTransfer ::
-                (MonadDOM m, IsMouseEvent self) => self -> m (Maybe DataTransfer)
-getDataTransfer self
-  = liftDOM
-      (((toMouseEvent self) ^. js "dataTransfer") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/offsetY MDN MouseEvent.offsetY documentation>
+getOffsetY :: (MonadDOM m, IsMouseEvent self) => self -> m Double
+getOffsetY self = liftDOM ((((Types.toMouseEvent self) ^. js "offsetY") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.dataTransfer Mozilla MouseEvent.dataTransfer documentation> 
-getDataTransferUnsafe ::
-                      (MonadDOM m, IsMouseEvent self, HasCallStack) =>
-                        self -> m DataTransfer
-getDataTransferUnsafe self
-  = liftDOM
-      ((((toMouseEvent self) ^. js "dataTransfer") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/movementX MDN MouseEvent.movementX documentation>
+getMovementX :: (MonadDOM m, IsMouseEvent self) => self -> m Double
+getMovementX self = liftDOM ((((Types.toMouseEvent self) ^. js "movementX") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.dataTransfer Mozilla MouseEvent.dataTransfer documentation> 
-getDataTransferUnchecked ::
-                         (MonadDOM m, IsMouseEvent self) => self -> m DataTransfer
-getDataTransferUnchecked self
-  = liftDOM
-      (((toMouseEvent self) ^. js "dataTransfer") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MouseEvent/movementY MDN MouseEvent.movementY documentation>
+getMovementY :: (MonadDOM m, IsMouseEvent self) => self -> m Double
+getMovementY self = liftDOM ((((Types.toMouseEvent self) ^. js "movementY") >>= valToNumber))
diff --git a/src/JSDOM/Generated/MouseEventInit.hs b/src/JSDOM/Generated/MouseEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MouseEventInit.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from pointerevents4 (webref). Do not edit.
+module JSDOM.Generated.MouseEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit MouseEventInit specification>
+newMouseEventInit :: (MonadDOM m) => m MouseEventInit
+newMouseEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-screenx MouseEventInit.screenX specification>
+setScreenX :: (MonadDOM m, IsMouseEventInit self) => self -> Int -> m ()
+setScreenX self val = liftDOM (void ((Types.toMouseEventInit self) ^. jss "screenX" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-screenx MouseEventInit.screenX specification>
+getScreenX :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe Int)
+getScreenX self = liftDOM ((((Types.toMouseEventInit self) ^. js "screenX") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-screenx MouseEventInit.screenX specification>
+getScreenXUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m Int
+getScreenXUnsafe self = liftDOM (((((Types.toMouseEventInit self) ^. js "screenX") >>= 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 ((P.round <$> (((Types.toMouseEventInit self) ^. js "screenX") >>= valToNumber)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-screeny MouseEventInit.screenY specification>
+setScreenY :: (MonadDOM m, IsMouseEventInit self) => self -> Int -> m ()
+setScreenY self val = liftDOM (void ((Types.toMouseEventInit self) ^. jss "screenY" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-screeny MouseEventInit.screenY specification>
+getScreenY :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe Int)
+getScreenY self = liftDOM ((((Types.toMouseEventInit self) ^. js "screenY") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-screeny MouseEventInit.screenY specification>
+getScreenYUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m Int
+getScreenYUnsafe self = liftDOM (((((Types.toMouseEventInit self) ^. js "screenY") >>= 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 ((P.round <$> (((Types.toMouseEventInit self) ^. js "screenY") >>= valToNumber)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-clientx MouseEventInit.clientX specification>
+setClientX :: (MonadDOM m, IsMouseEventInit self) => self -> Int -> m ()
+setClientX self val = liftDOM (void ((Types.toMouseEventInit self) ^. jss "clientX" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-clientx MouseEventInit.clientX specification>
+getClientX :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe Int)
+getClientX self = liftDOM ((((Types.toMouseEventInit self) ^. js "clientX") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-clientx MouseEventInit.clientX specification>
+getClientXUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m Int
+getClientXUnsafe self = liftDOM (((((Types.toMouseEventInit self) ^. js "clientX") >>= 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 ((P.round <$> (((Types.toMouseEventInit self) ^. js "clientX") >>= valToNumber)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-clienty MouseEventInit.clientY specification>
+setClientY :: (MonadDOM m, IsMouseEventInit self) => self -> Int -> m ()
+setClientY self val = liftDOM (void ((Types.toMouseEventInit self) ^. jss "clientY" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-clienty MouseEventInit.clientY specification>
+getClientY :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe Int)
+getClientY self = liftDOM ((((Types.toMouseEventInit self) ^. js "clientY") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-clienty MouseEventInit.clientY specification>
+getClientYUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m Int
+getClientYUnsafe self = liftDOM (((((Types.toMouseEventInit self) ^. js "clientY") >>= 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 ((P.round <$> (((Types.toMouseEventInit self) ^. js "clientY") >>= valToNumber)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-button MouseEventInit.button specification>
+setButton :: (MonadDOM m, IsMouseEventInit self) => self -> Int -> m ()
+setButton self val = liftDOM (void ((Types.toMouseEventInit self) ^. jss "button" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-button MouseEventInit.button specification>
+getButton :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe Int)
+getButton self = liftDOM ((((Types.toMouseEventInit self) ^. js "button") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-button MouseEventInit.button specification>
+getButtonUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m Int
+getButtonUnsafe self = liftDOM (((((Types.toMouseEventInit self) ^. js "button") >>= 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 ((P.round <$> (((Types.toMouseEventInit self) ^. js "button") >>= valToNumber)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-buttons MouseEventInit.buttons specification>
+setButtons :: (MonadDOM m, IsMouseEventInit self) => self -> Word -> m ()
+setButtons self val = liftDOM (void ((Types.toMouseEventInit self) ^. jss "buttons" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-buttons MouseEventInit.buttons specification>
+getButtons :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe Word)
+getButtons self = liftDOM ((((Types.toMouseEventInit self) ^. js "buttons") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-buttons MouseEventInit.buttons specification>
+getButtonsUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m Word
+getButtonsUnsafe self = liftDOM (((((Types.toMouseEventInit self) ^. js "buttons") >>= 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 ((P.round <$> (((Types.toMouseEventInit self) ^. js "buttons") >>= valToNumber)))
+
+-- | <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 ((Types.toMouseEventInit self) ^. jss "relatedTarget" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-relatedtarget MouseEventInit.relatedTarget specification>
+getRelatedTarget :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe EventTarget)
+getRelatedTarget self = liftDOM ((((Types.toMouseEventInit self) ^. js "relatedTarget") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-mouseeventinit-relatedtarget MouseEventInit.relatedTarget specification>
+getRelatedTargetUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m EventTarget
+getRelatedTargetUnsafe self = liftDOM (((((Types.toMouseEventInit self) ^. js "relatedTarget") >>= 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 ((((Types.toMouseEventInit self) ^. js "relatedTarget") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerlock/#dom-mouseeventinit-movementx MouseEventInit.movementX specification>
+setMovementX :: (MonadDOM m, IsMouseEventInit self) => self -> Double -> m ()
+setMovementX self val = liftDOM (void ((Types.toMouseEventInit self) ^. jss "movementX" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerlock/#dom-mouseeventinit-movementx MouseEventInit.movementX specification>
+getMovementX :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe Double)
+getMovementX self = liftDOM ((((Types.toMouseEventInit self) ^. js "movementX") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerlock/#dom-mouseeventinit-movementx MouseEventInit.movementX specification>
+getMovementXUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m Double
+getMovementXUnsafe self = liftDOM (((((Types.toMouseEventInit self) ^. js "movementX") >>= 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 ((((Types.toMouseEventInit self) ^. js "movementX") >>= valToNumber))
+
+-- | <https://w3c.github.io/pointerlock/#dom-mouseeventinit-movementy MouseEventInit.movementY specification>
+setMovementY :: (MonadDOM m, IsMouseEventInit self) => self -> Double -> m ()
+setMovementY self val = liftDOM (void ((Types.toMouseEventInit self) ^. jss "movementY" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerlock/#dom-mouseeventinit-movementy MouseEventInit.movementY specification>
+getMovementY :: (MonadDOM m, IsMouseEventInit self) => self -> m (Maybe Double)
+getMovementY self = liftDOM ((((Types.toMouseEventInit self) ^. js "movementY") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerlock/#dom-mouseeventinit-movementy MouseEventInit.movementY specification>
+getMovementYUnsafe :: (MonadDOM m, IsMouseEventInit self, HasCallStack) => self -> m Double
+getMovementYUnsafe self = liftDOM (((((Types.toMouseEventInit self) ^. js "movementY") >>= 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 ((((Types.toMouseEventInit self) ^. js "movementY") >>= valToNumber))
diff --git a/src/JSDOM/Generated/MultiCacheQueryOptions.hs b/src/JSDOM/Generated/MultiCacheQueryOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MultiCacheQueryOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.MultiCacheQueryOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-multicachequeryoptions MultiCacheQueryOptions specification>
+newMultiCacheQueryOptions :: (MonadDOM m) => m MultiCacheQueryOptions
+newMultiCacheQueryOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-multicachequeryoptions-cachename MultiCacheQueryOptions.cacheName specification>
+setCacheName :: (MonadDOM m, ToJSString val) => MultiCacheQueryOptions -> val -> m ()
+setCacheName self val = liftDOM (void (self ^. jss "cacheName" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-multicachequeryoptions-cachename MultiCacheQueryOptions.cacheName specification>
+getCacheName :: (MonadDOM m, FromJSString result) => MultiCacheQueryOptions -> m (Maybe result)
+getCacheName self = liftDOM (((self ^. js "cacheName") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-multicachequeryoptions-cachename MultiCacheQueryOptions.cacheName specification>
+getCacheNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MultiCacheQueryOptions -> m result
+getCacheNameUnsafe self = liftDOM ((((self ^. js "cacheName") >>= fromMaybeJSString) >>= 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 (((self ^. js "cacheName") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MutationCallback.hs b/src/JSDOM/Generated/MutationCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MutationCallback.hs
@@ -0,0 +1,33 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newMutationCallback :: (MonadDOM m) => ([MutationRecord] -> MutationObserver -> JSM ()) -> m MutationCallback
+newMutationCallback callback = liftDOM (MutationCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (mutations : observer : _) -> do
+          mutations' <- fromJSValUnchecked mutations
+          observer' <- fromJSValUnchecked observer
+          callback mutations' observer'))
+
+newMutationCallbackSync :: (MonadDOM m) => ([MutationRecord] -> MutationObserver -> JSM ()) -> m MutationCallback
+newMutationCallbackSync callback = liftDOM (MutationCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (mutations : observer : _) -> do
+          mutations' <- fromJSValUnchecked mutations
+          observer' <- fromJSValUnchecked observer
+          callback mutations' observer'))
+
+newMutationCallbackAsync :: (MonadDOM m) => ([MutationRecord] -> MutationObserver -> JSM ()) -> m MutationCallback
+newMutationCallbackAsync callback = liftDOM (MutationCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (mutations : observer : _) -> do
+          mutations' <- fromJSValUnchecked mutations
+          observer' <- fromJSValUnchecked observer
+          callback mutations' observer'))
diff --git a/src/JSDOM/Generated/MutationEvent.hs b/src/JSDOM/Generated/MutationEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/MutationEvent.hs
+++ /dev/null
@@ -1,87 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.MutationEvent
-       (initMutationEvent, pattern MODIFICATION, pattern ADDITION,
-        pattern REMOVAL, getRelatedNode, getRelatedNodeUnsafe,
-        getRelatedNodeUnchecked, getPrevValue, getNewValue, getAttrName,
-        getAttrChange, MutationEvent(..), gTypeMutationEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.initMutationEvent Mozilla MutationEvent.initMutationEvent documentation> 
-initMutationEvent ::
-                  (MonadDOM 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
-  = liftDOM
-      (void
-         (self ^. jsf "initMutationEvent"
-            [toJSVal type', toJSVal canBubble, toJSVal cancelable,
-             toJSVal relatedNode, toJSVal prevValue, toJSVal newValue,
-             toJSVal attrName, toJSVal attrChange]))
-pattern MODIFICATION = 1
-pattern ADDITION = 2
-pattern REMOVAL = 3
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.relatedNode Mozilla MutationEvent.relatedNode documentation> 
-getRelatedNode :: (MonadDOM m) => MutationEvent -> m (Maybe Node)
-getRelatedNode self
-  = liftDOM ((self ^. js "relatedNode") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.relatedNode Mozilla MutationEvent.relatedNode documentation> 
-getRelatedNodeUnsafe ::
-                     (MonadDOM m, HasCallStack) => MutationEvent -> m Node
-getRelatedNodeUnsafe self
-  = liftDOM
-      (((self ^. js "relatedNode") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.relatedNode Mozilla MutationEvent.relatedNode documentation> 
-getRelatedNodeUnchecked :: (MonadDOM m) => MutationEvent -> m Node
-getRelatedNodeUnchecked self
-  = liftDOM ((self ^. js "relatedNode") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.prevValue Mozilla MutationEvent.prevValue documentation> 
-getPrevValue ::
-             (MonadDOM m, FromJSString result) => MutationEvent -> m result
-getPrevValue self
-  = liftDOM ((self ^. js "prevValue") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.newValue Mozilla MutationEvent.newValue documentation> 
-getNewValue ::
-            (MonadDOM m, FromJSString result) => MutationEvent -> m result
-getNewValue self
-  = liftDOM ((self ^. js "newValue") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.attrName Mozilla MutationEvent.attrName documentation> 
-getAttrName ::
-            (MonadDOM m, FromJSString result) => MutationEvent -> m result
-getAttrName self
-  = liftDOM ((self ^. js "attrName") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.attrChange Mozilla MutationEvent.attrChange documentation> 
-getAttrChange :: (MonadDOM m) => MutationEvent -> m Word
-getAttrChange self
-  = liftDOM (round <$> ((self ^. js "attrChange") >>= valToNumber))
diff --git a/src/JSDOM/Generated/MutationObserver.hs b/src/JSDOM/Generated/MutationObserver.hs
--- a/src/JSDOM/Generated/MutationObserver.hs
+++ b/src/JSDOM/Generated/MutationObserver.hs
@@ -1,52 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.MutationObserver
-       (newMutationObserver, observe, disconnect, takeRecords,
-        takeRecords_, MutationObserver(..), gTypeMutationObserver)
+       (newMutationObserver, disconnect, observe, takeRecords, takeRecords_, MutationObserver(..), gTypeMutationObserver)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver Mozilla MutationObserver documentation> 
-newMutationObserver ::
-                    (MonadDOM m, IsMutationCallback callback) =>
-                      callback -> m MutationObserver
-newMutationObserver callback
-  = liftDOM
-      (MutationObserver <$>
-         new (jsg "MutationObserver") [toJSVal callback])
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.observe Mozilla MutationObserver.observe documentation> 
-observe ::
-        (MonadDOM m, IsNode target) =>
-          MutationObserver -> target -> Maybe MutationObserverInit -> m ()
-observe self target options
-  = liftDOM
-      (void (self ^. jsf "observe" [toJSVal target, toJSVal options]))
+-- | <https://developer.mozilla.org/docs/Web/API/MutationObserver/MutationObserver MDN MutationObserver. documentation>
+newMutationObserver :: (MonadDOM m) => MutationCallback -> m MutationObserver
+newMutationObserver callback' = liftDOM (((new (jsg "MutationObserver") [toJSVal callback']) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.disconnect Mozilla MutationObserver.disconnect documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MutationObserver/disconnect MDN MutationObserver.disconnect documentation>
 disconnect :: (MonadDOM m) => MutationObserver -> m ()
 disconnect self = liftDOM (void (self ^. jsf "disconnect" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.takeRecords Mozilla MutationObserver.takeRecords documentation> 
-takeRecords ::
-            (MonadDOM m) => MutationObserver -> m [MutationRecord]
-takeRecords self
-  = liftDOM ((self ^. jsf "takeRecords" ()) >>= fromJSArrayUnchecked)
+-- | <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 (self ^. jsf "observe" [toJSVal target, P.maybe (P.return jsUndefined) toJSVal options]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.takeRecords Mozilla MutationObserver.takeRecords documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MutationObserver/takeRecords MDN MutationObserver.takeRecords documentation>
+takeRecords :: (MonadDOM m) => MutationObserver -> m [MutationRecord]
+takeRecords self = liftDOM (((self ^. jsf "takeRecords" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/MutationObserver/takeRecords MDN MutationObserver.takeRecords documentation>
 takeRecords_ :: (MonadDOM m) => MutationObserver -> m ()
 takeRecords_ self = liftDOM (void (self ^. jsf "takeRecords" ()))
diff --git a/src/JSDOM/Generated/MutationObserverInit.hs b/src/JSDOM/Generated/MutationObserverInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/MutationObserverInit.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.MutationObserverInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://dom.spec.whatwg.org/#dictdef-mutationobserverinit MutationObserverInit specification>
+newMutationObserverInit :: (MonadDOM m) => m MutationObserverInit
+newMutationObserverInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-childlist MutationObserverInit.childList specification>
+setChildList :: (MonadDOM m) => MutationObserverInit -> Bool -> m ()
+setChildList self val = liftDOM (void (self ^. jss "childList" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-childlist MutationObserverInit.childList specification>
+getChildList :: (MonadDOM m) => MutationObserverInit -> m (Maybe Bool)
+getChildList self = liftDOM (((self ^. js "childList") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-childlist MutationObserverInit.childList specification>
+getChildListUnsafe :: (MonadDOM m, HasCallStack) => MutationObserverInit -> m Bool
+getChildListUnsafe self = liftDOM ((((self ^. js "childList") >>= 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 (((self ^. js "childList") >>= valToBool))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributes MutationObserverInit.attributes specification>
+setAttributes :: (MonadDOM m) => MutationObserverInit -> Bool -> m ()
+setAttributes self val = liftDOM (void (self ^. jss "attributes" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributes MutationObserverInit.attributes specification>
+getAttributes :: (MonadDOM m) => MutationObserverInit -> m (Maybe Bool)
+getAttributes self = liftDOM (((self ^. js "attributes") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributes MutationObserverInit.attributes specification>
+getAttributesUnsafe :: (MonadDOM m, HasCallStack) => MutationObserverInit -> m Bool
+getAttributesUnsafe self = liftDOM ((((self ^. js "attributes") >>= 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 (((self ^. js "attributes") >>= valToBool))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-characterdata MutationObserverInit.characterData specification>
+setCharacterData :: (MonadDOM m) => MutationObserverInit -> Bool -> m ()
+setCharacterData self val = liftDOM (void (self ^. jss "characterData" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-characterdata MutationObserverInit.characterData specification>
+getCharacterData :: (MonadDOM m) => MutationObserverInit -> m (Maybe Bool)
+getCharacterData self = liftDOM (((self ^. js "characterData") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-characterdata MutationObserverInit.characterData specification>
+getCharacterDataUnsafe :: (MonadDOM m, HasCallStack) => MutationObserverInit -> m Bool
+getCharacterDataUnsafe self = liftDOM ((((self ^. js "characterData") >>= 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 (((self ^. js "characterData") >>= valToBool))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-subtree MutationObserverInit.subtree specification>
+setSubtree :: (MonadDOM m) => MutationObserverInit -> Bool -> m ()
+setSubtree self val = liftDOM (void (self ^. jss "subtree" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-subtree MutationObserverInit.subtree specification>
+getSubtree :: (MonadDOM m) => MutationObserverInit -> m (Maybe Bool)
+getSubtree self = liftDOM (((self ^. js "subtree") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-subtree MutationObserverInit.subtree specification>
+getSubtreeUnsafe :: (MonadDOM m, HasCallStack) => MutationObserverInit -> m Bool
+getSubtreeUnsafe self = liftDOM ((((self ^. js "subtree") >>= 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 (((self ^. js "subtree") >>= valToBool))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributeoldvalue MutationObserverInit.attributeOldValue specification>
+setAttributeOldValue :: (MonadDOM m) => MutationObserverInit -> Bool -> m ()
+setAttributeOldValue self val = liftDOM (void (self ^. jss "attributeOldValue" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributeoldvalue MutationObserverInit.attributeOldValue specification>
+getAttributeOldValue :: (MonadDOM m) => MutationObserverInit -> m (Maybe Bool)
+getAttributeOldValue self = liftDOM (((self ^. js "attributeOldValue") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributeoldvalue MutationObserverInit.attributeOldValue specification>
+getAttributeOldValueUnsafe :: (MonadDOM m, HasCallStack) => MutationObserverInit -> m Bool
+getAttributeOldValueUnsafe self = liftDOM ((((self ^. js "attributeOldValue") >>= 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 (((self ^. js "attributeOldValue") >>= valToBool))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-characterdataoldvalue MutationObserverInit.characterDataOldValue specification>
+setCharacterDataOldValue :: (MonadDOM m) => MutationObserverInit -> Bool -> m ()
+setCharacterDataOldValue self val = liftDOM (void (self ^. jss "characterDataOldValue" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-characterdataoldvalue MutationObserverInit.characterDataOldValue specification>
+getCharacterDataOldValue :: (MonadDOM m) => MutationObserverInit -> m (Maybe Bool)
+getCharacterDataOldValue self = liftDOM (((self ^. js "characterDataOldValue") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-characterdataoldvalue MutationObserverInit.characterDataOldValue specification>
+getCharacterDataOldValueUnsafe :: (MonadDOM m, HasCallStack) => MutationObserverInit -> m Bool
+getCharacterDataOldValueUnsafe self = liftDOM ((((self ^. js "characterDataOldValue") >>= 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 (((self ^. js "characterDataOldValue") >>= valToBool))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributefilter MutationObserverInit.attributeFilter specification>
+setAttributeFilter :: (MonadDOM m, ToJSString val) => MutationObserverInit -> [val] -> m ()
+setAttributeFilter self val = liftDOM (void (self ^. jss "attributeFilter" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributefilter MutationObserverInit.attributeFilter specification>
+getAttributeFilter :: (MonadDOM m, FromJSString result) => MutationObserverInit -> m (Maybe [result])
+getAttributeFilter self = liftDOM (((self ^. js "attributeFilter") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-mutationobserverinit-attributefilter MutationObserverInit.attributeFilter specification>
+getAttributeFilterUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => MutationObserverInit -> m [result]
+getAttributeFilterUnsafe self = liftDOM ((((self ^. js "attributeFilter") >>= 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 (((self ^. js "attributeFilter") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/MutationRecord.hs b/src/JSDOM/Generated/MutationRecord.hs
--- a/src/JSDOM/Generated/MutationRecord.hs
+++ b/src/JSDOM/Generated/MutationRecord.hs
@@ -1,152 +1,92 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.MutationRecord
-       (getType, getTarget, getAddedNodes, getRemovedNodes,
-        getPreviousSibling, getPreviousSiblingUnsafe,
-        getPreviousSiblingUnchecked, getNextSibling, getNextSiblingUnsafe,
-        getNextSiblingUnchecked, getAttributeName, getAttributeNameUnsafe,
-        getAttributeNameUnchecked, getAttributeNamespace,
-        getAttributeNamespaceUnsafe, getAttributeNamespaceUnchecked,
-        getOldValue, getOldValueUnsafe, getOldValueUnchecked,
-        MutationRecord(..), gTypeMutationRecord)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.type Mozilla MutationRecord.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => MutationRecord -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/type MDN MutationRecord.type documentation>
+getType :: (MonadDOM m, FromJSString result) => MutationRecord -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.target Mozilla MutationRecord.target documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/target MDN MutationRecord.target documentation>
 getTarget :: (MonadDOM m) => MutationRecord -> m Node
-getTarget self
-  = liftDOM ((self ^. js "target") >>= fromJSValUnchecked)
+getTarget self = liftDOM (((self ^. js "target") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.addedNodes Mozilla MutationRecord.addedNodes documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/addedNodes MDN MutationRecord.addedNodes documentation>
 getAddedNodes :: (MonadDOM m) => MutationRecord -> m NodeList
-getAddedNodes self
-  = liftDOM ((self ^. js "addedNodes") >>= fromJSValUnchecked)
+getAddedNodes self = liftDOM (((self ^. js "addedNodes") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.removedNodes Mozilla MutationRecord.removedNodes documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/removedNodes MDN MutationRecord.removedNodes documentation>
 getRemovedNodes :: (MonadDOM m) => MutationRecord -> m NodeList
-getRemovedNodes self
-  = liftDOM ((self ^. js "removedNodes") >>= fromJSValUnchecked)
+getRemovedNodes self = liftDOM (((self ^. js "removedNodes") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.previousSibling Mozilla MutationRecord.previousSibling documentation> 
-getPreviousSibling ::
-                   (MonadDOM m) => MutationRecord -> m (Maybe Node)
-getPreviousSibling self
-  = liftDOM ((self ^. js "previousSibling") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/previousSibling MDN MutationRecord.previousSibling documentation>
+getPreviousSibling :: (MonadDOM m) => MutationRecord -> m (Maybe Node)
+getPreviousSibling self = liftDOM (((self ^. js "previousSibling") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.previousSibling Mozilla MutationRecord.previousSibling documentation> 
-getPreviousSiblingUnsafe ::
-                         (MonadDOM m, HasCallStack) => MutationRecord -> m Node
-getPreviousSiblingUnsafe self
-  = liftDOM
-      (((self ^. js "previousSibling") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/previousSibling MDN MutationRecord.previousSibling documentation>
+getPreviousSiblingUnsafe :: (MonadDOM m, HasCallStack) => MutationRecord -> m Node
+getPreviousSiblingUnsafe self = liftDOM ((((self ^. js "previousSibling") >>= 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> 
-getPreviousSiblingUnchecked ::
-                            (MonadDOM m) => MutationRecord -> m Node
-getPreviousSiblingUnchecked self
-  = liftDOM ((self ^. js "previousSibling") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/previousSibling MDN MutationRecord.previousSibling documentation>
+getPreviousSiblingUnchecked :: (MonadDOM m) => MutationRecord -> m Node
+getPreviousSiblingUnchecked self = liftDOM (((self ^. js "previousSibling") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.nextSibling Mozilla MutationRecord.nextSibling documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/nextSibling MDN MutationRecord.nextSibling documentation>
 getNextSibling :: (MonadDOM m) => MutationRecord -> m (Maybe Node)
-getNextSibling self
-  = liftDOM ((self ^. js "nextSibling") >>= fromJSVal)
+getNextSibling self = liftDOM (((self ^. js "nextSibling") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.nextSibling Mozilla MutationRecord.nextSibling documentation> 
-getNextSiblingUnsafe ::
-                     (MonadDOM m, HasCallStack) => MutationRecord -> m Node
-getNextSiblingUnsafe self
-  = liftDOM
-      (((self ^. js "nextSibling") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/nextSibling MDN MutationRecord.nextSibling documentation>
+getNextSiblingUnsafe :: (MonadDOM m, HasCallStack) => MutationRecord -> m Node
+getNextSiblingUnsafe self = liftDOM ((((self ^. js "nextSibling") >>= 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> 
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/nextSibling MDN MutationRecord.nextSibling documentation>
 getNextSiblingUnchecked :: (MonadDOM m) => MutationRecord -> m Node
-getNextSiblingUnchecked self
-  = liftDOM ((self ^. js "nextSibling") >>= fromJSValUnchecked)
+getNextSiblingUnchecked self = liftDOM (((self ^. js "nextSibling") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeName Mozilla MutationRecord.attributeName documentation> 
-getAttributeName ::
-                 (MonadDOM m, FromJSString result) =>
-                   MutationRecord -> m (Maybe result)
-getAttributeName self
-  = liftDOM ((self ^. js "attributeName") >>= fromMaybeJSString)
+-- | <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 (((self ^. js "attributeName") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeName Mozilla MutationRecord.attributeName documentation> 
-getAttributeNameUnsafe ::
-                       (MonadDOM m, HasCallStack, FromJSString result) =>
-                         MutationRecord -> m result
-getAttributeNameUnsafe self
-  = liftDOM
-      (((self ^. js "attributeName") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 ((((self ^. js "attributeName") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeName Mozilla MutationRecord.attributeName documentation> 
-getAttributeNameUnchecked ::
-                          (MonadDOM m, FromJSString result) => MutationRecord -> m result
-getAttributeNameUnchecked self
-  = liftDOM ((self ^. js "attributeName") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/attributeName MDN MutationRecord.attributeName documentation>
+getAttributeNameUnchecked :: (MonadDOM m, FromJSString result) => MutationRecord -> m result
+getAttributeNameUnchecked self = liftDOM (((self ^. js "attributeName") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeNamespace Mozilla MutationRecord.attributeNamespace documentation> 
-getAttributeNamespace ::
-                      (MonadDOM m, FromJSString result) =>
-                        MutationRecord -> m (Maybe result)
-getAttributeNamespace self
-  = liftDOM ((self ^. js "attributeNamespace") >>= fromMaybeJSString)
+-- | <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 (((self ^. js "attributeNamespace") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeNamespace Mozilla MutationRecord.attributeNamespace documentation> 
-getAttributeNamespaceUnsafe ::
-                            (MonadDOM m, HasCallStack, FromJSString result) =>
-                              MutationRecord -> m result
-getAttributeNamespaceUnsafe self
-  = liftDOM
-      (((self ^. js "attributeNamespace") >>= fromMaybeJSString) >>=
-         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 ((((self ^. js "attributeNamespace") >>= fromMaybeJSString) >>= 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 ::
-                               (MonadDOM m, FromJSString result) => MutationRecord -> m result
-getAttributeNamespaceUnchecked self
-  = liftDOM
-      ((self ^. js "attributeNamespace") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/attributeNamespace MDN MutationRecord.attributeNamespace documentation>
+getAttributeNamespaceUnchecked :: (MonadDOM m, FromJSString result) => MutationRecord -> m result
+getAttributeNamespaceUnchecked self = liftDOM (((self ^. js "attributeNamespace") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.oldValue Mozilla MutationRecord.oldValue documentation> 
-getOldValue ::
-            (MonadDOM m, FromJSString result) =>
-              MutationRecord -> m (Maybe result)
-getOldValue self
-  = liftDOM ((self ^. js "oldValue") >>= fromMaybeJSString)
+-- | <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 (((self ^. js "oldValue") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.oldValue Mozilla MutationRecord.oldValue documentation> 
-getOldValueUnsafe ::
-                  (MonadDOM m, HasCallStack, FromJSString result) =>
-                    MutationRecord -> m result
-getOldValueUnsafe self
-  = liftDOM
-      (((self ^. js "oldValue") >>= fromMaybeJSString) >>=
-         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 ((((self ^. js "oldValue") >>= fromMaybeJSString) >>= 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 ::
-                     (MonadDOM m, FromJSString result) => MutationRecord -> m result
-getOldValueUnchecked self
-  = liftDOM ((self ^. js "oldValue") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/MutationRecord/oldValue MDN MutationRecord.oldValue documentation>
+getOldValueUnchecked :: (MonadDOM m, FromJSString result) => MutationRecord -> m result
+getOldValueUnchecked self = liftDOM (((self ^. js "oldValue") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NamedNodeMap.hs b/src/JSDOM/Generated/NamedNodeMap.hs
--- a/src/JSDOM/Generated/NamedNodeMap.hs
+++ b/src/JSDOM/Generated/NamedNodeMap.hs
@@ -1,221 +1,116 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.NamedNodeMap
-       (item, item_, itemUnsafe, itemUnchecked, getNamedItem,
-        getNamedItem_, getNamedItemUnsafe, getNamedItemUnchecked,
-        getNamedItemNS, getNamedItemNS_, getNamedItemNSUnsafe,
-        getNamedItemNSUnchecked, setNamedItem, setNamedItem_,
-        setNamedItemUnsafe, setNamedItemUnchecked, setNamedItemNS,
-        setNamedItemNS_, setNamedItemNSUnsafe, setNamedItemNSUnchecked,
-        removeNamedItem, removeNamedItem_, removeNamedItemNS,
-        removeNamedItemNS_, getLength, NamedNodeMap(..), gTypeNamedNodeMap)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.item Mozilla NamedNodeMap.item documentation> 
-item :: (MonadDOM m) => NamedNodeMap -> Word -> m (Maybe Attr)
-item self index
-  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+-- | <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 (((self ^. jsf "getNamedItem" [toJSVal qualifiedName]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.item Mozilla NamedNodeMap.item documentation> 
-item_ :: (MonadDOM m) => NamedNodeMap -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal 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 (self ^. jsf "getNamedItem" [toJSVal qualifiedName]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.item Mozilla NamedNodeMap.item documentation> 
-itemUnsafe ::
-           (MonadDOM m, HasCallStack) => NamedNodeMap -> Word -> m Attr
-itemUnsafe self index
-  = liftDOM
-      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
-         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 ((((self ^. jsf "getNamedItem" [toJSVal 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 :: (MonadDOM m) => NamedNodeMap -> Word -> m Attr
-itemUnchecked self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "getNamedItem" [toJSVal qualifiedName]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItem Mozilla NamedNodeMap.getNamedItem documentation> 
-getNamedItem ::
-             (MonadDOM m, ToJSString qualifiedName) =>
-               NamedNodeMap -> qualifiedName -> m (Maybe Attr)
-getNamedItem self qualifiedName
-  = liftDOM ((self ! qualifiedName) >>= fromJSVal)
+-- | <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 (((self ^. jsf "getNamedItemNS" [toJSVal namespace, toJSVal localName]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItem Mozilla NamedNodeMap.getNamedItem documentation> 
-getNamedItem_ ::
-              (MonadDOM m, ToJSString qualifiedName) =>
-                NamedNodeMap -> qualifiedName -> m ()
-getNamedItem_ self qualifiedName
-  = liftDOM (void (self ! 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 (self ^. jsf "getNamedItemNS" [toJSVal namespace, toJSVal localName]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItem Mozilla NamedNodeMap.getNamedItem documentation> 
-getNamedItemUnsafe ::
-                   (MonadDOM m, ToJSString qualifiedName, HasCallStack) =>
-                     NamedNodeMap -> qualifiedName -> m Attr
-getNamedItemUnsafe self qualifiedName
-  = liftDOM
-      (((self ! qualifiedName) >>= fromJSVal) >>=
-         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 ((((self ^. jsf "getNamedItemNS" [toJSVal namespace, toJSVal 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 ::
-                      (MonadDOM m, ToJSString qualifiedName) =>
-                        NamedNodeMap -> qualifiedName -> m Attr
-getNamedItemUnchecked self qualifiedName
-  = liftDOM ((self ! qualifiedName) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "getNamedItemNS" [toJSVal namespace, toJSVal localName]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItemNS Mozilla NamedNodeMap.getNamedItemNS documentation> 
-getNamedItemNS ::
-               (MonadDOM m, ToJSString namespaceURI, ToJSString localName) =>
-                 NamedNodeMap -> Maybe namespaceURI -> localName -> m (Maybe Attr)
-getNamedItemNS self namespaceURI localName
-  = liftDOM
-      ((self ^. jsf "getNamedItemNS"
-          [toJSVal namespaceURI, toJSVal localName])
-         >>= fromJSVal)
+-- | <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 (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItemNS Mozilla NamedNodeMap.getNamedItemNS documentation> 
-getNamedItemNS_ ::
-                (MonadDOM m, ToJSString namespaceURI, ToJSString localName) =>
-                  NamedNodeMap -> Maybe namespaceURI -> localName -> m ()
-getNamedItemNS_ self namespaceURI localName
-  = liftDOM
-      (void
-         (self ^. jsf "getNamedItemNS"
-            [toJSVal namespaceURI, toJSVal 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 (self ^. jsf "item" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItemNS Mozilla NamedNodeMap.getNamedItemNS documentation> 
-getNamedItemNSUnsafe ::
-                     (MonadDOM m, ToJSString namespaceURI, ToJSString localName,
-                      HasCallStack) =>
-                       NamedNodeMap -> Maybe namespaceURI -> localName -> m Attr
-getNamedItemNSUnsafe self namespaceURI localName
-  = liftDOM
-      (((self ^. jsf "getNamedItemNS"
-           [toJSVal namespaceURI, toJSVal localName])
-          >>= fromJSVal)
-         >>= 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 ((((self ^. jsf "item" [toJSVal 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 ::
-                        (MonadDOM m, ToJSString namespaceURI, ToJSString localName) =>
-                          NamedNodeMap -> Maybe namespaceURI -> localName -> m Attr
-getNamedItemNSUnchecked self namespaceURI localName
-  = liftDOM
-      ((self ^. jsf "getNamedItemNS"
-          [toJSVal namespaceURI, toJSVal localName])
-         >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/item MDN NamedNodeMap.item documentation>
+itemUnchecked :: (MonadDOM m) => NamedNodeMap -> Word -> m Attr
+itemUnchecked self index = liftDOM (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItem Mozilla NamedNodeMap.setNamedItem documentation> 
-setNamedItem ::
-             (MonadDOM m) => NamedNodeMap -> Attr -> m (Maybe Attr)
-setNamedItem self attr
-  = liftDOM
-      ((self ^. jsf "setNamedItem" [toJSVal attr]) >>= fromJSVal)
+-- | <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 (((self ^. jsf "removeNamedItem" [toJSVal qualifiedName]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItem Mozilla NamedNodeMap.setNamedItem documentation> 
-setNamedItem_ :: (MonadDOM m) => NamedNodeMap -> Attr -> m ()
-setNamedItem_ self attr
-  = liftDOM (void (self ^. jsf "setNamedItem" [toJSVal 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 (self ^. jsf "removeNamedItem" [toJSVal qualifiedName]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItem Mozilla NamedNodeMap.setNamedItem documentation> 
-setNamedItemUnsafe ::
-                   (MonadDOM m, HasCallStack) => NamedNodeMap -> Attr -> m Attr
-setNamedItemUnsafe self attr
-  = liftDOM
-      (((self ^. jsf "setNamedItem" [toJSVal attr]) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((self ^. jsf "removeNamedItemNS" [toJSVal namespace, toJSVal localName]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItem Mozilla NamedNodeMap.setNamedItem documentation> 
-setNamedItemUnchecked ::
-                      (MonadDOM m) => NamedNodeMap -> Attr -> m Attr
-setNamedItemUnchecked self attr
-  = liftDOM
-      ((self ^. jsf "setNamedItem" [toJSVal attr]) >>=
-         fromJSValUnchecked)
+-- | <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 (self ^. jsf "removeNamedItemNS" [toJSVal namespace, toJSVal localName]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItemNS Mozilla NamedNodeMap.setNamedItemNS documentation> 
-setNamedItemNS ::
-               (MonadDOM m) => NamedNodeMap -> Attr -> m (Maybe Attr)
-setNamedItemNS self attr
-  = liftDOM
-      ((self ^. jsf "setNamedItemNS" [toJSVal attr]) >>= fromJSVal)
+-- | <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 (((self ^. jsf "setNamedItem" [toJSVal attr]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItemNS Mozilla NamedNodeMap.setNamedItemNS documentation> 
-setNamedItemNS_ :: (MonadDOM m) => NamedNodeMap -> Attr -> m ()
-setNamedItemNS_ self attr
-  = liftDOM (void (self ^. jsf "setNamedItemNS" [toJSVal 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 (self ^. jsf "setNamedItem" [toJSVal attr]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItemNS Mozilla NamedNodeMap.setNamedItemNS documentation> 
-setNamedItemNSUnsafe ::
-                     (MonadDOM m, HasCallStack) => NamedNodeMap -> Attr -> m Attr
-setNamedItemNSUnsafe self attr
-  = liftDOM
-      (((self ^. jsf "setNamedItemNS" [toJSVal attr]) >>= fromJSVal) >>=
-         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 ((((self ^. jsf "setNamedItem" [toJSVal 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 ::
-                        (MonadDOM m) => NamedNodeMap -> Attr -> m Attr
-setNamedItemNSUnchecked self attr
-  = liftDOM
-      ((self ^. jsf "setNamedItemNS" [toJSVal attr]) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/setNamedItem MDN NamedNodeMap.setNamedItem documentation>
+setNamedItemUnchecked :: (MonadDOM m) => NamedNodeMap -> Attr -> m Attr
+setNamedItemUnchecked self attr = liftDOM (((self ^. jsf "setNamedItem" [toJSVal attr]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItem Mozilla NamedNodeMap.removeNamedItem documentation> 
-removeNamedItem ::
-                (MonadDOM m, ToJSString qualifiedName) =>
-                  NamedNodeMap -> qualifiedName -> m Attr
-removeNamedItem self qualifiedName
-  = liftDOM
-      ((self ^. jsf "removeNamedItem" [toJSVal qualifiedName]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "setNamedItemNS" [toJSVal attr]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItem Mozilla NamedNodeMap.removeNamedItem documentation> 
-removeNamedItem_ ::
-                 (MonadDOM m, ToJSString qualifiedName) =>
-                   NamedNodeMap -> qualifiedName -> m ()
-removeNamedItem_ self qualifiedName
-  = liftDOM
-      (void (self ^. jsf "removeNamedItem" [toJSVal qualifiedName]))
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/setNamedItemNS MDN NamedNodeMap.setNamedItemNS documentation>
+setNamedItemNS_ :: (MonadDOM m) => NamedNodeMap -> Attr -> m ()
+setNamedItemNS_ self attr = liftDOM (void (self ^. jsf "setNamedItemNS" [toJSVal attr]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItemNS Mozilla NamedNodeMap.removeNamedItemNS documentation> 
-removeNamedItemNS ::
-                  (MonadDOM m, ToJSString namespaceURI, ToJSString localName) =>
-                    NamedNodeMap -> Maybe namespaceURI -> localName -> m Attr
-removeNamedItemNS self namespaceURI localName
-  = liftDOM
-      ((self ^. jsf "removeNamedItemNS"
-          [toJSVal namespaceURI, toJSVal localName])
-         >>= fromJSValUnchecked)
+-- | <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 ((((self ^. jsf "setNamedItemNS" [toJSVal 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_ ::
-                   (MonadDOM m, ToJSString namespaceURI, ToJSString localName) =>
-                     NamedNodeMap -> Maybe namespaceURI -> localName -> m ()
-removeNamedItemNS_ self namespaceURI localName
-  = liftDOM
-      (void
-         (self ^. jsf "removeNamedItemNS"
-            [toJSVal namespaceURI, toJSVal localName]))
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/setNamedItemNS MDN NamedNodeMap.setNamedItemNS documentation>
+setNamedItemNSUnchecked :: (MonadDOM m) => NamedNodeMap -> Attr -> m Attr
+setNamedItemNSUnchecked self attr = liftDOM (((self ^. jsf "setNamedItemNS" [toJSVal attr]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.length Mozilla NamedNodeMap.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/NamedNodeMap/length MDN NamedNodeMap.length documentation>
 getLength :: (MonadDOM m) => NamedNodeMap -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/NavigateEvent.hs b/src/JSDOM/Generated/NavigateEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigateEvent.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigateEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "NavigateEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "intercept" [P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/scroll MDN NavigateEvent.scroll documentation>
+scroll :: (MonadDOM m) => NavigateEvent -> m ()
+scroll self = liftDOM (void (self ^. jsf "scroll" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/navigationType MDN NavigateEvent.navigationType documentation>
+getNavigationType :: (MonadDOM m) => NavigateEvent -> m NavigationType
+getNavigationType self = liftDOM (((self ^. js "navigationType") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/destination MDN NavigateEvent.destination documentation>
+getDestination :: (MonadDOM m) => NavigateEvent -> m NavigationDestination
+getDestination self = liftDOM (((self ^. js "destination") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/canIntercept MDN NavigateEvent.canIntercept documentation>
+getCanIntercept :: (MonadDOM m) => NavigateEvent -> m Bool
+getCanIntercept self = liftDOM (((self ^. js "canIntercept") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/userInitiated MDN NavigateEvent.userInitiated documentation>
+getUserInitiated :: (MonadDOM m) => NavigateEvent -> m Bool
+getUserInitiated self = liftDOM (((self ^. js "userInitiated") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/hashChange MDN NavigateEvent.hashChange documentation>
+getHashChange :: (MonadDOM m) => NavigateEvent -> m Bool
+getHashChange self = liftDOM (((self ^. js "hashChange") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/signal MDN NavigateEvent.signal documentation>
+getSignal :: (MonadDOM m) => NavigateEvent -> m AbortSignal
+getSignal self = liftDOM (((self ^. js "signal") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/formData MDN NavigateEvent.formData documentation>
+getFormData :: (MonadDOM m) => NavigateEvent -> m (Maybe FormData)
+getFormData self = liftDOM (((self ^. js "formData") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/formData MDN NavigateEvent.formData documentation>
+getFormDataUnsafe :: (MonadDOM m, HasCallStack) => NavigateEvent -> m FormData
+getFormDataUnsafe self = liftDOM ((((self ^. js "formData") >>= 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 (((self ^. js "formData") >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. js "downloadRequest") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "downloadRequest") >>= fromMaybeJSString) >>= 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 (((self ^. js "downloadRequest") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/info MDN NavigateEvent.info documentation>
+getInfo :: (MonadDOM m) => NavigateEvent -> m JSVal
+getInfo self = liftDOM (self ^. js "info")
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/hasUAVisualTransition MDN NavigateEvent.hasUAVisualTransition documentation>
+getHasUAVisualTransition :: (MonadDOM m) => NavigateEvent -> m Bool
+getHasUAVisualTransition self = liftDOM (((self ^. js "hasUAVisualTransition") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/sourceElement MDN NavigateEvent.sourceElement documentation>
+getSourceElement :: (MonadDOM m) => NavigateEvent -> m (Maybe Element)
+getSourceElement self = liftDOM (((self ^. js "sourceElement") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigateEvent/sourceElement MDN NavigateEvent.sourceElement documentation>
+getSourceElementUnsafe :: (MonadDOM m, HasCallStack) => NavigateEvent -> m Element
+getSourceElementUnsafe self = liftDOM ((((self ^. js "sourceElement") >>= 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 (((self ^. js "sourceElement") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NavigateEventInit.hs b/src/JSDOM/Generated/NavigateEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigateEventInit.hs
@@ -0,0 +1,172 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigateEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "destination" (toJSVal destination)) P.>> (o ^. jss "signal" (toJSVal signal)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "navigationType" (toJSVal val)))
+
+-- | <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 (((self ^. js "navigationType") >>= 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 ((((self ^. js "navigationType") >>= 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 (((self ^. js "navigationType") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "destination" (toJSVal val)))
+
+-- | <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 (((self ^. js "destination") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "canIntercept" (toJSVal val)))
+
+-- | <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 (((self ^. js "canIntercept") >>= 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 ((((self ^. js "canIntercept") >>= 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 (((self ^. js "canIntercept") >>= valToBool))
+
+-- | <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 (self ^. jss "userInitiated" (toJSVal val)))
+
+-- | <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 (((self ^. js "userInitiated") >>= 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 ((((self ^. js "userInitiated") >>= 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 (((self ^. js "userInitiated") >>= valToBool))
+
+-- | <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 (self ^. jss "hashChange" (toJSVal val)))
+
+-- | <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 (((self ^. js "hashChange") >>= 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 ((((self ^. js "hashChange") >>= 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 (((self ^. js "hashChange") >>= valToBool))
+
+-- | <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 (self ^. jss "signal" (toJSVal val)))
+
+-- | <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 (((self ^. js "signal") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "formData" (toJSVal val)))
+
+-- | <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 (((self ^. js "formData") >>= 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 ((((self ^. js "formData") >>= 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 (((self ^. js "formData") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "downloadRequest" (toJSVal val)))
+
+-- | <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 (((self ^. js "downloadRequest") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "downloadRequest") >>= fromMaybeJSString) >>= 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 (((self ^. js "downloadRequest") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "info" (toJSVal val)))
+
+-- | <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 (self ^. js "info")
+
+-- | <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 (self ^. jss "hasUAVisualTransition" (toJSVal val)))
+
+-- | <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 (((self ^. js "hasUAVisualTransition") >>= 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 ((((self ^. js "hasUAVisualTransition") >>= 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 (((self ^. js "hasUAVisualTransition") >>= valToBool))
+
+-- | <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 (self ^. jss "sourceElement" (toJSVal val)))
+
+-- | <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 (((self ^. js "sourceElement") >>= 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 ((((self ^. js "sourceElement") >>= 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 (((self ^. js "sourceElement") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Navigation.hs b/src/JSDOM/Generated/Navigation.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Navigation.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.Navigation
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "back" [P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "back" [P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/entries MDN Navigation.entries documentation>
+entries :: (MonadDOM m) => Navigation -> m [NavigationHistoryEntry]
+entries self = liftDOM (((self ^. jsf "entries" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/entries MDN Navigation.entries documentation>
+entries_ :: (MonadDOM m) => Navigation -> m ()
+entries_ self = liftDOM (void (self ^. jsf "entries" ()))
+
+-- | <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 (((self ^. jsf "forward" [P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "forward" [P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 (((self ^. jsf "navigate" [toJSVal url, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "navigate" [toJSVal url, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 (((self ^. jsf "reload" [P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "reload" [P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 (((self ^. jsf "traverseTo" [toJSVal key, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "traverseTo" [toJSVal key, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/updateCurrentEntry MDN Navigation.updateCurrentEntry documentation>
+updateCurrentEntry :: (MonadDOM m) => Navigation -> NavigationUpdateCurrentEntryOptions -> m ()
+updateCurrentEntry self options = liftDOM (void (self ^. jsf "updateCurrentEntry" [toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/currentEntry MDN Navigation.currentEntry documentation>
+getCurrentEntry :: (MonadDOM m) => Navigation -> m (Maybe NavigationHistoryEntry)
+getCurrentEntry self = liftDOM (((self ^. js "currentEntry") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/currentEntry MDN Navigation.currentEntry documentation>
+getCurrentEntryUnsafe :: (MonadDOM m, HasCallStack) => Navigation -> m NavigationHistoryEntry
+getCurrentEntryUnsafe self = liftDOM ((((self ^. js "currentEntry") >>= 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 (((self ^. js "currentEntry") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/transition MDN Navigation.transition documentation>
+getTransition :: (MonadDOM m) => Navigation -> m (Maybe NavigationTransition)
+getTransition self = liftDOM (((self ^. js "transition") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/transition MDN Navigation.transition documentation>
+getTransitionUnsafe :: (MonadDOM m, HasCallStack) => Navigation -> m NavigationTransition
+getTransitionUnsafe self = liftDOM ((((self ^. js "transition") >>= 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 (((self ^. js "transition") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/activation MDN Navigation.activation documentation>
+getActivation :: (MonadDOM m) => Navigation -> m (Maybe NavigationActivation)
+getActivation self = liftDOM (((self ^. js "activation") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/activation MDN Navigation.activation documentation>
+getActivationUnsafe :: (MonadDOM m, HasCallStack) => Navigation -> m NavigationActivation
+getActivationUnsafe self = liftDOM ((((self ^. js "activation") >>= 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 (((self ^. js "activation") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/canGoBack MDN Navigation.canGoBack documentation>
+getCanGoBack :: (MonadDOM m) => Navigation -> m Bool
+getCanGoBack self = liftDOM (((self ^. js "canGoBack") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigation/canGoForward MDN Navigation.canGoForward documentation>
+getCanGoForward :: (MonadDOM m) => Navigation -> m Bool
+getCanGoForward self = liftDOM (((self ^. js "canGoForward") >>= valToBool))
+
+-- | <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/JSDOM/Generated/NavigationActivation.hs b/src/JSDOM/Generated/NavigationActivation.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationActivation.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigationActivation
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationActivation/from MDN NavigationActivation.from documentation>
+getFrom :: (MonadDOM m) => NavigationActivation -> m (Maybe NavigationHistoryEntry)
+getFrom self = liftDOM (((self ^. js "from") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationActivation/from MDN NavigationActivation.from documentation>
+getFromUnsafe :: (MonadDOM m, HasCallStack) => NavigationActivation -> m NavigationHistoryEntry
+getFromUnsafe self = liftDOM ((((self ^. js "from") >>= 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 (((self ^. js "from") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationActivation/entry MDN NavigationActivation.entry documentation>
+getEntry :: (MonadDOM m) => NavigationActivation -> m NavigationHistoryEntry
+getEntry self = liftDOM (((self ^. js "entry") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationActivation/navigationType MDN NavigationActivation.navigationType documentation>
+getNavigationType :: (MonadDOM m) => NavigationActivation -> m NavigationType
+getNavigationType self = liftDOM (((self ^. js "navigationType") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NavigationCurrentEntryChangeEvent.hs b/src/JSDOM/Generated/NavigationCurrentEntryChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationCurrentEntryChangeEvent.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigationCurrentEntryChangeEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "NavigationCurrentEntryChangeEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationCurrentEntryChangeEvent/navigationType MDN NavigationCurrentEntryChangeEvent.navigationType documentation>
+getNavigationType :: (MonadDOM m) => NavigationCurrentEntryChangeEvent -> m (Maybe NavigationType)
+getNavigationType self = liftDOM (((self ^. js "navigationType") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationCurrentEntryChangeEvent/navigationType MDN NavigationCurrentEntryChangeEvent.navigationType documentation>
+getNavigationTypeUnsafe :: (MonadDOM m, HasCallStack) => NavigationCurrentEntryChangeEvent -> m NavigationType
+getNavigationTypeUnsafe self = liftDOM ((((self ^. js "navigationType") >>= 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 (((self ^. js "navigationType") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationCurrentEntryChangeEvent/from MDN NavigationCurrentEntryChangeEvent.from documentation>
+getFrom :: (MonadDOM m) => NavigationCurrentEntryChangeEvent -> m NavigationHistoryEntry
+getFrom self = liftDOM (((self ^. js "from") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NavigationCurrentEntryChangeEventInit.hs b/src/JSDOM/Generated/NavigationCurrentEntryChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationCurrentEntryChangeEventInit.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigationCurrentEntryChangeEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigationcurrententrychangeeventinit NavigationCurrentEntryChangeEventInit specification>
+newNavigationCurrentEntryChangeEventInit :: (MonadDOM m) => NavigationHistoryEntry -> m NavigationCurrentEntryChangeEventInit
+newNavigationCurrentEntryChangeEventInit from = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "from" (toJSVal from)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "navigationType" (toJSVal val)))
+
+-- | <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 (((self ^. js "navigationType") >>= 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 ((((self ^. js "navigationType") >>= 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 (((self ^. js "navigationType") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "from" (toJSVal val)))
+
+-- | <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 (((self ^. js "from") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NavigationDestination.hs b/src/JSDOM/Generated/NavigationDestination.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationDestination.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigationDestination
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationDestination/getState MDN NavigationDestination.getState documentation>
+getState :: (MonadDOM m) => NavigationDestination -> m JSVal
+getState self = liftDOM (self ^. jsf "getState" ())
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationDestination/getState MDN NavigationDestination.getState documentation>
+getState_ :: (MonadDOM m) => NavigationDestination -> m ()
+getState_ self = liftDOM (void (self ^. jsf "getState" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationDestination/url MDN NavigationDestination.url documentation>
+getUrl :: (MonadDOM m, FromJSString result) => NavigationDestination -> m result
+getUrl self = liftDOM (((self ^. js "url") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationDestination/key MDN NavigationDestination.key documentation>
+getKey :: (MonadDOM m, FromJSString result) => NavigationDestination -> m result
+getKey self = liftDOM (((self ^. js "key") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationDestination/id MDN NavigationDestination.id documentation>
+getId :: (MonadDOM m, FromJSString result) => NavigationDestination -> m result
+getId self = liftDOM (((self ^. js "id") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationDestination/index MDN NavigationDestination.index documentation>
+getIndex :: (MonadDOM m) => NavigationDestination -> m Int53
+getIndex self = liftDOM (((self ^. js "index") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationDestination/sameDocument MDN NavigationDestination.sameDocument documentation>
+getSameDocument :: (MonadDOM m) => NavigationDestination -> m Bool
+getSameDocument self = liftDOM (((self ^. js "sameDocument") >>= valToBool))
diff --git a/src/JSDOM/Generated/NavigationEvent.hs b/src/JSDOM/Generated/NavigationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationEvent.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-nav-1 (webref). Do not edit.
+module JSDOM.Generated.NavigationEvent
+       (NavigationEvent(..), gTypeNavigationEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/NavigationHistoryEntry.hs b/src/JSDOM/Generated/NavigationHistoryEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationHistoryEntry.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigationHistoryEntry
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationHistoryEntry/getState MDN NavigationHistoryEntry.getState documentation>
+getState :: (MonadDOM m) => NavigationHistoryEntry -> m JSVal
+getState self = liftDOM (self ^. jsf "getState" ())
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationHistoryEntry/getState MDN NavigationHistoryEntry.getState documentation>
+getState_ :: (MonadDOM m) => NavigationHistoryEntry -> m ()
+getState_ self = liftDOM (void (self ^. jsf "getState" ()))
+
+-- | <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 (((self ^. js "url") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "url") >>= fromMaybeJSString) >>= 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 (((self ^. js "url") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationHistoryEntry/key MDN NavigationHistoryEntry.key documentation>
+getKey :: (MonadDOM m, FromJSString result) => NavigationHistoryEntry -> m result
+getKey self = liftDOM (((self ^. js "key") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationHistoryEntry/id MDN NavigationHistoryEntry.id documentation>
+getId :: (MonadDOM m, FromJSString result) => NavigationHistoryEntry -> m result
+getId self = liftDOM (((self ^. js "id") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationHistoryEntry/index MDN NavigationHistoryEntry.index documentation>
+getIndex :: (MonadDOM m) => NavigationHistoryEntry -> m Int53
+getIndex self = liftDOM (((self ^. js "index") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationHistoryEntry/sameDocument MDN NavigationHistoryEntry.sameDocument documentation>
+getSameDocument :: (MonadDOM m) => NavigationHistoryEntry -> m Bool
+getSameDocument self = liftDOM (((self ^. js "sameDocument") >>= valToBool))
+
+-- | <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/JSDOM/Generated/NavigationInterceptHandler.hs b/src/JSDOM/Generated/NavigationInterceptHandler.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationInterceptHandler.hs
@@ -0,0 +1,27 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newNavigationInterceptHandler :: (MonadDOM m) => (JSM ()) -> m NavigationInterceptHandler
+newNavigationInterceptHandler callback = liftDOM (NavigationInterceptHandler . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        _ -> do
+          callback ))
+
+newNavigationInterceptHandlerSync :: (MonadDOM m) => (JSM ()) -> m NavigationInterceptHandler
+newNavigationInterceptHandlerSync callback = liftDOM (NavigationInterceptHandler . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        _ -> do
+          callback ))
+
+newNavigationInterceptHandlerAsync :: (MonadDOM m) => (JSM ()) -> m NavigationInterceptHandler
+newNavigationInterceptHandlerAsync callback = liftDOM (NavigationInterceptHandler . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        _ -> do
+          callback ))
diff --git a/src/JSDOM/Generated/NavigationInterceptOptions.hs b/src/JSDOM/Generated/NavigationInterceptOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationInterceptOptions.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigationInterceptOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigationinterceptoptions NavigationInterceptOptions specification>
+newNavigationInterceptOptions :: (MonadDOM m) => m NavigationInterceptOptions
+newNavigationInterceptOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "precommitHandler" (toJSVal val)))
+
+-- | <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 (self ^. jss "handler" (toJSVal val)))
+
+-- | <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 (self ^. jss "focusReset" (toJSVal val)))
+
+-- | <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 (((self ^. js "focusReset") >>= 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 ((((self ^. js "focusReset") >>= 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 (((self ^. js "focusReset") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "scroll" (toJSVal val)))
+
+-- | <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 (((self ^. js "scroll") >>= 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 ((((self ^. js "scroll") >>= 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 (((self ^. js "scroll") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NavigationNavigateOptions.hs b/src/JSDOM/Generated/NavigationNavigateOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationNavigateOptions.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigationNavigateOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigationnavigateoptions NavigationNavigateOptions specification>
+newNavigationNavigateOptions :: (MonadDOM m) => m NavigationNavigateOptions
+newNavigationNavigateOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "state" (toJSVal val)))
+
+-- | <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 (self ^. js "state")
+
+-- | <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 (self ^. jss "history" (toJSVal val)))
+
+-- | <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 (((self ^. js "history") >>= 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 ((((self ^. js "history") >>= 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 (((self ^. js "history") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NavigationOptions.hs b/src/JSDOM/Generated/NavigationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationOptions.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigationOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigationoptions NavigationOptions specification>
+newNavigationOptions :: (MonadDOM m) => m NavigationOptions
+newNavigationOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toNavigationOptions self) ^. jss "info" (toJSVal val)))
+
+-- | <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 ((Types.toNavigationOptions self) ^. js "info")
diff --git a/src/JSDOM/Generated/NavigationPrecommitController.hs b/src/JSDOM/Generated/NavigationPrecommitController.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationPrecommitController.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigationPrecommitController
+       (addHandler, redirect, NavigationPrecommitController(..), gTypeNavigationPrecommitController)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationPrecommitController/addHandler MDN NavigationPrecommitController.addHandler documentation>
+addHandler :: (MonadDOM m) => NavigationPrecommitController -> NavigationInterceptHandler -> m ()
+addHandler self handler = liftDOM (void (self ^. jsf "addHandler" [toJSVal handler]))
+
+-- | <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 (self ^. jsf "redirect" [toJSVal url, P.maybe (P.return jsUndefined) toJSVal options]))
diff --git a/src/JSDOM/Generated/NavigationPrecommitHandler.hs b/src/JSDOM/Generated/NavigationPrecommitHandler.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationPrecommitHandler.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newNavigationPrecommitHandler :: (MonadDOM m) => (NavigationPrecommitController -> JSM ()) -> m NavigationPrecommitHandler
+newNavigationPrecommitHandler callback = liftDOM (NavigationPrecommitHandler . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (controller : _) -> do
+          controller' <- fromJSValUnchecked controller
+          callback controller'))
+
+newNavigationPrecommitHandlerSync :: (MonadDOM m) => (NavigationPrecommitController -> JSM ()) -> m NavigationPrecommitHandler
+newNavigationPrecommitHandlerSync callback = liftDOM (NavigationPrecommitHandler . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (controller : _) -> do
+          controller' <- fromJSValUnchecked controller
+          callback controller'))
+
+newNavigationPrecommitHandlerAsync :: (MonadDOM m) => (NavigationPrecommitController -> JSM ()) -> m NavigationPrecommitHandler
+newNavigationPrecommitHandlerAsync callback = liftDOM (NavigationPrecommitHandler . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (controller : _) -> do
+          controller' <- fromJSValUnchecked controller
+          callback controller'))
diff --git a/src/JSDOM/Generated/NavigationPreloadManager.hs b/src/JSDOM/Generated/NavigationPreloadManager.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationPreloadManager.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.NavigationPreloadManager
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationPreloadManager/disable MDN NavigationPreloadManager.disable documentation>
+disable :: (MonadDOM m) => NavigationPreloadManager -> m ()
+disable self = liftDOM (void (((self ^. jsf "disable" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationPreloadManager/enable MDN NavigationPreloadManager.enable documentation>
+enable :: (MonadDOM m) => NavigationPreloadManager -> m ()
+enable self = liftDOM (void (((self ^. jsf "enable" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationPreloadManager/getState MDN NavigationPreloadManager.getState documentation>
+getState :: (MonadDOM m) => NavigationPreloadManager -> m NavigationPreloadState
+getState self = liftDOM (((((self ^. jsf "getState" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationPreloadManager/getState MDN NavigationPreloadManager.getState documentation>
+getState_ :: (MonadDOM m) => NavigationPreloadManager -> m ()
+getState_ self = liftDOM (void (((self ^. jsf "getState" ()) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "setHeaderValue" [toJSVal value]) >>= readPromise)))
diff --git a/src/JSDOM/Generated/NavigationPreloadState.hs b/src/JSDOM/Generated/NavigationPreloadState.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationPreloadState.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.NavigationPreloadState
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-navigationpreloadstate NavigationPreloadState specification>
+newNavigationPreloadState :: (MonadDOM m) => m NavigationPreloadState
+newNavigationPreloadState = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-navigationpreloadstate-enabled NavigationPreloadState.enabled specification>
+setEnabled :: (MonadDOM m) => NavigationPreloadState -> Bool -> m ()
+setEnabled self val = liftDOM (void (self ^. jss "enabled" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-navigationpreloadstate-enabled NavigationPreloadState.enabled specification>
+getEnabled :: (MonadDOM m) => NavigationPreloadState -> m (Maybe Bool)
+getEnabled self = liftDOM (((self ^. js "enabled") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-navigationpreloadstate-enabled NavigationPreloadState.enabled specification>
+getEnabledUnsafe :: (MonadDOM m, HasCallStack) => NavigationPreloadState -> m Bool
+getEnabledUnsafe self = liftDOM ((((self ^. js "enabled") >>= 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 (((self ^. js "enabled") >>= valToBool))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-navigationpreloadstate-headervalue NavigationPreloadState.headerValue specification>
+setHeaderValue :: (MonadDOM m, ToJSString val) => NavigationPreloadState -> val -> m ()
+setHeaderValue self val = liftDOM (void (self ^. jss "headerValue" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-navigationpreloadstate-headervalue NavigationPreloadState.headerValue specification>
+getHeaderValue :: (MonadDOM m, FromJSString result) => NavigationPreloadState -> m (Maybe result)
+getHeaderValue self = liftDOM (((self ^. js "headerValue") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-navigationpreloadstate-headervalue NavigationPreloadState.headerValue specification>
+getHeaderValueUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NavigationPreloadState -> m result
+getHeaderValueUnsafe self = liftDOM ((((self ^. js "headerValue") >>= fromMaybeJSString) >>= 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 (((self ^. js "headerValue") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NavigationReloadOptions.hs b/src/JSDOM/Generated/NavigationReloadOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationReloadOptions.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigationReloadOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigationreloadoptions NavigationReloadOptions specification>
+newNavigationReloadOptions :: (MonadDOM m) => m NavigationReloadOptions
+newNavigationReloadOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+setState :: (MonadDOM m) => NavigationReloadOptions -> JSVal -> m ()
+setState self val = liftDOM (void (self ^. jss "state" (toJSVal val)))
+
+getState :: (MonadDOM m) => NavigationReloadOptions -> m JSVal
+getState self = liftDOM (self ^. js "state")
diff --git a/src/JSDOM/Generated/NavigationResult.hs b/src/JSDOM/Generated/NavigationResult.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationResult.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigationResult
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigationresult NavigationResult specification>
+newNavigationResult :: (MonadDOM m) => m NavigationResult
+newNavigationResult = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "committed" (toJSVal val)))
+
+-- | <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 (((self ^. js "committed") >>= 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 ((((self ^. js "committed") >>= 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 (((self ^. js "committed") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "finished" (toJSVal val)))
+
+-- | <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 (((self ^. js "finished") >>= 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 ((((self ^. js "finished") >>= 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 (((self ^. js "finished") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NavigationTransition.hs b/src/JSDOM/Generated/NavigationTransition.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationTransition.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigationTransition
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationTransition/navigationType MDN NavigationTransition.navigationType documentation>
+getNavigationType :: (MonadDOM m) => NavigationTransition -> m NavigationType
+getNavigationType self = liftDOM (((self ^. js "navigationType") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationTransition/from MDN NavigationTransition.from documentation>
+getFrom :: (MonadDOM m) => NavigationTransition -> m NavigationHistoryEntry
+getFrom self = liftDOM (((self ^. js "from") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationTransition/committed MDN NavigationTransition.committed documentation>
+getCommitted :: (MonadDOM m) => NavigationTransition -> m ()
+getCommitted self = liftDOM (void (((self ^. js "committed") >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigationTransition/finished MDN NavigationTransition.finished documentation>
+getFinished :: (MonadDOM m) => NavigationTransition -> m ()
+getFinished self = liftDOM (void (((self ^. js "finished") >>= readPromise)))
diff --git a/src/JSDOM/Generated/NavigationUpdateCurrentEntryOptions.hs b/src/JSDOM/Generated/NavigationUpdateCurrentEntryOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigationUpdateCurrentEntryOptions.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigationUpdateCurrentEntryOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigationupdatecurrententryoptions NavigationUpdateCurrentEntryOptions specification>
+newNavigationUpdateCurrentEntryOptions :: (MonadDOM m) => JSVal -> m NavigationUpdateCurrentEntryOptions
+newNavigationUpdateCurrentEntryOptions state = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "state" (toJSVal state)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "state" (toJSVal val)))
+
+-- | <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 (self ^. js "state")
diff --git a/src/JSDOM/Generated/Navigator.hs b/src/JSDOM/Generated/Navigator.hs
--- a/src/JSDOM/Generated/Navigator.hs
+++ b/src/JSDOM/Generated/Navigator.hs
@@ -1,194 +1,120 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.Navigator
-       (requestMediaKeySystemAccess, requestMediaKeySystemAccess_,
-        getGamepads, getGamepads_, getUserMedia, registerProtocolHandler,
-        isProtocolHandlerRegistered, isProtocolHandlerRegistered_,
-        unregisterProtocolHandler, vibratePattern, vibratePattern_,
-        vibrate, vibrate_, javaEnabled, javaEnabled_, getStorageUpdates,
-        getGeolocation, getMediaDevices, getWebkitTemporaryStorage,
-        getWebkitPersistentStorage, getWebdriver, getPlugins, getMimeTypes,
-        getCookieEnabled, Navigator(..), gTypeNavigator)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.requestMediaKeySystemAccess Mozilla Navigator.requestMediaKeySystemAccess documentation> 
-requestMediaKeySystemAccess ::
-                            (MonadDOM m, ToJSString keySystem) =>
-                              Navigator ->
-                                keySystem ->
-                                  [MediaKeySystemConfiguration] -> m MediaKeySystemAccess
-requestMediaKeySystemAccess self keySystem supportedConfiguration
-  = liftDOM
-      (((self ^. jsf "requestMediaKeySystemAccess"
-           [toJSVal keySystem, toJSVal (array supportedConfiguration)])
-          >>= readPromise)
-         >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "canShare" [P.maybe (P.return jsUndefined) toJSVal data']) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.requestMediaKeySystemAccess Mozilla Navigator.requestMediaKeySystemAccess documentation> 
-requestMediaKeySystemAccess_ ::
-                             (MonadDOM m, ToJSString keySystem) =>
-                               Navigator -> keySystem -> [MediaKeySystemConfiguration] -> m ()
-requestMediaKeySystemAccess_ self keySystem supportedConfiguration
-  = liftDOM
-      (void
-         (self ^. jsf "requestMediaKeySystemAccess"
-            [toJSVal keySystem, toJSVal (array supportedConfiguration)]))
+-- | <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 (self ^. jsf "canShare" [P.maybe (P.return jsUndefined) toJSVal data']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getGamepads Mozilla Navigator.getGamepads documentation> 
-getGamepads :: (MonadDOM m) => Navigator -> m [Gamepad]
-getGamepads self
-  = liftDOM ((self ^. jsf "getGamepads" ()) >>= fromJSArrayUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/getGamepads MDN Navigator.getGamepads documentation>
+getGamepads :: (MonadDOM m) => Navigator -> m [Maybe Gamepad]
+getGamepads self = liftDOM (((self ^. jsf "getGamepads" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getGamepads Mozilla Navigator.getGamepads documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/getGamepads MDN Navigator.getGamepads documentation>
 getGamepads_ :: (MonadDOM m) => Navigator -> m ()
 getGamepads_ self = liftDOM (void (self ^. jsf "getGamepads" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getUserMedia Mozilla Navigator.getUserMedia documentation> 
-getUserMedia ::
-             (MonadDOM m) =>
-               Navigator ->
-                 MediaStreamConstraints ->
-                   NavigatorUserMediaSuccessCallback ->
-                     NavigatorUserMediaErrorCallback -> m ()
-getUserMedia self constraints successCallback errorCallback
-  = liftDOM
-      (void
-         (self ^. jsf "getUserMedia"
-            [toJSVal constraints, toJSVal successCallback,
-             toJSVal errorCallback]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.registerProtocolHandler Mozilla Navigator.registerProtocolHandler documentation> 
-registerProtocolHandler ::
-                        (MonadDOM m, ToJSString scheme, ToJSString url,
-                         ToJSString title) =>
-                          Navigator -> scheme -> url -> title -> m ()
-registerProtocolHandler self scheme url title
-  = liftDOM
-      (void
-         (self ^. jsf "registerProtocolHandler"
-            [toJSVal scheme, toJSVal url, toJSVal title]))
+-- | <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 (((((self ^. jsf "requestMIDIAccess" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.isProtocolHandlerRegistered Mozilla Navigator.isProtocolHandlerRegistered documentation> 
-isProtocolHandlerRegistered ::
-                            (MonadDOM m, ToJSString scheme, ToJSString url,
-                             FromJSString result) =>
-                              Navigator -> scheme -> url -> m result
-isProtocolHandlerRegistered self scheme url
-  = liftDOM
-      ((self ^. jsf "isProtocolHandlerRegistered"
-          [toJSVal scheme, toJSVal url])
-         >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "requestMIDIAccess" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.isProtocolHandlerRegistered Mozilla Navigator.isProtocolHandlerRegistered documentation> 
-isProtocolHandlerRegistered_ ::
-                             (MonadDOM m, ToJSString scheme, ToJSString url) =>
-                               Navigator -> scheme -> url -> m ()
-isProtocolHandlerRegistered_ self scheme url
-  = liftDOM
-      (void
-         (self ^. jsf "isProtocolHandlerRegistered"
-            [toJSVal scheme, toJSVal url]))
+-- | <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 (((((self ^. jsf "requestMediaKeySystemAccess" [toJSVal keySystem, toJSVal supportedConfigurations]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.unregisterProtocolHandler Mozilla Navigator.unregisterProtocolHandler documentation> 
-unregisterProtocolHandler ::
-                          (MonadDOM m, ToJSString scheme, ToJSString url) =>
-                            Navigator -> scheme -> url -> m ()
-unregisterProtocolHandler self scheme url
-  = liftDOM
-      (void
-         (self ^. jsf "unregisterProtocolHandler"
-            [toJSVal scheme, toJSVal url]))
+-- | <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 (((self ^. jsf "requestMediaKeySystemAccess" [toJSVal keySystem, toJSVal supportedConfigurations]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vibrate Mozilla Navigator.vibrate documentation> 
-vibratePattern :: (MonadDOM m) => Navigator -> [Word] -> m Bool
-vibratePattern self pattern'
-  = liftDOM
-      ((self ^. jsf "vibrate" [toJSVal (array pattern')]) >>= valToBool)
+-- | <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 (((self ^. jsf "sendBeacon" [toJSVal url, toJSVal data']) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vibrate Mozilla Navigator.vibrate documentation> 
-vibratePattern_ :: (MonadDOM m) => Navigator -> [Word] -> m ()
-vibratePattern_ self pattern'
-  = liftDOM (void (self ^. jsf "vibrate" [toJSVal (array 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 (self ^. jsf "sendBeacon" [toJSVal url, toJSVal data']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vibrate Mozilla Navigator.vibrate documentation> 
-vibrate :: (MonadDOM m) => Navigator -> Word -> m Bool
-vibrate self time
-  = liftDOM ((self ^. jsf "vibrate" [toJSVal time]) >>= valToBool)
+-- | <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 (((self ^. jsf "share" [P.maybe (P.return jsUndefined) toJSVal data']) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vibrate Mozilla Navigator.vibrate documentation> 
-vibrate_ :: (MonadDOM m) => Navigator -> Word -> m ()
-vibrate_ self time
-  = liftDOM (void (self ^. jsf "vibrate" [toJSVal time]))
+-- | <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 (((self ^. jsf "vibrate" [toJSVal pattern']) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.javaEnabled Mozilla Navigator.javaEnabled documentation> 
-javaEnabled :: (MonadDOM m) => Navigator -> m Bool
-javaEnabled self
-  = liftDOM ((self ^. jsf "javaEnabled" ()) >>= valToBool)
+-- | <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 (self ^. jsf "vibrate" [toJSVal pattern']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.javaEnabled Mozilla Navigator.javaEnabled documentation> 
-javaEnabled_ :: (MonadDOM m) => Navigator -> m ()
-javaEnabled_ self = liftDOM (void (self ^. jsf "javaEnabled" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/clipboard MDN Navigator.clipboard documentation>
+getClipboard :: (MonadDOM m) => Navigator -> m Clipboard
+getClipboard self = liftDOM (((self ^. js "clipboard") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getStorageUpdates Mozilla Navigator.getStorageUpdates documentation> 
-getStorageUpdates :: (MonadDOM m) => Navigator -> m ()
-getStorageUpdates self
-  = liftDOM (void (self ^. jsf "getStorageUpdates" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/credentials MDN Navigator.credentials documentation>
+getCredentials :: (MonadDOM m) => Navigator -> m CredentialsContainer
+getCredentials self = liftDOM (((self ^. js "credentials") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.geolocation Mozilla Navigator.geolocation documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/geolocation MDN Navigator.geolocation documentation>
 getGeolocation :: (MonadDOM m) => Navigator -> m Geolocation
-getGeolocation self
-  = liftDOM ((self ^. js "geolocation") >>= fromJSValUnchecked)
+getGeolocation self = liftDOM (((self ^. js "geolocation") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.mediaDevices Mozilla Navigator.mediaDevices documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/userActivation MDN Navigator.userActivation documentation>
+getUserActivation :: (MonadDOM m) => Navigator -> m UserActivation
+getUserActivation self = liftDOM (((self ^. js "userActivation") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/login MDN Navigator.login documentation>
+getLogin :: (MonadDOM m) => Navigator -> m NavigatorLogin
+getLogin self = liftDOM (((self ^. js "login") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/mediaCapabilities MDN Navigator.mediaCapabilities documentation>
+getMediaCapabilities :: (MonadDOM m) => Navigator -> m MediaCapabilities
+getMediaCapabilities self = liftDOM (((self ^. js "mediaCapabilities") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/mediaDevices MDN Navigator.mediaDevices documentation>
 getMediaDevices :: (MonadDOM m) => Navigator -> m MediaDevices
-getMediaDevices self
-  = liftDOM ((self ^. js "mediaDevices") >>= fromJSValUnchecked)
+getMediaDevices self = liftDOM (((self ^. js "mediaDevices") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitTemporaryStorage Mozilla Navigator.webkitTemporaryStorage documentation> 
-getWebkitTemporaryStorage ::
-                          (MonadDOM m) => Navigator -> m StorageQuota
-getWebkitTemporaryStorage self
-  = liftDOM
-      ((self ^. js "webkitTemporaryStorage") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/mediaSession MDN Navigator.mediaSession documentation>
+getMediaSession :: (MonadDOM m) => Navigator -> m MediaSession
+getMediaSession self = liftDOM (((self ^. js "mediaSession") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitPersistentStorage Mozilla Navigator.webkitPersistentStorage documentation> 
-getWebkitPersistentStorage ::
-                           (MonadDOM m) => Navigator -> m StorageQuota
-getWebkitPersistentStorage self
-  = liftDOM
-      ((self ^. js "webkitPersistentStorage") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/permissions MDN Navigator.permissions documentation>
+getPermissions :: (MonadDOM m) => Navigator -> m Permissions
+getPermissions self = liftDOM (((self ^. js "permissions") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webdriver Mozilla Navigator.webdriver documentation> 
-getWebdriver :: (MonadDOM m) => Navigator -> m Bool
-getWebdriver self
-  = liftDOM ((self ^. js "webdriver") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/maxTouchPoints MDN Navigator.maxTouchPoints documentation>
+getMaxTouchPoints :: (MonadDOM m) => Navigator -> m Int
+getMaxTouchPoints self = liftDOM ((P.round <$> ((self ^. js "maxTouchPoints") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.plugins Mozilla Navigator.plugins documentation> 
-getPlugins :: (MonadDOM m) => Navigator -> m PluginArray
-getPlugins self
-  = liftDOM ((self ^. js "plugins") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/wakeLock MDN Navigator.wakeLock documentation>
+getWakeLock :: (MonadDOM m) => Navigator -> m WakeLock
+getWakeLock self = liftDOM (((self ^. js "wakeLock") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.mimeTypes Mozilla Navigator.mimeTypes documentation> 
-getMimeTypes :: (MonadDOM m) => Navigator -> m MimeTypeArray
-getMimeTypes self
-  = liftDOM ((self ^. js "mimeTypes") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/serial MDN Navigator.serial documentation>
+getSerial :: (MonadDOM m) => Navigator -> m Serial
+getSerial self = liftDOM (((self ^. js "serial") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.cookieEnabled Mozilla Navigator.cookieEnabled documentation> 
-getCookieEnabled :: (MonadDOM m) => Navigator -> m Bool
-getCookieEnabled self
-  = liftDOM ((self ^. js "cookieEnabled") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/serviceWorker MDN Navigator.serviceWorker documentation>
+getServiceWorker :: (MonadDOM m) => Navigator -> m ServiceWorkerContainer
+getServiceWorker self = liftDOM (((self ^. js "serviceWorker") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NavigatorAutomationInformation.hs b/src/JSDOM/Generated/NavigatorAutomationInformation.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigatorAutomationInformation.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webdriver2 (webref). Do not edit.
+module JSDOM.Generated.NavigatorAutomationInformation
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/webdriver MDN NavigatorAutomationInformation.webdriver documentation>
+getWebdriver :: (MonadDOM m, IsNavigatorAutomationInformation self) => self -> m Bool
+getWebdriver self = liftDOM ((((Types.toNavigatorAutomationInformation self) ^. js "webdriver") >>= valToBool))
diff --git a/src/JSDOM/Generated/NavigatorBadge.hs b/src/JSDOM/Generated/NavigatorBadge.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigatorBadge.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from badging (webref). Do not edit.
+module JSDOM.Generated.NavigatorBadge
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/clearAppBadge MDN NavigatorBadge.clearAppBadge documentation>
+clearAppBadge :: (MonadDOM m, IsNavigatorBadge self) => self -> m ()
+clearAppBadge self = liftDOM (void ((((Types.toNavigatorBadge self) ^. jsf "clearAppBadge" ()) >>= readPromise)))
+
+-- | <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 ((((Types.toNavigatorBadge self) ^. jsf "setAppBadge" [P.maybe (P.return jsUndefined) toJSVal contents]) >>= readPromise)))
diff --git a/src/JSDOM/Generated/NavigatorConcurrentHardware.hs b/src/JSDOM/Generated/NavigatorConcurrentHardware.hs
--- a/src/JSDOM/Generated/NavigatorConcurrentHardware.hs
+++ b/src/JSDOM/Generated/NavigatorConcurrentHardware.hs
@@ -1,32 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.NavigatorConcurrentHardware
-       (getHardwareConcurrency, NavigatorConcurrentHardware(..),
-        gTypeNavigatorConcurrentHardware, IsNavigatorConcurrentHardware,
-        toNavigatorConcurrentHardware)
+       (getHardwareConcurrency, NavigatorConcurrentHardware(..), gTypeNavigatorConcurrentHardware, IsNavigatorConcurrentHardware, toNavigatorConcurrentHardware)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorConcurrentHardware.hardwareConcurrency Mozilla NavigatorConcurrentHardware.hardwareConcurrency documentation> 
-getHardwareConcurrency ::
-                       (MonadDOM m, IsNavigatorConcurrentHardware self) =>
-                         self -> m Word64
-getHardwareConcurrency self
-  = liftDOM
-      (round <$>
-         (((toNavigatorConcurrentHardware self) ^. js "hardwareConcurrency")
-            >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/hardwareConcurrency MDN NavigatorConcurrentHardware.hardwareConcurrency documentation>
+getHardwareConcurrency :: (MonadDOM m, IsNavigatorConcurrentHardware self) => self -> m Word53
+getHardwareConcurrency self = liftDOM ((((Types.toNavigatorConcurrentHardware self) ^. js "hardwareConcurrency") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NavigatorContentUtils.hs b/src/JSDOM/Generated/NavigatorContentUtils.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigatorContentUtils.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigatorContentUtils
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toNavigatorContentUtils self) ^. jsf "registerProtocolHandler" [toJSVal scheme, toJSVal url]))
+
+-- | <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 ((Types.toNavigatorContentUtils self) ^. jsf "unregisterProtocolHandler" [toJSVal scheme, toJSVal url]))
diff --git a/src/JSDOM/Generated/NavigatorCookies.hs b/src/JSDOM/Generated/NavigatorCookies.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigatorCookies.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigatorCookies
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/cookieEnabled MDN NavigatorCookies.cookieEnabled documentation>
+getCookieEnabled :: (MonadDOM m, IsNavigatorCookies self) => self -> m Bool
+getCookieEnabled self = liftDOM ((((Types.toNavigatorCookies self) ^. js "cookieEnabled") >>= valToBool))
diff --git a/src/JSDOM/Generated/NavigatorGPU.hs b/src/JSDOM/Generated/NavigatorGPU.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigatorGPU.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.NavigatorGPU
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/gpu MDN NavigatorGPU.gpu documentation>
+getGpu :: (MonadDOM m, IsNavigatorGPU self) => self -> m GPU
+getGpu self = liftDOM ((((Types.toNavigatorGPU self) ^. js "gpu") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NavigatorID.hs b/src/JSDOM/Generated/NavigatorID.hs
--- a/src/JSDOM/Generated/NavigatorID.hs
+++ b/src/JSDOM/Generated/NavigatorID.hs
@@ -1,94 +1,52 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.NavigatorID
-       (getAppCodeName, getAppName, getAppVersion, getPlatform,
-        getProduct, getProductSub, getUserAgent, getVendor, getVendorSub,
-        NavigatorID(..), gTypeNavigatorID, IsNavigatorID, toNavigatorID)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.appCodeName Mozilla NavigatorID.appCodeName documentation> 
-getAppCodeName ::
-               (MonadDOM m, IsNavigatorID self, FromJSString result) =>
-                 self -> m result
-getAppCodeName self
-  = liftDOM
-      (((toNavigatorID self) ^. js "appCodeName") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toNavigatorID self) ^. js "appCodeName") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.appName Mozilla NavigatorID.appName documentation> 
-getAppName ::
-           (MonadDOM m, IsNavigatorID self, FromJSString result) =>
-             self -> m result
-getAppName self
-  = liftDOM
-      (((toNavigatorID self) ^. js "appName") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toNavigatorID self) ^. js "appName") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.appVersion Mozilla NavigatorID.appVersion documentation> 
-getAppVersion ::
-              (MonadDOM m, IsNavigatorID self, FromJSString result) =>
-                self -> m result
-getAppVersion self
-  = liftDOM
-      (((toNavigatorID self) ^. js "appVersion") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toNavigatorID self) ^. js "appVersion") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.platform Mozilla NavigatorID.platform documentation> 
-getPlatform ::
-            (MonadDOM m, IsNavigatorID self, FromJSString result) =>
-              self -> m result
-getPlatform self
-  = liftDOM
-      (((toNavigatorID self) ^. js "platform") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toNavigatorID self) ^. js "platform") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.product Mozilla NavigatorID.product documentation> 
-getProduct ::
-           (MonadDOM m, IsNavigatorID self, FromJSString result) =>
-             self -> m result
-getProduct self
-  = liftDOM
-      (((toNavigatorID self) ^. js "product") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toNavigatorID self) ^. js "product") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.productSub Mozilla NavigatorID.productSub documentation> 
-getProductSub ::
-              (MonadDOM m, IsNavigatorID self, FromJSString result) =>
-                self -> m result
-getProductSub self
-  = liftDOM
-      (((toNavigatorID self) ^. js "productSub") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toNavigatorID self) ^. js "productSub") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.userAgent Mozilla NavigatorID.userAgent documentation> 
-getUserAgent ::
-             (MonadDOM m, IsNavigatorID self, FromJSString result) =>
-               self -> m result
-getUserAgent self
-  = liftDOM
-      (((toNavigatorID self) ^. js "userAgent") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toNavigatorID self) ^. js "userAgent") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.vendor Mozilla NavigatorID.vendor documentation> 
-getVendor ::
-          (MonadDOM m, IsNavigatorID self, FromJSString result) =>
-            self -> m result
-getVendor self
-  = liftDOM
-      (((toNavigatorID self) ^. js "vendor") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toNavigatorID self) ^. js "vendor") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.vendorSub Mozilla NavigatorID.vendorSub documentation> 
-getVendorSub ::
-             (MonadDOM m, IsNavigatorID self, FromJSString result) =>
-               self -> m result
-getVendorSub self
-  = liftDOM
-      (((toNavigatorID self) ^. js "vendorSub") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toNavigatorID self) ^. js "vendorSub") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NavigatorLanguage.hs b/src/JSDOM/Generated/NavigatorLanguage.hs
--- a/src/JSDOM/Generated/NavigatorLanguage.hs
+++ b/src/JSDOM/Generated/NavigatorLanguage.hs
@@ -1,39 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.NavigatorLanguage
-       (getLanguage, getLanguages, NavigatorLanguage(..),
-        gTypeNavigatorLanguage, IsNavigatorLanguage, toNavigatorLanguage)
+       (getLanguage, getLanguages, NavigatorLanguage(..), gTypeNavigatorLanguage, IsNavigatorLanguage, toNavigatorLanguage)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage.language Mozilla NavigatorLanguage.language documentation> 
-getLanguage ::
-            (MonadDOM m, IsNavigatorLanguage self, FromJSString result) =>
-              self -> m result
-getLanguage self
-  = liftDOM
-      (((toNavigatorLanguage self) ^. js "language") >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toNavigatorLanguage self) ^. js "language") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage.languages Mozilla NavigatorLanguage.languages documentation> 
-getLanguages ::
-             (MonadDOM m, IsNavigatorLanguage self, FromJSString result) =>
-               self -> m [result]
-getLanguages self
-  = liftDOM
-      (((toNavigatorLanguage self) ^. js "languages") >>=
-         fromJSArrayUnchecked)
+-- | <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 ((((Types.toNavigatorLanguage self) ^. js "languages") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NavigatorLocks.hs b/src/JSDOM/Generated/NavigatorLocks.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigatorLocks.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-locks (webref). Do not edit.
+module JSDOM.Generated.NavigatorLocks
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/locks MDN NavigatorLocks.locks documentation>
+getLocks :: (MonadDOM m, IsNavigatorLocks self) => self -> m LockManager
+getLocks self = liftDOM ((((Types.toNavigatorLocks self) ^. js "locks") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NavigatorLogin.hs b/src/JSDOM/Generated/NavigatorLogin.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigatorLogin.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from login-status (webref). Do not edit.
+module JSDOM.Generated.NavigatorLogin
+       (setStatus, NavigatorLogin(..), gTypeNavigatorLogin)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/NavigatorLogin/setStatus MDN NavigatorLogin.setStatus documentation>
+setStatus :: (MonadDOM m) => NavigatorLogin -> LoginStatus -> m ()
+setStatus self status = liftDOM (void (((self ^. jsf "setStatus" [toJSVal status]) >>= readPromise)))
diff --git a/src/JSDOM/Generated/NavigatorOnLine.hs b/src/JSDOM/Generated/NavigatorOnLine.hs
--- a/src/JSDOM/Generated/NavigatorOnLine.hs
+++ b/src/JSDOM/Generated/NavigatorOnLine.hs
@@ -1,26 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.NavigatorOnLine
-       (getOnLine, NavigatorOnLine(..), gTypeNavigatorOnLine,
-        IsNavigatorOnLine, toNavigatorOnLine)
+       (getOnLine, NavigatorOnLine(..), gTypeNavigatorOnLine, IsNavigatorOnLine, toNavigatorOnLine)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine.onLine Mozilla NavigatorOnLine.onLine documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/onLine MDN NavigatorOnLine.onLine documentation>
 getOnLine :: (MonadDOM m, IsNavigatorOnLine self) => self -> m Bool
-getOnLine self
-  = liftDOM (((toNavigatorOnLine self) ^. js "onLine") >>= valToBool)
+getOnLine self = liftDOM ((((Types.toNavigatorOnLine self) ^. js "onLine") >>= valToBool))
diff --git a/src/JSDOM/Generated/NavigatorPlugins.hs b/src/JSDOM/Generated/NavigatorPlugins.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigatorPlugins.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.NavigatorPlugins
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/javaEnabled MDN NavigatorPlugins.javaEnabled documentation>
+javaEnabled :: (MonadDOM m, IsNavigatorPlugins self) => self -> m Bool
+javaEnabled self = liftDOM ((((Types.toNavigatorPlugins self) ^. jsf "javaEnabled" ()) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/javaEnabled MDN NavigatorPlugins.javaEnabled documentation>
+javaEnabled_ :: (MonadDOM m, IsNavigatorPlugins self) => self -> m ()
+javaEnabled_ self = liftDOM (void ((Types.toNavigatorPlugins self) ^. jsf "javaEnabled" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/plugins MDN NavigatorPlugins.plugins documentation>
+getPlugins :: (MonadDOM m, IsNavigatorPlugins self) => self -> m PluginArray
+getPlugins self = liftDOM ((((Types.toNavigatorPlugins self) ^. js "plugins") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/mimeTypes MDN NavigatorPlugins.mimeTypes documentation>
+getMimeTypes :: (MonadDOM m, IsNavigatorPlugins self) => self -> m MimeTypeArray
+getMimeTypes self = liftDOM ((((Types.toNavigatorPlugins self) ^. js "mimeTypes") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/pdfViewerEnabled MDN NavigatorPlugins.pdfViewerEnabled documentation>
+getPdfViewerEnabled :: (MonadDOM m, IsNavigatorPlugins self) => self -> m Bool
+getPdfViewerEnabled self = liftDOM ((((Types.toNavigatorPlugins self) ^. js "pdfViewerEnabled") >>= valToBool))
diff --git a/src/JSDOM/Generated/NavigatorStorage.hs b/src/JSDOM/Generated/NavigatorStorage.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NavigatorStorage.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from storage (webref). Do not edit.
+module JSDOM.Generated.NavigatorStorage
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Navigator/storage MDN NavigatorStorage.storage documentation>
+getStorage :: (MonadDOM m, IsNavigatorStorage self) => self -> m StorageManager
+getStorage self = liftDOM ((((Types.toNavigatorStorage self) ^. js "storage") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NavigatorUserMediaError.hs b/src/JSDOM/Generated/NavigatorUserMediaError.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/NavigatorUserMediaError.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.NavigatorUserMediaError
-       (getConstraintName, NavigatorUserMediaError(..),
-        gTypeNavigatorUserMediaError)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaError.constraintName Mozilla NavigatorUserMediaError.constraintName documentation> 
-getConstraintName ::
-                  (MonadDOM m, FromJSString result) =>
-                    NavigatorUserMediaError -> m result
-getConstraintName self
-  = liftDOM ((self ^. js "constraintName") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/NavigatorUserMediaErrorCallback.hs b/src/JSDOM/Generated/NavigatorUserMediaErrorCallback.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/NavigatorUserMediaErrorCallback.hs
+++ /dev/null
@@ -1,59 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.NavigatorUserMediaErrorCallback
-       (newNavigatorUserMediaErrorCallback,
-        newNavigatorUserMediaErrorCallbackSync,
-        newNavigatorUserMediaErrorCallbackAsync,
-        NavigatorUserMediaErrorCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaErrorCallback Mozilla NavigatorUserMediaErrorCallback documentation> 
-newNavigatorUserMediaErrorCallback ::
-                                   (MonadDOM m) =>
-                                     (NavigatorUserMediaError -> JSM ()) ->
-                                       m NavigatorUserMediaErrorCallback
-newNavigatorUserMediaErrorCallback callback
-  = liftDOM
-      (NavigatorUserMediaErrorCallback . Callback <$>
-         function
-           (\ _ _ [error] ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaErrorCallback Mozilla NavigatorUserMediaErrorCallback documentation> 
-newNavigatorUserMediaErrorCallbackSync ::
-                                       (MonadDOM m) =>
-                                         (NavigatorUserMediaError -> JSM ()) ->
-                                           m NavigatorUserMediaErrorCallback
-newNavigatorUserMediaErrorCallbackSync callback
-  = liftDOM
-      (NavigatorUserMediaErrorCallback . Callback <$>
-         function
-           (\ _ _ [error] ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaErrorCallback Mozilla NavigatorUserMediaErrorCallback documentation> 
-newNavigatorUserMediaErrorCallbackAsync ::
-                                        (MonadDOM m) =>
-                                          (NavigatorUserMediaError -> JSM ()) ->
-                                            m NavigatorUserMediaErrorCallback
-newNavigatorUserMediaErrorCallbackAsync callback
-  = liftDOM
-      (NavigatorUserMediaErrorCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [error] ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
diff --git a/src/JSDOM/Generated/NavigatorUserMediaSuccessCallback.hs b/src/JSDOM/Generated/NavigatorUserMediaSuccessCallback.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/NavigatorUserMediaSuccessCallback.hs
+++ /dev/null
@@ -1,59 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.NavigatorUserMediaSuccessCallback
-       (newNavigatorUserMediaSuccessCallback,
-        newNavigatorUserMediaSuccessCallbackSync,
-        newNavigatorUserMediaSuccessCallbackAsync,
-        NavigatorUserMediaSuccessCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaSuccessCallback Mozilla NavigatorUserMediaSuccessCallback documentation> 
-newNavigatorUserMediaSuccessCallback ::
-                                     (MonadDOM m) =>
-                                       (MediaStream -> JSM ()) ->
-                                         m NavigatorUserMediaSuccessCallback
-newNavigatorUserMediaSuccessCallback callback
-  = liftDOM
-      (NavigatorUserMediaSuccessCallback . Callback <$>
-         function
-           (\ _ _ [stream] ->
-              fromJSValUnchecked stream >>= \ stream' -> callback stream'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaSuccessCallback Mozilla NavigatorUserMediaSuccessCallback documentation> 
-newNavigatorUserMediaSuccessCallbackSync ::
-                                         (MonadDOM m) =>
-                                           (MediaStream -> JSM ()) ->
-                                             m NavigatorUserMediaSuccessCallback
-newNavigatorUserMediaSuccessCallbackSync callback
-  = liftDOM
-      (NavigatorUserMediaSuccessCallback . Callback <$>
-         function
-           (\ _ _ [stream] ->
-              fromJSValUnchecked stream >>= \ stream' -> callback stream'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaSuccessCallback Mozilla NavigatorUserMediaSuccessCallback documentation> 
-newNavigatorUserMediaSuccessCallbackAsync ::
-                                          (MonadDOM m) =>
-                                            (MediaStream -> JSM ()) ->
-                                              m NavigatorUserMediaSuccessCallback
-newNavigatorUserMediaSuccessCallbackAsync callback
-  = liftDOM
-      (NavigatorUserMediaSuccessCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [stream] ->
-              fromJSValUnchecked stream >>= \ stream' -> callback stream'))
diff --git a/src/JSDOM/Generated/Node.hs b/src/JSDOM/Generated/Node.hs
--- a/src/JSDOM/Generated/Node.hs
+++ b/src/JSDOM/Generated/Node.hs
@@ -1,581 +1,320 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.Node
-       (getRootNode, getRootNode_, hasChildNodes, hasChildNodes_,
-        normalize, cloneNode, cloneNode_, isEqualNode, isEqualNode_,
-        isSameNode, isSameNode_, compareDocumentPosition,
-        compareDocumentPosition_, contains, contains_, lookupPrefix,
-        lookupPrefix_, lookupPrefixUnsafe, lookupPrefixUnchecked,
-        lookupNamespaceURI, lookupNamespaceURI_, lookupNamespaceURIUnsafe,
-        lookupNamespaceURIUnchecked, isDefaultNamespace,
-        isDefaultNamespace_, insertBefore, insertBefore_, appendChild,
-        appendChild_, replaceChild, replaceChild_, 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, 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,
-        Node(..), gTypeNode, IsNode, toNode)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.getRootNode Mozilla Node.getRootNode documentation> 
-getRootNode ::
-            (MonadDOM m, IsNode self) =>
-              self -> Maybe GetRootNodeOptions -> m Node
-getRootNode self options
-  = liftDOM
-      (((toNode self) ^. jsf "getRootNode" [toJSVal options]) >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toNode self) ^. jsf "appendChild" [toJSVal node]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.getRootNode Mozilla Node.getRootNode documentation> 
-getRootNode_ ::
-             (MonadDOM m, IsNode self) =>
-               self -> Maybe GetRootNodeOptions -> m ()
-getRootNode_ self options
-  = liftDOM
-      (void ((toNode self) ^. jsf "getRootNode" [toJSVal options]))
+-- | <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 ((Types.toNode self) ^. jsf "appendChild" [toJSVal node]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.hasChildNodes Mozilla Node.hasChildNodes documentation> 
-hasChildNodes :: (MonadDOM m, IsNode self) => self -> m Bool
-hasChildNodes self
-  = liftDOM (((toNode self) ^. jsf "hasChildNodes" ()) >>= valToBool)
+-- | <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 ((((Types.toNode self) ^. jsf "cloneNode" [P.maybe (P.return jsUndefined) toJSVal subtree]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.hasChildNodes Mozilla Node.hasChildNodes documentation> 
-hasChildNodes_ :: (MonadDOM m, IsNode self) => self -> m ()
-hasChildNodes_ self
-  = liftDOM (void ((toNode self) ^. jsf "hasChildNodes" ()))
+-- | <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 ((Types.toNode self) ^. jsf "cloneNode" [P.maybe (P.return jsUndefined) toJSVal subtree]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize Mozilla Node.normalize documentation> 
-normalize :: (MonadDOM m, IsNode self) => self -> m ()
-normalize self
-  = liftDOM (void ((toNode self) ^. jsf "normalize" ()))
+-- | <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 ((P.round <$> (((Types.toNode self) ^. jsf "compareDocumentPosition" [toJSVal other]) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode Mozilla Node.cloneNode documentation> 
-cloneNode :: (MonadDOM m, IsNode self) => self -> Bool -> m Node
-cloneNode self deep
-  = liftDOM
-      (((toNode self) ^. jsf "cloneNode" [toJSVal deep]) >>=
-         fromJSValUnchecked)
+-- | <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 ((Types.toNode self) ^. jsf "compareDocumentPosition" [toJSVal other]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode Mozilla Node.cloneNode documentation> 
-cloneNode_ :: (MonadDOM m, IsNode self) => self -> Bool -> m ()
-cloneNode_ self deep
-  = liftDOM (void ((toNode self) ^. jsf "cloneNode" [toJSVal deep]))
+-- | <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 ((((Types.toNode self) ^. jsf "contains" [toJSVal other]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isEqualNode Mozilla Node.isEqualNode documentation> 
-isEqualNode ::
-            (MonadDOM m, IsNode self, IsNode other) =>
-              self -> Maybe other -> m Bool
-isEqualNode self other
-  = liftDOM
-      (((toNode self) ^. jsf "isEqualNode" [toJSVal other]) >>=
-         valToBool)
+-- | <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 ((Types.toNode self) ^. jsf "contains" [toJSVal other]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isEqualNode Mozilla Node.isEqualNode documentation> 
-isEqualNode_ ::
-             (MonadDOM m, IsNode self, IsNode other) =>
-               self -> Maybe other -> m ()
-isEqualNode_ self other
-  = liftDOM
-      (void ((toNode self) ^. jsf "isEqualNode" [toJSVal other]))
+-- | <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 ((((Types.toNode self) ^. jsf "getRootNode" [P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isSameNode Mozilla Node.isSameNode documentation> 
-isSameNode ::
-           (MonadDOM m, IsNode self, IsNode other) =>
-             self -> Maybe other -> m Bool
-isSameNode self other
-  = liftDOM
-      (((toNode self) ^. jsf "isSameNode" [toJSVal other]) >>= valToBool)
+-- | <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 ((Types.toNode self) ^. jsf "getRootNode" [P.maybe (P.return jsUndefined) toJSVal options]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isSameNode Mozilla Node.isSameNode documentation> 
-isSameNode_ ::
-            (MonadDOM m, IsNode self, IsNode other) =>
-              self -> Maybe other -> m ()
-isSameNode_ self other
-  = liftDOM
-      (void ((toNode self) ^. jsf "isSameNode" [toJSVal other]))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/hasChildNodes MDN Node.hasChildNodes documentation>
+hasChildNodes :: (MonadDOM m, IsNode self) => self -> m Bool
+hasChildNodes self = liftDOM ((((Types.toNode self) ^. jsf "hasChildNodes" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.compareDocumentPosition Mozilla Node.compareDocumentPosition documentation> 
-compareDocumentPosition ::
-                        (MonadDOM m, IsNode self, IsNode other) => self -> other -> m Word
-compareDocumentPosition self other
-  = liftDOM
-      (round <$>
-         (((toNode self) ^. jsf "compareDocumentPosition" [toJSVal other])
-            >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/hasChildNodes MDN Node.hasChildNodes documentation>
+hasChildNodes_ :: (MonadDOM m, IsNode self) => self -> m ()
+hasChildNodes_ self = liftDOM (void ((Types.toNode self) ^. jsf "hasChildNodes" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.compareDocumentPosition Mozilla Node.compareDocumentPosition documentation> 
-compareDocumentPosition_ ::
-                         (MonadDOM m, IsNode self, IsNode other) => self -> other -> m ()
-compareDocumentPosition_ self other
-  = liftDOM
-      (void
-         ((toNode self) ^. jsf "compareDocumentPosition" [toJSVal other]))
+-- | <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 ((((Types.toNode self) ^. jsf "insertBefore" [toJSVal node, toJSVal child]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.contains Mozilla Node.contains documentation> 
-contains ::
-         (MonadDOM m, IsNode self, IsNode other) =>
-           self -> Maybe other -> m Bool
-contains self other
-  = liftDOM
-      (((toNode self) ^. jsf "contains" [toJSVal other]) >>= valToBool)
+-- | <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 ((Types.toNode self) ^. jsf "insertBefore" [toJSVal node, toJSVal child]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.contains Mozilla Node.contains documentation> 
-contains_ ::
-          (MonadDOM m, IsNode self, IsNode other) =>
-            self -> Maybe other -> m ()
-contains_ self other
-  = liftDOM (void ((toNode self) ^. jsf "contains" [toJSVal other]))
+-- | <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 ((((Types.toNode self) ^. jsf "isDefaultNamespace" [toJSVal namespace]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupPrefix Mozilla Node.lookupPrefix documentation> 
-lookupPrefix ::
-             (MonadDOM m, IsNode self, ToJSString namespaceURI,
-              FromJSString result) =>
-               self -> Maybe namespaceURI -> m (Maybe result)
-lookupPrefix self namespaceURI
-  = liftDOM
-      (((toNode self) ^. jsf "lookupPrefix" [toJSVal namespaceURI]) >>=
-         fromMaybeJSString)
+-- | <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 ((Types.toNode self) ^. jsf "isDefaultNamespace" [toJSVal namespace]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupPrefix Mozilla Node.lookupPrefix documentation> 
-lookupPrefix_ ::
-              (MonadDOM m, IsNode self, ToJSString namespaceURI) =>
-                self -> Maybe namespaceURI -> m ()
-lookupPrefix_ self namespaceURI
-  = liftDOM
-      (void ((toNode self) ^. jsf "lookupPrefix" [toJSVal namespaceURI]))
+-- | <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 ((((Types.toNode self) ^. jsf "isEqualNode" [toJSVal otherNode]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupPrefix Mozilla Node.lookupPrefix documentation> 
-lookupPrefixUnsafe ::
-                   (MonadDOM m, IsNode self, ToJSString namespaceURI, HasCallStack,
-                    FromJSString result) =>
-                     self -> Maybe namespaceURI -> m result
-lookupPrefixUnsafe self namespaceURI
-  = liftDOM
-      ((((toNode self) ^. jsf "lookupPrefix" [toJSVal namespaceURI]) >>=
-          fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <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 ((Types.toNode self) ^. jsf "isEqualNode" [toJSVal otherNode]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupPrefix Mozilla Node.lookupPrefix documentation> 
-lookupPrefixUnchecked ::
-                      (MonadDOM m, IsNode self, ToJSString namespaceURI,
-                       FromJSString result) =>
-                        self -> Maybe namespaceURI -> m result
-lookupPrefixUnchecked self namespaceURI
-  = liftDOM
-      (((toNode self) ^. jsf "lookupPrefix" [toJSVal namespaceURI]) >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toNode self) ^. jsf "isSameNode" [toJSVal otherNode]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupNamespaceURI Mozilla Node.lookupNamespaceURI documentation> 
-lookupNamespaceURI ::
-                   (MonadDOM m, IsNode self, ToJSString prefix,
-                    FromJSString result) =>
-                     self -> Maybe prefix -> m (Maybe result)
-lookupNamespaceURI self prefix
-  = liftDOM
-      (((toNode self) ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>=
-         fromMaybeJSString)
+-- | <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 ((Types.toNode self) ^. jsf "isSameNode" [toJSVal otherNode]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupNamespaceURI Mozilla Node.lookupNamespaceURI documentation> 
-lookupNamespaceURI_ ::
-                    (MonadDOM m, IsNode self, ToJSString prefix) =>
-                      self -> Maybe prefix -> m ()
-lookupNamespaceURI_ self prefix
-  = liftDOM
-      (void ((toNode self) ^. jsf "lookupNamespaceURI" [toJSVal prefix]))
+-- | <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 ((((Types.toNode self) ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupNamespaceURI Mozilla Node.lookupNamespaceURI documentation> 
-lookupNamespaceURIUnsafe ::
-                         (MonadDOM m, IsNode self, ToJSString prefix, HasCallStack,
-                          FromJSString result) =>
-                           self -> Maybe prefix -> m result
-lookupNamespaceURIUnsafe self prefix
-  = liftDOM
-      ((((toNode self) ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>=
-          fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <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 ((Types.toNode self) ^. jsf "lookupNamespaceURI" [toJSVal prefix]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupNamespaceURI Mozilla Node.lookupNamespaceURI documentation> 
-lookupNamespaceURIUnchecked ::
-                            (MonadDOM m, IsNode self, ToJSString prefix,
-                             FromJSString result) =>
-                              self -> Maybe prefix -> m result
-lookupNamespaceURIUnchecked self prefix
-  = liftDOM
-      (((toNode self) ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>=
-         fromJSValUnchecked)
+-- | <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 (((((Types.toNode self) ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>= fromMaybeJSString) >>= 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 ::
-                   (MonadDOM m, IsNode self, ToJSString namespaceURI) =>
-                     self -> Maybe namespaceURI -> m Bool
-isDefaultNamespace self namespaceURI
-  = liftDOM
-      (((toNode self) ^. jsf "isDefaultNamespace" [toJSVal namespaceURI])
-         >>= valToBool)
+-- | <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 ((((Types.toNode self) ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isDefaultNamespace Mozilla Node.isDefaultNamespace documentation> 
-isDefaultNamespace_ ::
-                    (MonadDOM m, IsNode self, ToJSString namespaceURI) =>
-                      self -> Maybe namespaceURI -> m ()
-isDefaultNamespace_ self namespaceURI
-  = liftDOM
-      (void
-         ((toNode self) ^. jsf "isDefaultNamespace" [toJSVal namespaceURI]))
+-- | <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 ((((Types.toNode self) ^. jsf "lookupPrefix" [toJSVal namespace]) >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.insertBefore Mozilla Node.insertBefore documentation> 
-insertBefore ::
-             (MonadDOM m, IsNode self, IsNode node, IsNode child) =>
-               self -> node -> Maybe child -> m Node
-insertBefore self node child
-  = liftDOM
-      (((toNode self) ^. jsf "insertBefore"
-          [toJSVal node, toJSVal child])
-         >>= fromJSValUnchecked)
+-- | <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 ((Types.toNode self) ^. jsf "lookupPrefix" [toJSVal namespace]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.insertBefore Mozilla Node.insertBefore documentation> 
-insertBefore_ ::
-              (MonadDOM m, IsNode self, IsNode node, IsNode child) =>
-                self -> node -> Maybe child -> m ()
-insertBefore_ self node child
-  = liftDOM
-      (void
-         ((toNode self) ^. jsf "insertBefore"
-            [toJSVal node, toJSVal child]))
+-- | <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 (((((Types.toNode self) ^. jsf "lookupPrefix" [toJSVal namespace]) >>= fromMaybeJSString) >>= 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 ::
-            (MonadDOM m, IsNode self, IsNode node) => self -> node -> m Node
-appendChild self node
-  = liftDOM
-      (((toNode self) ^. jsf "appendChild" [toJSVal node]) >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toNode self) ^. jsf "lookupPrefix" [toJSVal namespace]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.appendChild Mozilla Node.appendChild documentation> 
-appendChild_ ::
-             (MonadDOM m, IsNode self, IsNode node) => self -> node -> m ()
-appendChild_ self node
-  = liftDOM
-      (void ((toNode self) ^. jsf "appendChild" [toJSVal node]))
+-- | <https://developer.mozilla.org/docs/Web/API/Node/normalize MDN Node.normalize documentation>
+normalize :: (MonadDOM m, IsNode self) => self -> m ()
+normalize self = liftDOM (void ((Types.toNode self) ^. jsf "normalize" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.replaceChild Mozilla Node.replaceChild documentation> 
-replaceChild ::
-             (MonadDOM m, IsNode self, IsNode node, IsNode child) =>
-               self -> node -> child -> m Node
-replaceChild self node child
-  = liftDOM
-      (((toNode self) ^. jsf "replaceChild"
-          [toJSVal node, toJSVal child])
-         >>= fromJSValUnchecked)
+-- | <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 ((((Types.toNode self) ^. jsf "removeChild" [toJSVal child]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.replaceChild Mozilla Node.replaceChild documentation> 
-replaceChild_ ::
-              (MonadDOM m, IsNode self, IsNode node, IsNode child) =>
-                self -> node -> child -> m ()
-replaceChild_ self node child
-  = liftDOM
-      (void
-         ((toNode self) ^. jsf "replaceChild"
-            [toJSVal node, toJSVal 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 ((Types.toNode self) ^. jsf "removeChild" [toJSVal child]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.removeChild Mozilla Node.removeChild documentation> 
-removeChild ::
-            (MonadDOM m, IsNode self, IsNode child) => self -> child -> m Node
-removeChild self child
-  = liftDOM
-      (((toNode self) ^. jsf "removeChild" [toJSVal child]) >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toNode self) ^. jsf "replaceChild" [toJSVal node, toJSVal child]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.removeChild Mozilla Node.removeChild documentation> 
-removeChild_ ::
-             (MonadDOM m, IsNode self, IsNode child) => self -> child -> m ()
-removeChild_ self child
-  = liftDOM
-      (void ((toNode self) ^. jsf "removeChild" [toJSVal 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
+-- | <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 ((Types.toNode self) ^. jsf "replaceChild" [toJSVal node, toJSVal child]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeType Mozilla Node.nodeType documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Node/nodeType MDN Node.nodeType documentation>
 getNodeType :: (MonadDOM m, IsNode self) => self -> m Word
-getNodeType self
-  = liftDOM
-      (round <$> (((toNode self) ^. js "nodeType") >>= valToNumber))
+getNodeType self = liftDOM ((P.round <$> (((Types.toNode self) ^. js "nodeType") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeName Mozilla Node.nodeName documentation> 
-getNodeName ::
-            (MonadDOM m, IsNode self, FromJSString result) => self -> m result
-getNodeName self
-  = liftDOM (((toNode self) ^. js "nodeName") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toNode self) ^. js "nodeName") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.baseURI Mozilla Node.baseURI documentation> 
-getBaseURI ::
-           (MonadDOM m, IsNode self, FromJSString result) => self -> m result
-getBaseURI self
-  = liftDOM (((toNode self) ^. js "baseURI") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toNode self) ^. js "baseURI") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isConnected Mozilla Node.isConnected documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Node/isConnected MDN Node.isConnected documentation>
 getIsConnected :: (MonadDOM m, IsNode self) => self -> m Bool
-getIsConnected self
-  = liftDOM (((toNode self) ^. js "isConnected") >>= valToBool)
+getIsConnected self = liftDOM ((((Types.toNode self) ^. js "isConnected") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.ownerDocument Mozilla Node.ownerDocument documentation> 
-getOwnerDocument ::
-                 (MonadDOM m, IsNode self) => self -> m (Maybe Document)
-getOwnerDocument self
-  = liftDOM (((toNode self) ^. js "ownerDocument") >>= fromJSVal)
+-- | <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 ((((Types.toNode self) ^. js "ownerDocument") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.ownerDocument Mozilla Node.ownerDocument documentation> 
-getOwnerDocumentUnsafe ::
-                       (MonadDOM m, IsNode self, HasCallStack) => self -> m Document
-getOwnerDocumentUnsafe self
-  = liftDOM
-      ((((toNode self) ^. js "ownerDocument") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((((Types.toNode self) ^. js "ownerDocument") >>= 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> 
-getOwnerDocumentUnchecked ::
-                          (MonadDOM m, IsNode self) => self -> m Document
-getOwnerDocumentUnchecked self
-  = liftDOM
-      (((toNode self) ^. js "ownerDocument") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/ownerDocument MDN Node.ownerDocument documentation>
+getOwnerDocumentUnchecked :: (MonadDOM m, IsNode self) => self -> m Document
+getOwnerDocumentUnchecked self = liftDOM ((((Types.toNode self) ^. js "ownerDocument") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentNode Mozilla Node.parentNode documentation> 
-getParentNode ::
-              (MonadDOM m, IsNode self) => self -> m (Maybe Node)
-getParentNode self
-  = liftDOM (((toNode self) ^. js "parentNode") >>= fromJSVal)
+-- | <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 ((((Types.toNode self) ^. js "parentNode") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentNode Mozilla Node.parentNode documentation> 
-getParentNodeUnsafe ::
-                    (MonadDOM m, IsNode self, HasCallStack) => self -> m Node
-getParentNodeUnsafe self
-  = liftDOM
-      ((((toNode self) ^. js "parentNode") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((((Types.toNode self) ^. js "parentNode") >>= 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> 
-getParentNodeUnchecked ::
-                       (MonadDOM m, IsNode self) => self -> m Node
-getParentNodeUnchecked self
-  = liftDOM
-      (((toNode self) ^. js "parentNode") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/parentNode MDN Node.parentNode documentation>
+getParentNodeUnchecked :: (MonadDOM m, IsNode self) => self -> m Node
+getParentNodeUnchecked self = liftDOM ((((Types.toNode self) ^. js "parentNode") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentElement Mozilla Node.parentElement documentation> 
-getParentElement ::
-                 (MonadDOM m, IsNode self) => self -> m (Maybe Element)
-getParentElement self
-  = liftDOM (((toNode self) ^. js "parentElement") >>= fromJSVal)
+-- | <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 ((((Types.toNode self) ^. js "parentElement") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentElement Mozilla Node.parentElement documentation> 
-getParentElementUnsafe ::
-                       (MonadDOM m, IsNode self, HasCallStack) => self -> m Element
-getParentElementUnsafe self
-  = liftDOM
-      ((((toNode self) ^. js "parentElement") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((((Types.toNode self) ^. js "parentElement") >>= 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> 
-getParentElementUnchecked ::
-                          (MonadDOM m, IsNode self) => self -> m Element
-getParentElementUnchecked self
-  = liftDOM
-      (((toNode self) ^. js "parentElement") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/parentElement MDN Node.parentElement documentation>
+getParentElementUnchecked :: (MonadDOM m, IsNode self) => self -> m Element
+getParentElementUnchecked self = liftDOM ((((Types.toNode self) ^. js "parentElement") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.childNodes Mozilla Node.childNodes documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Node/childNodes MDN Node.childNodes documentation>
 getChildNodes :: (MonadDOM m, IsNode self) => self -> m NodeList
-getChildNodes self
-  = liftDOM
-      (((toNode self) ^. js "childNodes") >>= fromJSValUnchecked)
+getChildNodes self = liftDOM ((((Types.toNode self) ^. js "childNodes") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.firstChild Mozilla Node.firstChild documentation> 
-getFirstChild ::
-              (MonadDOM m, IsNode self) => self -> m (Maybe Node)
-getFirstChild self
-  = liftDOM (((toNode self) ^. js "firstChild") >>= fromJSVal)
+-- | <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 ((((Types.toNode self) ^. js "firstChild") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.firstChild Mozilla Node.firstChild documentation> 
-getFirstChildUnsafe ::
-                    (MonadDOM m, IsNode self, HasCallStack) => self -> m Node
-getFirstChildUnsafe self
-  = liftDOM
-      ((((toNode self) ^. js "firstChild") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((((Types.toNode self) ^. js "firstChild") >>= 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> 
-getFirstChildUnchecked ::
-                       (MonadDOM m, IsNode self) => self -> m Node
-getFirstChildUnchecked self
-  = liftDOM
-      (((toNode self) ^. js "firstChild") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/firstChild MDN Node.firstChild documentation>
+getFirstChildUnchecked :: (MonadDOM m, IsNode self) => self -> m Node
+getFirstChildUnchecked self = liftDOM ((((Types.toNode self) ^. js "firstChild") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lastChild Mozilla Node.lastChild documentation> 
+-- | <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 (((toNode self) ^. js "lastChild") >>= fromJSVal)
+getLastChild self = liftDOM ((((Types.toNode self) ^. js "lastChild") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lastChild Mozilla Node.lastChild documentation> 
-getLastChildUnsafe ::
-                   (MonadDOM m, IsNode self, HasCallStack) => self -> m Node
-getLastChildUnsafe self
-  = liftDOM
-      ((((toNode self) ^. js "lastChild") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((((Types.toNode self) ^. js "lastChild") >>= 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> 
-getLastChildUnchecked ::
-                      (MonadDOM m, IsNode self) => self -> m Node
-getLastChildUnchecked self
-  = liftDOM
-      (((toNode self) ^. js "lastChild") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/lastChild MDN Node.lastChild documentation>
+getLastChildUnchecked :: (MonadDOM m, IsNode self) => self -> m Node
+getLastChildUnchecked self = liftDOM ((((Types.toNode self) ^. js "lastChild") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.previousSibling Mozilla Node.previousSibling documentation> 
-getPreviousSibling ::
-                   (MonadDOM m, IsNode self) => self -> m (Maybe Node)
-getPreviousSibling self
-  = liftDOM (((toNode self) ^. js "previousSibling") >>= fromJSVal)
+-- | <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 ((((Types.toNode self) ^. js "previousSibling") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.previousSibling Mozilla Node.previousSibling documentation> 
-getPreviousSiblingUnsafe ::
-                         (MonadDOM m, IsNode self, HasCallStack) => self -> m Node
-getPreviousSiblingUnsafe self
-  = liftDOM
-      ((((toNode self) ^. js "previousSibling") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((((Types.toNode self) ^. js "previousSibling") >>= 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> 
-getPreviousSiblingUnchecked ::
-                            (MonadDOM m, IsNode self) => self -> m Node
-getPreviousSiblingUnchecked self
-  = liftDOM
-      (((toNode self) ^. js "previousSibling") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/previousSibling MDN Node.previousSibling documentation>
+getPreviousSiblingUnchecked :: (MonadDOM m, IsNode self) => self -> m Node
+getPreviousSiblingUnchecked self = liftDOM ((((Types.toNode self) ^. js "previousSibling") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nextSibling Mozilla Node.nextSibling documentation> 
-getNextSibling ::
-               (MonadDOM m, IsNode self) => self -> m (Maybe Node)
-getNextSibling self
-  = liftDOM (((toNode self) ^. js "nextSibling") >>= fromJSVal)
+-- | <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 ((((Types.toNode self) ^. js "nextSibling") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nextSibling Mozilla Node.nextSibling documentation> 
-getNextSiblingUnsafe ::
-                     (MonadDOM m, IsNode self, HasCallStack) => self -> m Node
-getNextSiblingUnsafe self
-  = liftDOM
-      ((((toNode self) ^. js "nextSibling") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((((Types.toNode self) ^. js "nextSibling") >>= 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> 
-getNextSiblingUnchecked ::
-                        (MonadDOM m, IsNode self) => self -> m Node
-getNextSiblingUnchecked self
-  = liftDOM
-      (((toNode self) ^. js "nextSibling") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Node/nextSibling MDN Node.nextSibling documentation>
+getNextSiblingUnchecked :: (MonadDOM m, IsNode self) => self -> m Node
+getNextSiblingUnchecked self = liftDOM ((((Types.toNode self) ^. js "nextSibling") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
-setNodeValue ::
-             (MonadDOM m, IsNode self, ToJSString val) =>
-               self -> Maybe val -> m ()
-setNodeValue self val
-  = liftDOM ((toNode self) ^. jss "nodeValue" (toJSVal val))
+-- | <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 ((Types.toNode self) ^. jss "nodeValue" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
-getNodeValue ::
-             (MonadDOM m, IsNode self, FromJSString result) =>
-               self -> m (Maybe result)
-getNodeValue self
-  = liftDOM (((toNode self) ^. js "nodeValue") >>= fromMaybeJSString)
+-- | <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 ((((Types.toNode self) ^. js "nodeValue") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
-getNodeValueUnsafe ::
-                   (MonadDOM m, IsNode self, HasCallStack, FromJSString result) =>
-                     self -> m result
-getNodeValueUnsafe self
-  = liftDOM
-      ((((toNode self) ^. js "nodeValue") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((((Types.toNode self) ^. js "nodeValue") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
-getNodeValueUnchecked ::
-                      (MonadDOM m, IsNode self, FromJSString result) => self -> m result
-getNodeValueUnchecked self
-  = liftDOM
-      (((toNode self) ^. js "nodeValue") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toNode self) ^. js "nodeValue") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
-setTextContent ::
-               (MonadDOM m, IsNode self, ToJSString val) =>
-                 self -> Maybe val -> m ()
-setTextContent self val
-  = liftDOM ((toNode self) ^. jss "textContent" (toJSVal val))
+-- | <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 ((Types.toNode self) ^. jss "textContent" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
-getTextContent ::
-               (MonadDOM m, IsNode self, FromJSString result) =>
-                 self -> m (Maybe result)
-getTextContent self
-  = liftDOM
-      (((toNode self) ^. js "textContent") >>= fromMaybeJSString)
+-- | <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 ((((Types.toNode self) ^. js "textContent") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
-getTextContentUnsafe ::
-                     (MonadDOM m, IsNode self, HasCallStack, FromJSString result) =>
-                       self -> m result
-getTextContentUnsafe self
-  = liftDOM
-      ((((toNode self) ^. js "textContent") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((((Types.toNode self) ^. js "textContent") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
-getTextContentUnchecked ::
-                        (MonadDOM m, IsNode self, FromJSString result) => self -> m result
-getTextContentUnchecked self
-  = liftDOM
-      (((toNode self) ^. js "textContent") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toNode self) ^. js "textContent") >>= fromJSValUnchecked))
+
+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/JSDOM/Generated/NodeFilter.hs b/src/JSDOM/Generated/NodeFilter.hs
--- a/src/JSDOM/Generated/NodeFilter.hs
+++ b/src/JSDOM/Generated/NodeFilter.hs
@@ -1,72 +1,30 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter Mozilla NodeFilter documentation> 
 newNodeFilter :: (MonadDOM m) => (Node -> JSM ()) -> m NodeFilter
-newNodeFilter callback
-  = liftDOM
-      (NodeFilter . Callback <$>
-         function
-           (\ _ _ [node] ->
-              fromJSValUnchecked node >>= \ node' -> callback node'))
+newNodeFilter callback = liftDOM (NodeFilter . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (node : _) -> do
+          node' <- fromJSValUnchecked node
+          callback node'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter Mozilla NodeFilter documentation> 
-newNodeFilterSync ::
-                  (MonadDOM m) => (Node -> JSM ()) -> m NodeFilter
-newNodeFilterSync callback
-  = liftDOM
-      (NodeFilter . Callback <$>
-         function
-           (\ _ _ [node] ->
-              fromJSValUnchecked node >>= \ node' -> callback node'))
+newNodeFilterSync :: (MonadDOM m) => (Node -> JSM ()) -> m NodeFilter
+newNodeFilterSync callback = liftDOM (NodeFilter . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (node : _) -> do
+          node' <- fromJSValUnchecked node
+          callback node'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter Mozilla NodeFilter documentation> 
-newNodeFilterAsync ::
-                   (MonadDOM m) => (Node -> JSM ()) -> m NodeFilter
-newNodeFilterAsync callback
-  = liftDOM
-      (NodeFilter . Callback <$>
-         asyncFunction
-           (\ _ _ [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 -> JSM ()) -> m NodeFilter
+newNodeFilterAsync callback = liftDOM (NodeFilter . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (node : _) -> do
+          node' <- fromJSValUnchecked node
+          callback node'))
diff --git a/src/JSDOM/Generated/NodeIterator.hs b/src/JSDOM/Generated/NodeIterator.hs
--- a/src/JSDOM/Generated/NodeIterator.hs
+++ b/src/JSDOM/Generated/NodeIterator.hs
@@ -1,91 +1,68 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.NodeIterator
-       (nextNode, nextNode_, nextNodeUnsafe, nextNodeUnchecked,
-        previousNode, previousNode_, previousNodeUnsafe,
-        previousNodeUnchecked, detach, getRoot, getReferenceNode,
-        getPointerBeforeReferenceNode, getWhatToShow, NodeIterator(..),
-        gTypeNodeIterator)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.nextNode Mozilla NodeIterator.nextNode documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/detach MDN NodeIterator.detach documentation>
+detach :: (MonadDOM m) => NodeIterator -> m ()
+detach self = liftDOM (void (self ^. jsf "detach" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/nextNode MDN NodeIterator.nextNode documentation>
 nextNode :: (MonadDOM m) => NodeIterator -> m (Maybe Node)
-nextNode self = liftDOM ((self ^. jsf "nextNode" ()) >>= fromJSVal)
+nextNode self = liftDOM (((self ^. jsf "nextNode" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.nextNode Mozilla NodeIterator.nextNode documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/nextNode MDN NodeIterator.nextNode documentation>
 nextNode_ :: (MonadDOM m) => NodeIterator -> m ()
 nextNode_ self = liftDOM (void (self ^. jsf "nextNode" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.nextNode Mozilla NodeIterator.nextNode documentation> 
-nextNodeUnsafe ::
-               (MonadDOM m, HasCallStack) => NodeIterator -> m Node
-nextNodeUnsafe self
-  = liftDOM
-      (((self ^. jsf "nextNode" ()) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/nextNode MDN NodeIterator.nextNode documentation>
+nextNodeUnsafe :: (MonadDOM m, HasCallStack) => NodeIterator -> m Node
+nextNodeUnsafe self = liftDOM ((((self ^. jsf "nextNode" ()) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.nextNode Mozilla NodeIterator.nextNode documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/nextNode MDN NodeIterator.nextNode documentation>
 nextNodeUnchecked :: (MonadDOM m) => NodeIterator -> m Node
-nextNodeUnchecked self
-  = liftDOM ((self ^. jsf "nextNode" ()) >>= fromJSValUnchecked)
+nextNodeUnchecked self = liftDOM (((self ^. jsf "nextNode" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.previousNode Mozilla NodeIterator.previousNode documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/previousNode MDN NodeIterator.previousNode documentation>
 previousNode :: (MonadDOM m) => NodeIterator -> m (Maybe Node)
-previousNode self
-  = liftDOM ((self ^. jsf "previousNode" ()) >>= fromJSVal)
+previousNode self = liftDOM (((self ^. jsf "previousNode" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.previousNode Mozilla NodeIterator.previousNode documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/previousNode MDN NodeIterator.previousNode documentation>
 previousNode_ :: (MonadDOM m) => NodeIterator -> m ()
 previousNode_ self = liftDOM (void (self ^. jsf "previousNode" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.previousNode Mozilla NodeIterator.previousNode documentation> 
-previousNodeUnsafe ::
-                   (MonadDOM m, HasCallStack) => NodeIterator -> m Node
-previousNodeUnsafe self
-  = liftDOM
-      (((self ^. jsf "previousNode" ()) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/previousNode MDN NodeIterator.previousNode documentation>
+previousNodeUnsafe :: (MonadDOM m, HasCallStack) => NodeIterator -> m Node
+previousNodeUnsafe self = liftDOM ((((self ^. jsf "previousNode" ()) >>= 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> 
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/previousNode MDN NodeIterator.previousNode documentation>
 previousNodeUnchecked :: (MonadDOM m) => NodeIterator -> m Node
-previousNodeUnchecked self
-  = liftDOM ((self ^. jsf "previousNode" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.detach Mozilla NodeIterator.detach documentation> 
-detach :: (MonadDOM m) => NodeIterator -> m ()
-detach self = liftDOM (void (self ^. jsf "detach" ()))
+previousNodeUnchecked self = liftDOM (((self ^. jsf "previousNode" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.root Mozilla NodeIterator.root documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/root MDN NodeIterator.root documentation>
 getRoot :: (MonadDOM m) => NodeIterator -> m Node
-getRoot self = liftDOM ((self ^. js "root") >>= fromJSValUnchecked)
+getRoot self = liftDOM (((self ^. js "root") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.referenceNode Mozilla NodeIterator.referenceNode documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/referenceNode MDN NodeIterator.referenceNode documentation>
 getReferenceNode :: (MonadDOM m) => NodeIterator -> m Node
-getReferenceNode self
-  = liftDOM ((self ^. js "referenceNode") >>= fromJSValUnchecked)
+getReferenceNode self = liftDOM (((self ^. js "referenceNode") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.pointerBeforeReferenceNode Mozilla NodeIterator.pointerBeforeReferenceNode documentation> 
-getPointerBeforeReferenceNode ::
-                              (MonadDOM m) => NodeIterator -> m Bool
-getPointerBeforeReferenceNode self
-  = liftDOM ((self ^. js "pointerBeforeReferenceNode") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/pointerBeforeReferenceNode MDN NodeIterator.pointerBeforeReferenceNode documentation>
+getPointerBeforeReferenceNode :: (MonadDOM m) => NodeIterator -> m Bool
+getPointerBeforeReferenceNode self = liftDOM (((self ^. js "pointerBeforeReferenceNode") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.whatToShow Mozilla NodeIterator.whatToShow documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/NodeIterator/whatToShow MDN NodeIterator.whatToShow documentation>
 getWhatToShow :: (MonadDOM m) => NodeIterator -> m Word
-getWhatToShow self
-  = liftDOM (round <$> ((self ^. js "whatToShow") >>= valToNumber))
+getWhatToShow self = liftDOM ((P.round <$> ((self ^. js "whatToShow") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/NodeList.hs b/src/JSDOM/Generated/NodeList.hs
--- a/src/JSDOM/Generated/NodeList.hs
+++ b/src/JSDOM/Generated/NodeList.hs
@@ -1,56 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.NodeList
-       (item, item_, itemUnsafe, itemUnchecked, getLength, NodeList(..),
-        gTypeNodeList, IsNodeList, toNodeList)
+       (item, item_, itemUnsafe, itemUnchecked, getLength, NodeList(..), gTypeNodeList, IsNodeList, toNodeList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.item Mozilla NodeList.item documentation> 
-item ::
-     (MonadDOM m, IsNodeList self) => self -> Word -> m (Maybe Node)
-item self index
-  = liftDOM
-      (((toNodeList self) ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+-- | <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 ((((Types.toNodeList self) ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.item Mozilla NodeList.item documentation> 
+-- | <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 ((toNodeList self) ^. jsf "item" [toJSVal index]))
+item_ self index = liftDOM (void ((Types.toNodeList self) ^. jsf "item" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.item Mozilla NodeList.item documentation> 
-itemUnsafe ::
-           (MonadDOM m, IsNodeList self, HasCallStack) =>
-             self -> Word -> m Node
-itemUnsafe self index
-  = liftDOM
-      ((((toNodeList self) ^. jsf "item" [toJSVal index]) >>= fromJSVal)
-         >>= 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 (((((Types.toNodeList self) ^. jsf "item" [toJSVal 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 ::
-              (MonadDOM m, IsNodeList self) => self -> Word -> m Node
-itemUnchecked self index
-  = liftDOM
-      (((toNodeList self) ^. jsf "item" [toJSVal index]) >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toNodeList self) ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.length Mozilla NodeList.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/NodeList/length MDN NodeList.length documentation>
 getLength :: (MonadDOM m, IsNodeList self) => self -> m Word
-getLength self
-  = liftDOM
-      (round <$> (((toNodeList self) ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> (((Types.toNodeList self) ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/NonDocumentTypeChildNode.hs b/src/JSDOM/Generated/NonDocumentTypeChildNode.hs
--- a/src/JSDOM/Generated/NonDocumentTypeChildNode.hs
+++ b/src/JSDOM/Generated/NonDocumentTypeChildNode.hs
@@ -1,80 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.NonDocumentTypeChildNode
-       (getPreviousElementSibling, getPreviousElementSiblingUnsafe,
-        getPreviousElementSiblingUnchecked, getNextElementSibling,
-        getNextElementSiblingUnsafe, getNextElementSiblingUnchecked,
-        NonDocumentTypeChildNode(..), gTypeNonDocumentTypeChildNode,
-        IsNonDocumentTypeChildNode, toNonDocumentTypeChildNode)
+       (getPreviousElementSibling, getPreviousElementSiblingUnsafe, getPreviousElementSiblingUnchecked, getNextElementSibling, getNextElementSiblingUnsafe, getNextElementSiblingUnchecked, NonDocumentTypeChildNode(..), gTypeNonDocumentTypeChildNode, IsNonDocumentTypeChildNode, toNonDocumentTypeChildNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode.previousElementSibling Mozilla NonDocumentTypeChildNode.previousElementSibling documentation> 
-getPreviousElementSibling ::
-                          (MonadDOM m, IsNonDocumentTypeChildNode self) =>
-                            self -> m (Maybe Element)
-getPreviousElementSibling self
-  = liftDOM
-      (((toNonDocumentTypeChildNode self) ^. js "previousElementSibling")
-         >>= fromJSVal)
+-- | <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 ((((Types.toNonDocumentTypeChildNode self) ^. js "previousElementSibling") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode.previousElementSibling Mozilla NonDocumentTypeChildNode.previousElementSibling documentation> 
-getPreviousElementSiblingUnsafe ::
-                                (MonadDOM m, IsNonDocumentTypeChildNode self, HasCallStack) =>
-                                  self -> m Element
-getPreviousElementSiblingUnsafe self
-  = liftDOM
-      ((((toNonDocumentTypeChildNode self) ^.
-           js "previousElementSibling")
-          >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((((Types.toNonDocumentTypeChildNode self) ^. js "previousElementSibling") >>= 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> 
-getPreviousElementSiblingUnchecked ::
-                                   (MonadDOM m, IsNonDocumentTypeChildNode self) =>
-                                     self -> m Element
-getPreviousElementSiblingUnchecked self
-  = liftDOM
-      (((toNonDocumentTypeChildNode self) ^. js "previousElementSibling")
-         >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/previousElementSibling MDN NonDocumentTypeChildNode.previousElementSibling documentation>
+getPreviousElementSiblingUnchecked :: (MonadDOM m, IsNonDocumentTypeChildNode self) => self -> m Element
+getPreviousElementSiblingUnchecked self = liftDOM ((((Types.toNonDocumentTypeChildNode self) ^. js "previousElementSibling") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode.nextElementSibling Mozilla NonDocumentTypeChildNode.nextElementSibling documentation> 
-getNextElementSibling ::
-                      (MonadDOM m, IsNonDocumentTypeChildNode self) =>
-                        self -> m (Maybe Element)
-getNextElementSibling self
-  = liftDOM
-      (((toNonDocumentTypeChildNode self) ^. js "nextElementSibling") >>=
-         fromJSVal)
+-- | <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 ((((Types.toNonDocumentTypeChildNode self) ^. js "nextElementSibling") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode.nextElementSibling Mozilla NonDocumentTypeChildNode.nextElementSibling documentation> 
-getNextElementSiblingUnsafe ::
-                            (MonadDOM m, IsNonDocumentTypeChildNode self, HasCallStack) =>
-                              self -> m Element
-getNextElementSiblingUnsafe self
-  = liftDOM
-      ((((toNonDocumentTypeChildNode self) ^. js "nextElementSibling")
-          >>= fromJSVal)
-         >>= 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 (((((Types.toNonDocumentTypeChildNode self) ^. js "nextElementSibling") >>= 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 ::
-                               (MonadDOM m, IsNonDocumentTypeChildNode self) => self -> m Element
-getNextElementSiblingUnchecked self
-  = liftDOM
-      (((toNonDocumentTypeChildNode self) ^. js "nextElementSibling") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/CharacterData/nextElementSibling MDN NonDocumentTypeChildNode.nextElementSibling documentation>
+getNextElementSiblingUnchecked :: (MonadDOM m, IsNonDocumentTypeChildNode self) => self -> m Element
+getNextElementSiblingUnchecked self = liftDOM ((((Types.toNonDocumentTypeChildNode self) ^. js "nextElementSibling") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NonElementParentNode.hs b/src/JSDOM/Generated/NonElementParentNode.hs
--- a/src/JSDOM/Generated/NonElementParentNode.hs
+++ b/src/JSDOM/Generated/NonElementParentNode.hs
@@ -1,65 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.NonElementParentNode
-       (getElementById, getElementById_, getElementByIdUnsafe,
-        getElementByIdUnchecked, NonElementParentNode(..),
-        gTypeNonElementParentNode, IsNonElementParentNode,
-        toNonElementParentNode)
+       (getElementById, getElementById_, getElementByIdUnsafe, getElementByIdUnchecked, NonElementParentNode(..), gTypeNonElementParentNode, IsNonElementParentNode, toNonElementParentNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NonElementParentNode.getElementById Mozilla NonElementParentNode.getElementById documentation> 
-getElementById ::
-               (MonadDOM m, IsNonElementParentNode self, ToJSString elementId) =>
-                 self -> elementId -> m (Maybe Element)
-getElementById self elementId
-  = liftDOM
-      (((toNonElementParentNode self) ^. jsf "getElementById"
-          [toJSVal elementId])
-         >>= fromJSVal)
+-- | <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 ((((Types.toNonElementParentNode self) ^. jsf "getElementById" [toJSVal elementId]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NonElementParentNode.getElementById Mozilla NonElementParentNode.getElementById documentation> 
-getElementById_ ::
-                (MonadDOM m, IsNonElementParentNode self, ToJSString elementId) =>
-                  self -> elementId -> m ()
-getElementById_ self elementId
-  = liftDOM
-      (void
-         ((toNonElementParentNode self) ^. jsf "getElementById"
-            [toJSVal 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 ((Types.toNonElementParentNode self) ^. jsf "getElementById" [toJSVal elementId]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NonElementParentNode.getElementById Mozilla NonElementParentNode.getElementById documentation> 
-getElementByIdUnsafe ::
-                     (MonadDOM m, IsNonElementParentNode self, ToJSString elementId,
-                      HasCallStack) =>
-                       self -> elementId -> m Element
-getElementByIdUnsafe self elementId
-  = liftDOM
-      ((((toNonElementParentNode self) ^. jsf "getElementById"
-           [toJSVal elementId])
-          >>= fromJSVal)
-         >>= 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 (((((Types.toNonElementParentNode self) ^. jsf "getElementById" [toJSVal 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 ::
-                        (MonadDOM m, IsNonElementParentNode self, ToJSString elementId) =>
-                          self -> elementId -> m Element
-getElementByIdUnchecked self elementId
-  = liftDOM
-      (((toNonElementParentNode self) ^. jsf "getElementById"
-          [toJSVal elementId])
-         >>= fromJSValUnchecked)
+-- | <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 ((((Types.toNonElementParentNode self) ^. jsf "getElementById" [toJSVal elementId]) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Notification.hs b/src/JSDOM/Generated/Notification.hs
--- a/src/JSDOM/Generated/Notification.hs
+++ b/src/JSDOM/Generated/Notification.hs
@@ -1,85 +1,108 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from notifications (webref). Do not edit.
 module JSDOM.Generated.Notification
-       (newNotification, show, close, requestPermission, getPermission,
-        click, error, cLoseEvent, display, showEvent, setTag, getTag,
-        Notification(..), gTypeNotification)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification Mozilla Notification documentation> 
-newNotification ::
-                (MonadDOM m, ToJSString title) =>
-                  title -> Maybe NotificationOptions -> m Notification
-newNotification title options
-  = liftDOM
-      (Notification <$>
-         new (jsg "Notification") [toJSVal title, toJSVal options])
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.show Mozilla Notification.show documentation> 
-show :: (MonadDOM m) => Notification -> m ()
-show self = liftDOM (void (self ^. jsf "show" ()))
+-- | <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 (((new (jsg "Notification") [toJSVal title, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.close Mozilla Notification.close documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/close MDN Notification.close documentation>
 close :: (MonadDOM m) => Notification -> m ()
 close self = liftDOM (void (self ^. jsf "close" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.requestPermission Mozilla Notification.requestPermission documentation> 
-requestPermission ::
-                  (MonadDOM m, ToJSString callback) =>
-                    Maybe (NotificationPermissionCallback callback) -> m ()
-requestPermission callback
-  = liftDOM
-      (void
-         ((jsg "Notification") ^. jsf "requestPermission"
-            [toJSVal callback]))
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/requestPermission_static MDN Notification.requestPermission documentation>
+requestPermission :: (MonadDOM m) => Maybe NotificationPermissionCallback -> m NotificationPermission
+requestPermission deprecatedCallback = liftDOM ((((((jsg "Notification") ^. jsf "requestPermission" [P.maybe (P.return jsUndefined) toJSVal deprecatedCallback]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.permission Mozilla Notification.permission documentation> 
-getPermission ::
-              (MonadDOM m, FromJSString result) => Notification -> m result
-getPermission self
-  = liftDOM ((self ^. js "permission") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/requestPermission_static MDN Notification.requestPermission documentation>
+requestPermission_ :: (MonadDOM m) => Maybe NotificationPermissionCallback -> m ()
+requestPermission_ deprecatedCallback = liftDOM (void ((((jsg "Notification") ^. jsf "requestPermission" [P.maybe (P.return jsUndefined) toJSVal deprecatedCallback]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onclick Mozilla Notification.onclick documentation> 
-click :: EventName Notification MouseEvent
-click = unsafeEventName (toJSString "click")
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/permission_static MDN Notification.permission documentation>
+getPermissionStatic :: (MonadDOM m) => m NotificationPermission
+getPermissionStatic = liftDOM ((((jsg "Notification") ^. js "permission") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onerror Mozilla Notification.onerror documentation> 
-error :: EventName Notification UIEvent
-error = unsafeEventNameAsync (toJSString "error")
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/maxActions_static MDN Notification.maxActions documentation>
+getMaxActionsStatic :: (MonadDOM m) => m Word
+getMaxActionsStatic = liftDOM ((P.round <$> (((jsg "Notification") ^. js "maxActions") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onclose Mozilla Notification.onclose documentation> 
-cLoseEvent :: EventName Notification CloseEvent
-cLoseEvent = unsafeEventNameAsync (toJSString "close")
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/title MDN Notification.title documentation>
+getTitle :: (MonadDOM m, FromJSString result) => Notification -> m result
+getTitle self = liftDOM (((self ^. js "title") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.ondisplay Mozilla Notification.ondisplay documentation> 
-display :: EventName Notification ondisplay
-display = unsafeEventName (toJSString "display")
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/dir MDN Notification.dir documentation>
+getDir :: (MonadDOM m) => Notification -> m NotificationDirection
+getDir self = liftDOM (((self ^. js "dir") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onshow Mozilla Notification.onshow documentation> 
-showEvent :: EventName Notification MouseEvent
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/lang MDN Notification.lang documentation>
+getLang :: (MonadDOM m, FromJSString result) => Notification -> m result
+getLang self = liftDOM (((self ^. js "lang") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/body MDN Notification.body documentation>
+getBody :: (MonadDOM m, FromJSString result) => Notification -> m result
+getBody self = liftDOM (((self ^. js "body") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/navigate MDN Notification.navigate documentation>
+getNavigate :: (MonadDOM m, FromJSString result) => Notification -> m result
+getNavigate self = liftDOM (((self ^. js "navigate") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/tag MDN Notification.tag documentation>
+getTag :: (MonadDOM m, FromJSString result) => Notification -> m result
+getTag self = liftDOM (((self ^. js "tag") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/icon MDN Notification.icon documentation>
+getIcon :: (MonadDOM m, FromJSString result) => Notification -> m result
+getIcon self = liftDOM (((self ^. js "icon") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/silent MDN Notification.silent documentation>
+getSilent :: (MonadDOM m) => Notification -> m (Maybe Bool)
+getSilent self = liftDOM (((self ^. js "silent") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/silent MDN Notification.silent documentation>
+getSilentUnsafe :: (MonadDOM m, HasCallStack) => Notification -> m Bool
+getSilentUnsafe self = liftDOM ((((self ^. js "silent") >>= 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 (((self ^. js "silent") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/requireInteraction MDN Notification.requireInteraction documentation>
+getRequireInteraction :: (MonadDOM m) => Notification -> m Bool
+getRequireInteraction self = liftDOM (((self ^. js "requireInteraction") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/data MDN Notification.data documentation>
+getData :: (MonadDOM m) => Notification -> m JSVal
+getData self = liftDOM (self ^. js "data")
+
+-- | <https://developer.mozilla.org/docs/Web/API/Notification/actions MDN Notification.actions documentation>
+getActions :: (MonadDOM m) => Notification -> m [NotificationAction]
+getActions self = liftDOM (((self ^. js "actions") >>= 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")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.tag Mozilla Notification.tag documentation> 
-setTag ::
-       (MonadDOM m, ToJSString val) => Notification -> val -> m ()
-setTag self val = liftDOM (self ^. jss "tag" (toJSVal val))
+-- | <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 ::
-       (MonadDOM m, FromJSString result) => Notification -> m result
-getTag self = liftDOM ((self ^. js "tag") >>= fromJSValUnchecked)
+-- | <https://notifications.spec.whatwg.org/#dom-notification-onclose close event>
+cLoseEvent :: EventName Notification Event
+cLoseEvent = unsafeEventNameAsync (toJSString "close")
diff --git a/src/JSDOM/Generated/NotificationAction.hs b/src/JSDOM/Generated/NotificationAction.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NotificationAction.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from notifications (webref). Do not edit.
+module JSDOM.Generated.NotificationAction
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://notifications.spec.whatwg.org/#dictdef-notificationaction NotificationAction specification>
+newNotificationAction :: (MonadDOM m, ToJSString action, ToJSString title) => action -> title -> m NotificationAction
+newNotificationAction action title = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "action" (toJSVal action)) P.>> (o ^. jss "title" (toJSVal title)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-action NotificationAction.action specification>
+setAction :: (MonadDOM m, ToJSString val) => NotificationAction -> val -> m ()
+setAction self val = liftDOM (void (self ^. jss "action" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-action NotificationAction.action specification>
+getAction :: (MonadDOM m, FromJSString result) => NotificationAction -> m result
+getAction self = liftDOM (((self ^. js "action") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-title NotificationAction.title specification>
+setTitle :: (MonadDOM m, ToJSString val) => NotificationAction -> val -> m ()
+setTitle self val = liftDOM (void (self ^. jss "title" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-title NotificationAction.title specification>
+getTitle :: (MonadDOM m, FromJSString result) => NotificationAction -> m result
+getTitle self = liftDOM (((self ^. js "title") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-navigate NotificationAction.navigate specification>
+setNavigate :: (MonadDOM m, ToJSString val) => NotificationAction -> val -> m ()
+setNavigate self val = liftDOM (void (self ^. jss "navigate" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-navigate NotificationAction.navigate specification>
+getNavigate :: (MonadDOM m, FromJSString result) => NotificationAction -> m (Maybe result)
+getNavigate self = liftDOM (((self ^. js "navigate") >>= fromMaybeJSString))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-navigate NotificationAction.navigate specification>
+getNavigateUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationAction -> m result
+getNavigateUnsafe self = liftDOM ((((self ^. js "navigate") >>= fromMaybeJSString) >>= 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 (((self ^. js "navigate") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-icon NotificationAction.icon specification>
+setIcon :: (MonadDOM m, ToJSString val) => NotificationAction -> val -> m ()
+setIcon self val = liftDOM (void (self ^. jss "icon" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-icon NotificationAction.icon specification>
+getIcon :: (MonadDOM m, FromJSString result) => NotificationAction -> m (Maybe result)
+getIcon self = liftDOM (((self ^. js "icon") >>= fromMaybeJSString))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationaction-icon NotificationAction.icon specification>
+getIconUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationAction -> m result
+getIconUnsafe self = liftDOM ((((self ^. js "icon") >>= fromMaybeJSString) >>= 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 (((self ^. js "icon") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NotificationEvent.hs b/src/JSDOM/Generated/NotificationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NotificationEvent.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from notifications (webref). Do not edit.
+module JSDOM.Generated.NotificationEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "NotificationEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NotificationEvent/notification MDN NotificationEvent.notification documentation>
+getNotification :: (MonadDOM m) => NotificationEvent -> m Notification
+getNotification self = liftDOM (((self ^. js "notification") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/NotificationEvent/action MDN NotificationEvent.action documentation>
+getAction :: (MonadDOM m, FromJSString result) => NotificationEvent -> m result
+getAction self = liftDOM (((self ^. js "action") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NotificationEventInit.hs b/src/JSDOM/Generated/NotificationEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NotificationEventInit.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from notifications (webref). Do not edit.
+module JSDOM.Generated.NotificationEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://notifications.spec.whatwg.org/#dictdef-notificationeventinit NotificationEventInit specification>
+newNotificationEventInit :: (MonadDOM m) => Notification -> m NotificationEventInit
+newNotificationEventInit notification = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "notification" (toJSVal notification)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationeventinit-notification NotificationEventInit.notification specification>
+setNotification :: (MonadDOM m) => NotificationEventInit -> Notification -> m ()
+setNotification self val = liftDOM (void (self ^. jss "notification" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationeventinit-notification NotificationEventInit.notification specification>
+getNotification :: (MonadDOM m) => NotificationEventInit -> m Notification
+getNotification self = liftDOM (((self ^. js "notification") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationeventinit-action NotificationEventInit.action specification>
+setAction :: (MonadDOM m, ToJSString val) => NotificationEventInit -> val -> m ()
+setAction self val = liftDOM (void (self ^. jss "action" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationeventinit-action NotificationEventInit.action specification>
+getAction :: (MonadDOM m, FromJSString result) => NotificationEventInit -> m (Maybe result)
+getAction self = liftDOM (((self ^. js "action") >>= fromMaybeJSString))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationeventinit-action NotificationEventInit.action specification>
+getActionUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationEventInit -> m result
+getActionUnsafe self = liftDOM ((((self ^. js "action") >>= fromMaybeJSString) >>= 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 (((self ^. js "action") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NotificationOptions.hs b/src/JSDOM/Generated/NotificationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/NotificationOptions.hs
@@ -0,0 +1,236 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from notifications (webref). Do not edit.
+module JSDOM.Generated.NotificationOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://notifications.spec.whatwg.org/#dictdef-notificationoptions NotificationOptions specification>
+newNotificationOptions :: (MonadDOM m) => m NotificationOptions
+newNotificationOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-dir NotificationOptions.dir specification>
+setDir :: (MonadDOM m) => NotificationOptions -> NotificationDirection -> m ()
+setDir self val = liftDOM (void (self ^. jss "dir" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-dir NotificationOptions.dir specification>
+getDir :: (MonadDOM m) => NotificationOptions -> m (Maybe NotificationDirection)
+getDir self = liftDOM (((self ^. js "dir") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-dir NotificationOptions.dir specification>
+getDirUnsafe :: (MonadDOM m, HasCallStack) => NotificationOptions -> m NotificationDirection
+getDirUnsafe self = liftDOM ((((self ^. js "dir") >>= 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 (((self ^. js "dir") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-lang NotificationOptions.lang specification>
+setLang :: (MonadDOM m, ToJSString val) => NotificationOptions -> val -> m ()
+setLang self val = liftDOM (void (self ^. jss "lang" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-lang NotificationOptions.lang specification>
+getLang :: (MonadDOM m, FromJSString result) => NotificationOptions -> m (Maybe result)
+getLang self = liftDOM (((self ^. js "lang") >>= fromMaybeJSString))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-lang NotificationOptions.lang specification>
+getLangUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationOptions -> m result
+getLangUnsafe self = liftDOM ((((self ^. js "lang") >>= fromMaybeJSString) >>= 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 (((self ^. js "lang") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-body NotificationOptions.body specification>
+setBody :: (MonadDOM m, ToJSString val) => NotificationOptions -> val -> m ()
+setBody self val = liftDOM (void (self ^. jss "body" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-body NotificationOptions.body specification>
+getBody :: (MonadDOM m, FromJSString result) => NotificationOptions -> m (Maybe result)
+getBody self = liftDOM (((self ^. js "body") >>= fromMaybeJSString))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-body NotificationOptions.body specification>
+getBodyUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationOptions -> m result
+getBodyUnsafe self = liftDOM ((((self ^. js "body") >>= fromMaybeJSString) >>= 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 (((self ^. js "body") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-navigate NotificationOptions.navigate specification>
+setNavigate :: (MonadDOM m, ToJSString val) => NotificationOptions -> val -> m ()
+setNavigate self val = liftDOM (void (self ^. jss "navigate" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-navigate NotificationOptions.navigate specification>
+getNavigate :: (MonadDOM m, FromJSString result) => NotificationOptions -> m (Maybe result)
+getNavigate self = liftDOM (((self ^. js "navigate") >>= fromMaybeJSString))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-navigate NotificationOptions.navigate specification>
+getNavigateUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationOptions -> m result
+getNavigateUnsafe self = liftDOM ((((self ^. js "navigate") >>= fromMaybeJSString) >>= 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 (((self ^. js "navigate") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-tag NotificationOptions.tag specification>
+setTag :: (MonadDOM m, ToJSString val) => NotificationOptions -> val -> m ()
+setTag self val = liftDOM (void (self ^. jss "tag" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-tag NotificationOptions.tag specification>
+getTag :: (MonadDOM m, FromJSString result) => NotificationOptions -> m (Maybe result)
+getTag self = liftDOM (((self ^. js "tag") >>= fromMaybeJSString))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-tag NotificationOptions.tag specification>
+getTagUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationOptions -> m result
+getTagUnsafe self = liftDOM ((((self ^. js "tag") >>= fromMaybeJSString) >>= 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 (((self ^. js "tag") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-image NotificationOptions.image specification>
+setImage :: (MonadDOM m, ToJSString val) => NotificationOptions -> val -> m ()
+setImage self val = liftDOM (void (self ^. jss "image" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-image NotificationOptions.image specification>
+getImage :: (MonadDOM m, FromJSString result) => NotificationOptions -> m (Maybe result)
+getImage self = liftDOM (((self ^. js "image") >>= fromMaybeJSString))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-image NotificationOptions.image specification>
+getImageUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationOptions -> m result
+getImageUnsafe self = liftDOM ((((self ^. js "image") >>= fromMaybeJSString) >>= 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 (((self ^. js "image") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-icon NotificationOptions.icon specification>
+setIcon :: (MonadDOM m, ToJSString val) => NotificationOptions -> val -> m ()
+setIcon self val = liftDOM (void (self ^. jss "icon" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-icon NotificationOptions.icon specification>
+getIcon :: (MonadDOM m, FromJSString result) => NotificationOptions -> m (Maybe result)
+getIcon self = liftDOM (((self ^. js "icon") >>= fromMaybeJSString))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-icon NotificationOptions.icon specification>
+getIconUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationOptions -> m result
+getIconUnsafe self = liftDOM ((((self ^. js "icon") >>= fromMaybeJSString) >>= 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 (((self ^. js "icon") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-badge NotificationOptions.badge specification>
+setBadge :: (MonadDOM m, ToJSString val) => NotificationOptions -> val -> m ()
+setBadge self val = liftDOM (void (self ^. jss "badge" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-badge NotificationOptions.badge specification>
+getBadge :: (MonadDOM m, FromJSString result) => NotificationOptions -> m (Maybe result)
+getBadge self = liftDOM (((self ^. js "badge") >>= fromMaybeJSString))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-badge NotificationOptions.badge specification>
+getBadgeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => NotificationOptions -> m result
+getBadgeUnsafe self = liftDOM ((((self ^. js "badge") >>= fromMaybeJSString) >>= 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 (((self ^. js "badge") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-timestamp NotificationOptions.timestamp specification>
+setTimestamp :: (MonadDOM m) => NotificationOptions -> Word53 -> m ()
+setTimestamp self val = liftDOM (void (self ^. jss "timestamp" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-timestamp NotificationOptions.timestamp specification>
+getTimestamp :: (MonadDOM m) => NotificationOptions -> m (Maybe Word53)
+getTimestamp self = liftDOM (((self ^. js "timestamp") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-timestamp NotificationOptions.timestamp specification>
+getTimestampUnsafe :: (MonadDOM m, HasCallStack) => NotificationOptions -> m Word53
+getTimestampUnsafe self = liftDOM ((((self ^. js "timestamp") >>= 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 (((self ^. js "timestamp") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-renotify NotificationOptions.renotify specification>
+setRenotify :: (MonadDOM m) => NotificationOptions -> Bool -> m ()
+setRenotify self val = liftDOM (void (self ^. jss "renotify" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-renotify NotificationOptions.renotify specification>
+getRenotify :: (MonadDOM m) => NotificationOptions -> m (Maybe Bool)
+getRenotify self = liftDOM (((self ^. js "renotify") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-renotify NotificationOptions.renotify specification>
+getRenotifyUnsafe :: (MonadDOM m, HasCallStack) => NotificationOptions -> m Bool
+getRenotifyUnsafe self = liftDOM ((((self ^. js "renotify") >>= 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 (((self ^. js "renotify") >>= valToBool))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-silent NotificationOptions.silent specification>
+setSilent :: (MonadDOM m) => NotificationOptions -> Maybe Bool -> m ()
+setSilent self val = liftDOM (void (self ^. jss "silent" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-silent NotificationOptions.silent specification>
+getSilent :: (MonadDOM m) => NotificationOptions -> m (Maybe Bool)
+getSilent self = liftDOM (((self ^. js "silent") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-silent NotificationOptions.silent specification>
+getSilentUnsafe :: (MonadDOM m, HasCallStack) => NotificationOptions -> m Bool
+getSilentUnsafe self = liftDOM ((((self ^. js "silent") >>= 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 (((self ^. js "silent") >>= valToBool))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-requireinteraction NotificationOptions.requireInteraction specification>
+setRequireInteraction :: (MonadDOM m) => NotificationOptions -> Bool -> m ()
+setRequireInteraction self val = liftDOM (void (self ^. jss "requireInteraction" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-requireinteraction NotificationOptions.requireInteraction specification>
+getRequireInteraction :: (MonadDOM m) => NotificationOptions -> m (Maybe Bool)
+getRequireInteraction self = liftDOM (((self ^. js "requireInteraction") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-requireinteraction NotificationOptions.requireInteraction specification>
+getRequireInteractionUnsafe :: (MonadDOM m, HasCallStack) => NotificationOptions -> m Bool
+getRequireInteractionUnsafe self = liftDOM ((((self ^. js "requireInteraction") >>= 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 (((self ^. js "requireInteraction") >>= valToBool))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-data NotificationOptions.data specification>
+setData :: (MonadDOM m) => NotificationOptions -> JSVal -> m ()
+setData self val = liftDOM (void (self ^. jss "data" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-data NotificationOptions.data specification>
+getData :: (MonadDOM m) => NotificationOptions -> m JSVal
+getData self = liftDOM (self ^. js "data")
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-actions NotificationOptions.actions specification>
+setActions :: (MonadDOM m) => NotificationOptions -> [NotificationAction] -> m ()
+setActions self val = liftDOM (void (self ^. jss "actions" (toJSVal val)))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-actions NotificationOptions.actions specification>
+getActions :: (MonadDOM m) => NotificationOptions -> m (Maybe [NotificationAction])
+getActions self = liftDOM (((self ^. js "actions") >>= fromJSValUnchecked))
+
+-- | <https://notifications.spec.whatwg.org/#dom-notificationoptions-actions NotificationOptions.actions specification>
+getActionsUnsafe :: (MonadDOM m, HasCallStack) => NotificationOptions -> m [NotificationAction]
+getActionsUnsafe self = liftDOM ((((self ^. js "actions") >>= 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 (((self ^. js "actions") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/NotificationPermissionCallback.hs b/src/JSDOM/Generated/NotificationPermissionCallback.hs
--- a/src/JSDOM/Generated/NotificationPermissionCallback.hs
+++ b/src/JSDOM/Generated/NotificationPermissionCallback.hs
@@ -1,62 +1,30 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from notifications (webref). Do not edit.
 module JSDOM.Generated.NotificationPermissionCallback
-       (newNotificationPermissionCallback,
-        newNotificationPermissionCallbackSync,
-        newNotificationPermissionCallbackAsync,
-        NotificationPermissionCallback)
+       (newNotificationPermissionCallback, newNotificationPermissionCallbackSync, newNotificationPermissionCallbackAsync, NotificationPermissionCallback)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationPermissionCallback Mozilla NotificationPermissionCallback documentation> 
-newNotificationPermissionCallback ::
-                                  (MonadDOM m, FromJSString permission) =>
-                                    (permission -> JSM ()) ->
-                                      m (NotificationPermissionCallback permission)
-newNotificationPermissionCallback callback
-  = liftDOM
-      (NotificationPermissionCallback . Callback <$>
-         function
-           (\ _ _ [permission] ->
-              fromJSValUnchecked permission >>=
-                \ permission' -> callback permission'))
+newNotificationPermissionCallback :: (MonadDOM m) => (NotificationPermission -> JSM ()) -> m NotificationPermissionCallback
+newNotificationPermissionCallback callback = liftDOM (NotificationPermissionCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (permission : _) -> do
+          permission' <- fromJSValUnchecked permission
+          callback permission'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationPermissionCallback Mozilla NotificationPermissionCallback documentation> 
-newNotificationPermissionCallbackSync ::
-                                      (MonadDOM m, FromJSString permission) =>
-                                        (permission -> JSM ()) ->
-                                          m (NotificationPermissionCallback permission)
-newNotificationPermissionCallbackSync callback
-  = liftDOM
-      (NotificationPermissionCallback . Callback <$>
-         function
-           (\ _ _ [permission] ->
-              fromJSValUnchecked permission >>=
-                \ permission' -> callback permission'))
+newNotificationPermissionCallbackSync :: (MonadDOM m) => (NotificationPermission -> JSM ()) -> m NotificationPermissionCallback
+newNotificationPermissionCallbackSync callback = liftDOM (NotificationPermissionCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (permission : _) -> do
+          permission' <- fromJSValUnchecked permission
+          callback permission'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationPermissionCallback Mozilla NotificationPermissionCallback documentation> 
-newNotificationPermissionCallbackAsync ::
-                                       (MonadDOM m, FromJSString permission) =>
-                                         (permission -> JSM ()) ->
-                                           m (NotificationPermissionCallback permission)
-newNotificationPermissionCallbackAsync callback
-  = liftDOM
-      (NotificationPermissionCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [permission] ->
-              fromJSValUnchecked permission >>=
-                \ permission' -> callback permission'))
+newNotificationPermissionCallbackAsync :: (MonadDOM m) => (NotificationPermission -> JSM ()) -> m NotificationPermissionCallback
+newNotificationPermissionCallbackAsync callback = liftDOM (NotificationPermissionCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (permission : _) -> do
+          permission' <- fromJSValUnchecked permission
+          callback permission'))
diff --git a/src/JSDOM/Generated/OESStandardDerivatives.hs b/src/JSDOM/Generated/OESStandardDerivatives.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/OESStandardDerivatives.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.OESStandardDerivatives
-       (pattern FRAGMENT_SHADER_DERIVATIVE_HINT_OES,
-        OESStandardDerivatives(..), gTypeOESStandardDerivatives)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-pattern FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 35723
diff --git a/src/JSDOM/Generated/OESTextureHalfFloat.hs b/src/JSDOM/Generated/OESTextureHalfFloat.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/OESTextureHalfFloat.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.OESTextureHalfFloat
-       (pattern HALF_FLOAT_OES, OESTextureHalfFloat(..),
-        gTypeOESTextureHalfFloat)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-pattern HALF_FLOAT_OES = 36193
diff --git a/src/JSDOM/Generated/OESVertexArrayObject.hs b/src/JSDOM/Generated/OESVertexArrayObject.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/OESVertexArrayObject.hs
+++ /dev/null
@@ -1,70 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.OESVertexArrayObject
-       (createVertexArrayOES, createVertexArrayOES_, deleteVertexArrayOES,
-        isVertexArrayOES, isVertexArrayOES_, bindVertexArrayOES,
-        pattern VERTEX_ARRAY_BINDING_OES, OESVertexArrayObject(..),
-        gTypeOESVertexArrayObject)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.createVertexArrayOES Mozilla OESVertexArrayObject.createVertexArrayOES documentation> 
-createVertexArrayOES ::
-                     (MonadDOM m) => OESVertexArrayObject -> m WebGLVertexArrayObjectOES
-createVertexArrayOES self
-  = liftDOM
-      ((self ^. jsf "createVertexArrayOES" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.createVertexArrayOES Mozilla OESVertexArrayObject.createVertexArrayOES documentation> 
-createVertexArrayOES_ ::
-                      (MonadDOM m) => OESVertexArrayObject -> m ()
-createVertexArrayOES_ self
-  = liftDOM (void (self ^. jsf "createVertexArrayOES" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.deleteVertexArrayOES Mozilla OESVertexArrayObject.deleteVertexArrayOES documentation> 
-deleteVertexArrayOES ::
-                     (MonadDOM m) =>
-                       OESVertexArrayObject -> Maybe WebGLVertexArrayObjectOES -> m ()
-deleteVertexArrayOES self arrayObject
-  = liftDOM
-      (void (self ^. jsf "deleteVertexArrayOES" [toJSVal arrayObject]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.isVertexArrayOES Mozilla OESVertexArrayObject.isVertexArrayOES documentation> 
-isVertexArrayOES ::
-                 (MonadDOM m) =>
-                   OESVertexArrayObject -> Maybe WebGLVertexArrayObjectOES -> m Bool
-isVertexArrayOES self arrayObject
-  = liftDOM
-      ((self ^. jsf "isVertexArrayOES" [toJSVal arrayObject]) >>=
-         valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.isVertexArrayOES Mozilla OESVertexArrayObject.isVertexArrayOES documentation> 
-isVertexArrayOES_ ::
-                  (MonadDOM m) =>
-                    OESVertexArrayObject -> Maybe WebGLVertexArrayObjectOES -> m ()
-isVertexArrayOES_ self arrayObject
-  = liftDOM
-      (void (self ^. jsf "isVertexArrayOES" [toJSVal arrayObject]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.bindVertexArrayOES Mozilla OESVertexArrayObject.bindVertexArrayOES documentation> 
-bindVertexArrayOES ::
-                   (MonadDOM m) =>
-                     OESVertexArrayObject -> Maybe WebGLVertexArrayObjectOES -> m ()
-bindVertexArrayOES self arrayObject
-  = liftDOM
-      (void (self ^. jsf "bindVertexArrayOES" [toJSVal arrayObject]))
-pattern VERTEX_ARRAY_BINDING_OES = 34229
diff --git a/src/JSDOM/Generated/OES_draw_buffers_indexed.hs b/src/JSDOM/Generated/OES_draw_buffers_indexed.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OES_draw_buffers_indexed.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_draw_buffers_indexed (webref). Do not edit.
+module JSDOM.Generated.OES_draw_buffers_indexed
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "blendEquationSeparateiOES" [toJSVal buf, toJSVal modeRGB, toJSVal modeAlpha]))
+
+-- | <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 (self ^. jsf "blendEquationiOES" [toJSVal buf, toJSVal mode]))
+
+-- | <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 (self ^. jsf "blendFuncSeparateiOES" [toJSVal buf, toJSVal srcRGB, toJSVal dstRGB, toJSVal srcAlpha, toJSVal dstAlpha]))
+
+-- | <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 (self ^. jsf "blendFunciOES" [toJSVal buf, toJSVal src, toJSVal dst]))
+
+-- | <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 (self ^. jsf "colorMaskiOES" [toJSVal buf, toJSVal r, toJSVal g, toJSVal b, toJSVal a]))
+
+-- | <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 (self ^. jsf "disableiOES" [toJSVal target, toJSVal index]))
+
+-- | <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 (self ^. jsf "enableiOES" [toJSVal target, toJSVal index]))
diff --git a/src/JSDOM/Generated/OES_element_index_uint.hs b/src/JSDOM/Generated/OES_element_index_uint.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OES_element_index_uint.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_element_index_uint (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/OES_fbo_render_mipmap.hs b/src/JSDOM/Generated/OES_fbo_render_mipmap.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OES_fbo_render_mipmap.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_fbo_render_mipmap (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/OES_standard_derivatives.hs b/src/JSDOM/Generated/OES_standard_derivatives.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OES_standard_derivatives.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_standard_derivatives (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+pattern FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B
diff --git a/src/JSDOM/Generated/OES_texture_float.hs b/src/JSDOM/Generated/OES_texture_float.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OES_texture_float.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_texture_float (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/OES_texture_float_linear.hs b/src/JSDOM/Generated/OES_texture_float_linear.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OES_texture_float_linear.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_texture_float_linear (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/OES_texture_half_float.hs b/src/JSDOM/Generated/OES_texture_half_float.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OES_texture_half_float.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_texture_half_float (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+pattern HALF_FLOAT_OES = 0x8D61
diff --git a/src/JSDOM/Generated/OES_texture_half_float_linear.hs b/src/JSDOM/Generated/OES_texture_half_float_linear.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OES_texture_half_float_linear.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# 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 JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/OES_vertex_array_object.hs b/src/JSDOM/Generated/OES_vertex_array_object.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OES_vertex_array_object.hs
@@ -0,0 +1,42 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_vertex_array_object (webref). Do not edit.
+module JSDOM.Generated.OES_vertex_array_object
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "bindVertexArrayOES" [toJSVal arrayObject]))
+
+-- | <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 (((self ^. jsf "createVertexArrayOES" ()) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "createVertexArrayOES" ()))
+
+-- | <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 (self ^. jsf "deleteVertexArrayOES" [toJSVal arrayObject]))
+
+-- | <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 (((self ^. jsf "isVertexArrayOES" [toJSVal arrayObject]) >>= valToBool))
+
+-- | <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 (self ^. jsf "isVertexArrayOES" [toJSVal arrayObject]))
+
+pattern VERTEX_ARRAY_BINDING_OES = 0x85B5
diff --git a/src/JSDOM/Generated/OTPCredentialRequestOptions.hs b/src/JSDOM/Generated/OTPCredentialRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OTPCredentialRequestOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-otp (webref). Do not edit.
+module JSDOM.Generated.OTPCredentialRequestOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://wicg.github.io/web-otp/#dictdef-otpcredentialrequestoptions OTPCredentialRequestOptions specification>
+newOTPCredentialRequestOptions :: (MonadDOM m) => m OTPCredentialRequestOptions
+newOTPCredentialRequestOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/web-otp/#dom-otpcredentialrequestoptions-transport OTPCredentialRequestOptions.transport specification>
+setTransport :: (MonadDOM m) => OTPCredentialRequestOptions -> [OTPCredentialTransportType] -> m ()
+setTransport self val = liftDOM (void (self ^. jss "transport" (toJSVal val)))
+
+-- | <https://wicg.github.io/web-otp/#dom-otpcredentialrequestoptions-transport OTPCredentialRequestOptions.transport specification>
+getTransport :: (MonadDOM m) => OTPCredentialRequestOptions -> m (Maybe [OTPCredentialTransportType])
+getTransport self = liftDOM (((self ^. js "transport") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/web-otp/#dom-otpcredentialrequestoptions-transport OTPCredentialRequestOptions.transport specification>
+getTransportUnsafe :: (MonadDOM m, HasCallStack) => OTPCredentialRequestOptions -> m [OTPCredentialTransportType]
+getTransportUnsafe self = liftDOM ((((self ^. js "transport") >>= 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 (((self ^. js "transport") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/OVR_multiview2.hs b/src/JSDOM/Generated/OVR_multiview2.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OVR_multiview2.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OVR_multiview2 (webref). Do not edit.
+module JSDOM.Generated.OVR_multiview2
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "framebufferTextureMultiviewOVR" [toJSVal target, toJSVal attachment, toJSVal texture, toJSVal level, toJSVal baseViewIndex, toJSVal 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/JSDOM/Generated/OfflineAudioCompletionEvent.hs b/src/JSDOM/Generated/OfflineAudioCompletionEvent.hs
--- a/src/JSDOM/Generated/OfflineAudioCompletionEvent.hs
+++ b/src/JSDOM/Generated/OfflineAudioCompletionEvent.hs
@@ -1,27 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.OfflineAudioCompletionEvent
-       (getRenderedBuffer, OfflineAudioCompletionEvent(..),
-        gTypeOfflineAudioCompletionEvent)
+       (newOfflineAudioCompletionEvent, getRenderedBuffer, OfflineAudioCompletionEvent(..), gTypeOfflineAudioCompletionEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioCompletionEvent.renderedBuffer Mozilla OfflineAudioCompletionEvent.renderedBuffer documentation> 
-getRenderedBuffer ::
-                  (MonadDOM m) => OfflineAudioCompletionEvent -> m AudioBuffer
-getRenderedBuffer self
-  = liftDOM ((self ^. js "renderedBuffer") >>= fromJSValUnchecked)
+-- | <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 (((new (jsg "OfflineAudioCompletionEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OfflineAudioCompletionEvent/renderedBuffer MDN OfflineAudioCompletionEvent.renderedBuffer documentation>
+getRenderedBuffer :: (MonadDOM m) => OfflineAudioCompletionEvent -> m AudioBuffer
+getRenderedBuffer self = liftDOM (((self ^. js "renderedBuffer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/OfflineAudioCompletionEventInit.hs b/src/JSDOM/Generated/OfflineAudioCompletionEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OfflineAudioCompletionEventInit.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.OfflineAudioCompletionEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#OfflineAudioCompletionEventInit OfflineAudioCompletionEventInit specification>
+newOfflineAudioCompletionEventInit :: (MonadDOM m) => AudioBuffer -> m OfflineAudioCompletionEventInit
+newOfflineAudioCompletionEventInit renderedBuffer = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "renderedBuffer" (toJSVal renderedBuffer)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocompletioneventinit-renderedbuffer OfflineAudioCompletionEventInit.renderedBuffer specification>
+setRenderedBuffer :: (MonadDOM m) => OfflineAudioCompletionEventInit -> AudioBuffer -> m ()
+setRenderedBuffer self val = liftDOM (void (self ^. jss "renderedBuffer" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocompletioneventinit-renderedbuffer OfflineAudioCompletionEventInit.renderedBuffer specification>
+getRenderedBuffer :: (MonadDOM m) => OfflineAudioCompletionEventInit -> m AudioBuffer
+getRenderedBuffer self = liftDOM (((self ^. js "renderedBuffer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/OfflineAudioContext.hs b/src/JSDOM/Generated/OfflineAudioContext.hs
--- a/src/JSDOM/Generated/OfflineAudioContext.hs
+++ b/src/JSDOM/Generated/OfflineAudioContext.hs
@@ -1,31 +1,56 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.OfflineAudioContext
-       (newOfflineAudioContext, OfflineAudioContext(..),
-        gTypeOfflineAudioContext)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioContext Mozilla OfflineAudioContext documentation> 
-newOfflineAudioContext ::
-                       (MonadDOM m) => Word -> Word -> Float -> m OfflineAudioContext
-newOfflineAudioContext numberOfChannels numberOfFrames sampleRate
-  = liftDOM
-      (OfflineAudioContext <$>
-         new (jsg "OfflineAudioContext")
-           [toJSVal numberOfChannels, toJSVal numberOfFrames,
-            toJSVal sampleRate])
+-- | <https://developer.mozilla.org/docs/Web/API/OfflineAudioContext/OfflineAudioContext MDN OfflineAudioContext. documentation>
+newOfflineAudioContext' :: (MonadDOM m) => OfflineAudioContextOptions -> m OfflineAudioContext
+newOfflineAudioContext' contextOptions = liftDOM (((new (jsg "OfflineAudioContext") [toJSVal contextOptions]) >>= fromJSValUnchecked))
+
+-- | <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 (((new (jsg "OfflineAudioContext") [toJSVal numberOfChannels, toJSVal length, toJSVal sampleRate]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OfflineAudioContext/resume MDN OfflineAudioContext.resume documentation>
+resume :: (MonadDOM m) => OfflineAudioContext -> m ()
+resume self = liftDOM (void (((self ^. jsf "resume" ()) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "startRendering" [toJSVal chunkSize]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "startRendering" [toJSVal chunkSize]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OfflineAudioContext/suspend MDN OfflineAudioContext.suspend documentation>
+suspend :: (MonadDOM m) => OfflineAudioContext -> Double -> m ()
+suspend self suspendTime = liftDOM (void (((self ^. jsf "suspend" [toJSVal suspendTime]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OfflineAudioContext/length MDN OfflineAudioContext.length documentation>
+getLength :: (MonadDOM m) => OfflineAudioContext -> m (Maybe Word)
+getLength self = liftDOM (((self ^. js "length") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OfflineAudioContext/length MDN OfflineAudioContext.length documentation>
+getLengthUnsafe :: (MonadDOM m, HasCallStack) => OfflineAudioContext -> m Word
+getLengthUnsafe self = liftDOM ((((self ^. js "length") >>= 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 ((P.round <$> ((self ^. js "length") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontext-oncomplete complete event>
+complete :: EventName OfflineAudioContext OfflineAudioCompletionEvent
+complete = unsafeEventName (toJSString "complete")
diff --git a/src/JSDOM/Generated/OfflineAudioContextOptions.hs b/src/JSDOM/Generated/OfflineAudioContextOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OfflineAudioContextOptions.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.OfflineAudioContextOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#OfflineAudioContextOptions OfflineAudioContextOptions specification>
+newOfflineAudioContextOptions :: (MonadDOM m) => Float -> m OfflineAudioContextOptions
+newOfflineAudioContextOptions sampleRate = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "sampleRate" (toJSVal sampleRate)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-numberofchannels OfflineAudioContextOptions.numberOfChannels specification>
+setNumberOfChannels :: (MonadDOM m) => OfflineAudioContextOptions -> Word -> m ()
+setNumberOfChannels self val = liftDOM (void (self ^. jss "numberOfChannels" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-numberofchannels OfflineAudioContextOptions.numberOfChannels specification>
+getNumberOfChannels :: (MonadDOM m) => OfflineAudioContextOptions -> m (Maybe Word)
+getNumberOfChannels self = liftDOM (((self ^. js "numberOfChannels") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-numberofchannels OfflineAudioContextOptions.numberOfChannels specification>
+getNumberOfChannelsUnsafe :: (MonadDOM m, HasCallStack) => OfflineAudioContextOptions -> m Word
+getNumberOfChannelsUnsafe self = liftDOM ((((self ^. js "numberOfChannels") >>= 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 ((P.round <$> ((self ^. js "numberOfChannels") >>= valToNumber)))
+
+-- | <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 (self ^. jss "length" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-length OfflineAudioContextOptions.length specification>
+getLength :: (MonadDOM m) => OfflineAudioContextOptions -> m (Maybe Word)
+getLength self = liftDOM (((self ^. js "length") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-length OfflineAudioContextOptions.length specification>
+getLengthUnsafe :: (MonadDOM m, HasCallStack) => OfflineAudioContextOptions -> m Word
+getLengthUnsafe self = liftDOM ((((self ^. js "length") >>= 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 ((P.round <$> ((self ^. js "length") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-samplerate OfflineAudioContextOptions.sampleRate specification>
+setSampleRate :: (MonadDOM m) => OfflineAudioContextOptions -> Float -> m ()
+setSampleRate self val = liftDOM (void (self ^. jss "sampleRate" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-samplerate OfflineAudioContextOptions.sampleRate specification>
+getSampleRate :: (MonadDOM m) => OfflineAudioContextOptions -> m Float
+getSampleRate self = liftDOM ((P.realToFrac <$> ((self ^. js "sampleRate") >>= valToNumber)))
+
+-- | <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 (self ^. jss "renderSizeHint" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-rendersizehint OfflineAudioContextOptions.renderSizeHint specification>
+getRenderSizeHint :: (MonadDOM m) => OfflineAudioContextOptions -> m (Maybe AudioContextRenderSizeCategoryOrWord)
+getRenderSizeHint self = liftDOM (((self ^. js "renderSizeHint") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontextoptions-rendersizehint OfflineAudioContextOptions.renderSizeHint specification>
+getRenderSizeHintUnsafe :: (MonadDOM m, HasCallStack) => OfflineAudioContextOptions -> m AudioContextRenderSizeCategoryOrWord
+getRenderSizeHintUnsafe self = liftDOM ((((self ^. js "renderSizeHint") >>= 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 (((self ^. js "renderSizeHint") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/OffscreenCanvas.hs b/src/JSDOM/Generated/OffscreenCanvas.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OffscreenCanvas.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.OffscreenCanvas
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/OffscreenCanvas MDN OffscreenCanvas. documentation>
+newOffscreenCanvas :: (MonadDOM m) => Word53 -> Word53 -> m OffscreenCanvas
+newOffscreenCanvas width height = liftDOM (((new (jsg "OffscreenCanvas") [toJSVal width, toJSVal height]) >>= fromJSValUnchecked))
+
+-- | <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 (((((self ^. jsf "convertToBlob" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "convertToBlob" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "getContext" [toJSVal contextId, toJSVal 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 (self ^. jsf "getContext" [toJSVal contextId, toJSVal 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 ((((self ^. jsf "getContext" [toJSVal contextId, toJSVal 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 (((self ^. jsf "getContext" [toJSVal contextId, toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/transferToImageBitmap MDN OffscreenCanvas.transferToImageBitmap documentation>
+transferToImageBitmap :: (MonadDOM m) => OffscreenCanvas -> m ImageBitmap
+transferToImageBitmap self = liftDOM (((self ^. jsf "transferToImageBitmap" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/transferToImageBitmap MDN OffscreenCanvas.transferToImageBitmap documentation>
+transferToImageBitmap_ :: (MonadDOM m) => OffscreenCanvas -> m ()
+transferToImageBitmap_ self = liftDOM (void (self ^. jsf "transferToImageBitmap" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/width MDN OffscreenCanvas.width documentation>
+setWidth :: (MonadDOM m) => OffscreenCanvas -> Word53 -> m ()
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/width MDN OffscreenCanvas.width documentation>
+getWidth :: (MonadDOM m) => OffscreenCanvas -> m Word53
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/height MDN OffscreenCanvas.height documentation>
+setHeight :: (MonadDOM m) => OffscreenCanvas -> Word53 -> m ()
+setHeight self val = liftDOM (void (self ^. jss "height" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/OffscreenCanvas/height MDN OffscreenCanvas.height documentation>
+getHeight :: (MonadDOM m) => OffscreenCanvas -> m Word53
+getHeight self = liftDOM (((self ^. js "height") >>= 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/JSDOM/Generated/OffscreenCanvasRenderingContext2D.hs b/src/JSDOM/Generated/OffscreenCanvasRenderingContext2D.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OffscreenCanvasRenderingContext2D.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.OffscreenCanvasRenderingContext2D
+       (getCanvas, OffscreenCanvasRenderingContext2D(..), gTypeOffscreenCanvasRenderingContext2D)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/canvas MDN OffscreenCanvasRenderingContext2D.canvas documentation>
+getCanvas :: (MonadDOM m) => OffscreenCanvasRenderingContext2D -> m OffscreenCanvas
+getCanvas self = liftDOM (((self ^. js "canvas") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/OptionalEffectTiming.hs b/src/JSDOM/Generated/OptionalEffectTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OptionalEffectTiming.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-1 (webref). Do not edit.
+module JSDOM.Generated.OptionalEffectTiming
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/web-animations-1/#dictdef-optionaleffecttiming OptionalEffectTiming specification>
+newOptionalEffectTiming :: (MonadDOM m) => m OptionalEffectTiming
+newOptionalEffectTiming = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-delay OptionalEffectTiming.delay specification>
+setDelay :: (MonadDOM m) => OptionalEffectTiming -> Double -> m ()
+setDelay self val = liftDOM (void (self ^. jss "delay" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-delay OptionalEffectTiming.delay specification>
+getDelay :: (MonadDOM m) => OptionalEffectTiming -> m (Maybe Double)
+getDelay self = liftDOM (((self ^. js "delay") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-delay OptionalEffectTiming.delay specification>
+getDelayUnsafe :: (MonadDOM m, HasCallStack) => OptionalEffectTiming -> m Double
+getDelayUnsafe self = liftDOM ((((self ^. js "delay") >>= 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 (((self ^. js "delay") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-enddelay OptionalEffectTiming.endDelay specification>
+setEndDelay :: (MonadDOM m) => OptionalEffectTiming -> Double -> m ()
+setEndDelay self val = liftDOM (void (self ^. jss "endDelay" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-enddelay OptionalEffectTiming.endDelay specification>
+getEndDelay :: (MonadDOM m) => OptionalEffectTiming -> m (Maybe Double)
+getEndDelay self = liftDOM (((self ^. js "endDelay") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-enddelay OptionalEffectTiming.endDelay specification>
+getEndDelayUnsafe :: (MonadDOM m, HasCallStack) => OptionalEffectTiming -> m Double
+getEndDelayUnsafe self = liftDOM ((((self ^. js "endDelay") >>= 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 (((self ^. js "endDelay") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-fill OptionalEffectTiming.fill specification>
+setFill :: (MonadDOM m) => OptionalEffectTiming -> FillMode -> m ()
+setFill self val = liftDOM (void (self ^. jss "fill" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-fill OptionalEffectTiming.fill specification>
+getFill :: (MonadDOM m) => OptionalEffectTiming -> m (Maybe FillMode)
+getFill self = liftDOM (((self ^. js "fill") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-fill OptionalEffectTiming.fill specification>
+getFillUnsafe :: (MonadDOM m, HasCallStack) => OptionalEffectTiming -> m FillMode
+getFillUnsafe self = liftDOM ((((self ^. js "fill") >>= 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 (((self ^. js "fill") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-iterationstart OptionalEffectTiming.iterationStart specification>
+setIterationStart :: (MonadDOM m) => OptionalEffectTiming -> Double -> m ()
+setIterationStart self val = liftDOM (void (self ^. jss "iterationStart" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-iterationstart OptionalEffectTiming.iterationStart specification>
+getIterationStart :: (MonadDOM m) => OptionalEffectTiming -> m (Maybe Double)
+getIterationStart self = liftDOM (((self ^. js "iterationStart") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-iterationstart OptionalEffectTiming.iterationStart specification>
+getIterationStartUnsafe :: (MonadDOM m, HasCallStack) => OptionalEffectTiming -> m Double
+getIterationStartUnsafe self = liftDOM ((((self ^. js "iterationStart") >>= 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 (((self ^. js "iterationStart") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-iterations OptionalEffectTiming.iterations specification>
+setIterations :: (MonadDOM m) => OptionalEffectTiming -> Double -> m ()
+setIterations self val = liftDOM (void (self ^. jss "iterations" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-iterations OptionalEffectTiming.iterations specification>
+getIterations :: (MonadDOM m) => OptionalEffectTiming -> m (Maybe Double)
+getIterations self = liftDOM (((self ^. js "iterations") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-iterations OptionalEffectTiming.iterations specification>
+getIterationsUnsafe :: (MonadDOM m, HasCallStack) => OptionalEffectTiming -> m Double
+getIterationsUnsafe self = liftDOM ((((self ^. js "iterations") >>= 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 (((self ^. js "iterations") >>= valToNumber))
+
+-- | <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 (self ^. jss "duration" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-duration OptionalEffectTiming.duration specification>
+getDuration :: (MonadDOM m) => OptionalEffectTiming -> m (Maybe DoubleOrString)
+getDuration self = liftDOM (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-duration OptionalEffectTiming.duration specification>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => OptionalEffectTiming -> m DoubleOrString
+getDurationUnsafe self = liftDOM ((((self ^. js "duration") >>= 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 (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-direction OptionalEffectTiming.direction specification>
+setDirection :: (MonadDOM m) => OptionalEffectTiming -> PlaybackDirection -> m ()
+setDirection self val = liftDOM (void (self ^. jss "direction" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-direction OptionalEffectTiming.direction specification>
+getDirection :: (MonadDOM m) => OptionalEffectTiming -> m (Maybe PlaybackDirection)
+getDirection self = liftDOM (((self ^. js "direction") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-1/#dom-optionaleffecttiming-direction OptionalEffectTiming.direction specification>
+getDirectionUnsafe :: (MonadDOM m, HasCallStack) => OptionalEffectTiming -> m PlaybackDirection
+getDirectionUnsafe self = liftDOM ((((self ^. js "direction") >>= 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 (((self ^. js "direction") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "easing" (toJSVal val)))
+
+-- | <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 (((self ^. js "easing") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "easing") >>= fromMaybeJSString) >>= 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 (((self ^. js "easing") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-optionaleffecttiming-playbackrate OptionalEffectTiming.playbackRate specification>
+setPlaybackRate :: (MonadDOM m) => OptionalEffectTiming -> Double -> m ()
+setPlaybackRate self val = liftDOM (void (self ^. jss "playbackRate" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-optionaleffecttiming-playbackrate OptionalEffectTiming.playbackRate specification>
+getPlaybackRate :: (MonadDOM m) => OptionalEffectTiming -> m (Maybe Double)
+getPlaybackRate self = liftDOM (((self ^. js "playbackRate") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-optionaleffecttiming-playbackrate OptionalEffectTiming.playbackRate specification>
+getPlaybackRateUnsafe :: (MonadDOM m, HasCallStack) => OptionalEffectTiming -> m Double
+getPlaybackRateUnsafe self = liftDOM ((((self ^. js "playbackRate") >>= 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 (((self ^. js "playbackRate") >>= valToNumber))
diff --git a/src/JSDOM/Generated/OpusEncoderConfig.hs b/src/JSDOM/Generated/OpusEncoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OpusEncoderConfig.hs
@@ -0,0 +1,148 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-opus-codec-registration (webref). Do not edit.
+module JSDOM.Generated.OpusEncoderConfig
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/opus_codec_registration.html#dictdef-opusencoderconfig OpusEncoderConfig specification>
+newOpusEncoderConfig :: (MonadDOM m) => m OpusEncoderConfig
+newOpusEncoderConfig = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "format" (toJSVal val)))
+
+-- | <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 (((self ^. js "format") >>= 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 ((((self ^. js "format") >>= 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 (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "signal" (toJSVal val)))
+
+-- | <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 (((self ^. js "signal") >>= 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 ((((self ^. js "signal") >>= 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 (((self ^. js "signal") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "application" (toJSVal val)))
+
+-- | <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 (((self ^. js "application") >>= 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 ((((self ^. js "application") >>= 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 (((self ^. js "application") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "frameDuration" (toJSVal val)))
+
+-- | <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 (((self ^. js "frameDuration") >>= 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 ((((self ^. js "frameDuration") >>= 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 (((self ^. js "frameDuration") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "complexity" (toJSVal val)))
+
+-- | <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 (((self ^. js "complexity") >>= 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 ((((self ^. js "complexity") >>= 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 ((P.round <$> ((self ^. js "complexity") >>= valToNumber)))
+
+-- | <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 (self ^. jss "packetlossperc" (toJSVal val)))
+
+-- | <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 (((self ^. js "packetlossperc") >>= 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 ((((self ^. js "packetlossperc") >>= 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 ((P.round <$> ((self ^. js "packetlossperc") >>= valToNumber)))
+
+-- | <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 (self ^. jss "useinbandfec" (toJSVal val)))
+
+-- | <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 (((self ^. js "useinbandfec") >>= 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 ((((self ^. js "useinbandfec") >>= 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 (((self ^. js "useinbandfec") >>= valToBool))
+
+-- | <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 (self ^. jss "usedtx" (toJSVal val)))
+
+-- | <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 (((self ^. js "usedtx") >>= 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 ((((self ^. js "usedtx") >>= 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 (((self ^. js "usedtx") >>= valToBool))
diff --git a/src/JSDOM/Generated/Origin.hs b/src/JSDOM/Generated/Origin.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Origin.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.Origin
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+newOrigin :: (MonadDOM m) => m Origin
+newOrigin = liftDOM (((new (jsg "Origin") ()) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "isSameOrigin" [toJSVal other]) >>= valToBool))
+
+-- | <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 (self ^. jsf "isSameOrigin" [toJSVal other]))
+
+-- | <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 (((self ^. jsf "isSameSite" [toJSVal other]) >>= valToBool))
+
+-- | <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 (self ^. jsf "isSameSite" [toJSVal other]))
+
+-- | <https://html.spec.whatwg.org/multipage/browsers.html#dom-origin-from Origin.from specification>
+from :: (MonadDOM m) => JSVal -> m Origin
+from value = liftDOM ((((jsg "Origin") ^. jsf "from" [toJSVal value]) >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/browsers.html#dom-origin-from Origin.from specification>
+from_ :: (MonadDOM m) => JSVal -> m ()
+from_ value = liftDOM (void ((jsg "Origin") ^. jsf "from" [toJSVal value]))
+
+-- | <https://html.spec.whatwg.org/multipage/browsers.html#dom-origin-opaque Origin.opaque specification>
+getOpaque :: (MonadDOM m) => Origin -> m Bool
+getOpaque self = liftDOM (((self ^. js "opaque") >>= valToBool))
diff --git a/src/JSDOM/Generated/OscillatorNode.hs b/src/JSDOM/Generated/OscillatorNode.hs
--- a/src/JSDOM/Generated/OscillatorNode.hs
+++ b/src/JSDOM/Generated/OscillatorNode.hs
@@ -1,71 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.OscillatorNode
-       (start, stop, setPeriodicWave, pattern UNSCHEDULED_STATE,
-        pattern SCHEDULED_STATE, pattern PLAYING_STATE,
-        pattern FINISHED_STATE, setType, getType, getPlaybackState,
-        getFrequency, getDetune, ended, OscillatorNode(..),
-        gTypeOscillatorNode)
+       (newOscillatorNode, setPeriodicWave, setType, getType, getFrequency, getDetune, OscillatorNode(..), gTypeOscillatorNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.start Mozilla OscillatorNode.start documentation> 
-start :: (MonadDOM m) => OscillatorNode -> Maybe Double -> m ()
-start self when
-  = liftDOM (void (self ^. jsf "start" [toJSVal when]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.stop Mozilla OscillatorNode.stop documentation> 
-stop :: (MonadDOM m) => OscillatorNode -> Maybe Double -> m ()
-stop self when = liftDOM (void (self ^. jsf "stop" [toJSVal when]))
+-- | <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 (((new (jsg "OscillatorNode") [toJSVal context, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.setPeriodicWave Mozilla OscillatorNode.setPeriodicWave documentation> 
-setPeriodicWave ::
-                (MonadDOM m) => OscillatorNode -> Maybe PeriodicWave -> m ()
-setPeriodicWave self wave
-  = liftDOM (void (self ^. jsf "setPeriodicWave" [toJSVal wave]))
-pattern UNSCHEDULED_STATE = 0
-pattern SCHEDULED_STATE = 1
-pattern PLAYING_STATE = 2
-pattern FINISHED_STATE = 3
+-- | <https://developer.mozilla.org/docs/Web/API/OscillatorNode/setPeriodicWave MDN OscillatorNode.setPeriodicWave documentation>
+setPeriodicWave :: (MonadDOM m) => OscillatorNode -> PeriodicWave -> m ()
+setPeriodicWave self periodicWave = liftDOM (void (self ^. jsf "setPeriodicWave" [toJSVal periodicWave]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.type Mozilla OscillatorNode.type documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/OscillatorNode/type MDN OscillatorNode.type documentation>
 setType :: (MonadDOM m) => OscillatorNode -> OscillatorType -> m ()
-setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.type Mozilla OscillatorNode.type documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/OscillatorNode/type MDN OscillatorNode.type documentation>
 getType :: (MonadDOM m) => OscillatorNode -> m OscillatorType
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.playbackState Mozilla OscillatorNode.playbackState documentation> 
-getPlaybackState :: (MonadDOM m) => OscillatorNode -> m Word
-getPlaybackState self
-  = liftDOM
-      (round <$> ((self ^. js "playbackState") >>= valToNumber))
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.frequency Mozilla OscillatorNode.frequency documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/OscillatorNode/frequency MDN OscillatorNode.frequency documentation>
 getFrequency :: (MonadDOM m) => OscillatorNode -> m AudioParam
-getFrequency self
-  = liftDOM ((self ^. js "frequency") >>= fromJSValUnchecked)
+getFrequency self = liftDOM (((self ^. js "frequency") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.detune Mozilla OscillatorNode.detune documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/OscillatorNode/detune MDN OscillatorNode.detune documentation>
 getDetune :: (MonadDOM m) => OscillatorNode -> m AudioParam
-getDetune self
-  = liftDOM ((self ^. js "detune") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.onended Mozilla OscillatorNode.onended documentation> 
-ended :: EventName OscillatorNode Event
-ended = unsafeEventName (toJSString "ended")
+getDetune self = liftDOM (((self ^. js "detune") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/OscillatorOptions.hs b/src/JSDOM/Generated/OscillatorOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/OscillatorOptions.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.OscillatorOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#OscillatorOptions OscillatorOptions specification>
+newOscillatorOptions :: (MonadDOM m) => m OscillatorOptions
+newOscillatorOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-type OscillatorOptions.type specification>
+setType :: (MonadDOM m) => OscillatorOptions -> OscillatorType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-type OscillatorOptions.type specification>
+getType :: (MonadDOM m) => OscillatorOptions -> m (Maybe OscillatorType)
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-type OscillatorOptions.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => OscillatorOptions -> m OscillatorType
+getTypeUnsafe self = liftDOM ((((self ^. js "type") >>= 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 (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-frequency OscillatorOptions.frequency specification>
+setFrequency :: (MonadDOM m) => OscillatorOptions -> Float -> m ()
+setFrequency self val = liftDOM (void (self ^. jss "frequency" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-frequency OscillatorOptions.frequency specification>
+getFrequency :: (MonadDOM m) => OscillatorOptions -> m (Maybe Float)
+getFrequency self = liftDOM (((self ^. js "frequency") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-frequency OscillatorOptions.frequency specification>
+getFrequencyUnsafe :: (MonadDOM m, HasCallStack) => OscillatorOptions -> m Float
+getFrequencyUnsafe self = liftDOM ((((self ^. js "frequency") >>= 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 ((P.realToFrac <$> ((self ^. js "frequency") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-detune OscillatorOptions.detune specification>
+setDetune :: (MonadDOM m) => OscillatorOptions -> Float -> m ()
+setDetune self val = liftDOM (void (self ^. jss "detune" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-detune OscillatorOptions.detune specification>
+getDetune :: (MonadDOM m) => OscillatorOptions -> m (Maybe Float)
+getDetune self = liftDOM (((self ^. js "detune") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-detune OscillatorOptions.detune specification>
+getDetuneUnsafe :: (MonadDOM m, HasCallStack) => OscillatorOptions -> m Float
+getDetuneUnsafe self = liftDOM ((((self ^. js "detune") >>= 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 ((P.realToFrac <$> ((self ^. js "detune") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-periodicwave OscillatorOptions.periodicWave specification>
+setPeriodicWave :: (MonadDOM m) => OscillatorOptions -> PeriodicWave -> m ()
+setPeriodicWave self val = liftDOM (void (self ^. jss "periodicWave" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-periodicwave OscillatorOptions.periodicWave specification>
+getPeriodicWave :: (MonadDOM m) => OscillatorOptions -> m (Maybe PeriodicWave)
+getPeriodicWave self = liftDOM (((self ^. js "periodicWave") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-oscillatoroptions-periodicwave OscillatorOptions.periodicWave specification>
+getPeriodicWaveUnsafe :: (MonadDOM m, HasCallStack) => OscillatorOptions -> m PeriodicWave
+getPeriodicWaveUnsafe self = liftDOM ((((self ^. js "periodicWave") >>= 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 (((self ^. js "periodicWave") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/OverconstrainedError.hs b/src/JSDOM/Generated/OverconstrainedError.hs
--- a/src/JSDOM/Generated/OverconstrainedError.hs
+++ b/src/JSDOM/Generated/OverconstrainedError.hs
@@ -1,45 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
 module JSDOM.Generated.OverconstrainedError
-       (newOverconstrainedError, getMessage, getConstraint,
-        OverconstrainedError(..), gTypeOverconstrainedError)
+       (newOverconstrainedError, getConstraint, OverconstrainedError(..), gTypeOverconstrainedError)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedError Mozilla OverconstrainedError documentation> 
-newOverconstrainedError ::
-                        (MonadDOM m, ToJSString constraint, ToJSString message) =>
-                          Maybe constraint -> Maybe message -> m OverconstrainedError
-newOverconstrainedError constraint message
-  = liftDOM
-      (OverconstrainedError <$>
-         new (jsg "OverconstrainedError")
-           [toJSVal constraint, toJSVal message])
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedError.message Mozilla OverconstrainedError.message documentation> 
-getMessage ::
-           (MonadDOM m, FromJSString result) =>
-             OverconstrainedError -> m result
-getMessage self
-  = liftDOM ((self ^. js "message") >>= fromJSValUnchecked)
+-- | <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 (((new (jsg "OverconstrainedError") [toJSVal constraint, P.maybe (P.return jsUndefined) toJSVal message]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedError.constraint Mozilla OverconstrainedError.constraint documentation> 
-getConstraint ::
-              (MonadDOM m, FromJSString result) =>
-                OverconstrainedError -> m result
-getConstraint self
-  = liftDOM ((self ^. js "constraint") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/OverconstrainedError/constraint MDN OverconstrainedError.constraint documentation>
+getConstraint :: (MonadDOM m, FromJSString result) => OverconstrainedError -> m result
+getConstraint self = liftDOM (((self ^. js "constraint") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/OverconstrainedErrorEvent.hs b/src/JSDOM/Generated/OverconstrainedErrorEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/OverconstrainedErrorEvent.hs
+++ /dev/null
@@ -1,54 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.OverconstrainedErrorEvent
-       (newOverconstrainedErrorEvent, getError, getErrorUnsafe,
-        getErrorUnchecked, OverconstrainedErrorEvent(..),
-        gTypeOverconstrainedErrorEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEvent Mozilla OverconstrainedErrorEvent documentation> 
-newOverconstrainedErrorEvent ::
-                             (MonadDOM m, ToJSString type') =>
-                               type' ->
-                                 Maybe OverconstrainedErrorEventInit -> m OverconstrainedErrorEvent
-newOverconstrainedErrorEvent type' eventInitDict
-  = liftDOM
-      (OverconstrainedErrorEvent <$>
-         new (jsg "OverconstrainedErrorEvent")
-           [toJSVal type', toJSVal eventInitDict])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEvent.error Mozilla OverconstrainedErrorEvent.error documentation> 
-getError ::
-         (MonadDOM m) =>
-           OverconstrainedErrorEvent -> m (Maybe OverconstrainedError)
-getError self = liftDOM ((self ^. js "error") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEvent.error Mozilla OverconstrainedErrorEvent.error documentation> 
-getErrorUnsafe ::
-               (MonadDOM m, HasCallStack) =>
-                 OverconstrainedErrorEvent -> m OverconstrainedError
-getErrorUnsafe self
-  = liftDOM
-      (((self ^. js "error") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEvent.error Mozilla OverconstrainedErrorEvent.error documentation> 
-getErrorUnchecked ::
-                  (MonadDOM m) => OverconstrainedErrorEvent -> m OverconstrainedError
-getErrorUnchecked self
-  = liftDOM ((self ^. js "error") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/OverflowEvent.hs b/src/JSDOM/Generated/OverflowEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/OverflowEvent.hs
+++ /dev/null
@@ -1,49 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.OverflowEvent
-       (newOverflowEvent, pattern HORIZONTAL, pattern VERTICAL,
-        pattern BOTH, getOrient, getHorizontalOverflow,
-        getVerticalOverflow, OverflowEvent(..), gTypeOverflowEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent Mozilla OverflowEvent documentation> 
-newOverflowEvent ::
-                 (MonadDOM m, ToJSString type') =>
-                   type' -> Maybe OverflowEventInit -> m OverflowEvent
-newOverflowEvent type' eventInitDict
-  = liftDOM
-      (OverflowEvent <$>
-         new (jsg "OverflowEvent") [toJSVal type', toJSVal eventInitDict])
-pattern HORIZONTAL = 0
-pattern VERTICAL = 1
-pattern BOTH = 2
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent.orient Mozilla OverflowEvent.orient documentation> 
-getOrient :: (MonadDOM m) => OverflowEvent -> m Word
-getOrient self
-  = liftDOM (round <$> ((self ^. js "orient") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent.horizontalOverflow Mozilla OverflowEvent.horizontalOverflow documentation> 
-getHorizontalOverflow :: (MonadDOM m) => OverflowEvent -> m Bool
-getHorizontalOverflow self
-  = liftDOM ((self ^. js "horizontalOverflow") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent.verticalOverflow Mozilla OverflowEvent.verticalOverflow documentation> 
-getVerticalOverflow :: (MonadDOM m) => OverflowEvent -> m Bool
-getVerticalOverflow self
-  = liftDOM ((self ^. js "verticalOverflow") >>= valToBool)
diff --git a/src/JSDOM/Generated/PageRevealEvent.hs b/src/JSDOM/Generated/PageRevealEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PageRevealEvent.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.PageRevealEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "PageRevealEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PageRevealEvent/viewTransition MDN PageRevealEvent.viewTransition documentation>
+getViewTransition :: (MonadDOM m) => PageRevealEvent -> m (Maybe ViewTransition)
+getViewTransition self = liftDOM (((self ^. js "viewTransition") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PageRevealEvent/viewTransition MDN PageRevealEvent.viewTransition documentation>
+getViewTransitionUnsafe :: (MonadDOM m, HasCallStack) => PageRevealEvent -> m ViewTransition
+getViewTransitionUnsafe self = liftDOM ((((self ^. js "viewTransition") >>= 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 (((self ^. js "viewTransition") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PageRevealEventInit.hs b/src/JSDOM/Generated/PageRevealEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PageRevealEventInit.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.PageRevealEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#pagerevealeventinit PageRevealEventInit specification>
+newPageRevealEventInit :: (MonadDOM m) => m PageRevealEventInit
+newPageRevealEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "viewTransition" (toJSVal val)))
+
+-- | <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 (((self ^. js "viewTransition") >>= 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 ((((self ^. js "viewTransition") >>= 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 (((self ^. js "viewTransition") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PageSwapEvent.hs b/src/JSDOM/Generated/PageSwapEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PageSwapEvent.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.PageSwapEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "PageSwapEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PageSwapEvent/activation MDN PageSwapEvent.activation documentation>
+getActivation :: (MonadDOM m) => PageSwapEvent -> m (Maybe NavigationActivation)
+getActivation self = liftDOM (((self ^. js "activation") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PageSwapEvent/activation MDN PageSwapEvent.activation documentation>
+getActivationUnsafe :: (MonadDOM m, HasCallStack) => PageSwapEvent -> m NavigationActivation
+getActivationUnsafe self = liftDOM ((((self ^. js "activation") >>= 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 (((self ^. js "activation") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PageSwapEvent/viewTransition MDN PageSwapEvent.viewTransition documentation>
+getViewTransition :: (MonadDOM m) => PageSwapEvent -> m (Maybe ViewTransition)
+getViewTransition self = liftDOM (((self ^. js "viewTransition") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PageSwapEvent/viewTransition MDN PageSwapEvent.viewTransition documentation>
+getViewTransitionUnsafe :: (MonadDOM m, HasCallStack) => PageSwapEvent -> m ViewTransition
+getViewTransitionUnsafe self = liftDOM ((((self ^. js "viewTransition") >>= 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 (((self ^. js "viewTransition") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PageSwapEventInit.hs b/src/JSDOM/Generated/PageSwapEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PageSwapEventInit.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.PageSwapEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#pageswapeventinit PageSwapEventInit specification>
+newPageSwapEventInit :: (MonadDOM m) => m PageSwapEventInit
+newPageSwapEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "activation" (toJSVal val)))
+
+-- | <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 (((self ^. js "activation") >>= 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 ((((self ^. js "activation") >>= 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 (((self ^. js "activation") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "viewTransition" (toJSVal val)))
+
+-- | <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 (((self ^. js "viewTransition") >>= 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 ((((self ^. js "viewTransition") >>= 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 (((self ^. js "viewTransition") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PageTransitionEvent.hs b/src/JSDOM/Generated/PageTransitionEvent.hs
--- a/src/JSDOM/Generated/PageTransitionEvent.hs
+++ b/src/JSDOM/Generated/PageTransitionEvent.hs
@@ -1,36 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.PageTransitionEvent
-       (newPageTransitionEvent, getPersisted, PageTransitionEvent(..),
-        gTypePageTransitionEvent)
+       (newPageTransitionEvent, getPersisted, PageTransitionEvent(..), gTypePageTransitionEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PageTransitionEvent Mozilla PageTransitionEvent documentation> 
-newPageTransitionEvent ::
-                       (MonadDOM m, ToJSString type') =>
-                         type' -> Maybe PageTransitionEventInit -> m PageTransitionEvent
-newPageTransitionEvent type' eventInitDict
-  = liftDOM
-      (PageTransitionEvent <$>
-         new (jsg "PageTransitionEvent")
-           [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "PageTransitionEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PageTransitionEvent.persisted Mozilla PageTransitionEvent.persisted documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PageTransitionEvent/persisted MDN PageTransitionEvent.persisted documentation>
 getPersisted :: (MonadDOM m) => PageTransitionEvent -> m Bool
-getPersisted self
-  = liftDOM ((self ^. js "persisted") >>= valToBool)
+getPersisted self = liftDOM (((self ^. js "persisted") >>= valToBool))
diff --git a/src/JSDOM/Generated/PageTransitionEventInit.hs b/src/JSDOM/Generated/PageTransitionEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PageTransitionEventInit.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.PageTransitionEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#pagetransitioneventinit PageTransitionEventInit specification>
+newPageTransitionEventInit :: (MonadDOM m) => m PageTransitionEventInit
+newPageTransitionEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+setPersisted :: (MonadDOM m) => PageTransitionEventInit -> Bool -> m ()
+setPersisted self val = liftDOM (void (self ^. jss "persisted" (toJSVal val)))
+
+getPersisted :: (MonadDOM m) => PageTransitionEventInit -> m (Maybe Bool)
+getPersisted self = liftDOM (((self ^. js "persisted") >>= fromJSValUnchecked))
+
+getPersistedUnsafe :: (MonadDOM m, HasCallStack) => PageTransitionEventInit -> m Bool
+getPersistedUnsafe self = liftDOM ((((self ^. js "persisted") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getPersistedUnchecked :: (MonadDOM m) => PageTransitionEventInit -> m Bool
+getPersistedUnchecked self = liftDOM (((self ^. js "persisted") >>= valToBool))
diff --git a/src/JSDOM/Generated/PaintTimingMixin.hs b/src/JSDOM/Generated/PaintTimingMixin.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaintTimingMixin.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from paint-timing (webref). Do not edit.
+module JSDOM.Generated.PaintTimingMixin
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/InteractionContentfulPaint/paintTime MDN PaintTimingMixin.paintTime documentation>
+getPaintTime :: (MonadDOM m, IsPaintTimingMixin self) => self -> m Double
+getPaintTime self = liftDOM ((((Types.toPaintTimingMixin self) ^. js "paintTime") >>= valToNumber))
+
+-- | <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 ((((Types.toPaintTimingMixin self) ^. js "presentationTime") >>= 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 (((((Types.toPaintTimingMixin self) ^. js "presentationTime") >>= 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 ((((Types.toPaintTimingMixin self) ^. js "presentationTime") >>= valToNumber))
diff --git a/src/JSDOM/Generated/PannerNode.hs b/src/JSDOM/Generated/PannerNode.hs
--- a/src/JSDOM/Generated/PannerNode.hs
+++ b/src/JSDOM/Generated/PannerNode.hs
@@ -1,133 +1,116 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.PannerNode
-       (setPosition, setOrientation, setVelocity, setPanningModel,
-        getPanningModel, setDistanceModel, getDistanceModel,
-        setRefDistance, getRefDistance, setMaxDistance, getMaxDistance,
-        setRolloffFactor, getRolloffFactor, setConeInnerAngle,
-        getConeInnerAngle, setConeOuterAngle, getConeOuterAngle,
-        setConeOuterGain, getConeOuterGain, PannerNode(..),
-        gTypePannerNode)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.setPosition Mozilla webkitAudioPannerNode.setPosition documentation> 
-setPosition ::
-            (MonadDOM m) => PannerNode -> Float -> Float -> Float -> m ()
-setPosition self x y z
-  = liftDOM
-      (void
-         (self ^. jsf "setPosition" [toJSVal x, toJSVal y, toJSVal z]))
+-- | <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 (((new (jsg "PannerNode") [toJSVal context, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.setOrientation Mozilla webkitAudioPannerNode.setOrientation documentation> 
-setOrientation ::
-               (MonadDOM m) => PannerNode -> Float -> Float -> Float -> m ()
-setOrientation self x y z
-  = liftDOM
-      (void
-         (self ^. jsf "setOrientation" [toJSVal x, toJSVal y, toJSVal z]))
+-- | <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 (self ^. jsf "setOrientation" [toJSVal x, toJSVal y, toJSVal z]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.setVelocity Mozilla webkitAudioPannerNode.setVelocity documentation> 
-setVelocity ::
-            (MonadDOM m) => PannerNode -> Float -> Float -> Float -> m ()
-setVelocity self x y z
-  = liftDOM
-      (void
-         (self ^. jsf "setVelocity" [toJSVal x, toJSVal y, toJSVal z]))
+-- | <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 (self ^. jsf "setPosition" [toJSVal x, toJSVal y, toJSVal z]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.panningModel Mozilla webkitAudioPannerNode.panningModel documentation> 
-setPanningModel ::
-                (MonadDOM m) => PannerNode -> PanningModelType -> m ()
-setPanningModel self val
-  = liftDOM (self ^. jss "panningModel" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/panningModel MDN PannerNode.panningModel documentation>
+setPanningModel :: (MonadDOM m) => PannerNode -> PanningModelType -> m ()
+setPanningModel self val = liftDOM (void (self ^. jss "panningModel" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.panningModel Mozilla webkitAudioPannerNode.panningModel documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/panningModel MDN PannerNode.panningModel documentation>
 getPanningModel :: (MonadDOM m) => PannerNode -> m PanningModelType
-getPanningModel self
-  = liftDOM ((self ^. js "panningModel") >>= fromJSValUnchecked)
+getPanningModel self = liftDOM (((self ^. js "panningModel") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.distanceModel Mozilla webkitAudioPannerNode.distanceModel documentation> 
-setDistanceModel ::
-                 (MonadDOM m) => PannerNode -> DistanceModelType -> m ()
-setDistanceModel self val
-  = liftDOM (self ^. jss "distanceModel" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/positionX MDN PannerNode.positionX documentation>
+getPositionX :: (MonadDOM m) => PannerNode -> m AudioParam
+getPositionX self = liftDOM (((self ^. js "positionX") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.distanceModel Mozilla webkitAudioPannerNode.distanceModel documentation> 
-getDistanceModel ::
-                 (MonadDOM m) => PannerNode -> m DistanceModelType
-getDistanceModel self
-  = liftDOM ((self ^. js "distanceModel") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/positionY MDN PannerNode.positionY documentation>
+getPositionY :: (MonadDOM m) => PannerNode -> m AudioParam
+getPositionY self = liftDOM (((self ^. js "positionY") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.refDistance Mozilla webkitAudioPannerNode.refDistance documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/positionZ MDN PannerNode.positionZ documentation>
+getPositionZ :: (MonadDOM m) => PannerNode -> m AudioParam
+getPositionZ self = liftDOM (((self ^. js "positionZ") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/orientationX MDN PannerNode.orientationX documentation>
+getOrientationX :: (MonadDOM m) => PannerNode -> m AudioParam
+getOrientationX self = liftDOM (((self ^. js "orientationX") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/orientationY MDN PannerNode.orientationY documentation>
+getOrientationY :: (MonadDOM m) => PannerNode -> m AudioParam
+getOrientationY self = liftDOM (((self ^. js "orientationY") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/orientationZ MDN PannerNode.orientationZ documentation>
+getOrientationZ :: (MonadDOM m) => PannerNode -> m AudioParam
+getOrientationZ self = liftDOM (((self ^. js "orientationZ") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/distanceModel MDN PannerNode.distanceModel documentation>
+setDistanceModel :: (MonadDOM m) => PannerNode -> DistanceModelType -> m ()
+setDistanceModel self val = liftDOM (void (self ^. jss "distanceModel" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/distanceModel MDN PannerNode.distanceModel documentation>
+getDistanceModel :: (MonadDOM m) => PannerNode -> m DistanceModelType
+getDistanceModel self = liftDOM (((self ^. js "distanceModel") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/refDistance MDN PannerNode.refDistance documentation>
 setRefDistance :: (MonadDOM m) => PannerNode -> Double -> m ()
-setRefDistance self val
-  = liftDOM (self ^. jss "refDistance" (toJSVal val))
+setRefDistance self val = liftDOM (void (self ^. jss "refDistance" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.refDistance Mozilla webkitAudioPannerNode.refDistance documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/refDistance MDN PannerNode.refDistance documentation>
 getRefDistance :: (MonadDOM m) => PannerNode -> m Double
-getRefDistance self
-  = liftDOM ((self ^. js "refDistance") >>= valToNumber)
+getRefDistance self = liftDOM (((self ^. js "refDistance") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.maxDistance Mozilla webkitAudioPannerNode.maxDistance documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/maxDistance MDN PannerNode.maxDistance documentation>
 setMaxDistance :: (MonadDOM m) => PannerNode -> Double -> m ()
-setMaxDistance self val
-  = liftDOM (self ^. jss "maxDistance" (toJSVal val))
+setMaxDistance self val = liftDOM (void (self ^. jss "maxDistance" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.maxDistance Mozilla webkitAudioPannerNode.maxDistance documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/maxDistance MDN PannerNode.maxDistance documentation>
 getMaxDistance :: (MonadDOM m) => PannerNode -> m Double
-getMaxDistance self
-  = liftDOM ((self ^. js "maxDistance") >>= valToNumber)
+getMaxDistance self = liftDOM (((self ^. js "maxDistance") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.rolloffFactor Mozilla webkitAudioPannerNode.rolloffFactor documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/rolloffFactor MDN PannerNode.rolloffFactor documentation>
 setRolloffFactor :: (MonadDOM m) => PannerNode -> Double -> m ()
-setRolloffFactor self val
-  = liftDOM (self ^. jss "rolloffFactor" (toJSVal val))
+setRolloffFactor self val = liftDOM (void (self ^. jss "rolloffFactor" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.rolloffFactor Mozilla webkitAudioPannerNode.rolloffFactor documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/rolloffFactor MDN PannerNode.rolloffFactor documentation>
 getRolloffFactor :: (MonadDOM m) => PannerNode -> m Double
-getRolloffFactor self
-  = liftDOM ((self ^. js "rolloffFactor") >>= valToNumber)
+getRolloffFactor self = liftDOM (((self ^. js "rolloffFactor") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneInnerAngle Mozilla webkitAudioPannerNode.coneInnerAngle documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/coneInnerAngle MDN PannerNode.coneInnerAngle documentation>
 setConeInnerAngle :: (MonadDOM m) => PannerNode -> Double -> m ()
-setConeInnerAngle self val
-  = liftDOM (self ^. jss "coneInnerAngle" (toJSVal val))
+setConeInnerAngle self val = liftDOM (void (self ^. jss "coneInnerAngle" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneInnerAngle Mozilla webkitAudioPannerNode.coneInnerAngle documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/coneInnerAngle MDN PannerNode.coneInnerAngle documentation>
 getConeInnerAngle :: (MonadDOM m) => PannerNode -> m Double
-getConeInnerAngle self
-  = liftDOM ((self ^. js "coneInnerAngle") >>= valToNumber)
+getConeInnerAngle self = liftDOM (((self ^. js "coneInnerAngle") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneOuterAngle Mozilla webkitAudioPannerNode.coneOuterAngle documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/coneOuterAngle MDN PannerNode.coneOuterAngle documentation>
 setConeOuterAngle :: (MonadDOM m) => PannerNode -> Double -> m ()
-setConeOuterAngle self val
-  = liftDOM (self ^. jss "coneOuterAngle" (toJSVal val))
+setConeOuterAngle self val = liftDOM (void (self ^. jss "coneOuterAngle" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneOuterAngle Mozilla webkitAudioPannerNode.coneOuterAngle documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/coneOuterAngle MDN PannerNode.coneOuterAngle documentation>
 getConeOuterAngle :: (MonadDOM m) => PannerNode -> m Double
-getConeOuterAngle self
-  = liftDOM ((self ^. js "coneOuterAngle") >>= valToNumber)
+getConeOuterAngle self = liftDOM (((self ^. js "coneOuterAngle") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneOuterGain Mozilla webkitAudioPannerNode.coneOuterGain documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/coneOuterGain MDN PannerNode.coneOuterGain documentation>
 setConeOuterGain :: (MonadDOM m) => PannerNode -> Double -> m ()
-setConeOuterGain self val
-  = liftDOM (self ^. jss "coneOuterGain" (toJSVal val))
+setConeOuterGain self val = liftDOM (void (self ^. jss "coneOuterGain" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneOuterGain Mozilla webkitAudioPannerNode.coneOuterGain documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PannerNode/coneOuterGain MDN PannerNode.coneOuterGain documentation>
 getConeOuterGain :: (MonadDOM m) => PannerNode -> m Double
-getConeOuterGain self
-  = liftDOM ((self ^. js "coneOuterGain") >>= valToNumber)
+getConeOuterGain self = liftDOM (((self ^. js "coneOuterGain") >>= valToNumber))
diff --git a/src/JSDOM/Generated/PannerOptions.hs b/src/JSDOM/Generated/PannerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PannerOptions.hs
@@ -0,0 +1,244 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.PannerOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#PannerOptions PannerOptions specification>
+newPannerOptions :: (MonadDOM m) => m PannerOptions
+newPannerOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-panningmodel PannerOptions.panningModel specification>
+setPanningModel :: (MonadDOM m) => PannerOptions -> PanningModelType -> m ()
+setPanningModel self val = liftDOM (void (self ^. jss "panningModel" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-panningmodel PannerOptions.panningModel specification>
+getPanningModel :: (MonadDOM m) => PannerOptions -> m (Maybe PanningModelType)
+getPanningModel self = liftDOM (((self ^. js "panningModel") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-panningmodel PannerOptions.panningModel specification>
+getPanningModelUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m PanningModelType
+getPanningModelUnsafe self = liftDOM ((((self ^. js "panningModel") >>= 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 (((self ^. js "panningModel") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-distancemodel PannerOptions.distanceModel specification>
+setDistanceModel :: (MonadDOM m) => PannerOptions -> DistanceModelType -> m ()
+setDistanceModel self val = liftDOM (void (self ^. jss "distanceModel" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-distancemodel PannerOptions.distanceModel specification>
+getDistanceModel :: (MonadDOM m) => PannerOptions -> m (Maybe DistanceModelType)
+getDistanceModel self = liftDOM (((self ^. js "distanceModel") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-distancemodel PannerOptions.distanceModel specification>
+getDistanceModelUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m DistanceModelType
+getDistanceModelUnsafe self = liftDOM ((((self ^. js "distanceModel") >>= 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 (((self ^. js "distanceModel") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positionx PannerOptions.positionX specification>
+setPositionX :: (MonadDOM m) => PannerOptions -> Float -> m ()
+setPositionX self val = liftDOM (void (self ^. jss "positionX" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positionx PannerOptions.positionX specification>
+getPositionX :: (MonadDOM m) => PannerOptions -> m (Maybe Float)
+getPositionX self = liftDOM (((self ^. js "positionX") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positionx PannerOptions.positionX specification>
+getPositionXUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Float
+getPositionXUnsafe self = liftDOM ((((self ^. js "positionX") >>= 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 ((P.realToFrac <$> ((self ^. js "positionX") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positiony PannerOptions.positionY specification>
+setPositionY :: (MonadDOM m) => PannerOptions -> Float -> m ()
+setPositionY self val = liftDOM (void (self ^. jss "positionY" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positiony PannerOptions.positionY specification>
+getPositionY :: (MonadDOM m) => PannerOptions -> m (Maybe Float)
+getPositionY self = liftDOM (((self ^. js "positionY") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positiony PannerOptions.positionY specification>
+getPositionYUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Float
+getPositionYUnsafe self = liftDOM ((((self ^. js "positionY") >>= 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 ((P.realToFrac <$> ((self ^. js "positionY") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positionz PannerOptions.positionZ specification>
+setPositionZ :: (MonadDOM m) => PannerOptions -> Float -> m ()
+setPositionZ self val = liftDOM (void (self ^. jss "positionZ" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positionz PannerOptions.positionZ specification>
+getPositionZ :: (MonadDOM m) => PannerOptions -> m (Maybe Float)
+getPositionZ self = liftDOM (((self ^. js "positionZ") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-positionz PannerOptions.positionZ specification>
+getPositionZUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Float
+getPositionZUnsafe self = liftDOM ((((self ^. js "positionZ") >>= 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 ((P.realToFrac <$> ((self ^. js "positionZ") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationx PannerOptions.orientationX specification>
+setOrientationX :: (MonadDOM m) => PannerOptions -> Float -> m ()
+setOrientationX self val = liftDOM (void (self ^. jss "orientationX" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationx PannerOptions.orientationX specification>
+getOrientationX :: (MonadDOM m) => PannerOptions -> m (Maybe Float)
+getOrientationX self = liftDOM (((self ^. js "orientationX") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationx PannerOptions.orientationX specification>
+getOrientationXUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Float
+getOrientationXUnsafe self = liftDOM ((((self ^. js "orientationX") >>= 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 ((P.realToFrac <$> ((self ^. js "orientationX") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationy PannerOptions.orientationY specification>
+setOrientationY :: (MonadDOM m) => PannerOptions -> Float -> m ()
+setOrientationY self val = liftDOM (void (self ^. jss "orientationY" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationy PannerOptions.orientationY specification>
+getOrientationY :: (MonadDOM m) => PannerOptions -> m (Maybe Float)
+getOrientationY self = liftDOM (((self ^. js "orientationY") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationy PannerOptions.orientationY specification>
+getOrientationYUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Float
+getOrientationYUnsafe self = liftDOM ((((self ^. js "orientationY") >>= 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 ((P.realToFrac <$> ((self ^. js "orientationY") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationz PannerOptions.orientationZ specification>
+setOrientationZ :: (MonadDOM m) => PannerOptions -> Float -> m ()
+setOrientationZ self val = liftDOM (void (self ^. jss "orientationZ" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationz PannerOptions.orientationZ specification>
+getOrientationZ :: (MonadDOM m) => PannerOptions -> m (Maybe Float)
+getOrientationZ self = liftDOM (((self ^. js "orientationZ") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-orientationz PannerOptions.orientationZ specification>
+getOrientationZUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Float
+getOrientationZUnsafe self = liftDOM ((((self ^. js "orientationZ") >>= 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 ((P.realToFrac <$> ((self ^. js "orientationZ") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-refdistance PannerOptions.refDistance specification>
+setRefDistance :: (MonadDOM m) => PannerOptions -> Double -> m ()
+setRefDistance self val = liftDOM (void (self ^. jss "refDistance" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-refdistance PannerOptions.refDistance specification>
+getRefDistance :: (MonadDOM m) => PannerOptions -> m (Maybe Double)
+getRefDistance self = liftDOM (((self ^. js "refDistance") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-refdistance PannerOptions.refDistance specification>
+getRefDistanceUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Double
+getRefDistanceUnsafe self = liftDOM ((((self ^. js "refDistance") >>= 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 (((self ^. js "refDistance") >>= valToNumber))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-maxdistance PannerOptions.maxDistance specification>
+setMaxDistance :: (MonadDOM m) => PannerOptions -> Double -> m ()
+setMaxDistance self val = liftDOM (void (self ^. jss "maxDistance" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-maxdistance PannerOptions.maxDistance specification>
+getMaxDistance :: (MonadDOM m) => PannerOptions -> m (Maybe Double)
+getMaxDistance self = liftDOM (((self ^. js "maxDistance") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-maxdistance PannerOptions.maxDistance specification>
+getMaxDistanceUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Double
+getMaxDistanceUnsafe self = liftDOM ((((self ^. js "maxDistance") >>= 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 (((self ^. js "maxDistance") >>= valToNumber))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-rollofffactor PannerOptions.rolloffFactor specification>
+setRolloffFactor :: (MonadDOM m) => PannerOptions -> Double -> m ()
+setRolloffFactor self val = liftDOM (void (self ^. jss "rolloffFactor" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-rollofffactor PannerOptions.rolloffFactor specification>
+getRolloffFactor :: (MonadDOM m) => PannerOptions -> m (Maybe Double)
+getRolloffFactor self = liftDOM (((self ^. js "rolloffFactor") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-rollofffactor PannerOptions.rolloffFactor specification>
+getRolloffFactorUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Double
+getRolloffFactorUnsafe self = liftDOM ((((self ^. js "rolloffFactor") >>= 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 (((self ^. js "rolloffFactor") >>= valToNumber))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneinnerangle PannerOptions.coneInnerAngle specification>
+setConeInnerAngle :: (MonadDOM m) => PannerOptions -> Double -> m ()
+setConeInnerAngle self val = liftDOM (void (self ^. jss "coneInnerAngle" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneinnerangle PannerOptions.coneInnerAngle specification>
+getConeInnerAngle :: (MonadDOM m) => PannerOptions -> m (Maybe Double)
+getConeInnerAngle self = liftDOM (((self ^. js "coneInnerAngle") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneinnerangle PannerOptions.coneInnerAngle specification>
+getConeInnerAngleUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Double
+getConeInnerAngleUnsafe self = liftDOM ((((self ^. js "coneInnerAngle") >>= 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 (((self ^. js "coneInnerAngle") >>= valToNumber))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneouterangle PannerOptions.coneOuterAngle specification>
+setConeOuterAngle :: (MonadDOM m) => PannerOptions -> Double -> m ()
+setConeOuterAngle self val = liftDOM (void (self ^. jss "coneOuterAngle" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneouterangle PannerOptions.coneOuterAngle specification>
+getConeOuterAngle :: (MonadDOM m) => PannerOptions -> m (Maybe Double)
+getConeOuterAngle self = liftDOM (((self ^. js "coneOuterAngle") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneouterangle PannerOptions.coneOuterAngle specification>
+getConeOuterAngleUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Double
+getConeOuterAngleUnsafe self = liftDOM ((((self ^. js "coneOuterAngle") >>= 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 (((self ^. js "coneOuterAngle") >>= valToNumber))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneoutergain PannerOptions.coneOuterGain specification>
+setConeOuterGain :: (MonadDOM m) => PannerOptions -> Double -> m ()
+setConeOuterGain self val = liftDOM (void (self ^. jss "coneOuterGain" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneoutergain PannerOptions.coneOuterGain specification>
+getConeOuterGain :: (MonadDOM m) => PannerOptions -> m (Maybe Double)
+getConeOuterGain self = liftDOM (((self ^. js "coneOuterGain") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-panneroptions-coneoutergain PannerOptions.coneOuterGain specification>
+getConeOuterGainUnsafe :: (MonadDOM m, HasCallStack) => PannerOptions -> m Double
+getConeOuterGainUnsafe self = liftDOM ((((self ^. js "coneOuterGain") >>= 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 (((self ^. js "coneOuterGain") >>= valToNumber))
diff --git a/src/JSDOM/Generated/ParentNode.hs b/src/JSDOM/Generated/ParentNode.hs
--- a/src/JSDOM/Generated/ParentNode.hs
+++ b/src/JSDOM/Generated/ParentNode.hs
@@ -1,163 +1,88 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.ParentNode
-       (prepend, append, querySelector, querySelector_,
-        querySelectorUnsafe, querySelectorUnchecked, querySelectorAll,
-        querySelectorAll_, getChildren, getFirstElementChild,
-        getFirstElementChildUnsafe, getFirstElementChildUnchecked,
-        getLastElementChild, getLastElementChildUnsafe,
-        getLastElementChildUnchecked, getChildElementCount, ParentNode(..),
-        gTypeParentNode, IsParentNode, toParentNode)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.prepend Mozilla ParentNode.prepend documentation> 
-prepend ::
-        (MonadDOM m, IsParentNode self, IsNodeOrString nodes) =>
-          self -> [nodes] -> m ()
-prepend self nodes
-  = liftDOM
-      (void
-         ((toParentNode self) ^. jsf "prepend" [toJSVal (array nodes)]))
+-- | <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 ((Types.toParentNode self) ^. jsf "append" ([] ++ P.map toJSVal nodes)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.append Mozilla ParentNode.append documentation> 
-append ::
-       (MonadDOM m, IsParentNode self, IsNodeOrString nodes) =>
-         self -> [nodes] -> m ()
-append self nodes
-  = liftDOM
-      (void
-         ((toParentNode self) ^. jsf "append" [toJSVal (array nodes)]))
+-- | <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 ((Types.toParentNode self) ^. jsf "moveBefore" [toJSVal node, toJSVal child]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelector Mozilla ParentNode.querySelector documentation> 
-querySelector ::
-              (MonadDOM m, IsParentNode self, ToJSString selectors) =>
-                self -> selectors -> m (Maybe Element)
-querySelector self selectors
-  = liftDOM
-      (((toParentNode self) ^. jsf "querySelector" [toJSVal selectors])
-         >>= fromJSVal)
+-- | <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 ((Types.toParentNode self) ^. jsf "prepend" ([] ++ P.map toJSVal nodes)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelector Mozilla ParentNode.querySelector documentation> 
-querySelector_ ::
-               (MonadDOM m, IsParentNode self, ToJSString selectors) =>
-                 self -> selectors -> m ()
-querySelector_ self selectors
-  = liftDOM
-      (void
-         ((toParentNode self) ^. jsf "querySelector" [toJSVal selectors]))
+-- | <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 ((((Types.toParentNode self) ^. jsf "querySelector" [toJSVal selectors]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelector Mozilla ParentNode.querySelector documentation> 
-querySelectorUnsafe ::
-                    (MonadDOM m, IsParentNode self, ToJSString selectors,
-                     HasCallStack) =>
-                      self -> selectors -> m Element
-querySelectorUnsafe self selectors
-  = liftDOM
-      ((((toParentNode self) ^. jsf "querySelector" [toJSVal selectors])
-          >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <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 ((Types.toParentNode self) ^. jsf "querySelector" [toJSVal selectors]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelector Mozilla ParentNode.querySelector documentation> 
-querySelectorUnchecked ::
-                       (MonadDOM m, IsParentNode self, ToJSString selectors) =>
-                         self -> selectors -> m Element
-querySelectorUnchecked self selectors
-  = liftDOM
-      (((toParentNode self) ^. jsf "querySelector" [toJSVal selectors])
-         >>= fromJSValUnchecked)
+-- | <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 (((((Types.toParentNode self) ^. jsf "querySelector" [toJSVal selectors]) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelectorAll Mozilla ParentNode.querySelectorAll documentation> 
-querySelectorAll ::
-                 (MonadDOM m, IsParentNode self, ToJSString selectors) =>
-                   self -> selectors -> m NodeList
-querySelectorAll self selectors
-  = liftDOM
-      (((toParentNode self) ^. jsf "querySelectorAll"
-          [toJSVal selectors])
-         >>= fromJSValUnchecked)
+-- | <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 ((((Types.toParentNode self) ^. jsf "querySelector" [toJSVal selectors]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelectorAll Mozilla ParentNode.querySelectorAll documentation> 
-querySelectorAll_ ::
-                  (MonadDOM m, IsParentNode self, ToJSString selectors) =>
-                    self -> selectors -> m ()
-querySelectorAll_ self selectors
-  = liftDOM
-      (void
-         ((toParentNode self) ^. jsf "querySelectorAll"
-            [toJSVal selectors]))
+-- | <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 ((((Types.toParentNode self) ^. jsf "querySelectorAll" [toJSVal selectors]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.children Mozilla ParentNode.children documentation> 
-getChildren ::
-            (MonadDOM m, IsParentNode self) => self -> m HTMLCollection
-getChildren self
-  = liftDOM
-      (((toParentNode self) ^. js "children") >>= fromJSValUnchecked)
+-- | <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 ((Types.toParentNode self) ^. jsf "querySelectorAll" [toJSVal selectors]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.firstElementChild Mozilla ParentNode.firstElementChild documentation> 
-getFirstElementChild ::
-                     (MonadDOM m, IsParentNode self) => self -> m (Maybe Element)
-getFirstElementChild self
-  = liftDOM
-      (((toParentNode self) ^. js "firstElementChild") >>= fromJSVal)
+-- | <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 ((Types.toParentNode self) ^. jsf "replaceChildren" ([] ++ P.map toJSVal nodes)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.firstElementChild Mozilla ParentNode.firstElementChild documentation> 
-getFirstElementChildUnsafe ::
-                           (MonadDOM m, IsParentNode self, HasCallStack) => self -> m Element
-getFirstElementChildUnsafe self
-  = liftDOM
-      ((((toParentNode self) ^. js "firstElementChild") >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Document/children MDN ParentNode.children documentation>
+getChildren :: (MonadDOM m, IsParentNode self) => self -> m HTMLCollection
+getChildren self = liftDOM ((((Types.toParentNode self) ^. js "children") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.firstElementChild Mozilla ParentNode.firstElementChild documentation> 
-getFirstElementChildUnchecked ::
-                              (MonadDOM m, IsParentNode self) => self -> m Element
-getFirstElementChildUnchecked self
-  = liftDOM
-      (((toParentNode self) ^. js "firstElementChild") >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toParentNode self) ^. js "firstElementChild") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.lastElementChild Mozilla ParentNode.lastElementChild documentation> 
-getLastElementChild ::
-                    (MonadDOM m, IsParentNode self) => self -> m (Maybe Element)
-getLastElementChild self
-  = liftDOM
-      (((toParentNode self) ^. js "lastElementChild") >>= fromJSVal)
+-- | <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 (((((Types.toParentNode self) ^. js "firstElementChild") >>= 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 ::
-                          (MonadDOM m, IsParentNode self, HasCallStack) => self -> m Element
-getLastElementChildUnsafe self
-  = liftDOM
-      ((((toParentNode self) ^. js "lastElementChild") >>= fromJSVal) >>=
-         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 ((((Types.toParentNode self) ^. js "firstElementChild") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.lastElementChild Mozilla ParentNode.lastElementChild documentation> 
-getLastElementChildUnchecked ::
-                             (MonadDOM m, IsParentNode self) => self -> m Element
-getLastElementChildUnchecked self
-  = liftDOM
-      (((toParentNode self) ^. js "lastElementChild") >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toParentNode self) ^. js "lastElementChild") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.childElementCount Mozilla ParentNode.childElementCount documentation> 
-getChildElementCount ::
-                     (MonadDOM m, IsParentNode self) => self -> m Word
-getChildElementCount self
-  = liftDOM
-      (round <$>
-         (((toParentNode self) ^. js "childElementCount") >>= valToNumber))
+-- | <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 (((((Types.toParentNode self) ^. js "lastElementChild") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.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 ((((Types.toParentNode self) ^. js "lastElementChild") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Document/childElementCount MDN ParentNode.childElementCount documentation>
+getChildElementCount :: (MonadDOM m, IsParentNode self) => self -> m Word
+getChildElementCount self = liftDOM ((P.round <$> (((Types.toParentNode self) ^. js "childElementCount") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/ParseHTMLUnsafeOptions.hs b/src/JSDOM/Generated/ParseHTMLUnsafeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ParseHTMLUnsafeOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.ParseHTMLUnsafeOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#parsehtmlunsafeoptions ParseHTMLUnsafeOptions specification>
+newParseHTMLUnsafeOptions :: (MonadDOM m) => m ParseHTMLUnsafeOptions
+newParseHTMLUnsafeOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "sanitizer" (toJSVal val)))
+
+-- | <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 (((self ^. js "sanitizer") >>= 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 ((((self ^. js "sanitizer") >>= 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 (((self ^. js "sanitizer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PasswordCredential.hs b/src/JSDOM/Generated/PasswordCredential.hs
--- a/src/JSDOM/Generated/PasswordCredential.hs
+++ b/src/JSDOM/Generated/PasswordCredential.hs
@@ -1,91 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
 module JSDOM.Generated.PasswordCredential
-       (newPasswordCredential, newPasswordCredential', setIdName,
-        getIdName, setPasswordName, getPasswordName, setAdditionalData,
-        getAdditionalData, getAdditionalDataUnsafe,
-        getAdditionalDataUnchecked, PasswordCredential(..),
-        gTypePasswordCredential)
+       (newPasswordCredential', newPasswordCredential, PasswordCredential(..), gTypePasswordCredential)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential Mozilla PasswordCredential documentation> 
-newPasswordCredential ::
-                      (MonadDOM m) => PasswordCredentialData -> m PasswordCredential
-newPasswordCredential data'
-  = liftDOM
-      (PasswordCredential <$>
-         new (jsg "PasswordCredential") [toJSVal data'])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential Mozilla PasswordCredential documentation> 
-newPasswordCredential' ::
-                       (MonadDOM m) => HTMLFormElement -> m PasswordCredential
-newPasswordCredential' form
-  = liftDOM
-      (PasswordCredential <$>
-         new (jsg "PasswordCredential") [toJSVal form])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.idName Mozilla PasswordCredential.idName documentation> 
-setIdName ::
-          (MonadDOM m, ToJSString val) => PasswordCredential -> val -> m ()
-setIdName self val = liftDOM (self ^. jss "idName" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.idName Mozilla PasswordCredential.idName documentation> 
-getIdName ::
-          (MonadDOM m, FromJSString result) => PasswordCredential -> m result
-getIdName self
-  = liftDOM ((self ^. js "idName") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.passwordName Mozilla PasswordCredential.passwordName documentation> 
-setPasswordName ::
-                (MonadDOM m, ToJSString val) => PasswordCredential -> val -> m ()
-setPasswordName self val
-  = liftDOM (self ^. jss "passwordName" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.passwordName Mozilla PasswordCredential.passwordName documentation> 
-getPasswordName ::
-                (MonadDOM m, FromJSString result) => PasswordCredential -> m result
-getPasswordName self
-  = liftDOM ((self ^. js "passwordName") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.additionalData Mozilla PasswordCredential.additionalData documentation> 
-setAdditionalData ::
-                  (MonadDOM m, IsCredentialBodyType val) =>
-                    PasswordCredential -> Maybe val -> m ()
-setAdditionalData self val
-  = liftDOM (self ^. jss "additionalData" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.additionalData Mozilla PasswordCredential.additionalData documentation> 
-getAdditionalData ::
-                  (MonadDOM m) => PasswordCredential -> m (Maybe CredentialBodyType)
-getAdditionalData self
-  = liftDOM ((self ^. js "additionalData") >>= fromJSVal)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.additionalData Mozilla PasswordCredential.additionalData documentation> 
-getAdditionalDataUnsafe ::
-                        (MonadDOM m, HasCallStack) =>
-                          PasswordCredential -> m CredentialBodyType
-getAdditionalDataUnsafe self
-  = liftDOM
-      (((self ^. js "additionalData") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/PasswordCredential/PasswordCredential MDN PasswordCredential. documentation>
+newPasswordCredential' :: (MonadDOM m) => HTMLFormElement -> m PasswordCredential
+newPasswordCredential' form = liftDOM (((new (jsg "PasswordCredential") [toJSVal form]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.additionalData Mozilla PasswordCredential.additionalData documentation> 
-getAdditionalDataUnchecked ::
-                           (MonadDOM m) => PasswordCredential -> m CredentialBodyType
-getAdditionalDataUnchecked self
-  = liftDOM ((self ^. js "additionalData") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/PasswordCredential/PasswordCredential MDN PasswordCredential. documentation>
+newPasswordCredential :: (MonadDOM m) => PasswordCredentialData -> m PasswordCredential
+newPasswordCredential data' = liftDOM (((new (jsg "PasswordCredential") [toJSVal data']) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PasswordCredentialData.hs b/src/JSDOM/Generated/PasswordCredentialData.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PasswordCredentialData.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from credential-management-1 (webref). Do not edit.
+module JSDOM.Generated.PasswordCredentialData
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "id" (toJSVal id)) P.>> (o ^. jss "origin" (toJSVal origin)) P.>> (o ^. jss "password" (toJSVal password)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "name" (toJSVal val)))
+
+-- | <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 (((self ^. js "name") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "name") >>= fromMaybeJSString) >>= 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 (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "iconURL" (toJSVal val)))
+
+-- | <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 (((self ^. js "iconURL") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "iconURL") >>= fromMaybeJSString) >>= 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 (((self ^. js "iconURL") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "origin" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-passwordcredentialdata-origin PasswordCredentialData.origin specification>
+getOrigin :: (MonadDOM m, FromJSString result) => PasswordCredentialData -> m result
+getOrigin self = liftDOM (((self ^. js "origin") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "password" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-credential-management/#dom-passwordcredentialdata-password PasswordCredentialData.password specification>
+getPassword :: (MonadDOM m, FromJSString result) => PasswordCredentialData -> m result
+getPassword self = liftDOM (((self ^. js "password") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Path2D.hs b/src/JSDOM/Generated/Path2D.hs
--- a/src/JSDOM/Generated/Path2D.hs
+++ b/src/JSDOM/Generated/Path2D.hs
@@ -1,47 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.Path2D
-       (newPath2D, newPath2D', newPath2D'', addPath, addPathWithTransform,
-        Path2D(..), gTypePath2D)
+       (newPath2D, newPath2D', addPath, addPath', Path2D(..), gTypePath2D)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Path2D/Path2D MDN Path2D. documentation>
 newPath2D :: (MonadDOM m) => m Path2D
-newPath2D = liftDOM (Path2D <$> new (jsg "Path2D") ())
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation> 
-newPath2D' :: (MonadDOM m) => Path2D -> m Path2D
-newPath2D' path
-  = liftDOM (Path2D <$> new (jsg "Path2D") [toJSVal path])
+newPath2D = liftDOM (((new (jsg "Path2D") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation> 
-newPath2D'' :: (MonadDOM m, ToJSString text) => text -> m Path2D
-newPath2D'' text
-  = liftDOM (Path2D <$> new (jsg "Path2D") [toJSVal text])
+-- | <https://developer.mozilla.org/docs/Web/API/Path2D/Path2D MDN Path2D. documentation>
+newPath2D' :: (MonadDOM m, IsPath2DOrString path) => Maybe path -> m Path2D
+newPath2D' path = liftDOM (((new (jsg "Path2D") [P.maybe (P.return jsUndefined) toJSVal path]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.addPath Mozilla Path2D.addPath documentation> 
-addPath :: (MonadDOM m) => Path2D -> Maybe Path2D -> m ()
-addPath self path
-  = liftDOM (void (self ^. jsf "addPath" [toJSVal path]))
+-- | <https://developer.mozilla.org/docs/Web/API/Path2D/addPath MDN Path2D.addPath documentation>
+addPath :: (MonadDOM m) => Path2D -> Path2D -> m ()
+addPath self path = liftDOM (void (self ^. jsf "addPath" [toJSVal path]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.addPath Mozilla Path2D.addPath documentation> 
-addPathWithTransform ::
-                     (MonadDOM m) => Path2D -> Maybe Path2D -> SVGMatrix -> m ()
-addPathWithTransform self path transform
-  = liftDOM
-      (void (self ^. jsf "addPath" [toJSVal path, toJSVal transform]))
+-- | <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 (self ^. jsf "addPath" [toJSVal path, P.maybe (P.return jsUndefined) toJSVal transform]))
diff --git a/src/JSDOM/Generated/PayerErrors.hs b/src/JSDOM/Generated/PayerErrors.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PayerErrors.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PayerErrors
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/payment-request/#dom-payererrors PayerErrors specification>
+newPayerErrors :: (MonadDOM m) => m PayerErrors
+newPayerErrors = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "email" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-email PayerErrors.email specification>
+getEmail :: (MonadDOM m, FromJSString result) => PayerErrors -> m (Maybe result)
+getEmail self = liftDOM (((self ^. js "email") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-email PayerErrors.email specification>
+getEmailUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PayerErrors -> m result
+getEmailUnsafe self = liftDOM ((((self ^. js "email") >>= fromMaybeJSString) >>= 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 (((self ^. js "email") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "name" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-name PayerErrors.name specification>
+getName :: (MonadDOM m, FromJSString result) => PayerErrors -> m (Maybe result)
+getName self = liftDOM (((self ^. js "name") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-name PayerErrors.name specification>
+getNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PayerErrors -> m result
+getNameUnsafe self = liftDOM ((((self ^. js "name") >>= fromMaybeJSString) >>= 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 (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "phone" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-phone PayerErrors.phone specification>
+getPhone :: (MonadDOM m, FromJSString result) => PayerErrors -> m (Maybe result)
+getPhone self = liftDOM (((self ^. js "phone") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/payment-request/#dom-payererrors-phone PayerErrors.phone specification>
+getPhoneUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PayerErrors -> m result
+getPhoneUnsafe self = liftDOM ((((self ^. js "phone") >>= fromMaybeJSString) >>= 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 (((self ^. js "phone") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PaymentCompleteDetails.hs b/src/JSDOM/Generated/PaymentCompleteDetails.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentCompleteDetails.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PaymentCompleteDetails
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentcompletedetails PaymentCompleteDetails specification>
+newPaymentCompleteDetails :: (MonadDOM m) => m PaymentCompleteDetails
+newPaymentCompleteDetails = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentcompletedetails-data PaymentCompleteDetails.data specification>
+setData :: (MonadDOM m) => PaymentCompleteDetails -> Maybe GObject -> m ()
+setData self val = liftDOM (void (self ^. jss "data" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentcompletedetails-data PaymentCompleteDetails.data specification>
+getData :: (MonadDOM m) => PaymentCompleteDetails -> m (Maybe GObject)
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentcompletedetails-data PaymentCompleteDetails.data specification>
+getDataUnsafe :: (MonadDOM m, HasCallStack) => PaymentCompleteDetails -> m GObject
+getDataUnsafe self = liftDOM ((((self ^. js "data") >>= 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 (((self ^. js "data") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PaymentCredentialInstrument.hs b/src/JSDOM/Generated/PaymentCredentialInstrument.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentCredentialInstrument.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from secure-payment-confirmation (webref). Do not edit.
+module JSDOM.Generated.PaymentCredentialInstrument
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "displayName" (toJSVal displayName)) P.>> (o ^. jss "icon" (toJSVal icon)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "displayName" (toJSVal val)))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymentcredentialinstrument-displayname PaymentCredentialInstrument.displayName specification>
+getDisplayName :: (MonadDOM m, FromJSString result) => PaymentCredentialInstrument -> m result
+getDisplayName self = liftDOM (((self ^. js "displayName") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "icon" (toJSVal val)))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymentcredentialinstrument-icon PaymentCredentialInstrument.icon specification>
+getIcon :: (MonadDOM m, FromJSString result) => PaymentCredentialInstrument -> m result
+getIcon self = liftDOM (((self ^. js "icon") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymentcredentialinstrument-iconmustbeshown PaymentCredentialInstrument.iconMustBeShown specification>
+setIconMustBeShown :: (MonadDOM m) => PaymentCredentialInstrument -> Bool -> m ()
+setIconMustBeShown self val = liftDOM (void (self ^. jss "iconMustBeShown" (toJSVal val)))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymentcredentialinstrument-iconmustbeshown PaymentCredentialInstrument.iconMustBeShown specification>
+getIconMustBeShown :: (MonadDOM m) => PaymentCredentialInstrument -> m (Maybe Bool)
+getIconMustBeShown self = liftDOM (((self ^. js "iconMustBeShown") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymentcredentialinstrument-iconmustbeshown PaymentCredentialInstrument.iconMustBeShown specification>
+getIconMustBeShownUnsafe :: (MonadDOM m, HasCallStack) => PaymentCredentialInstrument -> m Bool
+getIconMustBeShownUnsafe self = liftDOM ((((self ^. js "iconMustBeShown") >>= 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 (((self ^. js "iconMustBeShown") >>= valToBool))
+
+-- | <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 (self ^. jss "details" (toJSVal val)))
+
+-- | <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 (((self ^. js "details") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "details") >>= fromMaybeJSString) >>= 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 (((self ^. js "details") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PaymentCurrencyAmount.hs b/src/JSDOM/Generated/PaymentCurrencyAmount.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentCurrencyAmount.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PaymentCurrencyAmount
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "currency" (toJSVal currency)) P.>> (o ^. jss "value" (toJSVal value)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "currency" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentcurrencyamount-currency PaymentCurrencyAmount.currency specification>
+getCurrency :: (MonadDOM m, FromJSString result) => PaymentCurrencyAmount -> m result
+getCurrency self = liftDOM (((self ^. js "currency") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "value" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentcurrencyamount-value PaymentCurrencyAmount.value specification>
+getValue :: (MonadDOM m, FromJSString result) => PaymentCurrencyAmount -> m result
+getValue self = liftDOM (((self ^. js "value") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PaymentDetailsBase.hs b/src/JSDOM/Generated/PaymentDetailsBase.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentDetailsBase.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PaymentDetailsBase
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsbase PaymentDetailsBase specification>
+newPaymentDetailsBase :: (MonadDOM m) => m PaymentDetailsBase
+newPaymentDetailsBase = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toPaymentDetailsBase self) ^. jss "displayItems" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsbase-displayitems PaymentDetailsBase.displayItems specification>
+getDisplayItems :: (MonadDOM m, IsPaymentDetailsBase self) => self -> m (Maybe [PaymentItem])
+getDisplayItems self = liftDOM ((((Types.toPaymentDetailsBase self) ^. js "displayItems") >>= 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 (((((Types.toPaymentDetailsBase self) ^. js "displayItems") >>= 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 ((((Types.toPaymentDetailsBase self) ^. js "displayItems") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toPaymentDetailsBase self) ^. jss "shippingOptions" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsbase-shippingoptions PaymentDetailsBase.shippingOptions specification>
+getShippingOptions :: (MonadDOM m, IsPaymentDetailsBase self) => self -> m (Maybe [PaymentShippingOption])
+getShippingOptions self = liftDOM ((((Types.toPaymentDetailsBase self) ^. js "shippingOptions") >>= 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 (((((Types.toPaymentDetailsBase self) ^. js "shippingOptions") >>= 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 ((((Types.toPaymentDetailsBase self) ^. js "shippingOptions") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toPaymentDetailsBase self) ^. jss "modifiers" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsbase-modifiers PaymentDetailsBase.modifiers specification>
+getModifiers :: (MonadDOM m, IsPaymentDetailsBase self) => self -> m (Maybe [PaymentDetailsModifier])
+getModifiers self = liftDOM ((((Types.toPaymentDetailsBase self) ^. js "modifiers") >>= 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 (((((Types.toPaymentDetailsBase self) ^. js "modifiers") >>= 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 ((((Types.toPaymentDetailsBase self) ^. js "modifiers") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PaymentDetailsInit.hs b/src/JSDOM/Generated/PaymentDetailsInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentDetailsInit.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PaymentDetailsInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsinit PaymentDetailsInit specification>
+newPaymentDetailsInit :: (MonadDOM m) => PaymentItem -> m PaymentDetailsInit
+newPaymentDetailsInit total = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "total" (toJSVal total)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "id" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsinit-id PaymentDetailsInit.id specification>
+getId :: (MonadDOM m, FromJSString result) => PaymentDetailsInit -> m (Maybe result)
+getId self = liftDOM (((self ^. js "id") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsinit-id PaymentDetailsInit.id specification>
+getIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PaymentDetailsInit -> m result
+getIdUnsafe self = liftDOM ((((self ^. js "id") >>= fromMaybeJSString) >>= 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 (((self ^. js "id") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsinit-total PaymentDetailsInit.total specification>
+setTotal :: (MonadDOM m) => PaymentDetailsInit -> PaymentItem -> m ()
+setTotal self val = liftDOM (void (self ^. jss "total" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsinit-total PaymentDetailsInit.total specification>
+getTotal :: (MonadDOM m) => PaymentDetailsInit -> m PaymentItem
+getTotal self = liftDOM (((self ^. js "total") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PaymentDetailsModifier.hs b/src/JSDOM/Generated/PaymentDetailsModifier.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentDetailsModifier.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PaymentDetailsModifier
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier PaymentDetailsModifier specification>
+newPaymentDetailsModifier :: (MonadDOM m, ToJSString supportedMethods) => supportedMethods -> m PaymentDetailsModifier
+newPaymentDetailsModifier supportedMethods = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "supportedMethods" (toJSVal supportedMethods)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "supportedMethods" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-supportedmethods PaymentDetailsModifier.supportedMethods specification>
+getSupportedMethods :: (MonadDOM m, FromJSString result) => PaymentDetailsModifier -> m result
+getSupportedMethods self = liftDOM (((self ^. js "supportedMethods") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-total PaymentDetailsModifier.total specification>
+setTotal :: (MonadDOM m) => PaymentDetailsModifier -> PaymentItem -> m ()
+setTotal self val = liftDOM (void (self ^. jss "total" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-total PaymentDetailsModifier.total specification>
+getTotal :: (MonadDOM m) => PaymentDetailsModifier -> m (Maybe PaymentItem)
+getTotal self = liftDOM (((self ^. js "total") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-total PaymentDetailsModifier.total specification>
+getTotalUnsafe :: (MonadDOM m, HasCallStack) => PaymentDetailsModifier -> m PaymentItem
+getTotalUnsafe self = liftDOM ((((self ^. js "total") >>= 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 (((self ^. js "total") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-additionaldisplayitems PaymentDetailsModifier.additionalDisplayItems specification>
+setAdditionalDisplayItems :: (MonadDOM m) => PaymentDetailsModifier -> [PaymentItem] -> m ()
+setAdditionalDisplayItems self val = liftDOM (void (self ^. jss "additionalDisplayItems" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-additionaldisplayitems PaymentDetailsModifier.additionalDisplayItems specification>
+getAdditionalDisplayItems :: (MonadDOM m) => PaymentDetailsModifier -> m (Maybe [PaymentItem])
+getAdditionalDisplayItems self = liftDOM (((self ^. js "additionalDisplayItems") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-additionaldisplayitems PaymentDetailsModifier.additionalDisplayItems specification>
+getAdditionalDisplayItemsUnsafe :: (MonadDOM m, HasCallStack) => PaymentDetailsModifier -> m [PaymentItem]
+getAdditionalDisplayItemsUnsafe self = liftDOM ((((self ^. js "additionalDisplayItems") >>= 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 (((self ^. js "additionalDisplayItems") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-data PaymentDetailsModifier.data specification>
+setData :: (MonadDOM m) => PaymentDetailsModifier -> GObject -> m ()
+setData self val = liftDOM (void (self ^. jss "data" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-data PaymentDetailsModifier.data specification>
+getData :: (MonadDOM m) => PaymentDetailsModifier -> m (Maybe GObject)
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsmodifier-data PaymentDetailsModifier.data specification>
+getDataUnsafe :: (MonadDOM m, HasCallStack) => PaymentDetailsModifier -> m GObject
+getDataUnsafe self = liftDOM ((((self ^. js "data") >>= 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 (((self ^. js "data") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PaymentDetailsUpdate.hs b/src/JSDOM/Generated/PaymentDetailsUpdate.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentDetailsUpdate.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PaymentDetailsUpdate
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate PaymentDetailsUpdate specification>
+newPaymentDetailsUpdate :: (MonadDOM m) => m PaymentDetailsUpdate
+newPaymentDetailsUpdate = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "error" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-error PaymentDetailsUpdate.error specification>
+getError :: (MonadDOM m, FromJSString result) => PaymentDetailsUpdate -> m (Maybe result)
+getError self = liftDOM (((self ^. js "error") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-error PaymentDetailsUpdate.error specification>
+getErrorUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PaymentDetailsUpdate -> m result
+getErrorUnsafe self = liftDOM ((((self ^. js "error") >>= fromMaybeJSString) >>= 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 (((self ^. js "error") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-total PaymentDetailsUpdate.total specification>
+setTotal :: (MonadDOM m) => PaymentDetailsUpdate -> PaymentItem -> m ()
+setTotal self val = liftDOM (void (self ^. jss "total" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-total PaymentDetailsUpdate.total specification>
+getTotal :: (MonadDOM m) => PaymentDetailsUpdate -> m (Maybe PaymentItem)
+getTotal self = liftDOM (((self ^. js "total") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-total PaymentDetailsUpdate.total specification>
+getTotalUnsafe :: (MonadDOM m, HasCallStack) => PaymentDetailsUpdate -> m PaymentItem
+getTotalUnsafe self = liftDOM ((((self ^. js "total") >>= 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 (((self ^. js "total") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-shippingaddresserrors PaymentDetailsUpdate.shippingAddressErrors specification>
+setShippingAddressErrors :: (MonadDOM m) => PaymentDetailsUpdate -> AddressErrors -> m ()
+setShippingAddressErrors self val = liftDOM (void (self ^. jss "shippingAddressErrors" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-shippingaddresserrors PaymentDetailsUpdate.shippingAddressErrors specification>
+getShippingAddressErrors :: (MonadDOM m) => PaymentDetailsUpdate -> m (Maybe AddressErrors)
+getShippingAddressErrors self = liftDOM (((self ^. js "shippingAddressErrors") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-shippingaddresserrors PaymentDetailsUpdate.shippingAddressErrors specification>
+getShippingAddressErrorsUnsafe :: (MonadDOM m, HasCallStack) => PaymentDetailsUpdate -> m AddressErrors
+getShippingAddressErrorsUnsafe self = liftDOM ((((self ^. js "shippingAddressErrors") >>= 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 (((self ^. js "shippingAddressErrors") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-payererrors PaymentDetailsUpdate.payerErrors specification>
+setPayerErrors :: (MonadDOM m) => PaymentDetailsUpdate -> PayerErrors -> m ()
+setPayerErrors self val = liftDOM (void (self ^. jss "payerErrors" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-payererrors PaymentDetailsUpdate.payerErrors specification>
+getPayerErrors :: (MonadDOM m) => PaymentDetailsUpdate -> m (Maybe PayerErrors)
+getPayerErrors self = liftDOM (((self ^. js "payerErrors") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-payererrors PaymentDetailsUpdate.payerErrors specification>
+getPayerErrorsUnsafe :: (MonadDOM m, HasCallStack) => PaymentDetailsUpdate -> m PayerErrors
+getPayerErrorsUnsafe self = liftDOM ((((self ^. js "payerErrors") >>= 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 (((self ^. js "payerErrors") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-paymentmethoderrors PaymentDetailsUpdate.paymentMethodErrors specification>
+setPaymentMethodErrors :: (MonadDOM m) => PaymentDetailsUpdate -> GObject -> m ()
+setPaymentMethodErrors self val = liftDOM (void (self ^. jss "paymentMethodErrors" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-paymentmethoderrors PaymentDetailsUpdate.paymentMethodErrors specification>
+getPaymentMethodErrors :: (MonadDOM m) => PaymentDetailsUpdate -> m (Maybe GObject)
+getPaymentMethodErrors self = liftDOM (((self ^. js "paymentMethodErrors") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentdetailsupdate-paymentmethoderrors PaymentDetailsUpdate.paymentMethodErrors specification>
+getPaymentMethodErrorsUnsafe :: (MonadDOM m, HasCallStack) => PaymentDetailsUpdate -> m GObject
+getPaymentMethodErrorsUnsafe self = liftDOM ((((self ^. js "paymentMethodErrors") >>= 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 (((self ^. js "paymentMethodErrors") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PaymentEntityLogo.hs b/src/JSDOM/Generated/PaymentEntityLogo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentEntityLogo.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from secure-payment-confirmation (webref). Do not edit.
+module JSDOM.Generated.PaymentEntityLogo
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "url" (toJSVal url)) P.>> (o ^. jss "label" (toJSVal label)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "url" (toJSVal val)))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymententitylogo-url PaymentEntityLogo.url specification>
+getUrl :: (MonadDOM m, FromJSString result) => PaymentEntityLogo -> m result
+getUrl self = liftDOM (((self ^. js "url") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "label" (toJSVal val)))
+
+-- | <https://w3c.github.io/secure-payment-confirmation/#dom-paymententitylogo-label PaymentEntityLogo.label specification>
+getLabel :: (MonadDOM m, FromJSString result) => PaymentEntityLogo -> m result
+getLabel self = liftDOM (((self ^. js "label") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PaymentItem.hs b/src/JSDOM/Generated/PaymentItem.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentItem.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PaymentItem
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentitem PaymentItem specification>
+newPaymentItem :: (MonadDOM m, ToJSString label) => label -> PaymentCurrencyAmount -> m PaymentItem
+newPaymentItem label amount = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "label" (toJSVal label)) P.>> (o ^. jss "amount" (toJSVal amount)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "label" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentitem-label PaymentItem.label specification>
+getLabel :: (MonadDOM m, FromJSString result) => PaymentItem -> m result
+getLabel self = liftDOM (((self ^. js "label") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentitem-amount PaymentItem.amount specification>
+setAmount :: (MonadDOM m) => PaymentItem -> PaymentCurrencyAmount -> m ()
+setAmount self val = liftDOM (void (self ^. jss "amount" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentitem-amount PaymentItem.amount specification>
+getAmount :: (MonadDOM m) => PaymentItem -> m PaymentCurrencyAmount
+getAmount self = liftDOM (((self ^. js "amount") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentitem-pending PaymentItem.pending specification>
+setPending :: (MonadDOM m) => PaymentItem -> Bool -> m ()
+setPending self val = liftDOM (void (self ^. jss "pending" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentitem-pending PaymentItem.pending specification>
+getPending :: (MonadDOM m) => PaymentItem -> m (Maybe Bool)
+getPending self = liftDOM (((self ^. js "pending") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentitem-pending PaymentItem.pending specification>
+getPendingUnsafe :: (MonadDOM m, HasCallStack) => PaymentItem -> m Bool
+getPendingUnsafe self = liftDOM ((((self ^. js "pending") >>= 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 (((self ^. js "pending") >>= valToBool))
diff --git a/src/JSDOM/Generated/PaymentMethodChangeEvent.hs b/src/JSDOM/Generated/PaymentMethodChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentMethodChangeEvent.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PaymentMethodChangeEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "PaymentMethodChangeEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentMethodChangeEvent/methodName MDN PaymentMethodChangeEvent.methodName documentation>
+getMethodName :: (MonadDOM m, FromJSString result) => PaymentMethodChangeEvent -> m result
+getMethodName self = liftDOM (((self ^. js "methodName") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentMethodChangeEvent/methodDetails MDN PaymentMethodChangeEvent.methodDetails documentation>
+getMethodDetails :: (MonadDOM m) => PaymentMethodChangeEvent -> m (Maybe GObject)
+getMethodDetails self = liftDOM (((self ^. js "methodDetails") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentMethodChangeEvent/methodDetails MDN PaymentMethodChangeEvent.methodDetails documentation>
+getMethodDetailsUnsafe :: (MonadDOM m, HasCallStack) => PaymentMethodChangeEvent -> m GObject
+getMethodDetailsUnsafe self = liftDOM ((((self ^. js "methodDetails") >>= 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 (((self ^. js "methodDetails") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PaymentMethodChangeEventInit.hs b/src/JSDOM/Generated/PaymentMethodChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentMethodChangeEventInit.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PaymentMethodChangeEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethodchangeeventinit PaymentMethodChangeEventInit specification>
+newPaymentMethodChangeEventInit :: (MonadDOM m) => m PaymentMethodChangeEventInit
+newPaymentMethodChangeEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "methodName" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethodchangeeventinit-methodname PaymentMethodChangeEventInit.methodName specification>
+getMethodName :: (MonadDOM m, FromJSString result) => PaymentMethodChangeEventInit -> m (Maybe result)
+getMethodName self = liftDOM (((self ^. js "methodName") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethodchangeeventinit-methodname PaymentMethodChangeEventInit.methodName specification>
+getMethodNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PaymentMethodChangeEventInit -> m result
+getMethodNameUnsafe self = liftDOM ((((self ^. js "methodName") >>= fromMaybeJSString) >>= 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 (((self ^. js "methodName") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethodchangeeventinit-methoddetails PaymentMethodChangeEventInit.methodDetails specification>
+setMethodDetails :: (MonadDOM m) => PaymentMethodChangeEventInit -> Maybe GObject -> m ()
+setMethodDetails self val = liftDOM (void (self ^. jss "methodDetails" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethodchangeeventinit-methoddetails PaymentMethodChangeEventInit.methodDetails specification>
+getMethodDetails :: (MonadDOM m) => PaymentMethodChangeEventInit -> m (Maybe GObject)
+getMethodDetails self = liftDOM (((self ^. js "methodDetails") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethodchangeeventinit-methoddetails PaymentMethodChangeEventInit.methodDetails specification>
+getMethodDetailsUnsafe :: (MonadDOM m, HasCallStack) => PaymentMethodChangeEventInit -> m GObject
+getMethodDetailsUnsafe self = liftDOM ((((self ^. js "methodDetails") >>= 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 (((self ^. js "methodDetails") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PaymentMethodData.hs b/src/JSDOM/Generated/PaymentMethodData.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentMethodData.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PaymentMethodData
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethoddata PaymentMethodData specification>
+newPaymentMethodData :: (MonadDOM m, ToJSString supportedMethods) => supportedMethods -> m PaymentMethodData
+newPaymentMethodData supportedMethods = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "supportedMethods" (toJSVal supportedMethods)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "supportedMethods" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethoddata-supportedmethods PaymentMethodData.supportedMethods specification>
+getSupportedMethods :: (MonadDOM m, FromJSString result) => PaymentMethodData -> m result
+getSupportedMethods self = liftDOM (((self ^. js "supportedMethods") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethoddata-data PaymentMethodData.data specification>
+setData :: (MonadDOM m) => PaymentMethodData -> GObject -> m ()
+setData self val = liftDOM (void (self ^. jss "data" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethoddata-data PaymentMethodData.data specification>
+getData :: (MonadDOM m) => PaymentMethodData -> m (Maybe GObject)
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentmethoddata-data PaymentMethodData.data specification>
+getDataUnsafe :: (MonadDOM m, HasCallStack) => PaymentMethodData -> m GObject
+getDataUnsafe self = liftDOM ((((self ^. js "data") >>= 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 (((self ^. js "data") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PaymentOptions.hs b/src/JSDOM/Generated/PaymentOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentOptions.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PaymentOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions PaymentOptions specification>
+newPaymentOptions :: (MonadDOM m) => m PaymentOptions
+newPaymentOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayername PaymentOptions.requestPayerName specification>
+setRequestPayerName :: (MonadDOM m) => PaymentOptions -> Bool -> m ()
+setRequestPayerName self val = liftDOM (void (self ^. jss "requestPayerName" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayername PaymentOptions.requestPayerName specification>
+getRequestPayerName :: (MonadDOM m) => PaymentOptions -> m (Maybe Bool)
+getRequestPayerName self = liftDOM (((self ^. js "requestPayerName") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayername PaymentOptions.requestPayerName specification>
+getRequestPayerNameUnsafe :: (MonadDOM m, HasCallStack) => PaymentOptions -> m Bool
+getRequestPayerNameUnsafe self = liftDOM ((((self ^. js "requestPayerName") >>= 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 (((self ^. js "requestPayerName") >>= valToBool))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestbillingaddress PaymentOptions.requestBillingAddress specification>
+setRequestBillingAddress :: (MonadDOM m) => PaymentOptions -> Bool -> m ()
+setRequestBillingAddress self val = liftDOM (void (self ^. jss "requestBillingAddress" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestbillingaddress PaymentOptions.requestBillingAddress specification>
+getRequestBillingAddress :: (MonadDOM m) => PaymentOptions -> m (Maybe Bool)
+getRequestBillingAddress self = liftDOM (((self ^. js "requestBillingAddress") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestbillingaddress PaymentOptions.requestBillingAddress specification>
+getRequestBillingAddressUnsafe :: (MonadDOM m, HasCallStack) => PaymentOptions -> m Bool
+getRequestBillingAddressUnsafe self = liftDOM ((((self ^. js "requestBillingAddress") >>= 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 (((self ^. js "requestBillingAddress") >>= valToBool))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayeremail PaymentOptions.requestPayerEmail specification>
+setRequestPayerEmail :: (MonadDOM m) => PaymentOptions -> Bool -> m ()
+setRequestPayerEmail self val = liftDOM (void (self ^. jss "requestPayerEmail" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayeremail PaymentOptions.requestPayerEmail specification>
+getRequestPayerEmail :: (MonadDOM m) => PaymentOptions -> m (Maybe Bool)
+getRequestPayerEmail self = liftDOM (((self ^. js "requestPayerEmail") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayeremail PaymentOptions.requestPayerEmail specification>
+getRequestPayerEmailUnsafe :: (MonadDOM m, HasCallStack) => PaymentOptions -> m Bool
+getRequestPayerEmailUnsafe self = liftDOM ((((self ^. js "requestPayerEmail") >>= 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 (((self ^. js "requestPayerEmail") >>= valToBool))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayerphone PaymentOptions.requestPayerPhone specification>
+setRequestPayerPhone :: (MonadDOM m) => PaymentOptions -> Bool -> m ()
+setRequestPayerPhone self val = liftDOM (void (self ^. jss "requestPayerPhone" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayerphone PaymentOptions.requestPayerPhone specification>
+getRequestPayerPhone :: (MonadDOM m) => PaymentOptions -> m (Maybe Bool)
+getRequestPayerPhone self = liftDOM (((self ^. js "requestPayerPhone") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestpayerphone PaymentOptions.requestPayerPhone specification>
+getRequestPayerPhoneUnsafe :: (MonadDOM m, HasCallStack) => PaymentOptions -> m Bool
+getRequestPayerPhoneUnsafe self = liftDOM ((((self ^. js "requestPayerPhone") >>= 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 (((self ^. js "requestPayerPhone") >>= valToBool))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestshipping PaymentOptions.requestShipping specification>
+setRequestShipping :: (MonadDOM m) => PaymentOptions -> Bool -> m ()
+setRequestShipping self val = liftDOM (void (self ^. jss "requestShipping" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestshipping PaymentOptions.requestShipping specification>
+getRequestShipping :: (MonadDOM m) => PaymentOptions -> m (Maybe Bool)
+getRequestShipping self = liftDOM (((self ^. js "requestShipping") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-requestshipping PaymentOptions.requestShipping specification>
+getRequestShippingUnsafe :: (MonadDOM m, HasCallStack) => PaymentOptions -> m Bool
+getRequestShippingUnsafe self = liftDOM ((((self ^. js "requestShipping") >>= 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 (((self ^. js "requestShipping") >>= valToBool))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-shippingtype PaymentOptions.shippingType specification>
+setShippingType :: (MonadDOM m) => PaymentOptions -> PaymentShippingType -> m ()
+setShippingType self val = liftDOM (void (self ^. jss "shippingType" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-shippingtype PaymentOptions.shippingType specification>
+getShippingType :: (MonadDOM m) => PaymentOptions -> m (Maybe PaymentShippingType)
+getShippingType self = liftDOM (((self ^. js "shippingType") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentoptions-shippingtype PaymentOptions.shippingType specification>
+getShippingTypeUnsafe :: (MonadDOM m, HasCallStack) => PaymentOptions -> m PaymentShippingType
+getShippingTypeUnsafe self = liftDOM ((((self ^. js "shippingType") >>= 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 (((self ^. js "shippingType") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PaymentRequest.hs b/src/JSDOM/Generated/PaymentRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentRequest.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PaymentRequest
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "PaymentRequest") [toJSVal methodData, toJSVal details, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/abort MDN PaymentRequest.abort documentation>
+abort :: (MonadDOM m) => PaymentRequest -> m ()
+abort self = liftDOM (void (((self ^. jsf "abort" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/canMakePayment MDN PaymentRequest.canMakePayment documentation>
+canMakePayment :: (MonadDOM m) => PaymentRequest -> m Bool
+canMakePayment self = liftDOM (((((self ^. jsf "canMakePayment" ()) >>= readPromise)) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/canMakePayment MDN PaymentRequest.canMakePayment documentation>
+canMakePayment_ :: (MonadDOM m) => PaymentRequest -> m ()
+canMakePayment_ self = liftDOM (void (((self ^. jsf "canMakePayment" ()) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "show" [P.maybe (P.return jsUndefined) toJSVal detailsPromise]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "show" [P.maybe (P.return jsUndefined) toJSVal detailsPromise]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/id MDN PaymentRequest.id documentation>
+getId :: (MonadDOM m, FromJSString result) => PaymentRequest -> m result
+getId self = liftDOM (((self ^. js "id") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/shippingAddress MDN PaymentRequest.shippingAddress documentation>
+getShippingAddress :: (MonadDOM m) => PaymentRequest -> m (Maybe ContactAddress)
+getShippingAddress self = liftDOM (((self ^. js "shippingAddress") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/shippingAddress MDN PaymentRequest.shippingAddress documentation>
+getShippingAddressUnsafe :: (MonadDOM m, HasCallStack) => PaymentRequest -> m ContactAddress
+getShippingAddressUnsafe self = liftDOM ((((self ^. js "shippingAddress") >>= 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 (((self ^. js "shippingAddress") >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. js "shippingOption") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "shippingOption") >>= fromMaybeJSString) >>= 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 (((self ^. js "shippingOption") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/shippingType MDN PaymentRequest.shippingType documentation>
+getShippingType :: (MonadDOM m) => PaymentRequest -> m (Maybe PaymentShippingType)
+getShippingType self = liftDOM (((self ^. js "shippingType") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentRequest/shippingType MDN PaymentRequest.shippingType documentation>
+getShippingTypeUnsafe :: (MonadDOM m, HasCallStack) => PaymentRequest -> m PaymentShippingType
+getShippingTypeUnsafe self = liftDOM ((((self ^. js "shippingType") >>= 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 (((self ^. js "shippingType") >>= fromJSValUnchecked))
+
+-- | <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/JSDOM/Generated/PaymentRequestUpdateEvent.hs b/src/JSDOM/Generated/PaymentRequestUpdateEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentRequestUpdateEvent.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PaymentRequestUpdateEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "PaymentRequestUpdateEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toPaymentRequestUpdateEvent self) ^. jsf "updateWith" [toJSVal detailsPromise]))
diff --git a/src/JSDOM/Generated/PaymentRequestUpdateEventInit.hs b/src/JSDOM/Generated/PaymentRequestUpdateEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentRequestUpdateEventInit.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PaymentRequestUpdateEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentrequestupdateeventinit PaymentRequestUpdateEventInit specification>
+newPaymentRequestUpdateEventInit :: (MonadDOM m) => m PaymentRequestUpdateEventInit
+newPaymentRequestUpdateEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PaymentResponse.hs b/src/JSDOM/Generated/PaymentResponse.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentResponse.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PaymentResponse
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "complete" [P.maybe (P.return jsUndefined) toJSVal result', P.maybe (P.return jsUndefined) toJSVal details]) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "retry" [P.maybe (P.return jsUndefined) toJSVal errorFields]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/toJSON MDN PaymentResponse.toJSON documentation>
+toJSON :: (MonadDOM m) => PaymentResponse -> m GObject
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/toJSON MDN PaymentResponse.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PaymentResponse -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/requestId MDN PaymentResponse.requestId documentation>
+getRequestId :: (MonadDOM m, FromJSString result) => PaymentResponse -> m result
+getRequestId self = liftDOM (((self ^. js "requestId") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/methodName MDN PaymentResponse.methodName documentation>
+getMethodName :: (MonadDOM m, FromJSString result) => PaymentResponse -> m result
+getMethodName self = liftDOM (((self ^. js "methodName") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/details MDN PaymentResponse.details documentation>
+getDetails :: (MonadDOM m) => PaymentResponse -> m GObject
+getDetails self = liftDOM (((self ^. js "details") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/shippingAddress MDN PaymentResponse.shippingAddress documentation>
+getShippingAddress :: (MonadDOM m) => PaymentResponse -> m (Maybe ContactAddress)
+getShippingAddress self = liftDOM (((self ^. js "shippingAddress") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PaymentResponse/shippingAddress MDN PaymentResponse.shippingAddress documentation>
+getShippingAddressUnsafe :: (MonadDOM m, HasCallStack) => PaymentResponse -> m ContactAddress
+getShippingAddressUnsafe self = liftDOM ((((self ^. js "shippingAddress") >>= 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 (((self ^. js "shippingAddress") >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. js "shippingOption") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "shippingOption") >>= fromMaybeJSString) >>= 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 (((self ^. js "shippingOption") >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. js "payerName") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "payerName") >>= fromMaybeJSString) >>= 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 (((self ^. js "payerName") >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. js "payerEmail") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "payerEmail") >>= fromMaybeJSString) >>= 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 (((self ^. js "payerEmail") >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. js "payerPhone") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "payerPhone") >>= fromMaybeJSString) >>= 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 (((self ^. js "payerPhone") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentresponse-onpayerdetailchange payerdetailchange event>
+payerdetailchange :: EventName PaymentResponse PaymentRequestUpdateEvent
+payerdetailchange = unsafeEventName (toJSString "payerdetailchange")
diff --git a/src/JSDOM/Generated/PaymentShippingOption.hs b/src/JSDOM/Generated/PaymentShippingOption.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentShippingOption.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PaymentShippingOption
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "id" (toJSVal id)) P.>> (o ^. jss "label" (toJSVal label)) P.>> (o ^. jss "amount" (toJSVal amount)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "id" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption-id PaymentShippingOption.id specification>
+getId :: (MonadDOM m, FromJSString result) => PaymentShippingOption -> m result
+getId self = liftDOM (((self ^. js "id") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "label" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption-label PaymentShippingOption.label specification>
+getLabel :: (MonadDOM m, FromJSString result) => PaymentShippingOption -> m result
+getLabel self = liftDOM (((self ^. js "label") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption-amount PaymentShippingOption.amount specification>
+setAmount :: (MonadDOM m) => PaymentShippingOption -> PaymentCurrencyAmount -> m ()
+setAmount self val = liftDOM (void (self ^. jss "amount" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption-amount PaymentShippingOption.amount specification>
+getAmount :: (MonadDOM m) => PaymentShippingOption -> m PaymentCurrencyAmount
+getAmount self = liftDOM (((self ^. js "amount") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption-selected PaymentShippingOption.selected specification>
+setSelected :: (MonadDOM m) => PaymentShippingOption -> Bool -> m ()
+setSelected self val = liftDOM (void (self ^. jss "selected" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption-selected PaymentShippingOption.selected specification>
+getSelected :: (MonadDOM m) => PaymentShippingOption -> m (Maybe Bool)
+getSelected self = liftDOM (((self ^. js "selected") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentshippingoption-selected PaymentShippingOption.selected specification>
+getSelectedUnsafe :: (MonadDOM m, HasCallStack) => PaymentShippingOption -> m Bool
+getSelectedUnsafe self = liftDOM ((((self ^. js "selected") >>= 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 (((self ^. js "selected") >>= valToBool))
diff --git a/src/JSDOM/Generated/PaymentValidationErrors.hs b/src/JSDOM/Generated/PaymentValidationErrors.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PaymentValidationErrors.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from payment-request (webref). Do not edit.
+module JSDOM.Generated.PaymentValidationErrors
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors PaymentValidationErrors specification>
+newPaymentValidationErrors :: (MonadDOM m) => m PaymentValidationErrors
+newPaymentValidationErrors = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-payer PaymentValidationErrors.payer specification>
+setPayer :: (MonadDOM m) => PaymentValidationErrors -> PayerErrors -> m ()
+setPayer self val = liftDOM (void (self ^. jss "payer" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-payer PaymentValidationErrors.payer specification>
+getPayer :: (MonadDOM m) => PaymentValidationErrors -> m (Maybe PayerErrors)
+getPayer self = liftDOM (((self ^. js "payer") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-payer PaymentValidationErrors.payer specification>
+getPayerUnsafe :: (MonadDOM m, HasCallStack) => PaymentValidationErrors -> m PayerErrors
+getPayerUnsafe self = liftDOM ((((self ^. js "payer") >>= 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 (((self ^. js "payer") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-shippingaddress PaymentValidationErrors.shippingAddress specification>
+setShippingAddress :: (MonadDOM m) => PaymentValidationErrors -> AddressErrors -> m ()
+setShippingAddress self val = liftDOM (void (self ^. jss "shippingAddress" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-shippingaddress PaymentValidationErrors.shippingAddress specification>
+getShippingAddress :: (MonadDOM m) => PaymentValidationErrors -> m (Maybe AddressErrors)
+getShippingAddress self = liftDOM (((self ^. js "shippingAddress") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-shippingaddress PaymentValidationErrors.shippingAddress specification>
+getShippingAddressUnsafe :: (MonadDOM m, HasCallStack) => PaymentValidationErrors -> m AddressErrors
+getShippingAddressUnsafe self = liftDOM ((((self ^. js "shippingAddress") >>= 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 (((self ^. js "shippingAddress") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "error" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-error PaymentValidationErrors.error specification>
+getError :: (MonadDOM m, FromJSString result) => PaymentValidationErrors -> m (Maybe result)
+getError self = liftDOM (((self ^. js "error") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-error PaymentValidationErrors.error specification>
+getErrorUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PaymentValidationErrors -> m result
+getErrorUnsafe self = liftDOM ((((self ^. js "error") >>= fromMaybeJSString) >>= 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 (((self ^. js "error") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-paymentmethod PaymentValidationErrors.paymentMethod specification>
+setPaymentMethod :: (MonadDOM m) => PaymentValidationErrors -> GObject -> m ()
+setPaymentMethod self val = liftDOM (void (self ^. jss "paymentMethod" (toJSVal val)))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-paymentmethod PaymentValidationErrors.paymentMethod specification>
+getPaymentMethod :: (MonadDOM m) => PaymentValidationErrors -> m (Maybe GObject)
+getPaymentMethod self = liftDOM (((self ^. js "paymentMethod") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/payment-request/#dom-paymentvalidationerrors-paymentmethod PaymentValidationErrors.paymentMethod specification>
+getPaymentMethodUnsafe :: (MonadDOM m, HasCallStack) => PaymentValidationErrors -> m GObject
+getPaymentMethodUnsafe self = liftDOM ((((self ^. js "paymentMethod") >>= 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 (((self ^. js "paymentMethod") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Performance.hs b/src/JSDOM/Generated/Performance.hs
--- a/src/JSDOM/Generated/Performance.hs
+++ b/src/JSDOM/Generated/Performance.hs
@@ -1,140 +1,120 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from hr-time-3 (webref). Do not edit.
 module JSDOM.Generated.Performance
-       (now, now_, getEntries, getEntries_, getEntriesByType,
-        getEntriesByType_, getEntriesByName, getEntriesByName_,
-        clearResourceTimings, setResourceTimingBufferSize, mark,
-        clearMarks, measure, clearMeasures, getNavigation, getTiming,
-        resourceTimingBufferFull, Performance(..), gTypePerformance)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.now Mozilla Performance.now documentation> 
-now :: (MonadDOM m) => Performance -> m DOMHighResTimeStamp
-now self = liftDOM ((self ^. jsf "now" ()) >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "clearMarks" [P.maybe (P.return jsUndefined) toJSVal markName]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.now Mozilla Performance.now documentation> 
-now_ :: (MonadDOM m) => Performance -> m ()
-now_ self = liftDOM (void (self ^. jsf "now" ()))
+-- | <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 (self ^. jsf "clearMeasures" [P.maybe (P.return jsUndefined) toJSVal measureName]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntries Mozilla Performance.getEntries documentation> 
-getEntries :: (MonadDOM m) => Performance -> m PerformanceEntryList
-getEntries self
-  = liftDOM ((self ^. jsf "getEntries" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/clearResourceTimings MDN Performance.clearResourceTimings documentation>
+clearResourceTimings :: (MonadDOM m) => Performance -> m ()
+clearResourceTimings self = liftDOM (void (self ^. jsf "clearResourceTimings" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntries Mozilla Performance.getEntries documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/getEntries MDN Performance.getEntries documentation>
+getEntries :: (MonadDOM m) => Performance -> m [PerformanceEntry]
+getEntries self = liftDOM (((self ^. jsf "getEntries" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/getEntries MDN Performance.getEntries documentation>
 getEntries_ :: (MonadDOM m) => Performance -> m ()
 getEntries_ self = liftDOM (void (self ^. jsf "getEntries" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntriesByType Mozilla Performance.getEntriesByType documentation> 
-getEntriesByType ::
-                 (MonadDOM m, ToJSString entryType) =>
-                   Performance -> entryType -> m PerformanceEntryList
-getEntriesByType self entryType
-  = liftDOM
-      ((self ^. jsf "getEntriesByType" [toJSVal entryType]) >>=
-         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 [PerformanceEntry]
+getEntriesByName self name type' = liftDOM (((self ^. jsf "getEntriesByName" [toJSVal name, P.maybe (P.return jsUndefined) toJSVal type']) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntriesByType Mozilla Performance.getEntriesByType documentation> 
-getEntriesByType_ ::
-                  (MonadDOM m, ToJSString entryType) =>
-                    Performance -> entryType -> m ()
-getEntriesByType_ self entryType
-  = liftDOM
-      (void (self ^. jsf "getEntriesByType" [toJSVal entryType]))
+-- | <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 (self ^. jsf "getEntriesByName" [toJSVal name, P.maybe (P.return jsUndefined) toJSVal type']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntriesByName Mozilla Performance.getEntriesByName documentation> 
-getEntriesByName ::
-                 (MonadDOM m, ToJSString name, ToJSString entryType) =>
-                   Performance -> name -> Maybe entryType -> m PerformanceEntryList
-getEntriesByName self name entryType
-  = liftDOM
-      ((self ^. jsf "getEntriesByName" [toJSVal name, toJSVal entryType])
-         >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "getEntriesByType" [toJSVal type']) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntriesByName Mozilla Performance.getEntriesByName documentation> 
-getEntriesByName_ ::
-                  (MonadDOM m, ToJSString name, ToJSString entryType) =>
-                    Performance -> name -> Maybe entryType -> m ()
-getEntriesByName_ self name entryType
-  = liftDOM
-      (void
-         (self ^. jsf "getEntriesByName" [toJSVal name, toJSVal entryType]))
+-- | <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 (self ^. jsf "getEntriesByType" [toJSVal type']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.clearResourceTimings Mozilla Performance.clearResourceTimings documentation> 
-clearResourceTimings :: (MonadDOM m) => Performance -> m ()
-clearResourceTimings self
-  = liftDOM (void (self ^. jsf "clearResourceTimings" ()))
+-- | <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 (((self ^. jsf "mark" [toJSVal markName]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.setResourceTimingBufferSize Mozilla Performance.setResourceTimingBufferSize documentation> 
-setResourceTimingBufferSize ::
-                            (MonadDOM m) => Performance -> Word -> m ()
-setResourceTimingBufferSize self maxSize
-  = liftDOM
-      (void
-         (self ^. jsf "setResourceTimingBufferSize" [toJSVal maxSize]))
+-- | <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 (self ^. jsf "mark" [toJSVal markName]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.mark Mozilla Performance.mark documentation> 
-mark ::
-     (MonadDOM m, ToJSString markName) =>
-       Performance -> markName -> m ()
-mark self markName
-  = liftDOM (void (self ^. jsf "mark" [toJSVal markName]))
+-- | <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 (((self ^. jsf "mark" [toJSVal markName, P.maybe (P.return jsUndefined) toJSVal markOptions]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.clearMarks Mozilla Performance.clearMarks documentation> 
-clearMarks ::
-           (MonadDOM m, ToJSString markName) =>
-             Performance -> Maybe markName -> m ()
-clearMarks self markName
-  = liftDOM (void (self ^. jsf "clearMarks" [toJSVal markName]))
+-- | <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 (self ^. jsf "mark" [toJSVal markName, P.maybe (P.return jsUndefined) toJSVal markOptions]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.measure Mozilla Performance.measure documentation> 
-measure ::
-        (MonadDOM m, ToJSString measureName, ToJSString startMark,
-         ToJSString endMark) =>
-          Performance ->
-            measureName -> Maybe startMark -> Maybe endMark -> m ()
-measure self measureName startMark endMark
-  = liftDOM
-      (void
-         (self ^. jsf "measure"
-            [toJSVal measureName, toJSVal startMark, toJSVal 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 PerformanceMeasure
+measure self measureName startOrMeasureOptions endMark = liftDOM (((self ^. jsf "measure" [toJSVal measureName, P.maybe (P.return jsUndefined) toJSVal startOrMeasureOptions, P.maybe (P.return jsUndefined) toJSVal endMark]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.clearMeasures Mozilla Performance.clearMeasures documentation> 
-clearMeasures ::
-              (MonadDOM m, ToJSString measureName) =>
-                Performance -> Maybe measureName -> m ()
-clearMeasures self measureName
-  = liftDOM
-      (void (self ^. jsf "clearMeasures" [toJSVal measureName]))
+-- | <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 (self ^. jsf "measure" [toJSVal measureName, P.maybe (P.return jsUndefined) toJSVal startOrMeasureOptions, P.maybe (P.return jsUndefined) toJSVal endMark]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.navigation Mozilla Performance.navigation documentation> 
-getNavigation ::
-              (MonadDOM m) => Performance -> m PerformanceNavigation
-getNavigation self
-  = liftDOM ((self ^. js "navigation") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/now MDN Performance.now documentation>
+now :: (MonadDOM m) => Performance -> m Double
+now self = liftDOM (((self ^. jsf "now" ()) >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.timing Mozilla Performance.timing documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/now MDN Performance.now documentation>
+now_ :: (MonadDOM m) => Performance -> m ()
+now_ self = liftDOM (void (self ^. jsf "now" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/setResourceTimingBufferSize MDN Performance.setResourceTimingBufferSize documentation>
+setResourceTimingBufferSize :: (MonadDOM m) => Performance -> Word -> m ()
+setResourceTimingBufferSize self maxSize = liftDOM (void (self ^. jsf "setResourceTimingBufferSize" [toJSVal maxSize]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/toJSON MDN Performance.toJSON documentation>
+toJSON :: (MonadDOM m) => Performance -> m GObject
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/toJSON MDN Performance.toJSON documentation>
+toJSON_ :: (MonadDOM m) => Performance -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/timeOrigin MDN Performance.timeOrigin documentation>
+getTimeOrigin :: (MonadDOM m) => Performance -> m Double
+getTimeOrigin self = liftDOM (((self ^. js "timeOrigin") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/eventCounts MDN Performance.eventCounts documentation>
+getEventCounts :: (MonadDOM m) => Performance -> m EventCounts
+getEventCounts self = liftDOM (((self ^. js "eventCounts") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/interactionCount MDN Performance.interactionCount documentation>
+getInteractionCount :: (MonadDOM m) => Performance -> m Word53
+getInteractionCount self = liftDOM (((self ^. js "interactionCount") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/timing MDN Performance.timing documentation>
 getTiming :: (MonadDOM m) => Performance -> m PerformanceTiming
-getTiming self
-  = liftDOM ((self ^. js "timing") >>= fromJSValUnchecked)
+getTiming self = liftDOM (((self ^. js "timing") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.onresourcetimingbufferfull Mozilla Performance.onresourcetimingbufferfull documentation> 
-resourceTimingBufferFull ::
-                           EventName Performance onresourcetimingbufferfull
-resourceTimingBufferFull
-  = unsafeEventName (toJSString "resourcetimingbufferfull")
+-- | <https://developer.mozilla.org/docs/Web/API/Performance/navigation MDN Performance.navigation documentation>
+getNavigation :: (MonadDOM m) => Performance -> m PerformanceNavigation
+getNavigation self = liftDOM (((self ^. js "navigation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/resource-timing/#dom-performance-onresourcetimingbufferfull resourcetimingbufferfull event>
+resourceTimingBufferFull :: EventName Performance Event
+resourceTimingBufferFull = unsafeEventName (toJSString "resourcetimingbufferfull")
diff --git a/src/JSDOM/Generated/PerformanceEntry.hs b/src/JSDOM/Generated/PerformanceEntry.hs
--- a/src/JSDOM/Generated/PerformanceEntry.hs
+++ b/src/JSDOM/Generated/PerformanceEntry.hs
@@ -1,57 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- 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 JSDOM.Generated.PerformanceEntry
-       (getName, getEntryType, getStartTime, getDuration,
-        PerformanceEntry(..), gTypePerformanceEntry, IsPerformanceEntry,
-        toPerformanceEntry)
+       (toJSON, toJSON_, getName, getEntryType, getStartTime, getDuration, PerformanceEntry(..), gTypePerformanceEntry, IsPerformanceEntry, toPerformanceEntry)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.name Mozilla PerformanceEntry.name documentation> 
-getName ::
-        (MonadDOM m, IsPerformanceEntry self, FromJSString result) =>
-          self -> m result
-getName self
-  = liftDOM
-      (((toPerformanceEntry self) ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEntry/toJSON MDN PerformanceEntry.toJSON documentation>
+toJSON :: (MonadDOM m, IsPerformanceEntry self) => self -> m GObject
+toJSON self = liftDOM ((((Types.toPerformanceEntry self) ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.entryType Mozilla PerformanceEntry.entryType documentation> 
-getEntryType ::
-             (MonadDOM m, IsPerformanceEntry self, FromJSString result) =>
-               self -> m result
-getEntryType self
-  = liftDOM
-      (((toPerformanceEntry self) ^. js "entryType") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEntry/toJSON MDN PerformanceEntry.toJSON documentation>
+toJSON_ :: (MonadDOM m, IsPerformanceEntry self) => self -> m ()
+toJSON_ self = liftDOM (void ((Types.toPerformanceEntry self) ^. jsf "toJSON" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.startTime Mozilla PerformanceEntry.startTime documentation> 
-getStartTime ::
-             (MonadDOM m, IsPerformanceEntry self) =>
-               self -> m DOMHighResTimeStamp
-getStartTime self
-  = liftDOM
-      (((toPerformanceEntry self) ^. js "startTime") >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toPerformanceEntry self) ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.duration Mozilla PerformanceEntry.duration documentation> 
-getDuration ::
-            (MonadDOM m, IsPerformanceEntry self) =>
-              self -> m DOMHighResTimeStamp
-getDuration self
-  = liftDOM
-      (((toPerformanceEntry self) ^. js "duration") >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toPerformanceEntry self) ^. js "entryType") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEntry/startTime MDN PerformanceEntry.startTime documentation>
+getStartTime :: (MonadDOM m, IsPerformanceEntry self) => self -> m Double
+getStartTime self = liftDOM ((((Types.toPerformanceEntry self) ^. js "startTime") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEntry/duration MDN PerformanceEntry.duration documentation>
+getDuration :: (MonadDOM m, IsPerformanceEntry self) => self -> m Double
+getDuration self = liftDOM ((((Types.toPerformanceEntry self) ^. js "duration") >>= valToNumber))
diff --git a/src/JSDOM/Generated/PerformanceEventTiming.hs b/src/JSDOM/Generated/PerformanceEventTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PerformanceEventTiming.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from event-timing (webref). Do not edit.
+module JSDOM.Generated.PerformanceEventTiming
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEventTiming/toJSON MDN PerformanceEventTiming.toJSON documentation>
+toJSON :: (MonadDOM m) => PerformanceEventTiming -> m GObject
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEventTiming/toJSON MDN PerformanceEventTiming.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PerformanceEventTiming -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEventTiming/processingStart MDN PerformanceEventTiming.processingStart documentation>
+getProcessingStart :: (MonadDOM m) => PerformanceEventTiming -> m Double
+getProcessingStart self = liftDOM (((self ^. js "processingStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEventTiming/processingEnd MDN PerformanceEventTiming.processingEnd documentation>
+getProcessingEnd :: (MonadDOM m) => PerformanceEventTiming -> m Double
+getProcessingEnd self = liftDOM (((self ^. js "processingEnd") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEventTiming/cancelable MDN PerformanceEventTiming.cancelable documentation>
+getCancelable :: (MonadDOM m) => PerformanceEventTiming -> m Bool
+getCancelable self = liftDOM (((self ^. js "cancelable") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEventTiming/target MDN PerformanceEventTiming.target documentation>
+getTarget :: (MonadDOM m) => PerformanceEventTiming -> m (Maybe Node)
+getTarget self = liftDOM (((self ^. js "target") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEventTiming/target MDN PerformanceEventTiming.target documentation>
+getTargetUnsafe :: (MonadDOM m, HasCallStack) => PerformanceEventTiming -> m Node
+getTargetUnsafe self = liftDOM ((((self ^. js "target") >>= 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 (((self ^. js "target") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceEventTiming/interactionId MDN PerformanceEventTiming.interactionId documentation>
+getInteractionId :: (MonadDOM m) => PerformanceEventTiming -> m Word53
+getInteractionId self = liftDOM (((self ^. js "interactionId") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PerformanceMark.hs b/src/JSDOM/Generated/PerformanceMark.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PerformanceMark.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from user-timing (webref). Do not edit.
+module JSDOM.Generated.PerformanceMark
+       (newPerformanceMark, getDetail, PerformanceMark(..), gTypePerformanceMark)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "PerformanceMark") [toJSVal markName, P.maybe (P.return jsUndefined) toJSVal markOptions]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceMark/detail MDN PerformanceMark.detail documentation>
+getDetail :: (MonadDOM m) => PerformanceMark -> m JSVal
+getDetail self = liftDOM (self ^. js "detail")
diff --git a/src/JSDOM/Generated/PerformanceMarkOptions.hs b/src/JSDOM/Generated/PerformanceMarkOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PerformanceMarkOptions.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from user-timing (webref). Do not edit.
+module JSDOM.Generated.PerformanceMarkOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/user-timing/#dictdef-performancemarkoptions PerformanceMarkOptions specification>
+newPerformanceMarkOptions :: (MonadDOM m) => m PerformanceMarkOptions
+newPerformanceMarkOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemarkoptions-detail PerformanceMarkOptions.detail specification>
+setDetail :: (MonadDOM m) => PerformanceMarkOptions -> JSVal -> m ()
+setDetail self val = liftDOM (void (self ^. jss "detail" (toJSVal val)))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemarkoptions-detail PerformanceMarkOptions.detail specification>
+getDetail :: (MonadDOM m) => PerformanceMarkOptions -> m JSVal
+getDetail self = liftDOM (self ^. js "detail")
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemarkoptions-starttime PerformanceMarkOptions.startTime specification>
+setStartTime :: (MonadDOM m) => PerformanceMarkOptions -> Double -> m ()
+setStartTime self val = liftDOM (void (self ^. jss "startTime" (toJSVal val)))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemarkoptions-starttime PerformanceMarkOptions.startTime specification>
+getStartTime :: (MonadDOM m) => PerformanceMarkOptions -> m (Maybe Double)
+getStartTime self = liftDOM (((self ^. js "startTime") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemarkoptions-starttime PerformanceMarkOptions.startTime specification>
+getStartTimeUnsafe :: (MonadDOM m, HasCallStack) => PerformanceMarkOptions -> m Double
+getStartTimeUnsafe self = liftDOM ((((self ^. js "startTime") >>= 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 (((self ^. js "startTime") >>= valToNumber))
diff --git a/src/JSDOM/Generated/PerformanceMeasure.hs b/src/JSDOM/Generated/PerformanceMeasure.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PerformanceMeasure.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from user-timing (webref). Do not edit.
+module JSDOM.Generated.PerformanceMeasure
+       (getDetail, PerformanceMeasure(..), gTypePerformanceMeasure)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceMeasure/detail MDN PerformanceMeasure.detail documentation>
+getDetail :: (MonadDOM m) => PerformanceMeasure -> m JSVal
+getDetail self = liftDOM (self ^. js "detail")
diff --git a/src/JSDOM/Generated/PerformanceMeasureOptions.hs b/src/JSDOM/Generated/PerformanceMeasureOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PerformanceMeasureOptions.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from user-timing (webref). Do not edit.
+module JSDOM.Generated.PerformanceMeasureOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/user-timing/#dictdef-performancemeasureoptions PerformanceMeasureOptions specification>
+newPerformanceMeasureOptions :: (MonadDOM m) => m PerformanceMeasureOptions
+newPerformanceMeasureOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-detail PerformanceMeasureOptions.detail specification>
+setDetail :: (MonadDOM m) => PerformanceMeasureOptions -> JSVal -> m ()
+setDetail self val = liftDOM (void (self ^. jss "detail" (toJSVal val)))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-detail PerformanceMeasureOptions.detail specification>
+getDetail :: (MonadDOM m) => PerformanceMeasureOptions -> m JSVal
+getDetail self = liftDOM (self ^. js "detail")
+
+-- | <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 (self ^. jss "start" (toJSVal val)))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-start PerformanceMeasureOptions.start specification>
+getStart :: (MonadDOM m) => PerformanceMeasureOptions -> m (Maybe StringOrDOMHighResTimeStamp)
+getStart self = liftDOM (((self ^. js "start") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-start PerformanceMeasureOptions.start specification>
+getStartUnsafe :: (MonadDOM m, HasCallStack) => PerformanceMeasureOptions -> m StringOrDOMHighResTimeStamp
+getStartUnsafe self = liftDOM ((((self ^. js "start") >>= 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 (((self ^. js "start") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-duration PerformanceMeasureOptions.duration specification>
+setDuration :: (MonadDOM m) => PerformanceMeasureOptions -> Double -> m ()
+setDuration self val = liftDOM (void (self ^. jss "duration" (toJSVal val)))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-duration PerformanceMeasureOptions.duration specification>
+getDuration :: (MonadDOM m) => PerformanceMeasureOptions -> m (Maybe Double)
+getDuration self = liftDOM (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-duration PerformanceMeasureOptions.duration specification>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => PerformanceMeasureOptions -> m Double
+getDurationUnsafe self = liftDOM ((((self ^. js "duration") >>= 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 (((self ^. js "duration") >>= valToNumber))
+
+-- | <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 (self ^. jss "end" (toJSVal val)))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-end PerformanceMeasureOptions.end specification>
+getEnd :: (MonadDOM m) => PerformanceMeasureOptions -> m (Maybe StringOrDOMHighResTimeStamp)
+getEnd self = liftDOM (((self ^. js "end") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/user-timing/#dom-performancemeasureoptions-end PerformanceMeasureOptions.end specification>
+getEndUnsafe :: (MonadDOM m, HasCallStack) => PerformanceMeasureOptions -> m StringOrDOMHighResTimeStamp
+getEndUnsafe self = liftDOM ((((self ^. js "end") >>= 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 (((self ^. js "end") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PerformanceNavigation.hs b/src/JSDOM/Generated/PerformanceNavigation.hs
--- a/src/JSDOM/Generated/PerformanceNavigation.hs
+++ b/src/JSDOM/Generated/PerformanceNavigation.hs
@@ -1,38 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from navigation-timing-2 (webref). Do not edit.
 module JSDOM.Generated.PerformanceNavigation
-       (pattern TYPE_NAVIGATE, pattern TYPE_RELOAD,
-        pattern TYPE_BACK_FORWARD, pattern TYPE_RESERVED, getType,
-        getRedirectCount, PerformanceNavigation(..),
-        gTypePerformanceNavigation)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-pattern TYPE_NAVIGATE = 0
-pattern TYPE_RELOAD = 1
-pattern TYPE_BACK_FORWARD = 2
-pattern TYPE_RESERVED = 255
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation.type Mozilla PerformanceNavigation.type documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigation/toJSON MDN PerformanceNavigation.toJSON documentation>
+toJSON :: (MonadDOM m) => PerformanceNavigation -> m GObject
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigation/toJSON MDN PerformanceNavigation.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PerformanceNavigation -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigation/type MDN PerformanceNavigation.type documentation>
 getType :: (MonadDOM m) => PerformanceNavigation -> m Word
-getType self
-  = liftDOM (round <$> ((self ^. js "type") >>= valToNumber))
+getType self = liftDOM ((P.round <$> ((self ^. js "type") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation.redirectCount Mozilla PerformanceNavigation.redirectCount documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigation/redirectCount MDN PerformanceNavigation.redirectCount documentation>
 getRedirectCount :: (MonadDOM m) => PerformanceNavigation -> m Word
-getRedirectCount self
-  = liftDOM
-      (round <$> ((self ^. js "redirectCount") >>= valToNumber))
+getRedirectCount self = liftDOM ((P.round <$> ((self ^. js "redirectCount") >>= valToNumber)))
+
+pattern TYPE_NAVIGATE = 0
+
+pattern TYPE_RELOAD = 1
+
+pattern TYPE_BACK_FORWARD = 2
+
+pattern TYPE_RESERVED = 255
diff --git a/src/JSDOM/Generated/PerformanceNavigationTiming.hs b/src/JSDOM/Generated/PerformanceNavigationTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PerformanceNavigationTiming.hs
@@ -0,0 +1,64 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from navigation-timing-2 (webref). Do not edit.
+module JSDOM.Generated.PerformanceNavigationTiming
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/toJSON MDN PerformanceNavigationTiming.toJSON documentation>
+toJSON :: (MonadDOM m) => PerformanceNavigationTiming -> m GObject
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/toJSON MDN PerformanceNavigationTiming.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PerformanceNavigationTiming -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/unloadEventStart MDN PerformanceNavigationTiming.unloadEventStart documentation>
+getUnloadEventStart :: (MonadDOM m) => PerformanceNavigationTiming -> m Double
+getUnloadEventStart self = liftDOM (((self ^. js "unloadEventStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/unloadEventEnd MDN PerformanceNavigationTiming.unloadEventEnd documentation>
+getUnloadEventEnd :: (MonadDOM m) => PerformanceNavigationTiming -> m Double
+getUnloadEventEnd self = liftDOM (((self ^. js "unloadEventEnd") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/domInteractive MDN PerformanceNavigationTiming.domInteractive documentation>
+getDomInteractive :: (MonadDOM m) => PerformanceNavigationTiming -> m Double
+getDomInteractive self = liftDOM (((self ^. js "domInteractive") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/domContentLoadedEventStart MDN PerformanceNavigationTiming.domContentLoadedEventStart documentation>
+getDomContentLoadedEventStart :: (MonadDOM m) => PerformanceNavigationTiming -> m Double
+getDomContentLoadedEventStart self = liftDOM (((self ^. js "domContentLoadedEventStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/domContentLoadedEventEnd MDN PerformanceNavigationTiming.domContentLoadedEventEnd documentation>
+getDomContentLoadedEventEnd :: (MonadDOM m) => PerformanceNavigationTiming -> m Double
+getDomContentLoadedEventEnd self = liftDOM (((self ^. js "domContentLoadedEventEnd") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/domComplete MDN PerformanceNavigationTiming.domComplete documentation>
+getDomComplete :: (MonadDOM m) => PerformanceNavigationTiming -> m Double
+getDomComplete self = liftDOM (((self ^. js "domComplete") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/loadEventStart MDN PerformanceNavigationTiming.loadEventStart documentation>
+getLoadEventStart :: (MonadDOM m) => PerformanceNavigationTiming -> m Double
+getLoadEventStart self = liftDOM (((self ^. js "loadEventStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/loadEventEnd MDN PerformanceNavigationTiming.loadEventEnd documentation>
+getLoadEventEnd :: (MonadDOM m) => PerformanceNavigationTiming -> m Double
+getLoadEventEnd self = liftDOM (((self ^. js "loadEventEnd") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/type MDN PerformanceNavigationTiming.type documentation>
+getType :: (MonadDOM m) => PerformanceNavigationTiming -> m NavigationTimingType
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceNavigationTiming/redirectCount MDN PerformanceNavigationTiming.redirectCount documentation>
+getRedirectCount :: (MonadDOM m) => PerformanceNavigationTiming -> m Word
+getRedirectCount self = liftDOM ((P.round <$> ((self ^. js "redirectCount") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/PerformanceObserver.hs b/src/JSDOM/Generated/PerformanceObserver.hs
--- a/src/JSDOM/Generated/PerformanceObserver.hs
+++ b/src/JSDOM/Generated/PerformanceObserver.hs
@@ -1,41 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- 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 JSDOM.Generated.PerformanceObserver
-       (newPerformanceObserver, observe, disconnect,
-        PerformanceObserver(..), gTypePerformanceObserver)
+       (newPerformanceObserver, disconnect, observe, takeRecords, takeRecords_, getSupportedEntryTypesStatic, PerformanceObserver(..), gTypePerformanceObserver)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver Mozilla PerformanceObserver documentation> 
-newPerformanceObserver ::
-                       (MonadDOM m) =>
-                         PerformanceObserverCallback -> m PerformanceObserver
-newPerformanceObserver callback
-  = liftDOM
-      (PerformanceObserver <$>
-         new (jsg "PerformanceObserver") [toJSVal callback])
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver.observe Mozilla PerformanceObserver.observe documentation> 
-observe ::
-        (MonadDOM m) =>
-          PerformanceObserver -> PerformanceObserverInit -> m ()
-observe self options
-  = liftDOM (void (self ^. jsf "observe" [toJSVal options]))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserver/PerformanceObserver MDN PerformanceObserver. documentation>
+newPerformanceObserver :: (MonadDOM m) => PerformanceObserverCallback -> m PerformanceObserver
+newPerformanceObserver callback' = liftDOM (((new (jsg "PerformanceObserver") [toJSVal callback']) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver.disconnect Mozilla PerformanceObserver.disconnect documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserver/disconnect MDN PerformanceObserver.disconnect documentation>
 disconnect :: (MonadDOM m) => PerformanceObserver -> m ()
 disconnect self = liftDOM (void (self ^. jsf "disconnect" ()))
+
+-- | <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 (self ^. jsf "observe" [P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserver/takeRecords MDN PerformanceObserver.takeRecords documentation>
+takeRecords :: (MonadDOM m) => PerformanceObserver -> m [PerformanceEntry]
+takeRecords self = liftDOM (((self ^. jsf "takeRecords" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserver/takeRecords MDN PerformanceObserver.takeRecords documentation>
+takeRecords_ :: (MonadDOM m) => PerformanceObserver -> m ()
+takeRecords_ self = liftDOM (void (self ^. jsf "takeRecords" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserver/supportedEntryTypes_static MDN PerformanceObserver.supportedEntryTypes documentation>
+getSupportedEntryTypesStatic :: (MonadDOM m, FromJSString result) => m [result]
+getSupportedEntryTypesStatic = liftDOM ((((jsg "PerformanceObserver") ^. js "supportedEntryTypes") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PerformanceObserverCallback.hs b/src/JSDOM/Generated/PerformanceObserverCallback.hs
--- a/src/JSDOM/Generated/PerformanceObserverCallback.hs
+++ b/src/JSDOM/Generated/PerformanceObserverCallback.hs
@@ -1,68 +1,36 @@
-{-# LANGUAGE PatternSynonyms #-}
--- 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 JSDOM.Generated.PerformanceObserverCallback
-       (newPerformanceObserverCallback,
-        newPerformanceObserverCallbackSync,
-        newPerformanceObserverCallbackAsync, PerformanceObserverCallback)
+       (newPerformanceObserverCallback, newPerformanceObserverCallbackSync, newPerformanceObserverCallbackAsync, PerformanceObserverCallback)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverCallback Mozilla PerformanceObserverCallback documentation> 
-newPerformanceObserverCallback ::
-                               (MonadDOM m) =>
-                                 (PerformanceObserverEntryList -> PerformanceObserver -> JSM ()) ->
-                                   m PerformanceObserverCallback
-newPerformanceObserverCallback callback
-  = liftDOM
-      (PerformanceObserverCallback . Callback <$>
-         function
-           (\ _ _ [entries, observer] ->
-              fromJSValUnchecked observer >>=
-                \ observer' ->
-                  fromJSValUnchecked entries >>= \ entries' -> callback entries'
-                    observer'))
+newPerformanceObserverCallback :: (MonadDOM m) => (PerformanceObserverEntryList -> PerformanceObserver -> PerformanceObserverCallbackOptions -> JSM ()) -> m PerformanceObserverCallback
+newPerformanceObserverCallback callback = liftDOM (PerformanceObserverCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (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 ::
-                                   (MonadDOM m) =>
-                                     (PerformanceObserverEntryList -> PerformanceObserver -> JSM ())
-                                       -> m PerformanceObserverCallback
-newPerformanceObserverCallbackSync callback
-  = liftDOM
-      (PerformanceObserverCallback . Callback <$>
-         function
-           (\ _ _ [entries, observer] ->
-              fromJSValUnchecked observer >>=
-                \ observer' ->
-                  fromJSValUnchecked entries >>= \ entries' -> callback entries'
-                    observer'))
+newPerformanceObserverCallbackSync :: (MonadDOM m) => (PerformanceObserverEntryList -> PerformanceObserver -> PerformanceObserverCallbackOptions -> JSM ()) -> m PerformanceObserverCallback
+newPerformanceObserverCallbackSync callback = liftDOM (PerformanceObserverCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (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 ::
-                                    (MonadDOM m) =>
-                                      (PerformanceObserverEntryList ->
-                                         PerformanceObserver -> JSM ())
-                                        -> m PerformanceObserverCallback
-newPerformanceObserverCallbackAsync callback
-  = liftDOM
-      (PerformanceObserverCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [entries, observer] ->
-              fromJSValUnchecked observer >>=
-                \ observer' ->
-                  fromJSValUnchecked entries >>= \ entries' -> callback entries'
-                    observer'))
+newPerformanceObserverCallbackAsync :: (MonadDOM m) => (PerformanceObserverEntryList -> PerformanceObserver -> PerformanceObserverCallbackOptions -> JSM ()) -> m PerformanceObserverCallback
+newPerformanceObserverCallbackAsync callback = liftDOM (PerformanceObserverCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (entries : observer : options : _) -> do
+          entries' <- fromJSValUnchecked entries
+          observer' <- fromJSValUnchecked observer
+          options' <- fromJSValUnchecked options
+          callback entries' observer' options'))
diff --git a/src/JSDOM/Generated/PerformanceObserverCallbackOptions.hs b/src/JSDOM/Generated/PerformanceObserverCallbackOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PerformanceObserverCallbackOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from performance-timeline (webref). Do not edit.
+module JSDOM.Generated.PerformanceObserverCallbackOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/performance-timeline/#dictdef-performanceobservercallbackoptions PerformanceObserverCallbackOptions specification>
+newPerformanceObserverCallbackOptions :: (MonadDOM m) => m PerformanceObserverCallbackOptions
+newPerformanceObserverCallbackOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobservercallbackoptions-droppedentriescount PerformanceObserverCallbackOptions.droppedEntriesCount specification>
+setDroppedEntriesCount :: (MonadDOM m) => PerformanceObserverCallbackOptions -> Word53 -> m ()
+setDroppedEntriesCount self val = liftDOM (void (self ^. jss "droppedEntriesCount" (toJSVal val)))
+
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobservercallbackoptions-droppedentriescount PerformanceObserverCallbackOptions.droppedEntriesCount specification>
+getDroppedEntriesCount :: (MonadDOM m) => PerformanceObserverCallbackOptions -> m (Maybe Word53)
+getDroppedEntriesCount self = liftDOM (((self ^. js "droppedEntriesCount") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobservercallbackoptions-droppedentriescount PerformanceObserverCallbackOptions.droppedEntriesCount specification>
+getDroppedEntriesCountUnsafe :: (MonadDOM m, HasCallStack) => PerformanceObserverCallbackOptions -> m Word53
+getDroppedEntriesCountUnsafe self = liftDOM ((((self ^. js "droppedEntriesCount") >>= 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 (((self ^. js "droppedEntriesCount") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PerformanceObserverEntryList.hs b/src/JSDOM/Generated/PerformanceObserverEntryList.hs
--- a/src/JSDOM/Generated/PerformanceObserverEntryList.hs
+++ b/src/JSDOM/Generated/PerformanceObserverEntryList.hs
@@ -1,69 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- 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 JSDOM.Generated.PerformanceObserverEntryList
-       (getEntries, getEntries_, getEntriesByType, getEntriesByType_,
-        getEntriesByName, getEntriesByName_,
-        PerformanceObserverEntryList(..),
-        gTypePerformanceObserverEntryList)
+       (getEntries, getEntries_, getEntriesByName, getEntriesByName_, getEntriesByType, getEntriesByType_, PerformanceObserverEntryList(..), gTypePerformanceObserverEntryList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntries Mozilla PerformanceObserverEntryList.getEntries documentation> 
-getEntries ::
-           (MonadDOM m) =>
-             PerformanceObserverEntryList -> m PerformanceEntryList
-getEntries self
-  = liftDOM ((self ^. jsf "getEntries" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserverEntryList/getEntries MDN PerformanceObserverEntryList.getEntries documentation>
+getEntries :: (MonadDOM m) => PerformanceObserverEntryList -> m [PerformanceEntry]
+getEntries self = liftDOM (((self ^. jsf "getEntries" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntries Mozilla PerformanceObserverEntryList.getEntries documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceObserverEntryList/getEntries MDN PerformanceObserverEntryList.getEntries documentation>
 getEntries_ :: (MonadDOM m) => PerformanceObserverEntryList -> m ()
 getEntries_ self = liftDOM (void (self ^. jsf "getEntries" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntriesByType Mozilla PerformanceObserverEntryList.getEntriesByType documentation> 
-getEntriesByType ::
-                 (MonadDOM m, ToJSString type') =>
-                   PerformanceObserverEntryList -> type' -> m PerformanceEntryList
-getEntriesByType self type'
-  = liftDOM
-      ((self ^. jsf "getEntriesByType" [toJSVal type']) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "getEntriesByName" [toJSVal name, P.maybe (P.return jsUndefined) toJSVal type']) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntriesByType Mozilla PerformanceObserverEntryList.getEntriesByType documentation> 
-getEntriesByType_ ::
-                  (MonadDOM m, ToJSString type') =>
-                    PerformanceObserverEntryList -> type' -> m ()
-getEntriesByType_ self type'
-  = liftDOM (void (self ^. jsf "getEntriesByType" [toJSVal type']))
+-- | <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 (self ^. jsf "getEntriesByName" [toJSVal name, P.maybe (P.return jsUndefined) toJSVal type']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntriesByName Mozilla PerformanceObserverEntryList.getEntriesByName documentation> 
-getEntriesByName ::
-                 (MonadDOM m, ToJSString name, ToJSString type') =>
-                   PerformanceObserverEntryList ->
-                     name -> Maybe type' -> m PerformanceEntryList
-getEntriesByName self name type'
-  = liftDOM
-      ((self ^. jsf "getEntriesByName" [toJSVal name, toJSVal type']) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "getEntriesByType" [toJSVal type']) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntriesByName Mozilla PerformanceObserverEntryList.getEntriesByName documentation> 
-getEntriesByName_ ::
-                  (MonadDOM m, ToJSString name, ToJSString type') =>
-                    PerformanceObserverEntryList -> name -> Maybe type' -> m ()
-getEntriesByName_ self name type'
-  = liftDOM
-      (void
-         (self ^. jsf "getEntriesByName" [toJSVal name, toJSVal 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 (self ^. jsf "getEntriesByType" [toJSVal type']))
diff --git a/src/JSDOM/Generated/PerformanceObserverInit.hs b/src/JSDOM/Generated/PerformanceObserverInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PerformanceObserverInit.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from performance-timeline (webref). Do not edit.
+module JSDOM.Generated.PerformanceObserverInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/performance-timeline/#dictdef-performanceobserverinit PerformanceObserverInit specification>
+newPerformanceObserverInit :: (MonadDOM m) => m PerformanceObserverInit
+newPerformanceObserverInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "entryTypes" (toJSVal val)))
+
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-entrytypes PerformanceObserverInit.entryTypes specification>
+getEntryTypes :: (MonadDOM m, FromJSString result) => PerformanceObserverInit -> m (Maybe [result])
+getEntryTypes self = liftDOM (((self ^. js "entryTypes") >>= 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 ((((self ^. js "entryTypes") >>= 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 (((self ^. js "entryTypes") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-type PerformanceObserverInit.type specification>
+getType :: (MonadDOM m, FromJSString result) => PerformanceObserverInit -> m (Maybe result)
+getType self = liftDOM (((self ^. js "type") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-type PerformanceObserverInit.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PerformanceObserverInit -> m result
+getTypeUnsafe self = liftDOM ((((self ^. js "type") >>= fromMaybeJSString) >>= 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 (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-buffered PerformanceObserverInit.buffered specification>
+setBuffered :: (MonadDOM m) => PerformanceObserverInit -> Bool -> m ()
+setBuffered self val = liftDOM (void (self ^. jss "buffered" (toJSVal val)))
+
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-buffered PerformanceObserverInit.buffered specification>
+getBuffered :: (MonadDOM m) => PerformanceObserverInit -> m (Maybe Bool)
+getBuffered self = liftDOM (((self ^. js "buffered") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/performance-timeline/#dom-performanceobserverinit-buffered PerformanceObserverInit.buffered specification>
+getBufferedUnsafe :: (MonadDOM m, HasCallStack) => PerformanceObserverInit -> m Bool
+getBufferedUnsafe self = liftDOM ((((self ^. js "buffered") >>= 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 (((self ^. js "buffered") >>= valToBool))
+
+-- | <https://w3c.github.io/event-timing/#dom-performanceobserverinit-durationthreshold PerformanceObserverInit.durationThreshold specification>
+setDurationThreshold :: (MonadDOM m) => PerformanceObserverInit -> Double -> m ()
+setDurationThreshold self val = liftDOM (void (self ^. jss "durationThreshold" (toJSVal val)))
+
+-- | <https://w3c.github.io/event-timing/#dom-performanceobserverinit-durationthreshold PerformanceObserverInit.durationThreshold specification>
+getDurationThreshold :: (MonadDOM m) => PerformanceObserverInit -> m (Maybe Double)
+getDurationThreshold self = liftDOM (((self ^. js "durationThreshold") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/event-timing/#dom-performanceobserverinit-durationthreshold PerformanceObserverInit.durationThreshold specification>
+getDurationThresholdUnsafe :: (MonadDOM m, HasCallStack) => PerformanceObserverInit -> m Double
+getDurationThresholdUnsafe self = liftDOM ((((self ^. js "durationThreshold") >>= 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 (((self ^. js "durationThreshold") >>= valToNumber))
diff --git a/src/JSDOM/Generated/PerformancePaintTiming.hs b/src/JSDOM/Generated/PerformancePaintTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PerformancePaintTiming.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from paint-timing (webref). Do not edit.
+module JSDOM.Generated.PerformancePaintTiming
+       (toJSON, toJSON_, PerformancePaintTiming(..), gTypePerformancePaintTiming)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformancePaintTiming/toJSON MDN PerformancePaintTiming.toJSON documentation>
+toJSON :: (MonadDOM m) => PerformancePaintTiming -> m GObject
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformancePaintTiming/toJSON MDN PerformancePaintTiming.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PerformancePaintTiming -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
diff --git a/src/JSDOM/Generated/PerformanceResourceTiming.hs b/src/JSDOM/Generated/PerformanceResourceTiming.hs
--- a/src/JSDOM/Generated/PerformanceResourceTiming.hs
+++ b/src/JSDOM/Generated/PerformanceResourceTiming.hs
@@ -1,112 +1,124 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from resource-timing (webref). Do not edit.
 module JSDOM.Generated.PerformanceResourceTiming
-       (getInitiatorType, getNextHopProtocol, getWorkerStart,
-        getRedirectStart, getRedirectEnd, getFetchStart,
-        getDomainLookupStart, getDomainLookupEnd, getConnectStart,
-        getConnectEnd, getSecureConnectionStart, getRequestStart,
-        getResponseStart, getResponseEnd, PerformanceResourceTiming(..),
-        gTypePerformanceResourceTiming)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.initiatorType Mozilla PerformanceResourceTiming.initiatorType documentation> 
-getInitiatorType ::
-                 (MonadDOM m, FromJSString result) =>
-                   PerformanceResourceTiming -> m result
-getInitiatorType self
-  = liftDOM ((self ^. js "initiatorType") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/toJSON MDN PerformanceResourceTiming.toJSON documentation>
+toJSON :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m GObject
+toJSON self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.nextHopProtocol Mozilla PerformanceResourceTiming.nextHopProtocol documentation> 
-getNextHopProtocol ::
-                   (MonadDOM m, FromJSString result) =>
-                     PerformanceResourceTiming -> m result
-getNextHopProtocol self
-  = liftDOM ((self ^. js "nextHopProtocol") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/toJSON MDN PerformanceResourceTiming.toJSON documentation>
+toJSON_ :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m ()
+toJSON_ self = liftDOM (void ((Types.toPerformanceResourceTiming self) ^. jsf "toJSON" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.workerStart Mozilla PerformanceResourceTiming.workerStart documentation> 
-getWorkerStart ::
-               (MonadDOM m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getWorkerStart self
-  = liftDOM ((self ^. js "workerStart") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toPerformanceResourceTiming self) ^. js "initiatorType") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.redirectStart Mozilla PerformanceResourceTiming.redirectStart documentation> 
-getRedirectStart ::
-                 (MonadDOM m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getRedirectStart self
-  = liftDOM ((self ^. js "redirectStart") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toPerformanceResourceTiming self) ^. js "deliveryType") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.redirectEnd Mozilla PerformanceResourceTiming.redirectEnd documentation> 
-getRedirectEnd ::
-               (MonadDOM m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getRedirectEnd self
-  = liftDOM ((self ^. js "redirectEnd") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toPerformanceResourceTiming self) ^. js "nextHopProtocol") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.fetchStart Mozilla PerformanceResourceTiming.fetchStart documentation> 
-getFetchStart ::
-              (MonadDOM m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getFetchStart self
-  = liftDOM ((self ^. js "fetchStart") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/workerStart MDN PerformanceResourceTiming.workerStart documentation>
+getWorkerStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getWorkerStart self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "workerStart") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.domainLookupStart Mozilla PerformanceResourceTiming.domainLookupStart documentation> 
-getDomainLookupStart ::
-                     (MonadDOM m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getDomainLookupStart self
-  = liftDOM ((self ^. js "domainLookupStart") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/redirectStart MDN PerformanceResourceTiming.redirectStart documentation>
+getRedirectStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getRedirectStart self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "redirectStart") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.domainLookupEnd Mozilla PerformanceResourceTiming.domainLookupEnd documentation> 
-getDomainLookupEnd ::
-                   (MonadDOM m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getDomainLookupEnd self
-  = liftDOM ((self ^. js "domainLookupEnd") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/redirectEnd MDN PerformanceResourceTiming.redirectEnd documentation>
+getRedirectEnd :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getRedirectEnd self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "redirectEnd") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.connectStart Mozilla PerformanceResourceTiming.connectStart documentation> 
-getConnectStart ::
-                (MonadDOM m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getConnectStart self
-  = liftDOM ((self ^. js "connectStart") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/fetchStart MDN PerformanceResourceTiming.fetchStart documentation>
+getFetchStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getFetchStart self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "fetchStart") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.connectEnd Mozilla PerformanceResourceTiming.connectEnd documentation> 
-getConnectEnd ::
-              (MonadDOM m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getConnectEnd self
-  = liftDOM ((self ^. js "connectEnd") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/domainLookupStart MDN PerformanceResourceTiming.domainLookupStart documentation>
+getDomainLookupStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getDomainLookupStart self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "domainLookupStart") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.secureConnectionStart Mozilla PerformanceResourceTiming.secureConnectionStart documentation> 
-getSecureConnectionStart ::
-                         (MonadDOM m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getSecureConnectionStart self
-  = liftDOM
-      ((self ^. js "secureConnectionStart") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/domainLookupEnd MDN PerformanceResourceTiming.domainLookupEnd documentation>
+getDomainLookupEnd :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getDomainLookupEnd self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "domainLookupEnd") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.requestStart Mozilla PerformanceResourceTiming.requestStart documentation> 
-getRequestStart ::
-                (MonadDOM m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getRequestStart self
-  = liftDOM ((self ^. js "requestStart") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/connectStart MDN PerformanceResourceTiming.connectStart documentation>
+getConnectStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getConnectStart self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "connectStart") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.responseStart Mozilla PerformanceResourceTiming.responseStart documentation> 
-getResponseStart ::
-                 (MonadDOM m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getResponseStart self
-  = liftDOM ((self ^. js "responseStart") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/connectEnd MDN PerformanceResourceTiming.connectEnd documentation>
+getConnectEnd :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getConnectEnd self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "connectEnd") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.responseEnd Mozilla PerformanceResourceTiming.responseEnd documentation> 
-getResponseEnd ::
-               (MonadDOM m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
-getResponseEnd self
-  = liftDOM ((self ^. js "responseEnd") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/secureConnectionStart MDN PerformanceResourceTiming.secureConnectionStart documentation>
+getSecureConnectionStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getSecureConnectionStart self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "secureConnectionStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/requestStart MDN PerformanceResourceTiming.requestStart documentation>
+getRequestStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getRequestStart self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "requestStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/finalResponseHeadersStart MDN PerformanceResourceTiming.finalResponseHeadersStart documentation>
+getFinalResponseHeadersStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getFinalResponseHeadersStart self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "finalResponseHeadersStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/firstInterimResponseStart MDN PerformanceResourceTiming.firstInterimResponseStart documentation>
+getFirstInterimResponseStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getFirstInterimResponseStart self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "firstInterimResponseStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/responseStart MDN PerformanceResourceTiming.responseStart documentation>
+getResponseStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getResponseStart self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "responseStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/responseEnd MDN PerformanceResourceTiming.responseEnd documentation>
+getResponseEnd :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getResponseEnd self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "responseEnd") >>= valToNumber))
+
+-- | <https://w3c.github.io/resource-timing/#dom-performanceresourcetiming-workerrouterevaluationstart PerformanceResourceTiming.workerRouterEvaluationStart specification>
+getWorkerRouterEvaluationStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getWorkerRouterEvaluationStart self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "workerRouterEvaluationStart") >>= valToNumber))
+
+-- | <https://w3c.github.io/resource-timing/#dom-performanceresourcetiming-workercachelookupstart PerformanceResourceTiming.workerCacheLookupStart specification>
+getWorkerCacheLookupStart :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Double
+getWorkerCacheLookupStart self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "workerCacheLookupStart") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/transferSize MDN PerformanceResourceTiming.transferSize documentation>
+getTransferSize :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Word53
+getTransferSize self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "transferSize") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/encodedBodySize MDN PerformanceResourceTiming.encodedBodySize documentation>
+getEncodedBodySize :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Word53
+getEncodedBodySize self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "encodedBodySize") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/decodedBodySize MDN PerformanceResourceTiming.decodedBodySize documentation>
+getDecodedBodySize :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Word53
+getDecodedBodySize self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "decodedBodySize") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/responseStatus MDN PerformanceResourceTiming.responseStatus documentation>
+getResponseStatus :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m Word
+getResponseStatus self = liftDOM ((P.round <$> (((Types.toPerformanceResourceTiming self) ^. js "responseStatus") >>= valToNumber)))
+
+-- | <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 ((((Types.toPerformanceResourceTiming self) ^. js "contentType") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceResourceTiming/serverTiming MDN PerformanceResourceTiming.serverTiming documentation>
+getServerTiming :: (MonadDOM m, IsPerformanceResourceTiming self) => self -> m [PerformanceServerTiming]
+getServerTiming self = liftDOM ((((Types.toPerformanceResourceTiming self) ^. js "serverTiming") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PerformanceServerTiming.hs b/src/JSDOM/Generated/PerformanceServerTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PerformanceServerTiming.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from server-timing (webref). Do not edit.
+module JSDOM.Generated.PerformanceServerTiming
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceServerTiming/toJSON MDN PerformanceServerTiming.toJSON documentation>
+toJSON :: (MonadDOM m) => PerformanceServerTiming -> m GObject
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceServerTiming/toJSON MDN PerformanceServerTiming.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PerformanceServerTiming -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceServerTiming/name MDN PerformanceServerTiming.name documentation>
+getName :: (MonadDOM m, FromJSString result) => PerformanceServerTiming -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceServerTiming/duration MDN PerformanceServerTiming.duration documentation>
+getDuration :: (MonadDOM m) => PerformanceServerTiming -> m Double
+getDuration self = liftDOM (((self ^. js "duration") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceServerTiming/description MDN PerformanceServerTiming.description documentation>
+getDescription :: (MonadDOM m, FromJSString result) => PerformanceServerTiming -> m result
+getDescription self = liftDOM (((self ^. js "description") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PerformanceTiming.hs b/src/JSDOM/Generated/PerformanceTiming.hs
--- a/src/JSDOM/Generated/PerformanceTiming.hs
+++ b/src/JSDOM/Generated/PerformanceTiming.hs
@@ -1,151 +1,108 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from navigation-timing-2 (webref). Do not edit.
 module JSDOM.Generated.PerformanceTiming
-       (getNavigationStart, getUnloadEventStart, getUnloadEventEnd,
-        getRedirectStart, getRedirectEnd, getFetchStart,
-        getDomainLookupStart, getDomainLookupEnd, getConnectStart,
-        getConnectEnd, getSecureConnectionStart, getRequestStart,
-        getResponseStart, getResponseEnd, getDomLoading, getDomInteractive,
-        getDomContentLoadedEventStart, getDomContentLoadedEventEnd,
-        getDomComplete, getLoadEventStart, getLoadEventEnd,
-        PerformanceTiming(..), gTypePerformanceTiming)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.navigationStart Mozilla PerformanceTiming.navigationStart documentation> 
-getNavigationStart :: (MonadDOM m) => PerformanceTiming -> m Word64
-getNavigationStart self
-  = liftDOM
-      (round <$> ((self ^. js "navigationStart") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/toJSON MDN PerformanceTiming.toJSON documentation>
+toJSON :: (MonadDOM m) => PerformanceTiming -> m GObject
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.unloadEventStart Mozilla PerformanceTiming.unloadEventStart documentation> 
-getUnloadEventStart ::
-                    (MonadDOM m) => PerformanceTiming -> m Word64
-getUnloadEventStart self
-  = liftDOM
-      (round <$> ((self ^. js "unloadEventStart") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/toJSON MDN PerformanceTiming.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PerformanceTiming -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.unloadEventEnd Mozilla PerformanceTiming.unloadEventEnd documentation> 
-getUnloadEventEnd :: (MonadDOM m) => PerformanceTiming -> m Word64
-getUnloadEventEnd self
-  = liftDOM
-      (round <$> ((self ^. js "unloadEventEnd") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/navigationStart MDN PerformanceTiming.navigationStart documentation>
+getNavigationStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getNavigationStart self = liftDOM (((self ^. js "navigationStart") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.redirectStart Mozilla PerformanceTiming.redirectStart documentation> 
-getRedirectStart :: (MonadDOM m) => PerformanceTiming -> m Word64
-getRedirectStart self
-  = liftDOM
-      (round <$> ((self ^. js "redirectStart") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/unloadEventStart MDN PerformanceTiming.unloadEventStart documentation>
+getUnloadEventStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getUnloadEventStart self = liftDOM (((self ^. js "unloadEventStart") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.redirectEnd Mozilla PerformanceTiming.redirectEnd documentation> 
-getRedirectEnd :: (MonadDOM m) => PerformanceTiming -> m Word64
-getRedirectEnd self
-  = liftDOM (round <$> ((self ^. js "redirectEnd") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/unloadEventEnd MDN PerformanceTiming.unloadEventEnd documentation>
+getUnloadEventEnd :: (MonadDOM m) => PerformanceTiming -> m Word53
+getUnloadEventEnd self = liftDOM (((self ^. js "unloadEventEnd") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.fetchStart Mozilla PerformanceTiming.fetchStart documentation> 
-getFetchStart :: (MonadDOM m) => PerformanceTiming -> m Word64
-getFetchStart self
-  = liftDOM (round <$> ((self ^. js "fetchStart") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/redirectStart MDN PerformanceTiming.redirectStart documentation>
+getRedirectStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getRedirectStart self = liftDOM (((self ^. js "redirectStart") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domainLookupStart Mozilla PerformanceTiming.domainLookupStart documentation> 
-getDomainLookupStart ::
-                     (MonadDOM m) => PerformanceTiming -> m Word64
-getDomainLookupStart self
-  = liftDOM
-      (round <$> ((self ^. js "domainLookupStart") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/redirectEnd MDN PerformanceTiming.redirectEnd documentation>
+getRedirectEnd :: (MonadDOM m) => PerformanceTiming -> m Word53
+getRedirectEnd self = liftDOM (((self ^. js "redirectEnd") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domainLookupEnd Mozilla PerformanceTiming.domainLookupEnd documentation> 
-getDomainLookupEnd :: (MonadDOM m) => PerformanceTiming -> m Word64
-getDomainLookupEnd self
-  = liftDOM
-      (round <$> ((self ^. js "domainLookupEnd") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/fetchStart MDN PerformanceTiming.fetchStart documentation>
+getFetchStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getFetchStart self = liftDOM (((self ^. js "fetchStart") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.connectStart Mozilla PerformanceTiming.connectStart documentation> 
-getConnectStart :: (MonadDOM m) => PerformanceTiming -> m Word64
-getConnectStart self
-  = liftDOM (round <$> ((self ^. js "connectStart") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/domainLookupStart MDN PerformanceTiming.domainLookupStart documentation>
+getDomainLookupStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getDomainLookupStart self = liftDOM (((self ^. js "domainLookupStart") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.connectEnd Mozilla PerformanceTiming.connectEnd documentation> 
-getConnectEnd :: (MonadDOM m) => PerformanceTiming -> m Word64
-getConnectEnd self
-  = liftDOM (round <$> ((self ^. js "connectEnd") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/domainLookupEnd MDN PerformanceTiming.domainLookupEnd documentation>
+getDomainLookupEnd :: (MonadDOM m) => PerformanceTiming -> m Word53
+getDomainLookupEnd self = liftDOM (((self ^. js "domainLookupEnd") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.secureConnectionStart Mozilla PerformanceTiming.secureConnectionStart documentation> 
-getSecureConnectionStart ::
-                         (MonadDOM m) => PerformanceTiming -> m Word64
-getSecureConnectionStart self
-  = liftDOM
-      (round <$> ((self ^. js "secureConnectionStart") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/connectStart MDN PerformanceTiming.connectStart documentation>
+getConnectStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getConnectStart self = liftDOM (((self ^. js "connectStart") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.requestStart Mozilla PerformanceTiming.requestStart documentation> 
-getRequestStart :: (MonadDOM m) => PerformanceTiming -> m Word64
-getRequestStart self
-  = liftDOM (round <$> ((self ^. js "requestStart") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/connectEnd MDN PerformanceTiming.connectEnd documentation>
+getConnectEnd :: (MonadDOM m) => PerformanceTiming -> m Word53
+getConnectEnd self = liftDOM (((self ^. js "connectEnd") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.responseStart Mozilla PerformanceTiming.responseStart documentation> 
-getResponseStart :: (MonadDOM m) => PerformanceTiming -> m Word64
-getResponseStart self
-  = liftDOM
-      (round <$> ((self ^. js "responseStart") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/secureConnectionStart MDN PerformanceTiming.secureConnectionStart documentation>
+getSecureConnectionStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getSecureConnectionStart self = liftDOM (((self ^. js "secureConnectionStart") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.responseEnd Mozilla PerformanceTiming.responseEnd documentation> 
-getResponseEnd :: (MonadDOM m) => PerformanceTiming -> m Word64
-getResponseEnd self
-  = liftDOM (round <$> ((self ^. js "responseEnd") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/requestStart MDN PerformanceTiming.requestStart documentation>
+getRequestStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getRequestStart self = liftDOM (((self ^. js "requestStart") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domLoading Mozilla PerformanceTiming.domLoading documentation> 
-getDomLoading :: (MonadDOM m) => PerformanceTiming -> m Word64
-getDomLoading self
-  = liftDOM (round <$> ((self ^. js "domLoading") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/responseStart MDN PerformanceTiming.responseStart documentation>
+getResponseStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getResponseStart self = liftDOM (((self ^. js "responseStart") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domInteractive Mozilla PerformanceTiming.domInteractive documentation> 
-getDomInteractive :: (MonadDOM m) => PerformanceTiming -> m Word64
-getDomInteractive self
-  = liftDOM
-      (round <$> ((self ^. js "domInteractive") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/responseEnd MDN PerformanceTiming.responseEnd documentation>
+getResponseEnd :: (MonadDOM m) => PerformanceTiming -> m Word53
+getResponseEnd self = liftDOM (((self ^. js "responseEnd") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domContentLoadedEventStart Mozilla PerformanceTiming.domContentLoadedEventStart documentation> 
-getDomContentLoadedEventStart ::
-                              (MonadDOM m) => PerformanceTiming -> m Word64
-getDomContentLoadedEventStart self
-  = liftDOM
-      (round <$>
-         ((self ^. js "domContentLoadedEventStart") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/domLoading MDN PerformanceTiming.domLoading documentation>
+getDomLoading :: (MonadDOM m) => PerformanceTiming -> m Word53
+getDomLoading self = liftDOM (((self ^. js "domLoading") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domContentLoadedEventEnd Mozilla PerformanceTiming.domContentLoadedEventEnd documentation> 
-getDomContentLoadedEventEnd ::
-                            (MonadDOM m) => PerformanceTiming -> m Word64
-getDomContentLoadedEventEnd self
-  = liftDOM
-      (round <$>
-         ((self ^. js "domContentLoadedEventEnd") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/domInteractive MDN PerformanceTiming.domInteractive documentation>
+getDomInteractive :: (MonadDOM m) => PerformanceTiming -> m Word53
+getDomInteractive self = liftDOM (((self ^. js "domInteractive") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domComplete Mozilla PerformanceTiming.domComplete documentation> 
-getDomComplete :: (MonadDOM m) => PerformanceTiming -> m Word64
-getDomComplete self
-  = liftDOM (round <$> ((self ^. js "domComplete") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/domContentLoadedEventStart MDN PerformanceTiming.domContentLoadedEventStart documentation>
+getDomContentLoadedEventStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getDomContentLoadedEventStart self = liftDOM (((self ^. js "domContentLoadedEventStart") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.loadEventStart Mozilla PerformanceTiming.loadEventStart documentation> 
-getLoadEventStart :: (MonadDOM m) => PerformanceTiming -> m Word64
-getLoadEventStart self
-  = liftDOM
-      (round <$> ((self ^. js "loadEventStart") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/domContentLoadedEventEnd MDN PerformanceTiming.domContentLoadedEventEnd documentation>
+getDomContentLoadedEventEnd :: (MonadDOM m) => PerformanceTiming -> m Word53
+getDomContentLoadedEventEnd self = liftDOM (((self ^. js "domContentLoadedEventEnd") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.loadEventEnd Mozilla PerformanceTiming.loadEventEnd documentation> 
-getLoadEventEnd :: (MonadDOM m) => PerformanceTiming -> m Word64
-getLoadEventEnd self
-  = liftDOM (round <$> ((self ^. js "loadEventEnd") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/domComplete MDN PerformanceTiming.domComplete documentation>
+getDomComplete :: (MonadDOM m) => PerformanceTiming -> m Word53
+getDomComplete self = liftDOM (((self ^. js "domComplete") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/loadEventStart MDN PerformanceTiming.loadEventStart documentation>
+getLoadEventStart :: (MonadDOM m) => PerformanceTiming -> m Word53
+getLoadEventStart self = liftDOM (((self ^. js "loadEventStart") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PerformanceTiming/loadEventEnd MDN PerformanceTiming.loadEventEnd documentation>
+getLoadEventEnd :: (MonadDOM m) => PerformanceTiming -> m Word53
+getLoadEventEnd self = liftDOM (((self ^. js "loadEventEnd") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PeriodicWave.hs b/src/JSDOM/Generated/PeriodicWave.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PeriodicWave.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.PeriodicWave
+       (newPeriodicWave, PeriodicWave(..), gTypePeriodicWave)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "PeriodicWave") [toJSVal context, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PeriodicWaveConstraints.hs b/src/JSDOM/Generated/PeriodicWaveConstraints.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PeriodicWaveConstraints.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.PeriodicWaveConstraints
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#PeriodicWaveConstraints PeriodicWaveConstraints specification>
+newPeriodicWaveConstraints :: (MonadDOM m) => m PeriodicWaveConstraints
+newPeriodicWaveConstraints = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toPeriodicWaveConstraints self) ^. jss "disableNormalization" (toJSVal val)))
+
+-- | <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 ((((Types.toPeriodicWaveConstraints self) ^. js "disableNormalization") >>= 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 (((((Types.toPeriodicWaveConstraints self) ^. js "disableNormalization") >>= 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 ((((Types.toPeriodicWaveConstraints self) ^. js "disableNormalization") >>= valToBool))
diff --git a/src/JSDOM/Generated/PeriodicWaveOptions.hs b/src/JSDOM/Generated/PeriodicWaveOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PeriodicWaveOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.PeriodicWaveOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#PeriodicWaveOptions PeriodicWaveOptions specification>
+newPeriodicWaveOptions :: (MonadDOM m) => m PeriodicWaveOptions
+newPeriodicWaveOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveoptions-real PeriodicWaveOptions.real specification>
+setReal :: (MonadDOM m) => PeriodicWaveOptions -> [Float] -> m ()
+setReal self val = liftDOM (void (self ^. jss "real" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveoptions-real PeriodicWaveOptions.real specification>
+getReal :: (MonadDOM m) => PeriodicWaveOptions -> m (Maybe [Float])
+getReal self = liftDOM (((self ^. js "real") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveoptions-real PeriodicWaveOptions.real specification>
+getRealUnsafe :: (MonadDOM m, HasCallStack) => PeriodicWaveOptions -> m [Float]
+getRealUnsafe self = liftDOM ((((self ^. js "real") >>= 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 (((self ^. js "real") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveoptions-imag PeriodicWaveOptions.imag specification>
+setImag :: (MonadDOM m) => PeriodicWaveOptions -> [Float] -> m ()
+setImag self val = liftDOM (void (self ^. jss "imag" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveoptions-imag PeriodicWaveOptions.imag specification>
+getImag :: (MonadDOM m) => PeriodicWaveOptions -> m (Maybe [Float])
+getImag self = liftDOM (((self ^. js "imag") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-periodicwaveoptions-imag PeriodicWaveOptions.imag specification>
+getImagUnsafe :: (MonadDOM m, HasCallStack) => PeriodicWaveOptions -> m [Float]
+getImagUnsafe self = liftDOM ((((self ^. js "imag") >>= 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 (((self ^. js "imag") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PermissionStatus.hs b/src/JSDOM/Generated/PermissionStatus.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PermissionStatus.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from permissions (webref). Do not edit.
+module JSDOM.Generated.PermissionStatus
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/PermissionStatus/state MDN PermissionStatus.state documentation>
+getState :: (MonadDOM m) => PermissionStatus -> m PermissionState
+getState self = liftDOM (((self ^. js "state") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PermissionStatus/name MDN PermissionStatus.name documentation>
+getName :: (MonadDOM m, FromJSString result) => PermissionStatus -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/permissions/#dom-permissionstatus-onchange change event>
+change :: EventName PermissionStatus Event
+change = unsafeEventName (toJSString "change")
diff --git a/src/JSDOM/Generated/Permissions.hs b/src/JSDOM/Generated/Permissions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Permissions.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from permissions (webref). Do not edit.
+module JSDOM.Generated.Permissions
+       (query, query_, Permissions(..), gTypePermissions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Permissions/query MDN Permissions.query documentation>
+query :: (MonadDOM m) => Permissions -> GObject -> m PermissionStatus
+query self permissionDesc = liftDOM (((((self ^. jsf "query" [toJSVal permissionDesc]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Permissions/query MDN Permissions.query documentation>
+query_ :: (MonadDOM m) => Permissions -> GObject -> m ()
+query_ self permissionDesc = liftDOM (void (((self ^. jsf "query" [toJSVal permissionDesc]) >>= readPromise)))
diff --git a/src/JSDOM/Generated/PhotoCapabilities.hs b/src/JSDOM/Generated/PhotoCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PhotoCapabilities.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from image-capture (webref). Do not edit.
+module JSDOM.Generated.PhotoCapabilities
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-image/#dictdef-photocapabilities PhotoCapabilities specification>
+newPhotoCapabilities :: (MonadDOM m) => m PhotoCapabilities
+newPhotoCapabilities = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-redeyereduction PhotoCapabilities.redEyeReduction specification>
+setRedEyeReduction :: (MonadDOM m) => PhotoCapabilities -> RedEyeReduction -> m ()
+setRedEyeReduction self val = liftDOM (void (self ^. jss "redEyeReduction" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-redeyereduction PhotoCapabilities.redEyeReduction specification>
+getRedEyeReduction :: (MonadDOM m) => PhotoCapabilities -> m (Maybe RedEyeReduction)
+getRedEyeReduction self = liftDOM (((self ^. js "redEyeReduction") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-redeyereduction PhotoCapabilities.redEyeReduction specification>
+getRedEyeReductionUnsafe :: (MonadDOM m, HasCallStack) => PhotoCapabilities -> m RedEyeReduction
+getRedEyeReductionUnsafe self = liftDOM ((((self ^. js "redEyeReduction") >>= 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 (((self ^. js "redEyeReduction") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-imageheight PhotoCapabilities.imageHeight specification>
+setImageHeight :: (MonadDOM m) => PhotoCapabilities -> MediaSettingsRange -> m ()
+setImageHeight self val = liftDOM (void (self ^. jss "imageHeight" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-imageheight PhotoCapabilities.imageHeight specification>
+getImageHeight :: (MonadDOM m) => PhotoCapabilities -> m (Maybe MediaSettingsRange)
+getImageHeight self = liftDOM (((self ^. js "imageHeight") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-imageheight PhotoCapabilities.imageHeight specification>
+getImageHeightUnsafe :: (MonadDOM m, HasCallStack) => PhotoCapabilities -> m MediaSettingsRange
+getImageHeightUnsafe self = liftDOM ((((self ^. js "imageHeight") >>= 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 (((self ^. js "imageHeight") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-imagewidth PhotoCapabilities.imageWidth specification>
+setImageWidth :: (MonadDOM m) => PhotoCapabilities -> MediaSettingsRange -> m ()
+setImageWidth self val = liftDOM (void (self ^. jss "imageWidth" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-imagewidth PhotoCapabilities.imageWidth specification>
+getImageWidth :: (MonadDOM m) => PhotoCapabilities -> m (Maybe MediaSettingsRange)
+getImageWidth self = liftDOM (((self ^. js "imageWidth") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-imagewidth PhotoCapabilities.imageWidth specification>
+getImageWidthUnsafe :: (MonadDOM m, HasCallStack) => PhotoCapabilities -> m MediaSettingsRange
+getImageWidthUnsafe self = liftDOM ((((self ^. js "imageWidth") >>= 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 (((self ^. js "imageWidth") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-filllightmode PhotoCapabilities.fillLightMode specification>
+setFillLightMode :: (MonadDOM m) => PhotoCapabilities -> [FillLightMode] -> m ()
+setFillLightMode self val = liftDOM (void (self ^. jss "fillLightMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-filllightmode PhotoCapabilities.fillLightMode specification>
+getFillLightMode :: (MonadDOM m) => PhotoCapabilities -> m (Maybe [FillLightMode])
+getFillLightMode self = liftDOM (((self ^. js "fillLightMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photocapabilities-filllightmode PhotoCapabilities.fillLightMode specification>
+getFillLightModeUnsafe :: (MonadDOM m, HasCallStack) => PhotoCapabilities -> m [FillLightMode]
+getFillLightModeUnsafe self = liftDOM ((((self ^. js "fillLightMode") >>= 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 (((self ^. js "fillLightMode") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PhotoSettings.hs b/src/JSDOM/Generated/PhotoSettings.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PhotoSettings.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from image-capture (webref). Do not edit.
+module JSDOM.Generated.PhotoSettings
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-image/#dictdef-photosettings PhotoSettings specification>
+newPhotoSettings :: (MonadDOM m) => m PhotoSettings
+newPhotoSettings = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-filllightmode PhotoSettings.fillLightMode specification>
+setFillLightMode :: (MonadDOM m) => PhotoSettings -> FillLightMode -> m ()
+setFillLightMode self val = liftDOM (void (self ^. jss "fillLightMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-filllightmode PhotoSettings.fillLightMode specification>
+getFillLightMode :: (MonadDOM m) => PhotoSettings -> m (Maybe FillLightMode)
+getFillLightMode self = liftDOM (((self ^. js "fillLightMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-filllightmode PhotoSettings.fillLightMode specification>
+getFillLightModeUnsafe :: (MonadDOM m, HasCallStack) => PhotoSettings -> m FillLightMode
+getFillLightModeUnsafe self = liftDOM ((((self ^. js "fillLightMode") >>= 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 (((self ^. js "fillLightMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-imageheight PhotoSettings.imageHeight specification>
+setImageHeight :: (MonadDOM m) => PhotoSettings -> Double -> m ()
+setImageHeight self val = liftDOM (void (self ^. jss "imageHeight" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-imageheight PhotoSettings.imageHeight specification>
+getImageHeight :: (MonadDOM m) => PhotoSettings -> m (Maybe Double)
+getImageHeight self = liftDOM (((self ^. js "imageHeight") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-imageheight PhotoSettings.imageHeight specification>
+getImageHeightUnsafe :: (MonadDOM m, HasCallStack) => PhotoSettings -> m Double
+getImageHeightUnsafe self = liftDOM ((((self ^. js "imageHeight") >>= 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 (((self ^. js "imageHeight") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-imagewidth PhotoSettings.imageWidth specification>
+setImageWidth :: (MonadDOM m) => PhotoSettings -> Double -> m ()
+setImageWidth self val = liftDOM (void (self ^. jss "imageWidth" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-imagewidth PhotoSettings.imageWidth specification>
+getImageWidth :: (MonadDOM m) => PhotoSettings -> m (Maybe Double)
+getImageWidth self = liftDOM (((self ^. js "imageWidth") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-imagewidth PhotoSettings.imageWidth specification>
+getImageWidthUnsafe :: (MonadDOM m, HasCallStack) => PhotoSettings -> m Double
+getImageWidthUnsafe self = liftDOM ((((self ^. js "imageWidth") >>= 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 (((self ^. js "imageWidth") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-redeyereduction PhotoSettings.redEyeReduction specification>
+setRedEyeReduction :: (MonadDOM m) => PhotoSettings -> Bool -> m ()
+setRedEyeReduction self val = liftDOM (void (self ^. jss "redEyeReduction" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-redeyereduction PhotoSettings.redEyeReduction specification>
+getRedEyeReduction :: (MonadDOM m) => PhotoSettings -> m (Maybe Bool)
+getRedEyeReduction self = liftDOM (((self ^. js "redEyeReduction") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-photosettings-redeyereduction PhotoSettings.redEyeReduction specification>
+getRedEyeReductionUnsafe :: (MonadDOM m, HasCallStack) => PhotoSettings -> m Bool
+getRedEyeReductionUnsafe self = liftDOM ((((self ^. js "redEyeReduction") >>= 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 (((self ^. js "redEyeReduction") >>= valToBool))
diff --git a/src/JSDOM/Generated/PictureInPictureEvent.hs b/src/JSDOM/Generated/PictureInPictureEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PictureInPictureEvent.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from picture-in-picture (webref). Do not edit.
+module JSDOM.Generated.PictureInPictureEvent
+       (newPictureInPictureEvent, getPictureInPictureWindow, PictureInPictureEvent(..), gTypePictureInPictureEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "PictureInPictureEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PictureInPictureEvent/pictureInPictureWindow MDN PictureInPictureEvent.pictureInPictureWindow documentation>
+getPictureInPictureWindow :: (MonadDOM m) => PictureInPictureEvent -> m PictureInPictureWindow
+getPictureInPictureWindow self = liftDOM (((self ^. js "pictureInPictureWindow") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PictureInPictureEventInit.hs b/src/JSDOM/Generated/PictureInPictureEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PictureInPictureEventInit.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from picture-in-picture (webref). Do not edit.
+module JSDOM.Generated.PictureInPictureEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/picture-in-picture/#dictdef-pictureinpictureeventinit PictureInPictureEventInit specification>
+newPictureInPictureEventInit :: (MonadDOM m) => PictureInPictureWindow -> m PictureInPictureEventInit
+newPictureInPictureEventInit pictureInPictureWindow = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "pictureInPictureWindow" (toJSVal pictureInPictureWindow)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/picture-in-picture/#dom-pictureinpictureeventinit-pictureinpicturewindow PictureInPictureEventInit.pictureInPictureWindow specification>
+setPictureInPictureWindow :: (MonadDOM m) => PictureInPictureEventInit -> PictureInPictureWindow -> m ()
+setPictureInPictureWindow self val = liftDOM (void (self ^. jss "pictureInPictureWindow" (toJSVal val)))
+
+-- | <https://w3c.github.io/picture-in-picture/#dom-pictureinpictureeventinit-pictureinpicturewindow PictureInPictureEventInit.pictureInPictureWindow specification>
+getPictureInPictureWindow :: (MonadDOM m) => PictureInPictureEventInit -> m PictureInPictureWindow
+getPictureInPictureWindow self = liftDOM (((self ^. js "pictureInPictureWindow") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PictureInPictureWindow.hs b/src/JSDOM/Generated/PictureInPictureWindow.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PictureInPictureWindow.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from picture-in-picture (webref). Do not edit.
+module JSDOM.Generated.PictureInPictureWindow
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/PictureInPictureWindow/width MDN PictureInPictureWindow.width documentation>
+getWidth :: (MonadDOM m) => PictureInPictureWindow -> m Int
+getWidth self = liftDOM ((P.round <$> ((self ^. js "width") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PictureInPictureWindow/height MDN PictureInPictureWindow.height documentation>
+getHeight :: (MonadDOM m) => PictureInPictureWindow -> m Int
+getHeight self = liftDOM ((P.round <$> ((self ^. js "height") >>= valToNumber)))
+
+-- | <https://w3c.github.io/picture-in-picture/#dom-pictureinpicturewindow-onresize resize event>
+resize :: EventName PictureInPictureWindow Event
+resize = unsafeEventName (toJSString "resize")
diff --git a/src/JSDOM/Generated/PlaneLayout.hs b/src/JSDOM/Generated/PlaneLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PlaneLayout.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.PlaneLayout
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-planelayout PlaneLayout specification>
+newPlaneLayout :: (MonadDOM m) => Word -> Word -> m PlaneLayout
+newPlaneLayout offset stride = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "offset" (toJSVal offset)) P.>> (o ^. jss "stride" (toJSVal stride)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-planelayout-offset PlaneLayout.offset specification>
+setOffset :: (MonadDOM m) => PlaneLayout -> Word -> m ()
+setOffset self val = liftDOM (void (self ^. jss "offset" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-planelayout-offset PlaneLayout.offset specification>
+getOffset :: (MonadDOM m) => PlaneLayout -> m Word
+getOffset self = liftDOM ((P.round <$> ((self ^. js "offset") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-planelayout-stride PlaneLayout.stride specification>
+setStride :: (MonadDOM m) => PlaneLayout -> Word -> m ()
+setStride self val = liftDOM (void (self ^. jss "stride" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-planelayout-stride PlaneLayout.stride specification>
+getStride :: (MonadDOM m) => PlaneLayout -> m Word
+getStride self = liftDOM ((P.round <$> ((self ^. js "stride") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/Plugin.hs b/src/JSDOM/Generated/Plugin.hs
--- a/src/JSDOM/Generated/Plugin.hs
+++ b/src/JSDOM/Generated/Plugin.hs
@@ -1,93 +1,56 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.Plugin
-       (item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_,
-        namedItemUnsafe, namedItemUnchecked, getName, getFilename,
-        getDescription, getLength, Plugin(..), gTypePlugin)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.item Mozilla Plugin.item documentation> 
 item :: (MonadDOM m) => Plugin -> Word -> m (Maybe MimeType)
-item self index
-  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+item self index = liftDOM (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.item Mozilla Plugin.item documentation> 
 item_ :: (MonadDOM m) => Plugin -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+item_ self index = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.item Mozilla Plugin.item documentation> 
-itemUnsafe ::
-           (MonadDOM m, HasCallStack) => Plugin -> Word -> m MimeType
-itemUnsafe self index
-  = liftDOM
-      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+itemUnsafe :: (MonadDOM m, HasCallStack) => Plugin -> Word -> m MimeType
+itemUnsafe self index = liftDOM ((((self ^. jsf "item" [toJSVal 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 :: (MonadDOM m) => Plugin -> Word -> m MimeType
-itemUnchecked self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+itemUnchecked self index = liftDOM (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.namedItem Mozilla Plugin.namedItem documentation> 
-namedItem ::
-          (MonadDOM m, ToJSString name) =>
-            Plugin -> name -> m (Maybe MimeType)
-namedItem self name = liftDOM ((self ! name) >>= fromJSVal)
+namedItem :: (MonadDOM m, ToJSString name) => Plugin -> name -> m (Maybe MimeType)
+namedItem self name = liftDOM (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.namedItem Mozilla Plugin.namedItem documentation> 
-namedItem_ ::
-           (MonadDOM m, ToJSString name) => Plugin -> name -> m ()
-namedItem_ self name = liftDOM (void (self ! name))
+namedItem_ :: (MonadDOM m, ToJSString name) => Plugin -> name -> m ()
+namedItem_ self name = liftDOM (void (self ^. jsf "namedItem" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.namedItem Mozilla Plugin.namedItem documentation> 
-namedItemUnsafe ::
-                (MonadDOM m, ToJSString name, HasCallStack) =>
-                  Plugin -> name -> m MimeType
-namedItemUnsafe self name
-  = liftDOM
-      (((self ! name) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+namedItemUnsafe :: (MonadDOM m, ToJSString name, HasCallStack) => Plugin -> name -> m MimeType
+namedItemUnsafe self name = liftDOM ((((self ^. jsf "namedItem" [toJSVal 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 ::
-                   (MonadDOM m, ToJSString name) => Plugin -> name -> m MimeType
-namedItemUnchecked self name
-  = liftDOM ((self ! name) >>= fromJSValUnchecked)
+namedItemUnchecked :: (MonadDOM m, ToJSString name) => Plugin -> name -> m MimeType
+namedItemUnchecked self name = liftDOM (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.name Mozilla Plugin.name documentation> 
+-- | <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 ((self ^. js "name") >>= fromJSValUnchecked)
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.filename Mozilla Plugin.filename documentation> 
-getFilename ::
-            (MonadDOM m, FromJSString result) => Plugin -> m result
-getFilename self
-  = liftDOM ((self ^. js "filename") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "description") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.description Mozilla Plugin.description documentation> 
-getDescription ::
-               (MonadDOM m, FromJSString result) => Plugin -> m result
-getDescription self
-  = liftDOM ((self ^. js "description") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "filename") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.length Mozilla Plugin.length documentation> 
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-plugin-length Plugin.length specification>
 getLength :: (MonadDOM m) => Plugin -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/PluginArray.hs b/src/JSDOM/Generated/PluginArray.hs
--- a/src/JSDOM/Generated/PluginArray.hs
+++ b/src/JSDOM/Generated/PluginArray.hs
@@ -1,82 +1,48 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.PluginArray
-       (item, item_, itemUnsafe, itemUnchecked, namedItem, namedItem_,
-        namedItemUnsafe, namedItemUnchecked, refresh, getLength,
-        PluginArray(..), gTypePluginArray)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.item Mozilla PluginArray.item documentation> 
 item :: (MonadDOM m) => PluginArray -> Word -> m (Maybe Plugin)
-item self index
-  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+item self index = liftDOM (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.item Mozilla PluginArray.item documentation> 
 item_ :: (MonadDOM m) => PluginArray -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+item_ self index = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.item Mozilla PluginArray.item documentation> 
-itemUnsafe ::
-           (MonadDOM m, HasCallStack) => PluginArray -> Word -> m Plugin
-itemUnsafe self index
-  = liftDOM
-      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+itemUnsafe :: (MonadDOM m, HasCallStack) => PluginArray -> Word -> m Plugin
+itemUnsafe self index = liftDOM ((((self ^. jsf "item" [toJSVal 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 :: (MonadDOM m) => PluginArray -> Word -> m Plugin
-itemUnchecked self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+itemUnchecked self index = liftDOM (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.namedItem Mozilla PluginArray.namedItem documentation> 
-namedItem ::
-          (MonadDOM m, ToJSString name) =>
-            PluginArray -> name -> m (Maybe Plugin)
-namedItem self name = liftDOM ((self ! name) >>= fromJSVal)
+namedItem :: (MonadDOM m, ToJSString name) => PluginArray -> name -> m (Maybe Plugin)
+namedItem self name = liftDOM (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.namedItem Mozilla PluginArray.namedItem documentation> 
-namedItem_ ::
-           (MonadDOM m, ToJSString name) => PluginArray -> name -> m ()
-namedItem_ self name = liftDOM (void (self ! name))
+namedItem_ :: (MonadDOM m, ToJSString name) => PluginArray -> name -> m ()
+namedItem_ self name = liftDOM (void (self ^. jsf "namedItem" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.namedItem Mozilla PluginArray.namedItem documentation> 
-namedItemUnsafe ::
-                (MonadDOM m, ToJSString name, HasCallStack) =>
-                  PluginArray -> name -> m Plugin
-namedItemUnsafe self name
-  = liftDOM
-      (((self ! name) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+namedItemUnsafe :: (MonadDOM m, ToJSString name, HasCallStack) => PluginArray -> name -> m Plugin
+namedItemUnsafe self name = liftDOM ((((self ^. jsf "namedItem" [toJSVal 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 ::
-                   (MonadDOM m, ToJSString name) => PluginArray -> name -> m Plugin
-namedItemUnchecked self name
-  = liftDOM ((self ! name) >>= fromJSValUnchecked)
+namedItemUnchecked :: (MonadDOM m, ToJSString name) => PluginArray -> name -> m Plugin
+namedItemUnchecked self name = liftDOM (((self ^. jsf "namedItem" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.refresh Mozilla PluginArray.refresh documentation> 
-refresh :: (MonadDOM m) => PluginArray -> Bool -> m ()
-refresh self reload
-  = liftDOM (void (self ^. jsf "refresh" [toJSVal reload]))
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-pluginarray-refresh PluginArray.refresh specification>
+refresh :: (MonadDOM m) => PluginArray -> m ()
+refresh self = liftDOM (void (self ^. jsf "refresh" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.length Mozilla PluginArray.length documentation> 
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-pluginarray-length PluginArray.length specification>
 getLength :: (MonadDOM m) => PluginArray -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/Point2D.hs b/src/JSDOM/Generated/Point2D.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Point2D.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from image-capture (webref). Do not edit.
+module JSDOM.Generated.Point2D
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-image/#dictdef-point2d Point2D specification>
+newPoint2D :: (MonadDOM m) => m Point2D
+newPoint2D = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-point2d-x Point2D.x specification>
+setX :: (MonadDOM m) => Point2D -> Double -> m ()
+setX self val = liftDOM (void (self ^. jss "x" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-point2d-x Point2D.x specification>
+getX :: (MonadDOM m) => Point2D -> m (Maybe Double)
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-point2d-x Point2D.x specification>
+getXUnsafe :: (MonadDOM m, HasCallStack) => Point2D -> m Double
+getXUnsafe self = liftDOM ((((self ^. js "x") >>= 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 (((self ^. js "x") >>= valToNumber))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-point2d-y Point2D.y specification>
+setY :: (MonadDOM m) => Point2D -> Double -> m ()
+setY self val = liftDOM (void (self ^. jss "y" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-point2d-y Point2D.y specification>
+getY :: (MonadDOM m) => Point2D -> m (Maybe Double)
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-image/#dom-point2d-y Point2D.y specification>
+getYUnsafe :: (MonadDOM m, HasCallStack) => Point2D -> m Double
+getYUnsafe self = liftDOM ((((self ^. js "y") >>= 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 (((self ^. js "y") >>= valToNumber))
diff --git a/src/JSDOM/Generated/PointerEvent.hs b/src/JSDOM/Generated/PointerEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PointerEvent.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from pointerevents4 (webref). Do not edit.
+module JSDOM.Generated.PointerEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "PointerEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/getCoalescedEvents MDN PointerEvent.getCoalescedEvents documentation>
+getCoalescedEvents :: (MonadDOM m) => PointerEvent -> m [PointerEvent]
+getCoalescedEvents self = liftDOM (((self ^. jsf "getCoalescedEvents" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/getCoalescedEvents MDN PointerEvent.getCoalescedEvents documentation>
+getCoalescedEvents_ :: (MonadDOM m) => PointerEvent -> m ()
+getCoalescedEvents_ self = liftDOM (void (self ^. jsf "getCoalescedEvents" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/getPredictedEvents MDN PointerEvent.getPredictedEvents documentation>
+getPredictedEvents :: (MonadDOM m) => PointerEvent -> m [PointerEvent]
+getPredictedEvents self = liftDOM (((self ^. jsf "getPredictedEvents" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/getPredictedEvents MDN PointerEvent.getPredictedEvents documentation>
+getPredictedEvents_ :: (MonadDOM m) => PointerEvent -> m ()
+getPredictedEvents_ self = liftDOM (void (self ^. jsf "getPredictedEvents" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/pointerId MDN PointerEvent.pointerId documentation>
+getPointerId :: (MonadDOM m) => PointerEvent -> m Int
+getPointerId self = liftDOM ((P.round <$> ((self ^. js "pointerId") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/width MDN PointerEvent.width documentation>
+getWidth :: (MonadDOM m) => PointerEvent -> m Double
+getWidth self = liftDOM (((self ^. js "width") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/height MDN PointerEvent.height documentation>
+getHeight :: (MonadDOM m) => PointerEvent -> m Double
+getHeight self = liftDOM (((self ^. js "height") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/pressure MDN PointerEvent.pressure documentation>
+getPressure :: (MonadDOM m) => PointerEvent -> m Float
+getPressure self = liftDOM ((P.realToFrac <$> ((self ^. js "pressure") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/tangentialPressure MDN PointerEvent.tangentialPressure documentation>
+getTangentialPressure :: (MonadDOM m) => PointerEvent -> m Float
+getTangentialPressure self = liftDOM ((P.realToFrac <$> ((self ^. js "tangentialPressure") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/tiltX MDN PointerEvent.tiltX documentation>
+getTiltX :: (MonadDOM m) => PointerEvent -> m Int
+getTiltX self = liftDOM ((P.round <$> ((self ^. js "tiltX") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/tiltY MDN PointerEvent.tiltY documentation>
+getTiltY :: (MonadDOM m) => PointerEvent -> m Int
+getTiltY self = liftDOM ((P.round <$> ((self ^. js "tiltY") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/twist MDN PointerEvent.twist documentation>
+getTwist :: (MonadDOM m) => PointerEvent -> m Int
+getTwist self = liftDOM ((P.round <$> ((self ^. js "twist") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/altitudeAngle MDN PointerEvent.altitudeAngle documentation>
+getAltitudeAngle :: (MonadDOM m) => PointerEvent -> m Double
+getAltitudeAngle self = liftDOM (((self ^. js "altitudeAngle") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/azimuthAngle MDN PointerEvent.azimuthAngle documentation>
+getAzimuthAngle :: (MonadDOM m) => PointerEvent -> m Double
+getAzimuthAngle self = liftDOM (((self ^. js "azimuthAngle") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/pointerType MDN PointerEvent.pointerType documentation>
+getPointerType :: (MonadDOM m, FromJSString result) => PointerEvent -> m result
+getPointerType self = liftDOM (((self ^. js "pointerType") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/isPrimary MDN PointerEvent.isPrimary documentation>
+getIsPrimary :: (MonadDOM m) => PointerEvent -> m Bool
+getIsPrimary self = liftDOM (((self ^. js "isPrimary") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PointerEvent/persistentDeviceId MDN PointerEvent.persistentDeviceId documentation>
+getPersistentDeviceId :: (MonadDOM m) => PointerEvent -> m Int
+getPersistentDeviceId self = liftDOM ((P.round <$> ((self ^. js "persistentDeviceId") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/PointerEventInit.hs b/src/JSDOM/Generated/PointerEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PointerEventInit.hs
@@ -0,0 +1,260 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from pointerevents4 (webref). Do not edit.
+module JSDOM.Generated.PointerEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit PointerEventInit specification>
+newPointerEventInit :: (MonadDOM m) => m PointerEventInit
+newPointerEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pointerid PointerEventInit.pointerId specification>
+setPointerId :: (MonadDOM m) => PointerEventInit -> Int -> m ()
+setPointerId self val = liftDOM (void (self ^. jss "pointerId" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pointerid PointerEventInit.pointerId specification>
+getPointerId :: (MonadDOM m) => PointerEventInit -> m (Maybe Int)
+getPointerId self = liftDOM (((self ^. js "pointerId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pointerid PointerEventInit.pointerId specification>
+getPointerIdUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Int
+getPointerIdUnsafe self = liftDOM ((((self ^. js "pointerId") >>= 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 ((P.round <$> ((self ^. js "pointerId") >>= valToNumber)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-width PointerEventInit.width specification>
+setWidth :: (MonadDOM m) => PointerEventInit -> Double -> m ()
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-width PointerEventInit.width specification>
+getWidth :: (MonadDOM m) => PointerEventInit -> m (Maybe Double)
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-width PointerEventInit.width specification>
+getWidthUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Double
+getWidthUnsafe self = liftDOM ((((self ^. js "width") >>= 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 (((self ^. js "width") >>= valToNumber))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-height PointerEventInit.height specification>
+setHeight :: (MonadDOM m) => PointerEventInit -> Double -> m ()
+setHeight self val = liftDOM (void (self ^. jss "height" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-height PointerEventInit.height specification>
+getHeight :: (MonadDOM m) => PointerEventInit -> m (Maybe Double)
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-height PointerEventInit.height specification>
+getHeightUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Double
+getHeightUnsafe self = liftDOM ((((self ^. js "height") >>= 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 (((self ^. js "height") >>= valToNumber))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pressure PointerEventInit.pressure specification>
+setPressure :: (MonadDOM m) => PointerEventInit -> Float -> m ()
+setPressure self val = liftDOM (void (self ^. jss "pressure" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pressure PointerEventInit.pressure specification>
+getPressure :: (MonadDOM m) => PointerEventInit -> m (Maybe Float)
+getPressure self = liftDOM (((self ^. js "pressure") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pressure PointerEventInit.pressure specification>
+getPressureUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Float
+getPressureUnsafe self = liftDOM ((((self ^. js "pressure") >>= 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 ((P.realToFrac <$> ((self ^. js "pressure") >>= valToNumber)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tangentialpressure PointerEventInit.tangentialPressure specification>
+setTangentialPressure :: (MonadDOM m) => PointerEventInit -> Float -> m ()
+setTangentialPressure self val = liftDOM (void (self ^. jss "tangentialPressure" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tangentialpressure PointerEventInit.tangentialPressure specification>
+getTangentialPressure :: (MonadDOM m) => PointerEventInit -> m (Maybe Float)
+getTangentialPressure self = liftDOM (((self ^. js "tangentialPressure") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tangentialpressure PointerEventInit.tangentialPressure specification>
+getTangentialPressureUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Float
+getTangentialPressureUnsafe self = liftDOM ((((self ^. js "tangentialPressure") >>= 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 ((P.realToFrac <$> ((self ^. js "tangentialPressure") >>= valToNumber)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tiltx PointerEventInit.tiltX specification>
+setTiltX :: (MonadDOM m) => PointerEventInit -> Int -> m ()
+setTiltX self val = liftDOM (void (self ^. jss "tiltX" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tiltx PointerEventInit.tiltX specification>
+getTiltX :: (MonadDOM m) => PointerEventInit -> m (Maybe Int)
+getTiltX self = liftDOM (((self ^. js "tiltX") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tiltx PointerEventInit.tiltX specification>
+getTiltXUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Int
+getTiltXUnsafe self = liftDOM ((((self ^. js "tiltX") >>= 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 ((P.round <$> ((self ^. js "tiltX") >>= valToNumber)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tilty PointerEventInit.tiltY specification>
+setTiltY :: (MonadDOM m) => PointerEventInit -> Int -> m ()
+setTiltY self val = liftDOM (void (self ^. jss "tiltY" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tilty PointerEventInit.tiltY specification>
+getTiltY :: (MonadDOM m) => PointerEventInit -> m (Maybe Int)
+getTiltY self = liftDOM (((self ^. js "tiltY") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-tilty PointerEventInit.tiltY specification>
+getTiltYUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Int
+getTiltYUnsafe self = liftDOM ((((self ^. js "tiltY") >>= 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 ((P.round <$> ((self ^. js "tiltY") >>= valToNumber)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-twist PointerEventInit.twist specification>
+setTwist :: (MonadDOM m) => PointerEventInit -> Int -> m ()
+setTwist self val = liftDOM (void (self ^. jss "twist" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-twist PointerEventInit.twist specification>
+getTwist :: (MonadDOM m) => PointerEventInit -> m (Maybe Int)
+getTwist self = liftDOM (((self ^. js "twist") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-twist PointerEventInit.twist specification>
+getTwistUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Int
+getTwistUnsafe self = liftDOM ((((self ^. js "twist") >>= 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 ((P.round <$> ((self ^. js "twist") >>= valToNumber)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-altitudeangle PointerEventInit.altitudeAngle specification>
+setAltitudeAngle :: (MonadDOM m) => PointerEventInit -> Double -> m ()
+setAltitudeAngle self val = liftDOM (void (self ^. jss "altitudeAngle" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-altitudeangle PointerEventInit.altitudeAngle specification>
+getAltitudeAngle :: (MonadDOM m) => PointerEventInit -> m (Maybe Double)
+getAltitudeAngle self = liftDOM (((self ^. js "altitudeAngle") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-altitudeangle PointerEventInit.altitudeAngle specification>
+getAltitudeAngleUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Double
+getAltitudeAngleUnsafe self = liftDOM ((((self ^. js "altitudeAngle") >>= 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 (((self ^. js "altitudeAngle") >>= valToNumber))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-azimuthangle PointerEventInit.azimuthAngle specification>
+setAzimuthAngle :: (MonadDOM m) => PointerEventInit -> Double -> m ()
+setAzimuthAngle self val = liftDOM (void (self ^. jss "azimuthAngle" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-azimuthangle PointerEventInit.azimuthAngle specification>
+getAzimuthAngle :: (MonadDOM m) => PointerEventInit -> m (Maybe Double)
+getAzimuthAngle self = liftDOM (((self ^. js "azimuthAngle") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-azimuthangle PointerEventInit.azimuthAngle specification>
+getAzimuthAngleUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Double
+getAzimuthAngleUnsafe self = liftDOM ((((self ^. js "azimuthAngle") >>= 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 (((self ^. js "azimuthAngle") >>= valToNumber))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pointertype PointerEventInit.pointerType specification>
+setPointerType :: (MonadDOM m, ToJSString val) => PointerEventInit -> val -> m ()
+setPointerType self val = liftDOM (void (self ^. jss "pointerType" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pointertype PointerEventInit.pointerType specification>
+getPointerType :: (MonadDOM m, FromJSString result) => PointerEventInit -> m (Maybe result)
+getPointerType self = liftDOM (((self ^. js "pointerType") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-pointertype PointerEventInit.pointerType specification>
+getPointerTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PointerEventInit -> m result
+getPointerTypeUnsafe self = liftDOM ((((self ^. js "pointerType") >>= fromMaybeJSString) >>= 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 (((self ^. js "pointerType") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-isprimary PointerEventInit.isPrimary specification>
+setIsPrimary :: (MonadDOM m) => PointerEventInit -> Bool -> m ()
+setIsPrimary self val = liftDOM (void (self ^. jss "isPrimary" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-isprimary PointerEventInit.isPrimary specification>
+getIsPrimary :: (MonadDOM m) => PointerEventInit -> m (Maybe Bool)
+getIsPrimary self = liftDOM (((self ^. js "isPrimary") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-isprimary PointerEventInit.isPrimary specification>
+getIsPrimaryUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Bool
+getIsPrimaryUnsafe self = liftDOM ((((self ^. js "isPrimary") >>= 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 (((self ^. js "isPrimary") >>= valToBool))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-persistentdeviceid PointerEventInit.persistentDeviceId specification>
+setPersistentDeviceId :: (MonadDOM m) => PointerEventInit -> Int -> m ()
+setPersistentDeviceId self val = liftDOM (void (self ^. jss "persistentDeviceId" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-persistentdeviceid PointerEventInit.persistentDeviceId specification>
+getPersistentDeviceId :: (MonadDOM m) => PointerEventInit -> m (Maybe Int)
+getPersistentDeviceId self = liftDOM (((self ^. js "persistentDeviceId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-persistentdeviceid PointerEventInit.persistentDeviceId specification>
+getPersistentDeviceIdUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m Int
+getPersistentDeviceIdUnsafe self = liftDOM ((((self ^. js "persistentDeviceId") >>= 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 ((P.round <$> ((self ^. js "persistentDeviceId") >>= valToNumber)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-coalescedevents PointerEventInit.coalescedEvents specification>
+setCoalescedEvents :: (MonadDOM m) => PointerEventInit -> [PointerEvent] -> m ()
+setCoalescedEvents self val = liftDOM (void (self ^. jss "coalescedEvents" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-coalescedevents PointerEventInit.coalescedEvents specification>
+getCoalescedEvents :: (MonadDOM m) => PointerEventInit -> m (Maybe [PointerEvent])
+getCoalescedEvents self = liftDOM (((self ^. js "coalescedEvents") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-coalescedevents PointerEventInit.coalescedEvents specification>
+getCoalescedEventsUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m [PointerEvent]
+getCoalescedEventsUnsafe self = liftDOM ((((self ^. js "coalescedEvents") >>= 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 (((self ^. js "coalescedEvents") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-predictedevents PointerEventInit.predictedEvents specification>
+setPredictedEvents :: (MonadDOM m) => PointerEventInit -> [PointerEvent] -> m ()
+setPredictedEvents self val = liftDOM (void (self ^. jss "predictedEvents" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-predictedevents PointerEventInit.predictedEvents specification>
+getPredictedEvents :: (MonadDOM m) => PointerEventInit -> m (Maybe [PointerEvent])
+getPredictedEvents self = liftDOM (((self ^. js "predictedEvents") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-pointereventinit-predictedevents PointerEventInit.predictedEvents specification>
+getPredictedEventsUnsafe :: (MonadDOM m, HasCallStack) => PointerEventInit -> m [PointerEvent]
+getPredictedEventsUnsafe self = liftDOM ((((self ^. js "predictedEvents") >>= 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 (((self ^. js "predictedEvents") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PointerLockOptions.hs b/src/JSDOM/Generated/PointerLockOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PointerLockOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from pointerlock-2 (webref). Do not edit.
+module JSDOM.Generated.PointerLockOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/pointerlock/#dom-pointerlockoptions PointerLockOptions specification>
+newPointerLockOptions :: (MonadDOM m) => m PointerLockOptions
+newPointerLockOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerlock/#dom-pointerlockoptions-unadjustedmovement PointerLockOptions.unadjustedMovement specification>
+setUnadjustedMovement :: (MonadDOM m) => PointerLockOptions -> Bool -> m ()
+setUnadjustedMovement self val = liftDOM (void (self ^. jss "unadjustedMovement" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerlock/#dom-pointerlockoptions-unadjustedmovement PointerLockOptions.unadjustedMovement specification>
+getUnadjustedMovement :: (MonadDOM m) => PointerLockOptions -> m (Maybe Bool)
+getUnadjustedMovement self = liftDOM (((self ^. js "unadjustedMovement") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerlock/#dom-pointerlockoptions-unadjustedmovement PointerLockOptions.unadjustedMovement specification>
+getUnadjustedMovementUnsafe :: (MonadDOM m, HasCallStack) => PointerLockOptions -> m Bool
+getUnadjustedMovementUnsafe self = liftDOM ((((self ^. js "unadjustedMovement") >>= 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 (((self ^. js "unadjustedMovement") >>= valToBool))
diff --git a/src/JSDOM/Generated/PopStateEvent.hs b/src/JSDOM/Generated/PopStateEvent.hs
--- a/src/JSDOM/Generated/PopStateEvent.hs
+++ b/src/JSDOM/Generated/PopStateEvent.hs
@@ -1,33 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.PopStateEvent
-       (newPopStateEvent, getState, PopStateEvent(..), gTypePopStateEvent)
+       (newPopStateEvent, getState, getHasUAVisualTransition, PopStateEvent(..), gTypePopStateEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PopStateEvent Mozilla PopStateEvent documentation> 
-newPopStateEvent ::
-                 (MonadDOM m, ToJSString type') =>
-                   type' -> Maybe PopStateEventInit -> m PopStateEvent
-newPopStateEvent type' eventInitDict
-  = liftDOM
-      (PopStateEvent <$>
-         new (jsg "PopStateEvent") [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "PopStateEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PopStateEvent.state Mozilla PopStateEvent.state documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PopStateEvent/state MDN PopStateEvent.state documentation>
 getState :: (MonadDOM m) => PopStateEvent -> m JSVal
-getState self = liftDOM ((self ^. js "state") >>= toJSVal)
+getState self = liftDOM (self ^. js "state")
+
+-- | <https://developer.mozilla.org/docs/Web/API/PopStateEvent/hasUAVisualTransition MDN PopStateEvent.hasUAVisualTransition documentation>
+getHasUAVisualTransition :: (MonadDOM m) => PopStateEvent -> m Bool
+getHasUAVisualTransition self = liftDOM (((self ^. js "hasUAVisualTransition") >>= valToBool))
diff --git a/src/JSDOM/Generated/PopStateEventInit.hs b/src/JSDOM/Generated/PopStateEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PopStateEventInit.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.PopStateEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#popstateeventinit PopStateEventInit specification>
+newPopStateEventInit :: (MonadDOM m) => m PopStateEventInit
+newPopStateEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "state" (toJSVal val)))
+
+-- | <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 (self ^. js "state")
+
+-- | <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 (self ^. jss "hasUAVisualTransition" (toJSVal val)))
+
+-- | <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 (((self ^. js "hasUAVisualTransition") >>= 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 ((((self ^. js "hasUAVisualTransition") >>= 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 (((self ^. js "hasUAVisualTransition") >>= valToBool))
diff --git a/src/JSDOM/Generated/PopoverTargetAttributes.hs b/src/JSDOM/Generated/PopoverTargetAttributes.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PopoverTargetAttributes.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.PopoverTargetAttributes
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toPopoverTargetAttributes self) ^. jss "popoverTargetElement" (toJSVal val)))
+
+-- | <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 ((((Types.toPopoverTargetAttributes self) ^. js "popoverTargetElement") >>= 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 (((((Types.toPopoverTargetAttributes self) ^. js "popoverTargetElement") >>= 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 ((((Types.toPopoverTargetAttributes self) ^. js "popoverTargetElement") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toPopoverTargetAttributes self) ^. jss "popoverTargetAction" (toJSVal val)))
+
+-- | <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 ((((Types.toPopoverTargetAttributes self) ^. js "popoverTargetAction") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PositionCallback.hs b/src/JSDOM/Generated/PositionCallback.hs
--- a/src/JSDOM/Generated/PositionCallback.hs
+++ b/src/JSDOM/Generated/PositionCallback.hs
@@ -1,51 +1,30 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geolocation (webref). Do not edit.
 module JSDOM.Generated.PositionCallback
-       (newPositionCallback, newPositionCallbackSync,
-        newPositionCallbackAsync, PositionCallback)
+       (newPositionCallback, newPositionCallbackSync, newPositionCallbackAsync, PositionCallback)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionCallback Mozilla PositionCallback documentation> 
-newPositionCallback ::
-                    (MonadDOM m) => (Geoposition -> JSM ()) -> m PositionCallback
-newPositionCallback callback
-  = liftDOM
-      (PositionCallback . Callback <$>
-         function
-           (\ _ _ [position] ->
-              fromJSValUnchecked position >>= \ position' -> callback position'))
+newPositionCallback :: (MonadDOM m) => (GeolocationPosition -> JSM ()) -> m PositionCallback
+newPositionCallback callback = liftDOM (PositionCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (position : _) -> do
+          position' <- fromJSValUnchecked position
+          callback position'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionCallback Mozilla PositionCallback documentation> 
-newPositionCallbackSync ::
-                        (MonadDOM m) => (Geoposition -> JSM ()) -> m PositionCallback
-newPositionCallbackSync callback
-  = liftDOM
-      (PositionCallback . Callback <$>
-         function
-           (\ _ _ [position] ->
-              fromJSValUnchecked position >>= \ position' -> callback position'))
+newPositionCallbackSync :: (MonadDOM m) => (GeolocationPosition -> JSM ()) -> m PositionCallback
+newPositionCallbackSync callback = liftDOM (PositionCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (position : _) -> do
+          position' <- fromJSValUnchecked position
+          callback position'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionCallback Mozilla PositionCallback documentation> 
-newPositionCallbackAsync ::
-                         (MonadDOM m) => (Geoposition -> JSM ()) -> m PositionCallback
-newPositionCallbackAsync callback
-  = liftDOM
-      (PositionCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [position] ->
-              fromJSValUnchecked position >>= \ position' -> callback position'))
+newPositionCallbackAsync :: (MonadDOM m) => (GeolocationPosition -> JSM ()) -> m PositionCallback
+newPositionCallbackAsync callback = liftDOM (PositionCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (position : _) -> do
+          position' <- fromJSValUnchecked position
+          callback position'))
diff --git a/src/JSDOM/Generated/PositionError.hs b/src/JSDOM/Generated/PositionError.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/PositionError.hs
+++ /dev/null
@@ -1,36 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.PositionError
-       (pattern PERMISSION_DENIED, pattern POSITION_UNAVAILABLE,
-        pattern TIMEOUT, getCode, getMessage, PositionError(..),
-        gTypePositionError)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-pattern PERMISSION_DENIED = 1
-pattern POSITION_UNAVAILABLE = 2
-pattern TIMEOUT = 3
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionError.code Mozilla PositionError.code documentation> 
-getCode :: (MonadDOM m) => PositionError -> m Word
-getCode self
-  = liftDOM (round <$> ((self ^. js "code") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionError.message Mozilla PositionError.message documentation> 
-getMessage ::
-           (MonadDOM m, FromJSString result) => PositionError -> m result
-getMessage self
-  = liftDOM ((self ^. js "message") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/PositionErrorCallback.hs b/src/JSDOM/Generated/PositionErrorCallback.hs
--- a/src/JSDOM/Generated/PositionErrorCallback.hs
+++ b/src/JSDOM/Generated/PositionErrorCallback.hs
@@ -1,54 +1,30 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geolocation (webref). Do not edit.
 module JSDOM.Generated.PositionErrorCallback
-       (newPositionErrorCallback, newPositionErrorCallbackSync,
-        newPositionErrorCallbackAsync, PositionErrorCallback)
+       (newPositionErrorCallback, newPositionErrorCallbackSync, newPositionErrorCallbackAsync, PositionErrorCallback)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionErrorCallback Mozilla PositionErrorCallback documentation> 
-newPositionErrorCallback ::
-                         (MonadDOM m) =>
-                           (PositionError -> JSM ()) -> m PositionErrorCallback
-newPositionErrorCallback callback
-  = liftDOM
-      (PositionErrorCallback . Callback <$>
-         function
-           (\ _ _ [error] ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
+newPositionErrorCallback :: (MonadDOM m) => (GeolocationPositionError -> JSM ()) -> m PositionErrorCallback
+newPositionErrorCallback callback = liftDOM (PositionErrorCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (positionError : _) -> do
+          positionError' <- fromJSValUnchecked positionError
+          callback positionError'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionErrorCallback Mozilla PositionErrorCallback documentation> 
-newPositionErrorCallbackSync ::
-                             (MonadDOM m) =>
-                               (PositionError -> JSM ()) -> m PositionErrorCallback
-newPositionErrorCallbackSync callback
-  = liftDOM
-      (PositionErrorCallback . Callback <$>
-         function
-           (\ _ _ [error] ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
+newPositionErrorCallbackSync :: (MonadDOM m) => (GeolocationPositionError -> JSM ()) -> m PositionErrorCallback
+newPositionErrorCallbackSync callback = liftDOM (PositionErrorCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (positionError : _) -> do
+          positionError' <- fromJSValUnchecked positionError
+          callback positionError'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionErrorCallback Mozilla PositionErrorCallback documentation> 
-newPositionErrorCallbackAsync ::
-                              (MonadDOM m) =>
-                                (PositionError -> JSM ()) -> m PositionErrorCallback
-newPositionErrorCallbackAsync callback
-  = liftDOM
-      (PositionErrorCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [error] ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
+newPositionErrorCallbackAsync :: (MonadDOM m) => (GeolocationPositionError -> JSM ()) -> m PositionErrorCallback
+newPositionErrorCallbackAsync callback = liftDOM (PositionErrorCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (positionError : _) -> do
+          positionError' <- fromJSValUnchecked positionError
+          callback positionError'))
diff --git a/src/JSDOM/Generated/PositionOptions.hs b/src/JSDOM/Generated/PositionOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PositionOptions.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from geolocation (webref). Do not edit.
+module JSDOM.Generated.PositionOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions PositionOptions specification>
+newPositionOptions :: (MonadDOM m) => m PositionOptions
+newPositionOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-enablehighaccuracy PositionOptions.enableHighAccuracy specification>
+setEnableHighAccuracy :: (MonadDOM m) => PositionOptions -> Bool -> m ()
+setEnableHighAccuracy self val = liftDOM (void (self ^. jss "enableHighAccuracy" (toJSVal val)))
+
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-enablehighaccuracy PositionOptions.enableHighAccuracy specification>
+getEnableHighAccuracy :: (MonadDOM m) => PositionOptions -> m (Maybe Bool)
+getEnableHighAccuracy self = liftDOM (((self ^. js "enableHighAccuracy") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-enablehighaccuracy PositionOptions.enableHighAccuracy specification>
+getEnableHighAccuracyUnsafe :: (MonadDOM m, HasCallStack) => PositionOptions -> m Bool
+getEnableHighAccuracyUnsafe self = liftDOM ((((self ^. js "enableHighAccuracy") >>= 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 (((self ^. js "enableHighAccuracy") >>= valToBool))
+
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-timeout PositionOptions.timeout specification>
+setTimeout :: (MonadDOM m) => PositionOptions -> Word -> m ()
+setTimeout self val = liftDOM (void (self ^. jss "timeout" (toJSVal val)))
+
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-timeout PositionOptions.timeout specification>
+getTimeout :: (MonadDOM m) => PositionOptions -> m (Maybe Word)
+getTimeout self = liftDOM (((self ^. js "timeout") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-timeout PositionOptions.timeout specification>
+getTimeoutUnsafe :: (MonadDOM m, HasCallStack) => PositionOptions -> m Word
+getTimeoutUnsafe self = liftDOM ((((self ^. js "timeout") >>= 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 ((P.round <$> ((self ^. js "timeout") >>= valToNumber)))
+
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-maximumage PositionOptions.maximumAge specification>
+setMaximumAge :: (MonadDOM m) => PositionOptions -> Word -> m ()
+setMaximumAge self val = liftDOM (void (self ^. jss "maximumAge" (toJSVal val)))
+
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-maximumage PositionOptions.maximumAge specification>
+getMaximumAge :: (MonadDOM m) => PositionOptions -> m (Maybe Word)
+getMaximumAge self = liftDOM (((self ^. js "maximumAge") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/geolocation/#dom-positionoptions-maximumage PositionOptions.maximumAge specification>
+getMaximumAgeUnsafe :: (MonadDOM m, HasCallStack) => PositionOptions -> m Word
+getMaximumAgeUnsafe self = liftDOM ((((self ^. js "maximumAge") >>= 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 ((P.round <$> ((self ^. js "maximumAge") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/PrivateToken.hs b/src/JSDOM/Generated/PrivateToken.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PrivateToken.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trust-token-api (webref). Do not edit.
+module JSDOM.Generated.PrivateToken
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://wicg.github.io/trust-token-api/#dictdef-privatetoken PrivateToken specification>
+newPrivateToken :: (MonadDOM m) => TokenVersion -> OperationType -> m PrivateToken
+newPrivateToken version operation = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "version" (toJSVal version)) P.>> (o ^. jss "operation" (toJSVal operation)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-version PrivateToken.version specification>
+setVersion :: (MonadDOM m) => PrivateToken -> TokenVersion -> m ()
+setVersion self val = liftDOM (void (self ^. jss "version" (toJSVal val)))
+
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-version PrivateToken.version specification>
+getVersion :: (MonadDOM m) => PrivateToken -> m TokenVersion
+getVersion self = liftDOM (((self ^. js "version") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-operation PrivateToken.operation specification>
+setOperation :: (MonadDOM m) => PrivateToken -> OperationType -> m ()
+setOperation self val = liftDOM (void (self ^. jss "operation" (toJSVal val)))
+
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-operation PrivateToken.operation specification>
+getOperation :: (MonadDOM m) => PrivateToken -> m OperationType
+getOperation self = liftDOM (((self ^. js "operation") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-refreshpolicy PrivateToken.refreshPolicy specification>
+setRefreshPolicy :: (MonadDOM m) => PrivateToken -> RefreshPolicy -> m ()
+setRefreshPolicy self val = liftDOM (void (self ^. jss "refreshPolicy" (toJSVal val)))
+
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-refreshpolicy PrivateToken.refreshPolicy specification>
+getRefreshPolicy :: (MonadDOM m) => PrivateToken -> m (Maybe RefreshPolicy)
+getRefreshPolicy self = liftDOM (((self ^. js "refreshPolicy") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/trust-token-api/#dom-privatetoken-refreshpolicy PrivateToken.refreshPolicy specification>
+getRefreshPolicyUnsafe :: (MonadDOM m, HasCallStack) => PrivateToken -> m RefreshPolicy
+getRefreshPolicyUnsafe self = liftDOM ((((self ^. js "refreshPolicy") >>= 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 (((self ^. js "refreshPolicy") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "issuers" (toJSVal val)))
+
+-- | <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 (((self ^. js "issuers") >>= 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 ((((self ^. js "issuers") >>= 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 (((self ^. js "issuers") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ProcessingInstruction.hs b/src/JSDOM/Generated/ProcessingInstruction.hs
--- a/src/JSDOM/Generated/ProcessingInstruction.hs
+++ b/src/JSDOM/Generated/ProcessingInstruction.hs
@@ -1,47 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.ProcessingInstruction
-       (getTarget, getSheet, getSheetUnsafe, getSheetUnchecked,
-        ProcessingInstruction(..), gTypeProcessingInstruction)
+       (getTarget, ProcessingInstruction(..), gTypeProcessingInstruction)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.target Mozilla ProcessingInstruction.target documentation> 
-getTarget ::
-          (MonadDOM m, FromJSString result) =>
-            ProcessingInstruction -> m result
-getTarget self
-  = liftDOM ((self ^. js "target") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.sheet Mozilla ProcessingInstruction.sheet documentation> 
-getSheet ::
-         (MonadDOM m) => ProcessingInstruction -> m (Maybe StyleSheet)
-getSheet self = liftDOM ((self ^. js "sheet") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.sheet Mozilla ProcessingInstruction.sheet documentation> 
-getSheetUnsafe ::
-               (MonadDOM m, HasCallStack) => ProcessingInstruction -> m StyleSheet
-getSheetUnsafe self
-  = liftDOM
-      (((self ^. js "sheet") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.sheet Mozilla ProcessingInstruction.sheet documentation> 
-getSheetUnchecked ::
-                  (MonadDOM m) => ProcessingInstruction -> m StyleSheet
-getSheetUnchecked self
-  = liftDOM ((self ^. js "sheet") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/ProcessingInstruction/target MDN ProcessingInstruction.target documentation>
+getTarget :: (MonadDOM m, FromJSString result) => ProcessingInstruction -> m result
+getTarget self = liftDOM (((self ^. js "target") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ProgressEvent.hs b/src/JSDOM/Generated/ProgressEvent.hs
--- a/src/JSDOM/Generated/ProgressEvent.hs
+++ b/src/JSDOM/Generated/ProgressEvent.hs
@@ -1,52 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from xhr (webref). Do not edit.
 module JSDOM.Generated.ProgressEvent
-       (newProgressEvent, getLengthComputable, getLoaded, getTotal,
-        ProgressEvent(..), gTypeProgressEvent, IsProgressEvent,
-        toProgressEvent)
+       (newProgressEvent, getLengthComputable, getLoaded, getTotal, ProgressEvent(..), gTypeProgressEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent Mozilla ProgressEvent documentation> 
-newProgressEvent ::
-                 (MonadDOM m, ToJSString type') =>
-                   type' -> Maybe ProgressEventInit -> m ProgressEvent
-newProgressEvent type' eventInitDict
-  = liftDOM
-      (ProgressEvent <$>
-         new (jsg "ProgressEvent") [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "ProgressEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent.lengthComputable Mozilla ProgressEvent.lengthComputable documentation> 
-getLengthComputable ::
-                    (MonadDOM m, IsProgressEvent self) => self -> m Bool
-getLengthComputable self
-  = liftDOM
-      (((toProgressEvent self) ^. js "lengthComputable") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/ProgressEvent/lengthComputable MDN ProgressEvent.lengthComputable documentation>
+getLengthComputable :: (MonadDOM m) => ProgressEvent -> m Bool
+getLengthComputable self = liftDOM (((self ^. js "lengthComputable") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent.loaded Mozilla ProgressEvent.loaded documentation> 
-getLoaded :: (MonadDOM m, IsProgressEvent self) => self -> m Word64
-getLoaded self
-  = liftDOM
-      (round <$>
-         (((toProgressEvent self) ^. js "loaded") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/ProgressEvent/loaded MDN ProgressEvent.loaded documentation>
+getLoaded :: (MonadDOM m) => ProgressEvent -> m Double
+getLoaded self = liftDOM (((self ^. js "loaded") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent.total Mozilla ProgressEvent.total documentation> 
-getTotal :: (MonadDOM m, IsProgressEvent self) => self -> m Word64
-getTotal self
-  = liftDOM
-      (round <$>
-         (((toProgressEvent self) ^. js "total") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/ProgressEvent/total MDN ProgressEvent.total documentation>
+getTotal :: (MonadDOM m) => ProgressEvent -> m Double
+getTotal self = liftDOM (((self ^. js "total") >>= valToNumber))
diff --git a/src/JSDOM/Generated/ProgressEventInit.hs b/src/JSDOM/Generated/ProgressEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ProgressEventInit.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from xhr (webref). Do not edit.
+module JSDOM.Generated.ProgressEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://xhr.spec.whatwg.org/#progresseventinit ProgressEventInit specification>
+newProgressEventInit :: (MonadDOM m) => m ProgressEventInit
+newProgressEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-lengthcomputable ProgressEventInit.lengthComputable specification>
+setLengthComputable :: (MonadDOM m) => ProgressEventInit -> Bool -> m ()
+setLengthComputable self val = liftDOM (void (self ^. jss "lengthComputable" (toJSVal val)))
+
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-lengthcomputable ProgressEventInit.lengthComputable specification>
+getLengthComputable :: (MonadDOM m) => ProgressEventInit -> m (Maybe Bool)
+getLengthComputable self = liftDOM (((self ^. js "lengthComputable") >>= fromJSValUnchecked))
+
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-lengthcomputable ProgressEventInit.lengthComputable specification>
+getLengthComputableUnsafe :: (MonadDOM m, HasCallStack) => ProgressEventInit -> m Bool
+getLengthComputableUnsafe self = liftDOM ((((self ^. js "lengthComputable") >>= 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 (((self ^. js "lengthComputable") >>= valToBool))
+
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-loaded ProgressEventInit.loaded specification>
+setLoaded :: (MonadDOM m) => ProgressEventInit -> Double -> m ()
+setLoaded self val = liftDOM (void (self ^. jss "loaded" (toJSVal val)))
+
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-loaded ProgressEventInit.loaded specification>
+getLoaded :: (MonadDOM m) => ProgressEventInit -> m (Maybe Double)
+getLoaded self = liftDOM (((self ^. js "loaded") >>= fromJSValUnchecked))
+
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-loaded ProgressEventInit.loaded specification>
+getLoadedUnsafe :: (MonadDOM m, HasCallStack) => ProgressEventInit -> m Double
+getLoadedUnsafe self = liftDOM ((((self ^. js "loaded") >>= 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 (((self ^. js "loaded") >>= valToNumber))
+
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-total ProgressEventInit.total specification>
+setTotal :: (MonadDOM m) => ProgressEventInit -> Double -> m ()
+setTotal self val = liftDOM (void (self ^. jss "total" (toJSVal val)))
+
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-total ProgressEventInit.total specification>
+getTotal :: (MonadDOM m) => ProgressEventInit -> m (Maybe Double)
+getTotal self = liftDOM (((self ^. js "total") >>= fromJSValUnchecked))
+
+-- | <https://xhr.spec.whatwg.org/#dom-progresseventinit-total ProgressEventInit.total specification>
+getTotalUnsafe :: (MonadDOM m, HasCallStack) => ProgressEventInit -> m Double
+getTotalUnsafe self = liftDOM ((((self ^. js "total") >>= 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 (((self ^. js "total") >>= valToNumber))
diff --git a/src/JSDOM/Generated/PromiseRejectionEvent.hs b/src/JSDOM/Generated/PromiseRejectionEvent.hs
--- a/src/JSDOM/Generated/PromiseRejectionEvent.hs
+++ b/src/JSDOM/Generated/PromiseRejectionEvent.hs
@@ -1,40 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.PromiseRejectionEvent
-       (newPromiseRejectionEvent, getPromise, getReason,
-        PromiseRejectionEvent(..), gTypePromiseRejectionEvent)
+       (newPromiseRejectionEvent, getPromise, getReason, PromiseRejectionEvent(..), gTypePromiseRejectionEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent Mozilla PromiseRejectionEvent documentation> 
-newPromiseRejectionEvent ::
-                         (MonadDOM m, ToJSString type') =>
-                           type' -> PromiseRejectionEventInit -> m PromiseRejectionEvent
-newPromiseRejectionEvent type' eventInitDict
-  = liftDOM
-      (PromiseRejectionEvent <$>
-         new (jsg "PromiseRejectionEvent")
-           [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "PromiseRejectionEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent.promise Mozilla PromiseRejectionEvent.promise documentation> 
-getPromise :: (MonadDOM m) => PromiseRejectionEvent -> m JSVal
-getPromise self
-  = liftDOM (((self ^. js "promise") >>= readPromise) >>= toJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent/promise MDN PromiseRejectionEvent.promise documentation>
+getPromise :: (MonadDOM m) => PromiseRejectionEvent -> m GObject
+getPromise self = liftDOM (((self ^. js "promise") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent.reason Mozilla PromiseRejectionEvent.reason documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/PromiseRejectionEvent/reason MDN PromiseRejectionEvent.reason documentation>
 getReason :: (MonadDOM m) => PromiseRejectionEvent -> m JSVal
-getReason self = liftDOM ((self ^. js "reason") >>= toJSVal)
+getReason self = liftDOM (self ^. js "reason")
diff --git a/src/JSDOM/Generated/PromiseRejectionEventInit.hs b/src/JSDOM/Generated/PromiseRejectionEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PromiseRejectionEventInit.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.PromiseRejectionEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/webappapis.html#promiserejectioneventinit PromiseRejectionEventInit specification>
+newPromiseRejectionEventInit :: (MonadDOM m) => GObject -> m PromiseRejectionEventInit
+newPromiseRejectionEventInit promise = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "promise" (toJSVal promise)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+setPromise :: (MonadDOM m) => PromiseRejectionEventInit -> GObject -> m ()
+setPromise self val = liftDOM (void (self ^. jss "promise" (toJSVal val)))
+
+getPromise :: (MonadDOM m) => PromiseRejectionEventInit -> m GObject
+getPromise self = liftDOM (((self ^. js "promise") >>= fromJSValUnchecked))
+
+setReason :: (MonadDOM m) => PromiseRejectionEventInit -> JSVal -> m ()
+setReason self val = liftDOM (void (self ^. jss "reason" (toJSVal val)))
+
+getReason :: (MonadDOM m) => PromiseRejectionEventInit -> m JSVal
+getReason self = liftDOM (self ^. js "reason")
diff --git a/src/JSDOM/Generated/PropertyDefinition.hs b/src/JSDOM/Generated/PropertyDefinition.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PropertyDefinition.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# 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 JSDOM.Generated.PropertyDefinition
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "name" (toJSVal name)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "name" (toJSVal val)))
+
+-- | <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 (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "syntax" (toJSVal val)))
+
+-- | <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 (((self ^. js "syntax") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "syntax") >>= fromMaybeJSString) >>= 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 (((self ^. js "syntax") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "inherits" (toJSVal val)))
+
+-- | <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 (((self ^. js "inherits") >>= 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 ((((self ^. js "inherits") >>= 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 (((self ^. js "inherits") >>= valToBool))
+
+-- | <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 (self ^. jss "initialValue" (toJSVal val)))
+
+-- | <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 (((self ^. js "initialValue") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "initialValue") >>= fromMaybeJSString) >>= 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 (((self ^. js "initialValue") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PublicKeyCredential.hs b/src/JSDOM/Generated/PublicKeyCredential.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PublicKeyCredential.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.PublicKeyCredential
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/getClientExtensionResults MDN PublicKeyCredential.getClientExtensionResults documentation>
+getClientExtensionResults :: (MonadDOM m) => PublicKeyCredential -> m AuthenticationExtensionsClientOutputs
+getClientExtensionResults self = liftDOM (((self ^. jsf "getClientExtensionResults" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/getClientExtensionResults MDN PublicKeyCredential.getClientExtensionResults documentation>
+getClientExtensionResults_ :: (MonadDOM m) => PublicKeyCredential -> m ()
+getClientExtensionResults_ self = liftDOM (void (self ^. jsf "getClientExtensionResults" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/toJSON MDN PublicKeyCredential.toJSON documentation>
+toJSON :: (MonadDOM m) => PublicKeyCredential -> m GObject
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/toJSON MDN PublicKeyCredential.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PublicKeyCredential -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/getClientCapabilities_static MDN PublicKeyCredential.getClientCapabilities documentation>
+getClientCapabilities :: (MonadDOM m) => m (Record JSString JSVal)
+getClientCapabilities = liftDOM ((((((jsg "PublicKeyCredential") ^. jsf "getClientCapabilities" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/getClientCapabilities_static MDN PublicKeyCredential.getClientCapabilities documentation>
+getClientCapabilities_ :: (MonadDOM m) => m ()
+getClientCapabilities_ = liftDOM (void ((((jsg "PublicKeyCredential") ^. jsf "getClientCapabilities" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/isConditionalMediationAvailable_static MDN PublicKeyCredential.isConditionalMediationAvailable documentation>
+isConditionalMediationAvailable :: (MonadDOM m) => m Bool
+isConditionalMediationAvailable = liftDOM ((((((jsg "PublicKeyCredential") ^. jsf "isConditionalMediationAvailable" ()) >>= readPromise)) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/isConditionalMediationAvailable_static MDN PublicKeyCredential.isConditionalMediationAvailable documentation>
+isConditionalMediationAvailable_ :: (MonadDOM m) => m ()
+isConditionalMediationAvailable_ = liftDOM (void ((((jsg "PublicKeyCredential") ^. jsf "isConditionalMediationAvailable" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/isUserVerifyingPlatformAuthenticatorAvailable_static MDN PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable documentation>
+isUserVerifyingPlatformAuthenticatorAvailable :: (MonadDOM m) => m Bool
+isUserVerifyingPlatformAuthenticatorAvailable = liftDOM ((((((jsg "PublicKeyCredential") ^. jsf "isUserVerifyingPlatformAuthenticatorAvailable" ()) >>= readPromise)) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/isUserVerifyingPlatformAuthenticatorAvailable_static MDN PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable documentation>
+isUserVerifyingPlatformAuthenticatorAvailable_ :: (MonadDOM m) => m ()
+isUserVerifyingPlatformAuthenticatorAvailable_ = liftDOM (void ((((jsg "PublicKeyCredential") ^. jsf "isUserVerifyingPlatformAuthenticatorAvailable" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/parseCreationOptionsFromJSON_static MDN PublicKeyCredential.parseCreationOptionsFromJSON documentation>
+parseCreationOptionsFromJSON :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m PublicKeyCredentialCreationOptions
+parseCreationOptionsFromJSON options = liftDOM ((((jsg "PublicKeyCredential") ^. jsf "parseCreationOptionsFromJSON" [toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/parseCreationOptionsFromJSON_static MDN PublicKeyCredential.parseCreationOptionsFromJSON documentation>
+parseCreationOptionsFromJSON_ :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m ()
+parseCreationOptionsFromJSON_ options = liftDOM (void ((jsg "PublicKeyCredential") ^. jsf "parseCreationOptionsFromJSON" [toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/parseRequestOptionsFromJSON_static MDN PublicKeyCredential.parseRequestOptionsFromJSON documentation>
+parseRequestOptionsFromJSON :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> m PublicKeyCredentialRequestOptions
+parseRequestOptionsFromJSON options = liftDOM ((((jsg "PublicKeyCredential") ^. jsf "parseRequestOptionsFromJSON" [toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/parseRequestOptionsFromJSON_static MDN PublicKeyCredential.parseRequestOptionsFromJSON documentation>
+parseRequestOptionsFromJSON_ :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> m ()
+parseRequestOptionsFromJSON_ options = liftDOM (void ((jsg "PublicKeyCredential") ^. jsf "parseRequestOptionsFromJSON" [toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/signalAllAcceptedCredentials_static MDN PublicKeyCredential.signalAllAcceptedCredentials documentation>
+signalAllAcceptedCredentials :: (MonadDOM m) => AllAcceptedCredentialsOptions -> m ()
+signalAllAcceptedCredentials options = liftDOM (void ((((jsg "PublicKeyCredential") ^. jsf "signalAllAcceptedCredentials" [toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/signalCurrentUserDetails_static MDN PublicKeyCredential.signalCurrentUserDetails documentation>
+signalCurrentUserDetails :: (MonadDOM m) => CurrentUserDetailsOptions -> m ()
+signalCurrentUserDetails options = liftDOM (void ((((jsg "PublicKeyCredential") ^. jsf "signalCurrentUserDetails" [toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/signalUnknownCredential_static MDN PublicKeyCredential.signalUnknownCredential documentation>
+signalUnknownCredential :: (MonadDOM m) => UnknownCredentialOptions -> m ()
+signalUnknownCredential options = liftDOM (void ((((jsg "PublicKeyCredential") ^. jsf "signalUnknownCredential" [toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/rawId MDN PublicKeyCredential.rawId documentation>
+getRawId :: (MonadDOM m) => PublicKeyCredential -> m ArrayBuffer
+getRawId self = liftDOM (((self ^. js "rawId") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PublicKeyCredential/response MDN PublicKeyCredential.response documentation>
+getResponse :: (MonadDOM m) => PublicKeyCredential -> m AuthenticatorResponse
+getResponse self = liftDOM (((self ^. js "response") >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. js "authenticatorAttachment") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "authenticatorAttachment") >>= fromMaybeJSString) >>= 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 (((self ^. js "authenticatorAttachment") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PublicKeyCredentialCreationOptions.hs b/src/JSDOM/Generated/PublicKeyCredentialCreationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PublicKeyCredentialCreationOptions.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.PublicKeyCredentialCreationOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "rp" (toJSVal rp)) P.>> (o ^. jss "user" (toJSVal user)) P.>> (o ^. jss "challenge" (toJSVal challenge)) P.>> (o ^. jss "pubKeyCredParams" (toJSVal pubKeyCredParams)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-rp PublicKeyCredentialCreationOptions.rp specification>
+setRp :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> PublicKeyCredentialRpEntity -> m ()
+setRp self val = liftDOM (void (self ^. jss "rp" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-rp PublicKeyCredentialCreationOptions.rp specification>
+getRp :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m PublicKeyCredentialRpEntity
+getRp self = liftDOM (((self ^. js "rp") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-user PublicKeyCredentialCreationOptions.user specification>
+setUser :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> PublicKeyCredentialUserEntity -> m ()
+setUser self val = liftDOM (void (self ^. jss "user" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-user PublicKeyCredentialCreationOptions.user specification>
+getUser :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m PublicKeyCredentialUserEntity
+getUser self = liftDOM (((self ^. js "user") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-challenge PublicKeyCredentialCreationOptions.challenge specification>
+setChallenge :: (MonadDOM m, IsBufferSource val) => PublicKeyCredentialCreationOptions -> val -> m ()
+setChallenge self val = liftDOM (void (self ^. jss "challenge" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-challenge PublicKeyCredentialCreationOptions.challenge specification>
+getChallenge :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m BufferSource
+getChallenge self = liftDOM (((self ^. js "challenge") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-pubkeycredparams PublicKeyCredentialCreationOptions.pubKeyCredParams specification>
+setPubKeyCredParams :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> [PublicKeyCredentialParameters] -> m ()
+setPubKeyCredParams self val = liftDOM (void (self ^. jss "pubKeyCredParams" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-pubkeycredparams PublicKeyCredentialCreationOptions.pubKeyCredParams specification>
+getPubKeyCredParams :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m [PublicKeyCredentialParameters]
+getPubKeyCredParams self = liftDOM (((self ^. js "pubKeyCredParams") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-timeout PublicKeyCredentialCreationOptions.timeout specification>
+setTimeout :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> Word -> m ()
+setTimeout self val = liftDOM (void (self ^. jss "timeout" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-timeout PublicKeyCredentialCreationOptions.timeout specification>
+getTimeout :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m (Maybe Word)
+getTimeout self = liftDOM (((self ^. js "timeout") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-timeout PublicKeyCredentialCreationOptions.timeout specification>
+getTimeoutUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialCreationOptions -> m Word
+getTimeoutUnsafe self = liftDOM ((((self ^. js "timeout") >>= 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 ((P.round <$> ((self ^. js "timeout") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-excludecredentials PublicKeyCredentialCreationOptions.excludeCredentials specification>
+setExcludeCredentials :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> [PublicKeyCredentialDescriptor] -> m ()
+setExcludeCredentials self val = liftDOM (void (self ^. jss "excludeCredentials" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-excludecredentials PublicKeyCredentialCreationOptions.excludeCredentials specification>
+getExcludeCredentials :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m (Maybe [PublicKeyCredentialDescriptor])
+getExcludeCredentials self = liftDOM (((self ^. js "excludeCredentials") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-excludecredentials PublicKeyCredentialCreationOptions.excludeCredentials specification>
+getExcludeCredentialsUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialCreationOptions -> m [PublicKeyCredentialDescriptor]
+getExcludeCredentialsUnsafe self = liftDOM ((((self ^. js "excludeCredentials") >>= 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 (((self ^. js "excludeCredentials") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-authenticatorselection PublicKeyCredentialCreationOptions.authenticatorSelection specification>
+setAuthenticatorSelection :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> AuthenticatorSelectionCriteria -> m ()
+setAuthenticatorSelection self val = liftDOM (void (self ^. jss "authenticatorSelection" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-authenticatorselection PublicKeyCredentialCreationOptions.authenticatorSelection specification>
+getAuthenticatorSelection :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m (Maybe AuthenticatorSelectionCriteria)
+getAuthenticatorSelection self = liftDOM (((self ^. js "authenticatorSelection") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-authenticatorselection PublicKeyCredentialCreationOptions.authenticatorSelection specification>
+getAuthenticatorSelectionUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialCreationOptions -> m AuthenticatorSelectionCriteria
+getAuthenticatorSelectionUnsafe self = liftDOM ((((self ^. js "authenticatorSelection") >>= 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 (((self ^. js "authenticatorSelection") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-hints PublicKeyCredentialCreationOptions.hints specification>
+setHints :: (MonadDOM m, ToJSString val) => PublicKeyCredentialCreationOptions -> [val] -> m ()
+setHints self val = liftDOM (void (self ^. jss "hints" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-hints PublicKeyCredentialCreationOptions.hints specification>
+getHints :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptions -> m (Maybe [result])
+getHints self = liftDOM (((self ^. js "hints") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-hints PublicKeyCredentialCreationOptions.hints specification>
+getHintsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialCreationOptions -> m [result]
+getHintsUnsafe self = liftDOM ((((self ^. js "hints") >>= 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 (((self ^. js "hints") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestation PublicKeyCredentialCreationOptions.attestation specification>
+setAttestation :: (MonadDOM m, ToJSString val) => PublicKeyCredentialCreationOptions -> val -> m ()
+setAttestation self val = liftDOM (void (self ^. jss "attestation" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestation PublicKeyCredentialCreationOptions.attestation specification>
+getAttestation :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptions -> m (Maybe result)
+getAttestation self = liftDOM (((self ^. js "attestation") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestation PublicKeyCredentialCreationOptions.attestation specification>
+getAttestationUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialCreationOptions -> m result
+getAttestationUnsafe self = liftDOM ((((self ^. js "attestation") >>= fromMaybeJSString) >>= 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 (((self ^. js "attestation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestationformats PublicKeyCredentialCreationOptions.attestationFormats specification>
+setAttestationFormats :: (MonadDOM m, ToJSString val) => PublicKeyCredentialCreationOptions -> [val] -> m ()
+setAttestationFormats self val = liftDOM (void (self ^. jss "attestationFormats" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestationformats PublicKeyCredentialCreationOptions.attestationFormats specification>
+getAttestationFormats :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptions -> m (Maybe [result])
+getAttestationFormats self = liftDOM (((self ^. js "attestationFormats") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestationformats PublicKeyCredentialCreationOptions.attestationFormats specification>
+getAttestationFormatsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialCreationOptions -> m [result]
+getAttestationFormatsUnsafe self = liftDOM ((((self ^. js "attestationFormats") >>= 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 (((self ^. js "attestationFormats") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-extensions PublicKeyCredentialCreationOptions.extensions specification>
+setExtensions :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> AuthenticationExtensionsClientInputs -> m ()
+setExtensions self val = liftDOM (void (self ^. jss "extensions" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-extensions PublicKeyCredentialCreationOptions.extensions specification>
+getExtensions :: (MonadDOM m) => PublicKeyCredentialCreationOptions -> m (Maybe AuthenticationExtensionsClientInputs)
+getExtensions self = liftDOM (((self ^. js "extensions") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-extensions PublicKeyCredentialCreationOptions.extensions specification>
+getExtensionsUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialCreationOptions -> m AuthenticationExtensionsClientInputs
+getExtensionsUnsafe self = liftDOM ((((self ^. js "extensions") >>= 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 (((self ^. js "extensions") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PublicKeyCredentialCreationOptionsJSON.hs b/src/JSDOM/Generated/PublicKeyCredentialCreationOptionsJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PublicKeyCredentialCreationOptionsJSON.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.PublicKeyCredentialCreationOptionsJSON
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "rp" (toJSVal rp)) P.>> (o ^. jss "user" (toJSVal user)) P.>> (o ^. jss "challenge" (toJSVal challenge)) P.>> (o ^. jss "pubKeyCredParams" (toJSVal pubKeyCredParams)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-rp PublicKeyCredentialCreationOptionsJSON.rp specification>
+setRp :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> PublicKeyCredentialRpEntity -> m ()
+setRp self val = liftDOM (void (self ^. jss "rp" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-rp PublicKeyCredentialCreationOptionsJSON.rp specification>
+getRp :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m PublicKeyCredentialRpEntity
+getRp self = liftDOM (((self ^. js "rp") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-user PublicKeyCredentialCreationOptionsJSON.user specification>
+setUser :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> PublicKeyCredentialUserEntityJSON -> m ()
+setUser self val = liftDOM (void (self ^. jss "user" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-user PublicKeyCredentialCreationOptionsJSON.user specification>
+getUser :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m PublicKeyCredentialUserEntityJSON
+getUser self = liftDOM (((self ^. js "user") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-challenge PublicKeyCredentialCreationOptionsJSON.challenge specification>
+setChallenge :: (MonadDOM m, ToJSString val) => PublicKeyCredentialCreationOptionsJSON -> val -> m ()
+setChallenge self val = liftDOM (void (self ^. jss "challenge" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-challenge PublicKeyCredentialCreationOptionsJSON.challenge specification>
+getChallenge :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptionsJSON -> m result
+getChallenge self = liftDOM (((self ^. js "challenge") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-pubkeycredparams PublicKeyCredentialCreationOptionsJSON.pubKeyCredParams specification>
+setPubKeyCredParams :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> [PublicKeyCredentialParameters] -> m ()
+setPubKeyCredParams self val = liftDOM (void (self ^. jss "pubKeyCredParams" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-pubkeycredparams PublicKeyCredentialCreationOptionsJSON.pubKeyCredParams specification>
+getPubKeyCredParams :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m [PublicKeyCredentialParameters]
+getPubKeyCredParams self = liftDOM (((self ^. js "pubKeyCredParams") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-timeout PublicKeyCredentialCreationOptionsJSON.timeout specification>
+setTimeout :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> Word -> m ()
+setTimeout self val = liftDOM (void (self ^. jss "timeout" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-timeout PublicKeyCredentialCreationOptionsJSON.timeout specification>
+getTimeout :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m (Maybe Word)
+getTimeout self = liftDOM (((self ^. js "timeout") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-timeout PublicKeyCredentialCreationOptionsJSON.timeout specification>
+getTimeoutUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialCreationOptionsJSON -> m Word
+getTimeoutUnsafe self = liftDOM ((((self ^. js "timeout") >>= 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 ((P.round <$> ((self ^. js "timeout") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-excludecredentials PublicKeyCredentialCreationOptionsJSON.excludeCredentials specification>
+setExcludeCredentials :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> [PublicKeyCredentialDescriptorJSON] -> m ()
+setExcludeCredentials self val = liftDOM (void (self ^. jss "excludeCredentials" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-excludecredentials PublicKeyCredentialCreationOptionsJSON.excludeCredentials specification>
+getExcludeCredentials :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m (Maybe [PublicKeyCredentialDescriptorJSON])
+getExcludeCredentials self = liftDOM (((self ^. js "excludeCredentials") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-excludecredentials PublicKeyCredentialCreationOptionsJSON.excludeCredentials specification>
+getExcludeCredentialsUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialCreationOptionsJSON -> m [PublicKeyCredentialDescriptorJSON]
+getExcludeCredentialsUnsafe self = liftDOM ((((self ^. js "excludeCredentials") >>= 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 (((self ^. js "excludeCredentials") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-authenticatorselection PublicKeyCredentialCreationOptionsJSON.authenticatorSelection specification>
+setAuthenticatorSelection :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> AuthenticatorSelectionCriteria -> m ()
+setAuthenticatorSelection self val = liftDOM (void (self ^. jss "authenticatorSelection" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-authenticatorselection PublicKeyCredentialCreationOptionsJSON.authenticatorSelection specification>
+getAuthenticatorSelection :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m (Maybe AuthenticatorSelectionCriteria)
+getAuthenticatorSelection self = liftDOM (((self ^. js "authenticatorSelection") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-authenticatorselection PublicKeyCredentialCreationOptionsJSON.authenticatorSelection specification>
+getAuthenticatorSelectionUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialCreationOptionsJSON -> m AuthenticatorSelectionCriteria
+getAuthenticatorSelectionUnsafe self = liftDOM ((((self ^. js "authenticatorSelection") >>= 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 (((self ^. js "authenticatorSelection") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-hints PublicKeyCredentialCreationOptionsJSON.hints specification>
+setHints :: (MonadDOM m, ToJSString val) => PublicKeyCredentialCreationOptionsJSON -> [val] -> m ()
+setHints self val = liftDOM (void (self ^. jss "hints" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-hints PublicKeyCredentialCreationOptionsJSON.hints specification>
+getHints :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptionsJSON -> m (Maybe [result])
+getHints self = liftDOM (((self ^. js "hints") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-hints PublicKeyCredentialCreationOptionsJSON.hints specification>
+getHintsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialCreationOptionsJSON -> m [result]
+getHintsUnsafe self = liftDOM ((((self ^. js "hints") >>= 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 (((self ^. js "hints") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-attestation PublicKeyCredentialCreationOptionsJSON.attestation specification>
+setAttestation :: (MonadDOM m, ToJSString val) => PublicKeyCredentialCreationOptionsJSON -> val -> m ()
+setAttestation self val = liftDOM (void (self ^. jss "attestation" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-attestation PublicKeyCredentialCreationOptionsJSON.attestation specification>
+getAttestation :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptionsJSON -> m (Maybe result)
+getAttestation self = liftDOM (((self ^. js "attestation") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-attestation PublicKeyCredentialCreationOptionsJSON.attestation specification>
+getAttestationUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialCreationOptionsJSON -> m result
+getAttestationUnsafe self = liftDOM ((((self ^. js "attestation") >>= fromMaybeJSString) >>= 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 (((self ^. js "attestation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-attestationformats PublicKeyCredentialCreationOptionsJSON.attestationFormats specification>
+setAttestationFormats :: (MonadDOM m, ToJSString val) => PublicKeyCredentialCreationOptionsJSON -> [val] -> m ()
+setAttestationFormats self val = liftDOM (void (self ^. jss "attestationFormats" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-attestationformats PublicKeyCredentialCreationOptionsJSON.attestationFormats specification>
+getAttestationFormats :: (MonadDOM m, FromJSString result) => PublicKeyCredentialCreationOptionsJSON -> m (Maybe [result])
+getAttestationFormats self = liftDOM (((self ^. js "attestationFormats") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-attestationformats PublicKeyCredentialCreationOptionsJSON.attestationFormats specification>
+getAttestationFormatsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialCreationOptionsJSON -> m [result]
+getAttestationFormatsUnsafe self = liftDOM ((((self ^. js "attestationFormats") >>= 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 (((self ^. js "attestationFormats") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-extensions PublicKeyCredentialCreationOptionsJSON.extensions specification>
+setExtensions :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> AuthenticationExtensionsClientInputsJSON -> m ()
+setExtensions self val = liftDOM (void (self ^. jss "extensions" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-extensions PublicKeyCredentialCreationOptionsJSON.extensions specification>
+getExtensions :: (MonadDOM m) => PublicKeyCredentialCreationOptionsJSON -> m (Maybe AuthenticationExtensionsClientInputsJSON)
+getExtensions self = liftDOM (((self ^. js "extensions") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptionsjson-extensions PublicKeyCredentialCreationOptionsJSON.extensions specification>
+getExtensionsUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialCreationOptionsJSON -> m AuthenticationExtensionsClientInputsJSON
+getExtensionsUnsafe self = liftDOM ((((self ^. js "extensions") >>= 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 (((self ^. js "extensions") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PublicKeyCredentialDescriptor.hs b/src/JSDOM/Generated/PublicKeyCredentialDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PublicKeyCredentialDescriptor.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.PublicKeyCredentialDescriptor
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialdescriptor PublicKeyCredentialDescriptor specification>
+newPublicKeyCredentialDescriptor :: (MonadDOM m, ToJSString type', IsBufferSource id) => type' -> id -> m PublicKeyCredentialDescriptor
+newPublicKeyCredentialDescriptor type' id = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "type" (toJSVal type')) P.>> (o ^. jss "id" (toJSVal id)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptor-type PublicKeyCredentialDescriptor.type specification>
+setType :: (MonadDOM m, ToJSString val) => PublicKeyCredentialDescriptor -> val -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptor-type PublicKeyCredentialDescriptor.type specification>
+getType :: (MonadDOM m, FromJSString result) => PublicKeyCredentialDescriptor -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptor-id PublicKeyCredentialDescriptor.id specification>
+setId :: (MonadDOM m, IsBufferSource val) => PublicKeyCredentialDescriptor -> val -> m ()
+setId self val = liftDOM (void (self ^. jss "id" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptor-id PublicKeyCredentialDescriptor.id specification>
+getId :: (MonadDOM m) => PublicKeyCredentialDescriptor -> m BufferSource
+getId self = liftDOM (((self ^. js "id") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptor-transports PublicKeyCredentialDescriptor.transports specification>
+setTransports :: (MonadDOM m, ToJSString val) => PublicKeyCredentialDescriptor -> [val] -> m ()
+setTransports self val = liftDOM (void (self ^. jss "transports" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptor-transports PublicKeyCredentialDescriptor.transports specification>
+getTransports :: (MonadDOM m, FromJSString result) => PublicKeyCredentialDescriptor -> m (Maybe [result])
+getTransports self = liftDOM (((self ^. js "transports") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptor-transports PublicKeyCredentialDescriptor.transports specification>
+getTransportsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialDescriptor -> m [result]
+getTransportsUnsafe self = liftDOM ((((self ^. js "transports") >>= 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 (((self ^. js "transports") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PublicKeyCredentialDescriptorJSON.hs b/src/JSDOM/Generated/PublicKeyCredentialDescriptorJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PublicKeyCredentialDescriptorJSON.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.PublicKeyCredentialDescriptorJSON
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialdescriptorjson PublicKeyCredentialDescriptorJSON specification>
+newPublicKeyCredentialDescriptorJSON :: (MonadDOM m, ToJSString type', ToJSString id) => type' -> id -> m PublicKeyCredentialDescriptorJSON
+newPublicKeyCredentialDescriptorJSON type' id = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "type" (toJSVal type')) P.>> (o ^. jss "id" (toJSVal id)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptorjson-type PublicKeyCredentialDescriptorJSON.type specification>
+setType :: (MonadDOM m, ToJSString val) => PublicKeyCredentialDescriptorJSON -> val -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptorjson-type PublicKeyCredentialDescriptorJSON.type specification>
+getType :: (MonadDOM m, FromJSString result) => PublicKeyCredentialDescriptorJSON -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptorjson-id PublicKeyCredentialDescriptorJSON.id specification>
+setId :: (MonadDOM m, ToJSString val) => PublicKeyCredentialDescriptorJSON -> val -> m ()
+setId self val = liftDOM (void (self ^. jss "id" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptorjson-id PublicKeyCredentialDescriptorJSON.id specification>
+getId :: (MonadDOM m, FromJSString result) => PublicKeyCredentialDescriptorJSON -> m result
+getId self = liftDOM (((self ^. js "id") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptorjson-transports PublicKeyCredentialDescriptorJSON.transports specification>
+setTransports :: (MonadDOM m, ToJSString val) => PublicKeyCredentialDescriptorJSON -> [val] -> m ()
+setTransports self val = liftDOM (void (self ^. jss "transports" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptorjson-transports PublicKeyCredentialDescriptorJSON.transports specification>
+getTransports :: (MonadDOM m, FromJSString result) => PublicKeyCredentialDescriptorJSON -> m (Maybe [result])
+getTransports self = liftDOM (((self ^. js "transports") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialdescriptorjson-transports PublicKeyCredentialDescriptorJSON.transports specification>
+getTransportsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialDescriptorJSON -> m [result]
+getTransportsUnsafe self = liftDOM ((((self ^. js "transports") >>= 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 (((self ^. js "transports") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PublicKeyCredentialEntity.hs b/src/JSDOM/Generated/PublicKeyCredentialEntity.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PublicKeyCredentialEntity.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.PublicKeyCredentialEntity
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialentity PublicKeyCredentialEntity specification>
+newPublicKeyCredentialEntity :: (MonadDOM m, ToJSString name) => name -> m PublicKeyCredentialEntity
+newPublicKeyCredentialEntity name = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "name" (toJSVal name)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toPublicKeyCredentialEntity self) ^. jss "name" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialentity-name PublicKeyCredentialEntity.name specification>
+getName :: (MonadDOM m, IsPublicKeyCredentialEntity self, FromJSString result) => self -> m result
+getName self = liftDOM ((((Types.toPublicKeyCredentialEntity self) ^. js "name") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PublicKeyCredentialParameters.hs b/src/JSDOM/Generated/PublicKeyCredentialParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PublicKeyCredentialParameters.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.PublicKeyCredentialParameters
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialparameters PublicKeyCredentialParameters specification>
+newPublicKeyCredentialParameters :: (MonadDOM m, ToJSString type') => type' -> Int -> m PublicKeyCredentialParameters
+newPublicKeyCredentialParameters type' alg = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "type" (toJSVal type')) P.>> (o ^. jss "alg" (toJSVal alg)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialparameters-type PublicKeyCredentialParameters.type specification>
+setType :: (MonadDOM m, ToJSString val) => PublicKeyCredentialParameters -> val -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialparameters-type PublicKeyCredentialParameters.type specification>
+getType :: (MonadDOM m, FromJSString result) => PublicKeyCredentialParameters -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialparameters-alg PublicKeyCredentialParameters.alg specification>
+setAlg :: (MonadDOM m) => PublicKeyCredentialParameters -> Int -> m ()
+setAlg self val = liftDOM (void (self ^. jss "alg" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialparameters-alg PublicKeyCredentialParameters.alg specification>
+getAlg :: (MonadDOM m) => PublicKeyCredentialParameters -> m Int
+getAlg self = liftDOM ((P.round <$> ((self ^. js "alg") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/PublicKeyCredentialRequestOptions.hs b/src/JSDOM/Generated/PublicKeyCredentialRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PublicKeyCredentialRequestOptions.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.PublicKeyCredentialRequestOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialrequestoptions PublicKeyCredentialRequestOptions specification>
+newPublicKeyCredentialRequestOptions :: (MonadDOM m, IsBufferSource challenge) => challenge -> m PublicKeyCredentialRequestOptions
+newPublicKeyCredentialRequestOptions challenge = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "challenge" (toJSVal challenge)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-challenge PublicKeyCredentialRequestOptions.challenge specification>
+setChallenge :: (MonadDOM m, IsBufferSource val) => PublicKeyCredentialRequestOptions -> val -> m ()
+setChallenge self val = liftDOM (void (self ^. jss "challenge" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-challenge PublicKeyCredentialRequestOptions.challenge specification>
+getChallenge :: (MonadDOM m) => PublicKeyCredentialRequestOptions -> m BufferSource
+getChallenge self = liftDOM (((self ^. js "challenge") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-timeout PublicKeyCredentialRequestOptions.timeout specification>
+setTimeout :: (MonadDOM m) => PublicKeyCredentialRequestOptions -> Word -> m ()
+setTimeout self val = liftDOM (void (self ^. jss "timeout" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-timeout PublicKeyCredentialRequestOptions.timeout specification>
+getTimeout :: (MonadDOM m) => PublicKeyCredentialRequestOptions -> m (Maybe Word)
+getTimeout self = liftDOM (((self ^. js "timeout") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-timeout PublicKeyCredentialRequestOptions.timeout specification>
+getTimeoutUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialRequestOptions -> m Word
+getTimeoutUnsafe self = liftDOM ((((self ^. js "timeout") >>= 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 ((P.round <$> ((self ^. js "timeout") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-rpid PublicKeyCredentialRequestOptions.rpId specification>
+setRpId :: (MonadDOM m, ToJSString val) => PublicKeyCredentialRequestOptions -> val -> m ()
+setRpId self val = liftDOM (void (self ^. jss "rpId" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-rpid PublicKeyCredentialRequestOptions.rpId specification>
+getRpId :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptions -> m (Maybe result)
+getRpId self = liftDOM (((self ^. js "rpId") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-rpid PublicKeyCredentialRequestOptions.rpId specification>
+getRpIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialRequestOptions -> m result
+getRpIdUnsafe self = liftDOM ((((self ^. js "rpId") >>= fromMaybeJSString) >>= 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 (((self ^. js "rpId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-allowcredentials PublicKeyCredentialRequestOptions.allowCredentials specification>
+setAllowCredentials :: (MonadDOM m) => PublicKeyCredentialRequestOptions -> [PublicKeyCredentialDescriptor] -> m ()
+setAllowCredentials self val = liftDOM (void (self ^. jss "allowCredentials" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-allowcredentials PublicKeyCredentialRequestOptions.allowCredentials specification>
+getAllowCredentials :: (MonadDOM m) => PublicKeyCredentialRequestOptions -> m (Maybe [PublicKeyCredentialDescriptor])
+getAllowCredentials self = liftDOM (((self ^. js "allowCredentials") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-allowcredentials PublicKeyCredentialRequestOptions.allowCredentials specification>
+getAllowCredentialsUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialRequestOptions -> m [PublicKeyCredentialDescriptor]
+getAllowCredentialsUnsafe self = liftDOM ((((self ^. js "allowCredentials") >>= 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 (((self ^. js "allowCredentials") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-userverification PublicKeyCredentialRequestOptions.userVerification specification>
+setUserVerification :: (MonadDOM m, ToJSString val) => PublicKeyCredentialRequestOptions -> val -> m ()
+setUserVerification self val = liftDOM (void (self ^. jss "userVerification" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-userverification PublicKeyCredentialRequestOptions.userVerification specification>
+getUserVerification :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptions -> m (Maybe result)
+getUserVerification self = liftDOM (((self ^. js "userVerification") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-userverification PublicKeyCredentialRequestOptions.userVerification specification>
+getUserVerificationUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialRequestOptions -> m result
+getUserVerificationUnsafe self = liftDOM ((((self ^. js "userVerification") >>= fromMaybeJSString) >>= 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 (((self ^. js "userVerification") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-hints PublicKeyCredentialRequestOptions.hints specification>
+setHints :: (MonadDOM m, ToJSString val) => PublicKeyCredentialRequestOptions -> [val] -> m ()
+setHints self val = liftDOM (void (self ^. jss "hints" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-hints PublicKeyCredentialRequestOptions.hints specification>
+getHints :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptions -> m (Maybe [result])
+getHints self = liftDOM (((self ^. js "hints") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-hints PublicKeyCredentialRequestOptions.hints specification>
+getHintsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialRequestOptions -> m [result]
+getHintsUnsafe self = liftDOM ((((self ^. js "hints") >>= 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 (((self ^. js "hints") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-extensions PublicKeyCredentialRequestOptions.extensions specification>
+setExtensions :: (MonadDOM m) => PublicKeyCredentialRequestOptions -> AuthenticationExtensionsClientInputs -> m ()
+setExtensions self val = liftDOM (void (self ^. jss "extensions" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-extensions PublicKeyCredentialRequestOptions.extensions specification>
+getExtensions :: (MonadDOM m) => PublicKeyCredentialRequestOptions -> m (Maybe AuthenticationExtensionsClientInputs)
+getExtensions self = liftDOM (((self ^. js "extensions") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-extensions PublicKeyCredentialRequestOptions.extensions specification>
+getExtensionsUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialRequestOptions -> m AuthenticationExtensionsClientInputs
+getExtensionsUnsafe self = liftDOM ((((self ^. js "extensions") >>= 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 (((self ^. js "extensions") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PublicKeyCredentialRequestOptionsJSON.hs b/src/JSDOM/Generated/PublicKeyCredentialRequestOptionsJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PublicKeyCredentialRequestOptionsJSON.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.PublicKeyCredentialRequestOptionsJSON
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialrequestoptionsjson PublicKeyCredentialRequestOptionsJSON specification>
+newPublicKeyCredentialRequestOptionsJSON :: (MonadDOM m, ToJSString challenge) => challenge -> m PublicKeyCredentialRequestOptionsJSON
+newPublicKeyCredentialRequestOptionsJSON challenge = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "challenge" (toJSVal challenge)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-challenge PublicKeyCredentialRequestOptionsJSON.challenge specification>
+setChallenge :: (MonadDOM m, ToJSString val) => PublicKeyCredentialRequestOptionsJSON -> val -> m ()
+setChallenge self val = liftDOM (void (self ^. jss "challenge" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-challenge PublicKeyCredentialRequestOptionsJSON.challenge specification>
+getChallenge :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptionsJSON -> m result
+getChallenge self = liftDOM (((self ^. js "challenge") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-timeout PublicKeyCredentialRequestOptionsJSON.timeout specification>
+setTimeout :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> Word -> m ()
+setTimeout self val = liftDOM (void (self ^. jss "timeout" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-timeout PublicKeyCredentialRequestOptionsJSON.timeout specification>
+getTimeout :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> m (Maybe Word)
+getTimeout self = liftDOM (((self ^. js "timeout") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-timeout PublicKeyCredentialRequestOptionsJSON.timeout specification>
+getTimeoutUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialRequestOptionsJSON -> m Word
+getTimeoutUnsafe self = liftDOM ((((self ^. js "timeout") >>= 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 ((P.round <$> ((self ^. js "timeout") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-rpid PublicKeyCredentialRequestOptionsJSON.rpId specification>
+setRpId :: (MonadDOM m, ToJSString val) => PublicKeyCredentialRequestOptionsJSON -> val -> m ()
+setRpId self val = liftDOM (void (self ^. jss "rpId" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-rpid PublicKeyCredentialRequestOptionsJSON.rpId specification>
+getRpId :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptionsJSON -> m (Maybe result)
+getRpId self = liftDOM (((self ^. js "rpId") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-rpid PublicKeyCredentialRequestOptionsJSON.rpId specification>
+getRpIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialRequestOptionsJSON -> m result
+getRpIdUnsafe self = liftDOM ((((self ^. js "rpId") >>= fromMaybeJSString) >>= 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 (((self ^. js "rpId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-allowcredentials PublicKeyCredentialRequestOptionsJSON.allowCredentials specification>
+setAllowCredentials :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> [PublicKeyCredentialDescriptorJSON] -> m ()
+setAllowCredentials self val = liftDOM (void (self ^. jss "allowCredentials" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-allowcredentials PublicKeyCredentialRequestOptionsJSON.allowCredentials specification>
+getAllowCredentials :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> m (Maybe [PublicKeyCredentialDescriptorJSON])
+getAllowCredentials self = liftDOM (((self ^. js "allowCredentials") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-allowcredentials PublicKeyCredentialRequestOptionsJSON.allowCredentials specification>
+getAllowCredentialsUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialRequestOptionsJSON -> m [PublicKeyCredentialDescriptorJSON]
+getAllowCredentialsUnsafe self = liftDOM ((((self ^. js "allowCredentials") >>= 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 (((self ^. js "allowCredentials") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-userverification PublicKeyCredentialRequestOptionsJSON.userVerification specification>
+setUserVerification :: (MonadDOM m, ToJSString val) => PublicKeyCredentialRequestOptionsJSON -> val -> m ()
+setUserVerification self val = liftDOM (void (self ^. jss "userVerification" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-userverification PublicKeyCredentialRequestOptionsJSON.userVerification specification>
+getUserVerification :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptionsJSON -> m (Maybe result)
+getUserVerification self = liftDOM (((self ^. js "userVerification") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-userverification PublicKeyCredentialRequestOptionsJSON.userVerification specification>
+getUserVerificationUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialRequestOptionsJSON -> m result
+getUserVerificationUnsafe self = liftDOM ((((self ^. js "userVerification") >>= fromMaybeJSString) >>= 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 (((self ^. js "userVerification") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-hints PublicKeyCredentialRequestOptionsJSON.hints specification>
+setHints :: (MonadDOM m, ToJSString val) => PublicKeyCredentialRequestOptionsJSON -> [val] -> m ()
+setHints self val = liftDOM (void (self ^. jss "hints" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-hints PublicKeyCredentialRequestOptionsJSON.hints specification>
+getHints :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRequestOptionsJSON -> m (Maybe [result])
+getHints self = liftDOM (((self ^. js "hints") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-hints PublicKeyCredentialRequestOptionsJSON.hints specification>
+getHintsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialRequestOptionsJSON -> m [result]
+getHintsUnsafe self = liftDOM ((((self ^. js "hints") >>= 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 (((self ^. js "hints") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-extensions PublicKeyCredentialRequestOptionsJSON.extensions specification>
+setExtensions :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> AuthenticationExtensionsClientInputsJSON -> m ()
+setExtensions self val = liftDOM (void (self ^. jss "extensions" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-extensions PublicKeyCredentialRequestOptionsJSON.extensions specification>
+getExtensions :: (MonadDOM m) => PublicKeyCredentialRequestOptionsJSON -> m (Maybe AuthenticationExtensionsClientInputsJSON)
+getExtensions self = liftDOM (((self ^. js "extensions") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptionsjson-extensions PublicKeyCredentialRequestOptionsJSON.extensions specification>
+getExtensionsUnsafe :: (MonadDOM m, HasCallStack) => PublicKeyCredentialRequestOptionsJSON -> m AuthenticationExtensionsClientInputsJSON
+getExtensionsUnsafe self = liftDOM ((((self ^. js "extensions") >>= 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 (((self ^. js "extensions") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PublicKeyCredentialRpEntity.hs b/src/JSDOM/Generated/PublicKeyCredentialRpEntity.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PublicKeyCredentialRpEntity.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.PublicKeyCredentialRpEntity
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-publickeycredentialrpentity PublicKeyCredentialRpEntity specification>
+newPublicKeyCredentialRpEntity :: (MonadDOM m, ToJSString name) => name -> m PublicKeyCredentialRpEntity
+newPublicKeyCredentialRpEntity name = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "name" (toJSVal name)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrpentity-id PublicKeyCredentialRpEntity.id specification>
+setId :: (MonadDOM m, ToJSString val) => PublicKeyCredentialRpEntity -> val -> m ()
+setId self val = liftDOM (void (self ^. jss "id" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrpentity-id PublicKeyCredentialRpEntity.id specification>
+getId :: (MonadDOM m, FromJSString result) => PublicKeyCredentialRpEntity -> m (Maybe result)
+getId self = liftDOM (((self ^. js "id") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialrpentity-id PublicKeyCredentialRpEntity.id specification>
+getIdUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PublicKeyCredentialRpEntity -> m result
+getIdUnsafe self = liftDOM ((((self ^. js "id") >>= fromMaybeJSString) >>= 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 (((self ^. js "id") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PublicKeyCredentialUserEntity.hs b/src/JSDOM/Generated/PublicKeyCredentialUserEntity.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PublicKeyCredentialUserEntity.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.PublicKeyCredentialUserEntity
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "name" (toJSVal name)) P.>> (o ^. jss "id" (toJSVal id)) P.>> (o ^. jss "displayName" (toJSVal displayName)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentity-id PublicKeyCredentialUserEntity.id specification>
+setId :: (MonadDOM m, IsBufferSource val) => PublicKeyCredentialUserEntity -> val -> m ()
+setId self val = liftDOM (void (self ^. jss "id" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentity-id PublicKeyCredentialUserEntity.id specification>
+getId :: (MonadDOM m) => PublicKeyCredentialUserEntity -> m BufferSource
+getId self = liftDOM (((self ^. js "id") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentity-displayname PublicKeyCredentialUserEntity.displayName specification>
+setDisplayName :: (MonadDOM m, ToJSString val) => PublicKeyCredentialUserEntity -> val -> m ()
+setDisplayName self val = liftDOM (void (self ^. jss "displayName" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentity-displayname PublicKeyCredentialUserEntity.displayName specification>
+getDisplayName :: (MonadDOM m, FromJSString result) => PublicKeyCredentialUserEntity -> m result
+getDisplayName self = liftDOM (((self ^. js "displayName") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PublicKeyCredentialUserEntityJSON.hs b/src/JSDOM/Generated/PublicKeyCredentialUserEntityJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PublicKeyCredentialUserEntityJSON.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.PublicKeyCredentialUserEntityJSON
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "id" (toJSVal id)) P.>> (o ^. jss "name" (toJSVal name)) P.>> (o ^. jss "displayName" (toJSVal displayName)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentityjson-id PublicKeyCredentialUserEntityJSON.id specification>
+setId :: (MonadDOM m, ToJSString val) => PublicKeyCredentialUserEntityJSON -> val -> m ()
+setId self val = liftDOM (void (self ^. jss "id" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentityjson-id PublicKeyCredentialUserEntityJSON.id specification>
+getId :: (MonadDOM m, FromJSString result) => PublicKeyCredentialUserEntityJSON -> m result
+getId self = liftDOM (((self ^. js "id") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentityjson-name PublicKeyCredentialUserEntityJSON.name specification>
+setName :: (MonadDOM m, ToJSString val) => PublicKeyCredentialUserEntityJSON -> val -> m ()
+setName self val = liftDOM (void (self ^. jss "name" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentityjson-name PublicKeyCredentialUserEntityJSON.name specification>
+getName :: (MonadDOM m, FromJSString result) => PublicKeyCredentialUserEntityJSON -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentityjson-displayname PublicKeyCredentialUserEntityJSON.displayName specification>
+setDisplayName :: (MonadDOM m, ToJSString val) => PublicKeyCredentialUserEntityJSON -> val -> m ()
+setDisplayName self val = liftDOM (void (self ^. jss "displayName" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-publickeycredentialuserentityjson-displayname PublicKeyCredentialUserEntityJSON.displayName specification>
+getDisplayName :: (MonadDOM m, FromJSString result) => PublicKeyCredentialUserEntityJSON -> m result
+getDisplayName self = liftDOM (((self ^. js "displayName") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PushEvent.hs b/src/JSDOM/Generated/PushEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PushEvent.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module JSDOM.Generated.PushEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "PushEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushEvent/data MDN PushEvent.data documentation>
+getData :: (MonadDOM m) => PushEvent -> m (Maybe PushMessageData)
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushEvent/data MDN PushEvent.data documentation>
+getDataUnsafe :: (MonadDOM m, HasCallStack) => PushEvent -> m PushMessageData
+getDataUnsafe self = liftDOM ((((self ^. js "data") >>= 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 (((self ^. js "data") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PushEventInit.hs b/src/JSDOM/Generated/PushEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PushEventInit.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module JSDOM.Generated.PushEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/push-api/#dom-pusheventinit PushEventInit specification>
+newPushEventInit :: (MonadDOM m) => m PushEventInit
+newPushEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "data" (toJSVal val)))
+
+-- | <https://w3c.github.io/push-api/#dom-pusheventinit-data PushEventInit.data specification>
+getData :: (MonadDOM m) => PushEventInit -> m (Maybe PushMessageDataInit)
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pusheventinit-data PushEventInit.data specification>
+getDataUnsafe :: (MonadDOM m, HasCallStack) => PushEventInit -> m PushMessageDataInit
+getDataUnsafe self = liftDOM ((((self ^. js "data") >>= 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 (((self ^. js "data") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pusheventinit-notification PushEventInit.notification specification>
+setNotification :: (MonadDOM m) => PushEventInit -> Maybe Notification -> m ()
+setNotification self val = liftDOM (void (self ^. jss "notification" (toJSVal val)))
+
+-- | <https://w3c.github.io/push-api/#dom-pusheventinit-notification PushEventInit.notification specification>
+getNotification :: (MonadDOM m) => PushEventInit -> m (Maybe Notification)
+getNotification self = liftDOM (((self ^. js "notification") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pusheventinit-notification PushEventInit.notification specification>
+getNotificationUnsafe :: (MonadDOM m, HasCallStack) => PushEventInit -> m Notification
+getNotificationUnsafe self = liftDOM ((((self ^. js "notification") >>= 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 (((self ^. js "notification") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PushManager.hs b/src/JSDOM/Generated/PushManager.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PushManager.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module JSDOM.Generated.PushManager
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushManager/getSubscription MDN PushManager.getSubscription documentation>
+getSubscription :: (MonadDOM m) => PushManager -> m (Maybe PushSubscription)
+getSubscription self = liftDOM (((((self ^. jsf "getSubscription" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushManager/getSubscription MDN PushManager.getSubscription documentation>
+getSubscription_ :: (MonadDOM m) => PushManager -> m ()
+getSubscription_ self = liftDOM (void (((self ^. jsf "getSubscription" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushManager/getSubscription MDN PushManager.getSubscription documentation>
+getSubscriptionUnsafe :: (MonadDOM m, HasCallStack) => PushManager -> m PushSubscription
+getSubscriptionUnsafe self = liftDOM ((((((self ^. jsf "getSubscription" ()) >>= readPromise)) >>= 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 (((((self ^. jsf "getSubscription" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((((self ^. jsf "permissionState" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= 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 (((self ^. jsf "permissionState" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "subscribe" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "subscribe" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushManager/supportedContentEncodings_static MDN PushManager.supportedContentEncodings documentation>
+getSupportedContentEncodingsStatic :: (MonadDOM m, FromJSString result) => m [result]
+getSupportedContentEncodingsStatic = liftDOM ((((jsg "PushManager") ^. js "supportedContentEncodings") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PushManagerAttribute.hs b/src/JSDOM/Generated/PushManagerAttribute.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PushManagerAttribute.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module JSDOM.Generated.PushManagerAttribute
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/pushManager MDN PushManagerAttribute.pushManager documentation>
+getPushManager :: (MonadDOM m, IsPushManagerAttribute self) => self -> m PushManager
+getPushManager self = liftDOM ((((Types.toPushManagerAttribute self) ^. js "pushManager") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PushMessageData.hs b/src/JSDOM/Generated/PushMessageData.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PushMessageData.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module JSDOM.Generated.PushMessageData
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/arrayBuffer MDN PushMessageData.arrayBuffer documentation>
+arrayBuffer :: (MonadDOM m) => PushMessageData -> m ArrayBuffer
+arrayBuffer self = liftDOM (((self ^. jsf "arrayBuffer" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/arrayBuffer MDN PushMessageData.arrayBuffer documentation>
+arrayBuffer_ :: (MonadDOM m) => PushMessageData -> m ()
+arrayBuffer_ self = liftDOM (void (self ^. jsf "arrayBuffer" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/blob MDN PushMessageData.blob documentation>
+blob :: (MonadDOM m) => PushMessageData -> m Blob
+blob self = liftDOM (((self ^. jsf "blob" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/blob MDN PushMessageData.blob documentation>
+blob_ :: (MonadDOM m) => PushMessageData -> m ()
+blob_ self = liftDOM (void (self ^. jsf "blob" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/bytes MDN PushMessageData.bytes documentation>
+bytes :: (MonadDOM m) => PushMessageData -> m Uint8Array
+bytes self = liftDOM (((self ^. jsf "bytes" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/bytes MDN PushMessageData.bytes documentation>
+bytes_ :: (MonadDOM m) => PushMessageData -> m ()
+bytes_ self = liftDOM (void (self ^. jsf "bytes" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/json MDN PushMessageData.json documentation>
+json :: (MonadDOM m) => PushMessageData -> m JSVal
+json self = liftDOM (self ^. jsf "json" ())
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/json MDN PushMessageData.json documentation>
+json_ :: (MonadDOM m) => PushMessageData -> m ()
+json_ self = liftDOM (void (self ^. jsf "json" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/text MDN PushMessageData.text documentation>
+text :: (MonadDOM m, FromJSString result) => PushMessageData -> m result
+text self = liftDOM (((self ^. jsf "text" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushMessageData/text MDN PushMessageData.text documentation>
+text_ :: (MonadDOM m) => PushMessageData -> m ()
+text_ self = liftDOM (void (self ^. jsf "text" ()))
diff --git a/src/JSDOM/Generated/PushSubscription.hs b/src/JSDOM/Generated/PushSubscription.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PushSubscription.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module JSDOM.Generated.PushSubscription
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "getKey" [toJSVal name]) >>= 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 (self ^. jsf "getKey" [toJSVal name]))
+
+-- | <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 ((((self ^. jsf "getKey" [toJSVal name]) >>= 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 (((self ^. jsf "getKey" [toJSVal name]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/toJSON MDN PushSubscription.toJSON documentation>
+toJSON :: (MonadDOM m) => PushSubscription -> m PushSubscriptionJSON
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/toJSON MDN PushSubscription.toJSON documentation>
+toJSON_ :: (MonadDOM m) => PushSubscription -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/unsubscribe MDN PushSubscription.unsubscribe documentation>
+unsubscribe :: (MonadDOM m) => PushSubscription -> m Bool
+unsubscribe self = liftDOM (((((self ^. jsf "unsubscribe" ()) >>= readPromise)) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/unsubscribe MDN PushSubscription.unsubscribe documentation>
+unsubscribe_ :: (MonadDOM m) => PushSubscription -> m ()
+unsubscribe_ self = liftDOM (void (((self ^. jsf "unsubscribe" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/endpoint MDN PushSubscription.endpoint documentation>
+getEndpoint :: (MonadDOM m, FromJSString result) => PushSubscription -> m result
+getEndpoint self = liftDOM (((self ^. js "endpoint") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/expirationTime MDN PushSubscription.expirationTime documentation>
+getExpirationTime :: (MonadDOM m) => PushSubscription -> m (Maybe Word53)
+getExpirationTime self = liftDOM (((self ^. js "expirationTime") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/expirationTime MDN PushSubscription.expirationTime documentation>
+getExpirationTimeUnsafe :: (MonadDOM m, HasCallStack) => PushSubscription -> m Word53
+getExpirationTimeUnsafe self = liftDOM ((((self ^. js "expirationTime") >>= 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 (((self ^. js "expirationTime") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscription/options MDN PushSubscription.options documentation>
+getOptions :: (MonadDOM m) => PushSubscription -> m PushSubscriptionOptions
+getOptions self = liftDOM (((self ^. js "options") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PushSubscriptionChangeEvent.hs b/src/JSDOM/Generated/PushSubscriptionChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PushSubscriptionChangeEvent.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module JSDOM.Generated.PushSubscriptionChangeEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "PushSubscriptionChangeEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeevent-newsubscription PushSubscriptionChangeEvent.newSubscription specification>
+getNewSubscription :: (MonadDOM m) => PushSubscriptionChangeEvent -> m (Maybe PushSubscription)
+getNewSubscription self = liftDOM (((self ^. js "newSubscription") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeevent-newsubscription PushSubscriptionChangeEvent.newSubscription specification>
+getNewSubscriptionUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionChangeEvent -> m PushSubscription
+getNewSubscriptionUnsafe self = liftDOM ((((self ^. js "newSubscription") >>= 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 (((self ^. js "newSubscription") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeevent-oldsubscription PushSubscriptionChangeEvent.oldSubscription specification>
+getOldSubscription :: (MonadDOM m) => PushSubscriptionChangeEvent -> m (Maybe PushSubscription)
+getOldSubscription self = liftDOM (((self ^. js "oldSubscription") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeevent-oldsubscription PushSubscriptionChangeEvent.oldSubscription specification>
+getOldSubscriptionUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionChangeEvent -> m PushSubscription
+getOldSubscriptionUnsafe self = liftDOM ((((self ^. js "oldSubscription") >>= 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 (((self ^. js "oldSubscription") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PushSubscriptionChangeEventInit.hs b/src/JSDOM/Generated/PushSubscriptionChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PushSubscriptionChangeEventInit.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module JSDOM.Generated.PushSubscriptionChangeEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeeventinit PushSubscriptionChangeEventInit specification>
+newPushSubscriptionChangeEventInit :: (MonadDOM m) => m PushSubscriptionChangeEventInit
+newPushSubscriptionChangeEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeeventinit-newsubscription PushSubscriptionChangeEventInit.newSubscription specification>
+setNewSubscription :: (MonadDOM m) => PushSubscriptionChangeEventInit -> PushSubscription -> m ()
+setNewSubscription self val = liftDOM (void (self ^. jss "newSubscription" (toJSVal val)))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeeventinit-newsubscription PushSubscriptionChangeEventInit.newSubscription specification>
+getNewSubscription :: (MonadDOM m) => PushSubscriptionChangeEventInit -> m (Maybe PushSubscription)
+getNewSubscription self = liftDOM (((self ^. js "newSubscription") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeeventinit-newsubscription PushSubscriptionChangeEventInit.newSubscription specification>
+getNewSubscriptionUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionChangeEventInit -> m PushSubscription
+getNewSubscriptionUnsafe self = liftDOM ((((self ^. js "newSubscription") >>= 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 (((self ^. js "newSubscription") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeeventinit-oldsubscription PushSubscriptionChangeEventInit.oldSubscription specification>
+setOldSubscription :: (MonadDOM m) => PushSubscriptionChangeEventInit -> PushSubscription -> m ()
+setOldSubscription self val = liftDOM (void (self ^. jss "oldSubscription" (toJSVal val)))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeeventinit-oldsubscription PushSubscriptionChangeEventInit.oldSubscription specification>
+getOldSubscription :: (MonadDOM m) => PushSubscriptionChangeEventInit -> m (Maybe PushSubscription)
+getOldSubscription self = liftDOM (((self ^. js "oldSubscription") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionchangeeventinit-oldsubscription PushSubscriptionChangeEventInit.oldSubscription specification>
+getOldSubscriptionUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionChangeEventInit -> m PushSubscription
+getOldSubscriptionUnsafe self = liftDOM ((((self ^. js "oldSubscription") >>= 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 (((self ^. js "oldSubscription") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PushSubscriptionJSON.hs b/src/JSDOM/Generated/PushSubscriptionJSON.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PushSubscriptionJSON.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module JSDOM.Generated.PushSubscriptionJSON
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson PushSubscriptionJSON specification>
+newPushSubscriptionJSON :: (MonadDOM m) => m PushSubscriptionJSON
+newPushSubscriptionJSON = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "endpoint" (toJSVal val)))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-endpoint PushSubscriptionJSON.endpoint specification>
+getEndpoint :: (MonadDOM m, FromJSString result) => PushSubscriptionJSON -> m (Maybe result)
+getEndpoint self = liftDOM (((self ^. js "endpoint") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-endpoint PushSubscriptionJSON.endpoint specification>
+getEndpointUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PushSubscriptionJSON -> m result
+getEndpointUnsafe self = liftDOM ((((self ^. js "endpoint") >>= fromMaybeJSString) >>= 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 (((self ^. js "endpoint") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-expirationtime PushSubscriptionJSON.expirationTime specification>
+setExpirationTime :: (MonadDOM m) => PushSubscriptionJSON -> Maybe Word53 -> m ()
+setExpirationTime self val = liftDOM (void (self ^. jss "expirationTime" (toJSVal val)))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-expirationtime PushSubscriptionJSON.expirationTime specification>
+getExpirationTime :: (MonadDOM m) => PushSubscriptionJSON -> m (Maybe Word53)
+getExpirationTime self = liftDOM (((self ^. js "expirationTime") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-expirationtime PushSubscriptionJSON.expirationTime specification>
+getExpirationTimeUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionJSON -> m Word53
+getExpirationTimeUnsafe self = liftDOM ((((self ^. js "expirationTime") >>= 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 (((self ^. js "expirationTime") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-keys PushSubscriptionJSON.keys specification>
+setKeys :: (MonadDOM m) => PushSubscriptionJSON -> PushSubscriptionKeys -> m ()
+setKeys self val = liftDOM (void (self ^. jss "keys" (toJSVal val)))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-keys PushSubscriptionJSON.keys specification>
+getKeys :: (MonadDOM m) => PushSubscriptionJSON -> m (Maybe PushSubscriptionKeys)
+getKeys self = liftDOM (((self ^. js "keys") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionjson-keys PushSubscriptionJSON.keys specification>
+getKeysUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionJSON -> m PushSubscriptionKeys
+getKeysUnsafe self = liftDOM ((((self ^. js "keys") >>= 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 (((self ^. js "keys") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PushSubscriptionKeys.hs b/src/JSDOM/Generated/PushSubscriptionKeys.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PushSubscriptionKeys.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module JSDOM.Generated.PushSubscriptionKeys
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionkeys PushSubscriptionKeys specification>
+newPushSubscriptionKeys :: (MonadDOM m) => m PushSubscriptionKeys
+newPushSubscriptionKeys = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "p256dh" (toJSVal val)))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionkeys-p256dh PushSubscriptionKeys.p256dh specification>
+getP256dh :: (MonadDOM m, FromJSString result) => PushSubscriptionKeys -> m (Maybe result)
+getP256dh self = liftDOM (((self ^. js "p256dh") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionkeys-p256dh PushSubscriptionKeys.p256dh specification>
+getP256dhUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PushSubscriptionKeys -> m result
+getP256dhUnsafe self = liftDOM ((((self ^. js "p256dh") >>= fromMaybeJSString) >>= 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 (((self ^. js "p256dh") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "auth" (toJSVal val)))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionkeys-auth PushSubscriptionKeys.auth specification>
+getAuth :: (MonadDOM m, FromJSString result) => PushSubscriptionKeys -> m (Maybe result)
+getAuth self = liftDOM (((self ^. js "auth") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionkeys-auth PushSubscriptionKeys.auth specification>
+getAuthUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => PushSubscriptionKeys -> m result
+getAuthUnsafe self = liftDOM ((((self ^. js "auth") >>= fromMaybeJSString) >>= 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 (((self ^. js "auth") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PushSubscriptionOptions.hs b/src/JSDOM/Generated/PushSubscriptionOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PushSubscriptionOptions.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module JSDOM.Generated.PushSubscriptionOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscriptionOptions/userVisibleOnly MDN PushSubscriptionOptions.userVisibleOnly documentation>
+getUserVisibleOnly :: (MonadDOM m) => PushSubscriptionOptions -> m Bool
+getUserVisibleOnly self = liftDOM (((self ^. js "userVisibleOnly") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscriptionOptions/applicationServerKey MDN PushSubscriptionOptions.applicationServerKey documentation>
+getApplicationServerKey :: (MonadDOM m) => PushSubscriptionOptions -> m (Maybe ArrayBuffer)
+getApplicationServerKey self = liftDOM (((self ^. js "applicationServerKey") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/PushSubscriptionOptions/applicationServerKey MDN PushSubscriptionOptions.applicationServerKey documentation>
+getApplicationServerKeyUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionOptions -> m ArrayBuffer
+getApplicationServerKeyUnsafe self = liftDOM ((((self ^. js "applicationServerKey") >>= 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 (((self ^. js "applicationServerKey") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/PushSubscriptionOptionsInit.hs b/src/JSDOM/Generated/PushSubscriptionOptionsInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/PushSubscriptionOptionsInit.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from push-api (webref). Do not edit.
+module JSDOM.Generated.PushSubscriptionOptionsInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionoptionsinit PushSubscriptionOptionsInit specification>
+newPushSubscriptionOptionsInit :: (MonadDOM m) => m PushSubscriptionOptionsInit
+newPushSubscriptionOptionsInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionoptionsinit-uservisibleonly PushSubscriptionOptionsInit.userVisibleOnly specification>
+setUserVisibleOnly :: (MonadDOM m) => PushSubscriptionOptionsInit -> Bool -> m ()
+setUserVisibleOnly self val = liftDOM (void (self ^. jss "userVisibleOnly" (toJSVal val)))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionoptionsinit-uservisibleonly PushSubscriptionOptionsInit.userVisibleOnly specification>
+getUserVisibleOnly :: (MonadDOM m) => PushSubscriptionOptionsInit -> m (Maybe Bool)
+getUserVisibleOnly self = liftDOM (((self ^. js "userVisibleOnly") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionoptionsinit-uservisibleonly PushSubscriptionOptionsInit.userVisibleOnly specification>
+getUserVisibleOnlyUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionOptionsInit -> m Bool
+getUserVisibleOnlyUnsafe self = liftDOM ((((self ^. js "userVisibleOnly") >>= 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 (((self ^. js "userVisibleOnly") >>= valToBool))
+
+-- | <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 (self ^. jss "applicationServerKey" (toJSVal val)))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionoptionsinit-applicationserverkey PushSubscriptionOptionsInit.applicationServerKey specification>
+getApplicationServerKey :: (MonadDOM m) => PushSubscriptionOptionsInit -> m (Maybe PushMessageDataInit)
+getApplicationServerKey self = liftDOM (((self ^. js "applicationServerKey") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/push-api/#dom-pushsubscriptionoptionsinit-applicationserverkey PushSubscriptionOptionsInit.applicationServerKey specification>
+getApplicationServerKeyUnsafe :: (MonadDOM m, HasCallStack) => PushSubscriptionOptionsInit -> m PushMessageDataInit
+getApplicationServerKeyUnsafe self = liftDOM ((((self ^. js "applicationServerKey") >>= 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 (((self ^. js "applicationServerKey") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/QueuingStrategy.hs b/src/JSDOM/Generated/QueuingStrategy.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/QueuingStrategy.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module JSDOM.Generated.QueuingStrategy
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://streams.spec.whatwg.org/#dictdef-queuingstrategy QueuingStrategy specification>
+newQueuingStrategy :: (MonadDOM m) => m QueuingStrategy
+newQueuingStrategy = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-queuingstrategy-highwatermark QueuingStrategy.highWaterMark specification>
+setHighWaterMark :: (MonadDOM m) => QueuingStrategy -> Double -> m ()
+setHighWaterMark self val = liftDOM (void (self ^. jss "highWaterMark" (toJSVal val)))
+
+-- | <https://streams.spec.whatwg.org/#dom-queuingstrategy-highwatermark QueuingStrategy.highWaterMark specification>
+getHighWaterMark :: (MonadDOM m) => QueuingStrategy -> m (Maybe Double)
+getHighWaterMark self = liftDOM (((self ^. js "highWaterMark") >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-queuingstrategy-highwatermark QueuingStrategy.highWaterMark specification>
+getHighWaterMarkUnsafe :: (MonadDOM m, HasCallStack) => QueuingStrategy -> m Double
+getHighWaterMarkUnsafe self = liftDOM ((((self ^. js "highWaterMark") >>= 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 (((self ^. js "highWaterMark") >>= valToNumber))
+
+-- | <https://streams.spec.whatwg.org/#dom-queuingstrategy-size QueuingStrategy.size specification>
+setSize :: (MonadDOM m) => QueuingStrategy -> QueuingStrategySize -> m ()
+setSize self val = liftDOM (void (self ^. jss "size" (toJSVal val)))
diff --git a/src/JSDOM/Generated/QueuingStrategyInit.hs b/src/JSDOM/Generated/QueuingStrategyInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/QueuingStrategyInit.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module JSDOM.Generated.QueuingStrategyInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://streams.spec.whatwg.org/#dictdef-queuingstrategyinit QueuingStrategyInit specification>
+newQueuingStrategyInit :: (MonadDOM m) => Double -> m QueuingStrategyInit
+newQueuingStrategyInit highWaterMark = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "highWaterMark" (toJSVal highWaterMark)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-queuingstrategyinit-highwatermark QueuingStrategyInit.highWaterMark specification>
+setHighWaterMark :: (MonadDOM m) => QueuingStrategyInit -> Double -> m ()
+setHighWaterMark self val = liftDOM (void (self ^. jss "highWaterMark" (toJSVal val)))
+
+-- | <https://streams.spec.whatwg.org/#dom-queuingstrategyinit-highwatermark QueuingStrategyInit.highWaterMark specification>
+getHighWaterMark :: (MonadDOM m) => QueuingStrategyInit -> m Double
+getHighWaterMark self = liftDOM (((self ^. js "highWaterMark") >>= valToNumber))
diff --git a/src/JSDOM/Generated/QueuingStrategySize.hs b/src/JSDOM/Generated/QueuingStrategySize.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/QueuingStrategySize.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newQueuingStrategySize :: (MonadDOM m) => (JSVal -> JSM ()) -> m QueuingStrategySize
+newQueuingStrategySize callback = liftDOM (QueuingStrategySize . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (chunk : _) -> do
+          chunk' <- P.return chunk
+          callback chunk'))
+
+newQueuingStrategySizeSync :: (MonadDOM m) => (JSVal -> JSM ()) -> m QueuingStrategySize
+newQueuingStrategySizeSync callback = liftDOM (QueuingStrategySize . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (chunk : _) -> do
+          chunk' <- P.return chunk
+          callback chunk'))
+
+newQueuingStrategySizeAsync :: (MonadDOM m) => (JSVal -> JSM ()) -> m QueuingStrategySize
+newQueuingStrategySizeAsync callback = liftDOM (QueuingStrategySize . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (chunk : _) -> do
+          chunk' <- P.return chunk
+          callback chunk'))
diff --git a/src/JSDOM/Generated/QuickTimePluginReplacement.hs b/src/JSDOM/Generated/QuickTimePluginReplacement.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/QuickTimePluginReplacement.hs
+++ /dev/null
@@ -1,51 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.QuickTimePluginReplacement
-       (postEvent, getMovieSize, getTimedMetaData, getAccessLog,
-        getErrorLog, QuickTimePluginReplacement(..),
-        gTypeQuickTimePluginReplacement)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.postEvent Mozilla QuickTimePluginReplacement.postEvent documentation> 
-postEvent ::
-          (MonadDOM m, ToJSString eventName) =>
-            QuickTimePluginReplacement -> eventName -> m ()
-postEvent self eventName
-  = liftDOM (void (self ^. jsf "postEvent" [toJSVal eventName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.movieSize Mozilla QuickTimePluginReplacement.movieSize documentation> 
-getMovieSize ::
-             (MonadDOM m) => QuickTimePluginReplacement -> m Word64
-getMovieSize self
-  = liftDOM (round <$> ((self ^. js "movieSize") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.timedMetaData Mozilla QuickTimePluginReplacement.timedMetaData documentation> 
-getTimedMetaData ::
-                 (MonadDOM m) => QuickTimePluginReplacement -> m JSVal
-getTimedMetaData self
-  = liftDOM ((self ^. js "timedMetaData") >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.accessLog Mozilla QuickTimePluginReplacement.accessLog documentation> 
-getAccessLog ::
-             (MonadDOM m) => QuickTimePluginReplacement -> m JSVal
-getAccessLog self = liftDOM ((self ^. js "accessLog") >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.errorLog Mozilla QuickTimePluginReplacement.errorLog documentation> 
-getErrorLog ::
-            (MonadDOM m) => QuickTimePluginReplacement -> m JSVal
-getErrorLog self = liftDOM ((self ^. js "errorLog") >>= toJSVal)
diff --git a/src/JSDOM/Generated/RGBColor.hs b/src/JSDOM/Generated/RGBColor.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/RGBColor.hs
+++ /dev/null
@@ -1,38 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.RGBColor
-       (getRed, getGreen, getBlue, getAlpha, RGBColor(..), gTypeRGBColor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.red Mozilla RGBColor.red documentation> 
-getRed :: (MonadDOM m) => RGBColor -> m CSSPrimitiveValue
-getRed self = liftDOM ((self ^. js "red") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.green Mozilla RGBColor.green documentation> 
-getGreen :: (MonadDOM m) => RGBColor -> m CSSPrimitiveValue
-getGreen self
-  = liftDOM ((self ^. js "green") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.blue Mozilla RGBColor.blue documentation> 
-getBlue :: (MonadDOM m) => RGBColor -> m CSSPrimitiveValue
-getBlue self = liftDOM ((self ^. js "blue") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.alpha Mozilla RGBColor.alpha documentation> 
-getAlpha :: (MonadDOM m) => RGBColor -> m CSSPrimitiveValue
-getAlpha self
-  = liftDOM ((self ^. js "alpha") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/RTCAnswerOptions.hs b/src/JSDOM/Generated/RTCAnswerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCAnswerOptions.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCAnswerOptions
+       (newRTCAnswerOptions, RTCAnswerOptions(..), gTypeRTCAnswerOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcansweroptions RTCAnswerOptions specification>
+newRTCAnswerOptions :: (MonadDOM m) => m RTCAnswerOptions
+newRTCAnswerOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCCertificate.hs b/src/JSDOM/Generated/RTCCertificate.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCCertificate.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCCertificate
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCCertificate/getFingerprints MDN RTCCertificate.getFingerprints documentation>
+getFingerprints :: (MonadDOM m) => RTCCertificate -> m [RTCDtlsFingerprint]
+getFingerprints self = liftDOM (((self ^. jsf "getFingerprints" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCCertificate/getFingerprints MDN RTCCertificate.getFingerprints documentation>
+getFingerprints_ :: (MonadDOM m) => RTCCertificate -> m ()
+getFingerprints_ self = liftDOM (void (self ^. jsf "getFingerprints" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCCertificate/expires MDN RTCCertificate.expires documentation>
+getExpires :: (MonadDOM m) => RTCCertificate -> m Word53
+getExpires self = liftDOM (((self ^. js "expires") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCConfiguration.hs b/src/JSDOM/Generated/RTCConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCConfiguration.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCConfiguration
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration RTCConfiguration specification>
+newRTCConfiguration :: (MonadDOM m) => m RTCConfiguration
+newRTCConfiguration = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-iceservers RTCConfiguration.iceServers specification>
+setIceServers :: (MonadDOM m) => RTCConfiguration -> [RTCIceServer] -> m ()
+setIceServers self val = liftDOM (void (self ^. jss "iceServers" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-iceservers RTCConfiguration.iceServers specification>
+getIceServers :: (MonadDOM m) => RTCConfiguration -> m (Maybe [RTCIceServer])
+getIceServers self = liftDOM (((self ^. js "iceServers") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-iceservers RTCConfiguration.iceServers specification>
+getIceServersUnsafe :: (MonadDOM m, HasCallStack) => RTCConfiguration -> m [RTCIceServer]
+getIceServersUnsafe self = liftDOM ((((self ^. js "iceServers") >>= 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 (((self ^. js "iceServers") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-icetransportpolicy RTCConfiguration.iceTransportPolicy specification>
+setIceTransportPolicy :: (MonadDOM m) => RTCConfiguration -> RTCIceTransportPolicy -> m ()
+setIceTransportPolicy self val = liftDOM (void (self ^. jss "iceTransportPolicy" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-icetransportpolicy RTCConfiguration.iceTransportPolicy specification>
+getIceTransportPolicy :: (MonadDOM m) => RTCConfiguration -> m (Maybe RTCIceTransportPolicy)
+getIceTransportPolicy self = liftDOM (((self ^. js "iceTransportPolicy") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-icetransportpolicy RTCConfiguration.iceTransportPolicy specification>
+getIceTransportPolicyUnsafe :: (MonadDOM m, HasCallStack) => RTCConfiguration -> m RTCIceTransportPolicy
+getIceTransportPolicyUnsafe self = liftDOM ((((self ^. js "iceTransportPolicy") >>= 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 (((self ^. js "iceTransportPolicy") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-bundlepolicy RTCConfiguration.bundlePolicy specification>
+setBundlePolicy :: (MonadDOM m) => RTCConfiguration -> RTCBundlePolicy -> m ()
+setBundlePolicy self val = liftDOM (void (self ^. jss "bundlePolicy" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-bundlepolicy RTCConfiguration.bundlePolicy specification>
+getBundlePolicy :: (MonadDOM m) => RTCConfiguration -> m (Maybe RTCBundlePolicy)
+getBundlePolicy self = liftDOM (((self ^. js "bundlePolicy") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-bundlepolicy RTCConfiguration.bundlePolicy specification>
+getBundlePolicyUnsafe :: (MonadDOM m, HasCallStack) => RTCConfiguration -> m RTCBundlePolicy
+getBundlePolicyUnsafe self = liftDOM ((((self ^. js "bundlePolicy") >>= 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 (((self ^. js "bundlePolicy") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-rtcpmuxpolicy RTCConfiguration.rtcpMuxPolicy specification>
+setRtcpMuxPolicy :: (MonadDOM m) => RTCConfiguration -> RTCRtcpMuxPolicy -> m ()
+setRtcpMuxPolicy self val = liftDOM (void (self ^. jss "rtcpMuxPolicy" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-rtcpmuxpolicy RTCConfiguration.rtcpMuxPolicy specification>
+getRtcpMuxPolicy :: (MonadDOM m) => RTCConfiguration -> m (Maybe RTCRtcpMuxPolicy)
+getRtcpMuxPolicy self = liftDOM (((self ^. js "rtcpMuxPolicy") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-rtcpmuxpolicy RTCConfiguration.rtcpMuxPolicy specification>
+getRtcpMuxPolicyUnsafe :: (MonadDOM m, HasCallStack) => RTCConfiguration -> m RTCRtcpMuxPolicy
+getRtcpMuxPolicyUnsafe self = liftDOM ((((self ^. js "rtcpMuxPolicy") >>= 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 (((self ^. js "rtcpMuxPolicy") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-certificates RTCConfiguration.certificates specification>
+setCertificates :: (MonadDOM m) => RTCConfiguration -> [RTCCertificate] -> m ()
+setCertificates self val = liftDOM (void (self ^. jss "certificates" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-certificates RTCConfiguration.certificates specification>
+getCertificates :: (MonadDOM m) => RTCConfiguration -> m (Maybe [RTCCertificate])
+getCertificates self = liftDOM (((self ^. js "certificates") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-certificates RTCConfiguration.certificates specification>
+getCertificatesUnsafe :: (MonadDOM m, HasCallStack) => RTCConfiguration -> m [RTCCertificate]
+getCertificatesUnsafe self = liftDOM ((((self ^. js "certificates") >>= 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 (((self ^. js "certificates") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-icecandidatepoolsize RTCConfiguration.iceCandidatePoolSize specification>
+setIceCandidatePoolSize :: (MonadDOM m) => RTCConfiguration -> Word -> m ()
+setIceCandidatePoolSize self val = liftDOM (void (self ^. jss "iceCandidatePoolSize" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-icecandidatepoolsize RTCConfiguration.iceCandidatePoolSize specification>
+getIceCandidatePoolSize :: (MonadDOM m) => RTCConfiguration -> m (Maybe Word)
+getIceCandidatePoolSize self = liftDOM (((self ^. js "iceCandidatePoolSize") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-icecandidatepoolsize RTCConfiguration.iceCandidatePoolSize specification>
+getIceCandidatePoolSizeUnsafe :: (MonadDOM m, HasCallStack) => RTCConfiguration -> m Word
+getIceCandidatePoolSizeUnsafe self = liftDOM ((((self ^. js "iceCandidatePoolSize") >>= 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 ((P.round <$> ((self ^. js "iceCandidatePoolSize") >>= valToNumber)))
+
+-- | <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 (self ^. jss "peerIdentity" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-identity/#dom-rtcconfiguration-peeridentity RTCConfiguration.peerIdentity specification>
+getPeerIdentity :: (MonadDOM m, FromJSString result) => RTCConfiguration -> m (Maybe result)
+getPeerIdentity self = liftDOM (((self ^. js "peerIdentity") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webrtc-identity/#dom-rtcconfiguration-peeridentity RTCConfiguration.peerIdentity specification>
+getPeerIdentityUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCConfiguration -> m result
+getPeerIdentityUnsafe self = liftDOM ((((self ^. js "peerIdentity") >>= fromMaybeJSString) >>= 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 (((self ^. js "peerIdentity") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCDTMFSender.hs b/src/JSDOM/Generated/RTCDTMFSender.hs
--- a/src/JSDOM/Generated/RTCDTMFSender.hs
+++ b/src/JSDOM/Generated/RTCDTMFSender.hs
@@ -1,62 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module JSDOM.Generated.RTCDTMFSender
-       (insertDTMF, toneChange, getToneBuffer, getCanInsertDTMF, getTrack,
-        getDuration, getInterToneGap, RTCDTMFSender(..),
-        gTypeRTCDTMFSender)
+       (insertDTMF, getCanInsertDTMF, getToneBuffer, toneChange, RTCDTMFSender(..), gTypeRTCDTMFSender)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.insertDTMF Mozilla RTCDTMFSender.insertDTMF documentation> 
-insertDTMF ::
-           (MonadDOM m, ToJSString tones) =>
-             RTCDTMFSender -> tones -> Maybe Int -> Maybe Int -> m ()
-insertDTMF self tones duration interToneGap
-  = liftDOM
-      (void
-         (self ^. jsf "insertDTMF"
-            [toJSVal tones, toJSVal duration, toJSVal interToneGap]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.ontonechange Mozilla RTCDTMFSender.ontonechange documentation> 
-toneChange :: EventName RTCDTMFSender Event
-toneChange = unsafeEventName (toJSString "tonechange")
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.toneBuffer Mozilla RTCDTMFSender.toneBuffer documentation> 
-getToneBuffer ::
-              (MonadDOM m, FromJSString result) => RTCDTMFSender -> m result
-getToneBuffer self
-  = liftDOM ((self ^. js "toneBuffer") >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "insertDTMF" [toJSVal tones, P.maybe (P.return jsUndefined) toJSVal duration, P.maybe (P.return jsUndefined) toJSVal interToneGap]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.canInsertDTMF Mozilla RTCDTMFSender.canInsertDTMF documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDTMFSender/canInsertDTMF MDN RTCDTMFSender.canInsertDTMF documentation>
 getCanInsertDTMF :: (MonadDOM m) => RTCDTMFSender -> m Bool
-getCanInsertDTMF self
-  = liftDOM ((self ^. js "canInsertDTMF") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.track Mozilla RTCDTMFSender.track documentation> 
-getTrack :: (MonadDOM m) => RTCDTMFSender -> m MediaStreamTrack
-getTrack self
-  = liftDOM ((self ^. js "track") >>= fromJSValUnchecked)
+getCanInsertDTMF self = liftDOM (((self ^. js "canInsertDTMF") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.duration Mozilla RTCDTMFSender.duration documentation> 
-getDuration :: (MonadDOM m) => RTCDTMFSender -> m Int
-getDuration self
-  = liftDOM (round <$> ((self ^. js "duration") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDTMFSender/toneBuffer MDN RTCDTMFSender.toneBuffer documentation>
+getToneBuffer :: (MonadDOM m, FromJSString result) => RTCDTMFSender -> m result
+getToneBuffer self = liftDOM (((self ^. js "toneBuffer") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.interToneGap Mozilla RTCDTMFSender.interToneGap documentation> 
-getInterToneGap :: (MonadDOM m) => RTCDTMFSender -> m Int
-getInterToneGap self
-  = liftDOM (round <$> ((self ^. js "interToneGap") >>= valToNumber))
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtmfsender-ontonechange tonechange event>
+toneChange :: EventName RTCDTMFSender RTCDTMFToneChangeEvent
+toneChange = unsafeEventName (toJSString "tonechange")
diff --git a/src/JSDOM/Generated/RTCDTMFToneChangeEvent.hs b/src/JSDOM/Generated/RTCDTMFToneChangeEvent.hs
--- a/src/JSDOM/Generated/RTCDTMFToneChangeEvent.hs
+++ b/src/JSDOM/Generated/RTCDTMFToneChangeEvent.hs
@@ -1,38 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module JSDOM.Generated.RTCDTMFToneChangeEvent
-       (newRTCDTMFToneChangeEvent, getTone, RTCDTMFToneChangeEvent(..),
-        gTypeRTCDTMFToneChangeEvent)
+       (newRTCDTMFToneChangeEvent, getTone, RTCDTMFToneChangeEvent(..), gTypeRTCDTMFToneChangeEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFToneChangeEvent Mozilla RTCDTMFToneChangeEvent documentation> 
-newRTCDTMFToneChangeEvent ::
-                          (MonadDOM m, ToJSString type') =>
-                            type' ->
-                              Maybe RTCDTMFToneChangeEventInit -> m RTCDTMFToneChangeEvent
-newRTCDTMFToneChangeEvent type' eventInitDict
-  = liftDOM
-      (RTCDTMFToneChangeEvent <$>
-         new (jsg "RTCDTMFToneChangeEvent")
-           [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "RTCDTMFToneChangeEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFToneChangeEvent.tone Mozilla RTCDTMFToneChangeEvent.tone documentation> 
-getTone ::
-        (MonadDOM m, FromJSString result) =>
-          RTCDTMFToneChangeEvent -> m result
-getTone self = liftDOM ((self ^. js "tone") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDTMFToneChangeEvent/tone MDN RTCDTMFToneChangeEvent.tone documentation>
+getTone :: (MonadDOM m, FromJSString result) => RTCDTMFToneChangeEvent -> m result
+getTone self = liftDOM (((self ^. js "tone") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCDTMFToneChangeEventInit.hs b/src/JSDOM/Generated/RTCDTMFToneChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCDTMFToneChangeEventInit.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCDTMFToneChangeEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtmftonechangeeventinit RTCDTMFToneChangeEventInit specification>
+newRTCDTMFToneChangeEventInit :: (MonadDOM m) => m RTCDTMFToneChangeEventInit
+newRTCDTMFToneChangeEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "tone" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtmftonechangeeventinit-tone RTCDTMFToneChangeEventInit.tone specification>
+getTone :: (MonadDOM m, FromJSString result) => RTCDTMFToneChangeEventInit -> m (Maybe result)
+getTone self = liftDOM (((self ^. js "tone") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtmftonechangeeventinit-tone RTCDTMFToneChangeEventInit.tone specification>
+getToneUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCDTMFToneChangeEventInit -> m result
+getToneUnsafe self = liftDOM ((((self ^. js "tone") >>= fromMaybeJSString) >>= 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 (((self ^. js "tone") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCDataChannel.hs b/src/JSDOM/Generated/RTCDataChannel.hs
--- a/src/JSDOM/Generated/RTCDataChannel.hs
+++ b/src/JSDOM/Generated/RTCDataChannel.hs
@@ -1,195 +1,136 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module JSDOM.Generated.RTCDataChannel
-       (send, sendView, sendBlob, sendString, close, getLabel, getOrdered,
-        getMaxPacketLifeTime, getMaxPacketLifeTimeUnsafe,
-        getMaxPacketLifeTimeUnchecked, getMaxRetransmits,
-        getMaxRetransmitsUnsafe, getMaxRetransmitsUnchecked, getProtocol,
-        getNegotiated, getId, getIdUnsafe, getIdUnchecked, getReadyState,
-        getBufferedAmount, setBufferedAmountLowThreshold,
-        getBufferedAmountLowThreshold, setBinaryType, getBinaryType, open,
-        error, closeEvent, message, bufferedamountlow, RTCDataChannel(..),
-        gTypeRTCDataChannel)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
-send ::
-     (MonadDOM m, IsArrayBuffer data') =>
-       RTCDataChannel -> data' -> m ()
-send self data'
-  = liftDOM (void (self ^. jsf "send" [toJSVal data']))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/close MDN RTCDataChannel.close documentation>
+close :: (MonadDOM m) => RTCDataChannel -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
-sendView ::
-         (MonadDOM m, IsArrayBufferView data') =>
-           RTCDataChannel -> data' -> m ()
-sendView self data'
-  = liftDOM (void (self ^. jsf "send" [toJSVal data']))
+-- | <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 (self ^. jsf "send" [toJSVal data']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
-sendBlob ::
-         (MonadDOM m, IsBlob data') => RTCDataChannel -> data' -> m ()
-sendBlob self data'
-  = liftDOM (void (self ^. jsf "send" [toJSVal data']))
+-- | <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 (self ^. jsf "send" [toJSVal data']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
-sendString ::
-           (MonadDOM m, ToJSString data') => RTCDataChannel -> data' -> m ()
-sendString self data'
-  = liftDOM (void (self ^. jsf "send" [toJSVal data']))
+-- | <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 (self ^. jsf "send" [toJSVal data']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.close Mozilla RTCDataChannel.close documentation> 
-close :: (MonadDOM m) => RTCDataChannel -> m ()
-close self = liftDOM (void (self ^. jsf "close" ()))
+-- | <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 (self ^. jsf "send" [toJSVal data']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.label Mozilla RTCDataChannel.label documentation> 
-getLabel ::
-         (MonadDOM m, FromJSString result) => RTCDataChannel -> m result
-getLabel self
-  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/label MDN RTCDataChannel.label documentation>
+getLabel :: (MonadDOM m, FromJSString result) => RTCDataChannel -> m result
+getLabel self = liftDOM (((self ^. js "label") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.ordered Mozilla RTCDataChannel.ordered documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/ordered MDN RTCDataChannel.ordered documentation>
 getOrdered :: (MonadDOM m) => RTCDataChannel -> m Bool
-getOrdered self = liftDOM ((self ^. js "ordered") >>= valToBool)
+getOrdered self = liftDOM (((self ^. js "ordered") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxPacketLifeTime Mozilla RTCDataChannel.maxPacketLifeTime documentation> 
-getMaxPacketLifeTime ::
-                     (MonadDOM m) => RTCDataChannel -> m (Maybe Word)
-getMaxPacketLifeTime self
-  = liftDOM ((self ^. js "maxPacketLifeTime") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/maxPacketLifeTime MDN RTCDataChannel.maxPacketLifeTime documentation>
+getMaxPacketLifeTime :: (MonadDOM m) => RTCDataChannel -> m (Maybe Word)
+getMaxPacketLifeTime self = liftDOM (((self ^. js "maxPacketLifeTime") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxPacketLifeTime Mozilla RTCDataChannel.maxPacketLifeTime documentation> 
-getMaxPacketLifeTimeUnsafe ::
-                           (MonadDOM m, HasCallStack) => RTCDataChannel -> m Word
-getMaxPacketLifeTimeUnsafe self
-  = liftDOM
-      (((self ^. js "maxPacketLifeTime") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/maxPacketLifeTime MDN RTCDataChannel.maxPacketLifeTime documentation>
+getMaxPacketLifeTimeUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannel -> m Word
+getMaxPacketLifeTimeUnsafe self = liftDOM ((((self ^. js "maxPacketLifeTime") >>= 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> 
-getMaxPacketLifeTimeUnchecked ::
-                              (MonadDOM m) => RTCDataChannel -> m Word
-getMaxPacketLifeTimeUnchecked self
-  = liftDOM ((self ^. js "maxPacketLifeTime") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/maxPacketLifeTime MDN RTCDataChannel.maxPacketLifeTime documentation>
+getMaxPacketLifeTimeUnchecked :: (MonadDOM m) => RTCDataChannel -> m Word
+getMaxPacketLifeTimeUnchecked self = liftDOM ((P.round <$> ((self ^. js "maxPacketLifeTime") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxRetransmits Mozilla RTCDataChannel.maxRetransmits documentation> 
-getMaxRetransmits ::
-                  (MonadDOM m) => RTCDataChannel -> m (Maybe Word)
-getMaxRetransmits self
-  = liftDOM ((self ^. js "maxRetransmits") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/maxRetransmits MDN RTCDataChannel.maxRetransmits documentation>
+getMaxRetransmits :: (MonadDOM m) => RTCDataChannel -> m (Maybe Word)
+getMaxRetransmits self = liftDOM (((self ^. js "maxRetransmits") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxRetransmits Mozilla RTCDataChannel.maxRetransmits documentation> 
-getMaxRetransmitsUnsafe ::
-                        (MonadDOM m, HasCallStack) => RTCDataChannel -> m Word
-getMaxRetransmitsUnsafe self
-  = liftDOM
-      (((self ^. js "maxRetransmits") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/maxRetransmits MDN RTCDataChannel.maxRetransmits documentation>
+getMaxRetransmitsUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannel -> m Word
+getMaxRetransmitsUnsafe self = liftDOM ((((self ^. js "maxRetransmits") >>= 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> 
-getMaxRetransmitsUnchecked ::
-                           (MonadDOM m) => RTCDataChannel -> m Word
-getMaxRetransmitsUnchecked self
-  = liftDOM ((self ^. js "maxRetransmits") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/maxRetransmits MDN RTCDataChannel.maxRetransmits documentation>
+getMaxRetransmitsUnchecked :: (MonadDOM m) => RTCDataChannel -> m Word
+getMaxRetransmitsUnchecked self = liftDOM ((P.round <$> ((self ^. js "maxRetransmits") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.protocol Mozilla RTCDataChannel.protocol documentation> 
-getProtocol ::
-            (MonadDOM m, FromJSString result) => RTCDataChannel -> m result
-getProtocol self
-  = liftDOM ((self ^. js "protocol") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/protocol MDN RTCDataChannel.protocol documentation>
+getProtocol :: (MonadDOM m, FromJSString result) => RTCDataChannel -> m result
+getProtocol self = liftDOM (((self ^. js "protocol") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.negotiated Mozilla RTCDataChannel.negotiated documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/negotiated MDN RTCDataChannel.negotiated documentation>
 getNegotiated :: (MonadDOM m) => RTCDataChannel -> m Bool
-getNegotiated self
-  = liftDOM ((self ^. js "negotiated") >>= valToBool)
+getNegotiated self = liftDOM (((self ^. js "negotiated") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.id Mozilla RTCDataChannel.id documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/id MDN RTCDataChannel.id documentation>
 getId :: (MonadDOM m) => RTCDataChannel -> m (Maybe Word)
-getId self = liftDOM ((self ^. js "id") >>= fromJSVal)
+getId self = liftDOM (((self ^. js "id") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.id Mozilla RTCDataChannel.id documentation> 
-getIdUnsafe ::
-            (MonadDOM m, HasCallStack) => RTCDataChannel -> m Word
-getIdUnsafe self
-  = liftDOM
-      (((self ^. js "id") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/id MDN RTCDataChannel.id documentation>
+getIdUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannel -> m Word
+getIdUnsafe self = liftDOM ((((self ^. js "id") >>= 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> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/id MDN RTCDataChannel.id documentation>
 getIdUnchecked :: (MonadDOM m) => RTCDataChannel -> m Word
-getIdUnchecked self
-  = liftDOM ((self ^. js "id") >>= fromJSValUnchecked)
+getIdUnchecked self = liftDOM ((P.round <$> ((self ^. js "id") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.readyState Mozilla RTCDataChannel.readyState documentation> 
-getReadyState ::
-              (MonadDOM m) => RTCDataChannel -> m RTCDataChannelState
-getReadyState self
-  = liftDOM ((self ^. js "readyState") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/readyState MDN RTCDataChannel.readyState documentation>
+getReadyState :: (MonadDOM m) => RTCDataChannel -> m RTCDataChannelState
+getReadyState self = liftDOM (((self ^. js "readyState") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.bufferedAmount Mozilla RTCDataChannel.bufferedAmount documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/bufferedAmount MDN RTCDataChannel.bufferedAmount documentation>
 getBufferedAmount :: (MonadDOM m) => RTCDataChannel -> m Word
-getBufferedAmount self
-  = liftDOM
-      (round <$> ((self ^. js "bufferedAmount") >>= valToNumber))
+getBufferedAmount self = liftDOM ((P.round <$> ((self ^. js "bufferedAmount") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.bufferedAmountLowThreshold Mozilla RTCDataChannel.bufferedAmountLowThreshold documentation> 
-setBufferedAmountLowThreshold ::
-                              (MonadDOM m) => RTCDataChannel -> Word -> m ()
-setBufferedAmountLowThreshold self val
-  = liftDOM (self ^. jss "bufferedAmountLowThreshold" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/bufferedAmountLowThreshold MDN RTCDataChannel.bufferedAmountLowThreshold documentation>
+setBufferedAmountLowThreshold :: (MonadDOM m) => RTCDataChannel -> Word -> m ()
+setBufferedAmountLowThreshold self val = liftDOM (void (self ^. jss "bufferedAmountLowThreshold" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.bufferedAmountLowThreshold Mozilla RTCDataChannel.bufferedAmountLowThreshold documentation> 
-getBufferedAmountLowThreshold ::
-                              (MonadDOM m) => RTCDataChannel -> m Word
-getBufferedAmountLowThreshold self
-  = liftDOM
-      (round <$>
-         ((self ^. js "bufferedAmountLowThreshold") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/bufferedAmountLowThreshold MDN RTCDataChannel.bufferedAmountLowThreshold documentation>
+getBufferedAmountLowThreshold :: (MonadDOM m) => RTCDataChannel -> m Word
+getBufferedAmountLowThreshold self = liftDOM ((P.round <$> ((self ^. js "bufferedAmountLowThreshold") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.binaryType Mozilla RTCDataChannel.binaryType documentation> 
-setBinaryType ::
-              (MonadDOM m, ToJSString val) => RTCDataChannel -> val -> m ()
-setBinaryType self val
-  = liftDOM (self ^. jss "binaryType" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/binaryType MDN RTCDataChannel.binaryType documentation>
+setBinaryType :: (MonadDOM m) => RTCDataChannel -> BinaryType -> m ()
+setBinaryType self val = liftDOM (void (self ^. jss "binaryType" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.binaryType Mozilla RTCDataChannel.binaryType documentation> 
-getBinaryType ::
-              (MonadDOM m, FromJSString result) => RTCDataChannel -> m result
-getBinaryType self
-  = liftDOM ((self ^. js "binaryType") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannel/binaryType MDN RTCDataChannel.binaryType documentation>
+getBinaryType :: (MonadDOM m) => RTCDataChannel -> m BinaryType
+getBinaryType self = liftDOM (((self ^. js "binaryType") >>= 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/JSDOM/Generated/RTCDataChannelEvent.hs b/src/JSDOM/Generated/RTCDataChannelEvent.hs
--- a/src/JSDOM/Generated/RTCDataChannelEvent.hs
+++ b/src/JSDOM/Generated/RTCDataChannelEvent.hs
@@ -1,37 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module JSDOM.Generated.RTCDataChannelEvent
-       (newRTCDataChannelEvent, getChannel, RTCDataChannelEvent(..),
-        gTypeRTCDataChannelEvent)
+       (newRTCDataChannelEvent, getChannel, RTCDataChannelEvent(..), gTypeRTCDataChannelEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelEvent Mozilla RTCDataChannelEvent documentation> 
-newRTCDataChannelEvent ::
-                       (MonadDOM m, ToJSString type') =>
-                         type' -> RTCDataChannelEventInit -> m RTCDataChannelEvent
-newRTCDataChannelEvent type' eventInitDict
-  = liftDOM
-      (RTCDataChannelEvent <$>
-         new (jsg "RTCDataChannelEvent")
-           [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "RTCDataChannelEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelEvent.channel Mozilla RTCDataChannelEvent.channel documentation> 
-getChannel ::
-           (MonadDOM m) => RTCDataChannelEvent -> m RTCDataChannel
-getChannel self
-  = liftDOM ((self ^. js "channel") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDataChannelEvent/channel MDN RTCDataChannelEvent.channel documentation>
+getChannel :: (MonadDOM m) => RTCDataChannelEvent -> m RTCDataChannel
+getChannel self = liftDOM (((self ^. js "channel") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCDataChannelEventInit.hs b/src/JSDOM/Generated/RTCDataChannelEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCDataChannelEventInit.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCDataChannelEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachanneleventinit RTCDataChannelEventInit specification>
+newRTCDataChannelEventInit :: (MonadDOM m) => RTCDataChannel -> m RTCDataChannelEventInit
+newRTCDataChannelEventInit channel = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "channel" (toJSVal channel)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachanneleventinit-channel RTCDataChannelEventInit.channel specification>
+setChannel :: (MonadDOM m) => RTCDataChannelEventInit -> RTCDataChannel -> m ()
+setChannel self val = liftDOM (void (self ^. jss "channel" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachanneleventinit-channel RTCDataChannelEventInit.channel specification>
+getChannel :: (MonadDOM m) => RTCDataChannelEventInit -> m RTCDataChannel
+getChannel self = liftDOM (((self ^. js "channel") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCDataChannelInit.hs b/src/JSDOM/Generated/RTCDataChannelInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCDataChannelInit.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCDataChannelInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit RTCDataChannelInit specification>
+newRTCDataChannelInit :: (MonadDOM m) => m RTCDataChannelInit
+newRTCDataChannelInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-ordered RTCDataChannelInit.ordered specification>
+setOrdered :: (MonadDOM m) => RTCDataChannelInit -> Bool -> m ()
+setOrdered self val = liftDOM (void (self ^. jss "ordered" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-ordered RTCDataChannelInit.ordered specification>
+getOrdered :: (MonadDOM m) => RTCDataChannelInit -> m (Maybe Bool)
+getOrdered self = liftDOM (((self ^. js "ordered") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-ordered RTCDataChannelInit.ordered specification>
+getOrderedUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannelInit -> m Bool
+getOrderedUnsafe self = liftDOM ((((self ^. js "ordered") >>= 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 (((self ^. js "ordered") >>= valToBool))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-maxpacketlifetime RTCDataChannelInit.maxPacketLifeTime specification>
+setMaxPacketLifeTime :: (MonadDOM m) => RTCDataChannelInit -> Word -> m ()
+setMaxPacketLifeTime self val = liftDOM (void (self ^. jss "maxPacketLifeTime" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-maxpacketlifetime RTCDataChannelInit.maxPacketLifeTime specification>
+getMaxPacketLifeTime :: (MonadDOM m) => RTCDataChannelInit -> m (Maybe Word)
+getMaxPacketLifeTime self = liftDOM (((self ^. js "maxPacketLifeTime") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-maxpacketlifetime RTCDataChannelInit.maxPacketLifeTime specification>
+getMaxPacketLifeTimeUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannelInit -> m Word
+getMaxPacketLifeTimeUnsafe self = liftDOM ((((self ^. js "maxPacketLifeTime") >>= 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 ((P.round <$> ((self ^. js "maxPacketLifeTime") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-maxretransmits RTCDataChannelInit.maxRetransmits specification>
+setMaxRetransmits :: (MonadDOM m) => RTCDataChannelInit -> Word -> m ()
+setMaxRetransmits self val = liftDOM (void (self ^. jss "maxRetransmits" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-maxretransmits RTCDataChannelInit.maxRetransmits specification>
+getMaxRetransmits :: (MonadDOM m) => RTCDataChannelInit -> m (Maybe Word)
+getMaxRetransmits self = liftDOM (((self ^. js "maxRetransmits") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-maxretransmits RTCDataChannelInit.maxRetransmits specification>
+getMaxRetransmitsUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannelInit -> m Word
+getMaxRetransmitsUnsafe self = liftDOM ((((self ^. js "maxRetransmits") >>= 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 ((P.round <$> ((self ^. js "maxRetransmits") >>= valToNumber)))
+
+-- | <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 (self ^. jss "protocol" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-protocol RTCDataChannelInit.protocol specification>
+getProtocol :: (MonadDOM m, FromJSString result) => RTCDataChannelInit -> m (Maybe result)
+getProtocol self = liftDOM (((self ^. js "protocol") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-protocol RTCDataChannelInit.protocol specification>
+getProtocolUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCDataChannelInit -> m result
+getProtocolUnsafe self = liftDOM ((((self ^. js "protocol") >>= fromMaybeJSString) >>= 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 (((self ^. js "protocol") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-negotiated RTCDataChannelInit.negotiated specification>
+setNegotiated :: (MonadDOM m) => RTCDataChannelInit -> Bool -> m ()
+setNegotiated self val = liftDOM (void (self ^. jss "negotiated" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-negotiated RTCDataChannelInit.negotiated specification>
+getNegotiated :: (MonadDOM m) => RTCDataChannelInit -> m (Maybe Bool)
+getNegotiated self = liftDOM (((self ^. js "negotiated") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-negotiated RTCDataChannelInit.negotiated specification>
+getNegotiatedUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannelInit -> m Bool
+getNegotiatedUnsafe self = liftDOM ((((self ^. js "negotiated") >>= 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 (((self ^. js "negotiated") >>= valToBool))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-id RTCDataChannelInit.id specification>
+setId :: (MonadDOM m) => RTCDataChannelInit -> Word -> m ()
+setId self val = liftDOM (void (self ^. jss "id" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-id RTCDataChannelInit.id specification>
+getId :: (MonadDOM m) => RTCDataChannelInit -> m (Maybe Word)
+getId self = liftDOM (((self ^. js "id") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdatachannelinit-id RTCDataChannelInit.id specification>
+getIdUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannelInit -> m Word
+getIdUnsafe self = liftDOM ((((self ^. js "id") >>= 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 ((P.round <$> ((self ^. js "id") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcdatachannelinit-priority RTCDataChannelInit.priority specification>
+setPriority :: (MonadDOM m) => RTCDataChannelInit -> RTCPriorityType -> m ()
+setPriority self val = liftDOM (void (self ^. jss "priority" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcdatachannelinit-priority RTCDataChannelInit.priority specification>
+getPriority :: (MonadDOM m) => RTCDataChannelInit -> m (Maybe RTCPriorityType)
+getPriority self = liftDOM (((self ^. js "priority") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcdatachannelinit-priority RTCDataChannelInit.priority specification>
+getPriorityUnsafe :: (MonadDOM m, HasCallStack) => RTCDataChannelInit -> m RTCPriorityType
+getPriorityUnsafe self = liftDOM ((((self ^. js "priority") >>= 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 (((self ^. js "priority") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCDtlsFingerprint.hs b/src/JSDOM/Generated/RTCDtlsFingerprint.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCDtlsFingerprint.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCDtlsFingerprint
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtlsfingerprint RTCDtlsFingerprint specification>
+newRTCDtlsFingerprint :: (MonadDOM m) => m RTCDtlsFingerprint
+newRTCDtlsFingerprint = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "algorithm" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtlsfingerprint-algorithm RTCDtlsFingerprint.algorithm specification>
+getAlgorithm :: (MonadDOM m, FromJSString result) => RTCDtlsFingerprint -> m (Maybe result)
+getAlgorithm self = liftDOM (((self ^. js "algorithm") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtlsfingerprint-algorithm RTCDtlsFingerprint.algorithm specification>
+getAlgorithmUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCDtlsFingerprint -> m result
+getAlgorithmUnsafe self = liftDOM ((((self ^. js "algorithm") >>= fromMaybeJSString) >>= 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 (((self ^. js "algorithm") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "value" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtlsfingerprint-value RTCDtlsFingerprint.value specification>
+getValue :: (MonadDOM m, FromJSString result) => RTCDtlsFingerprint -> m (Maybe result)
+getValue self = liftDOM (((self ^. js "value") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcdtlsfingerprint-value RTCDtlsFingerprint.value specification>
+getValueUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCDtlsFingerprint -> m result
+getValueUnsafe self = liftDOM ((((self ^. js "value") >>= fromMaybeJSString) >>= 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 (((self ^. js "value") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCDtlsTransport.hs b/src/JSDOM/Generated/RTCDtlsTransport.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCDtlsTransport.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCDtlsTransport
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDtlsTransport/getRemoteCertificates MDN RTCDtlsTransport.getRemoteCertificates documentation>
+getRemoteCertificates :: (MonadDOM m) => RTCDtlsTransport -> m [ArrayBuffer]
+getRemoteCertificates self = liftDOM (((self ^. jsf "getRemoteCertificates" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDtlsTransport/getRemoteCertificates MDN RTCDtlsTransport.getRemoteCertificates documentation>
+getRemoteCertificates_ :: (MonadDOM m) => RTCDtlsTransport -> m ()
+getRemoteCertificates_ self = liftDOM (void (self ^. jsf "getRemoteCertificates" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDtlsTransport/iceTransport MDN RTCDtlsTransport.iceTransport documentation>
+getIceTransport :: (MonadDOM m) => RTCDtlsTransport -> m RTCIceTransport
+getIceTransport self = liftDOM (((self ^. js "iceTransport") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCDtlsTransport/state MDN RTCDtlsTransport.state documentation>
+getState :: (MonadDOM m) => RTCDtlsTransport -> m RTCDtlsTransportState
+getState self = liftDOM (((self ^. js "state") >>= 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/JSDOM/Generated/RTCEncodedAudioFrame.hs b/src/JSDOM/Generated/RTCEncodedAudioFrame.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCEncodedAudioFrame.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module JSDOM.Generated.RTCEncodedAudioFrame
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedAudioFrame/RTCEncodedAudioFrame MDN RTCEncodedAudioFrame. documentation>
+newRTCEncodedAudioFrame :: (MonadDOM m) => RTCEncodedAudioFrame -> Maybe RTCEncodedAudioFrameOptions -> m RTCEncodedAudioFrame
+newRTCEncodedAudioFrame originalFrame options = liftDOM (((new (jsg "RTCEncodedAudioFrame") [toJSVal originalFrame, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedAudioFrame/getMetadata MDN RTCEncodedAudioFrame.getMetadata documentation>
+getMetadata :: (MonadDOM m) => RTCEncodedAudioFrame -> m RTCEncodedAudioFrameMetadata
+getMetadata self = liftDOM (((self ^. jsf "getMetadata" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedAudioFrame/getMetadata MDN RTCEncodedAudioFrame.getMetadata documentation>
+getMetadata_ :: (MonadDOM m) => RTCEncodedAudioFrame -> m ()
+getMetadata_ self = liftDOM (void (self ^. jsf "getMetadata" ()))
+
+-- | <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 (self ^. jss "data" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedAudioFrame/data MDN RTCEncodedAudioFrame.data documentation>
+getData :: (MonadDOM m) => RTCEncodedAudioFrame -> m ArrayBuffer
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCEncodedAudioFrameMetadata.hs b/src/JSDOM/Generated/RTCEncodedAudioFrameMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCEncodedAudioFrameMetadata.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module JSDOM.Generated.RTCEncodedAudioFrameMetadata
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dictdef-rtcencodedaudioframemetadata RTCEncodedAudioFrameMetadata specification>
+newRTCEncodedAudioFrameMetadata :: (MonadDOM m) => m RTCEncodedAudioFrameMetadata
+newRTCEncodedAudioFrameMetadata = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-sequencenumber RTCEncodedAudioFrameMetadata.sequenceNumber specification>
+setSequenceNumber :: (MonadDOM m) => RTCEncodedAudioFrameMetadata -> Int -> m ()
+setSequenceNumber self val = liftDOM (void (self ^. jss "sequenceNumber" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-sequencenumber RTCEncodedAudioFrameMetadata.sequenceNumber specification>
+getSequenceNumber :: (MonadDOM m) => RTCEncodedAudioFrameMetadata -> m (Maybe Int)
+getSequenceNumber self = liftDOM (((self ^. js "sequenceNumber") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-sequencenumber RTCEncodedAudioFrameMetadata.sequenceNumber specification>
+getSequenceNumberUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedAudioFrameMetadata -> m Int
+getSequenceNumberUnsafe self = liftDOM ((((self ^. js "sequenceNumber") >>= 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 ((P.round <$> ((self ^. js "sequenceNumber") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-audiolevel RTCEncodedAudioFrameMetadata.audioLevel specification>
+setAudioLevel :: (MonadDOM m) => RTCEncodedAudioFrameMetadata -> Double -> m ()
+setAudioLevel self val = liftDOM (void (self ^. jss "audioLevel" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-audiolevel RTCEncodedAudioFrameMetadata.audioLevel specification>
+getAudioLevel :: (MonadDOM m) => RTCEncodedAudioFrameMetadata -> m (Maybe Double)
+getAudioLevel self = liftDOM (((self ^. js "audioLevel") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframemetadata-audiolevel RTCEncodedAudioFrameMetadata.audioLevel specification>
+getAudioLevelUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedAudioFrameMetadata -> m Double
+getAudioLevelUnsafe self = liftDOM ((((self ^. js "audioLevel") >>= 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 (((self ^. js "audioLevel") >>= valToNumber))
diff --git a/src/JSDOM/Generated/RTCEncodedAudioFrameOptions.hs b/src/JSDOM/Generated/RTCEncodedAudioFrameOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCEncodedAudioFrameOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module JSDOM.Generated.RTCEncodedAudioFrameOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dictdef-rtcencodedaudioframeoptions RTCEncodedAudioFrameOptions specification>
+newRTCEncodedAudioFrameOptions :: (MonadDOM m) => m RTCEncodedAudioFrameOptions
+newRTCEncodedAudioFrameOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframeoptions-metadata RTCEncodedAudioFrameOptions.metadata specification>
+setMetadata :: (MonadDOM m) => RTCEncodedAudioFrameOptions -> RTCEncodedAudioFrameMetadata -> m ()
+setMetadata self val = liftDOM (void (self ^. jss "metadata" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframeoptions-metadata RTCEncodedAudioFrameOptions.metadata specification>
+getMetadata :: (MonadDOM m) => RTCEncodedAudioFrameOptions -> m (Maybe RTCEncodedAudioFrameMetadata)
+getMetadata self = liftDOM (((self ^. js "metadata") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedaudioframeoptions-metadata RTCEncodedAudioFrameOptions.metadata specification>
+getMetadataUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedAudioFrameOptions -> m RTCEncodedAudioFrameMetadata
+getMetadataUnsafe self = liftDOM ((((self ^. js "metadata") >>= 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 (((self ^. js "metadata") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCEncodedFrameMetadata.hs b/src/JSDOM/Generated/RTCEncodedFrameMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCEncodedFrameMetadata.hs
@@ -0,0 +1,148 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module JSDOM.Generated.RTCEncodedFrameMetadata
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dictdef-rtcencodedframemetadata RTCEncodedFrameMetadata specification>
+newRTCEncodedFrameMetadata :: (MonadDOM m) => m RTCEncodedFrameMetadata
+newRTCEncodedFrameMetadata = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toRTCEncodedFrameMetadata self) ^. jss "synchronizationSource" (toJSVal val)))
+
+-- | <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 ((((Types.toRTCEncodedFrameMetadata self) ^. js "synchronizationSource") >>= 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 (((((Types.toRTCEncodedFrameMetadata self) ^. js "synchronizationSource") >>= 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 ((P.round <$> (((Types.toRTCEncodedFrameMetadata self) ^. js "synchronizationSource") >>= valToNumber)))
+
+-- | <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 ((Types.toRTCEncodedFrameMetadata self) ^. jss "payloadType" (toJSVal val)))
+
+-- | <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 ((((Types.toRTCEncodedFrameMetadata self) ^. js "payloadType") >>= 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 (((((Types.toRTCEncodedFrameMetadata self) ^. js "payloadType") >>= 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 ((P.round <$> (((Types.toRTCEncodedFrameMetadata self) ^. js "payloadType") >>= valToNumber)))
+
+-- | <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 ((Types.toRTCEncodedFrameMetadata self) ^. jss "contributingSources" (toJSVal val)))
+
+-- | <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 ((((Types.toRTCEncodedFrameMetadata self) ^. js "contributingSources") >>= 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 (((((Types.toRTCEncodedFrameMetadata self) ^. js "contributingSources") >>= 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 ((((Types.toRTCEncodedFrameMetadata self) ^. js "contributingSources") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toRTCEncodedFrameMetadata self) ^. jss "rtpTimestamp" (toJSVal val)))
+
+-- | <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 ((((Types.toRTCEncodedFrameMetadata self) ^. js "rtpTimestamp") >>= 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 (((((Types.toRTCEncodedFrameMetadata self) ^. js "rtpTimestamp") >>= 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 ((P.round <$> (((Types.toRTCEncodedFrameMetadata self) ^. js "rtpTimestamp") >>= valToNumber)))
+
+-- | <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 ((Types.toRTCEncodedFrameMetadata self) ^. jss "receiveTime" (toJSVal val)))
+
+-- | <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 ((((Types.toRTCEncodedFrameMetadata self) ^. js "receiveTime") >>= 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 (((((Types.toRTCEncodedFrameMetadata self) ^. js "receiveTime") >>= 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 ((((Types.toRTCEncodedFrameMetadata self) ^. js "receiveTime") >>= valToNumber))
+
+-- | <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 ((Types.toRTCEncodedFrameMetadata self) ^. jss "captureTime" (toJSVal val)))
+
+-- | <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 ((((Types.toRTCEncodedFrameMetadata self) ^. js "captureTime") >>= 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 (((((Types.toRTCEncodedFrameMetadata self) ^. js "captureTime") >>= 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 ((((Types.toRTCEncodedFrameMetadata self) ^. js "captureTime") >>= valToNumber))
+
+-- | <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 ((Types.toRTCEncodedFrameMetadata self) ^. jss "senderCaptureTimeOffset" (toJSVal val)))
+
+-- | <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 ((((Types.toRTCEncodedFrameMetadata self) ^. js "senderCaptureTimeOffset") >>= 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 (((((Types.toRTCEncodedFrameMetadata self) ^. js "senderCaptureTimeOffset") >>= 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 ((((Types.toRTCEncodedFrameMetadata self) ^. js "senderCaptureTimeOffset") >>= valToNumber))
+
+-- | <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 ((Types.toRTCEncodedFrameMetadata self) ^. jss "mimeType" (toJSVal val)))
+
+-- | <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 ((((Types.toRTCEncodedFrameMetadata self) ^. js "mimeType") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toRTCEncodedFrameMetadata self) ^. js "mimeType") >>= fromMaybeJSString) >>= 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 ((((Types.toRTCEncodedFrameMetadata self) ^. js "mimeType") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCEncodedVideoFrame.hs b/src/JSDOM/Generated/RTCEncodedVideoFrame.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCEncodedVideoFrame.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module JSDOM.Generated.RTCEncodedVideoFrame
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedVideoFrame/RTCEncodedVideoFrame MDN RTCEncodedVideoFrame. documentation>
+newRTCEncodedVideoFrame :: (MonadDOM m) => RTCEncodedVideoFrame -> Maybe RTCEncodedVideoFrameOptions -> m RTCEncodedVideoFrame
+newRTCEncodedVideoFrame originalFrame options = liftDOM (((new (jsg "RTCEncodedVideoFrame") [toJSVal originalFrame, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedVideoFrame/getMetadata MDN RTCEncodedVideoFrame.getMetadata documentation>
+getMetadata :: (MonadDOM m) => RTCEncodedVideoFrame -> m RTCEncodedVideoFrameMetadata
+getMetadata self = liftDOM (((self ^. jsf "getMetadata" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedVideoFrame/getMetadata MDN RTCEncodedVideoFrame.getMetadata documentation>
+getMetadata_ :: (MonadDOM m) => RTCEncodedVideoFrame -> m ()
+getMetadata_ self = liftDOM (void (self ^. jsf "getMetadata" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedVideoFrame/type MDN RTCEncodedVideoFrame.type documentation>
+getType :: (MonadDOM m) => RTCEncodedVideoFrame -> m EncodedVideoChunkType
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "data" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCEncodedVideoFrame/data MDN RTCEncodedVideoFrame.data documentation>
+getData :: (MonadDOM m) => RTCEncodedVideoFrame -> m ArrayBuffer
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCEncodedVideoFrameMetadata.hs b/src/JSDOM/Generated/RTCEncodedVideoFrameMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCEncodedVideoFrameMetadata.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module JSDOM.Generated.RTCEncodedVideoFrameMetadata
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dictdef-rtcencodedvideoframemetadata RTCEncodedVideoFrameMetadata specification>
+newRTCEncodedVideoFrameMetadata :: (MonadDOM m) => m RTCEncodedVideoFrameMetadata
+newRTCEncodedVideoFrameMetadata = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-frameid RTCEncodedVideoFrameMetadata.frameId specification>
+setFrameId :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> Word53 -> m ()
+setFrameId self val = liftDOM (void (self ^. jss "frameId" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-frameid RTCEncodedVideoFrameMetadata.frameId specification>
+getFrameId :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m (Maybe Word53)
+getFrameId self = liftDOM (((self ^. js "frameId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-frameid RTCEncodedVideoFrameMetadata.frameId specification>
+getFrameIdUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedVideoFrameMetadata -> m Word53
+getFrameIdUnsafe self = liftDOM ((((self ^. js "frameId") >>= 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 (((self ^. js "frameId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-dependencies RTCEncodedVideoFrameMetadata.dependencies specification>
+setDependencies :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> [Word53] -> m ()
+setDependencies self val = liftDOM (void (self ^. jss "dependencies" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-dependencies RTCEncodedVideoFrameMetadata.dependencies specification>
+getDependencies :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m (Maybe [Word53])
+getDependencies self = liftDOM (((self ^. js "dependencies") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-dependencies RTCEncodedVideoFrameMetadata.dependencies specification>
+getDependenciesUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedVideoFrameMetadata -> m [Word53]
+getDependenciesUnsafe self = liftDOM ((((self ^. js "dependencies") >>= 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 (((self ^. js "dependencies") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-width RTCEncodedVideoFrameMetadata.width specification>
+setWidth :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> Word -> m ()
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-width RTCEncodedVideoFrameMetadata.width specification>
+getWidth :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m (Maybe Word)
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-width RTCEncodedVideoFrameMetadata.width specification>
+getWidthUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedVideoFrameMetadata -> m Word
+getWidthUnsafe self = liftDOM ((((self ^. js "width") >>= 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 ((P.round <$> ((self ^. js "width") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-height RTCEncodedVideoFrameMetadata.height specification>
+setHeight :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> Word -> m ()
+setHeight self val = liftDOM (void (self ^. jss "height" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-height RTCEncodedVideoFrameMetadata.height specification>
+getHeight :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m (Maybe Word)
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-height RTCEncodedVideoFrameMetadata.height specification>
+getHeightUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedVideoFrameMetadata -> m Word
+getHeightUnsafe self = liftDOM ((((self ^. js "height") >>= 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 ((P.round <$> ((self ^. js "height") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-spatialindex RTCEncodedVideoFrameMetadata.spatialIndex specification>
+setSpatialIndex :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> Word -> m ()
+setSpatialIndex self val = liftDOM (void (self ^. jss "spatialIndex" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-spatialindex RTCEncodedVideoFrameMetadata.spatialIndex specification>
+getSpatialIndex :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m (Maybe Word)
+getSpatialIndex self = liftDOM (((self ^. js "spatialIndex") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-spatialindex RTCEncodedVideoFrameMetadata.spatialIndex specification>
+getSpatialIndexUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedVideoFrameMetadata -> m Word
+getSpatialIndexUnsafe self = liftDOM ((((self ^. js "spatialIndex") >>= 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 ((P.round <$> ((self ^. js "spatialIndex") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-temporalindex RTCEncodedVideoFrameMetadata.temporalIndex specification>
+setTemporalIndex :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> Word -> m ()
+setTemporalIndex self val = liftDOM (void (self ^. jss "temporalIndex" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-temporalindex RTCEncodedVideoFrameMetadata.temporalIndex specification>
+getTemporalIndex :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m (Maybe Word)
+getTemporalIndex self = liftDOM (((self ^. js "temporalIndex") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-temporalindex RTCEncodedVideoFrameMetadata.temporalIndex specification>
+getTemporalIndexUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedVideoFrameMetadata -> m Word
+getTemporalIndexUnsafe self = liftDOM ((((self ^. js "temporalIndex") >>= 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 ((P.round <$> ((self ^. js "temporalIndex") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-timestamp RTCEncodedVideoFrameMetadata.timestamp specification>
+setTimestamp :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> Int53 -> m ()
+setTimestamp self val = liftDOM (void (self ^. jss "timestamp" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-timestamp RTCEncodedVideoFrameMetadata.timestamp specification>
+getTimestamp :: (MonadDOM m) => RTCEncodedVideoFrameMetadata -> m (Maybe Int53)
+getTimestamp self = liftDOM (((self ^. js "timestamp") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframemetadata-timestamp RTCEncodedVideoFrameMetadata.timestamp specification>
+getTimestampUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedVideoFrameMetadata -> m Int53
+getTimestampUnsafe self = liftDOM ((((self ^. js "timestamp") >>= 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 (((self ^. js "timestamp") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCEncodedVideoFrameOptions.hs b/src/JSDOM/Generated/RTCEncodedVideoFrameOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCEncodedVideoFrameOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module JSDOM.Generated.RTCEncodedVideoFrameOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dictdef-rtcencodedvideoframeoptions RTCEncodedVideoFrameOptions specification>
+newRTCEncodedVideoFrameOptions :: (MonadDOM m) => m RTCEncodedVideoFrameOptions
+newRTCEncodedVideoFrameOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframeoptions-metadata RTCEncodedVideoFrameOptions.metadata specification>
+setMetadata :: (MonadDOM m) => RTCEncodedVideoFrameOptions -> RTCEncodedVideoFrameMetadata -> m ()
+setMetadata self val = liftDOM (void (self ^. jss "metadata" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframeoptions-metadata RTCEncodedVideoFrameOptions.metadata specification>
+getMetadata :: (MonadDOM m) => RTCEncodedVideoFrameOptions -> m (Maybe RTCEncodedVideoFrameMetadata)
+getMetadata self = liftDOM (((self ^. js "metadata") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-rtcencodedvideoframeoptions-metadata RTCEncodedVideoFrameOptions.metadata specification>
+getMetadataUnsafe :: (MonadDOM m, HasCallStack) => RTCEncodedVideoFrameOptions -> m RTCEncodedVideoFrameMetadata
+getMetadataUnsafe self = liftDOM ((((self ^. js "metadata") >>= 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 (((self ^. js "metadata") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCError.hs b/src/JSDOM/Generated/RTCError.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCError.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCError
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "RTCError") [toJSVal init, P.maybe (P.return jsUndefined) toJSVal message]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/errorDetail MDN RTCError.errorDetail documentation>
+getErrorDetail :: (MonadDOM m) => RTCError -> m RTCErrorDetailType
+getErrorDetail self = liftDOM (((self ^. js "errorDetail") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/sdpLineNumber MDN RTCError.sdpLineNumber documentation>
+getSdpLineNumber :: (MonadDOM m) => RTCError -> m (Maybe Int)
+getSdpLineNumber self = liftDOM (((self ^. js "sdpLineNumber") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/sdpLineNumber MDN RTCError.sdpLineNumber documentation>
+getSdpLineNumberUnsafe :: (MonadDOM m, HasCallStack) => RTCError -> m Int
+getSdpLineNumberUnsafe self = liftDOM ((((self ^. js "sdpLineNumber") >>= 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 ((P.round <$> ((self ^. js "sdpLineNumber") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/sctpCauseCode MDN RTCError.sctpCauseCode documentation>
+getSctpCauseCode :: (MonadDOM m) => RTCError -> m (Maybe Int)
+getSctpCauseCode self = liftDOM (((self ^. js "sctpCauseCode") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/sctpCauseCode MDN RTCError.sctpCauseCode documentation>
+getSctpCauseCodeUnsafe :: (MonadDOM m, HasCallStack) => RTCError -> m Int
+getSctpCauseCodeUnsafe self = liftDOM ((((self ^. js "sctpCauseCode") >>= 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 ((P.round <$> ((self ^. js "sctpCauseCode") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/receivedAlert MDN RTCError.receivedAlert documentation>
+getReceivedAlert :: (MonadDOM m) => RTCError -> m (Maybe Word)
+getReceivedAlert self = liftDOM (((self ^. js "receivedAlert") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/receivedAlert MDN RTCError.receivedAlert documentation>
+getReceivedAlertUnsafe :: (MonadDOM m, HasCallStack) => RTCError -> m Word
+getReceivedAlertUnsafe self = liftDOM ((((self ^. js "receivedAlert") >>= 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 ((P.round <$> ((self ^. js "receivedAlert") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/sentAlert MDN RTCError.sentAlert documentation>
+getSentAlert :: (MonadDOM m) => RTCError -> m (Maybe Word)
+getSentAlert self = liftDOM (((self ^. js "sentAlert") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCError/sentAlert MDN RTCError.sentAlert documentation>
+getSentAlertUnsafe :: (MonadDOM m, HasCallStack) => RTCError -> m Word
+getSentAlertUnsafe self = liftDOM ((((self ^. js "sentAlert") >>= 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 ((P.round <$> ((self ^. js "sentAlert") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/RTCErrorEvent.hs b/src/JSDOM/Generated/RTCErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCErrorEvent.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCErrorEvent
+       (newRTCErrorEvent, getError, RTCErrorEvent(..), gTypeRTCErrorEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "RTCErrorEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCErrorEvent/error MDN RTCErrorEvent.error documentation>
+getError :: (MonadDOM m) => RTCErrorEvent -> m RTCError
+getError self = liftDOM (((self ^. js "error") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCErrorEventInit.hs b/src/JSDOM/Generated/RTCErrorEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCErrorEventInit.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCErrorEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerroreventinit RTCErrorEventInit specification>
+newRTCErrorEventInit :: (MonadDOM m) => RTCError -> m RTCErrorEventInit
+newRTCErrorEventInit error = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "error" (toJSVal error)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerroreventinit-error RTCErrorEventInit.error specification>
+setError :: (MonadDOM m) => RTCErrorEventInit -> RTCError -> m ()
+setError self val = liftDOM (void (self ^. jss "error" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerroreventinit-error RTCErrorEventInit.error specification>
+getError :: (MonadDOM m) => RTCErrorEventInit -> m RTCError
+getError self = liftDOM (((self ^. js "error") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCErrorInit.hs b/src/JSDOM/Generated/RTCErrorInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCErrorInit.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCErrorInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit RTCErrorInit specification>
+newRTCErrorInit :: (MonadDOM m) => RTCErrorDetailType -> m RTCErrorInit
+newRTCErrorInit errorDetail = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "errorDetail" (toJSVal errorDetail)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-errordetail RTCErrorInit.errorDetail specification>
+setErrorDetail :: (MonadDOM m) => RTCErrorInit -> RTCErrorDetailType -> m ()
+setErrorDetail self val = liftDOM (void (self ^. jss "errorDetail" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-errordetail RTCErrorInit.errorDetail specification>
+getErrorDetail :: (MonadDOM m) => RTCErrorInit -> m RTCErrorDetailType
+getErrorDetail self = liftDOM (((self ^. js "errorDetail") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sdplinenumber RTCErrorInit.sdpLineNumber specification>
+setSdpLineNumber :: (MonadDOM m) => RTCErrorInit -> Int -> m ()
+setSdpLineNumber self val = liftDOM (void (self ^. jss "sdpLineNumber" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sdplinenumber RTCErrorInit.sdpLineNumber specification>
+getSdpLineNumber :: (MonadDOM m) => RTCErrorInit -> m (Maybe Int)
+getSdpLineNumber self = liftDOM (((self ^. js "sdpLineNumber") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sdplinenumber RTCErrorInit.sdpLineNumber specification>
+getSdpLineNumberUnsafe :: (MonadDOM m, HasCallStack) => RTCErrorInit -> m Int
+getSdpLineNumberUnsafe self = liftDOM ((((self ^. js "sdpLineNumber") >>= 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 ((P.round <$> ((self ^. js "sdpLineNumber") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sctpcausecode RTCErrorInit.sctpCauseCode specification>
+setSctpCauseCode :: (MonadDOM m) => RTCErrorInit -> Int -> m ()
+setSctpCauseCode self val = liftDOM (void (self ^. jss "sctpCauseCode" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sctpcausecode RTCErrorInit.sctpCauseCode specification>
+getSctpCauseCode :: (MonadDOM m) => RTCErrorInit -> m (Maybe Int)
+getSctpCauseCode self = liftDOM (((self ^. js "sctpCauseCode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sctpcausecode RTCErrorInit.sctpCauseCode specification>
+getSctpCauseCodeUnsafe :: (MonadDOM m, HasCallStack) => RTCErrorInit -> m Int
+getSctpCauseCodeUnsafe self = liftDOM ((((self ^. js "sctpCauseCode") >>= 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 ((P.round <$> ((self ^. js "sctpCauseCode") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-receivedalert RTCErrorInit.receivedAlert specification>
+setReceivedAlert :: (MonadDOM m) => RTCErrorInit -> Word -> m ()
+setReceivedAlert self val = liftDOM (void (self ^. jss "receivedAlert" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-receivedalert RTCErrorInit.receivedAlert specification>
+getReceivedAlert :: (MonadDOM m) => RTCErrorInit -> m (Maybe Word)
+getReceivedAlert self = liftDOM (((self ^. js "receivedAlert") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-receivedalert RTCErrorInit.receivedAlert specification>
+getReceivedAlertUnsafe :: (MonadDOM m, HasCallStack) => RTCErrorInit -> m Word
+getReceivedAlertUnsafe self = liftDOM ((((self ^. js "receivedAlert") >>= 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 ((P.round <$> ((self ^. js "receivedAlert") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sentalert RTCErrorInit.sentAlert specification>
+setSentAlert :: (MonadDOM m) => RTCErrorInit -> Word -> m ()
+setSentAlert self val = liftDOM (void (self ^. jss "sentAlert" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sentalert RTCErrorInit.sentAlert specification>
+getSentAlert :: (MonadDOM m) => RTCErrorInit -> m (Maybe Word)
+getSentAlert self = liftDOM (((self ^. js "sentAlert") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcerrorinit-sentalert RTCErrorInit.sentAlert specification>
+getSentAlertUnsafe :: (MonadDOM m, HasCallStack) => RTCErrorInit -> m Word
+getSentAlertUnsafe self = liftDOM ((((self ^. js "sentAlert") >>= 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 ((P.round <$> ((self ^. js "sentAlert") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webrtc-identity/#dom-rtcerrorinit-httprequeststatuscode RTCErrorInit.httpRequestStatusCode specification>
+setHttpRequestStatusCode :: (MonadDOM m) => RTCErrorInit -> Int -> m ()
+setHttpRequestStatusCode self val = liftDOM (void (self ^. jss "httpRequestStatusCode" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-identity/#dom-rtcerrorinit-httprequeststatuscode RTCErrorInit.httpRequestStatusCode specification>
+getHttpRequestStatusCode :: (MonadDOM m) => RTCErrorInit -> m (Maybe Int)
+getHttpRequestStatusCode self = liftDOM (((self ^. js "httpRequestStatusCode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-identity/#dom-rtcerrorinit-httprequeststatuscode RTCErrorInit.httpRequestStatusCode specification>
+getHttpRequestStatusCodeUnsafe :: (MonadDOM m, HasCallStack) => RTCErrorInit -> m Int
+getHttpRequestStatusCodeUnsafe self = liftDOM ((((self ^. js "httpRequestStatusCode") >>= 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 ((P.round <$> ((self ^. js "httpRequestStatusCode") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/RTCIceCandidate.hs b/src/JSDOM/Generated/RTCIceCandidate.hs
--- a/src/JSDOM/Generated/RTCIceCandidate.hs
+++ b/src/JSDOM/Generated/RTCIceCandidate.hs
@@ -1,79 +1,188 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module JSDOM.Generated.RTCIceCandidate
-       (newRTCIceCandidate, getCandidate, getSdpMid, getSdpMidUnsafe,
-        getSdpMidUnchecked, getSdpMLineIndex, getSdpMLineIndexUnsafe,
-        getSdpMLineIndexUnchecked, RTCIceCandidate(..),
-        gTypeRTCIceCandidate)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate Mozilla RTCIceCandidate documentation> 
-newRTCIceCandidate ::
-                   (MonadDOM m) => RTCIceCandidateInit -> m RTCIceCandidate
-newRTCIceCandidate candidateInitDict
-  = liftDOM
-      (RTCIceCandidate <$>
-         new (jsg "RTCIceCandidate") [toJSVal candidateInitDict])
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/RTCIceCandidate MDN RTCIceCandidate. documentation>
+newRTCIceCandidate :: (MonadDOM m) => Maybe RTCLocalIceCandidateInit -> m RTCIceCandidate
+newRTCIceCandidate candidateInitDict = liftDOM (((new (jsg "RTCIceCandidate") [P.maybe (P.return jsUndefined) toJSVal candidateInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.candidate Mozilla RTCIceCandidate.candidate documentation> 
-getCandidate ::
-             (MonadDOM m, FromJSString result) => RTCIceCandidate -> m result
-getCandidate self
-  = liftDOM ((self ^. js "candidate") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/toJSON MDN RTCIceCandidate.toJSON documentation>
+toJSON :: (MonadDOM m) => RTCIceCandidate -> m RTCIceCandidateInit
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMid Mozilla RTCIceCandidate.sdpMid documentation> 
-getSdpMid ::
-          (MonadDOM m, FromJSString result) =>
-            RTCIceCandidate -> m (Maybe result)
-getSdpMid self
-  = liftDOM ((self ^. js "sdpMid") >>= fromMaybeJSString)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/toJSON MDN RTCIceCandidate.toJSON documentation>
+toJSON_ :: (MonadDOM m) => RTCIceCandidate -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMid Mozilla RTCIceCandidate.sdpMid documentation> 
-getSdpMidUnsafe ::
-                (MonadDOM m, HasCallStack, FromJSString result) =>
-                  RTCIceCandidate -> m result
-getSdpMidUnsafe self
-  = liftDOM
-      (((self ^. js "sdpMid") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/candidate MDN RTCIceCandidate.candidate documentation>
+getCandidate :: (MonadDOM m, FromJSString result) => RTCIceCandidate -> m result
+getCandidate self = liftDOM (((self ^. js "candidate") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMid Mozilla RTCIceCandidate.sdpMid documentation> 
-getSdpMidUnchecked ::
-                   (MonadDOM m, FromJSString result) => RTCIceCandidate -> m result
-getSdpMidUnchecked self
-  = liftDOM ((self ^. js "sdpMid") >>= fromJSValUnchecked)
+-- | <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 (((self ^. js "sdpMid") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMLineIndex Mozilla RTCIceCandidate.sdpMLineIndex documentation> 
-getSdpMLineIndex ::
-                 (MonadDOM m) => RTCIceCandidate -> m (Maybe Word)
-getSdpMLineIndex self
-  = liftDOM ((self ^. js "sdpMLineIndex") >>= fromJSVal)
+-- | <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 ((((self ^. js "sdpMid") >>= fromMaybeJSString) >>= 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 ::
-                       (MonadDOM m, HasCallStack) => RTCIceCandidate -> m Word
-getSdpMLineIndexUnsafe self
-  = liftDOM
-      (((self ^. js "sdpMLineIndex") >>= fromJSVal) >>=
-         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 (((self ^. js "sdpMid") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMLineIndex Mozilla RTCIceCandidate.sdpMLineIndex documentation> 
-getSdpMLineIndexUnchecked ::
-                          (MonadDOM m) => RTCIceCandidate -> m Word
-getSdpMLineIndexUnchecked self
-  = liftDOM ((self ^. js "sdpMLineIndex") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/sdpMLineIndex MDN RTCIceCandidate.sdpMLineIndex documentation>
+getSdpMLineIndex :: (MonadDOM m) => RTCIceCandidate -> m (Maybe Word)
+getSdpMLineIndex self = liftDOM (((self ^. js "sdpMLineIndex") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/sdpMLineIndex MDN RTCIceCandidate.sdpMLineIndex documentation>
+getSdpMLineIndexUnsafe :: (MonadDOM m, HasCallStack) => RTCIceCandidate -> m Word
+getSdpMLineIndexUnsafe self = liftDOM ((((self ^. js "sdpMLineIndex") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/sdpMLineIndex MDN RTCIceCandidate.sdpMLineIndex documentation>
+getSdpMLineIndexUnchecked :: (MonadDOM m) => RTCIceCandidate -> m Word
+getSdpMLineIndexUnchecked self = liftDOM ((P.round <$> ((self ^. js "sdpMLineIndex") >>= valToNumber)))
+
+-- | <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 (((self ^. js "foundation") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "foundation") >>= fromMaybeJSString) >>= 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 (((self ^. js "foundation") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/component MDN RTCIceCandidate.component documentation>
+getComponent :: (MonadDOM m) => RTCIceCandidate -> m (Maybe RTCIceComponent)
+getComponent self = liftDOM (((self ^. js "component") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/component MDN RTCIceCandidate.component documentation>
+getComponentUnsafe :: (MonadDOM m, HasCallStack) => RTCIceCandidate -> m RTCIceComponent
+getComponentUnsafe self = liftDOM ((((self ^. js "component") >>= 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 (((self ^. js "component") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/priority MDN RTCIceCandidate.priority documentation>
+getPriority :: (MonadDOM m) => RTCIceCandidate -> m (Maybe Word)
+getPriority self = liftDOM (((self ^. js "priority") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/priority MDN RTCIceCandidate.priority documentation>
+getPriorityUnsafe :: (MonadDOM m, HasCallStack) => RTCIceCandidate -> m Word
+getPriorityUnsafe self = liftDOM ((((self ^. js "priority") >>= 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 ((P.round <$> ((self ^. js "priority") >>= valToNumber)))
+
+-- | <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 (((self ^. js "address") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "address") >>= fromMaybeJSString) >>= 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 (((self ^. js "address") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/protocol MDN RTCIceCandidate.protocol documentation>
+getProtocol :: (MonadDOM m) => RTCIceCandidate -> m (Maybe RTCIceProtocol)
+getProtocol self = liftDOM (((self ^. js "protocol") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/protocol MDN RTCIceCandidate.protocol documentation>
+getProtocolUnsafe :: (MonadDOM m, HasCallStack) => RTCIceCandidate -> m RTCIceProtocol
+getProtocolUnsafe self = liftDOM ((((self ^. js "protocol") >>= 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 (((self ^. js "protocol") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/port MDN RTCIceCandidate.port documentation>
+getPort :: (MonadDOM m) => RTCIceCandidate -> m (Maybe Word)
+getPort self = liftDOM (((self ^. js "port") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/port MDN RTCIceCandidate.port documentation>
+getPortUnsafe :: (MonadDOM m, HasCallStack) => RTCIceCandidate -> m Word
+getPortUnsafe self = liftDOM ((((self ^. js "port") >>= 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 ((P.round <$> ((self ^. js "port") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/type MDN RTCIceCandidate.type documentation>
+getType :: (MonadDOM m) => RTCIceCandidate -> m (Maybe RTCIceCandidateType)
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/type MDN RTCIceCandidate.type documentation>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => RTCIceCandidate -> m RTCIceCandidateType
+getTypeUnsafe self = liftDOM ((((self ^. js "type") >>= 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 (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/tcpType MDN RTCIceCandidate.tcpType documentation>
+getTcpType :: (MonadDOM m) => RTCIceCandidate -> m (Maybe RTCIceTcpCandidateType)
+getTcpType self = liftDOM (((self ^. js "tcpType") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/tcpType MDN RTCIceCandidate.tcpType documentation>
+getTcpTypeUnsafe :: (MonadDOM m, HasCallStack) => RTCIceCandidate -> m RTCIceTcpCandidateType
+getTcpTypeUnsafe self = liftDOM ((((self ^. js "tcpType") >>= 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 (((self ^. js "tcpType") >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. js "relatedAddress") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "relatedAddress") >>= fromMaybeJSString) >>= 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 (((self ^. js "relatedAddress") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/relatedPort MDN RTCIceCandidate.relatedPort documentation>
+getRelatedPort :: (MonadDOM m) => RTCIceCandidate -> m (Maybe Word)
+getRelatedPort self = liftDOM (((self ^. js "relatedPort") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceCandidate/relatedPort MDN RTCIceCandidate.relatedPort documentation>
+getRelatedPortUnsafe :: (MonadDOM m, HasCallStack) => RTCIceCandidate -> m Word
+getRelatedPortUnsafe self = liftDOM ((((self ^. js "relatedPort") >>= 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 ((P.round <$> ((self ^. js "relatedPort") >>= valToNumber)))
+
+-- | <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 (((self ^. js "usernameFragment") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "usernameFragment") >>= fromMaybeJSString) >>= 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 (((self ^. js "usernameFragment") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCIceCandidateEvent.hs b/src/JSDOM/Generated/RTCIceCandidateEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/RTCIceCandidateEvent.hs
+++ /dev/null
@@ -1,26 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.RTCIceCandidateEvent
-       (getCandidate, RTCIceCandidateEvent(..), gTypeRTCIceCandidateEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateEvent.candidate Mozilla RTCIceCandidateEvent.candidate documentation> 
-getCandidate ::
-             (MonadDOM m) => RTCIceCandidateEvent -> m RTCIceCandidate
-getCandidate self
-  = liftDOM ((self ^. js "candidate") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/RTCIceCandidateInit.hs b/src/JSDOM/Generated/RTCIceCandidateInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCIceCandidateInit.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCIceCandidateInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit RTCIceCandidateInit specification>
+newRTCIceCandidateInit :: (MonadDOM m) => m RTCIceCandidateInit
+newRTCIceCandidateInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toRTCIceCandidateInit self) ^. jss "candidate" (toJSVal val)))
+
+-- | <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 ((((Types.toRTCIceCandidateInit self) ^. js "candidate") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toRTCIceCandidateInit self) ^. js "candidate") >>= fromMaybeJSString) >>= 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 ((((Types.toRTCIceCandidateInit self) ^. js "candidate") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toRTCIceCandidateInit self) ^. jss "sdpMid" (toJSVal val)))
+
+-- | <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 ((((Types.toRTCIceCandidateInit self) ^. js "sdpMid") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toRTCIceCandidateInit self) ^. js "sdpMid") >>= fromMaybeJSString) >>= 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 ((((Types.toRTCIceCandidateInit self) ^. js "sdpMid") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toRTCIceCandidateInit self) ^. jss "sdpMLineIndex" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcicecandidateinit-sdpmlineindex RTCIceCandidateInit.sdpMLineIndex specification>
+getSdpMLineIndex :: (MonadDOM m, IsRTCIceCandidateInit self) => self -> m (Maybe Word)
+getSdpMLineIndex self = liftDOM ((((Types.toRTCIceCandidateInit self) ^. js "sdpMLineIndex") >>= 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 (((((Types.toRTCIceCandidateInit self) ^. js "sdpMLineIndex") >>= 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 ((P.round <$> (((Types.toRTCIceCandidateInit self) ^. js "sdpMLineIndex") >>= valToNumber)))
+
+-- | <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 ((Types.toRTCIceCandidateInit self) ^. jss "usernameFragment" (toJSVal val)))
+
+-- | <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 ((((Types.toRTCIceCandidateInit self) ^. js "usernameFragment") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toRTCIceCandidateInit self) ^. js "usernameFragment") >>= fromMaybeJSString) >>= 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 ((((Types.toRTCIceCandidateInit self) ^. js "usernameFragment") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCIceCandidatePair.hs b/src/JSDOM/Generated/RTCIceCandidatePair.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCIceCandidatePair.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCIceCandidatePair
+       (RTCIceCandidatePair(..), gTypeRTCIceCandidatePair)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/RTCIceServer.hs b/src/JSDOM/Generated/RTCIceServer.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCIceServer.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCIceServer
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtciceserver RTCIceServer specification>
+newRTCIceServer :: (MonadDOM m, IsStringOrSequenceString urls) => urls -> m RTCIceServer
+newRTCIceServer urls = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "urls" (toJSVal urls)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "urls" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtciceserver-urls RTCIceServer.urls specification>
+getUrls :: (MonadDOM m) => RTCIceServer -> m StringOrSequenceString
+getUrls self = liftDOM (((self ^. js "urls") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "username" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtciceserver-username RTCIceServer.username specification>
+getUsername :: (MonadDOM m, FromJSString result) => RTCIceServer -> m (Maybe result)
+getUsername self = liftDOM (((self ^. js "username") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtciceserver-username RTCIceServer.username specification>
+getUsernameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCIceServer -> m result
+getUsernameUnsafe self = liftDOM ((((self ^. js "username") >>= fromMaybeJSString) >>= 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 (((self ^. js "username") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "credential" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtciceserver-credential RTCIceServer.credential specification>
+getCredential :: (MonadDOM m, FromJSString result) => RTCIceServer -> m (Maybe result)
+getCredential self = liftDOM (((self ^. js "credential") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtciceserver-credential RTCIceServer.credential specification>
+getCredentialUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCIceServer -> m result
+getCredentialUnsafe self = liftDOM ((((self ^. js "credential") >>= fromMaybeJSString) >>= 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 (((self ^. js "credential") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCIceTransport.hs b/src/JSDOM/Generated/RTCIceTransport.hs
--- a/src/JSDOM/Generated/RTCIceTransport.hs
+++ b/src/JSDOM/Generated/RTCIceTransport.hs
@@ -1,33 +1,60 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module JSDOM.Generated.RTCIceTransport
-       (getState, getGatheringState, RTCIceTransport(..),
-        gTypeRTCIceTransport)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceTransport.state Mozilla RTCIceTransport.state documentation> 
-getState ::
-         (MonadDOM m) => RTCIceTransport -> m RTCIceTransportState
-getState self
-  = liftDOM ((self ^. js "state") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceTransport/getSelectedCandidatePair MDN RTCIceTransport.getSelectedCandidatePair documentation>
+getSelectedCandidatePair :: (MonadDOM m) => RTCIceTransport -> m (Maybe RTCIceCandidatePair)
+getSelectedCandidatePair self = liftDOM (((self ^. jsf "getSelectedCandidatePair" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceTransport.gatheringState Mozilla RTCIceTransport.gatheringState documentation> 
-getGatheringState ::
-                  (MonadDOM m) => RTCIceTransport -> m RTCIceGatheringState
-getGatheringState self
-  = liftDOM ((self ^. js "gatheringState") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceTransport/getSelectedCandidatePair MDN RTCIceTransport.getSelectedCandidatePair documentation>
+getSelectedCandidatePair_ :: (MonadDOM m) => RTCIceTransport -> m ()
+getSelectedCandidatePair_ self = liftDOM (void (self ^. jsf "getSelectedCandidatePair" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceTransport/getSelectedCandidatePair MDN RTCIceTransport.getSelectedCandidatePair documentation>
+getSelectedCandidatePairUnsafe :: (MonadDOM m, HasCallStack) => RTCIceTransport -> m RTCIceCandidatePair
+getSelectedCandidatePairUnsafe self = liftDOM ((((self ^. jsf "getSelectedCandidatePair" ()) >>= 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 (((self ^. jsf "getSelectedCandidatePair" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceTransport/role MDN RTCIceTransport.role documentation>
+getRole :: (MonadDOM m) => RTCIceTransport -> m RTCIceRole
+getRole self = liftDOM (((self ^. js "role") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceTransport/state MDN RTCIceTransport.state documentation>
+getState :: (MonadDOM m) => RTCIceTransport -> m RTCIceTransportState
+getState self = liftDOM (((self ^. js "state") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCIceTransport/gatheringState MDN RTCIceTransport.gatheringState documentation>
+getGatheringState :: (MonadDOM m) => RTCIceTransport -> m RTCIceGathererState
+getGatheringState self = liftDOM (((self ^. js "gatheringState") >>= 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/JSDOM/Generated/RTCLocalIceCandidateInit.hs b/src/JSDOM/Generated/RTCLocalIceCandidateInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCLocalIceCandidateInit.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCLocalIceCandidateInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalicecandidateinit RTCLocalIceCandidateInit specification>
+newRTCLocalIceCandidateInit :: (MonadDOM m) => m RTCLocalIceCandidateInit
+newRTCLocalIceCandidateInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalicecandidateinit-relayprotocol RTCLocalIceCandidateInit.relayProtocol specification>
+setRelayProtocol :: (MonadDOM m) => RTCLocalIceCandidateInit -> Maybe RTCIceServerTransportProtocol -> m ()
+setRelayProtocol self val = liftDOM (void (self ^. jss "relayProtocol" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalicecandidateinit-relayprotocol RTCLocalIceCandidateInit.relayProtocol specification>
+getRelayProtocol :: (MonadDOM m) => RTCLocalIceCandidateInit -> m (Maybe RTCIceServerTransportProtocol)
+getRelayProtocol self = liftDOM (((self ^. js "relayProtocol") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalicecandidateinit-relayprotocol RTCLocalIceCandidateInit.relayProtocol specification>
+getRelayProtocolUnsafe :: (MonadDOM m, HasCallStack) => RTCLocalIceCandidateInit -> m RTCIceServerTransportProtocol
+getRelayProtocolUnsafe self = liftDOM ((((self ^. js "relayProtocol") >>= 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 (((self ^. js "relayProtocol") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "url" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalicecandidateinit-url RTCLocalIceCandidateInit.url specification>
+getUrl :: (MonadDOM m, FromJSString result) => RTCLocalIceCandidateInit -> m (Maybe result)
+getUrl self = liftDOM (((self ^. js "url") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalicecandidateinit-url RTCLocalIceCandidateInit.url specification>
+getUrlUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCLocalIceCandidateInit -> m result
+getUrlUnsafe self = liftDOM ((((self ^. js "url") >>= fromMaybeJSString) >>= 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 (((self ^. js "url") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCLocalSessionDescriptionInit.hs b/src/JSDOM/Generated/RTCLocalSessionDescriptionInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCLocalSessionDescriptionInit.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCLocalSessionDescriptionInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalsessiondescriptioninit RTCLocalSessionDescriptionInit specification>
+newRTCLocalSessionDescriptionInit :: (MonadDOM m) => m RTCLocalSessionDescriptionInit
+newRTCLocalSessionDescriptionInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalsessiondescriptioninit-type RTCLocalSessionDescriptionInit.type specification>
+setType :: (MonadDOM m) => RTCLocalSessionDescriptionInit -> RTCSdpType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalsessiondescriptioninit-type RTCLocalSessionDescriptionInit.type specification>
+getType :: (MonadDOM m) => RTCLocalSessionDescriptionInit -> m (Maybe RTCSdpType)
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalsessiondescriptioninit-type RTCLocalSessionDescriptionInit.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => RTCLocalSessionDescriptionInit -> m RTCSdpType
+getTypeUnsafe self = liftDOM ((((self ^. js "type") >>= 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 (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "sdp" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalsessiondescriptioninit-sdp RTCLocalSessionDescriptionInit.sdp specification>
+getSdp :: (MonadDOM m, FromJSString result) => RTCLocalSessionDescriptionInit -> m (Maybe result)
+getSdp self = liftDOM (((self ^. js "sdp") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtclocalsessiondescriptioninit-sdp RTCLocalSessionDescriptionInit.sdp specification>
+getSdpUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCLocalSessionDescriptionInit -> m result
+getSdpUnsafe self = liftDOM ((((self ^. js "sdp") >>= fromMaybeJSString) >>= 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 (((self ^. js "sdp") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCOfferAnswerOptions.hs b/src/JSDOM/Generated/RTCOfferAnswerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCOfferAnswerOptions.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCOfferAnswerOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferansweroptions RTCOfferAnswerOptions specification>
+newRTCOfferAnswerOptions :: (MonadDOM m) => m RTCOfferAnswerOptions
+newRTCOfferAnswerOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCOfferOptions.hs b/src/JSDOM/Generated/RTCOfferOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCOfferOptions.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCOfferOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions RTCOfferOptions specification>
+newRTCOfferOptions :: (MonadDOM m) => m RTCOfferOptions
+newRTCOfferOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-icerestart RTCOfferOptions.iceRestart specification>
+setIceRestart :: (MonadDOM m) => RTCOfferOptions -> Bool -> m ()
+setIceRestart self val = liftDOM (void (self ^. jss "iceRestart" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-icerestart RTCOfferOptions.iceRestart specification>
+getIceRestart :: (MonadDOM m) => RTCOfferOptions -> m (Maybe Bool)
+getIceRestart self = liftDOM (((self ^. js "iceRestart") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-icerestart RTCOfferOptions.iceRestart specification>
+getIceRestartUnsafe :: (MonadDOM m, HasCallStack) => RTCOfferOptions -> m Bool
+getIceRestartUnsafe self = liftDOM ((((self ^. js "iceRestart") >>= 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 (((self ^. js "iceRestart") >>= valToBool))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-offertoreceiveaudio RTCOfferOptions.offerToReceiveAudio specification>
+setOfferToReceiveAudio :: (MonadDOM m) => RTCOfferOptions -> Bool -> m ()
+setOfferToReceiveAudio self val = liftDOM (void (self ^. jss "offerToReceiveAudio" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-offertoreceiveaudio RTCOfferOptions.offerToReceiveAudio specification>
+getOfferToReceiveAudio :: (MonadDOM m) => RTCOfferOptions -> m (Maybe Bool)
+getOfferToReceiveAudio self = liftDOM (((self ^. js "offerToReceiveAudio") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-offertoreceiveaudio RTCOfferOptions.offerToReceiveAudio specification>
+getOfferToReceiveAudioUnsafe :: (MonadDOM m, HasCallStack) => RTCOfferOptions -> m Bool
+getOfferToReceiveAudioUnsafe self = liftDOM ((((self ^. js "offerToReceiveAudio") >>= 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 (((self ^. js "offerToReceiveAudio") >>= valToBool))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-offertoreceivevideo RTCOfferOptions.offerToReceiveVideo specification>
+setOfferToReceiveVideo :: (MonadDOM m) => RTCOfferOptions -> Bool -> m ()
+setOfferToReceiveVideo self val = liftDOM (void (self ^. jss "offerToReceiveVideo" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-offertoreceivevideo RTCOfferOptions.offerToReceiveVideo specification>
+getOfferToReceiveVideo :: (MonadDOM m) => RTCOfferOptions -> m (Maybe Bool)
+getOfferToReceiveVideo self = liftDOM (((self ^. js "offerToReceiveVideo") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcofferoptions-offertoreceivevideo RTCOfferOptions.offerToReceiveVideo specification>
+getOfferToReceiveVideoUnsafe :: (MonadDOM m, HasCallStack) => RTCOfferOptions -> m Bool
+getOfferToReceiveVideoUnsafe self = liftDOM ((((self ^. js "offerToReceiveVideo") >>= 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 (((self ^. js "offerToReceiveVideo") >>= valToBool))
diff --git a/src/JSDOM/Generated/RTCPeerConnection.hs b/src/JSDOM/Generated/RTCPeerConnection.hs
--- a/src/JSDOM/Generated/RTCPeerConnection.hs
+++ b/src/JSDOM/Generated/RTCPeerConnection.hs
@@ -1,497 +1,304 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module JSDOM.Generated.RTCPeerConnection
-       (createOffer, createOffer_, createAnswer, createAnswer_,
-        setLocalDescription, setRemoteDescription, addIceCandidate,
-        getConfiguration, getConfiguration_, setConfiguration, close,
-        getSenders, getSenders_, getReceivers, getReceivers_,
-        getTransceivers, getTransceivers_, addTrack, addTrack_,
-        removeTrack, addTransceiverTrack, addTransceiverTrack_,
-        createDataChannel, createDataChannel_, getStats, getStats_,
-        getLocalStreams, getLocalStreams_, getRemoteStreams,
-        getRemoteStreams_, getStreamById, getStreamById_, addStream,
-        removeStream, getLocalDescription, getLocalDescriptionUnsafe,
-        getLocalDescriptionUnchecked, getCurrentLocalDescription,
-        getCurrentLocalDescriptionUnsafe,
-        getCurrentLocalDescriptionUnchecked, getPendingLocalDescription,
-        getPendingLocalDescriptionUnsafe,
-        getPendingLocalDescriptionUnchecked, getRemoteDescription,
-        getRemoteDescriptionUnsafe, getRemoteDescriptionUnchecked,
-        getCurrentRemoteDescription, getCurrentRemoteDescriptionUnsafe,
-        getCurrentRemoteDescriptionUnchecked, getPendingRemoteDescription,
-        getPendingRemoteDescriptionUnsafe,
-        getPendingRemoteDescriptionUnchecked, getSignalingState,
-        getIceGatheringState, getIceConnectionState, getConnectionState,
-        negotiationNeeded, iceCandidate, signalingStateChange,
-        iceConnectionStateChange, icegatheringstatechange,
-        connectionstatechange, track, dataChannel, addStreamEvent,
-        RTCPeerConnection(..), gTypeRTCPeerConnection)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createOffer Mozilla webkitRTCPeerConnection.createOffer documentation> 
-createOffer ::
-            (MonadDOM m) =>
-              RTCPeerConnection ->
-                Maybe RTCOfferOptions -> m RTCSessionDescriptionInit
-createOffer self offerOptions
-  = liftDOM
-      (((self ^. jsf "createOffer" [toJSVal offerOptions]) >>=
-          readPromise)
-         >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/RTCPeerConnection MDN RTCPeerConnection. documentation>
+newRTCPeerConnection :: (MonadDOM m) => Maybe RTCConfiguration -> m RTCPeerConnection
+newRTCPeerConnection configuration = liftDOM (((new (jsg "RTCPeerConnection") [P.maybe (P.return jsUndefined) toJSVal configuration]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createOffer Mozilla webkitRTCPeerConnection.createOffer documentation> 
-createOffer_ ::
-             (MonadDOM m) => RTCPeerConnection -> Maybe RTCOfferOptions -> m ()
-createOffer_ self offerOptions
-  = liftDOM (void (self ^. jsf "createOffer" [toJSVal offerOptions]))
+-- | <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 (((self ^. jsf "addIceCandidate" [P.maybe (P.return jsUndefined) toJSVal candidate]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createAnswer Mozilla webkitRTCPeerConnection.createAnswer documentation> 
-createAnswer ::
-             (MonadDOM m) =>
-               RTCPeerConnection ->
-                 Maybe RTCAnswerOptions -> m RTCSessionDescriptionInit
-createAnswer self answerOptions
-  = liftDOM
-      (((self ^. jsf "createAnswer" [toJSVal answerOptions]) >>=
-          readPromise)
-         >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "addIceCandidate" [toJSVal candidate, toJSVal successCallback, toJSVal failureCallback]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createAnswer Mozilla webkitRTCPeerConnection.createAnswer documentation> 
-createAnswer_ ::
-              (MonadDOM m) => RTCPeerConnection -> Maybe RTCAnswerOptions -> m ()
-createAnswer_ self answerOptions
-  = liftDOM
-      (void (self ^. jsf "createAnswer" [toJSVal answerOptions]))
+-- | <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 (((self ^. jsf "addTrack" ([toJSVal track] ++ P.map toJSVal streams)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.setLocalDescription Mozilla webkitRTCPeerConnection.setLocalDescription documentation> 
-setLocalDescription ::
-                    (MonadDOM m) =>
-                      RTCPeerConnection -> RTCSessionDescriptionInit -> m ()
-setLocalDescription self description
-  = liftDOM
-      (void
-         ((self ^. jsf "setLocalDescription" [toJSVal description]) >>=
-            readPromise))
+-- | <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 (self ^. jsf "addTrack" ([toJSVal track] ++ P.map toJSVal streams)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.setRemoteDescription Mozilla webkitRTCPeerConnection.setRemoteDescription documentation> 
-setRemoteDescription ::
-                     (MonadDOM m) =>
-                       RTCPeerConnection -> RTCSessionDescriptionInit -> m ()
-setRemoteDescription self description
-  = liftDOM
-      (void
-         ((self ^. jsf "setRemoteDescription" [toJSVal description]) >>=
-            readPromise))
+-- | <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 (((self ^. jsf "addTransceiver" [toJSVal trackOrKind, P.maybe (P.return jsUndefined) toJSVal init]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addIceCandidate Mozilla webkitRTCPeerConnection.addIceCandidate documentation> 
-addIceCandidate ::
-                (MonadDOM m, IsRTCIceCandidateOrInit candidate) =>
-                  RTCPeerConnection -> candidate -> m ()
-addIceCandidate self candidate
-  = liftDOM
-      (void
-         ((self ^. jsf "addIceCandidate" [toJSVal candidate]) >>=
-            readPromise))
+-- | <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 (self ^. jsf "addTransceiver" [toJSVal trackOrKind, P.maybe (P.return jsUndefined) toJSVal init]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getConfiguration Mozilla webkitRTCPeerConnection.getConfiguration documentation> 
-getConfiguration ::
-                 (MonadDOM m) => RTCPeerConnection -> m RTCConfiguration
-getConfiguration self
-  = liftDOM
-      ((self ^. jsf "getConfiguration" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/close MDN RTCPeerConnection.close documentation>
+close :: (MonadDOM m) => RTCPeerConnection -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getConfiguration Mozilla webkitRTCPeerConnection.getConfiguration documentation> 
+-- | <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 (((((self ^. jsf "createAnswer" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "createAnswer" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "createAnswer" [toJSVal successCallback, toJSVal failureCallback]) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "createDataChannel" [toJSVal label, P.maybe (P.return jsUndefined) toJSVal dataChannelDict]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "createDataChannel" [toJSVal label, P.maybe (P.return jsUndefined) toJSVal dataChannelDict]))
+
+-- | <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 (((((self ^. jsf "createOffer" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "createOffer" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "createOffer" [toJSVal successCallback, toJSVal failureCallback, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getConfiguration MDN RTCPeerConnection.getConfiguration documentation>
+getConfiguration :: (MonadDOM m) => RTCPeerConnection -> m RTCConfiguration
+getConfiguration self = liftDOM (((self ^. jsf "getConfiguration" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getConfiguration MDN RTCPeerConnection.getConfiguration documentation>
 getConfiguration_ :: (MonadDOM m) => RTCPeerConnection -> m ()
-getConfiguration_ self
-  = liftDOM (void (self ^. jsf "getConfiguration" ()))
+getConfiguration_ self = liftDOM (void (self ^. jsf "getConfiguration" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.setConfiguration Mozilla webkitRTCPeerConnection.setConfiguration documentation> 
-setConfiguration ::
-                 (MonadDOM m) => RTCPeerConnection -> RTCConfiguration -> m ()
-setConfiguration self configuration
-  = liftDOM
-      (void (self ^. jsf "setConfiguration" [toJSVal configuration]))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getReceivers MDN RTCPeerConnection.getReceivers documentation>
+getReceivers :: (MonadDOM m) => RTCPeerConnection -> m [RTCRtpReceiver]
+getReceivers self = liftDOM (((self ^. jsf "getReceivers" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.close Mozilla webkitRTCPeerConnection.close documentation> 
-close :: (MonadDOM m) => RTCPeerConnection -> m ()
-close self = liftDOM (void (self ^. jsf "close" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getReceivers MDN RTCPeerConnection.getReceivers documentation>
+getReceivers_ :: (MonadDOM m) => RTCPeerConnection -> m ()
+getReceivers_ self = liftDOM (void (self ^. jsf "getReceivers" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getSenders Mozilla webkitRTCPeerConnection.getSenders documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getSenders MDN RTCPeerConnection.getSenders documentation>
 getSenders :: (MonadDOM m) => RTCPeerConnection -> m [RTCRtpSender]
-getSenders self
-  = liftDOM ((self ^. jsf "getSenders" ()) >>= fromJSArrayUnchecked)
+getSenders self = liftDOM (((self ^. jsf "getSenders" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getSenders Mozilla webkitRTCPeerConnection.getSenders documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getSenders MDN RTCPeerConnection.getSenders documentation>
 getSenders_ :: (MonadDOM m) => RTCPeerConnection -> m ()
 getSenders_ self = liftDOM (void (self ^. jsf "getSenders" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getReceivers Mozilla webkitRTCPeerConnection.getReceivers documentation> 
-getReceivers ::
-             (MonadDOM m) => RTCPeerConnection -> m [RTCRtpReceiver]
-getReceivers self
-  = liftDOM
-      ((self ^. jsf "getReceivers" ()) >>= fromJSArrayUnchecked)
+-- | <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 (((((self ^. jsf "getStats" [toJSVal selector]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getReceivers Mozilla webkitRTCPeerConnection.getReceivers documentation> 
-getReceivers_ :: (MonadDOM m) => RTCPeerConnection -> m ()
-getReceivers_ self = liftDOM (void (self ^. jsf "getReceivers" ()))
+-- | <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 (((self ^. jsf "getStats" [toJSVal selector]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getTransceivers Mozilla webkitRTCPeerConnection.getTransceivers documentation> 
-getTransceivers ::
-                (MonadDOM m) => RTCPeerConnection -> m [RTCRtpTransceiver]
-getTransceivers self
-  = liftDOM
-      ((self ^. jsf "getTransceivers" ()) >>= fromJSArrayUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getTransceivers MDN RTCPeerConnection.getTransceivers documentation>
+getTransceivers :: (MonadDOM m) => RTCPeerConnection -> m [RTCRtpTransceiver]
+getTransceivers self = liftDOM (((self ^. jsf "getTransceivers" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getTransceivers Mozilla webkitRTCPeerConnection.getTransceivers documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/getTransceivers MDN RTCPeerConnection.getTransceivers documentation>
 getTransceivers_ :: (MonadDOM m) => RTCPeerConnection -> m ()
-getTransceivers_ self
-  = liftDOM (void (self ^. jsf "getTransceivers" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addTrack Mozilla webkitRTCPeerConnection.addTrack documentation> 
-addTrack ::
-         (MonadDOM m, IsMediaStreamTrack track) =>
-           RTCPeerConnection -> track -> [MediaStream] -> m RTCRtpSender
-addTrack self track streams
-  = liftDOM
-      ((self ^. jsf "addTrack" [toJSVal track, toJSVal (array streams)])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addTrack Mozilla webkitRTCPeerConnection.addTrack documentation> 
-addTrack_ ::
-          (MonadDOM m, IsMediaStreamTrack track) =>
-            RTCPeerConnection -> track -> [MediaStream] -> m ()
-addTrack_ self track streams
-  = liftDOM
-      (void
-         (self ^. jsf "addTrack" [toJSVal track, toJSVal (array streams)]))
+getTransceivers_ self = liftDOM (void (self ^. jsf "getTransceivers" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.removeTrack Mozilla webkitRTCPeerConnection.removeTrack documentation> 
-removeTrack ::
-            (MonadDOM m) => RTCPeerConnection -> RTCRtpSender -> m ()
-removeTrack self sender
-  = liftDOM (void (self ^. jsf "removeTrack" [toJSVal sender]))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/removeTrack MDN RTCPeerConnection.removeTrack documentation>
+removeTrack :: (MonadDOM m) => RTCPeerConnection -> RTCRtpSender -> m ()
+removeTrack self sender = liftDOM (void (self ^. jsf "removeTrack" [toJSVal sender]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addTransceiver Mozilla webkitRTCPeerConnection.addTransceiver documentation> 
-addTransceiverTrack ::
-                    (MonadDOM m, IsMediaStreamTrackOrKind track) =>
-                      RTCPeerConnection ->
-                        track -> Maybe RTCRtpTransceiverInit -> m RTCRtpTransceiver
-addTransceiverTrack self track init
-  = liftDOM
-      ((self ^. jsf "addTransceiver" [toJSVal track, toJSVal init]) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/restartIce MDN RTCPeerConnection.restartIce documentation>
+restartIce :: (MonadDOM m) => RTCPeerConnection -> m ()
+restartIce self = liftDOM (void (self ^. jsf "restartIce" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addTransceiver Mozilla webkitRTCPeerConnection.addTransceiver documentation> 
-addTransceiverTrack_ ::
-                     (MonadDOM m, IsMediaStreamTrackOrKind track) =>
-                       RTCPeerConnection -> track -> Maybe RTCRtpTransceiverInit -> m ()
-addTransceiverTrack_ self track init
-  = liftDOM
-      (void (self ^. jsf "addTransceiver" [toJSVal track, toJSVal init]))
+-- | <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 (self ^. jsf "setConfiguration" [P.maybe (P.return jsUndefined) toJSVal configuration]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createDataChannel Mozilla webkitRTCPeerConnection.createDataChannel documentation> 
-createDataChannel ::
-                  (MonadDOM m, ToJSString label) =>
-                    RTCPeerConnection ->
-                      label -> Maybe RTCDataChannelInit -> m RTCDataChannel
-createDataChannel self label options
-  = liftDOM
-      ((self ^. jsf "createDataChannel" [toJSVal label, toJSVal options])
-         >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "setLocalDescription" [P.maybe (P.return jsUndefined) toJSVal description]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createDataChannel Mozilla webkitRTCPeerConnection.createDataChannel documentation> 
-createDataChannel_ ::
-                   (MonadDOM m, ToJSString label) =>
-                     RTCPeerConnection -> label -> Maybe RTCDataChannelInit -> m ()
-createDataChannel_ self label options
-  = liftDOM
-      (void
-         (self ^. jsf "createDataChannel" [toJSVal label, toJSVal options]))
+-- | <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 (((self ^. jsf "setLocalDescription" [toJSVal description, toJSVal successCallback, toJSVal failureCallback]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStats Mozilla webkitRTCPeerConnection.getStats documentation> 
-getStats ::
-         (MonadDOM m, IsMediaStreamTrack selector) =>
-           RTCPeerConnection -> Maybe selector -> m RTCStatsReport
-getStats self selector
-  = liftDOM
-      (((self ^. jsf "getStats" [toJSVal selector]) >>= readPromise) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/setRemoteDescription MDN RTCPeerConnection.setRemoteDescription documentation>
+setRemoteDescription :: (MonadDOM m) => RTCPeerConnection -> RTCSessionDescriptionInit -> m ()
+setRemoteDescription self description = liftDOM (void (((self ^. jsf "setRemoteDescription" [toJSVal description]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStats Mozilla webkitRTCPeerConnection.getStats documentation> 
-getStats_ ::
-          (MonadDOM m, IsMediaStreamTrack selector) =>
-            RTCPeerConnection -> Maybe selector -> m ()
-getStats_ self selector
-  = liftDOM (void (self ^. jsf "getStats" [toJSVal selector]))
+-- | <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 (((self ^. jsf "setRemoteDescription" [toJSVal description, toJSVal successCallback, toJSVal failureCallback]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getLocalStreams Mozilla webkitRTCPeerConnection.getLocalStreams documentation> 
-getLocalStreams ::
-                (MonadDOM m) => RTCPeerConnection -> m [MediaStream]
-getLocalStreams self
-  = liftDOM
-      ((self ^. jsf "getLocalStreams" ()) >>= fromJSArrayUnchecked)
+-- | <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 ((((((jsg "RTCPeerConnection") ^. jsf "generateCertificate" [toJSVal keygenAlgorithm]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getLocalStreams Mozilla webkitRTCPeerConnection.getLocalStreams documentation> 
-getLocalStreams_ :: (MonadDOM m) => RTCPeerConnection -> m ()
-getLocalStreams_ self
-  = liftDOM (void (self ^. jsf "getLocalStreams" ()))
+-- | <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 ((((jsg "RTCPeerConnection") ^. jsf "generateCertificate" [toJSVal keygenAlgorithm]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getRemoteStreams Mozilla webkitRTCPeerConnection.getRemoteStreams documentation> 
-getRemoteStreams ::
-                 (MonadDOM m) => RTCPeerConnection -> m [MediaStream]
-getRemoteStreams self
-  = liftDOM
-      ((self ^. jsf "getRemoteStreams" ()) >>= fromJSArrayUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/localDescription MDN RTCPeerConnection.localDescription documentation>
+getLocalDescription :: (MonadDOM m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getLocalDescription self = liftDOM (((self ^. js "localDescription") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getRemoteStreams Mozilla webkitRTCPeerConnection.getRemoteStreams documentation> 
-getRemoteStreams_ :: (MonadDOM m) => RTCPeerConnection -> m ()
-getRemoteStreams_ self
-  = liftDOM (void (self ^. jsf "getRemoteStreams" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/localDescription MDN RTCPeerConnection.localDescription documentation>
+getLocalDescriptionUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnection -> m RTCSessionDescription
+getLocalDescriptionUnsafe self = liftDOM ((((self ^. js "localDescription") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStreamById Mozilla webkitRTCPeerConnection.getStreamById documentation> 
-getStreamById ::
-              (MonadDOM m, ToJSString streamId) =>
-                RTCPeerConnection -> streamId -> m MediaStream
-getStreamById self streamId
-  = liftDOM
-      ((self ^. jsf "getStreamById" [toJSVal streamId]) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/localDescription MDN RTCPeerConnection.localDescription documentation>
+getLocalDescriptionUnchecked :: (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
+getLocalDescriptionUnchecked self = liftDOM (((self ^. js "localDescription") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStreamById Mozilla webkitRTCPeerConnection.getStreamById documentation> 
-getStreamById_ ::
-               (MonadDOM m, ToJSString streamId) =>
-                 RTCPeerConnection -> streamId -> m ()
-getStreamById_ self streamId
-  = liftDOM (void (self ^. jsf "getStreamById" [toJSVal streamId]))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/currentLocalDescription MDN RTCPeerConnection.currentLocalDescription documentation>
+getCurrentLocalDescription :: (MonadDOM m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getCurrentLocalDescription self = liftDOM (((self ^. js "currentLocalDescription") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addStream Mozilla webkitRTCPeerConnection.addStream documentation> 
-addStream ::
-          (MonadDOM m) => RTCPeerConnection -> MediaStream -> m ()
-addStream self stream
-  = liftDOM (void (self ^. jsf "addStream" [toJSVal stream]))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/currentLocalDescription MDN RTCPeerConnection.currentLocalDescription documentation>
+getCurrentLocalDescriptionUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnection -> m RTCSessionDescription
+getCurrentLocalDescriptionUnsafe self = liftDOM ((((self ^. js "currentLocalDescription") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.removeStream Mozilla webkitRTCPeerConnection.removeStream documentation> 
-removeStream ::
-             (MonadDOM m) => RTCPeerConnection -> MediaStream -> m ()
-removeStream self stream
-  = liftDOM (void (self ^. jsf "removeStream" [toJSVal stream]))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/currentLocalDescription MDN RTCPeerConnection.currentLocalDescription documentation>
+getCurrentLocalDescriptionUnchecked :: (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
+getCurrentLocalDescriptionUnchecked self = liftDOM (((self ^. js "currentLocalDescription") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.localDescription Mozilla webkitRTCPeerConnection.localDescription documentation> 
-getLocalDescription ::
-                    (MonadDOM m) =>
-                      RTCPeerConnection -> m (Maybe RTCSessionDescription)
-getLocalDescription self
-  = liftDOM ((self ^. js "localDescription") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/pendingLocalDescription MDN RTCPeerConnection.pendingLocalDescription documentation>
+getPendingLocalDescription :: (MonadDOM m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getPendingLocalDescription self = liftDOM (((self ^. js "pendingLocalDescription") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.localDescription Mozilla webkitRTCPeerConnection.localDescription documentation> 
-getLocalDescriptionUnsafe ::
-                          (MonadDOM m, HasCallStack) =>
-                            RTCPeerConnection -> m RTCSessionDescription
-getLocalDescriptionUnsafe self
-  = liftDOM
-      (((self ^. js "localDescription") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/pendingLocalDescription MDN RTCPeerConnection.pendingLocalDescription documentation>
+getPendingLocalDescriptionUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnection -> m RTCSessionDescription
+getPendingLocalDescriptionUnsafe self = liftDOM ((((self ^. js "pendingLocalDescription") >>= 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> 
-getLocalDescriptionUnchecked ::
-                             (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
-getLocalDescriptionUnchecked self
-  = liftDOM ((self ^. js "localDescription") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/pendingLocalDescription MDN RTCPeerConnection.pendingLocalDescription documentation>
+getPendingLocalDescriptionUnchecked :: (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
+getPendingLocalDescriptionUnchecked self = liftDOM (((self ^. js "pendingLocalDescription") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.currentLocalDescription Mozilla webkitRTCPeerConnection.currentLocalDescription documentation> 
-getCurrentLocalDescription ::
-                           (MonadDOM m) =>
-                             RTCPeerConnection -> m (Maybe RTCSessionDescription)
-getCurrentLocalDescription self
-  = liftDOM ((self ^. js "currentLocalDescription") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/remoteDescription MDN RTCPeerConnection.remoteDescription documentation>
+getRemoteDescription :: (MonadDOM m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getRemoteDescription self = liftDOM (((self ^. js "remoteDescription") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.currentLocalDescription Mozilla webkitRTCPeerConnection.currentLocalDescription documentation> 
-getCurrentLocalDescriptionUnsafe ::
-                                 (MonadDOM m, HasCallStack) =>
-                                   RTCPeerConnection -> m RTCSessionDescription
-getCurrentLocalDescriptionUnsafe self
-  = liftDOM
-      (((self ^. js "currentLocalDescription") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/remoteDescription MDN RTCPeerConnection.remoteDescription documentation>
+getRemoteDescriptionUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnection -> m RTCSessionDescription
+getRemoteDescriptionUnsafe self = liftDOM ((((self ^. js "remoteDescription") >>= 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> 
-getCurrentLocalDescriptionUnchecked ::
-                                    (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
-getCurrentLocalDescriptionUnchecked self
-  = liftDOM
-      ((self ^. js "currentLocalDescription") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/remoteDescription MDN RTCPeerConnection.remoteDescription documentation>
+getRemoteDescriptionUnchecked :: (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
+getRemoteDescriptionUnchecked self = liftDOM (((self ^. js "remoteDescription") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.pendingLocalDescription Mozilla webkitRTCPeerConnection.pendingLocalDescription documentation> 
-getPendingLocalDescription ::
-                           (MonadDOM m) =>
-                             RTCPeerConnection -> m (Maybe RTCSessionDescription)
-getPendingLocalDescription self
-  = liftDOM ((self ^. js "pendingLocalDescription") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/currentRemoteDescription MDN RTCPeerConnection.currentRemoteDescription documentation>
+getCurrentRemoteDescription :: (MonadDOM m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getCurrentRemoteDescription self = liftDOM (((self ^. js "currentRemoteDescription") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.pendingLocalDescription Mozilla webkitRTCPeerConnection.pendingLocalDescription documentation> 
-getPendingLocalDescriptionUnsafe ::
-                                 (MonadDOM m, HasCallStack) =>
-                                   RTCPeerConnection -> m RTCSessionDescription
-getPendingLocalDescriptionUnsafe self
-  = liftDOM
-      (((self ^. js "pendingLocalDescription") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/currentRemoteDescription MDN RTCPeerConnection.currentRemoteDescription documentation>
+getCurrentRemoteDescriptionUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnection -> m RTCSessionDescription
+getCurrentRemoteDescriptionUnsafe self = liftDOM ((((self ^. js "currentRemoteDescription") >>= 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> 
-getPendingLocalDescriptionUnchecked ::
-                                    (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
-getPendingLocalDescriptionUnchecked self
-  = liftDOM
-      ((self ^. js "pendingLocalDescription") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/currentRemoteDescription MDN RTCPeerConnection.currentRemoteDescription documentation>
+getCurrentRemoteDescriptionUnchecked :: (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
+getCurrentRemoteDescriptionUnchecked self = liftDOM (((self ^. js "currentRemoteDescription") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.remoteDescription Mozilla webkitRTCPeerConnection.remoteDescription documentation> 
-getRemoteDescription ::
-                     (MonadDOM m) =>
-                       RTCPeerConnection -> m (Maybe RTCSessionDescription)
-getRemoteDescription self
-  = liftDOM ((self ^. js "remoteDescription") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/pendingRemoteDescription MDN RTCPeerConnection.pendingRemoteDescription documentation>
+getPendingRemoteDescription :: (MonadDOM m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getPendingRemoteDescription self = liftDOM (((self ^. js "pendingRemoteDescription") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.remoteDescription Mozilla webkitRTCPeerConnection.remoteDescription documentation> 
-getRemoteDescriptionUnsafe ::
-                           (MonadDOM m, HasCallStack) =>
-                             RTCPeerConnection -> m RTCSessionDescription
-getRemoteDescriptionUnsafe self
-  = liftDOM
-      (((self ^. js "remoteDescription") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/pendingRemoteDescription MDN RTCPeerConnection.pendingRemoteDescription documentation>
+getPendingRemoteDescriptionUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnection -> m RTCSessionDescription
+getPendingRemoteDescriptionUnsafe self = liftDOM ((((self ^. js "pendingRemoteDescription") >>= 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> 
-getRemoteDescriptionUnchecked ::
-                              (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
-getRemoteDescriptionUnchecked self
-  = liftDOM ((self ^. js "remoteDescription") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/pendingRemoteDescription MDN RTCPeerConnection.pendingRemoteDescription documentation>
+getPendingRemoteDescriptionUnchecked :: (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
+getPendingRemoteDescriptionUnchecked self = liftDOM (((self ^. js "pendingRemoteDescription") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.currentRemoteDescription Mozilla webkitRTCPeerConnection.currentRemoteDescription documentation> 
-getCurrentRemoteDescription ::
-                            (MonadDOM m) =>
-                              RTCPeerConnection -> m (Maybe RTCSessionDescription)
-getCurrentRemoteDescription self
-  = liftDOM ((self ^. js "currentRemoteDescription") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/signalingState MDN RTCPeerConnection.signalingState documentation>
+getSignalingState :: (MonadDOM m) => RTCPeerConnection -> m RTCSignalingState
+getSignalingState self = liftDOM (((self ^. js "signalingState") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.currentRemoteDescription Mozilla webkitRTCPeerConnection.currentRemoteDescription documentation> 
-getCurrentRemoteDescriptionUnsafe ::
-                                  (MonadDOM m, HasCallStack) =>
-                                    RTCPeerConnection -> m RTCSessionDescription
-getCurrentRemoteDescriptionUnsafe self
-  = liftDOM
-      (((self ^. js "currentRemoteDescription") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/iceGatheringState MDN RTCPeerConnection.iceGatheringState documentation>
+getIceGatheringState :: (MonadDOM m) => RTCPeerConnection -> m RTCIceGatheringState
+getIceGatheringState self = liftDOM (((self ^. js "iceGatheringState") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.currentRemoteDescription Mozilla webkitRTCPeerConnection.currentRemoteDescription documentation> 
-getCurrentRemoteDescriptionUnchecked ::
-                                     (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
-getCurrentRemoteDescriptionUnchecked self
-  = liftDOM
-      ((self ^. js "currentRemoteDescription") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/iceConnectionState MDN RTCPeerConnection.iceConnectionState documentation>
+getIceConnectionState :: (MonadDOM m) => RTCPeerConnection -> m RTCIceConnectionState
+getIceConnectionState self = liftDOM (((self ^. js "iceConnectionState") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.pendingRemoteDescription Mozilla webkitRTCPeerConnection.pendingRemoteDescription documentation> 
-getPendingRemoteDescription ::
-                            (MonadDOM m) =>
-                              RTCPeerConnection -> m (Maybe RTCSessionDescription)
-getPendingRemoteDescription self
-  = liftDOM ((self ^. js "pendingRemoteDescription") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/connectionState MDN RTCPeerConnection.connectionState documentation>
+getConnectionState :: (MonadDOM m) => RTCPeerConnection -> m RTCPeerConnectionState
+getConnectionState self = liftDOM (((self ^. js "connectionState") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.pendingRemoteDescription Mozilla webkitRTCPeerConnection.pendingRemoteDescription documentation> 
-getPendingRemoteDescriptionUnsafe ::
-                                  (MonadDOM m, HasCallStack) =>
-                                    RTCPeerConnection -> m RTCSessionDescription
-getPendingRemoteDescriptionUnsafe self
-  = liftDOM
-      (((self ^. js "pendingRemoteDescription") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/canTrickleIceCandidates MDN RTCPeerConnection.canTrickleIceCandidates documentation>
+getCanTrickleIceCandidates :: (MonadDOM m) => RTCPeerConnection -> m (Maybe Bool)
+getCanTrickleIceCandidates self = liftDOM (((self ^. js "canTrickleIceCandidates") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.pendingRemoteDescription Mozilla webkitRTCPeerConnection.pendingRemoteDescription documentation> 
-getPendingRemoteDescriptionUnchecked ::
-                                     (MonadDOM m) => RTCPeerConnection -> m RTCSessionDescription
-getPendingRemoteDescriptionUnchecked self
-  = liftDOM
-      ((self ^. js "pendingRemoteDescription") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/canTrickleIceCandidates MDN RTCPeerConnection.canTrickleIceCandidates documentation>
+getCanTrickleIceCandidatesUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnection -> m Bool
+getCanTrickleIceCandidatesUnsafe self = liftDOM ((((self ^. js "canTrickleIceCandidates") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.signalingState Mozilla webkitRTCPeerConnection.signalingState documentation> 
-getSignalingState ::
-                  (MonadDOM m) => RTCPeerConnection -> m RTCSignalingState
-getSignalingState self
-  = liftDOM ((self ^. js "signalingState") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/canTrickleIceCandidates MDN RTCPeerConnection.canTrickleIceCandidates documentation>
+getCanTrickleIceCandidatesUnchecked :: (MonadDOM m) => RTCPeerConnection -> m Bool
+getCanTrickleIceCandidatesUnchecked self = liftDOM (((self ^. js "canTrickleIceCandidates") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.iceGatheringState Mozilla webkitRTCPeerConnection.iceGatheringState documentation> 
-getIceGatheringState ::
-                     (MonadDOM m) => RTCPeerConnection -> m RTCIceGatheringState
-getIceGatheringState self
-  = liftDOM ((self ^. js "iceGatheringState") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/sctp MDN RTCPeerConnection.sctp documentation>
+getSctp :: (MonadDOM m) => RTCPeerConnection -> m (Maybe RTCSctpTransport)
+getSctp self = liftDOM (((self ^. js "sctp") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.iceConnectionState Mozilla webkitRTCPeerConnection.iceConnectionState documentation> 
-getIceConnectionState ::
-                      (MonadDOM m) => RTCPeerConnection -> m RTCIceConnectionState
-getIceConnectionState self
-  = liftDOM
-      ((self ^. js "iceConnectionState") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/sctp MDN RTCPeerConnection.sctp documentation>
+getSctpUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnection -> m RTCSctpTransport
+getSctpUnsafe self = liftDOM ((((self ^. js "sctp") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.connectionState Mozilla webkitRTCPeerConnection.connectionState documentation> 
-getConnectionState ::
-                   (MonadDOM m) => RTCPeerConnection -> m RTCPeerConnectionState
-getConnectionState self
-  = liftDOM ((self ^. js "connectionState") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnection/sctp MDN RTCPeerConnection.sctp documentation>
+getSctpUnchecked :: (MonadDOM m) => RTCPeerConnection -> m RTCSctpTransport
+getSctpUnchecked self = liftDOM (((self ^. js "sctp") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onnegotiationneeded Mozilla webkitRTCPeerConnection.onnegotiationneeded documentation> 
+-- | <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/JSDOM/Generated/RTCPeerConnectionErrorCallback.hs b/src/JSDOM/Generated/RTCPeerConnectionErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCPeerConnectionErrorCallback.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newRTCPeerConnectionErrorCallback :: (MonadDOM m) => (DOMException -> JSM ()) -> m RTCPeerConnectionErrorCallback
+newRTCPeerConnectionErrorCallback callback = liftDOM (RTCPeerConnectionErrorCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (error : _) -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
+
+newRTCPeerConnectionErrorCallbackSync :: (MonadDOM m) => (DOMException -> JSM ()) -> m RTCPeerConnectionErrorCallback
+newRTCPeerConnectionErrorCallbackSync callback = liftDOM (RTCPeerConnectionErrorCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (error : _) -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
+
+newRTCPeerConnectionErrorCallbackAsync :: (MonadDOM m) => (DOMException -> JSM ()) -> m RTCPeerConnectionErrorCallback
+newRTCPeerConnectionErrorCallbackAsync callback = liftDOM (RTCPeerConnectionErrorCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (error : _) -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
diff --git a/src/JSDOM/Generated/RTCPeerConnectionIceErrorEvent.hs b/src/JSDOM/Generated/RTCPeerConnectionIceErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCPeerConnectionIceErrorEvent.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCPeerConnectionIceErrorEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "RTCPeerConnectionIceErrorEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. js "address") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "address") >>= fromMaybeJSString) >>= 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 (((self ^. js "address") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceErrorEvent/port MDN RTCPeerConnectionIceErrorEvent.port documentation>
+getPort :: (MonadDOM m) => RTCPeerConnectionIceErrorEvent -> m (Maybe Word)
+getPort self = liftDOM (((self ^. js "port") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceErrorEvent/port MDN RTCPeerConnectionIceErrorEvent.port documentation>
+getPortUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnectionIceErrorEvent -> m Word
+getPortUnsafe self = liftDOM ((((self ^. js "port") >>= 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 ((P.round <$> ((self ^. js "port") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceErrorEvent/url MDN RTCPeerConnectionIceErrorEvent.url documentation>
+getUrl :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceErrorEvent -> m result
+getUrl self = liftDOM (((self ^. js "url") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceErrorEvent/errorCode MDN RTCPeerConnectionIceErrorEvent.errorCode documentation>
+getErrorCode :: (MonadDOM m) => RTCPeerConnectionIceErrorEvent -> m Word
+getErrorCode self = liftDOM ((P.round <$> ((self ^. js "errorCode") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceErrorEvent/errorText MDN RTCPeerConnectionIceErrorEvent.errorText documentation>
+getErrorText :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceErrorEvent -> m result
+getErrorText self = liftDOM (((self ^. js "errorText") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCPeerConnectionIceErrorEventInit.hs b/src/JSDOM/Generated/RTCPeerConnectionIceErrorEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCPeerConnectionIceErrorEventInit.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCPeerConnectionIceErrorEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit RTCPeerConnectionIceErrorEventInit specification>
+newRTCPeerConnectionIceErrorEventInit :: (MonadDOM m) => Word -> m RTCPeerConnectionIceErrorEventInit
+newRTCPeerConnectionIceErrorEventInit errorCode = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "errorCode" (toJSVal errorCode)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "address" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-address RTCPeerConnectionIceErrorEventInit.address specification>
+getAddress :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceErrorEventInit -> m (Maybe result)
+getAddress self = liftDOM (((self ^. js "address") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-address RTCPeerConnectionIceErrorEventInit.address specification>
+getAddressUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCPeerConnectionIceErrorEventInit -> m result
+getAddressUnsafe self = liftDOM ((((self ^. js "address") >>= fromMaybeJSString) >>= 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 (((self ^. js "address") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-port RTCPeerConnectionIceErrorEventInit.port specification>
+setPort :: (MonadDOM m) => RTCPeerConnectionIceErrorEventInit -> Maybe Word -> m ()
+setPort self val = liftDOM (void (self ^. jss "port" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-port RTCPeerConnectionIceErrorEventInit.port specification>
+getPort :: (MonadDOM m) => RTCPeerConnectionIceErrorEventInit -> m (Maybe Word)
+getPort self = liftDOM (((self ^. js "port") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-port RTCPeerConnectionIceErrorEventInit.port specification>
+getPortUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnectionIceErrorEventInit -> m Word
+getPortUnsafe self = liftDOM ((((self ^. js "port") >>= 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 ((P.round <$> ((self ^. js "port") >>= valToNumber)))
+
+-- | <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 (self ^. jss "url" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-url RTCPeerConnectionIceErrorEventInit.url specification>
+getUrl :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceErrorEventInit -> m (Maybe result)
+getUrl self = liftDOM (((self ^. js "url") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-url RTCPeerConnectionIceErrorEventInit.url specification>
+getUrlUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCPeerConnectionIceErrorEventInit -> m result
+getUrlUnsafe self = liftDOM ((((self ^. js "url") >>= fromMaybeJSString) >>= 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 (((self ^. js "url") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-errorcode RTCPeerConnectionIceErrorEventInit.errorCode specification>
+setErrorCode :: (MonadDOM m) => RTCPeerConnectionIceErrorEventInit -> Word -> m ()
+setErrorCode self val = liftDOM (void (self ^. jss "errorCode" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-errorcode RTCPeerConnectionIceErrorEventInit.errorCode specification>
+getErrorCode :: (MonadDOM m) => RTCPeerConnectionIceErrorEventInit -> m Word
+getErrorCode self = liftDOM ((P.round <$> ((self ^. js "errorCode") >>= valToNumber)))
+
+-- | <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 (self ^. jss "errorText" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-errortext RTCPeerConnectionIceErrorEventInit.errorText specification>
+getErrorText :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceErrorEventInit -> m (Maybe result)
+getErrorText self = liftDOM (((self ^. js "errorText") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceerroreventinit-errortext RTCPeerConnectionIceErrorEventInit.errorText specification>
+getErrorTextUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCPeerConnectionIceErrorEventInit -> m result
+getErrorTextUnsafe self = liftDOM ((((self ^. js "errorText") >>= fromMaybeJSString) >>= 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 (((self ^. js "errorText") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCPeerConnectionIceEvent.hs b/src/JSDOM/Generated/RTCPeerConnectionIceEvent.hs
--- a/src/JSDOM/Generated/RTCPeerConnectionIceEvent.hs
+++ b/src/JSDOM/Generated/RTCPeerConnectionIceEvent.hs
@@ -1,43 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module JSDOM.Generated.RTCPeerConnectionIceEvent
-       (getCandidate, getCandidateUnsafe, getCandidateUnchecked,
-        RTCPeerConnectionIceEvent(..), gTypeRTCPeerConnectionIceEvent)
+       (newRTCPeerConnectionIceEvent, getCandidate, getCandidateUnsafe, getCandidateUnchecked, RTCPeerConnectionIceEvent(..), gTypeRTCPeerConnectionIceEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionIceEvent.candidate Mozilla RTCPeerConnectionIceEvent.candidate documentation> 
-getCandidate ::
-             (MonadDOM m) =>
-               RTCPeerConnectionIceEvent -> m (Maybe RTCIceCandidate)
-getCandidate self
-  = liftDOM ((self ^. js "candidate") >>= fromJSVal)
+-- | <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 (((new (jsg "RTCPeerConnectionIceEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionIceEvent.candidate Mozilla RTCPeerConnectionIceEvent.candidate documentation> 
-getCandidateUnsafe ::
-                   (MonadDOM m, HasCallStack) =>
-                     RTCPeerConnectionIceEvent -> m RTCIceCandidate
-getCandidateUnsafe self
-  = liftDOM
-      (((self ^. js "candidate") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceEvent/candidate MDN RTCPeerConnectionIceEvent.candidate documentation>
+getCandidate :: (MonadDOM m) => RTCPeerConnectionIceEvent -> m (Maybe RTCIceCandidate)
+getCandidate self = liftDOM (((self ^. js "candidate") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionIceEvent.candidate Mozilla RTCPeerConnectionIceEvent.candidate documentation> 
-getCandidateUnchecked ::
-                      (MonadDOM m) => RTCPeerConnectionIceEvent -> m RTCIceCandidate
-getCandidateUnchecked self
-  = liftDOM ((self ^. js "candidate") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCPeerConnectionIceEvent/candidate MDN RTCPeerConnectionIceEvent.candidate documentation>
+getCandidateUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnectionIceEvent -> m RTCIceCandidate
+getCandidateUnsafe self = liftDOM ((((self ^. js "candidate") >>= 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 (((self ^. js "candidate") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCPeerConnectionIceEventInit.hs b/src/JSDOM/Generated/RTCPeerConnectionIceEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCPeerConnectionIceEventInit.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCPeerConnectionIceEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceeventinit RTCPeerConnectionIceEventInit specification>
+newRTCPeerConnectionIceEventInit :: (MonadDOM m) => m RTCPeerConnectionIceEventInit
+newRTCPeerConnectionIceEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceeventinit-candidate RTCPeerConnectionIceEventInit.candidate specification>
+setCandidate :: (MonadDOM m) => RTCPeerConnectionIceEventInit -> Maybe RTCIceCandidate -> m ()
+setCandidate self val = liftDOM (void (self ^. jss "candidate" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceeventinit-candidate RTCPeerConnectionIceEventInit.candidate specification>
+getCandidate :: (MonadDOM m) => RTCPeerConnectionIceEventInit -> m (Maybe RTCIceCandidate)
+getCandidate self = liftDOM (((self ^. js "candidate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceeventinit-candidate RTCPeerConnectionIceEventInit.candidate specification>
+getCandidateUnsafe :: (MonadDOM m, HasCallStack) => RTCPeerConnectionIceEventInit -> m RTCIceCandidate
+getCandidateUnsafe self = liftDOM ((((self ^. js "candidate") >>= 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 (((self ^. js "candidate") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "url" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceeventinit-url RTCPeerConnectionIceEventInit.url specification>
+getUrl :: (MonadDOM m, FromJSString result) => RTCPeerConnectionIceEventInit -> m (Maybe result)
+getUrl self = liftDOM (((self ^. js "url") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectioniceeventinit-url RTCPeerConnectionIceEventInit.url specification>
+getUrlUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCPeerConnectionIceEventInit -> m result
+getUrlUnsafe self = liftDOM ((((self ^. js "url") >>= fromMaybeJSString) >>= 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 (((self ^. js "url") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCRtcpParameters.hs b/src/JSDOM/Generated/RTCRtcpParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtcpParameters.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCRtcpParameters
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtcpparameters RTCRtcpParameters specification>
+newRTCRtcpParameters :: (MonadDOM m) => m RTCRtcpParameters
+newRTCRtcpParameters = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "cname" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtcpparameters-cname RTCRtcpParameters.cname specification>
+getCname :: (MonadDOM m, FromJSString result) => RTCRtcpParameters -> m (Maybe result)
+getCname self = liftDOM (((self ^. js "cname") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtcpparameters-cname RTCRtcpParameters.cname specification>
+getCnameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCRtcpParameters -> m result
+getCnameUnsafe self = liftDOM ((((self ^. js "cname") >>= fromMaybeJSString) >>= 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 (((self ^. js "cname") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtcpparameters-reducedsize RTCRtcpParameters.reducedSize specification>
+setReducedSize :: (MonadDOM m) => RTCRtcpParameters -> Bool -> m ()
+setReducedSize self val = liftDOM (void (self ^. jss "reducedSize" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtcpparameters-reducedsize RTCRtcpParameters.reducedSize specification>
+getReducedSize :: (MonadDOM m) => RTCRtcpParameters -> m (Maybe Bool)
+getReducedSize self = liftDOM (((self ^. js "reducedSize") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtcpparameters-reducedsize RTCRtcpParameters.reducedSize specification>
+getReducedSizeUnsafe :: (MonadDOM m, HasCallStack) => RTCRtcpParameters -> m Bool
+getReducedSizeUnsafe self = liftDOM ((((self ^. js "reducedSize") >>= 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 (((self ^. js "reducedSize") >>= valToBool))
diff --git a/src/JSDOM/Generated/RTCRtpCapabilities.hs b/src/JSDOM/Generated/RTCRtpCapabilities.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtpCapabilities.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCRtpCapabilities
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcapabilities RTCRtpCapabilities specification>
+newRTCRtpCapabilities :: (MonadDOM m, IsRTCRtpCodec codecs) => [codecs] -> [RTCRtpHeaderExtensionCapability] -> m RTCRtpCapabilities
+newRTCRtpCapabilities codecs headerExtensions = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "codecs" (toJSVal codecs)) P.>> (o ^. jss "headerExtensions" (toJSVal headerExtensions)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "codecs" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcapabilities-codecs RTCRtpCapabilities.codecs specification>
+getCodecs :: (MonadDOM m) => RTCRtpCapabilities -> m [RTCRtpCodec]
+getCodecs self = liftDOM (((self ^. js "codecs") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcapabilities-headerextensions RTCRtpCapabilities.headerExtensions specification>
+setHeaderExtensions :: (MonadDOM m) => RTCRtpCapabilities -> [RTCRtpHeaderExtensionCapability] -> m ()
+setHeaderExtensions self val = liftDOM (void (self ^. jss "headerExtensions" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcapabilities-headerextensions RTCRtpCapabilities.headerExtensions specification>
+getHeaderExtensions :: (MonadDOM m) => RTCRtpCapabilities -> m [RTCRtpHeaderExtensionCapability]
+getHeaderExtensions self = liftDOM (((self ^. js "headerExtensions") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCRtpCodec.hs b/src/JSDOM/Generated/RTCRtpCodec.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtpCodec.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCRtpCodec
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodec RTCRtpCodec specification>
+newRTCRtpCodec :: (MonadDOM m, ToJSString mimeType) => mimeType -> Word -> m RTCRtpCodec
+newRTCRtpCodec mimeType clockRate = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "mimeType" (toJSVal mimeType)) P.>> (o ^. jss "clockRate" (toJSVal clockRate)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toRTCRtpCodec self) ^. jss "mimeType" (toJSVal val)))
+
+-- | <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 ((((Types.toRTCRtpCodec self) ^. js "mimeType") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toRTCRtpCodec self) ^. jss "clockRate" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodec-clockrate RTCRtpCodec.clockRate specification>
+getClockRate :: (MonadDOM m, IsRTCRtpCodec self) => self -> m Word
+getClockRate self = liftDOM ((P.round <$> (((Types.toRTCRtpCodec self) ^. js "clockRate") >>= valToNumber)))
+
+-- | <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 ((Types.toRTCRtpCodec self) ^. jss "channels" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodec-channels RTCRtpCodec.channels specification>
+getChannels :: (MonadDOM m, IsRTCRtpCodec self) => self -> m (Maybe Word)
+getChannels self = liftDOM ((((Types.toRTCRtpCodec self) ^. js "channels") >>= 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 (((((Types.toRTCRtpCodec self) ^. js "channels") >>= 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 ((P.round <$> (((Types.toRTCRtpCodec self) ^. js "channels") >>= valToNumber)))
+
+-- | <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 ((Types.toRTCRtpCodec self) ^. jss "sdpFmtpLine" (toJSVal val)))
+
+-- | <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 ((((Types.toRTCRtpCodec self) ^. js "sdpFmtpLine") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toRTCRtpCodec self) ^. js "sdpFmtpLine") >>= fromMaybeJSString) >>= 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 ((((Types.toRTCRtpCodec self) ^. js "sdpFmtpLine") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCRtpCodecParameters.hs b/src/JSDOM/Generated/RTCRtpCodecParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtpCodecParameters.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCRtpCodecParameters
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "mimeType" (toJSVal mimeType)) P.>> (o ^. jss "clockRate" (toJSVal clockRate)) P.>> (o ^. jss "payloadType" (toJSVal payloadType)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodecparameters-payloadtype RTCRtpCodecParameters.payloadType specification>
+setPayloadType :: (MonadDOM m) => RTCRtpCodecParameters -> Word -> m ()
+setPayloadType self val = liftDOM (void (self ^. jss "payloadType" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodecparameters-payloadtype RTCRtpCodecParameters.payloadType specification>
+getPayloadType :: (MonadDOM m) => RTCRtpCodecParameters -> m Word
+getPayloadType self = liftDOM ((P.round <$> ((self ^. js "payloadType") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/RTCRtpCodingParameters.hs b/src/JSDOM/Generated/RTCRtpCodingParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtpCodingParameters.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCRtpCodingParameters
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcodingparameters RTCRtpCodingParameters specification>
+newRTCRtpCodingParameters :: (MonadDOM m) => m RTCRtpCodingParameters
+newRTCRtpCodingParameters = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toRTCRtpCodingParameters self) ^. jss "rid" (toJSVal val)))
+
+-- | <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 ((((Types.toRTCRtpCodingParameters self) ^. js "rid") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toRTCRtpCodingParameters self) ^. js "rid") >>= fromMaybeJSString) >>= 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 ((((Types.toRTCRtpCodingParameters self) ^. js "rid") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCRtpContributingSource.hs b/src/JSDOM/Generated/RTCRtpContributingSource.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtpContributingSource.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCRtpContributingSource
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcontributingsource RTCRtpContributingSource specification>
+newRTCRtpContributingSource :: (MonadDOM m) => Double -> Word -> Word -> m RTCRtpContributingSource
+newRTCRtpContributingSource timestamp source rtpTimestamp = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "timestamp" (toJSVal timestamp)) P.>> (o ^. jss "source" (toJSVal source)) P.>> (o ^. jss "rtpTimestamp" (toJSVal rtpTimestamp)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toRTCRtpContributingSource self) ^. jss "timestamp" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcontributingsource-timestamp RTCRtpContributingSource.timestamp specification>
+getTimestamp :: (MonadDOM m, IsRTCRtpContributingSource self) => self -> m Double
+getTimestamp self = liftDOM ((((Types.toRTCRtpContributingSource self) ^. js "timestamp") >>= valToNumber))
+
+-- | <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 ((Types.toRTCRtpContributingSource self) ^. jss "source" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcontributingsource-source RTCRtpContributingSource.source specification>
+getSource :: (MonadDOM m, IsRTCRtpContributingSource self) => self -> m Word
+getSource self = liftDOM ((P.round <$> (((Types.toRTCRtpContributingSource self) ^. js "source") >>= valToNumber)))
+
+-- | <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 ((Types.toRTCRtpContributingSource self) ^. jss "audioLevel" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcontributingsource-audiolevel RTCRtpContributingSource.audioLevel specification>
+getAudioLevel :: (MonadDOM m, IsRTCRtpContributingSource self) => self -> m (Maybe Double)
+getAudioLevel self = liftDOM ((((Types.toRTCRtpContributingSource self) ^. js "audioLevel") >>= 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 (((((Types.toRTCRtpContributingSource self) ^. js "audioLevel") >>= 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 ((((Types.toRTCRtpContributingSource self) ^. js "audioLevel") >>= valToNumber))
+
+-- | <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 ((Types.toRTCRtpContributingSource self) ^. jss "rtpTimestamp" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpcontributingsource-rtptimestamp RTCRtpContributingSource.rtpTimestamp specification>
+getRtpTimestamp :: (MonadDOM m, IsRTCRtpContributingSource self) => self -> m Word
+getRtpTimestamp self = liftDOM ((P.round <$> (((Types.toRTCRtpContributingSource self) ^. js "rtpTimestamp") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/RTCRtpEncodingParameters.hs b/src/JSDOM/Generated/RTCRtpEncodingParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtpEncodingParameters.hs
@@ -0,0 +1,148 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCRtpEncodingParameters
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters RTCRtpEncodingParameters specification>
+newRTCRtpEncodingParameters :: (MonadDOM m) => m RTCRtpEncodingParameters
+newRTCRtpEncodingParameters = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-active RTCRtpEncodingParameters.active specification>
+setActive :: (MonadDOM m) => RTCRtpEncodingParameters -> Bool -> m ()
+setActive self val = liftDOM (void (self ^. jss "active" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-active RTCRtpEncodingParameters.active specification>
+getActive :: (MonadDOM m) => RTCRtpEncodingParameters -> m (Maybe Bool)
+getActive self = liftDOM (((self ^. js "active") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-active RTCRtpEncodingParameters.active specification>
+getActiveUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpEncodingParameters -> m Bool
+getActiveUnsafe self = liftDOM ((((self ^. js "active") >>= 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 (((self ^. js "active") >>= valToBool))
+
+-- | <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 (self ^. jss "codec" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-codec RTCRtpEncodingParameters.codec specification>
+getCodec :: (MonadDOM m) => RTCRtpEncodingParameters -> m (Maybe RTCRtpCodec)
+getCodec self = liftDOM (((self ^. js "codec") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-codec RTCRtpEncodingParameters.codec specification>
+getCodecUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpEncodingParameters -> m RTCRtpCodec
+getCodecUnsafe self = liftDOM ((((self ^. js "codec") >>= 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 (((self ^. js "codec") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-maxbitrate RTCRtpEncodingParameters.maxBitrate specification>
+setMaxBitrate :: (MonadDOM m) => RTCRtpEncodingParameters -> Word -> m ()
+setMaxBitrate self val = liftDOM (void (self ^. jss "maxBitrate" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-maxbitrate RTCRtpEncodingParameters.maxBitrate specification>
+getMaxBitrate :: (MonadDOM m) => RTCRtpEncodingParameters -> m (Maybe Word)
+getMaxBitrate self = liftDOM (((self ^. js "maxBitrate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-maxbitrate RTCRtpEncodingParameters.maxBitrate specification>
+getMaxBitrateUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpEncodingParameters -> m Word
+getMaxBitrateUnsafe self = liftDOM ((((self ^. js "maxBitrate") >>= 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 ((P.round <$> ((self ^. js "maxBitrate") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-maxframerate RTCRtpEncodingParameters.maxFramerate specification>
+setMaxFramerate :: (MonadDOM m) => RTCRtpEncodingParameters -> Double -> m ()
+setMaxFramerate self val = liftDOM (void (self ^. jss "maxFramerate" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-maxframerate RTCRtpEncodingParameters.maxFramerate specification>
+getMaxFramerate :: (MonadDOM m) => RTCRtpEncodingParameters -> m (Maybe Double)
+getMaxFramerate self = liftDOM (((self ^. js "maxFramerate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-maxframerate RTCRtpEncodingParameters.maxFramerate specification>
+getMaxFramerateUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpEncodingParameters -> m Double
+getMaxFramerateUnsafe self = liftDOM ((((self ^. js "maxFramerate") >>= 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 (((self ^. js "maxFramerate") >>= valToNumber))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-scaleresolutiondownby RTCRtpEncodingParameters.scaleResolutionDownBy specification>
+setScaleResolutionDownBy :: (MonadDOM m) => RTCRtpEncodingParameters -> Double -> m ()
+setScaleResolutionDownBy self val = liftDOM (void (self ^. jss "scaleResolutionDownBy" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-scaleresolutiondownby RTCRtpEncodingParameters.scaleResolutionDownBy specification>
+getScaleResolutionDownBy :: (MonadDOM m) => RTCRtpEncodingParameters -> m (Maybe Double)
+getScaleResolutionDownBy self = liftDOM (((self ^. js "scaleResolutionDownBy") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpencodingparameters-scaleresolutiondownby RTCRtpEncodingParameters.scaleResolutionDownBy specification>
+getScaleResolutionDownByUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpEncodingParameters -> m Double
+getScaleResolutionDownByUnsafe self = liftDOM ((((self ^. js "scaleResolutionDownBy") >>= 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 (((self ^. js "scaleResolutionDownBy") >>= valToNumber))
+
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcrtpencodingparameters-priority RTCRtpEncodingParameters.priority specification>
+setPriority :: (MonadDOM m) => RTCRtpEncodingParameters -> RTCPriorityType -> m ()
+setPriority self val = liftDOM (void (self ^. jss "priority" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcrtpencodingparameters-priority RTCRtpEncodingParameters.priority specification>
+getPriority :: (MonadDOM m) => RTCRtpEncodingParameters -> m (Maybe RTCPriorityType)
+getPriority self = liftDOM (((self ^. js "priority") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcrtpencodingparameters-priority RTCRtpEncodingParameters.priority specification>
+getPriorityUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpEncodingParameters -> m RTCPriorityType
+getPriorityUnsafe self = liftDOM ((((self ^. js "priority") >>= 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 (((self ^. js "priority") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcrtpencodingparameters-networkpriority RTCRtpEncodingParameters.networkPriority specification>
+setNetworkPriority :: (MonadDOM m) => RTCRtpEncodingParameters -> RTCPriorityType -> m ()
+setNetworkPriority self val = liftDOM (void (self ^. jss "networkPriority" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcrtpencodingparameters-networkpriority RTCRtpEncodingParameters.networkPriority specification>
+getNetworkPriority :: (MonadDOM m) => RTCRtpEncodingParameters -> m (Maybe RTCPriorityType)
+getNetworkPriority self = liftDOM (((self ^. js "networkPriority") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-priority/#dom-rtcrtpencodingparameters-networkpriority RTCRtpEncodingParameters.networkPriority specification>
+getNetworkPriorityUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpEncodingParameters -> m RTCPriorityType
+getNetworkPriorityUnsafe self = liftDOM ((((self ^. js "networkPriority") >>= 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 (((self ^. js "networkPriority") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "scalabilityMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-svc/#dom-rtcrtpencodingparameters-scalabilitymode RTCRtpEncodingParameters.scalabilityMode specification>
+getScalabilityMode :: (MonadDOM m, FromJSString result) => RTCRtpEncodingParameters -> m (Maybe result)
+getScalabilityMode self = liftDOM (((self ^. js "scalabilityMode") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webrtc-svc/#dom-rtcrtpencodingparameters-scalabilitymode RTCRtpEncodingParameters.scalabilityMode specification>
+getScalabilityModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCRtpEncodingParameters -> m result
+getScalabilityModeUnsafe self = liftDOM ((((self ^. js "scalabilityMode") >>= fromMaybeJSString) >>= 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 (((self ^. js "scalabilityMode") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCRtpHeaderExtensionCapability.hs b/src/JSDOM/Generated/RTCRtpHeaderExtensionCapability.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtpHeaderExtensionCapability.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCRtpHeaderExtensionCapability
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensioncapability RTCRtpHeaderExtensionCapability specification>
+newRTCRtpHeaderExtensionCapability :: (MonadDOM m, ToJSString uri) => uri -> m RTCRtpHeaderExtensionCapability
+newRTCRtpHeaderExtensionCapability uri = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "uri" (toJSVal uri)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "uri" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensioncapability-uri RTCRtpHeaderExtensionCapability.uri specification>
+getUri :: (MonadDOM m, FromJSString result) => RTCRtpHeaderExtensionCapability -> m result
+getUri self = liftDOM (((self ^. js "uri") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCRtpHeaderExtensionParameters.hs b/src/JSDOM/Generated/RTCRtpHeaderExtensionParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtpHeaderExtensionParameters.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCRtpHeaderExtensionParameters
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensionparameters RTCRtpHeaderExtensionParameters specification>
+newRTCRtpHeaderExtensionParameters :: (MonadDOM m, ToJSString uri) => uri -> Word -> m RTCRtpHeaderExtensionParameters
+newRTCRtpHeaderExtensionParameters uri id = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "uri" (toJSVal uri)) P.>> (o ^. jss "id" (toJSVal id)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "uri" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensionparameters-uri RTCRtpHeaderExtensionParameters.uri specification>
+getUri :: (MonadDOM m, FromJSString result) => RTCRtpHeaderExtensionParameters -> m result
+getUri self = liftDOM (((self ^. js "uri") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensionparameters-id RTCRtpHeaderExtensionParameters.id specification>
+setId :: (MonadDOM m) => RTCRtpHeaderExtensionParameters -> Word -> m ()
+setId self val = liftDOM (void (self ^. jss "id" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensionparameters-id RTCRtpHeaderExtensionParameters.id specification>
+getId :: (MonadDOM m) => RTCRtpHeaderExtensionParameters -> m Word
+getId self = liftDOM ((P.round <$> ((self ^. js "id") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensionparameters-encrypted RTCRtpHeaderExtensionParameters.encrypted specification>
+setEncrypted :: (MonadDOM m) => RTCRtpHeaderExtensionParameters -> Bool -> m ()
+setEncrypted self val = liftDOM (void (self ^. jss "encrypted" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensionparameters-encrypted RTCRtpHeaderExtensionParameters.encrypted specification>
+getEncrypted :: (MonadDOM m) => RTCRtpHeaderExtensionParameters -> m (Maybe Bool)
+getEncrypted self = liftDOM (((self ^. js "encrypted") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpheaderextensionparameters-encrypted RTCRtpHeaderExtensionParameters.encrypted specification>
+getEncryptedUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpHeaderExtensionParameters -> m Bool
+getEncryptedUnsafe self = liftDOM ((((self ^. js "encrypted") >>= 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 (((self ^. js "encrypted") >>= valToBool))
diff --git a/src/JSDOM/Generated/RTCRtpParameters.hs b/src/JSDOM/Generated/RTCRtpParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtpParameters.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCRtpParameters
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpparameters RTCRtpParameters specification>
+newRTCRtpParameters :: (MonadDOM m) => [RTCRtpHeaderExtensionParameters] -> RTCRtcpParameters -> [RTCRtpCodecParameters] -> m RTCRtpParameters
+newRTCRtpParameters headerExtensions rtcp codecs = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "headerExtensions" (toJSVal headerExtensions)) P.>> (o ^. jss "rtcp" (toJSVal rtcp)) P.>> (o ^. jss "codecs" (toJSVal codecs)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toRTCRtpParameters self) ^. jss "headerExtensions" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpparameters-headerextensions RTCRtpParameters.headerExtensions specification>
+getHeaderExtensions :: (MonadDOM m, IsRTCRtpParameters self) => self -> m [RTCRtpHeaderExtensionParameters]
+getHeaderExtensions self = liftDOM ((((Types.toRTCRtpParameters self) ^. js "headerExtensions") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toRTCRtpParameters self) ^. jss "rtcp" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpparameters-rtcp RTCRtpParameters.rtcp specification>
+getRtcp :: (MonadDOM m, IsRTCRtpParameters self) => self -> m RTCRtcpParameters
+getRtcp self = liftDOM ((((Types.toRTCRtpParameters self) ^. js "rtcp") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toRTCRtpParameters self) ^. jss "codecs" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpparameters-codecs RTCRtpParameters.codecs specification>
+getCodecs :: (MonadDOM m, IsRTCRtpParameters self) => self -> m [RTCRtpCodecParameters]
+getCodecs self = liftDOM ((((Types.toRTCRtpParameters self) ^. js "codecs") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCRtpReceiveParameters.hs b/src/JSDOM/Generated/RTCRtpReceiveParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtpReceiveParameters.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCRtpReceiveParameters
+       (newRTCRtpReceiveParameters, RTCRtpReceiveParameters(..), gTypeRTCRtpReceiveParameters)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpreceiveparameters RTCRtpReceiveParameters specification>
+newRTCRtpReceiveParameters :: (MonadDOM m) => [RTCRtpHeaderExtensionParameters] -> RTCRtcpParameters -> [RTCRtpCodecParameters] -> m RTCRtpReceiveParameters
+newRTCRtpReceiveParameters headerExtensions rtcp codecs = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "headerExtensions" (toJSVal headerExtensions)) P.>> (o ^. jss "rtcp" (toJSVal rtcp)) P.>> (o ^. jss "codecs" (toJSVal codecs)) P.>> P.return o)) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCRtpReceiver.hs b/src/JSDOM/Generated/RTCRtpReceiver.hs
--- a/src/JSDOM/Generated/RTCRtpReceiver.hs
+++ b/src/JSDOM/Generated/RTCRtpReceiver.hs
@@ -1,37 +1,112 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module JSDOM.Generated.RTCRtpReceiver
-       (getParameters, getParameters_, getTrack, RTCRtpReceiver(..),
-        gTypeRTCRtpReceiver)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpReceiver.getParameters Mozilla RTCRtpReceiver.getParameters documentation> 
-getParameters ::
-              (MonadDOM m) => RTCRtpReceiver -> m RTCRtpParameters
-getParameters self
-  = liftDOM ((self ^. jsf "getParameters" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getContributingSources MDN RTCRtpReceiver.getContributingSources documentation>
+getContributingSources :: (MonadDOM m) => RTCRtpReceiver -> m [RTCRtpContributingSource]
+getContributingSources self = liftDOM (((self ^. jsf "getContributingSources" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpReceiver.getParameters Mozilla RTCRtpReceiver.getParameters documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getContributingSources MDN RTCRtpReceiver.getContributingSources documentation>
+getContributingSources_ :: (MonadDOM m) => RTCRtpReceiver -> m ()
+getContributingSources_ self = liftDOM (void (self ^. jsf "getContributingSources" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getParameters MDN RTCRtpReceiver.getParameters documentation>
+getParameters :: (MonadDOM m) => RTCRtpReceiver -> m RTCRtpReceiveParameters
+getParameters self = liftDOM (((self ^. jsf "getParameters" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getParameters MDN RTCRtpReceiver.getParameters documentation>
 getParameters_ :: (MonadDOM m) => RTCRtpReceiver -> m ()
-getParameters_ self
-  = liftDOM (void (self ^. jsf "getParameters" ()))
+getParameters_ self = liftDOM (void (self ^. jsf "getParameters" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpReceiver.track Mozilla RTCRtpReceiver.track documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getStats MDN RTCRtpReceiver.getStats documentation>
+getStats :: (MonadDOM m) => RTCRtpReceiver -> m RTCStatsReport
+getStats self = liftDOM (((((self ^. jsf "getStats" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getStats MDN RTCRtpReceiver.getStats documentation>
+getStats_ :: (MonadDOM m) => RTCRtpReceiver -> m ()
+getStats_ self = liftDOM (void (((self ^. jsf "getStats" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getSynchronizationSources MDN RTCRtpReceiver.getSynchronizationSources documentation>
+getSynchronizationSources :: (MonadDOM m) => RTCRtpReceiver -> m [RTCRtpSynchronizationSource]
+getSynchronizationSources self = liftDOM (((self ^. jsf "getSynchronizationSources" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/getSynchronizationSources MDN RTCRtpReceiver.getSynchronizationSources documentation>
+getSynchronizationSources_ :: (MonadDOM m) => RTCRtpReceiver -> m ()
+getSynchronizationSources_ self = liftDOM (void (self ^. jsf "getSynchronizationSources" ()))
+
+-- | <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 ((((jsg "RTCRtpReceiver") ^. jsf "getCapabilities" [toJSVal 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 ((jsg "RTCRtpReceiver") ^. jsf "getCapabilities" [toJSVal 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 (((((jsg "RTCRtpReceiver") ^. jsf "getCapabilities" [toJSVal 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 ((((jsg "RTCRtpReceiver") ^. jsf "getCapabilities" [toJSVal kind]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/track MDN RTCRtpReceiver.track documentation>
 getTrack :: (MonadDOM m) => RTCRtpReceiver -> m MediaStreamTrack
-getTrack self
-  = liftDOM ((self ^. js "track") >>= fromJSValUnchecked)
+getTrack self = liftDOM (((self ^. js "track") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/transport MDN RTCRtpReceiver.transport documentation>
+getTransport :: (MonadDOM m) => RTCRtpReceiver -> m (Maybe RTCDtlsTransport)
+getTransport self = liftDOM (((self ^. js "transport") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/transport MDN RTCRtpReceiver.transport documentation>
+getTransportUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpReceiver -> m RTCDtlsTransport
+getTransportUnsafe self = liftDOM ((((self ^. js "transport") >>= 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 (((self ^. js "transport") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "jitterBufferTarget" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/jitterBufferTarget MDN RTCRtpReceiver.jitterBufferTarget documentation>
+getJitterBufferTarget :: (MonadDOM m) => RTCRtpReceiver -> m (Maybe Double)
+getJitterBufferTarget self = liftDOM (((self ^. js "jitterBufferTarget") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/jitterBufferTarget MDN RTCRtpReceiver.jitterBufferTarget documentation>
+getJitterBufferTargetUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpReceiver -> m Double
+getJitterBufferTargetUnsafe self = liftDOM ((((self ^. js "jitterBufferTarget") >>= 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 (((self ^. js "jitterBufferTarget") >>= valToNumber))
+
+-- | <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 (self ^. jss "transform" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/transform MDN RTCRtpReceiver.transform documentation>
+getTransform :: (MonadDOM m) => RTCRtpReceiver -> m (Maybe RTCRtpReceiverTransform)
+getTransform self = liftDOM (((self ^. js "transform") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpReceiver/transform MDN RTCRtpReceiver.transform documentation>
+getTransformUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpReceiver -> m RTCRtpReceiverTransform
+getTransformUnsafe self = liftDOM ((((self ^. js "transform") >>= 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 (((self ^. js "transform") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCRtpSFrameDecryptor.hs b/src/JSDOM/Generated/RTCRtpSFrameDecryptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtpSFrameDecryptor.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module JSDOM.Generated.RTCRtpSFrameDecryptor
+       (RTCRtpSFrameDecryptor(..), gTypeRTCRtpSFrameDecryptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/RTCRtpSFrameEncryptor.hs b/src/JSDOM/Generated/RTCRtpSFrameEncryptor.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtpSFrameEncryptor.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module JSDOM.Generated.RTCRtpSFrameEncryptor
+       (RTCRtpSFrameEncryptor(..), gTypeRTCRtpSFrameEncryptor)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/RTCRtpScriptTransform.hs b/src/JSDOM/Generated/RTCRtpScriptTransform.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtpScriptTransform.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module JSDOM.Generated.RTCRtpScriptTransform
+       (newRTCRtpScriptTransform, RTCRtpScriptTransform(..), gTypeRTCRtpScriptTransform)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "RTCRtpScriptTransform") [toJSVal workerOrWorkerAndParameters, toJSVal options, P.maybe (P.return jsUndefined) toJSVal transfer]) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCRtpScriptTransformer.hs b/src/JSDOM/Generated/RTCRtpScriptTransformer.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtpScriptTransformer.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module JSDOM.Generated.RTCRtpScriptTransformer
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "generateKeyFrame" [P.maybe (P.return jsUndefined) toJSVal rid]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpScriptTransformer/sendKeyFrameRequest MDN RTCRtpScriptTransformer.sendKeyFrameRequest documentation>
+sendKeyFrameRequest :: (MonadDOM m) => RTCRtpScriptTransformer -> m ()
+sendKeyFrameRequest self = liftDOM (void (((self ^. jsf "sendKeyFrameRequest" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpScriptTransformer/readable MDN RTCRtpScriptTransformer.readable documentation>
+getReadable :: (MonadDOM m) => RTCRtpScriptTransformer -> m ReadableStream
+getReadable self = liftDOM (((self ^. js "readable") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpScriptTransformer/writable MDN RTCRtpScriptTransformer.writable documentation>
+getWritable :: (MonadDOM m) => RTCRtpScriptTransformer -> m WritableStream
+getWritable self = liftDOM (((self ^. js "writable") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpScriptTransformer/options MDN RTCRtpScriptTransformer.options documentation>
+getOptions :: (MonadDOM m) => RTCRtpScriptTransformer -> m JSVal
+getOptions self = liftDOM (self ^. js "options")
diff --git a/src/JSDOM/Generated/RTCRtpSendParameters.hs b/src/JSDOM/Generated/RTCRtpSendParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtpSendParameters.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCRtpSendParameters
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "headerExtensions" (toJSVal headerExtensions)) P.>> (o ^. jss "rtcp" (toJSVal rtcp)) P.>> (o ^. jss "codecs" (toJSVal codecs)) P.>> (o ^. jss "transactionId" (toJSVal transactionId)) P.>> (o ^. jss "encodings" (toJSVal encodings)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "transactionId" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpsendparameters-transactionid RTCRtpSendParameters.transactionId specification>
+getTransactionId :: (MonadDOM m, FromJSString result) => RTCRtpSendParameters -> m result
+getTransactionId self = liftDOM (((self ^. js "transactionId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpsendparameters-encodings RTCRtpSendParameters.encodings specification>
+setEncodings :: (MonadDOM m) => RTCRtpSendParameters -> [RTCRtpEncodingParameters] -> m ()
+setEncodings self val = liftDOM (void (self ^. jss "encodings" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpsendparameters-encodings RTCRtpSendParameters.encodings specification>
+getEncodings :: (MonadDOM m) => RTCRtpSendParameters -> m [RTCRtpEncodingParameters]
+getEncodings self = liftDOM (((self ^. js "encodings") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mst-content-hint/#dom-rtcrtpsendparameters-degradationpreference RTCRtpSendParameters.degradationPreference specification>
+setDegradationPreference :: (MonadDOM m) => RTCRtpSendParameters -> RTCDegradationPreference -> m ()
+setDegradationPreference self val = liftDOM (void (self ^. jss "degradationPreference" (toJSVal val)))
+
+-- | <https://w3c.github.io/mst-content-hint/#dom-rtcrtpsendparameters-degradationpreference RTCRtpSendParameters.degradationPreference specification>
+getDegradationPreference :: (MonadDOM m) => RTCRtpSendParameters -> m (Maybe RTCDegradationPreference)
+getDegradationPreference self = liftDOM (((self ^. js "degradationPreference") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mst-content-hint/#dom-rtcrtpsendparameters-degradationpreference RTCRtpSendParameters.degradationPreference specification>
+getDegradationPreferenceUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpSendParameters -> m RTCDegradationPreference
+getDegradationPreferenceUnsafe self = liftDOM ((((self ^. js "degradationPreference") >>= 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 (((self ^. js "degradationPreference") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCRtpSender.hs b/src/JSDOM/Generated/RTCRtpSender.hs
--- a/src/JSDOM/Generated/RTCRtpSender.hs
+++ b/src/JSDOM/Generated/RTCRtpSender.hs
@@ -1,60 +1,112 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module JSDOM.Generated.RTCRtpSender
-       (getParameters, getParameters_, replaceTrack, getTrack,
-        getTrackUnsafe, getTrackUnchecked, RTCRtpSender(..),
-        gTypeRTCRtpSender)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.getParameters Mozilla RTCRtpSender.getParameters documentation> 
-getParameters :: (MonadDOM m) => RTCRtpSender -> m RTCRtpParameters
-getParameters self
-  = liftDOM ((self ^. jsf "getParameters" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/getParameters MDN RTCRtpSender.getParameters documentation>
+getParameters :: (MonadDOM m) => RTCRtpSender -> m RTCRtpSendParameters
+getParameters self = liftDOM (((self ^. jsf "getParameters" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.getParameters Mozilla RTCRtpSender.getParameters documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/getParameters MDN RTCRtpSender.getParameters documentation>
 getParameters_ :: (MonadDOM m) => RTCRtpSender -> m ()
-getParameters_ self
-  = liftDOM (void (self ^. jsf "getParameters" ()))
+getParameters_ self = liftDOM (void (self ^. jsf "getParameters" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.replaceTrack Mozilla RTCRtpSender.replaceTrack documentation> 
-replaceTrack ::
-             (MonadDOM m, IsMediaStreamTrack withTrack) =>
-               RTCRtpSender -> Maybe withTrack -> m ()
-replaceTrack self withTrack
-  = liftDOM
-      (void
-         ((self ^. jsf "replaceTrack" [toJSVal withTrack]) >>= readPromise))
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/getStats MDN RTCRtpSender.getStats documentation>
+getStats :: (MonadDOM m) => RTCRtpSender -> m RTCStatsReport
+getStats self = liftDOM (((((self ^. jsf "getStats" ()) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.track Mozilla RTCRtpSender.track documentation> 
-getTrack ::
-         (MonadDOM m) => RTCRtpSender -> m (Maybe MediaStreamTrack)
-getTrack self = liftDOM ((self ^. js "track") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/getStats MDN RTCRtpSender.getStats documentation>
+getStats_ :: (MonadDOM m) => RTCRtpSender -> m ()
+getStats_ self = liftDOM (void (((self ^. jsf "getStats" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.track Mozilla RTCRtpSender.track documentation> 
-getTrackUnsafe ::
-               (MonadDOM m, HasCallStack) => RTCRtpSender -> m MediaStreamTrack
-getTrackUnsafe self
-  = liftDOM
-      (((self ^. js "track") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((self ^. jsf "replaceTrack" [toJSVal withTrack]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.track Mozilla RTCRtpSender.track documentation> 
-getTrackUnchecked ::
-                  (MonadDOM m) => RTCRtpSender -> m MediaStreamTrack
-getTrackUnchecked self
-  = liftDOM ((self ^. js "track") >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "setParameters" [toJSVal parameters, P.maybe (P.return jsUndefined) toJSVal setParameterOptions]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/setStreams MDN RTCRtpSender.setStreams documentation>
+setStreams :: (MonadDOM m) => RTCRtpSender -> [MediaStream] -> m ()
+setStreams self streams = liftDOM (void (self ^. jsf "setStreams" ([] ++ P.map toJSVal streams)))
+
+-- | <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 ((((jsg "RTCRtpSender") ^. jsf "getCapabilities" [toJSVal 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 ((jsg "RTCRtpSender") ^. jsf "getCapabilities" [toJSVal 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 (((((jsg "RTCRtpSender") ^. jsf "getCapabilities" [toJSVal 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 ((((jsg "RTCRtpSender") ^. jsf "getCapabilities" [toJSVal kind]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/track MDN RTCRtpSender.track documentation>
+getTrack :: (MonadDOM m) => RTCRtpSender -> m (Maybe MediaStreamTrack)
+getTrack self = liftDOM (((self ^. js "track") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/track MDN RTCRtpSender.track documentation>
+getTrackUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpSender -> m MediaStreamTrack
+getTrackUnsafe self = liftDOM ((((self ^. js "track") >>= 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 (((self ^. js "track") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/transport MDN RTCRtpSender.transport documentation>
+getTransport :: (MonadDOM m) => RTCRtpSender -> m (Maybe RTCDtlsTransport)
+getTransport self = liftDOM (((self ^. js "transport") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/transport MDN RTCRtpSender.transport documentation>
+getTransportUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpSender -> m RTCDtlsTransport
+getTransportUnsafe self = liftDOM ((((self ^. js "transport") >>= 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 (((self ^. js "transport") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/dtmf MDN RTCRtpSender.dtmf documentation>
+getDtmf :: (MonadDOM m) => RTCRtpSender -> m (Maybe RTCDTMFSender)
+getDtmf self = liftDOM (((self ^. js "dtmf") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/dtmf MDN RTCRtpSender.dtmf documentation>
+getDtmfUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpSender -> m RTCDTMFSender
+getDtmfUnsafe self = liftDOM ((((self ^. js "dtmf") >>= 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 (((self ^. js "dtmf") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "transform" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/transform MDN RTCRtpSender.transform documentation>
+getTransform :: (MonadDOM m) => RTCRtpSender -> m (Maybe RTCRtpSenderTransform)
+getTransform self = liftDOM (((self ^. js "transform") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpSender/transform MDN RTCRtpSender.transform documentation>
+getTransformUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpSender -> m RTCRtpSenderTransform
+getTransformUnsafe self = liftDOM ((((self ^. js "transform") >>= 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 (((self ^. js "transform") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCRtpSynchronizationSource.hs b/src/JSDOM/Generated/RTCRtpSynchronizationSource.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtpSynchronizationSource.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCRtpSynchronizationSource
+       (newRTCRtpSynchronizationSource, RTCRtpSynchronizationSource(..), gTypeRTCRtpSynchronizationSource)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtpsynchronizationsource RTCRtpSynchronizationSource specification>
+newRTCRtpSynchronizationSource :: (MonadDOM m) => Double -> Word -> Word -> m RTCRtpSynchronizationSource
+newRTCRtpSynchronizationSource timestamp source rtpTimestamp = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "timestamp" (toJSVal timestamp)) P.>> (o ^. jss "source" (toJSVal source)) P.>> (o ^. jss "rtpTimestamp" (toJSVal rtpTimestamp)) P.>> P.return o)) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCRtpTransceiver.hs b/src/JSDOM/Generated/RTCRtpTransceiver.hs
--- a/src/JSDOM/Generated/RTCRtpTransceiver.hs
+++ b/src/JSDOM/Generated/RTCRtpTransceiver.hs
@@ -1,75 +1,64 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module JSDOM.Generated.RTCRtpTransceiver
-       (setDirection, stop, getMid, getMidUnsafe, getMidUnchecked,
-        getSender, getReceiver, getStopped, getDirection,
-        RTCRtpTransceiver(..), gTypeRTCRtpTransceiver)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.setDirection Mozilla RTCRtpTransceiver.setDirection documentation> 
-setDirection ::
-             (MonadDOM m) =>
-               RTCRtpTransceiver -> RTCRtpTransceiverDirection -> m ()
-setDirection self direction
-  = liftDOM (void (self ^. jsf "setDirection" [toJSVal direction]))
+-- | <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 (self ^. jsf "setCodecPreferences" [toJSVal codecs]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.stop Mozilla RTCRtpTransceiver.stop documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/stop MDN RTCRtpTransceiver.stop documentation>
 stop :: (MonadDOM m) => RTCRtpTransceiver -> m ()
 stop self = liftDOM (void (self ^. jsf "stop" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.mid Mozilla RTCRtpTransceiver.mid documentation> 
-getMid ::
-       (MonadDOM m, FromJSString result) =>
-         RTCRtpTransceiver -> m (Maybe result)
-getMid self = liftDOM ((self ^. js "mid") >>= fromMaybeJSString)
+-- | <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 (((self ^. js "mid") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.mid Mozilla RTCRtpTransceiver.mid documentation> 
-getMidUnsafe ::
-             (MonadDOM m, HasCallStack, FromJSString result) =>
-               RTCRtpTransceiver -> m result
-getMidUnsafe self
-  = liftDOM
-      (((self ^. js "mid") >>= fromMaybeJSString) >>=
-         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 ((((self ^. js "mid") >>= fromMaybeJSString) >>= 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 ::
-                (MonadDOM m, FromJSString result) => RTCRtpTransceiver -> m result
-getMidUnchecked self
-  = liftDOM ((self ^. js "mid") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/mid MDN RTCRtpTransceiver.mid documentation>
+getMidUnchecked :: (MonadDOM m, FromJSString result) => RTCRtpTransceiver -> m result
+getMidUnchecked self = liftDOM (((self ^. js "mid") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.sender Mozilla RTCRtpTransceiver.sender documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/sender MDN RTCRtpTransceiver.sender documentation>
 getSender :: (MonadDOM m) => RTCRtpTransceiver -> m RTCRtpSender
-getSender self
-  = liftDOM ((self ^. js "sender") >>= fromJSValUnchecked)
+getSender self = liftDOM (((self ^. js "sender") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.receiver Mozilla RTCRtpTransceiver.receiver documentation> 
-getReceiver ::
-            (MonadDOM m) => RTCRtpTransceiver -> m RTCRtpReceiver
-getReceiver self
-  = liftDOM ((self ^. js "receiver") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/receiver MDN RTCRtpTransceiver.receiver documentation>
+getReceiver :: (MonadDOM m) => RTCRtpTransceiver -> m RTCRtpReceiver
+getReceiver self = liftDOM (((self ^. js "receiver") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.stopped Mozilla RTCRtpTransceiver.stopped documentation> 
-getStopped :: (MonadDOM m) => RTCRtpTransceiver -> m Bool
-getStopped self = liftDOM ((self ^. js "stopped") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/direction MDN RTCRtpTransceiver.direction documentation>
+setDirection :: (MonadDOM m) => RTCRtpTransceiver -> RTCRtpTransceiverDirection -> m ()
+setDirection self val = liftDOM (void (self ^. jss "direction" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.direction Mozilla RTCRtpTransceiver.direction documentation> 
-getDirection ::
-             (MonadDOM m) => RTCRtpTransceiver -> m RTCRtpTransceiverDirection
-getDirection self
-  = liftDOM ((self ^. js "direction") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/direction MDN RTCRtpTransceiver.direction documentation>
+getDirection :: (MonadDOM m) => RTCRtpTransceiver -> m RTCRtpTransceiverDirection
+getDirection self = liftDOM (((self ^. js "direction") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/currentDirection MDN RTCRtpTransceiver.currentDirection documentation>
+getCurrentDirection :: (MonadDOM m) => RTCRtpTransceiver -> m (Maybe RTCRtpTransceiverDirection)
+getCurrentDirection self = liftDOM (((self ^. js "currentDirection") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCRtpTransceiver/currentDirection MDN RTCRtpTransceiver.currentDirection documentation>
+getCurrentDirectionUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpTransceiver -> m RTCRtpTransceiverDirection
+getCurrentDirectionUnsafe self = liftDOM ((((self ^. js "currentDirection") >>= 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 (((self ^. js "currentDirection") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCRtpTransceiverInit.hs b/src/JSDOM/Generated/RTCRtpTransceiverInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCRtpTransceiverInit.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCRtpTransceiverInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit RTCRtpTransceiverInit specification>
+newRTCRtpTransceiverInit :: (MonadDOM m) => m RTCRtpTransceiverInit
+newRTCRtpTransceiverInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-direction RTCRtpTransceiverInit.direction specification>
+setDirection :: (MonadDOM m) => RTCRtpTransceiverInit -> RTCRtpTransceiverDirection -> m ()
+setDirection self val = liftDOM (void (self ^. jss "direction" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-direction RTCRtpTransceiverInit.direction specification>
+getDirection :: (MonadDOM m) => RTCRtpTransceiverInit -> m (Maybe RTCRtpTransceiverDirection)
+getDirection self = liftDOM (((self ^. js "direction") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-direction RTCRtpTransceiverInit.direction specification>
+getDirectionUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpTransceiverInit -> m RTCRtpTransceiverDirection
+getDirectionUnsafe self = liftDOM ((((self ^. js "direction") >>= 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 (((self ^. js "direction") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-streams RTCRtpTransceiverInit.streams specification>
+setStreams :: (MonadDOM m) => RTCRtpTransceiverInit -> [MediaStream] -> m ()
+setStreams self val = liftDOM (void (self ^. jss "streams" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-streams RTCRtpTransceiverInit.streams specification>
+getStreams :: (MonadDOM m) => RTCRtpTransceiverInit -> m (Maybe [MediaStream])
+getStreams self = liftDOM (((self ^. js "streams") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-streams RTCRtpTransceiverInit.streams specification>
+getStreamsUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpTransceiverInit -> m [MediaStream]
+getStreamsUnsafe self = liftDOM ((((self ^. js "streams") >>= 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 (((self ^. js "streams") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-sendencodings RTCRtpTransceiverInit.sendEncodings specification>
+setSendEncodings :: (MonadDOM m) => RTCRtpTransceiverInit -> [RTCRtpEncodingParameters] -> m ()
+setSendEncodings self val = liftDOM (void (self ^. jss "sendEncodings" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-sendencodings RTCRtpTransceiverInit.sendEncodings specification>
+getSendEncodings :: (MonadDOM m) => RTCRtpTransceiverInit -> m (Maybe [RTCRtpEncodingParameters])
+getSendEncodings self = liftDOM (((self ^. js "sendEncodings") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcrtptransceiverinit-sendencodings RTCRtpTransceiverInit.sendEncodings specification>
+getSendEncodingsUnsafe :: (MonadDOM m, HasCallStack) => RTCRtpTransceiverInit -> m [RTCRtpEncodingParameters]
+getSendEncodingsUnsafe self = liftDOM ((((self ^. js "sendEncodings") >>= 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 (((self ^. js "sendEncodings") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCSctpTransport.hs b/src/JSDOM/Generated/RTCSctpTransport.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCSctpTransport.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCSctpTransport
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSctpTransport/transport MDN RTCSctpTransport.transport documentation>
+getTransport :: (MonadDOM m) => RTCSctpTransport -> m RTCDtlsTransport
+getTransport self = liftDOM (((self ^. js "transport") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSctpTransport/state MDN RTCSctpTransport.state documentation>
+getState :: (MonadDOM m) => RTCSctpTransport -> m RTCSctpTransportState
+getState self = liftDOM (((self ^. js "state") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSctpTransport/maxMessageSize MDN RTCSctpTransport.maxMessageSize documentation>
+getMaxMessageSize :: (MonadDOM m) => RTCSctpTransport -> m (Maybe Double)
+getMaxMessageSize self = liftDOM (((self ^. js "maxMessageSize") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSctpTransport/maxMessageSize MDN RTCSctpTransport.maxMessageSize documentation>
+getMaxMessageSizeUnsafe :: (MonadDOM m, HasCallStack) => RTCSctpTransport -> m Double
+getMaxMessageSizeUnsafe self = liftDOM ((((self ^. js "maxMessageSize") >>= 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 (((self ^. js "maxMessageSize") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSctpTransport/maxChannels MDN RTCSctpTransport.maxChannels documentation>
+getMaxChannels :: (MonadDOM m) => RTCSctpTransport -> m (Maybe Word)
+getMaxChannels self = liftDOM (((self ^. js "maxChannels") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSctpTransport/maxChannels MDN RTCSctpTransport.maxChannels documentation>
+getMaxChannelsUnsafe :: (MonadDOM m, HasCallStack) => RTCSctpTransport -> m Word
+getMaxChannelsUnsafe self = liftDOM ((((self ^. js "maxChannels") >>= 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 ((P.round <$> ((self ^. js "maxChannels") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcsctptransport-onstatechange statechange event>
+statechange :: EventName RTCSctpTransport Event
+statechange = unsafeEventName (toJSString "statechange")
diff --git a/src/JSDOM/Generated/RTCSessionDescription.hs b/src/JSDOM/Generated/RTCSessionDescription.hs
--- a/src/JSDOM/Generated/RTCSessionDescription.hs
+++ b/src/JSDOM/Generated/RTCSessionDescription.hs
@@ -1,40 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module JSDOM.Generated.RTCSessionDescription
-       (newRTCSessionDescription, getType, getSdp,
-        RTCSessionDescription(..), gTypeRTCSessionDescription)
+       (newRTCSessionDescription, toJSON, toJSON_, getType, getSdp, RTCSessionDescription(..), gTypeRTCSessionDescription)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription Mozilla RTCSessionDescription documentation> 
-newRTCSessionDescription ::
-                         (MonadDOM m) =>
-                           RTCSessionDescriptionInit -> m RTCSessionDescription
-newRTCSessionDescription descriptionInitDict
-  = liftDOM
-      (RTCSessionDescription <$>
-         new (jsg "RTCSessionDescription") [toJSVal descriptionInitDict])
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSessionDescription/RTCSessionDescription MDN RTCSessionDescription. documentation>
+newRTCSessionDescription :: (MonadDOM m) => RTCSessionDescriptionInit -> m RTCSessionDescription
+newRTCSessionDescription descriptionInitDict = liftDOM (((new (jsg "RTCSessionDescription") [toJSVal descriptionInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription.type Mozilla RTCSessionDescription.type documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSessionDescription/toJSON MDN RTCSessionDescription.toJSON documentation>
+toJSON :: (MonadDOM m) => RTCSessionDescription -> m RTCSessionDescriptionInit
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSessionDescription/toJSON MDN RTCSessionDescription.toJSON documentation>
+toJSON_ :: (MonadDOM m) => RTCSessionDescription -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSessionDescription/type MDN RTCSessionDescription.type documentation>
 getType :: (MonadDOM m) => RTCSessionDescription -> m RTCSdpType
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription.sdp Mozilla RTCSessionDescription.sdp documentation> 
-getSdp ::
-       (MonadDOM m, FromJSString result) =>
-         RTCSessionDescription -> m result
-getSdp self = liftDOM ((self ^. js "sdp") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCSessionDescription/sdp MDN RTCSessionDescription.sdp documentation>
+getSdp :: (MonadDOM m, FromJSString result) => RTCSessionDescription -> m result
+getSdp self = liftDOM (((self ^. js "sdp") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCSessionDescriptionCallback.hs b/src/JSDOM/Generated/RTCSessionDescriptionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCSessionDescriptionCallback.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newRTCSessionDescriptionCallback :: (MonadDOM m) => (RTCSessionDescriptionInit -> JSM ()) -> m RTCSessionDescriptionCallback
+newRTCSessionDescriptionCallback callback = liftDOM (RTCSessionDescriptionCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (description : _) -> do
+          description' <- fromJSValUnchecked description
+          callback description'))
+
+newRTCSessionDescriptionCallbackSync :: (MonadDOM m) => (RTCSessionDescriptionInit -> JSM ()) -> m RTCSessionDescriptionCallback
+newRTCSessionDescriptionCallbackSync callback = liftDOM (RTCSessionDescriptionCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (description : _) -> do
+          description' <- fromJSValUnchecked description
+          callback description'))
+
+newRTCSessionDescriptionCallbackAsync :: (MonadDOM m) => (RTCSessionDescriptionInit -> JSM ()) -> m RTCSessionDescriptionCallback
+newRTCSessionDescriptionCallbackAsync callback = liftDOM (RTCSessionDescriptionCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (description : _) -> do
+          description' <- fromJSValUnchecked description
+          callback description'))
diff --git a/src/JSDOM/Generated/RTCSessionDescriptionInit.hs b/src/JSDOM/Generated/RTCSessionDescriptionInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCSessionDescriptionInit.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCSessionDescriptionInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcsessiondescriptioninit RTCSessionDescriptionInit specification>
+newRTCSessionDescriptionInit :: (MonadDOM m) => RTCSdpType -> m RTCSessionDescriptionInit
+newRTCSessionDescriptionInit type' = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "type" (toJSVal type')) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcsessiondescriptioninit-type RTCSessionDescriptionInit.type specification>
+setType :: (MonadDOM m) => RTCSessionDescriptionInit -> RTCSdpType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcsessiondescriptioninit-type RTCSessionDescriptionInit.type specification>
+getType :: (MonadDOM m) => RTCSessionDescriptionInit -> m RTCSdpType
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "sdp" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcsessiondescriptioninit-sdp RTCSessionDescriptionInit.sdp specification>
+getSdp :: (MonadDOM m, FromJSString result) => RTCSessionDescriptionInit -> m (Maybe result)
+getSdp self = liftDOM (((self ^. js "sdp") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcsessiondescriptioninit-sdp RTCSessionDescriptionInit.sdp specification>
+getSdpUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RTCSessionDescriptionInit -> m result
+getSdpUnsafe self = liftDOM ((((self ^. js "sdp") >>= fromMaybeJSString) >>= 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 (((self ^. js "sdp") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCSetParameterOptions.hs b/src/JSDOM/Generated/RTCSetParameterOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCSetParameterOptions.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCSetParameterOptions
+       (newRTCSetParameterOptions, RTCSetParameterOptions(..), gTypeRTCSetParameterOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtcsetparameteroptions RTCSetParameterOptions specification>
+newRTCSetParameterOptions :: (MonadDOM m) => m RTCSetParameterOptions
+newRTCSetParameterOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCStatsReport.hs b/src/JSDOM/Generated/RTCStatsReport.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCStatsReport.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCStatsReport
+       (RTCStatsReport(..), gTypeRTCStatsReport)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/RTCTrackEvent.hs b/src/JSDOM/Generated/RTCTrackEvent.hs
--- a/src/JSDOM/Generated/RTCTrackEvent.hs
+++ b/src/JSDOM/Generated/RTCTrackEvent.hs
@@ -1,51 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
 module JSDOM.Generated.RTCTrackEvent
-       (newRTCTrackEvent, getReceiver, getTrack, getStreams,
-        getTransceiver, RTCTrackEvent(..), gTypeRTCTrackEvent)
+       (newRTCTrackEvent, getReceiver, getTrack, getStreams, getTransceiver, RTCTrackEvent(..), gTypeRTCTrackEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEvent Mozilla RTCTrackEvent documentation> 
-newRTCTrackEvent ::
-                 (MonadDOM m, ToJSString type') =>
-                   type' -> RTCTrackEventInit -> m RTCTrackEvent
-newRTCTrackEvent type' eventInitDict
-  = liftDOM
-      (RTCTrackEvent <$>
-         new (jsg "RTCTrackEvent") [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "RTCTrackEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEvent.receiver Mozilla RTCTrackEvent.receiver documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCTrackEvent/receiver MDN RTCTrackEvent.receiver documentation>
 getReceiver :: (MonadDOM m) => RTCTrackEvent -> m RTCRtpReceiver
-getReceiver self
-  = liftDOM ((self ^. js "receiver") >>= fromJSValUnchecked)
+getReceiver self = liftDOM (((self ^. js "receiver") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEvent.track Mozilla RTCTrackEvent.track documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCTrackEvent/track MDN RTCTrackEvent.track documentation>
 getTrack :: (MonadDOM m) => RTCTrackEvent -> m MediaStreamTrack
-getTrack self
-  = liftDOM ((self ^. js "track") >>= fromJSValUnchecked)
+getTrack self = liftDOM (((self ^. js "track") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEvent.streams Mozilla RTCTrackEvent.streams documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/RTCTrackEvent/streams MDN RTCTrackEvent.streams documentation>
 getStreams :: (MonadDOM m) => RTCTrackEvent -> m [MediaStream]
-getStreams self
-  = liftDOM ((self ^. js "streams") >>= fromJSArrayUnchecked)
+getStreams self = liftDOM (((self ^. js "streams") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEvent.transceiver Mozilla RTCTrackEvent.transceiver documentation> 
-getTransceiver ::
-               (MonadDOM m) => RTCTrackEvent -> m RTCRtpTransceiver
-getTransceiver self
-  = liftDOM ((self ^. js "transceiver") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RTCTrackEvent/transceiver MDN RTCTrackEvent.transceiver documentation>
+getTransceiver :: (MonadDOM m) => RTCTrackEvent -> m RTCRtpTransceiver
+getTransceiver self = liftDOM (((self ^. js "transceiver") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCTrackEventInit.hs b/src/JSDOM/Generated/RTCTrackEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCTrackEventInit.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc (webref). Do not edit.
+module JSDOM.Generated.RTCTrackEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "receiver" (toJSVal receiver)) P.>> (o ^. jss "track" (toJSVal track)) P.>> (o ^. jss "transceiver" (toJSVal transceiver)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-receiver RTCTrackEventInit.receiver specification>
+setReceiver :: (MonadDOM m) => RTCTrackEventInit -> RTCRtpReceiver -> m ()
+setReceiver self val = liftDOM (void (self ^. jss "receiver" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-receiver RTCTrackEventInit.receiver specification>
+getReceiver :: (MonadDOM m) => RTCTrackEventInit -> m RTCRtpReceiver
+getReceiver self = liftDOM (((self ^. js "receiver") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "track" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-track RTCTrackEventInit.track specification>
+getTrack :: (MonadDOM m) => RTCTrackEventInit -> m MediaStreamTrack
+getTrack self = liftDOM (((self ^. js "track") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-streams RTCTrackEventInit.streams specification>
+setStreams :: (MonadDOM m) => RTCTrackEventInit -> [MediaStream] -> m ()
+setStreams self val = liftDOM (void (self ^. jss "streams" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-streams RTCTrackEventInit.streams specification>
+getStreams :: (MonadDOM m) => RTCTrackEventInit -> m (Maybe [MediaStream])
+getStreams self = liftDOM (((self ^. js "streams") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-streams RTCTrackEventInit.streams specification>
+getStreamsUnsafe :: (MonadDOM m, HasCallStack) => RTCTrackEventInit -> m [MediaStream]
+getStreamsUnsafe self = liftDOM ((((self ^. js "streams") >>= 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 (((self ^. js "streams") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-transceiver RTCTrackEventInit.transceiver specification>
+setTransceiver :: (MonadDOM m) => RTCTrackEventInit -> RTCRtpTransceiver -> m ()
+setTransceiver self val = liftDOM (void (self ^. jss "transceiver" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-pc/#dom-rtctrackeventinit-transceiver RTCTrackEventInit.transceiver specification>
+getTransceiver :: (MonadDOM m) => RTCTrackEventInit -> m RTCRtpTransceiver
+getTransceiver self = liftDOM (((self ^. js "transceiver") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RTCTransformEvent.hs b/src/JSDOM/Generated/RTCTransformEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RTCTransformEvent.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module JSDOM.Generated.RTCTransformEvent
+       (getTransformer, RTCTransformEvent(..), gTypeRTCTransformEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/RTCTransformEvent/transformer MDN RTCTransformEvent.transformer documentation>
+getTransformer :: (MonadDOM m) => RTCTransformEvent -> m RTCRtpScriptTransformer
+getTransformer self = liftDOM (((self ^. js "transformer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RadioNodeList.hs b/src/JSDOM/Generated/RadioNodeList.hs
--- a/src/JSDOM/Generated/RadioNodeList.hs
+++ b/src/JSDOM/Generated/RadioNodeList.hs
@@ -1,43 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.RadioNodeList
-       (get, get_, setValue, getValue, RadioNodeList(..),
-        gTypeRadioNodeList)
+       (setValue, getValue, RadioNodeList(..), gTypeRadioNodeList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList.get Mozilla RadioNodeList.get documentation> 
-get :: (MonadDOM m) => RadioNodeList -> Word -> m HTMLElement
-get self index
-  = liftDOM
-      ((self ^. jsf "get" [toJSVal index]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList.get Mozilla RadioNodeList.get documentation> 
-get_ :: (MonadDOM m) => RadioNodeList -> Word -> m ()
-get_ self index
-  = liftDOM (void (self ^. jsf "get" [toJSVal index]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList.value Mozilla RadioNodeList.value documentation> 
-setValue ::
-         (MonadDOM m, ToJSString val) => RadioNodeList -> val -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+-- | <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 (self ^. jss "value" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList.value Mozilla RadioNodeList.value documentation> 
-getValue ::
-         (MonadDOM m, FromJSString result) => RadioNodeList -> m result
-getValue self
-  = liftDOM ((self ^. js "value") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/RadioNodeList/value MDN RadioNodeList.value documentation>
+getValue :: (MonadDOM m, FromJSString result) => RadioNodeList -> m result
+getValue self = liftDOM (((self ^. js "value") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Range.hs b/src/JSDOM/Generated/Range.hs
--- a/src/JSDOM/Generated/Range.hs
+++ b/src/JSDOM/Generated/Range.hs
@@ -1,308 +1,164 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.Range
-       (newRange, setStart, setEnd, setStartBefore, setStartAfter,
-        setEndBefore, setEndAfter, collapse, selectNode,
-        selectNodeContents, compareBoundaryPoints, compareBoundaryPoints_,
-        deleteContents, extractContents, extractContents_, cloneContents,
-        cloneContents_, insertNode, surroundContents, cloneRange,
-        cloneRange_, detach, isPointInRange, isPointInRange_, comparePoint,
-        comparePoint_, intersectsNode, intersectsNode_, toString,
-        toString_, getClientRects, getClientRects_, getBoundingClientRect,
-        getBoundingClientRect_, createContextualFragment,
-        createContextualFragment_, expand, 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,
-        getStartContainer, getStartOffset, getEndContainer, getEndOffset,
-        getCollapsed, getCommonAncestorContainer, Range(..), gTypeRange)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range Mozilla Range documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Range/Range MDN Range. documentation>
 newRange :: (MonadDOM m) => m Range
-newRange = liftDOM (Range <$> new (jsg "Range") ())
+newRange = liftDOM (((new (jsg "Range") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStart Mozilla Range.setStart documentation> 
-setStart ::
-         (MonadDOM m, IsNode node) => Range -> node -> Word -> m ()
-setStart self node offset
-  = liftDOM
-      (void (self ^. jsf "setStart" [toJSVal node, toJSVal offset]))
+-- | <https://developer.mozilla.org/docs/Web/API/Range/cloneContents MDN Range.cloneContents documentation>
+cloneContents :: (MonadDOM m) => Range -> m DocumentFragment
+cloneContents self = liftDOM (((self ^. jsf "cloneContents" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEnd Mozilla Range.setEnd documentation> 
-setEnd ::
-       (MonadDOM m, IsNode node) => Range -> node -> Word -> m ()
-setEnd self node offset
-  = liftDOM
-      (void (self ^. jsf "setEnd" [toJSVal node, toJSVal offset]))
+-- | <https://developer.mozilla.org/docs/Web/API/Range/cloneContents MDN Range.cloneContents documentation>
+cloneContents_ :: (MonadDOM m) => Range -> m ()
+cloneContents_ self = liftDOM (void (self ^. jsf "cloneContents" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStartBefore Mozilla Range.setStartBefore documentation> 
-setStartBefore ::
-               (MonadDOM m, IsNode node) => Range -> node -> m ()
-setStartBefore self node
-  = liftDOM (void (self ^. jsf "setStartBefore" [toJSVal node]))
+-- | <https://developer.mozilla.org/docs/Web/API/Range/cloneRange MDN Range.cloneRange documentation>
+cloneRange :: (MonadDOM m) => Range -> m Range
+cloneRange self = liftDOM (((self ^. jsf "cloneRange" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStartAfter Mozilla Range.setStartAfter documentation> 
-setStartAfter :: (MonadDOM m, IsNode node) => Range -> node -> m ()
-setStartAfter self node
-  = liftDOM (void (self ^. jsf "setStartAfter" [toJSVal node]))
+-- | <https://developer.mozilla.org/docs/Web/API/Range/cloneRange MDN Range.cloneRange documentation>
+cloneRange_ :: (MonadDOM m) => Range -> m ()
+cloneRange_ self = liftDOM (void (self ^. jsf "cloneRange" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEndBefore Mozilla Range.setEndBefore documentation> 
-setEndBefore :: (MonadDOM m, IsNode node) => Range -> node -> m ()
-setEndBefore self node
-  = liftDOM (void (self ^. jsf "setEndBefore" [toJSVal node]))
+-- | <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 (self ^. jsf "collapse" [P.maybe (P.return jsUndefined) toJSVal toStart]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEndAfter Mozilla Range.setEndAfter documentation> 
-setEndAfter :: (MonadDOM m, IsNode node) => Range -> node -> m ()
-setEndAfter self node
-  = liftDOM (void (self ^. jsf "setEndAfter" [toJSVal node]))
+-- | <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 ((P.round <$> ((self ^. jsf "compareBoundaryPoints" [toJSVal how, toJSVal sourceRange]) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.collapse Mozilla Range.collapse documentation> 
-collapse :: (MonadDOM m) => Range -> Bool -> m ()
-collapse self toStart
-  = liftDOM (void (self ^. jsf "collapse" [toJSVal toStart]))
+-- | <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 (self ^. jsf "compareBoundaryPoints" [toJSVal how, toJSVal sourceRange]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.selectNode Mozilla Range.selectNode documentation> 
-selectNode :: (MonadDOM m, IsNode node) => Range -> node -> m ()
-selectNode self node
-  = liftDOM (void (self ^. jsf "selectNode" [toJSVal node]))
+-- | <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 ((P.round <$> ((self ^. jsf "comparePoint" [toJSVal node, toJSVal offset]) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.selectNodeContents Mozilla Range.selectNodeContents documentation> 
-selectNodeContents ::
-                   (MonadDOM m, IsNode node) => Range -> node -> m ()
-selectNodeContents self node
-  = liftDOM (void (self ^. jsf "selectNodeContents" [toJSVal node]))
+-- | <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 (self ^. jsf "comparePoint" [toJSVal node, toJSVal offset]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.compareBoundaryPoints Mozilla Range.compareBoundaryPoints documentation> 
-compareBoundaryPoints ::
-                      (MonadDOM m) => Range -> Word -> Range -> m Int
-compareBoundaryPoints self how sourceRange
-  = liftDOM
-      (round <$>
-         ((self ^. jsf "compareBoundaryPoints"
-             [toJSVal how, toJSVal sourceRange])
-            >>= valToNumber))
+-- | <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 (((self ^. jsf "createContextualFragment" [toJSVal string]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.compareBoundaryPoints Mozilla Range.compareBoundaryPoints documentation> 
-compareBoundaryPoints_ ::
-                       (MonadDOM m) => Range -> Word -> Range -> m ()
-compareBoundaryPoints_ self how sourceRange
-  = liftDOM
-      (void
-         (self ^. jsf "compareBoundaryPoints"
-            [toJSVal how, toJSVal 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 (self ^. jsf "createContextualFragment" [toJSVal string]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.deleteContents Mozilla Range.deleteContents documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Range/deleteContents MDN Range.deleteContents documentation>
 deleteContents :: (MonadDOM m) => Range -> m ()
-deleteContents self
-  = liftDOM (void (self ^. jsf "deleteContents" ()))
+deleteContents self = liftDOM (void (self ^. jsf "deleteContents" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.extractContents Mozilla Range.extractContents documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Range/detach MDN Range.detach documentation>
+detach :: (MonadDOM m) => Range -> m ()
+detach self = liftDOM (void (self ^. jsf "detach" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Range/extractContents MDN Range.extractContents documentation>
 extractContents :: (MonadDOM m) => Range -> m DocumentFragment
-extractContents self
-  = liftDOM
-      ((self ^. jsf "extractContents" ()) >>= fromJSValUnchecked)
+extractContents self = liftDOM (((self ^. jsf "extractContents" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.extractContents Mozilla Range.extractContents documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Range/extractContents MDN Range.extractContents documentation>
 extractContents_ :: (MonadDOM m) => Range -> m ()
-extractContents_ self
-  = liftDOM (void (self ^. jsf "extractContents" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneContents Mozilla Range.cloneContents documentation> 
-cloneContents :: (MonadDOM m) => Range -> m DocumentFragment
-cloneContents self
-  = liftDOM ((self ^. jsf "cloneContents" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneContents Mozilla Range.cloneContents documentation> 
-cloneContents_ :: (MonadDOM m) => Range -> m ()
-cloneContents_ self
-  = liftDOM (void (self ^. jsf "cloneContents" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.insertNode Mozilla Range.insertNode documentation> 
-insertNode :: (MonadDOM m, IsNode node) => Range -> node -> m ()
-insertNode self node
-  = liftDOM (void (self ^. jsf "insertNode" [toJSVal node]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.surroundContents Mozilla Range.surroundContents documentation> 
-surroundContents ::
-                 (MonadDOM m, IsNode newParent) => Range -> newParent -> m ()
-surroundContents self newParent
-  = liftDOM
-      (void (self ^. jsf "surroundContents" [toJSVal newParent]))
+extractContents_ self = liftDOM (void (self ^. jsf "extractContents" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneRange Mozilla Range.cloneRange documentation> 
-cloneRange :: (MonadDOM m) => Range -> m Range
-cloneRange self
-  = liftDOM ((self ^. jsf "cloneRange" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Range/getBoundingClientRect MDN Range.getBoundingClientRect documentation>
+getBoundingClientRect :: (MonadDOM m) => Range -> m DOMRect
+getBoundingClientRect self = liftDOM (((self ^. jsf "getBoundingClientRect" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneRange Mozilla Range.cloneRange documentation> 
-cloneRange_ :: (MonadDOM m) => Range -> m ()
-cloneRange_ self = liftDOM (void (self ^. jsf "cloneRange" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/Range/getBoundingClientRect MDN Range.getBoundingClientRect documentation>
+getBoundingClientRect_ :: (MonadDOM m) => Range -> m ()
+getBoundingClientRect_ self = liftDOM (void (self ^. jsf "getBoundingClientRect" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.detach Mozilla Range.detach documentation> 
-detach :: (MonadDOM m) => Range -> m ()
-detach self = liftDOM (void (self ^. jsf "detach" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/Range/getClientRects MDN Range.getClientRects documentation>
+getClientRects :: (MonadDOM m) => Range -> m DOMRectList
+getClientRects self = liftDOM (((self ^. jsf "getClientRects" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.isPointInRange Mozilla Range.isPointInRange documentation> 
-isPointInRange ::
-               (MonadDOM m, IsNode node) => Range -> node -> Word -> m Bool
-isPointInRange self node offset
-  = liftDOM
-      ((self ^. jsf "isPointInRange" [toJSVal node, toJSVal offset]) >>=
-         valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/Range/getClientRects MDN Range.getClientRects documentation>
+getClientRects_ :: (MonadDOM m) => Range -> m ()
+getClientRects_ self = liftDOM (void (self ^. jsf "getClientRects" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.isPointInRange Mozilla Range.isPointInRange documentation> 
-isPointInRange_ ::
-                (MonadDOM m, IsNode node) => Range -> node -> Word -> m ()
-isPointInRange_ self node offset
-  = liftDOM
-      (void
-         (self ^. jsf "isPointInRange" [toJSVal node, toJSVal offset]))
+-- | <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 (self ^. jsf "insertNode" [toJSVal node]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.comparePoint Mozilla Range.comparePoint documentation> 
-comparePoint ::
-             (MonadDOM m, IsNode node) => Range -> node -> Word -> m Int
-comparePoint self node offset
-  = liftDOM
-      (round <$>
-         ((self ^. jsf "comparePoint" [toJSVal node, toJSVal offset]) >>=
-            valToNumber))
+-- | <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 (((self ^. jsf "intersectsNode" [toJSVal node]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.comparePoint Mozilla Range.comparePoint documentation> 
-comparePoint_ ::
-              (MonadDOM m, IsNode node) => Range -> node -> Word -> m ()
-comparePoint_ self node offset
-  = liftDOM
-      (void (self ^. jsf "comparePoint" [toJSVal node, toJSVal offset]))
+-- | <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 (self ^. jsf "intersectsNode" [toJSVal node]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.intersectsNode Mozilla Range.intersectsNode documentation> 
-intersectsNode ::
-               (MonadDOM m, IsNode node) => Range -> node -> m Bool
-intersectsNode self node
-  = liftDOM
-      ((self ^. jsf "intersectsNode" [toJSVal node]) >>= valToBool)
+-- | <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 (((self ^. jsf "isPointInRange" [toJSVal node, toJSVal offset]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.intersectsNode Mozilla Range.intersectsNode documentation> 
-intersectsNode_ ::
-                (MonadDOM m, IsNode node) => Range -> node -> m ()
-intersectsNode_ self node
-  = liftDOM (void (self ^. jsf "intersectsNode" [toJSVal node]))
+-- | <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 (self ^. jsf "isPointInRange" [toJSVal node, toJSVal offset]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.toString Mozilla Range.toString documentation> 
-toString :: (MonadDOM m, FromJSString result) => Range -> m result
-toString self
-  = liftDOM ((self ^. jsf "toString" ()) >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "selectNode" [toJSVal node]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.toString Mozilla Range.toString documentation> 
-toString_ :: (MonadDOM m) => Range -> m ()
-toString_ self = liftDOM (void (self ^. jsf "toString" ()))
+-- | <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 (self ^. jsf "selectNodeContents" [toJSVal node]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getClientRects Mozilla Range.getClientRects documentation> 
-getClientRects :: (MonadDOM m) => Range -> m [DOMRect]
-getClientRects self
-  = liftDOM
-      ((self ^. jsf "getClientRects" ()) >>= fromJSArrayUnchecked)
+-- | <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 (self ^. jsf "setEnd" [toJSVal node, toJSVal offset]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getClientRects Mozilla Range.getClientRects documentation> 
-getClientRects_ :: (MonadDOM m) => Range -> m ()
-getClientRects_ self
-  = liftDOM (void (self ^. jsf "getClientRects" ()))
+-- | <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 (self ^. jsf "setEndAfter" [toJSVal node]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getBoundingClientRect Mozilla Range.getBoundingClientRect documentation> 
-getBoundingClientRect :: (MonadDOM m) => Range -> m DOMRect
-getBoundingClientRect self
-  = liftDOM
-      ((self ^. jsf "getBoundingClientRect" ()) >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "setEndBefore" [toJSVal node]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getBoundingClientRect Mozilla Range.getBoundingClientRect documentation> 
-getBoundingClientRect_ :: (MonadDOM m) => Range -> m ()
-getBoundingClientRect_ self
-  = liftDOM (void (self ^. jsf "getBoundingClientRect" ()))
+-- | <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 (self ^. jsf "setStart" [toJSVal node, toJSVal offset]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.createContextualFragment Mozilla Range.createContextualFragment documentation> 
-createContextualFragment ::
-                         (MonadDOM m, ToJSString fragment) =>
-                           Range -> fragment -> m DocumentFragment
-createContextualFragment self fragment
-  = liftDOM
-      ((self ^. jsf "createContextualFragment" [toJSVal fragment]) >>=
-         fromJSValUnchecked)
+-- | <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 (self ^. jsf "setStartAfter" [toJSVal node]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.createContextualFragment Mozilla Range.createContextualFragment documentation> 
-createContextualFragment_ ::
-                          (MonadDOM m, ToJSString fragment) => Range -> fragment -> m ()
-createContextualFragment_ self fragment
-  = liftDOM
-      (void (self ^. jsf "createContextualFragment" [toJSVal fragment]))
+-- | <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 (self ^. jsf "setStartBefore" [toJSVal node]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.expand Mozilla Range.expand documentation> 
-expand ::
-       (MonadDOM m, ToJSString unit) => Range -> Maybe unit -> m ()
-expand self unit
-  = liftDOM (void (self ^. jsf "expand" [toJSVal unit]))
+-- | <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 (self ^. jsf "surroundContents" [toJSVal newParent]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.compareNode Mozilla Range.compareNode documentation> 
-compareNode :: (MonadDOM m, IsNode node) => Range -> node -> m Int
-compareNode self node
-  = liftDOM
-      (round <$>
-         ((self ^. jsf "compareNode" [toJSVal node]) >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Range/commonAncestorContainer MDN Range.commonAncestorContainer documentation>
+getCommonAncestorContainer :: (MonadDOM m) => Range -> m Node
+getCommonAncestorContainer self = liftDOM (((self ^. js "commonAncestorContainer") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.compareNode Mozilla Range.compareNode documentation> 
-compareNode_ :: (MonadDOM m, IsNode node) => Range -> node -> m ()
-compareNode_ self node
-  = liftDOM (void (self ^. jsf "compareNode" [toJSVal 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
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.startContainer Mozilla Range.startContainer documentation> 
-getStartContainer :: (MonadDOM m) => Range -> m Node
-getStartContainer self
-  = liftDOM ((self ^. js "startContainer") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.startOffset Mozilla Range.startOffset documentation> 
-getStartOffset :: (MonadDOM m) => Range -> m Int
-getStartOffset self
-  = liftDOM (round <$> ((self ^. js "startOffset") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.endContainer Mozilla Range.endContainer documentation> 
-getEndContainer :: (MonadDOM m) => Range -> m Node
-getEndContainer self
-  = liftDOM ((self ^. js "endContainer") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.endOffset Mozilla Range.endOffset documentation> 
-getEndOffset :: (MonadDOM m) => Range -> m Int
-getEndOffset self
-  = liftDOM (round <$> ((self ^. js "endOffset") >>= valToNumber))
+pattern START_TO_END = 1
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.collapsed Mozilla Range.collapsed documentation> 
-getCollapsed :: (MonadDOM m) => Range -> m Bool
-getCollapsed self
-  = liftDOM ((self ^. js "collapsed") >>= valToBool)
+pattern END_TO_END = 2
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.commonAncestorContainer Mozilla Range.commonAncestorContainer documentation> 
-getCommonAncestorContainer :: (MonadDOM m) => Range -> m Node
-getCommonAncestorContainer self
-  = liftDOM
-      ((self ^. js "commonAncestorContainer") >>= fromJSValUnchecked)
+pattern END_TO_START = 3
diff --git a/src/JSDOM/Generated/ReadableByteStreamController.hs b/src/JSDOM/Generated/ReadableByteStreamController.hs
--- a/src/JSDOM/Generated/ReadableByteStreamController.hs
+++ b/src/JSDOM/Generated/ReadableByteStreamController.hs
@@ -1,66 +1,52 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module JSDOM.Generated.ReadableByteStreamController
-       (newReadableByteStreamController, enqueue, close, error,
-        getByobRequest, getDesiredSize, ReadableByteStreamController(..),
-        gTypeReadableByteStreamController)
+       (close, enqueue, error, getByobRequest, getByobRequestUnsafe, getByobRequestUnchecked, getDesiredSize, getDesiredSizeUnsafe, getDesiredSizeUnchecked, ReadableByteStreamController(..), gTypeReadableByteStreamController)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController Mozilla ReadableByteStreamController documentation> 
-newReadableByteStreamController ::
-                                (MonadDOM m, ToJSVal underlyingByteSource) =>
-                                  ReadableStream ->
-                                    underlyingByteSource -> Word -> m ReadableByteStreamController
-newReadableByteStreamController stream underlyingByteSource
-  highWaterMark
-  = liftDOM
-      (ReadableByteStreamController <$>
-         new (jsg "ReadableByteStreamController")
-           [toJSVal stream, toJSVal underlyingByteSource,
-            toJSVal highWaterMark])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController.enqueue Mozilla ReadableByteStreamController.enqueue documentation> 
-enqueue ::
-        (MonadDOM m, ToJSVal chunk) =>
-          ReadableByteStreamController -> Maybe chunk -> m ()
-enqueue self chunk
-  = liftDOM (void (self ^. jsf "enqueue" [toJSVal chunk]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController.close Mozilla ReadableByteStreamController.close documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/close MDN ReadableByteStreamController.close documentation>
 close :: (MonadDOM m) => ReadableByteStreamController -> m ()
 close self = liftDOM (void (self ^. jsf "close" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController.error Mozilla ReadableByteStreamController.error documentation> 
-error ::
-      (MonadDOM m, ToJSVal error) =>
-        ReadableByteStreamController -> Maybe error -> m ()
-error self error
-  = liftDOM (void (self ^. jsf "error" [toJSVal error]))
+-- | <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 (self ^. jsf "enqueue" [toJSVal chunk]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController.byobRequest Mozilla ReadableByteStreamController.byobRequest documentation> 
-getByobRequest ::
-               (MonadDOM m) =>
-                 ReadableByteStreamController -> m ReadableStreamBYOBRequest
-getByobRequest self
-  = liftDOM ((self ^. js "byobRequest") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/error MDN ReadableByteStreamController.error documentation>
+error :: (MonadDOM m) => ReadableByteStreamController -> JSVal -> m ()
+error self e = liftDOM (void (self ^. jsf "error" [toJSVal e]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController.desiredSize Mozilla ReadableByteStreamController.desiredSize documentation> 
-getDesiredSize ::
-               (MonadDOM m) => ReadableByteStreamController -> m Double
-getDesiredSize self
-  = liftDOM ((self ^. js "desiredSize") >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/byobRequest MDN ReadableByteStreamController.byobRequest documentation>
+getByobRequest :: (MonadDOM m) => ReadableByteStreamController -> m (Maybe ReadableStreamBYOBRequest)
+getByobRequest self = liftDOM (((self ^. js "byobRequest") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/byobRequest MDN ReadableByteStreamController.byobRequest documentation>
+getByobRequestUnsafe :: (MonadDOM m, HasCallStack) => ReadableByteStreamController -> m ReadableStreamBYOBRequest
+getByobRequestUnsafe self = liftDOM ((((self ^. js "byobRequest") >>= 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 (((self ^. js "byobRequest") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/desiredSize MDN ReadableByteStreamController.desiredSize documentation>
+getDesiredSize :: (MonadDOM m) => ReadableByteStreamController -> m (Maybe Double)
+getDesiredSize self = liftDOM (((self ^. js "desiredSize") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableByteStreamController/desiredSize MDN ReadableByteStreamController.desiredSize documentation>
+getDesiredSizeUnsafe :: (MonadDOM m, HasCallStack) => ReadableByteStreamController -> m Double
+getDesiredSizeUnsafe self = liftDOM ((((self ^. js "desiredSize") >>= 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 (((self ^. js "desiredSize") >>= valToNumber))
diff --git a/src/JSDOM/Generated/ReadableStream.hs b/src/JSDOM/Generated/ReadableStream.hs
--- a/src/JSDOM/Generated/ReadableStream.hs
+++ b/src/JSDOM/Generated/ReadableStream.hs
@@ -1,111 +1,56 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module JSDOM.Generated.ReadableStream
-       (newReadableStream, cancel, cancel_, getReader, getReader_, pipeTo,
-        pipeTo_, pipeThrough, pipeThrough_, tee, tee_, getLocked,
-        ReadableStream(..), gTypeReadableStream)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream Mozilla ReadableStream documentation> 
-newReadableStream ::
-                  (MonadDOM m, ToJSVal underlyingSource, ToJSVal options) =>
-                    Maybe underlyingSource -> Maybe options -> m ReadableStream
-newReadableStream underlyingSource options
-  = liftDOM
-      (ReadableStream <$>
-         new (jsg "ReadableStream")
-           [toJSVal underlyingSource, toJSVal options])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.cancel Mozilla ReadableStream.cancel documentation> 
-cancel ::
-       (MonadDOM m, ToJSVal reason) =>
-         ReadableStream -> Maybe reason -> m JSVal
-cancel self reason
-  = liftDOM
-      (((self ^. jsf "cancel" [toJSVal reason]) >>= readPromise) >>=
-         toJSVal)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.cancel Mozilla ReadableStream.cancel documentation> 
-cancel_ ::
-        (MonadDOM m, ToJSVal reason) =>
-          ReadableStream -> Maybe reason -> m ()
-cancel_ self reason
-  = liftDOM (void (self ^. jsf "cancel" [toJSVal reason]))
+-- | <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 (((new (jsg "ReadableStream") [P.maybe (P.return jsUndefined) toJSVal underlyingSource, P.maybe (P.return jsUndefined) toJSVal strategy]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.getReader Mozilla ReadableStream.getReader documentation> 
-getReader ::
-          (MonadDOM m, ToJSVal options) =>
-            ReadableStream -> Maybe options -> m GObject
-getReader self options
-  = liftDOM
-      ((self ^. jsf "getReader" [toJSVal options]) >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toReadableStream self) ^. jsf "cancel" [toJSVal reason]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.getReader Mozilla ReadableStream.getReader documentation> 
-getReader_ ::
-           (MonadDOM m, ToJSVal options) =>
-             ReadableStream -> Maybe options -> m ()
-getReader_ self options
-  = liftDOM (void (self ^. jsf "getReader" [toJSVal options]))
+-- | <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 ((((Types.toReadableStream self) ^. jsf "getReader" [P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeTo Mozilla ReadableStream.pipeTo documentation> 
-pipeTo ::
-       (MonadDOM m, ToJSVal streams, ToJSVal options) =>
-         ReadableStream -> streams -> Maybe options -> m JSVal
-pipeTo self streams options
-  = liftDOM
-      (((self ^. jsf "pipeTo" [toJSVal streams, toJSVal options]) >>=
-          readPromise)
-         >>= toJSVal)
+-- | <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 ((Types.toReadableStream self) ^. jsf "getReader" [P.maybe (P.return jsUndefined) toJSVal options]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeTo Mozilla ReadableStream.pipeTo documentation> 
-pipeTo_ ::
-        (MonadDOM m, ToJSVal streams, ToJSVal options) =>
-          ReadableStream -> streams -> Maybe options -> m ()
-pipeTo_ self streams options
-  = liftDOM
-      (void (self ^. jsf "pipeTo" [toJSVal streams, toJSVal options]))
+-- | <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 ((((Types.toReadableStream self) ^. jsf "pipeThrough" [toJSVal transform, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeThrough Mozilla ReadableStream.pipeThrough documentation> 
-pipeThrough ::
-            (MonadDOM m, ToJSVal dest, ToJSVal options) =>
-              ReadableStream -> dest -> options -> m GObject
-pipeThrough self dest options
-  = liftDOM
-      ((self ^. jsf "pipeThrough" [toJSVal dest, toJSVal options]) >>=
-         fromJSValUnchecked)
+-- | <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 ((Types.toReadableStream self) ^. jsf "pipeThrough" [toJSVal transform, P.maybe (P.return jsUndefined) toJSVal options]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeThrough Mozilla ReadableStream.pipeThrough documentation> 
-pipeThrough_ ::
-             (MonadDOM m, ToJSVal dest, ToJSVal options) =>
-               ReadableStream -> dest -> options -> m ()
-pipeThrough_ self dest options
-  = liftDOM
-      (void (self ^. jsf "pipeThrough" [toJSVal dest, toJSVal options]))
+-- | <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 ((((Types.toReadableStream self) ^. jsf "pipeTo" [toJSVal destination, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.tee Mozilla ReadableStream.tee documentation> 
-tee :: (MonadDOM m) => ReadableStream -> m GObject
-tee self = liftDOM ((self ^. jsf "tee" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStream/tee MDN ReadableStream.tee documentation>
+tee :: (MonadDOM m, IsReadableStream self) => self -> m [ReadableStream]
+tee self = liftDOM ((((Types.toReadableStream self) ^. jsf "tee" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.tee Mozilla ReadableStream.tee documentation> 
-tee_ :: (MonadDOM m) => ReadableStream -> m ()
-tee_ self = liftDOM (void (self ^. jsf "tee" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStream/tee MDN ReadableStream.tee documentation>
+tee_ :: (MonadDOM m, IsReadableStream self) => self -> m ()
+tee_ self = liftDOM (void ((Types.toReadableStream self) ^. jsf "tee" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.locked Mozilla ReadableStream.locked documentation> 
-getLocked :: (MonadDOM m) => ReadableStream -> m Bool
-getLocked self = liftDOM ((self ^. js "locked") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStream/locked MDN ReadableStream.locked documentation>
+getLocked :: (MonadDOM m, IsReadableStream self) => self -> m Bool
+getLocked self = liftDOM ((((Types.toReadableStream self) ^. js "locked") >>= valToBool))
diff --git a/src/JSDOM/Generated/ReadableStreamBYOBReader.hs b/src/JSDOM/Generated/ReadableStreamBYOBReader.hs
--- a/src/JSDOM/Generated/ReadableStreamBYOBReader.hs
+++ b/src/JSDOM/Generated/ReadableStreamBYOBReader.hs
@@ -1,70 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module JSDOM.Generated.ReadableStreamBYOBReader
-       (newReadableStreamBYOBReader, read, read_, cancel, cancel_,
-        releaseLock, getClosed, ReadableStreamBYOBReader(..),
-        gTypeReadableStreamBYOBReader)
+       (newReadableStreamBYOBReader, read, read_, read', read'_, releaseLock, ReadableStreamBYOBReader(..), gTypeReadableStreamBYOBReader)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader Mozilla ReadableStreamBYOBReader documentation> 
-newReadableStreamBYOBReader ::
-                            (MonadDOM m) => ReadableStream -> m ReadableStreamBYOBReader
-newReadableStreamBYOBReader stream
-  = liftDOM
-      (ReadableStreamBYOBReader <$>
-         new (jsg "ReadableStreamBYOBReader") [toJSVal stream])
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/ReadableStreamBYOBReader MDN ReadableStreamBYOBReader. documentation>
+newReadableStreamBYOBReader :: (MonadDOM m, IsReadableStream stream) => stream -> m ReadableStreamBYOBReader
+newReadableStreamBYOBReader stream = liftDOM (((new (jsg "ReadableStreamBYOBReader") [toJSVal stream]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.read Mozilla ReadableStreamBYOBReader.read documentation> 
-read ::
-     (MonadDOM m, ToJSVal view) =>
-       ReadableStreamBYOBReader -> Maybe view -> m JSVal
-read self view
-  = liftDOM
-      (((self ^. jsf "read" [toJSVal view]) >>= readPromise) >>= toJSVal)
+-- | <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 (((((self ^. jsf "read" [toJSVal view]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.read Mozilla ReadableStreamBYOBReader.read documentation> 
-read_ ::
-      (MonadDOM m, ToJSVal view) =>
-        ReadableStreamBYOBReader -> Maybe view -> m ()
-read_ self view
-  = liftDOM (void (self ^. jsf "read" [toJSVal view]))
+-- | <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 (((self ^. jsf "read" [toJSVal view]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.cancel Mozilla ReadableStreamBYOBReader.cancel documentation> 
-cancel ::
-       (MonadDOM m, ToJSVal reason) =>
-         ReadableStreamBYOBReader -> Maybe reason -> m JSVal
-cancel self reason
-  = liftDOM
-      (((self ^. jsf "cancel" [toJSVal reason]) >>= readPromise) >>=
-         toJSVal)
+-- | <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 (((((self ^. jsf "read" [toJSVal view, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.cancel Mozilla ReadableStreamBYOBReader.cancel documentation> 
-cancel_ ::
-        (MonadDOM m, ToJSVal reason) =>
-          ReadableStreamBYOBReader -> Maybe reason -> m ()
-cancel_ self reason
-  = liftDOM (void (self ^. jsf "cancel" [toJSVal reason]))
+-- | <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 (((self ^. jsf "read" [toJSVal view, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.releaseLock Mozilla ReadableStreamBYOBReader.releaseLock documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/releaseLock MDN ReadableStreamBYOBReader.releaseLock documentation>
 releaseLock :: (MonadDOM m) => ReadableStreamBYOBReader -> m ()
 releaseLock self = liftDOM (void (self ^. jsf "releaseLock" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.closed Mozilla ReadableStreamBYOBReader.closed documentation> 
-getClosed :: (MonadDOM m) => ReadableStreamBYOBReader -> m Bool
-getClosed self
-  = liftDOM (((self ^. js "closed") >>= readPromise) >>= valToBool)
diff --git a/src/JSDOM/Generated/ReadableStreamBYOBReaderReadOptions.hs b/src/JSDOM/Generated/ReadableStreamBYOBReaderReadOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ReadableStreamBYOBReaderReadOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module JSDOM.Generated.ReadableStreamBYOBReaderReadOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://streams.spec.whatwg.org/#dictdef-readablestreambyobreaderreadoptions ReadableStreamBYOBReaderReadOptions specification>
+newReadableStreamBYOBReaderReadOptions :: (MonadDOM m) => m ReadableStreamBYOBReaderReadOptions
+newReadableStreamBYOBReaderReadOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablestreambyobreaderreadoptions-min ReadableStreamBYOBReaderReadOptions.min specification>
+setMin :: (MonadDOM m) => ReadableStreamBYOBReaderReadOptions -> Word53 -> m ()
+setMin self val = liftDOM (void (self ^. jss "min" (toJSVal val)))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablestreambyobreaderreadoptions-min ReadableStreamBYOBReaderReadOptions.min specification>
+getMin :: (MonadDOM m) => ReadableStreamBYOBReaderReadOptions -> m (Maybe Word53)
+getMin self = liftDOM (((self ^. js "min") >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablestreambyobreaderreadoptions-min ReadableStreamBYOBReaderReadOptions.min specification>
+getMinUnsafe :: (MonadDOM m, HasCallStack) => ReadableStreamBYOBReaderReadOptions -> m Word53
+getMinUnsafe self = liftDOM ((((self ^. js "min") >>= 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 (((self ^. js "min") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ReadableStreamBYOBRequest.hs b/src/JSDOM/Generated/ReadableStreamBYOBRequest.hs
--- a/src/JSDOM/Generated/ReadableStreamBYOBRequest.hs
+++ b/src/JSDOM/Generated/ReadableStreamBYOBRequest.hs
@@ -1,51 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module JSDOM.Generated.ReadableStreamBYOBRequest
-       (newReadableStreamBYOBRequest, respond, respondWithNewView,
-        getView, ReadableStreamBYOBRequest(..),
-        gTypeReadableStreamBYOBRequest)
+       (respond, respondWithNewView, getView, getViewUnsafe, getViewUnchecked, ReadableStreamBYOBRequest(..), gTypeReadableStreamBYOBRequest)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest Mozilla ReadableStreamBYOBRequest documentation> 
-newReadableStreamBYOBRequest ::
-                             (MonadDOM m, IsRawTypedArray view) =>
-                               ReadableByteStreamController -> view -> m ReadableStreamBYOBRequest
-newReadableStreamBYOBRequest controller view
-  = liftDOM
-      (ReadableStreamBYOBRequest <$>
-         new (jsg "ReadableStreamBYOBRequest")
-           [toJSVal controller, toJSVal view])
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/respond MDN ReadableStreamBYOBRequest.respond documentation>
+respond :: (MonadDOM m) => ReadableStreamBYOBRequest -> Word53 -> m ()
+respond self bytesWritten = liftDOM (void (self ^. jsf "respond" [toJSVal bytesWritten]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest.respond Mozilla ReadableStreamBYOBRequest.respond documentation> 
-respond ::
-        (MonadDOM m, ToJSVal bytesWritten) =>
-          ReadableStreamBYOBRequest -> Maybe bytesWritten -> m ()
-respond self bytesWritten
-  = liftDOM (void (self ^. jsf "respond" [toJSVal bytesWritten]))
+-- | <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 (self ^. jsf "respondWithNewView" [toJSVal view]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest.respondWithNewView Mozilla ReadableStreamBYOBRequest.respondWithNewView documentation> 
-respondWithNewView ::
-                   (MonadDOM m, ToJSVal view) =>
-                     ReadableStreamBYOBRequest -> Maybe view -> m ()
-respondWithNewView self view
-  = liftDOM (void (self ^. jsf "respondWithNewView" [toJSVal view]))
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/view MDN ReadableStreamBYOBRequest.view documentation>
+getView :: (MonadDOM m) => ReadableStreamBYOBRequest -> m (Maybe Uint8Array)
+getView self = liftDOM (((self ^. js "view") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest.view Mozilla ReadableStreamBYOBRequest.view documentation> 
-getView ::
-        (MonadDOM m) => ReadableStreamBYOBRequest -> m RawTypedArray
-getView self = liftDOM ((self ^. js "view") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBRequest/view MDN ReadableStreamBYOBRequest.view documentation>
+getViewUnsafe :: (MonadDOM m, HasCallStack) => ReadableStreamBYOBRequest -> m Uint8Array
+getViewUnsafe self = liftDOM ((((self ^. js "view") >>= 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 (((self ^. js "view") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ReadableStreamDefaultController.hs b/src/JSDOM/Generated/ReadableStreamDefaultController.hs
--- a/src/JSDOM/Generated/ReadableStreamDefaultController.hs
+++ b/src/JSDOM/Generated/ReadableStreamDefaultController.hs
@@ -1,60 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module JSDOM.Generated.ReadableStreamDefaultController
-       (newReadableStreamDefaultController, enqueue, close, error,
-        getDesiredSize, ReadableStreamDefaultController(..),
-        gTypeReadableStreamDefaultController)
+       (close, enqueue, error, getDesiredSize, getDesiredSizeUnsafe, getDesiredSizeUnchecked, ReadableStreamDefaultController(..), gTypeReadableStreamDefaultController)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController Mozilla ReadableStreamDefaultController documentation> 
-newReadableStreamDefaultController ::
-                                   (MonadDOM m, ToJSVal underlyingSource) =>
-                                     ReadableStream ->
-                                       underlyingSource ->
-                                         Word -> Word -> m ReadableStreamDefaultController
-newReadableStreamDefaultController stream underlyingSource size
-  highWaterMark
-  = liftDOM
-      (ReadableStreamDefaultController <$>
-         new (jsg "ReadableStreamDefaultController")
-           [toJSVal stream, toJSVal underlyingSource, toJSVal size,
-            toJSVal highWaterMark])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController.enqueue Mozilla ReadableStreamDefaultController.enqueue documentation> 
-enqueue ::
-        (MonadDOM m, ToJSVal chunk) =>
-          ReadableStreamDefaultController -> Maybe chunk -> m ()
-enqueue self chunk
-  = liftDOM (void (self ^. jsf "enqueue" [toJSVal chunk]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController.close Mozilla ReadableStreamDefaultController.close documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/close MDN ReadableStreamDefaultController.close documentation>
 close :: (MonadDOM m) => ReadableStreamDefaultController -> m ()
 close self = liftDOM (void (self ^. jsf "close" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController.error Mozilla ReadableStreamDefaultController.error documentation> 
-error ::
-      (MonadDOM m, ToJSVal error) =>
-        ReadableStreamDefaultController -> Maybe error -> m ()
-error self error
-  = liftDOM (void (self ^. jsf "error" [toJSVal error]))
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/enqueue MDN ReadableStreamDefaultController.enqueue documentation>
+enqueue :: (MonadDOM m) => ReadableStreamDefaultController -> JSVal -> m ()
+enqueue self chunk = liftDOM (void (self ^. jsf "enqueue" [toJSVal chunk]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController.desiredSize Mozilla ReadableStreamDefaultController.desiredSize documentation> 
-getDesiredSize ::
-               (MonadDOM m) => ReadableStreamDefaultController -> m Double
-getDesiredSize self
-  = liftDOM ((self ^. js "desiredSize") >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/error MDN ReadableStreamDefaultController.error documentation>
+error :: (MonadDOM m) => ReadableStreamDefaultController -> JSVal -> m ()
+error self e = liftDOM (void (self ^. jsf "error" [toJSVal e]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/desiredSize MDN ReadableStreamDefaultController.desiredSize documentation>
+getDesiredSize :: (MonadDOM m) => ReadableStreamDefaultController -> m (Maybe Double)
+getDesiredSize self = liftDOM (((self ^. js "desiredSize") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultController/desiredSize MDN ReadableStreamDefaultController.desiredSize documentation>
+getDesiredSizeUnsafe :: (MonadDOM m, HasCallStack) => ReadableStreamDefaultController -> m Double
+getDesiredSizeUnsafe self = liftDOM ((((self ^. js "desiredSize") >>= 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 (((self ^. js "desiredSize") >>= valToNumber))
diff --git a/src/JSDOM/Generated/ReadableStreamDefaultReader.hs b/src/JSDOM/Generated/ReadableStreamDefaultReader.hs
--- a/src/JSDOM/Generated/ReadableStreamDefaultReader.hs
+++ b/src/JSDOM/Generated/ReadableStreamDefaultReader.hs
@@ -1,64 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module JSDOM.Generated.ReadableStreamDefaultReader
-       (newReadableStreamDefaultReader, read, read_, cancel, cancel_,
-        releaseLock, getClosed, ReadableStreamDefaultReader(..),
-        gTypeReadableStreamDefaultReader)
+       (newReadableStreamDefaultReader, read, read_, releaseLock, ReadableStreamDefaultReader(..), gTypeReadableStreamDefaultReader)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader Mozilla ReadableStreamDefaultReader documentation> 
-newReadableStreamDefaultReader ::
-                               (MonadDOM m) => ReadableStream -> m ReadableStreamDefaultReader
-newReadableStreamDefaultReader stream
-  = liftDOM
-      (ReadableStreamDefaultReader <$>
-         new (jsg "ReadableStreamDefaultReader") [toJSVal stream])
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader/ReadableStreamDefaultReader MDN ReadableStreamDefaultReader. documentation>
+newReadableStreamDefaultReader :: (MonadDOM m, IsReadableStream stream) => stream -> m ReadableStreamDefaultReader
+newReadableStreamDefaultReader stream = liftDOM (((new (jsg "ReadableStreamDefaultReader") [toJSVal stream]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.read Mozilla ReadableStreamDefaultReader.read documentation> 
-read :: (MonadDOM m) => ReadableStreamDefaultReader -> m JSVal
-read self
-  = liftDOM (((self ^. jsf "read" ()) >>= readPromise) >>= toJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader/read MDN ReadableStreamDefaultReader.read documentation>
+read :: (MonadDOM m) => ReadableStreamDefaultReader -> m ReadableStreamReadResult
+read self = liftDOM (((((self ^. jsf "read" ()) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.read Mozilla ReadableStreamDefaultReader.read documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader/read MDN ReadableStreamDefaultReader.read documentation>
 read_ :: (MonadDOM m) => ReadableStreamDefaultReader -> m ()
-read_ self = liftDOM (void (self ^. jsf "read" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.cancel Mozilla ReadableStreamDefaultReader.cancel documentation> 
-cancel ::
-       (MonadDOM m, ToJSVal reason) =>
-         ReadableStreamDefaultReader -> Maybe reason -> m JSVal
-cancel self reason
-  = liftDOM
-      (((self ^. jsf "cancel" [toJSVal reason]) >>= readPromise) >>=
-         toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.cancel Mozilla ReadableStreamDefaultReader.cancel documentation> 
-cancel_ ::
-        (MonadDOM m, ToJSVal reason) =>
-          ReadableStreamDefaultReader -> Maybe reason -> m ()
-cancel_ self reason
-  = liftDOM (void (self ^. jsf "cancel" [toJSVal reason]))
+read_ self = liftDOM (void (((self ^. jsf "read" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.releaseLock Mozilla ReadableStreamDefaultReader.releaseLock documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamDefaultReader/releaseLock MDN ReadableStreamDefaultReader.releaseLock documentation>
 releaseLock :: (MonadDOM m) => ReadableStreamDefaultReader -> m ()
 releaseLock self = liftDOM (void (self ^. jsf "releaseLock" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.closed Mozilla ReadableStreamDefaultReader.closed documentation> 
-getClosed :: (MonadDOM m) => ReadableStreamDefaultReader -> m Bool
-getClosed self
-  = liftDOM (((self ^. js "closed") >>= readPromise) >>= valToBool)
diff --git a/src/JSDOM/Generated/ReadableStreamGenericReader.hs b/src/JSDOM/Generated/ReadableStreamGenericReader.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ReadableStreamGenericReader.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module JSDOM.Generated.ReadableStreamGenericReader
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toReadableStreamGenericReader self) ^. jsf "cancel" [toJSVal reason]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ReadableStreamBYOBReader/closed MDN ReadableStreamGenericReader.closed documentation>
+getClosed :: (MonadDOM m, IsReadableStreamGenericReader self) => self -> m ()
+getClosed self = liftDOM (void ((((Types.toReadableStreamGenericReader self) ^. js "closed") >>= readPromise)))
diff --git a/src/JSDOM/Generated/ReadableStreamGetReaderOptions.hs b/src/JSDOM/Generated/ReadableStreamGetReaderOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ReadableStreamGetReaderOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module JSDOM.Generated.ReadableStreamGetReaderOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://streams.spec.whatwg.org/#dictdef-readablestreamgetreaderoptions ReadableStreamGetReaderOptions specification>
+newReadableStreamGetReaderOptions :: (MonadDOM m) => m ReadableStreamGetReaderOptions
+newReadableStreamGetReaderOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamgetreaderoptions-mode ReadableStreamGetReaderOptions.mode specification>
+setMode :: (MonadDOM m) => ReadableStreamGetReaderOptions -> ReadableStreamReaderMode -> m ()
+setMode self val = liftDOM (void (self ^. jss "mode" (toJSVal val)))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamgetreaderoptions-mode ReadableStreamGetReaderOptions.mode specification>
+getMode :: (MonadDOM m) => ReadableStreamGetReaderOptions -> m (Maybe ReadableStreamReaderMode)
+getMode self = liftDOM (((self ^. js "mode") >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamgetreaderoptions-mode ReadableStreamGetReaderOptions.mode specification>
+getModeUnsafe :: (MonadDOM m, HasCallStack) => ReadableStreamGetReaderOptions -> m ReadableStreamReaderMode
+getModeUnsafe self = liftDOM ((((self ^. js "mode") >>= 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 (((self ^. js "mode") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ReadableStreamReadResult.hs b/src/JSDOM/Generated/ReadableStreamReadResult.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ReadableStreamReadResult.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module JSDOM.Generated.ReadableStreamReadResult
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://streams.spec.whatwg.org/#dictdef-readablestreamreadresult ReadableStreamReadResult specification>
+newReadableStreamReadResult :: (MonadDOM m) => m ReadableStreamReadResult
+newReadableStreamReadResult = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamreadresult-value ReadableStreamReadResult.value specification>
+setValue :: (MonadDOM m) => ReadableStreamReadResult -> JSVal -> m ()
+setValue self val = liftDOM (void (self ^. jss "value" (toJSVal val)))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamreadresult-value ReadableStreamReadResult.value specification>
+getValue :: (MonadDOM m) => ReadableStreamReadResult -> m JSVal
+getValue self = liftDOM (self ^. js "value")
+
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamreadresult-done ReadableStreamReadResult.done specification>
+setDone :: (MonadDOM m) => ReadableStreamReadResult -> Bool -> m ()
+setDone self val = liftDOM (void (self ^. jss "done" (toJSVal val)))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamreadresult-done ReadableStreamReadResult.done specification>
+getDone :: (MonadDOM m) => ReadableStreamReadResult -> m (Maybe Bool)
+getDone self = liftDOM (((self ^. js "done") >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablestreamreadresult-done ReadableStreamReadResult.done specification>
+getDoneUnsafe :: (MonadDOM m, HasCallStack) => ReadableStreamReadResult -> m Bool
+getDoneUnsafe self = liftDOM ((((self ^. js "done") >>= 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 (((self ^. js "done") >>= valToBool))
diff --git a/src/JSDOM/Generated/ReadableStreamSource.hs b/src/JSDOM/Generated/ReadableStreamSource.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/ReadableStreamSource.hs
+++ /dev/null
@@ -1,49 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.ReadableStreamSource
-       (start, pull, cancel, getController, ReadableStreamSource(..),
-        gTypeReadableStreamSource)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamSource.start Mozilla ReadableStreamSource.start documentation> 
-start ::
-      (MonadDOM m) =>
-        ReadableStreamSource -> ReadableStreamDefaultController -> m ()
-start self controller
-  = liftDOM
-      (void ((self ^. jsf "start" [toJSVal controller]) >>= readPromise))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamSource.pull Mozilla ReadableStreamSource.pull documentation> 
-pull ::
-     (MonadDOM m) =>
-       ReadableStreamSource -> ReadableStreamDefaultController -> m ()
-pull self controller
-  = liftDOM
-      (void ((self ^. jsf "pull" [toJSVal controller]) >>= readPromise))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamSource.cancel Mozilla ReadableStreamSource.cancel documentation> 
-cancel ::
-       (MonadDOM m, ToJSVal reason) =>
-         ReadableStreamSource -> reason -> m ()
-cancel self reason
-  = liftDOM (void (self ^. jsf "cancel" [toJSVal reason]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamSource.controller Mozilla ReadableStreamSource.controller documentation> 
-getController :: (MonadDOM m) => ReadableStreamSource -> m JSVal
-getController self
-  = liftDOM ((self ^. js "controller") >>= toJSVal)
diff --git a/src/JSDOM/Generated/ReadableWritablePair.hs b/src/JSDOM/Generated/ReadableWritablePair.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ReadableWritablePair.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module JSDOM.Generated.ReadableWritablePair
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://streams.spec.whatwg.org/#dictdef-readablewritablepair ReadableWritablePair specification>
+newReadableWritablePair :: (MonadDOM m, IsReadableStream readable, IsWritableStream writable) => readable -> writable -> m ReadableWritablePair
+newReadableWritablePair readable writable = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "readable" (toJSVal readable)) P.>> (o ^. jss "writable" (toJSVal writable)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablewritablepair-readable ReadableWritablePair.readable specification>
+setReadable :: (MonadDOM m, IsReadableStream val) => ReadableWritablePair -> val -> m ()
+setReadable self val = liftDOM (void (self ^. jss "readable" (toJSVal val)))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablewritablepair-readable ReadableWritablePair.readable specification>
+getReadable :: (MonadDOM m) => ReadableWritablePair -> m ReadableStream
+getReadable self = liftDOM (((self ^. js "readable") >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablewritablepair-writable ReadableWritablePair.writable specification>
+setWritable :: (MonadDOM m, IsWritableStream val) => ReadableWritablePair -> val -> m ()
+setWritable self val = liftDOM (void (self ^. jss "writable" (toJSVal val)))
+
+-- | <https://streams.spec.whatwg.org/#dom-readablewritablepair-writable ReadableWritablePair.writable specification>
+getWritable :: (MonadDOM m) => ReadableWritablePair -> m WritableStream
+getWritable self = liftDOM (((self ^. js "writable") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Rect.hs b/src/JSDOM/Generated/Rect.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/Rect.hs
+++ /dev/null
@@ -1,37 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.Rect
-       (getTop, getRight, getBottom, getLeft, Rect(..), gTypeRect) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.top Mozilla Rect.top documentation> 
-getTop :: (MonadDOM m) => Rect -> m CSSPrimitiveValue
-getTop self = liftDOM ((self ^. js "top") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.right Mozilla Rect.right documentation> 
-getRight :: (MonadDOM m) => Rect -> m CSSPrimitiveValue
-getRight self
-  = liftDOM ((self ^. js "right") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.bottom Mozilla Rect.bottom documentation> 
-getBottom :: (MonadDOM m) => Rect -> m CSSPrimitiveValue
-getBottom self
-  = liftDOM ((self ^. js "bottom") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.left Mozilla Rect.left documentation> 
-getLeft :: (MonadDOM m) => Rect -> m CSSPrimitiveValue
-getLeft self = liftDOM ((self ^. js "left") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/RegistrationOptions.hs b/src/JSDOM/Generated/RegistrationOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RegistrationOptions.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.RegistrationOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-registrationoptions RegistrationOptions specification>
+newRegistrationOptions :: (MonadDOM m) => m RegistrationOptions
+newRegistrationOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-scope RegistrationOptions.scope specification>
+setScope :: (MonadDOM m, ToJSString val) => RegistrationOptions -> val -> m ()
+setScope self val = liftDOM (void (self ^. jss "scope" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-scope RegistrationOptions.scope specification>
+getScope :: (MonadDOM m, FromJSString result) => RegistrationOptions -> m (Maybe result)
+getScope self = liftDOM (((self ^. js "scope") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-scope RegistrationOptions.scope specification>
+getScopeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RegistrationOptions -> m result
+getScopeUnsafe self = liftDOM ((((self ^. js "scope") >>= fromMaybeJSString) >>= 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 (((self ^. js "scope") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-type RegistrationOptions.type specification>
+setType :: (MonadDOM m) => RegistrationOptions -> WorkerType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-type RegistrationOptions.type specification>
+getType :: (MonadDOM m) => RegistrationOptions -> m (Maybe WorkerType)
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-type RegistrationOptions.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => RegistrationOptions -> m WorkerType
+getTypeUnsafe self = liftDOM ((((self ^. js "type") >>= 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 (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-updateviacache RegistrationOptions.updateViaCache specification>
+setUpdateViaCache :: (MonadDOM m) => RegistrationOptions -> ServiceWorkerUpdateViaCache -> m ()
+setUpdateViaCache self val = liftDOM (void (self ^. jss "updateViaCache" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-updateviacache RegistrationOptions.updateViaCache specification>
+getUpdateViaCache :: (MonadDOM m) => RegistrationOptions -> m (Maybe ServiceWorkerUpdateViaCache)
+getUpdateViaCache self = liftDOM (((self ^. js "updateViaCache") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-registrationoptions-updateviacache RegistrationOptions.updateViaCache specification>
+getUpdateViaCacheUnsafe :: (MonadDOM m, HasCallStack) => RegistrationOptions -> m ServiceWorkerUpdateViaCache
+getUpdateViaCacheUnsafe self = liftDOM ((((self ^. js "updateViaCache") >>= 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 (((self ^. js "updateViaCache") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RemotePlayback.hs b/src/JSDOM/Generated/RemotePlayback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RemotePlayback.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from remote-playback (webref). Do not edit.
+module JSDOM.Generated.RemotePlayback
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "cancelWatchAvailability" [P.maybe (P.return jsUndefined) toJSVal id]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RemotePlayback/prompt MDN RemotePlayback.prompt documentation>
+prompt :: (MonadDOM m) => RemotePlayback -> m ()
+prompt self = liftDOM (void (((self ^. jsf "prompt" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RemotePlayback/watchAvailability MDN RemotePlayback.watchAvailability documentation>
+watchAvailability :: (MonadDOM m) => RemotePlayback -> RemotePlaybackAvailabilityCallback -> m Int
+watchAvailability self callback' = liftDOM ((P.round <$> ((((self ^. jsf "watchAvailability" [toJSVal callback']) >>= readPromise)) >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RemotePlayback/watchAvailability MDN RemotePlayback.watchAvailability documentation>
+watchAvailability_ :: (MonadDOM m) => RemotePlayback -> RemotePlaybackAvailabilityCallback -> m ()
+watchAvailability_ self callback' = liftDOM (void (((self ^. jsf "watchAvailability" [toJSVal callback']) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/RemotePlayback/state MDN RemotePlayback.state documentation>
+getState :: (MonadDOM m) => RemotePlayback -> m RemotePlaybackState
+getState self = liftDOM (((self ^. js "state") >>= 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/JSDOM/Generated/RemotePlaybackAvailabilityCallback.hs b/src/JSDOM/Generated/RemotePlaybackAvailabilityCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RemotePlaybackAvailabilityCallback.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from remote-playback (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newRemotePlaybackAvailabilityCallback :: (MonadDOM m) => (Bool -> JSM ()) -> m RemotePlaybackAvailabilityCallback
+newRemotePlaybackAvailabilityCallback callback = liftDOM (RemotePlaybackAvailabilityCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (available : _) -> do
+          available' <- valToBool available
+          callback available'))
+
+newRemotePlaybackAvailabilityCallbackSync :: (MonadDOM m) => (Bool -> JSM ()) -> m RemotePlaybackAvailabilityCallback
+newRemotePlaybackAvailabilityCallbackSync callback = liftDOM (RemotePlaybackAvailabilityCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (available : _) -> do
+          available' <- valToBool available
+          callback available'))
+
+newRemotePlaybackAvailabilityCallbackAsync :: (MonadDOM m) => (Bool -> JSM ()) -> m RemotePlaybackAvailabilityCallback
+newRemotePlaybackAvailabilityCallbackAsync callback = liftDOM (RemotePlaybackAvailabilityCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (available : _) -> do
+          available' <- valToBool available
+          callback available'))
diff --git a/src/JSDOM/Generated/Report.hs b/src/JSDOM/Generated/Report.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Report.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from reporting-1 (webref). Do not edit.
+module JSDOM.Generated.Report
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/reporting/#dom-report Report specification>
+newReport :: (MonadDOM m) => m Report
+newReport = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/reporting/#dom-report-type Report.type specification>
+setType :: (MonadDOM m, ToJSString val) => Report -> val -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/reporting/#dom-report-type Report.type specification>
+getType :: (MonadDOM m, FromJSString result) => Report -> m (Maybe result)
+getType self = liftDOM (((self ^. js "type") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/reporting/#dom-report-type Report.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => Report -> m result
+getTypeUnsafe self = liftDOM ((((self ^. js "type") >>= fromMaybeJSString) >>= 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 (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/reporting/#dom-report-url Report.url specification>
+setUrl :: (MonadDOM m, ToJSString val) => Report -> val -> m ()
+setUrl self val = liftDOM (void (self ^. jss "url" (toJSVal val)))
+
+-- | <https://w3c.github.io/reporting/#dom-report-url Report.url specification>
+getUrl :: (MonadDOM m, FromJSString result) => Report -> m (Maybe result)
+getUrl self = liftDOM (((self ^. js "url") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/reporting/#dom-report-url Report.url specification>
+getUrlUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => Report -> m result
+getUrlUnsafe self = liftDOM ((((self ^. js "url") >>= fromMaybeJSString) >>= 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 (((self ^. js "url") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/reporting/#dom-report-body Report.body specification>
+setBody :: (MonadDOM m) => Report -> Maybe ReportBody -> m ()
+setBody self val = liftDOM (void (self ^. jss "body" (toJSVal val)))
+
+-- | <https://w3c.github.io/reporting/#dom-report-body Report.body specification>
+getBody :: (MonadDOM m) => Report -> m (Maybe ReportBody)
+getBody self = liftDOM (((self ^. js "body") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/reporting/#dom-report-body Report.body specification>
+getBodyUnsafe :: (MonadDOM m, HasCallStack) => Report -> m ReportBody
+getBodyUnsafe self = liftDOM ((((self ^. js "body") >>= 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 (((self ^. js "body") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ReportBody.hs b/src/JSDOM/Generated/ReportBody.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ReportBody.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from reporting-1 (webref). Do not edit.
+module JSDOM.Generated.ReportBody
+       (newReportBody, ReportBody(..), gTypeReportBody)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/reporting/#reportbody ReportBody specification>
+newReportBody :: (MonadDOM m) => m ReportBody
+newReportBody = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ReportingObserver.hs b/src/JSDOM/Generated/ReportingObserver.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ReportingObserver.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from reporting-1 (webref). Do not edit.
+module JSDOM.Generated.ReportingObserver
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/ReportingObserver/ReportingObserver MDN ReportingObserver. documentation>
+newReportingObserver :: (MonadDOM m) => ReportingObserverCallback -> Maybe ReportingObserverOptions -> m ReportingObserver
+newReportingObserver callback' options = liftDOM (((new (jsg "ReportingObserver") [toJSVal callback', P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ReportingObserver/disconnect MDN ReportingObserver.disconnect documentation>
+disconnect :: (MonadDOM m) => ReportingObserver -> m ()
+disconnect self = liftDOM (void (self ^. jsf "disconnect" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ReportingObserver/observe MDN ReportingObserver.observe documentation>
+observe :: (MonadDOM m) => ReportingObserver -> m ()
+observe self = liftDOM (void (self ^. jsf "observe" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ReportingObserver/takeRecords MDN ReportingObserver.takeRecords documentation>
+takeRecords :: (MonadDOM m) => ReportingObserver -> m [Report]
+takeRecords self = liftDOM (((self ^. jsf "takeRecords" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ReportingObserver/takeRecords MDN ReportingObserver.takeRecords documentation>
+takeRecords_ :: (MonadDOM m) => ReportingObserver -> m ()
+takeRecords_ self = liftDOM (void (self ^. jsf "takeRecords" ()))
diff --git a/src/JSDOM/Generated/ReportingObserverCallback.hs b/src/JSDOM/Generated/ReportingObserverCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ReportingObserverCallback.hs
@@ -0,0 +1,33 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from reporting-1 (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newReportingObserverCallback :: (MonadDOM m) => ([Report] -> ReportingObserver -> JSM ()) -> m ReportingObserverCallback
+newReportingObserverCallback callback = liftDOM (ReportingObserverCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (reports : observer : _) -> do
+          reports' <- fromJSValUnchecked reports
+          observer' <- fromJSValUnchecked observer
+          callback reports' observer'))
+
+newReportingObserverCallbackSync :: (MonadDOM m) => ([Report] -> ReportingObserver -> JSM ()) -> m ReportingObserverCallback
+newReportingObserverCallbackSync callback = liftDOM (ReportingObserverCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (reports : observer : _) -> do
+          reports' <- fromJSValUnchecked reports
+          observer' <- fromJSValUnchecked observer
+          callback reports' observer'))
+
+newReportingObserverCallbackAsync :: (MonadDOM m) => ([Report] -> ReportingObserver -> JSM ()) -> m ReportingObserverCallback
+newReportingObserverCallbackAsync callback = liftDOM (ReportingObserverCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (reports : observer : _) -> do
+          reports' <- fromJSValUnchecked reports
+          observer' <- fromJSValUnchecked observer
+          callback reports' observer'))
diff --git a/src/JSDOM/Generated/ReportingObserverOptions.hs b/src/JSDOM/Generated/ReportingObserverOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ReportingObserverOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from reporting-1 (webref). Do not edit.
+module JSDOM.Generated.ReportingObserverOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/reporting/#dictdef-reportingobserveroptions ReportingObserverOptions specification>
+newReportingObserverOptions :: (MonadDOM m) => m ReportingObserverOptions
+newReportingObserverOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/reporting/#dom-reportingobserveroptions-types ReportingObserverOptions.types specification>
+setTypes :: (MonadDOM m, ToJSString val) => ReportingObserverOptions -> [val] -> m ()
+setTypes self val = liftDOM (void (self ^. jss "types" (toJSVal val)))
+
+-- | <https://w3c.github.io/reporting/#dom-reportingobserveroptions-types ReportingObserverOptions.types specification>
+getTypes :: (MonadDOM m, FromJSString result) => ReportingObserverOptions -> m (Maybe [result])
+getTypes self = liftDOM (((self ^. js "types") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/reporting/#dom-reportingobserveroptions-types ReportingObserverOptions.types specification>
+getTypesUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ReportingObserverOptions -> m [result]
+getTypesUnsafe self = liftDOM ((((self ^. js "types") >>= 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 (((self ^. js "types") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/reporting/#dom-reportingobserveroptions-buffered ReportingObserverOptions.buffered specification>
+setBuffered :: (MonadDOM m) => ReportingObserverOptions -> Bool -> m ()
+setBuffered self val = liftDOM (void (self ^. jss "buffered" (toJSVal val)))
+
+-- | <https://w3c.github.io/reporting/#dom-reportingobserveroptions-buffered ReportingObserverOptions.buffered specification>
+getBuffered :: (MonadDOM m) => ReportingObserverOptions -> m (Maybe Bool)
+getBuffered self = liftDOM (((self ^. js "buffered") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/reporting/#dom-reportingobserveroptions-buffered ReportingObserverOptions.buffered specification>
+getBufferedUnsafe :: (MonadDOM m, HasCallStack) => ReportingObserverOptions -> m Bool
+getBufferedUnsafe self = liftDOM ((((self ^. js "buffered") >>= 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 (((self ^. js "buffered") >>= valToBool))
diff --git a/src/JSDOM/Generated/Request.hs b/src/JSDOM/Generated/Request.hs
--- a/src/JSDOM/Generated/Request.hs
+++ b/src/JSDOM/Generated/Request.hs
@@ -1,100 +1,80 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fetch (webref). Do not edit.
 module JSDOM.Generated.Request
-       (newRequest, clone, clone_, getMethod, getUrl, getHeaders, getType,
-        getDestination, getReferrer, getReferrerPolicy, getMode,
-        getCredentials, getCache, getRedirect, getIntegrity, Request(..),
-        gTypeRequest)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request Mozilla Request documentation> 
-newRequest ::
-           (MonadDOM m, ToJSVal input) =>
-             input -> Maybe RequestInit -> m Request
-newRequest input init
-  = liftDOM
-      (Request <$> new (jsg "Request") [toJSVal input, toJSVal init])
+-- | <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 (((new (jsg "Request") [toJSVal input, P.maybe (P.return jsUndefined) toJSVal init]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.clone Mozilla Request.clone documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Request/clone MDN Request.clone documentation>
 clone :: (MonadDOM m) => Request -> m Request
-clone self
-  = liftDOM ((self ^. jsf "clone" ()) >>= fromJSValUnchecked)
+clone self = liftDOM (((self ^. jsf "clone" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.clone Mozilla Request.clone documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Request/clone MDN Request.clone documentation>
 clone_ :: (MonadDOM m) => Request -> m ()
 clone_ self = liftDOM (void (self ^. jsf "clone" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.method Mozilla Request.method documentation> 
-getMethod ::
-          (MonadDOM m, FromJSString result) => Request -> m result
-getMethod self
-  = liftDOM ((self ^. js "method") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Request/method MDN Request.method documentation>
+getMethod :: (MonadDOM m, FromJSString result) => Request -> m result
+getMethod self = liftDOM (((self ^. js "method") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.url Mozilla Request.url documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Request/url MDN Request.url documentation>
 getUrl :: (MonadDOM m, FromJSString result) => Request -> m result
-getUrl self = liftDOM ((self ^. js "url") >>= fromJSValUnchecked)
+getUrl self = liftDOM (((self ^. js "url") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.headers Mozilla Request.headers documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Request/headers MDN Request.headers documentation>
 getHeaders :: (MonadDOM m) => Request -> m Headers
-getHeaders self
-  = liftDOM ((self ^. js "headers") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.type Mozilla Request.type documentation> 
-getType :: (MonadDOM m) => Request -> m RequestType
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+getHeaders self = liftDOM (((self ^. js "headers") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.destination Mozilla Request.destination documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Request/destination MDN Request.destination documentation>
 getDestination :: (MonadDOM m) => Request -> m RequestDestination
-getDestination self
-  = liftDOM ((self ^. js "destination") >>= fromJSValUnchecked)
+getDestination self = liftDOM (((self ^. js "destination") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.referrer Mozilla Request.referrer documentation> 
-getReferrer ::
-            (MonadDOM m, FromJSString result) => Request -> m result
-getReferrer self
-  = liftDOM ((self ^. js "referrer") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Request/referrer MDN Request.referrer documentation>
+getReferrer :: (MonadDOM m, FromJSString result) => Request -> m result
+getReferrer self = liftDOM (((self ^. js "referrer") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.referrerPolicy Mozilla Request.referrerPolicy documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Request/referrerPolicy MDN Request.referrerPolicy documentation>
 getReferrerPolicy :: (MonadDOM m) => Request -> m ReferrerPolicy
-getReferrerPolicy self
-  = liftDOM ((self ^. js "referrerPolicy") >>= fromJSValUnchecked)
+getReferrerPolicy self = liftDOM (((self ^. js "referrerPolicy") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.mode Mozilla Request.mode documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Request/mode MDN Request.mode documentation>
 getMode :: (MonadDOM m) => Request -> m RequestMode
-getMode self = liftDOM ((self ^. js "mode") >>= fromJSValUnchecked)
+getMode self = liftDOM (((self ^. js "mode") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.credentials Mozilla Request.credentials documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Request/credentials MDN Request.credentials documentation>
 getCredentials :: (MonadDOM m) => Request -> m RequestCredentials
-getCredentials self
-  = liftDOM ((self ^. js "credentials") >>= fromJSValUnchecked)
+getCredentials self = liftDOM (((self ^. js "credentials") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.cache Mozilla Request.cache documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Request/cache MDN Request.cache documentation>
 getCache :: (MonadDOM m) => Request -> m RequestCache
-getCache self
-  = liftDOM ((self ^. js "cache") >>= fromJSValUnchecked)
+getCache self = liftDOM (((self ^. js "cache") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.redirect Mozilla Request.redirect documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Request/redirect MDN Request.redirect documentation>
 getRedirect :: (MonadDOM m) => Request -> m RequestRedirect
-getRedirect self
-  = liftDOM ((self ^. js "redirect") >>= fromJSValUnchecked)
+getRedirect self = liftDOM (((self ^. js "redirect") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.integrity Mozilla Request.integrity documentation> 
-getIntegrity ::
-             (MonadDOM m, FromJSString result) => Request -> m result
-getIntegrity self
-  = liftDOM ((self ^. js "integrity") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Request/integrity MDN Request.integrity documentation>
+getIntegrity :: (MonadDOM m, FromJSString result) => Request -> m result
+getIntegrity self = liftDOM (((self ^. js "integrity") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Request/keepalive MDN Request.keepalive documentation>
+getKeepalive :: (MonadDOM m) => Request -> m Bool
+getKeepalive self = liftDOM (((self ^. js "keepalive") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Request/signal MDN Request.signal documentation>
+getSignal :: (MonadDOM m) => Request -> m AbortSignal
+getSignal self = liftDOM (((self ^. js "signal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RequestAnimationFrameCallback.hs b/src/JSDOM/Generated/RequestAnimationFrameCallback.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/RequestAnimationFrameCallback.hs
+++ /dev/null
@@ -1,59 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.RequestAnimationFrameCallback
-       (newRequestAnimationFrameCallback,
-        newRequestAnimationFrameCallbackSync,
-        newRequestAnimationFrameCallbackAsync,
-        RequestAnimationFrameCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RequestAnimationFrameCallback Mozilla RequestAnimationFrameCallback documentation> 
-newRequestAnimationFrameCallback ::
-                                 (MonadDOM m) =>
-                                   (Double -> JSM ()) -> m RequestAnimationFrameCallback
-newRequestAnimationFrameCallback callback
-  = liftDOM
-      (RequestAnimationFrameCallback . Callback <$>
-         function
-           (\ _ _ [highResTime] ->
-              fromJSValUnchecked highResTime >>=
-                \ highResTime' -> callback highResTime'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RequestAnimationFrameCallback Mozilla RequestAnimationFrameCallback documentation> 
-newRequestAnimationFrameCallbackSync ::
-                                     (MonadDOM m) =>
-                                       (Double -> JSM ()) -> m RequestAnimationFrameCallback
-newRequestAnimationFrameCallbackSync callback
-  = liftDOM
-      (RequestAnimationFrameCallback . Callback <$>
-         function
-           (\ _ _ [highResTime] ->
-              fromJSValUnchecked highResTime >>=
-                \ highResTime' -> callback highResTime'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/RequestAnimationFrameCallback Mozilla RequestAnimationFrameCallback documentation> 
-newRequestAnimationFrameCallbackAsync ::
-                                      (MonadDOM m) =>
-                                        (Double -> JSM ()) -> m RequestAnimationFrameCallback
-newRequestAnimationFrameCallbackAsync callback
-  = liftDOM
-      (RequestAnimationFrameCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [highResTime] ->
-              fromJSValUnchecked highResTime >>=
-                \ highResTime' -> callback highResTime'))
diff --git a/src/JSDOM/Generated/RequestInit.hs b/src/JSDOM/Generated/RequestInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RequestInit.hs
@@ -0,0 +1,284 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fetch (webref). Do not edit.
+module JSDOM.Generated.RequestInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://fetch.spec.whatwg.org/#requestinit RequestInit specification>
+newRequestInit :: (MonadDOM m) => m RequestInit
+newRequestInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-method RequestInit.method specification>
+setMethod :: (MonadDOM m, ToJSString val) => RequestInit -> val -> m ()
+setMethod self val = liftDOM (void (self ^. jss "method" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-method RequestInit.method specification>
+getMethod :: (MonadDOM m, FromJSString result) => RequestInit -> m (Maybe result)
+getMethod self = liftDOM (((self ^. js "method") >>= fromMaybeJSString))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-method RequestInit.method specification>
+getMethodUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RequestInit -> m result
+getMethodUnsafe self = liftDOM ((((self ^. js "method") >>= fromMaybeJSString) >>= 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 (((self ^. js "method") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-headers RequestInit.headers specification>
+setHeaders :: (MonadDOM m, IsHeadersInit val) => RequestInit -> val -> m ()
+setHeaders self val = liftDOM (void (self ^. jss "headers" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-headers RequestInit.headers specification>
+getHeaders :: (MonadDOM m) => RequestInit -> m (Maybe HeadersInit)
+getHeaders self = liftDOM (((self ^. js "headers") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-headers RequestInit.headers specification>
+getHeadersUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m HeadersInit
+getHeadersUnsafe self = liftDOM ((((self ^. js "headers") >>= 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 (((self ^. js "headers") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "body" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-body RequestInit.body specification>
+getBody :: (MonadDOM m) => RequestInit -> m (Maybe BodyInit)
+getBody self = liftDOM (((self ^. js "body") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-body RequestInit.body specification>
+getBodyUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m BodyInit
+getBodyUnsafe self = liftDOM ((((self ^. js "body") >>= 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 (((self ^. js "body") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-referrer RequestInit.referrer specification>
+setReferrer :: (MonadDOM m, ToJSString val) => RequestInit -> val -> m ()
+setReferrer self val = liftDOM (void (self ^. jss "referrer" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-referrer RequestInit.referrer specification>
+getReferrer :: (MonadDOM m, FromJSString result) => RequestInit -> m (Maybe result)
+getReferrer self = liftDOM (((self ^. js "referrer") >>= fromMaybeJSString))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-referrer RequestInit.referrer specification>
+getReferrerUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RequestInit -> m result
+getReferrerUnsafe self = liftDOM ((((self ^. js "referrer") >>= fromMaybeJSString) >>= 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 (((self ^. js "referrer") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-referrerpolicy RequestInit.referrerPolicy specification>
+setReferrerPolicy :: (MonadDOM m) => RequestInit -> ReferrerPolicy -> m ()
+setReferrerPolicy self val = liftDOM (void (self ^. jss "referrerPolicy" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-referrerpolicy RequestInit.referrerPolicy specification>
+getReferrerPolicy :: (MonadDOM m) => RequestInit -> m (Maybe ReferrerPolicy)
+getReferrerPolicy self = liftDOM (((self ^. js "referrerPolicy") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-referrerpolicy RequestInit.referrerPolicy specification>
+getReferrerPolicyUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m ReferrerPolicy
+getReferrerPolicyUnsafe self = liftDOM ((((self ^. js "referrerPolicy") >>= 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 (((self ^. js "referrerPolicy") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-mode RequestInit.mode specification>
+setMode :: (MonadDOM m) => RequestInit -> RequestMode -> m ()
+setMode self val = liftDOM (void (self ^. jss "mode" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-mode RequestInit.mode specification>
+getMode :: (MonadDOM m) => RequestInit -> m (Maybe RequestMode)
+getMode self = liftDOM (((self ^. js "mode") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-mode RequestInit.mode specification>
+getModeUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m RequestMode
+getModeUnsafe self = liftDOM ((((self ^. js "mode") >>= 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 (((self ^. js "mode") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-credentials RequestInit.credentials specification>
+setCredentials :: (MonadDOM m) => RequestInit -> RequestCredentials -> m ()
+setCredentials self val = liftDOM (void (self ^. jss "credentials" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-credentials RequestInit.credentials specification>
+getCredentials :: (MonadDOM m) => RequestInit -> m (Maybe RequestCredentials)
+getCredentials self = liftDOM (((self ^. js "credentials") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-credentials RequestInit.credentials specification>
+getCredentialsUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m RequestCredentials
+getCredentialsUnsafe self = liftDOM ((((self ^. js "credentials") >>= 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 (((self ^. js "credentials") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-cache RequestInit.cache specification>
+setCache :: (MonadDOM m) => RequestInit -> RequestCache -> m ()
+setCache self val = liftDOM (void (self ^. jss "cache" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-cache RequestInit.cache specification>
+getCache :: (MonadDOM m) => RequestInit -> m (Maybe RequestCache)
+getCache self = liftDOM (((self ^. js "cache") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-cache RequestInit.cache specification>
+getCacheUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m RequestCache
+getCacheUnsafe self = liftDOM ((((self ^. js "cache") >>= 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 (((self ^. js "cache") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-redirect RequestInit.redirect specification>
+setRedirect :: (MonadDOM m) => RequestInit -> RequestRedirect -> m ()
+setRedirect self val = liftDOM (void (self ^. jss "redirect" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-redirect RequestInit.redirect specification>
+getRedirect :: (MonadDOM m) => RequestInit -> m (Maybe RequestRedirect)
+getRedirect self = liftDOM (((self ^. js "redirect") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-redirect RequestInit.redirect specification>
+getRedirectUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m RequestRedirect
+getRedirectUnsafe self = liftDOM ((((self ^. js "redirect") >>= 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 (((self ^. js "redirect") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-integrity RequestInit.integrity specification>
+setIntegrity :: (MonadDOM m, ToJSString val) => RequestInit -> val -> m ()
+setIntegrity self val = liftDOM (void (self ^. jss "integrity" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-integrity RequestInit.integrity specification>
+getIntegrity :: (MonadDOM m, FromJSString result) => RequestInit -> m (Maybe result)
+getIntegrity self = liftDOM (((self ^. js "integrity") >>= fromMaybeJSString))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-integrity RequestInit.integrity specification>
+getIntegrityUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RequestInit -> m result
+getIntegrityUnsafe self = liftDOM ((((self ^. js "integrity") >>= fromMaybeJSString) >>= 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 (((self ^. js "integrity") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-keepalive RequestInit.keepalive specification>
+setKeepalive :: (MonadDOM m) => RequestInit -> Bool -> m ()
+setKeepalive self val = liftDOM (void (self ^. jss "keepalive" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-keepalive RequestInit.keepalive specification>
+getKeepalive :: (MonadDOM m) => RequestInit -> m (Maybe Bool)
+getKeepalive self = liftDOM (((self ^. js "keepalive") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-keepalive RequestInit.keepalive specification>
+getKeepaliveUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m Bool
+getKeepaliveUnsafe self = liftDOM ((((self ^. js "keepalive") >>= 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 (((self ^. js "keepalive") >>= valToBool))
+
+-- | <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 (self ^. jss "signal" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-signal RequestInit.signal specification>
+getSignal :: (MonadDOM m) => RequestInit -> m (Maybe AbortSignal)
+getSignal self = liftDOM (((self ^. js "signal") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-signal RequestInit.signal specification>
+getSignalUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m AbortSignal
+getSignalUnsafe self = liftDOM ((((self ^. js "signal") >>= 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 (((self ^. js "signal") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-duplex RequestInit.duplex specification>
+setDuplex :: (MonadDOM m) => RequestInit -> RequestDuplex -> m ()
+setDuplex self val = liftDOM (void (self ^. jss "duplex" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-duplex RequestInit.duplex specification>
+getDuplex :: (MonadDOM m) => RequestInit -> m (Maybe RequestDuplex)
+getDuplex self = liftDOM (((self ^. js "duplex") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-duplex RequestInit.duplex specification>
+getDuplexUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m RequestDuplex
+getDuplexUnsafe self = liftDOM ((((self ^. js "duplex") >>= 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 (((self ^. js "duplex") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-priority RequestInit.priority specification>
+setPriority :: (MonadDOM m) => RequestInit -> RequestPriority -> m ()
+setPriority self val = liftDOM (void (self ^. jss "priority" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-priority RequestInit.priority specification>
+getPriority :: (MonadDOM m) => RequestInit -> m (Maybe RequestPriority)
+getPriority self = liftDOM (((self ^. js "priority") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-priority RequestInit.priority specification>
+getPriorityUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m RequestPriority
+getPriorityUnsafe self = liftDOM ((((self ^. js "priority") >>= 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 (((self ^. js "priority") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-window RequestInit.window specification>
+setWindow :: (MonadDOM m) => RequestInit -> JSVal -> m ()
+setWindow self val = liftDOM (void (self ^. jss "window" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-requestinit-window RequestInit.window specification>
+getWindow :: (MonadDOM m) => RequestInit -> m JSVal
+getWindow self = liftDOM (self ^. js "window")
+
+-- | <https://wicg.github.io/local-network-access/#dom-requestinit-targetaddressspace RequestInit.targetAddressSpace specification>
+setTargetAddressSpace :: (MonadDOM m) => RequestInit -> IPAddressSpace -> m ()
+setTargetAddressSpace self val = liftDOM (void (self ^. jss "targetAddressSpace" (toJSVal val)))
+
+-- | <https://wicg.github.io/local-network-access/#dom-requestinit-targetaddressspace RequestInit.targetAddressSpace specification>
+getTargetAddressSpace :: (MonadDOM m) => RequestInit -> m (Maybe IPAddressSpace)
+getTargetAddressSpace self = liftDOM (((self ^. js "targetAddressSpace") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/local-network-access/#dom-requestinit-targetaddressspace RequestInit.targetAddressSpace specification>
+getTargetAddressSpaceUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m IPAddressSpace
+getTargetAddressSpaceUnsafe self = liftDOM ((((self ^. js "targetAddressSpace") >>= 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 (((self ^. js "targetAddressSpace") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/trust-token-api/#dom-requestinit-privatetoken RequestInit.privateToken specification>
+setPrivateToken :: (MonadDOM m) => RequestInit -> PrivateToken -> m ()
+setPrivateToken self val = liftDOM (void (self ^. jss "privateToken" (toJSVal val)))
+
+-- | <https://wicg.github.io/trust-token-api/#dom-requestinit-privatetoken RequestInit.privateToken specification>
+getPrivateToken :: (MonadDOM m) => RequestInit -> m (Maybe PrivateToken)
+getPrivateToken self = liftDOM (((self ^. js "privateToken") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/trust-token-api/#dom-requestinit-privatetoken RequestInit.privateToken specification>
+getPrivateTokenUnsafe :: (MonadDOM m, HasCallStack) => RequestInit -> m PrivateToken
+getPrivateTokenUnsafe self = liftDOM ((((self ^. js "privateToken") >>= 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 (((self ^. js "privateToken") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ResizeObserver.hs b/src/JSDOM/Generated/ResizeObserver.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ResizeObserver.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from resize-observer-1 (webref). Do not edit.
+module JSDOM.Generated.ResizeObserver
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserver/ResizeObserver MDN ResizeObserver. documentation>
+newResizeObserver :: (MonadDOM m) => ResizeObserverCallback -> m ResizeObserver
+newResizeObserver callback' = liftDOM (((new (jsg "ResizeObserver") [toJSVal callback']) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserver/disconnect MDN ResizeObserver.disconnect documentation>
+disconnect :: (MonadDOM m) => ResizeObserver -> m ()
+disconnect self = liftDOM (void (self ^. jsf "disconnect" ()))
+
+-- | <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 (self ^. jsf "observe" [toJSVal target, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 (self ^. jsf "unobserve" [toJSVal target]))
diff --git a/src/JSDOM/Generated/ResizeObserverCallback.hs b/src/JSDOM/Generated/ResizeObserverCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ResizeObserverCallback.hs
@@ -0,0 +1,33 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from resize-observer-1 (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newResizeObserverCallback :: (MonadDOM m) => ([ResizeObserverEntry] -> ResizeObserver -> JSM ()) -> m ResizeObserverCallback
+newResizeObserverCallback callback = liftDOM (ResizeObserverCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (entries : observer : _) -> do
+          entries' <- fromJSValUnchecked entries
+          observer' <- fromJSValUnchecked observer
+          callback entries' observer'))
+
+newResizeObserverCallbackSync :: (MonadDOM m) => ([ResizeObserverEntry] -> ResizeObserver -> JSM ()) -> m ResizeObserverCallback
+newResizeObserverCallbackSync callback = liftDOM (ResizeObserverCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (entries : observer : _) -> do
+          entries' <- fromJSValUnchecked entries
+          observer' <- fromJSValUnchecked observer
+          callback entries' observer'))
+
+newResizeObserverCallbackAsync :: (MonadDOM m) => ([ResizeObserverEntry] -> ResizeObserver -> JSM ()) -> m ResizeObserverCallback
+newResizeObserverCallbackAsync callback = liftDOM (ResizeObserverCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (entries : observer : _) -> do
+          entries' <- fromJSValUnchecked entries
+          observer' <- fromJSValUnchecked observer
+          callback entries' observer'))
diff --git a/src/JSDOM/Generated/ResizeObserverEntry.hs b/src/JSDOM/Generated/ResizeObserverEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ResizeObserverEntry.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from resize-observer-1 (webref). Do not edit.
+module JSDOM.Generated.ResizeObserverEntry
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserverEntry/target MDN ResizeObserverEntry.target documentation>
+getTarget :: (MonadDOM m) => ResizeObserverEntry -> m Element
+getTarget self = liftDOM (((self ^. js "target") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserverEntry/contentRect MDN ResizeObserverEntry.contentRect documentation>
+getContentRect :: (MonadDOM m) => ResizeObserverEntry -> m DOMRectReadOnly
+getContentRect self = liftDOM (((self ^. js "contentRect") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserverEntry/borderBoxSize MDN ResizeObserverEntry.borderBoxSize documentation>
+getBorderBoxSize :: (MonadDOM m) => ResizeObserverEntry -> m [ResizeObserverSize]
+getBorderBoxSize self = liftDOM (((self ^. js "borderBoxSize") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserverEntry/contentBoxSize MDN ResizeObserverEntry.contentBoxSize documentation>
+getContentBoxSize :: (MonadDOM m) => ResizeObserverEntry -> m [ResizeObserverSize]
+getContentBoxSize self = liftDOM (((self ^. js "contentBoxSize") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserverEntry/devicePixelContentBoxSize MDN ResizeObserverEntry.devicePixelContentBoxSize documentation>
+getDevicePixelContentBoxSize :: (MonadDOM m) => ResizeObserverEntry -> m [ResizeObserverSize]
+getDevicePixelContentBoxSize self = liftDOM (((self ^. js "devicePixelContentBoxSize") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ResizeObserverOptions.hs b/src/JSDOM/Generated/ResizeObserverOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ResizeObserverOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from resize-observer-1 (webref). Do not edit.
+module JSDOM.Generated.ResizeObserverOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/resize-observer-1/#dictdef-resizeobserveroptions ResizeObserverOptions specification>
+newResizeObserverOptions :: (MonadDOM m) => m ResizeObserverOptions
+newResizeObserverOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/resize-observer-1/#dom-resizeobserveroptions-box ResizeObserverOptions.box specification>
+setBox :: (MonadDOM m) => ResizeObserverOptions -> ResizeObserverBoxOptions -> m ()
+setBox self val = liftDOM (void (self ^. jss "box" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/resize-observer-1/#dom-resizeobserveroptions-box ResizeObserverOptions.box specification>
+getBox :: (MonadDOM m) => ResizeObserverOptions -> m (Maybe ResizeObserverBoxOptions)
+getBox self = liftDOM (((self ^. js "box") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/resize-observer-1/#dom-resizeobserveroptions-box ResizeObserverOptions.box specification>
+getBoxUnsafe :: (MonadDOM m, HasCallStack) => ResizeObserverOptions -> m ResizeObserverBoxOptions
+getBoxUnsafe self = liftDOM ((((self ^. js "box") >>= 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 (((self ^. js "box") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ResizeObserverSize.hs b/src/JSDOM/Generated/ResizeObserverSize.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ResizeObserverSize.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from resize-observer-1 (webref). Do not edit.
+module JSDOM.Generated.ResizeObserverSize
+       (getInlineSize, getBlockSize, ResizeObserverSize(..), gTypeResizeObserverSize)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserverSize/inlineSize MDN ResizeObserverSize.inlineSize documentation>
+getInlineSize :: (MonadDOM m) => ResizeObserverSize -> m Double
+getInlineSize self = liftDOM (((self ^. js "inlineSize") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ResizeObserverSize/blockSize MDN ResizeObserverSize.blockSize documentation>
+getBlockSize :: (MonadDOM m) => ResizeObserverSize -> m Double
+getBlockSize self = liftDOM (((self ^. js "blockSize") >>= valToNumber))
diff --git a/src/JSDOM/Generated/Response.hs b/src/JSDOM/Generated/Response.hs
--- a/src/JSDOM/Generated/Response.hs
+++ b/src/JSDOM/Generated/Response.hs
@@ -1,164 +1,80 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fetch (webref). Do not edit.
 module JSDOM.Generated.Response
-       (error, error_, redirect, redirect_, arrayBuffer, arrayBuffer_,
-        blob, blob_, formData, formData_, json, json_, text, text_, clone,
-        clone_, getType, getUrl, getRedirected, getStatus, getOk,
-        getStatusText, getHeaders, getBody, getBodyUnsafe,
-        getBodyUnchecked, getBodyUsed, Response(..), gTypeResponse)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.error Mozilla Response.error documentation> 
-error :: (MonadDOM m) => m Response
-error
-  = liftDOM
-      (((jsg "Response") ^. jsf "error" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.error Mozilla Response.error documentation> 
-error_ :: (MonadDOM m) => m ()
-error_ = liftDOM (void ((jsg "Response") ^. jsf "error" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.redirect Mozilla Response.redirect documentation> 
-redirect ::
-         (MonadDOM m, ToJSString url) => url -> Maybe Word -> m Response
-redirect url status
-  = liftDOM
-      (((jsg "Response") ^. jsf "redirect" [toJSVal url, toJSVal status])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.redirect Mozilla Response.redirect documentation> 
-redirect_ ::
-          (MonadDOM m, ToJSString url) => url -> Maybe Word -> m ()
-redirect_ url status
-  = liftDOM
-      (void
-         ((jsg "Response") ^. jsf "redirect" [toJSVal url, toJSVal status]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.arrayBuffer Mozilla Response.arrayBuffer documentation> 
-arrayBuffer :: (MonadDOM m) => Response -> m ArrayBuffer
-arrayBuffer self
-  = liftDOM
-      (((self ^. jsf "arrayBuffer" ()) >>= readPromise) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.arrayBuffer Mozilla Response.arrayBuffer documentation> 
-arrayBuffer_ :: (MonadDOM m) => Response -> m ()
-arrayBuffer_ self = liftDOM (void (self ^. jsf "arrayBuffer" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.blob Mozilla Response.blob documentation> 
-blob :: (MonadDOM m) => Response -> m Blob
-blob self
-  = liftDOM
-      (((self ^. jsf "blob" ()) >>= readPromise) >>= fromJSValUnchecked)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.blob Mozilla Response.blob documentation> 
-blob_ :: (MonadDOM m) => Response -> m ()
-blob_ self = liftDOM (void (self ^. jsf "blob" ()))
+-- | <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 (((new (jsg "Response") [toJSVal body, P.maybe (P.return jsUndefined) toJSVal init]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.formData Mozilla Response.formData documentation> 
-formData :: (MonadDOM m) => Response -> m Blob
-formData self
-  = liftDOM
-      (((self ^. jsf "formData" ()) >>= readPromise) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Response/clone MDN Response.clone documentation>
+clone :: (MonadDOM m) => Response -> m Response
+clone self = liftDOM (((self ^. jsf "clone" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.formData Mozilla Response.formData documentation> 
-formData_ :: (MonadDOM m) => Response -> m ()
-formData_ self = liftDOM (void (self ^. jsf "formData" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/Response/clone MDN Response.clone documentation>
+clone_ :: (MonadDOM m) => Response -> m ()
+clone_ self = liftDOM (void (self ^. jsf "clone" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.json Mozilla Response.json documentation> 
-json :: (MonadDOM m) => Response -> m JSVal
-json self
-  = liftDOM (((self ^. jsf "json" ()) >>= readPromise) >>= toJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/Response/error_static MDN Response.error documentation>
+error :: (MonadDOM m) => m Response
+error = liftDOM ((((jsg "Response") ^. jsf "error" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.json Mozilla Response.json documentation> 
-json_ :: (MonadDOM m) => Response -> m ()
-json_ self = liftDOM (void (self ^. jsf "json" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/Response/error_static MDN Response.error documentation>
+error_ :: (MonadDOM m) => m ()
+error_ = liftDOM (void ((jsg "Response") ^. jsf "error" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.text Mozilla Response.text documentation> 
-text :: (MonadDOM m, FromJSString result) => Response -> m result
-text self
-  = liftDOM
-      (((self ^. jsf "text" ()) >>= readPromise) >>= fromJSValUnchecked)
+-- | <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 ((((jsg "Response") ^. jsf "json" [toJSVal data', P.maybe (P.return jsUndefined) toJSVal init]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.text Mozilla Response.text documentation> 
-text_ :: (MonadDOM m) => Response -> m ()
-text_ self = liftDOM (void (self ^. jsf "text" ()))
+-- | <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 ((jsg "Response") ^. jsf "json" [toJSVal data', P.maybe (P.return jsUndefined) toJSVal init]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.clone Mozilla Response.clone documentation> 
-clone :: (MonadDOM m) => Response -> m Response
-clone self
-  = liftDOM ((self ^. jsf "clone" ()) >>= fromJSValUnchecked)
+-- | <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 ((((jsg "Response") ^. jsf "redirect" [toJSVal url, P.maybe (P.return jsUndefined) toJSVal status]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.clone Mozilla Response.clone documentation> 
-clone_ :: (MonadDOM m) => Response -> m ()
-clone_ self = liftDOM (void (self ^. jsf "clone" ()))
+-- | <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 ((jsg "Response") ^. jsf "redirect" [toJSVal url, P.maybe (P.return jsUndefined) toJSVal status]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.type Mozilla Response.type documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Response/type MDN Response.type documentation>
 getType :: (MonadDOM m) => Response -> m ResponseType
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.url Mozilla Response.url documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Response/url MDN Response.url documentation>
 getUrl :: (MonadDOM m, FromJSString result) => Response -> m result
-getUrl self = liftDOM ((self ^. js "url") >>= fromJSValUnchecked)
+getUrl self = liftDOM (((self ^. js "url") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.redirected Mozilla Response.redirected documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Response/redirected MDN Response.redirected documentation>
 getRedirected :: (MonadDOM m) => Response -> m Bool
-getRedirected self
-  = liftDOM ((self ^. js "redirected") >>= valToBool)
+getRedirected self = liftDOM (((self ^. js "redirected") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.status Mozilla Response.status documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Response/status MDN Response.status documentation>
 getStatus :: (MonadDOM m) => Response -> m Word
-getStatus self
-  = liftDOM (round <$> ((self ^. js "status") >>= valToNumber))
+getStatus self = liftDOM ((P.round <$> ((self ^. js "status") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.ok Mozilla Response.ok documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Response/ok MDN Response.ok documentation>
 getOk :: (MonadDOM m) => Response -> m Bool
-getOk self = liftDOM ((self ^. js "ok") >>= valToBool)
+getOk self = liftDOM (((self ^. js "ok") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.statusText Mozilla Response.statusText documentation> 
-getStatusText ::
-              (MonadDOM m, FromJSString result) => Response -> m result
-getStatusText self
-  = liftDOM ((self ^. js "statusText") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Response/statusText MDN Response.statusText documentation>
+getStatusText :: (MonadDOM m, FromJSString result) => Response -> m result
+getStatusText self = liftDOM (((self ^. js "statusText") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.headers Mozilla Response.headers documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Response/headers MDN Response.headers documentation>
 getHeaders :: (MonadDOM m) => Response -> m Headers
-getHeaders self
-  = liftDOM ((self ^. js "headers") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.body Mozilla Response.body documentation> 
-getBody :: (MonadDOM m) => Response -> m (Maybe ReadableStream)
-getBody self = liftDOM ((self ^. js "body") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.body Mozilla Response.body documentation> 
-getBodyUnsafe ::
-              (MonadDOM m, HasCallStack) => Response -> m ReadableStream
-getBodyUnsafe self
-  = liftDOM
-      (((self ^. js "body") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.body Mozilla Response.body documentation> 
-getBodyUnchecked :: (MonadDOM m) => Response -> m ReadableStream
-getBodyUnchecked self
-  = liftDOM ((self ^. js "body") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.bodyUsed Mozilla Response.bodyUsed documentation> 
-getBodyUsed :: (MonadDOM m) => Response -> m Bool
-getBodyUsed self = liftDOM ((self ^. js "bodyUsed") >>= valToBool)
+getHeaders self = liftDOM (((self ^. js "headers") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ResponseInit.hs b/src/JSDOM/Generated/ResponseInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ResponseInit.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fetch (webref). Do not edit.
+module JSDOM.Generated.ResponseInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://fetch.spec.whatwg.org/#responseinit ResponseInit specification>
+newResponseInit :: (MonadDOM m) => m ResponseInit
+newResponseInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-status ResponseInit.status specification>
+setStatus :: (MonadDOM m) => ResponseInit -> Word -> m ()
+setStatus self val = liftDOM (void (self ^. jss "status" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-status ResponseInit.status specification>
+getStatus :: (MonadDOM m) => ResponseInit -> m (Maybe Word)
+getStatus self = liftDOM (((self ^. js "status") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-status ResponseInit.status specification>
+getStatusUnsafe :: (MonadDOM m, HasCallStack) => ResponseInit -> m Word
+getStatusUnsafe self = liftDOM ((((self ^. js "status") >>= 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 ((P.round <$> ((self ^. js "status") >>= valToNumber)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-statustext ResponseInit.statusText specification>
+setStatusText :: (MonadDOM m, ToJSString val) => ResponseInit -> val -> m ()
+setStatusText self val = liftDOM (void (self ^. jss "statusText" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-statustext ResponseInit.statusText specification>
+getStatusText :: (MonadDOM m, FromJSString result) => ResponseInit -> m (Maybe result)
+getStatusText self = liftDOM (((self ^. js "statusText") >>= fromMaybeJSString))
+
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-statustext ResponseInit.statusText specification>
+getStatusTextUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ResponseInit -> m result
+getStatusTextUnsafe self = liftDOM ((((self ^. js "statusText") >>= fromMaybeJSString) >>= 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 (((self ^. js "statusText") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-headers ResponseInit.headers specification>
+setHeaders :: (MonadDOM m, IsHeadersInit val) => ResponseInit -> val -> m ()
+setHeaders self val = liftDOM (void (self ^. jss "headers" (toJSVal val)))
+
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-headers ResponseInit.headers specification>
+getHeaders :: (MonadDOM m) => ResponseInit -> m (Maybe HeadersInit)
+getHeaders self = liftDOM (((self ^. js "headers") >>= fromJSValUnchecked))
+
+-- | <https://fetch.spec.whatwg.org/#dom-responseinit-headers ResponseInit.headers specification>
+getHeadersUnsafe :: (MonadDOM m, HasCallStack) => ResponseInit -> m HeadersInit
+getHeadersUnsafe self = liftDOM ((((self ^. js "headers") >>= 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 (((self ^. js "headers") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RouterCondition.hs b/src/JSDOM/Generated/RouterCondition.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RouterCondition.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.RouterCondition
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-routercondition RouterCondition specification>
+newRouterCondition :: (MonadDOM m) => m RouterCondition
+newRouterCondition = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-urlpattern RouterCondition.urlPattern specification>
+setUrlPattern :: (MonadDOM m, IsURLPatternCompatible val) => RouterCondition -> val -> m ()
+setUrlPattern self val = liftDOM (void (self ^. jss "urlPattern" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-urlpattern RouterCondition.urlPattern specification>
+getUrlPattern :: (MonadDOM m) => RouterCondition -> m (Maybe URLPatternCompatible)
+getUrlPattern self = liftDOM (((self ^. js "urlPattern") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-urlpattern RouterCondition.urlPattern specification>
+getUrlPatternUnsafe :: (MonadDOM m, HasCallStack) => RouterCondition -> m URLPatternCompatible
+getUrlPatternUnsafe self = liftDOM ((((self ^. js "urlPattern") >>= 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 (((self ^. js "urlPattern") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestmethod RouterCondition.requestMethod specification>
+setRequestMethod :: (MonadDOM m, ToJSString val) => RouterCondition -> val -> m ()
+setRequestMethod self val = liftDOM (void (self ^. jss "requestMethod" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestmethod RouterCondition.requestMethod specification>
+getRequestMethod :: (MonadDOM m, FromJSString result) => RouterCondition -> m (Maybe result)
+getRequestMethod self = liftDOM (((self ^. js "requestMethod") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestmethod RouterCondition.requestMethod specification>
+getRequestMethodUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RouterCondition -> m result
+getRequestMethodUnsafe self = liftDOM ((((self ^. js "requestMethod") >>= fromMaybeJSString) >>= 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 (((self ^. js "requestMethod") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestmode RouterCondition.requestMode specification>
+setRequestMode :: (MonadDOM m) => RouterCondition -> RequestMode -> m ()
+setRequestMode self val = liftDOM (void (self ^. jss "requestMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestmode RouterCondition.requestMode specification>
+getRequestMode :: (MonadDOM m) => RouterCondition -> m (Maybe RequestMode)
+getRequestMode self = liftDOM (((self ^. js "requestMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestmode RouterCondition.requestMode specification>
+getRequestModeUnsafe :: (MonadDOM m, HasCallStack) => RouterCondition -> m RequestMode
+getRequestModeUnsafe self = liftDOM ((((self ^. js "requestMode") >>= 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 (((self ^. js "requestMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestdestination RouterCondition.requestDestination specification>
+setRequestDestination :: (MonadDOM m) => RouterCondition -> RequestDestination -> m ()
+setRequestDestination self val = liftDOM (void (self ^. jss "requestDestination" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestdestination RouterCondition.requestDestination specification>
+getRequestDestination :: (MonadDOM m) => RouterCondition -> m (Maybe RequestDestination)
+getRequestDestination self = liftDOM (((self ^. js "requestDestination") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-requestdestination RouterCondition.requestDestination specification>
+getRequestDestinationUnsafe :: (MonadDOM m, HasCallStack) => RouterCondition -> m RequestDestination
+getRequestDestinationUnsafe self = liftDOM ((((self ^. js "requestDestination") >>= 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 (((self ^. js "requestDestination") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-runningstatus RouterCondition.runningStatus specification>
+setRunningStatus :: (MonadDOM m) => RouterCondition -> RunningStatus -> m ()
+setRunningStatus self val = liftDOM (void (self ^. jss "runningStatus" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-runningstatus RouterCondition.runningStatus specification>
+getRunningStatus :: (MonadDOM m) => RouterCondition -> m (Maybe RunningStatus)
+getRunningStatus self = liftDOM (((self ^. js "runningStatus") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-runningstatus RouterCondition.runningStatus specification>
+getRunningStatusUnsafe :: (MonadDOM m, HasCallStack) => RouterCondition -> m RunningStatus
+getRunningStatusUnsafe self = liftDOM ((((self ^. js "runningStatus") >>= 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 (((self ^. js "runningStatus") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-or RouterCondition.or specification>
+setOr :: (MonadDOM m) => RouterCondition -> [RouterCondition] -> m ()
+setOr self val = liftDOM (void (self ^. jss "or" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-or RouterCondition.or specification>
+getOr :: (MonadDOM m) => RouterCondition -> m (Maybe [RouterCondition])
+getOr self = liftDOM (((self ^. js "or") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-or RouterCondition.or specification>
+getOrUnsafe :: (MonadDOM m, HasCallStack) => RouterCondition -> m [RouterCondition]
+getOrUnsafe self = liftDOM ((((self ^. js "or") >>= 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 (((self ^. js "or") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-not RouterCondition.not specification>
+setNot :: (MonadDOM m) => RouterCondition -> RouterCondition -> m ()
+setNot self val = liftDOM (void (self ^. jss "not" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-not RouterCondition.not specification>
+getNot :: (MonadDOM m) => RouterCondition -> m (Maybe RouterCondition)
+getNot self = liftDOM (((self ^. js "not") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routercondition-not RouterCondition.not specification>
+getNotUnsafe :: (MonadDOM m, HasCallStack) => RouterCondition -> m RouterCondition
+getNotUnsafe self = liftDOM ((((self ^. js "not") >>= 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 (((self ^. js "not") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RouterRule.hs b/src/JSDOM/Generated/RouterRule.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RouterRule.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.RouterRule
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-routerrule RouterRule specification>
+newRouterRule :: (MonadDOM m, IsRouterSource source) => RouterCondition -> source -> m RouterRule
+newRouterRule condition source = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "condition" (toJSVal condition)) P.>> (o ^. jss "source" (toJSVal source)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routerrule-condition RouterRule.condition specification>
+setCondition :: (MonadDOM m) => RouterRule -> RouterCondition -> m ()
+setCondition self val = liftDOM (void (self ^. jss "condition" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routerrule-condition RouterRule.condition specification>
+getCondition :: (MonadDOM m) => RouterRule -> m RouterCondition
+getCondition self = liftDOM (((self ^. js "condition") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routerrule-source RouterRule.source specification>
+setSource :: (MonadDOM m, IsRouterSource val) => RouterRule -> val -> m ()
+setSource self val = liftDOM (void (self ^. jss "source" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routerrule-source RouterRule.source specification>
+getSource :: (MonadDOM m) => RouterRule -> m RouterSource
+getSource self = liftDOM (((self ^. js "source") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RouterSourceDict.hs b/src/JSDOM/Generated/RouterSourceDict.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RouterSourceDict.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.RouterSourceDict
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/ServiceWorker/#dictdef-routersourcedict RouterSourceDict specification>
+newRouterSourceDict :: (MonadDOM m) => m RouterSourceDict
+newRouterSourceDict = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routersourcedict-cachename RouterSourceDict.cacheName specification>
+setCacheName :: (MonadDOM m, ToJSString val) => RouterSourceDict -> val -> m ()
+setCacheName self val = liftDOM (void (self ^. jss "cacheName" (toJSVal val)))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routersourcedict-cachename RouterSourceDict.cacheName specification>
+getCacheName :: (MonadDOM m, FromJSString result) => RouterSourceDict -> m (Maybe result)
+getCacheName self = liftDOM (((self ^. js "cacheName") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-routersourcedict-cachename RouterSourceDict.cacheName specification>
+getCacheNameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RouterSourceDict -> m result
+getCacheNameUnsafe self = liftDOM ((((self ^. js "cacheName") >>= fromMaybeJSString) >>= 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 (((self ^. js "cacheName") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/RsaOtherPrimesInfo.hs b/src/JSDOM/Generated/RsaOtherPrimesInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/RsaOtherPrimesInfo.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcrypto-2 (webref). Do not edit.
+module JSDOM.Generated.RsaOtherPrimesInfo
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcrypto/#dfn-RsaOtherPrimesInfo RsaOtherPrimesInfo specification>
+newRsaOtherPrimesInfo :: (MonadDOM m) => m RsaOtherPrimesInfo
+newRsaOtherPrimesInfo = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-r RsaOtherPrimesInfo.r specification>
+setR :: (MonadDOM m, ToJSString val) => RsaOtherPrimesInfo -> val -> m ()
+setR self val = liftDOM (void (self ^. jss "r" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-r RsaOtherPrimesInfo.r specification>
+getR :: (MonadDOM m, FromJSString result) => RsaOtherPrimesInfo -> m (Maybe result)
+getR self = liftDOM (((self ^. js "r") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-r RsaOtherPrimesInfo.r specification>
+getRUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RsaOtherPrimesInfo -> m result
+getRUnsafe self = liftDOM ((((self ^. js "r") >>= fromMaybeJSString) >>= 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 (((self ^. js "r") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-d RsaOtherPrimesInfo.d specification>
+setD :: (MonadDOM m, ToJSString val) => RsaOtherPrimesInfo -> val -> m ()
+setD self val = liftDOM (void (self ^. jss "d" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-d RsaOtherPrimesInfo.d specification>
+getD :: (MonadDOM m, FromJSString result) => RsaOtherPrimesInfo -> m (Maybe result)
+getD self = liftDOM (((self ^. js "d") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-d RsaOtherPrimesInfo.d specification>
+getDUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RsaOtherPrimesInfo -> m result
+getDUnsafe self = liftDOM ((((self ^. js "d") >>= fromMaybeJSString) >>= 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 (((self ^. js "d") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-t RsaOtherPrimesInfo.t specification>
+setT :: (MonadDOM m, ToJSString val) => RsaOtherPrimesInfo -> val -> m ()
+setT self val = liftDOM (void (self ^. jss "t" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-t RsaOtherPrimesInfo.t specification>
+getT :: (MonadDOM m, FromJSString result) => RsaOtherPrimesInfo -> m (Maybe result)
+getT self = liftDOM (((self ^. js "t") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcrypto/#dom-rsaotherprimesinfo-t RsaOtherPrimesInfo.t specification>
+getTUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => RsaOtherPrimesInfo -> m result
+getTUnsafe self = liftDOM ((((self ^. js "t") >>= fromMaybeJSString) >>= 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 (((self ^. js "t") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SQLError.hs b/src/JSDOM/Generated/SQLError.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SQLError.hs
+++ /dev/null
@@ -1,42 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.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, getCode, getMessage,
-        SQLError(..), gTypeSQLError)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.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
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLError.code Mozilla SQLError.code documentation> 
-getCode :: (MonadDOM m) => SQLError -> m Word
-getCode self
-  = liftDOM (round <$> ((self ^. js "code") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLError.message Mozilla SQLError.message documentation> 
-getMessage ::
-           (MonadDOM m, FromJSString result) => SQLError -> m result
-getMessage self
-  = liftDOM ((self ^. js "message") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/SQLException.hs b/src/JSDOM/Generated/SQLException.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SQLException.hs
+++ /dev/null
@@ -1,42 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.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, getCode, getMessage,
-        SQLException(..), gTypeSQLException)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.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
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLException.code Mozilla SQLException.code documentation> 
-getCode :: (MonadDOM m) => SQLException -> m Word
-getCode self
-  = liftDOM (round <$> ((self ^. js "code") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLException.message Mozilla SQLException.message documentation> 
-getMessage ::
-           (MonadDOM m, FromJSString result) => SQLException -> m result
-getMessage self
-  = liftDOM ((self ^. js "message") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/SQLResultSet.hs b/src/JSDOM/Generated/SQLResultSet.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SQLResultSet.hs
+++ /dev/null
@@ -1,35 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SQLResultSet
-       (getRows, getInsertId, getRowsAffected, SQLResultSet(..),
-        gTypeSQLResultSet)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.rows Mozilla SQLResultSet.rows documentation> 
-getRows :: (MonadDOM m) => SQLResultSet -> m SQLResultSetRowList
-getRows self = liftDOM ((self ^. js "rows") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.insertId Mozilla SQLResultSet.insertId documentation> 
-getInsertId :: (MonadDOM m) => SQLResultSet -> m Int64
-getInsertId self
-  = liftDOM (round <$> ((self ^. js "insertId") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.rowsAffected Mozilla SQLResultSet.rowsAffected documentation> 
-getRowsAffected :: (MonadDOM m) => SQLResultSet -> m Int
-getRowsAffected self
-  = liftDOM (round <$> ((self ^. js "rowsAffected") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SQLResultSetRowList.hs b/src/JSDOM/Generated/SQLResultSetRowList.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SQLResultSetRowList.hs
+++ /dev/null
@@ -1,39 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SQLResultSetRowList
-       (item, item_, getLength, SQLResultSetRowList(..),
-        gTypeSQLResultSetRowList)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList.item Mozilla SQLResultSetRowList.item documentation> 
-item ::
-     (MonadDOM m) =>
-       SQLResultSetRowList -> Word -> m (Record DOMString SQLValue)
-item self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList.item Mozilla SQLResultSetRowList.item documentation> 
-item_ :: (MonadDOM m) => SQLResultSetRowList -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList.length Mozilla SQLResultSetRowList.length documentation> 
-getLength :: (MonadDOM m) => SQLResultSetRowList -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SQLStatementCallback.hs b/src/JSDOM/Generated/SQLStatementCallback.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SQLStatementCallback.hs
+++ /dev/null
@@ -1,69 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SQLStatementCallback
-       (newSQLStatementCallback, newSQLStatementCallbackSync,
-        newSQLStatementCallbackAsync, SQLStatementCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementCallback Mozilla SQLStatementCallback documentation> 
-newSQLStatementCallback ::
-                        (MonadDOM m) =>
-                          (SQLTransaction -> SQLResultSet -> JSM ()) ->
-                            m SQLStatementCallback
-newSQLStatementCallback callback
-  = liftDOM
-      (SQLStatementCallback . Callback <$>
-         function
-           (\ _ _ [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 ::
-                            (MonadDOM m) =>
-                              (SQLTransaction -> SQLResultSet -> JSM ()) ->
-                                m SQLStatementCallback
-newSQLStatementCallbackSync callback
-  = liftDOM
-      (SQLStatementCallback . Callback <$>
-         function
-           (\ _ _ [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 ::
-                             (MonadDOM m) =>
-                               (SQLTransaction -> SQLResultSet -> JSM ()) ->
-                                 m SQLStatementCallback
-newSQLStatementCallbackAsync callback
-  = liftDOM
-      (SQLStatementCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [transaction, resultSet] ->
-              fromJSValUnchecked resultSet >>=
-                \ resultSet' ->
-                  fromJSValUnchecked transaction >>=
-                    \ transaction' -> callback transaction'
-                    resultSet'))
diff --git a/src/JSDOM/Generated/SQLStatementErrorCallback.hs b/src/JSDOM/Generated/SQLStatementErrorCallback.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SQLStatementErrorCallback.hs
+++ /dev/null
@@ -1,69 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SQLStatementErrorCallback
-       (newSQLStatementErrorCallback, newSQLStatementErrorCallbackSync,
-        newSQLStatementErrorCallbackAsync, SQLStatementErrorCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementErrorCallback Mozilla SQLStatementErrorCallback documentation> 
-newSQLStatementErrorCallback ::
-                             (MonadDOM m) =>
-                               (SQLTransaction -> SQLError -> JSM ()) ->
-                                 m SQLStatementErrorCallback
-newSQLStatementErrorCallback callback
-  = liftDOM
-      (SQLStatementErrorCallback . Callback <$>
-         function
-           (\ _ _ [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 ::
-                                 (MonadDOM m) =>
-                                   (SQLTransaction -> SQLError -> JSM ()) ->
-                                     m SQLStatementErrorCallback
-newSQLStatementErrorCallbackSync callback
-  = liftDOM
-      (SQLStatementErrorCallback . Callback <$>
-         function
-           (\ _ _ [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 ::
-                                  (MonadDOM m) =>
-                                    (SQLTransaction -> SQLError -> JSM ()) ->
-                                      m SQLStatementErrorCallback
-newSQLStatementErrorCallbackAsync callback
-  = liftDOM
-      (SQLStatementErrorCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [transaction, error] ->
-              fromJSValUnchecked error >>=
-                \ error' ->
-                  fromJSValUnchecked transaction >>=
-                    \ transaction' -> callback transaction'
-                    error'))
diff --git a/src/JSDOM/Generated/SQLTransaction.hs b/src/JSDOM/Generated/SQLTransaction.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SQLTransaction.hs
+++ /dev/null
@@ -1,34 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SQLTransaction
-       (executeSql, SQLTransaction(..), gTypeSQLTransaction) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransaction.executeSql Mozilla SQLTransaction.executeSql documentation> 
-executeSql ::
-           (MonadDOM m, ToJSString sqlStatement, IsSQLValue arguments) =>
-             SQLTransaction ->
-               sqlStatement ->
-                 [arguments] ->
-                   Maybe SQLStatementCallback ->
-                     Maybe SQLStatementErrorCallback -> m ()
-executeSql self sqlStatement arguments callback errorCallback
-  = liftDOM
-      (void
-         (self ^. jsf "executeSql"
-            [toJSVal sqlStatement, toJSVal (array (mapM toJSVal arguments)),
-             toJSVal callback, toJSVal errorCallback]))
diff --git a/src/JSDOM/Generated/SQLTransactionCallback.hs b/src/JSDOM/Generated/SQLTransactionCallback.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SQLTransactionCallback.hs
+++ /dev/null
@@ -1,57 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SQLTransactionCallback
-       (newSQLTransactionCallback, newSQLTransactionCallbackSync,
-        newSQLTransactionCallbackAsync, SQLTransactionCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionCallback Mozilla SQLTransactionCallback documentation> 
-newSQLTransactionCallback ::
-                          (MonadDOM m) =>
-                            (SQLTransaction -> JSM ()) -> m SQLTransactionCallback
-newSQLTransactionCallback callback
-  = liftDOM
-      (SQLTransactionCallback . Callback <$>
-         function
-           (\ _ _ [transaction] ->
-              fromJSValUnchecked transaction >>=
-                \ transaction' -> callback transaction'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionCallback Mozilla SQLTransactionCallback documentation> 
-newSQLTransactionCallbackSync ::
-                              (MonadDOM m) =>
-                                (SQLTransaction -> JSM ()) -> m SQLTransactionCallback
-newSQLTransactionCallbackSync callback
-  = liftDOM
-      (SQLTransactionCallback . Callback <$>
-         function
-           (\ _ _ [transaction] ->
-              fromJSValUnchecked transaction >>=
-                \ transaction' -> callback transaction'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionCallback Mozilla SQLTransactionCallback documentation> 
-newSQLTransactionCallbackAsync ::
-                               (MonadDOM m) =>
-                                 (SQLTransaction -> JSM ()) -> m SQLTransactionCallback
-newSQLTransactionCallbackAsync callback
-  = liftDOM
-      (SQLTransactionCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [transaction] ->
-              fromJSValUnchecked transaction >>=
-                \ transaction' -> callback transaction'))
diff --git a/src/JSDOM/Generated/SQLTransactionErrorCallback.hs b/src/JSDOM/Generated/SQLTransactionErrorCallback.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SQLTransactionErrorCallback.hs
+++ /dev/null
@@ -1,55 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SQLTransactionErrorCallback
-       (newSQLTransactionErrorCallback,
-        newSQLTransactionErrorCallbackSync,
-        newSQLTransactionErrorCallbackAsync, SQLTransactionErrorCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
-newSQLTransactionErrorCallback ::
-                               (MonadDOM m) =>
-                                 (SQLError -> JSM ()) -> m SQLTransactionErrorCallback
-newSQLTransactionErrorCallback callback
-  = liftDOM
-      (SQLTransactionErrorCallback . Callback <$>
-         function
-           (\ _ _ [error] ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
-newSQLTransactionErrorCallbackSync ::
-                                   (MonadDOM m) =>
-                                     (SQLError -> JSM ()) -> m SQLTransactionErrorCallback
-newSQLTransactionErrorCallbackSync callback
-  = liftDOM
-      (SQLTransactionErrorCallback . Callback <$>
-         function
-           (\ _ _ [error] ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
-newSQLTransactionErrorCallbackAsync ::
-                                    (MonadDOM m) =>
-                                      (SQLError -> JSM ()) -> m SQLTransactionErrorCallback
-newSQLTransactionErrorCallbackAsync callback
-  = liftDOM
-      (SQLTransactionErrorCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [error] ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
diff --git a/src/JSDOM/Generated/SVGAElement.hs b/src/JSDOM/Generated/SVGAElement.hs
--- a/src/JSDOM/Generated/SVGAElement.hs
+++ b/src/JSDOM/Generated/SVGAElement.hs
@@ -1,24 +1,56 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGAElement
-       (getTarget, SVGAElement(..), gTypeSVGAElement) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (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.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAElement.target Mozilla SVGAElement.target documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/target MDN SVGAElement.target documentation>
 getTarget :: (MonadDOM m) => SVGAElement -> m SVGAnimatedString
-getTarget self
-  = liftDOM ((self ^. js "target") >>= fromJSValUnchecked)
+getTarget self = liftDOM (((self ^. js "target") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "download" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/download MDN SVGAElement.download documentation>
+getDownload :: (MonadDOM m, FromJSString result) => SVGAElement -> m result
+getDownload self = liftDOM (((self ^. js "download") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "ping" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/ping MDN SVGAElement.ping documentation>
+getPing :: (MonadDOM m, FromJSString result) => SVGAElement -> m result
+getPing self = liftDOM (((self ^. js "ping") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "rel" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/rel MDN SVGAElement.rel documentation>
+getRel :: (MonadDOM m, FromJSString result) => SVGAElement -> m result
+getRel self = liftDOM (((self ^. js "rel") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/relList MDN SVGAElement.relList documentation>
+getRelList :: (MonadDOM m) => SVGAElement -> m DOMTokenList
+getRelList self = liftDOM (((self ^. js "relList") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "referrerPolicy" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/referrerPolicy MDN SVGAElement.referrerPolicy documentation>
+getReferrerPolicy :: (MonadDOM m, FromJSString result) => SVGAElement -> m result
+getReferrerPolicy self = liftDOM (((self ^. js "referrerPolicy") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGAltGlyphElement.hs b/src/JSDOM/Generated/SVGAltGlyphElement.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGAltGlyphElement.hs
+++ /dev/null
@@ -1,44 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGAltGlyphElement
-       (setGlyphRef, getGlyphRef, setFormat, getFormat,
-        SVGAltGlyphElement(..), gTypeSVGAltGlyphElement)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.glyphRef Mozilla SVGAltGlyphElement.glyphRef documentation> 
-setGlyphRef ::
-            (MonadDOM m, ToJSString val) => SVGAltGlyphElement -> val -> m ()
-setGlyphRef self val
-  = liftDOM (self ^. jss "glyphRef" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.glyphRef Mozilla SVGAltGlyphElement.glyphRef documentation> 
-getGlyphRef ::
-            (MonadDOM m, FromJSString result) => SVGAltGlyphElement -> m result
-getGlyphRef self
-  = liftDOM ((self ^. js "glyphRef") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.format Mozilla SVGAltGlyphElement.format documentation> 
-setFormat ::
-          (MonadDOM m, ToJSString val) => SVGAltGlyphElement -> val -> m ()
-setFormat self val = liftDOM (self ^. jss "format" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.format Mozilla SVGAltGlyphElement.format documentation> 
-getFormat ::
-          (MonadDOM m, FromJSString result) => SVGAltGlyphElement -> m result
-getFormat self
-  = liftDOM ((self ^. js "format") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/SVGAngle.hs b/src/JSDOM/Generated/SVGAngle.hs
--- a/src/JSDOM/Generated/SVGAngle.hs
+++ b/src/JSDOM/Generated/SVGAngle.hs
@@ -1,84 +1,62 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGAngle
-       (newValueSpecifiedUnits, convertToSpecifiedUnits,
-        pattern SVG_ANGLETYPE_UNKNOWN, pattern SVG_ANGLETYPE_UNSPECIFIED,
-        pattern SVG_ANGLETYPE_DEG, pattern SVG_ANGLETYPE_RAD,
-        pattern SVG_ANGLETYPE_GRAD, getUnitType, setValue, getValue,
-        setValueInSpecifiedUnits, getValueInSpecifiedUnits,
-        setValueAsString, getValueAsString, SVGAngle(..), gTypeSVGAngle)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.newValueSpecifiedUnits Mozilla SVGAngle.newValueSpecifiedUnits documentation> 
-newValueSpecifiedUnits ::
-                       (MonadDOM m) => SVGAngle -> Word -> Float -> m ()
-newValueSpecifiedUnits self unitType valueInSpecifiedUnits
-  = liftDOM
-      (void
-         (self ^. jsf "newValueSpecifiedUnits"
-            [toJSVal unitType, toJSVal valueInSpecifiedUnits]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.convertToSpecifiedUnits Mozilla SVGAngle.convertToSpecifiedUnits documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAngle/convertToSpecifiedUnits MDN SVGAngle.convertToSpecifiedUnits documentation>
 convertToSpecifiedUnits :: (MonadDOM m) => SVGAngle -> Word -> m ()
-convertToSpecifiedUnits self unitType
-  = liftDOM
-      (void (self ^. jsf "convertToSpecifiedUnits" [toJSVal 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
+convertToSpecifiedUnits self unitType = liftDOM (void (self ^. jsf "convertToSpecifiedUnits" [toJSVal unitType]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.unitType Mozilla SVGAngle.unitType documentation> 
+-- | <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 (self ^. jsf "newValueSpecifiedUnits" [toJSVal unitType, toJSVal valueInSpecifiedUnits]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAngle/unitType MDN SVGAngle.unitType documentation>
 getUnitType :: (MonadDOM m) => SVGAngle -> m Word
-getUnitType self
-  = liftDOM (round <$> ((self ^. js "unitType") >>= valToNumber))
+getUnitType self = liftDOM ((P.round <$> ((self ^. js "unitType") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.value Mozilla SVGAngle.value documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAngle/value MDN SVGAngle.value documentation>
 setValue :: (MonadDOM m) => SVGAngle -> Float -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+setValue self val = liftDOM (void (self ^. jss "value" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.value Mozilla SVGAngle.value documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAngle/value MDN SVGAngle.value documentation>
 getValue :: (MonadDOM m) => SVGAngle -> m Float
-getValue self
-  = liftDOM (realToFrac <$> ((self ^. js "value") >>= valToNumber))
+getValue self = liftDOM ((P.realToFrac <$> ((self ^. js "value") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueInSpecifiedUnits Mozilla SVGAngle.valueInSpecifiedUnits documentation> 
-setValueInSpecifiedUnits ::
-                         (MonadDOM m) => SVGAngle -> Float -> m ()
-setValueInSpecifiedUnits self val
-  = liftDOM (self ^. jss "valueInSpecifiedUnits" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAngle/valueInSpecifiedUnits MDN SVGAngle.valueInSpecifiedUnits documentation>
+setValueInSpecifiedUnits :: (MonadDOM m) => SVGAngle -> Float -> m ()
+setValueInSpecifiedUnits self val = liftDOM (void (self ^. jss "valueInSpecifiedUnits" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueInSpecifiedUnits Mozilla SVGAngle.valueInSpecifiedUnits documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAngle/valueInSpecifiedUnits MDN SVGAngle.valueInSpecifiedUnits documentation>
 getValueInSpecifiedUnits :: (MonadDOM m) => SVGAngle -> m Float
-getValueInSpecifiedUnits self
-  = liftDOM
-      (realToFrac <$>
-         ((self ^. js "valueInSpecifiedUnits") >>= valToNumber))
+getValueInSpecifiedUnits self = liftDOM ((P.realToFrac <$> ((self ^. js "valueInSpecifiedUnits") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueAsString Mozilla SVGAngle.valueAsString documentation> 
-setValueAsString ::
-                 (MonadDOM m, ToJSString val) => SVGAngle -> val -> m ()
-setValueAsString self val
-  = liftDOM (self ^. jss "valueAsString" (toJSVal val))
+-- | <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 (self ^. jss "valueAsString" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueAsString Mozilla SVGAngle.valueAsString documentation> 
-getValueAsString ::
-                 (MonadDOM m, FromJSString result) => SVGAngle -> m result
-getValueAsString self
-  = liftDOM ((self ^. js "valueAsString") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAngle/valueAsString MDN SVGAngle.valueAsString documentation>
+getValueAsString :: (MonadDOM m, FromJSString result) => SVGAngle -> m result
+getValueAsString self = liftDOM (((self ^. js "valueAsString") >>= fromJSValUnchecked))
+
+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/JSDOM/Generated/SVGAnimateElement.hs b/src/JSDOM/Generated/SVGAnimateElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGAnimateElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from svg-animations (webref). Do not edit.
+module JSDOM.Generated.SVGAnimateElement
+       (SVGAnimateElement(..), gTypeSVGAnimateElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGAnimateMotionElement.hs b/src/JSDOM/Generated/SVGAnimateMotionElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGAnimateMotionElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from svg-animations (webref). Do not edit.
+module JSDOM.Generated.SVGAnimateMotionElement
+       (SVGAnimateMotionElement(..), gTypeSVGAnimateMotionElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGAnimateTransformElement.hs b/src/JSDOM/Generated/SVGAnimateTransformElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGAnimateTransformElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from svg-animations (webref). Do not edit.
+module JSDOM.Generated.SVGAnimateTransformElement
+       (SVGAnimateTransformElement(..), gTypeSVGAnimateTransformElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGAnimatedAngle.hs b/src/JSDOM/Generated/SVGAnimatedAngle.hs
--- a/src/JSDOM/Generated/SVGAnimatedAngle.hs
+++ b/src/JSDOM/Generated/SVGAnimatedAngle.hs
@@ -1,31 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGAnimatedAngle
-       (getBaseVal, getAnimVal, SVGAnimatedAngle(..),
-        gTypeSVGAnimatedAngle)
+       (getBaseVal, getAnimVal, SVGAnimatedAngle(..), gTypeSVGAnimatedAngle)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle.baseVal Mozilla SVGAnimatedAngle.baseVal documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedAngle/baseVal MDN SVGAnimatedAngle.baseVal documentation>
 getBaseVal :: (MonadDOM m) => SVGAnimatedAngle -> m SVGAngle
-getBaseVal self
-  = liftDOM ((self ^. js "baseVal") >>= fromJSValUnchecked)
+getBaseVal self = liftDOM (((self ^. js "baseVal") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle.animVal Mozilla SVGAnimatedAngle.animVal documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedAngle/animVal MDN SVGAnimatedAngle.animVal documentation>
 getAnimVal :: (MonadDOM m) => SVGAnimatedAngle -> m SVGAngle
-getAnimVal self
-  = liftDOM ((self ^. js "animVal") >>= fromJSValUnchecked)
+getAnimVal self = liftDOM (((self ^. js "animVal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGAnimatedBoolean.hs b/src/JSDOM/Generated/SVGAnimatedBoolean.hs
--- a/src/JSDOM/Generated/SVGAnimatedBoolean.hs
+++ b/src/JSDOM/Generated/SVGAnimatedBoolean.hs
@@ -1,33 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGAnimatedBoolean
-       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedBoolean(..),
-        gTypeSVGAnimatedBoolean)
+       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedBoolean(..), gTypeSVGAnimatedBoolean)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean.baseVal Mozilla SVGAnimatedBoolean.baseVal documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedBoolean/baseVal MDN SVGAnimatedBoolean.baseVal documentation>
 setBaseVal :: (MonadDOM m) => SVGAnimatedBoolean -> Bool -> m ()
-setBaseVal self val = liftDOM (self ^. jss "baseVal" (toJSVal val))
+setBaseVal self val = liftDOM (void (self ^. jss "baseVal" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean.baseVal Mozilla SVGAnimatedBoolean.baseVal documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedBoolean/baseVal MDN SVGAnimatedBoolean.baseVal documentation>
 getBaseVal :: (MonadDOM m) => SVGAnimatedBoolean -> m Bool
-getBaseVal self = liftDOM ((self ^. js "baseVal") >>= valToBool)
+getBaseVal self = liftDOM (((self ^. js "baseVal") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean.animVal Mozilla SVGAnimatedBoolean.animVal documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedBoolean/animVal MDN SVGAnimatedBoolean.animVal documentation>
 getAnimVal :: (MonadDOM m) => SVGAnimatedBoolean -> m Bool
-getAnimVal self = liftDOM ((self ^. js "animVal") >>= valToBool)
+getAnimVal self = liftDOM (((self ^. js "animVal") >>= valToBool))
diff --git a/src/JSDOM/Generated/SVGAnimatedEnumeration.hs b/src/JSDOM/Generated/SVGAnimatedEnumeration.hs
--- a/src/JSDOM/Generated/SVGAnimatedEnumeration.hs
+++ b/src/JSDOM/Generated/SVGAnimatedEnumeration.hs
@@ -1,36 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGAnimatedEnumeration
-       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedEnumeration(..),
-        gTypeSVGAnimatedEnumeration)
+       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedEnumeration(..), gTypeSVGAnimatedEnumeration)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration.baseVal Mozilla SVGAnimatedEnumeration.baseVal documentation> 
-setBaseVal ::
-           (MonadDOM m) => SVGAnimatedEnumeration -> Word -> m ()
-setBaseVal self val = liftDOM (self ^. jss "baseVal" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedEnumeration/baseVal MDN SVGAnimatedEnumeration.baseVal documentation>
+setBaseVal :: (MonadDOM m) => SVGAnimatedEnumeration -> Word -> m ()
+setBaseVal self val = liftDOM (void (self ^. jss "baseVal" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration.baseVal Mozilla SVGAnimatedEnumeration.baseVal documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedEnumeration/baseVal MDN SVGAnimatedEnumeration.baseVal documentation>
 getBaseVal :: (MonadDOM m) => SVGAnimatedEnumeration -> m Word
-getBaseVal self
-  = liftDOM (round <$> ((self ^. js "baseVal") >>= valToNumber))
+getBaseVal self = liftDOM ((P.round <$> ((self ^. js "baseVal") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration.animVal Mozilla SVGAnimatedEnumeration.animVal documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedEnumeration/animVal MDN SVGAnimatedEnumeration.animVal documentation>
 getAnimVal :: (MonadDOM m) => SVGAnimatedEnumeration -> m Word
-getAnimVal self
-  = liftDOM (round <$> ((self ^. js "animVal") >>= valToNumber))
+getAnimVal self = liftDOM ((P.round <$> ((self ^. js "animVal") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/SVGAnimatedInteger.hs b/src/JSDOM/Generated/SVGAnimatedInteger.hs
--- a/src/JSDOM/Generated/SVGAnimatedInteger.hs
+++ b/src/JSDOM/Generated/SVGAnimatedInteger.hs
@@ -1,35 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGAnimatedInteger
-       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedInteger(..),
-        gTypeSVGAnimatedInteger)
+       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedInteger(..), gTypeSVGAnimatedInteger)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger.baseVal Mozilla SVGAnimatedInteger.baseVal documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedInteger/baseVal MDN SVGAnimatedInteger.baseVal documentation>
 setBaseVal :: (MonadDOM m) => SVGAnimatedInteger -> Int -> m ()
-setBaseVal self val = liftDOM (self ^. jss "baseVal" (toJSVal val))
+setBaseVal self val = liftDOM (void (self ^. jss "baseVal" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger.baseVal Mozilla SVGAnimatedInteger.baseVal documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedInteger/baseVal MDN SVGAnimatedInteger.baseVal documentation>
 getBaseVal :: (MonadDOM m) => SVGAnimatedInteger -> m Int
-getBaseVal self
-  = liftDOM (round <$> ((self ^. js "baseVal") >>= valToNumber))
+getBaseVal self = liftDOM ((P.round <$> ((self ^. js "baseVal") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger.animVal Mozilla SVGAnimatedInteger.animVal documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedInteger/animVal MDN SVGAnimatedInteger.animVal documentation>
 getAnimVal :: (MonadDOM m) => SVGAnimatedInteger -> m Int
-getAnimVal self
-  = liftDOM (round <$> ((self ^. js "animVal") >>= valToNumber))
+getAnimVal self = liftDOM ((P.round <$> ((self ^. js "animVal") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/SVGAnimatedLength.hs b/src/JSDOM/Generated/SVGAnimatedLength.hs
--- a/src/JSDOM/Generated/SVGAnimatedLength.hs
+++ b/src/JSDOM/Generated/SVGAnimatedLength.hs
@@ -1,31 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGAnimatedLength
-       (getBaseVal, getAnimVal, SVGAnimatedLength(..),
-        gTypeSVGAnimatedLength)
+       (getBaseVal, getAnimVal, SVGAnimatedLength(..), gTypeSVGAnimatedLength)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength.baseVal Mozilla SVGAnimatedLength.baseVal documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedLength/baseVal MDN SVGAnimatedLength.baseVal documentation>
 getBaseVal :: (MonadDOM m) => SVGAnimatedLength -> m SVGLength
-getBaseVal self
-  = liftDOM ((self ^. js "baseVal") >>= fromJSValUnchecked)
+getBaseVal self = liftDOM (((self ^. js "baseVal") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength.animVal Mozilla SVGAnimatedLength.animVal documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedLength/animVal MDN SVGAnimatedLength.animVal documentation>
 getAnimVal :: (MonadDOM m) => SVGAnimatedLength -> m SVGLength
-getAnimVal self
-  = liftDOM ((self ^. js "animVal") >>= fromJSValUnchecked)
+getAnimVal self = liftDOM (((self ^. js "animVal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGAnimatedLengthList.hs b/src/JSDOM/Generated/SVGAnimatedLengthList.hs
--- a/src/JSDOM/Generated/SVGAnimatedLengthList.hs
+++ b/src/JSDOM/Generated/SVGAnimatedLengthList.hs
@@ -1,33 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGAnimatedLengthList
-       (getBaseVal, getAnimVal, SVGAnimatedLengthList(..),
-        gTypeSVGAnimatedLengthList)
+       (getBaseVal, getAnimVal, SVGAnimatedLengthList(..), gTypeSVGAnimatedLengthList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList.baseVal Mozilla SVGAnimatedLengthList.baseVal documentation> 
-getBaseVal ::
-           (MonadDOM m) => SVGAnimatedLengthList -> m SVGLengthList
-getBaseVal self
-  = liftDOM ((self ^. js "baseVal") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedLengthList/baseVal MDN SVGAnimatedLengthList.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedLengthList -> m SVGLengthList
+getBaseVal self = liftDOM (((self ^. js "baseVal") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList.animVal Mozilla SVGAnimatedLengthList.animVal documentation> 
-getAnimVal ::
-           (MonadDOM m) => SVGAnimatedLengthList -> m SVGLengthList
-getAnimVal self
-  = liftDOM ((self ^. js "animVal") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedLengthList/animVal MDN SVGAnimatedLengthList.animVal documentation>
+getAnimVal :: (MonadDOM m) => SVGAnimatedLengthList -> m SVGLengthList
+getAnimVal self = liftDOM (((self ^. js "animVal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGAnimatedNumber.hs b/src/JSDOM/Generated/SVGAnimatedNumber.hs
--- a/src/JSDOM/Generated/SVGAnimatedNumber.hs
+++ b/src/JSDOM/Generated/SVGAnimatedNumber.hs
@@ -1,35 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGAnimatedNumber
-       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedNumber(..),
-        gTypeSVGAnimatedNumber)
+       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedNumber(..), gTypeSVGAnimatedNumber)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber.baseVal Mozilla SVGAnimatedNumber.baseVal documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedNumber/baseVal MDN SVGAnimatedNumber.baseVal documentation>
 setBaseVal :: (MonadDOM m) => SVGAnimatedNumber -> Float -> m ()
-setBaseVal self val = liftDOM (self ^. jss "baseVal" (toJSVal val))
+setBaseVal self val = liftDOM (void (self ^. jss "baseVal" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber.baseVal Mozilla SVGAnimatedNumber.baseVal documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedNumber/baseVal MDN SVGAnimatedNumber.baseVal documentation>
 getBaseVal :: (MonadDOM m) => SVGAnimatedNumber -> m Float
-getBaseVal self
-  = liftDOM (realToFrac <$> ((self ^. js "baseVal") >>= valToNumber))
+getBaseVal self = liftDOM ((P.realToFrac <$> ((self ^. js "baseVal") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber.animVal Mozilla SVGAnimatedNumber.animVal documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedNumber/animVal MDN SVGAnimatedNumber.animVal documentation>
 getAnimVal :: (MonadDOM m) => SVGAnimatedNumber -> m Float
-getAnimVal self
-  = liftDOM (realToFrac <$> ((self ^. js "animVal") >>= valToNumber))
+getAnimVal self = liftDOM ((P.realToFrac <$> ((self ^. js "animVal") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/SVGAnimatedNumberList.hs b/src/JSDOM/Generated/SVGAnimatedNumberList.hs
--- a/src/JSDOM/Generated/SVGAnimatedNumberList.hs
+++ b/src/JSDOM/Generated/SVGAnimatedNumberList.hs
@@ -1,33 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGAnimatedNumberList
-       (getBaseVal, getAnimVal, SVGAnimatedNumberList(..),
-        gTypeSVGAnimatedNumberList)
+       (getBaseVal, getAnimVal, SVGAnimatedNumberList(..), gTypeSVGAnimatedNumberList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList.baseVal Mozilla SVGAnimatedNumberList.baseVal documentation> 
-getBaseVal ::
-           (MonadDOM m) => SVGAnimatedNumberList -> m SVGNumberList
-getBaseVal self
-  = liftDOM ((self ^. js "baseVal") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedNumberList/baseVal MDN SVGAnimatedNumberList.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedNumberList -> m SVGNumberList
+getBaseVal self = liftDOM (((self ^. js "baseVal") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList.animVal Mozilla SVGAnimatedNumberList.animVal documentation> 
-getAnimVal ::
-           (MonadDOM m) => SVGAnimatedNumberList -> m SVGNumberList
-getAnimVal self
-  = liftDOM ((self ^. js "animVal") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedNumberList/animVal MDN SVGAnimatedNumberList.animVal documentation>
+getAnimVal :: (MonadDOM m) => SVGAnimatedNumberList -> m SVGNumberList
+getAnimVal self = liftDOM (((self ^. js "animVal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGAnimatedPoints.hs b/src/JSDOM/Generated/SVGAnimatedPoints.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGAnimatedPoints.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module JSDOM.Generated.SVGAnimatedPoints
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPolygonElement/points MDN SVGAnimatedPoints.points documentation>
+getPoints :: (MonadDOM m, IsSVGAnimatedPoints self) => self -> m SVGPointList
+getPoints self = liftDOM ((((Types.toSVGAnimatedPoints self) ^. js "points") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPolygonElement/animatedPoints MDN SVGAnimatedPoints.animatedPoints documentation>
+getAnimatedPoints :: (MonadDOM m, IsSVGAnimatedPoints self) => self -> m SVGPointList
+getAnimatedPoints self = liftDOM ((((Types.toSVGAnimatedPoints self) ^. js "animatedPoints") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGAnimatedPreserveAspectRatio.hs b/src/JSDOM/Generated/SVGAnimatedPreserveAspectRatio.hs
--- a/src/JSDOM/Generated/SVGAnimatedPreserveAspectRatio.hs
+++ b/src/JSDOM/Generated/SVGAnimatedPreserveAspectRatio.hs
@@ -1,35 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGAnimatedPreserveAspectRatio
-       (getBaseVal, getAnimVal, SVGAnimatedPreserveAspectRatio(..),
-        gTypeSVGAnimatedPreserveAspectRatio)
+       (getBaseVal, getAnimVal, SVGAnimatedPreserveAspectRatio(..), gTypeSVGAnimatedPreserveAspectRatio)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio.baseVal Mozilla SVGAnimatedPreserveAspectRatio.baseVal documentation> 
-getBaseVal ::
-           (MonadDOM m) =>
-             SVGAnimatedPreserveAspectRatio -> m SVGPreserveAspectRatio
-getBaseVal self
-  = liftDOM ((self ^. js "baseVal") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedPreserveAspectRatio/baseVal MDN SVGAnimatedPreserveAspectRatio.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedPreserveAspectRatio -> m SVGPreserveAspectRatio
+getBaseVal self = liftDOM (((self ^. js "baseVal") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio.animVal Mozilla SVGAnimatedPreserveAspectRatio.animVal documentation> 
-getAnimVal ::
-           (MonadDOM m) =>
-             SVGAnimatedPreserveAspectRatio -> m SVGPreserveAspectRatio
-getAnimVal self
-  = liftDOM ((self ^. js "animVal") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedPreserveAspectRatio/animVal MDN SVGAnimatedPreserveAspectRatio.animVal documentation>
+getAnimVal :: (MonadDOM m) => SVGAnimatedPreserveAspectRatio -> m SVGPreserveAspectRatio
+getAnimVal self = liftDOM (((self ^. js "animVal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGAnimatedRect.hs b/src/JSDOM/Generated/SVGAnimatedRect.hs
--- a/src/JSDOM/Generated/SVGAnimatedRect.hs
+++ b/src/JSDOM/Generated/SVGAnimatedRect.hs
@@ -1,30 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGAnimatedRect
        (getBaseVal, getAnimVal, SVGAnimatedRect(..), gTypeSVGAnimatedRect)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect.baseVal Mozilla SVGAnimatedRect.baseVal documentation> 
-getBaseVal :: (MonadDOM m) => SVGAnimatedRect -> m SVGRect
-getBaseVal self
-  = liftDOM ((self ^. js "baseVal") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedRect/baseVal MDN SVGAnimatedRect.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedRect -> m DOMRect
+getBaseVal self = liftDOM (((self ^. js "baseVal") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect.animVal Mozilla SVGAnimatedRect.animVal documentation> 
-getAnimVal :: (MonadDOM m) => SVGAnimatedRect -> m SVGRect
-getAnimVal self
-  = liftDOM ((self ^. js "animVal") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedRect/animVal MDN SVGAnimatedRect.animVal documentation>
+getAnimVal :: (MonadDOM m) => SVGAnimatedRect -> m DOMRect
+getAnimVal self = liftDOM (((self ^. js "animVal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGAnimatedString.hs b/src/JSDOM/Generated/SVGAnimatedString.hs
--- a/src/JSDOM/Generated/SVGAnimatedString.hs
+++ b/src/JSDOM/Generated/SVGAnimatedString.hs
@@ -1,38 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGAnimatedString
-       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedString(..),
-        gTypeSVGAnimatedString)
+       (setBaseVal, getBaseVal, getAnimVal, SVGAnimatedString(..), gTypeSVGAnimatedString)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString.baseVal Mozilla SVGAnimatedString.baseVal documentation> 
-setBaseVal ::
-           (MonadDOM m, ToJSString val) => SVGAnimatedString -> val -> m ()
-setBaseVal self val = liftDOM (self ^. jss "baseVal" (toJSVal val))
+-- | <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 (self ^. jss "baseVal" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString.baseVal Mozilla SVGAnimatedString.baseVal documentation> 
-getBaseVal ::
-           (MonadDOM m, FromJSString result) => SVGAnimatedString -> m result
-getBaseVal self
-  = liftDOM ((self ^. js "baseVal") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedString/baseVal MDN SVGAnimatedString.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedString -> m TrustedScriptURLOrString
+getBaseVal self = liftDOM (((self ^. js "baseVal") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString.animVal Mozilla SVGAnimatedString.animVal documentation> 
-getAnimVal ::
-           (MonadDOM m, FromJSString result) => SVGAnimatedString -> m result
-getAnimVal self
-  = liftDOM ((self ^. js "animVal") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedString/animVal MDN SVGAnimatedString.animVal documentation>
+getAnimVal :: (MonadDOM m, FromJSString result) => SVGAnimatedString -> m result
+getAnimVal self = liftDOM (((self ^. js "animVal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGAnimatedTransformList.hs b/src/JSDOM/Generated/SVGAnimatedTransformList.hs
--- a/src/JSDOM/Generated/SVGAnimatedTransformList.hs
+++ b/src/JSDOM/Generated/SVGAnimatedTransformList.hs
@@ -1,33 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGAnimatedTransformList
-       (getBaseVal, getAnimVal, SVGAnimatedTransformList(..),
-        gTypeSVGAnimatedTransformList)
+       (getBaseVal, getAnimVal, SVGAnimatedTransformList(..), gTypeSVGAnimatedTransformList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList.baseVal Mozilla SVGAnimatedTransformList.baseVal documentation> 
-getBaseVal ::
-           (MonadDOM m) => SVGAnimatedTransformList -> m SVGTransformList
-getBaseVal self
-  = liftDOM ((self ^. js "baseVal") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedTransformList/baseVal MDN SVGAnimatedTransformList.baseVal documentation>
+getBaseVal :: (MonadDOM m) => SVGAnimatedTransformList -> m SVGTransformList
+getBaseVal self = liftDOM (((self ^. js "baseVal") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList.animVal Mozilla SVGAnimatedTransformList.animVal documentation> 
-getAnimVal ::
-           (MonadDOM m) => SVGAnimatedTransformList -> m SVGTransformList
-getAnimVal self
-  = liftDOM ((self ^. js "animVal") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimatedTransformList/animVal MDN SVGAnimatedTransformList.animVal documentation>
+getAnimVal :: (MonadDOM m) => SVGAnimatedTransformList -> m SVGTransformList
+getAnimVal self = liftDOM (((self ^. js "animVal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGAnimationElement.hs b/src/JSDOM/Generated/SVGAnimationElement.hs
--- a/src/JSDOM/Generated/SVGAnimationElement.hs
+++ b/src/JSDOM/Generated/SVGAnimationElement.hs
@@ -1,114 +1,68 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from svg-animations (webref). Do not edit.
 module JSDOM.Generated.SVGAnimationElement
-       (getStartTime, getStartTime_, getCurrentTime, getCurrentTime_,
-        getSimpleDuration, getSimpleDuration_, beginElement,
-        beginElementAt, endElement, endElementAt, getTargetElement,
-        SVGAnimationElement(..), gTypeSVGAnimationElement,
-        IsSVGAnimationElement, toSVGAnimationElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getStartTime Mozilla SVGAnimationElement.getStartTime documentation> 
-getStartTime ::
-             (MonadDOM m, IsSVGAnimationElement self) => self -> m Float
-getStartTime self
-  = liftDOM
-      (realToFrac <$>
-         (((toSVGAnimationElement self) ^. jsf "getStartTime" ()) >>=
-            valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/beginElement MDN SVGAnimationElement.beginElement documentation>
+beginElement :: (MonadDOM m, IsSVGAnimationElement self) => self -> m ()
+beginElement self = liftDOM (void ((Types.toSVGAnimationElement self) ^. jsf "beginElement" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getStartTime Mozilla SVGAnimationElement.getStartTime documentation> 
-getStartTime_ ::
-              (MonadDOM m, IsSVGAnimationElement self) => self -> m ()
-getStartTime_ self
-  = liftDOM
-      (void ((toSVGAnimationElement self) ^. jsf "getStartTime" ()))
+-- | <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 ((Types.toSVGAnimationElement self) ^. jsf "beginElementAt" [toJSVal offset]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getCurrentTime Mozilla SVGAnimationElement.getCurrentTime documentation> 
-getCurrentTime ::
-               (MonadDOM m, IsSVGAnimationElement self) => self -> m Float
-getCurrentTime self
-  = liftDOM
-      (realToFrac <$>
-         (((toSVGAnimationElement self) ^. jsf "getCurrentTime" ()) >>=
-            valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/endElement MDN SVGAnimationElement.endElement documentation>
+endElement :: (MonadDOM m, IsSVGAnimationElement self) => self -> m ()
+endElement self = liftDOM (void ((Types.toSVGAnimationElement self) ^. jsf "endElement" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getCurrentTime Mozilla SVGAnimationElement.getCurrentTime documentation> 
-getCurrentTime_ ::
-                (MonadDOM m, IsSVGAnimationElement self) => self -> m ()
-getCurrentTime_ self
-  = liftDOM
-      (void ((toSVGAnimationElement self) ^. jsf "getCurrentTime" ()))
+-- | <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 ((Types.toSVGAnimationElement self) ^. jsf "endElementAt" [toJSVal offset]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getSimpleDuration Mozilla SVGAnimationElement.getSimpleDuration documentation> 
-getSimpleDuration ::
-                  (MonadDOM m, IsSVGAnimationElement self) => self -> m Float
-getSimpleDuration self
-  = liftDOM
-      (realToFrac <$>
-         (((toSVGAnimationElement self) ^. jsf "getSimpleDuration" ()) >>=
-            valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/getCurrentTime MDN SVGAnimationElement.getCurrentTime documentation>
+getCurrentTime :: (MonadDOM m, IsSVGAnimationElement self) => self -> m Float
+getCurrentTime self = liftDOM ((P.realToFrac <$> (((Types.toSVGAnimationElement self) ^. jsf "getCurrentTime" ()) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getSimpleDuration Mozilla SVGAnimationElement.getSimpleDuration documentation> 
-getSimpleDuration_ ::
-                   (MonadDOM m, IsSVGAnimationElement self) => self -> m ()
-getSimpleDuration_ self
-  = liftDOM
-      (void ((toSVGAnimationElement self) ^. jsf "getSimpleDuration" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/getCurrentTime MDN SVGAnimationElement.getCurrentTime documentation>
+getCurrentTime_ :: (MonadDOM m, IsSVGAnimationElement self) => self -> m ()
+getCurrentTime_ self = liftDOM (void ((Types.toSVGAnimationElement self) ^. jsf "getCurrentTime" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.beginElement Mozilla SVGAnimationElement.beginElement documentation> 
-beginElement ::
-             (MonadDOM m, IsSVGAnimationElement self) => self -> m ()
-beginElement self
-  = liftDOM
-      (void ((toSVGAnimationElement self) ^. jsf "beginElement" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/getSimpleDuration MDN SVGAnimationElement.getSimpleDuration documentation>
+getSimpleDuration :: (MonadDOM m, IsSVGAnimationElement self) => self -> m Float
+getSimpleDuration self = liftDOM ((P.realToFrac <$> (((Types.toSVGAnimationElement self) ^. jsf "getSimpleDuration" ()) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.beginElementAt Mozilla SVGAnimationElement.beginElementAt documentation> 
-beginElementAt ::
-               (MonadDOM m, IsSVGAnimationElement self) =>
-                 self -> Maybe Float -> m ()
-beginElementAt self offset
-  = liftDOM
-      (void
-         ((toSVGAnimationElement self) ^. jsf "beginElementAt"
-            [toJSVal offset]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/getSimpleDuration MDN SVGAnimationElement.getSimpleDuration documentation>
+getSimpleDuration_ :: (MonadDOM m, IsSVGAnimationElement self) => self -> m ()
+getSimpleDuration_ self = liftDOM (void ((Types.toSVGAnimationElement self) ^. jsf "getSimpleDuration" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.endElement Mozilla SVGAnimationElement.endElement documentation> 
-endElement ::
-           (MonadDOM m, IsSVGAnimationElement self) => self -> m ()
-endElement self
-  = liftDOM
-      (void ((toSVGAnimationElement self) ^. jsf "endElement" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/getStartTime MDN SVGAnimationElement.getStartTime documentation>
+getStartTime :: (MonadDOM m, IsSVGAnimationElement self) => self -> m Float
+getStartTime self = liftDOM ((P.realToFrac <$> (((Types.toSVGAnimationElement self) ^. jsf "getStartTime" ()) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.endElementAt Mozilla SVGAnimationElement.endElementAt documentation> 
-endElementAt ::
-             (MonadDOM m, IsSVGAnimationElement self) =>
-               self -> Maybe Float -> m ()
-endElementAt self offset
-  = liftDOM
-      (void
-         ((toSVGAnimationElement self) ^. jsf "endElementAt"
-            [toJSVal 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 ((Types.toSVGAnimationElement self) ^. jsf "getStartTime" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.targetElement Mozilla SVGAnimationElement.targetElement documentation> 
-getTargetElement ::
-                 (MonadDOM m, IsSVGAnimationElement self) => self -> m SVGElement
-getTargetElement self
-  = liftDOM
-      (((toSVGAnimationElement self) ^. js "targetElement") >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toSVGAnimationElement self) ^. js "targetElement") >>= fromJSValUnchecked))
+
+-- | <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 (((((Types.toSVGAnimationElement self) ^. js "targetElement") >>= 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 ((((Types.toSVGAnimationElement self) ^. js "targetElement") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGBoundingBoxOptions.hs b/src/JSDOM/Generated/SVGBoundingBoxOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGBoundingBoxOptions.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module JSDOM.Generated.SVGBoundingBoxOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/svgwg/svg2-draft/types.html#dictdef-svgboundingboxoptions SVGBoundingBoxOptions specification>
+newSVGBoundingBoxOptions :: (MonadDOM m) => m SVGBoundingBoxOptions
+newSVGBoundingBoxOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "fill" (toJSVal val)))
+
+-- | <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 (((self ^. js "fill") >>= 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 ((((self ^. js "fill") >>= 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 (((self ^. js "fill") >>= valToBool))
+
+-- | <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 (self ^. jss "stroke" (toJSVal val)))
+
+-- | <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 (((self ^. js "stroke") >>= 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 ((((self ^. js "stroke") >>= 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 (((self ^. js "stroke") >>= valToBool))
+
+-- | <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 (self ^. jss "markers" (toJSVal val)))
+
+-- | <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 (((self ^. js "markers") >>= 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 ((((self ^. js "markers") >>= 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 (((self ^. js "markers") >>= valToBool))
+
+-- | <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 (self ^. jss "clipped" (toJSVal val)))
+
+-- | <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 (((self ^. js "clipped") >>= 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 ((((self ^. js "clipped") >>= 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 (((self ^. js "clipped") >>= valToBool))
diff --git a/src/JSDOM/Generated/SVGCircleElement.hs b/src/JSDOM/Generated/SVGCircleElement.hs
--- a/src/JSDOM/Generated/SVGCircleElement.hs
+++ b/src/JSDOM/Generated/SVGCircleElement.hs
@@ -1,32 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGCircleElement
        (getCx, getCy, getR, SVGCircleElement(..), gTypeSVGCircleElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.cx Mozilla SVGCircleElement.cx documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGCircleElement/cx MDN SVGCircleElement.cx documentation>
 getCx :: (MonadDOM m) => SVGCircleElement -> m SVGAnimatedLength
-getCx self = liftDOM ((self ^. js "cx") >>= fromJSValUnchecked)
+getCx self = liftDOM (((self ^. js "cx") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.cy Mozilla SVGCircleElement.cy documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGCircleElement/cy MDN SVGCircleElement.cy documentation>
 getCy :: (MonadDOM m) => SVGCircleElement -> m SVGAnimatedLength
-getCy self = liftDOM ((self ^. js "cy") >>= fromJSValUnchecked)
+getCy self = liftDOM (((self ^. js "cy") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.r Mozilla SVGCircleElement.r documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGCircleElement/r MDN SVGCircleElement.r documentation>
 getR :: (MonadDOM m) => SVGCircleElement -> m SVGAnimatedLength
-getR self = liftDOM ((self ^. js "r") >>= fromJSValUnchecked)
+getR self = liftDOM (((self ^. js "r") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGClipPathElement.hs b/src/JSDOM/Generated/SVGClipPathElement.hs
--- a/src/JSDOM/Generated/SVGClipPathElement.hs
+++ b/src/JSDOM/Generated/SVGClipPathElement.hs
@@ -1,26 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-masking-1 (webref). Do not edit.
 module JSDOM.Generated.SVGClipPathElement
-       (getClipPathUnits, SVGClipPathElement(..), gTypeSVGClipPathElement)
+       (getClipPathUnits, getTransform, SVGClipPathElement(..), gTypeSVGClipPathElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGClipPathElement.clipPathUnits Mozilla SVGClipPathElement.clipPathUnits documentation> 
-getClipPathUnits ::
-                 (MonadDOM m) => SVGClipPathElement -> m SVGAnimatedEnumeration
-getClipPathUnits self
-  = liftDOM ((self ^. js "clipPathUnits") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGClipPathElement/clipPathUnits MDN SVGClipPathElement.clipPathUnits documentation>
+getClipPathUnits :: (MonadDOM m) => SVGClipPathElement -> m SVGAnimatedEnumeration
+getClipPathUnits self = liftDOM (((self ^. js "clipPathUnits") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGClipPathElement/transform MDN SVGClipPathElement.transform documentation>
+getTransform :: (MonadDOM m) => SVGClipPathElement -> m SVGAnimatedTransformList
+getTransform self = liftDOM (((self ^. js "transform") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGComponentTransferFunctionElement.hs b/src/JSDOM/Generated/SVGComponentTransferFunctionElement.hs
--- a/src/JSDOM/Generated/SVGComponentTransferFunctionElement.hs
+++ b/src/JSDOM/Generated/SVGComponentTransferFunctionElement.hs
@@ -1,99 +1,56 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.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, getType,
-        getTableValues, getSlope, getIntercept, getAmplitude, getExponent,
-        getOffset, SVGComponentTransferFunctionElement(..),
-        gTypeSVGComponentTransferFunctionElement,
-        IsSVGComponentTransferFunctionElement,
-        toSVGComponentTransferFunctionElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.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
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.type Mozilla SVGComponentTransferFunctionElement.type documentation> 
-getType ::
-        (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
-          self -> m SVGAnimatedEnumeration
-getType self
-  = liftDOM
-      (((toSVGComponentTransferFunctionElement self) ^. js "type") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGComponentTransferFunctionElement/type MDN SVGComponentTransferFunctionElement.type documentation>
+getType :: (MonadDOM m, IsSVGComponentTransferFunctionElement self) => self -> m SVGAnimatedEnumeration
+getType self = liftDOM ((((Types.toSVGComponentTransferFunctionElement self) ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.tableValues Mozilla SVGComponentTransferFunctionElement.tableValues documentation> 
-getTableValues ::
-               (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
-                 self -> m SVGAnimatedNumberList
-getTableValues self
-  = liftDOM
-      (((toSVGComponentTransferFunctionElement self) ^. js "tableValues")
-         >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGComponentTransferFunctionElement/tableValues MDN SVGComponentTransferFunctionElement.tableValues documentation>
+getTableValues :: (MonadDOM m, IsSVGComponentTransferFunctionElement self) => self -> m SVGAnimatedNumberList
+getTableValues self = liftDOM ((((Types.toSVGComponentTransferFunctionElement self) ^. js "tableValues") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.slope Mozilla SVGComponentTransferFunctionElement.slope documentation> 
-getSlope ::
-         (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
-           self -> m SVGAnimatedNumber
-getSlope self
-  = liftDOM
-      (((toSVGComponentTransferFunctionElement self) ^. js "slope") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGComponentTransferFunctionElement/slope MDN SVGComponentTransferFunctionElement.slope documentation>
+getSlope :: (MonadDOM m, IsSVGComponentTransferFunctionElement self) => self -> m SVGAnimatedNumber
+getSlope self = liftDOM ((((Types.toSVGComponentTransferFunctionElement self) ^. js "slope") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.intercept Mozilla SVGComponentTransferFunctionElement.intercept documentation> 
-getIntercept ::
-             (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
-               self -> m SVGAnimatedNumber
-getIntercept self
-  = liftDOM
-      (((toSVGComponentTransferFunctionElement self) ^. js "intercept")
-         >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGComponentTransferFunctionElement/intercept MDN SVGComponentTransferFunctionElement.intercept documentation>
+getIntercept :: (MonadDOM m, IsSVGComponentTransferFunctionElement self) => self -> m SVGAnimatedNumber
+getIntercept self = liftDOM ((((Types.toSVGComponentTransferFunctionElement self) ^. js "intercept") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.amplitude Mozilla SVGComponentTransferFunctionElement.amplitude documentation> 
-getAmplitude ::
-             (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
-               self -> m SVGAnimatedNumber
-getAmplitude self
-  = liftDOM
-      (((toSVGComponentTransferFunctionElement self) ^. js "amplitude")
-         >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGComponentTransferFunctionElement/amplitude MDN SVGComponentTransferFunctionElement.amplitude documentation>
+getAmplitude :: (MonadDOM m, IsSVGComponentTransferFunctionElement self) => self -> m SVGAnimatedNumber
+getAmplitude self = liftDOM ((((Types.toSVGComponentTransferFunctionElement self) ^. js "amplitude") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.exponent Mozilla SVGComponentTransferFunctionElement.exponent documentation> 
-getExponent ::
-            (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
-              self -> m SVGAnimatedNumber
-getExponent self
-  = liftDOM
-      (((toSVGComponentTransferFunctionElement self) ^. js "exponent")
-         >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGComponentTransferFunctionElement/exponent MDN SVGComponentTransferFunctionElement.exponent documentation>
+getExponent :: (MonadDOM m, IsSVGComponentTransferFunctionElement self) => self -> m SVGAnimatedNumber
+getExponent self = liftDOM ((((Types.toSVGComponentTransferFunctionElement self) ^. js "exponent") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.offset Mozilla SVGComponentTransferFunctionElement.offset documentation> 
-getOffset ::
-          (MonadDOM m, IsSVGComponentTransferFunctionElement self) =>
-            self -> m SVGAnimatedNumber
-getOffset self
-  = liftDOM
-      (((toSVGComponentTransferFunctionElement self) ^. js "offset") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGComponentTransferFunctionElement/offset MDN SVGComponentTransferFunctionElement.offset documentation>
+getOffset :: (MonadDOM m, IsSVGComponentTransferFunctionElement self) => self -> m SVGAnimatedNumber
+getOffset self = liftDOM ((((Types.toSVGComponentTransferFunctionElement self) ^. js "offset") >>= fromJSValUnchecked))
+
+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/JSDOM/Generated/SVGCursorElement.hs b/src/JSDOM/Generated/SVGCursorElement.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGCursorElement.hs
+++ /dev/null
@@ -1,27 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGCursorElement
-       (getX, getY, SVGCursorElement(..), gTypeSVGCursorElement) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement.x Mozilla SVGCursorElement.x documentation> 
-getX :: (MonadDOM m) => SVGCursorElement -> m SVGAnimatedLength
-getX self = liftDOM ((self ^. js "x") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement.y Mozilla SVGCursorElement.y documentation> 
-getY :: (MonadDOM m) => SVGCursorElement -> m SVGAnimatedLength
-getY self = liftDOM ((self ^. js "y") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/SVGDefsElement.hs b/src/JSDOM/Generated/SVGDefsElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGDefsElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module JSDOM.Generated.SVGDefsElement
+       (SVGDefsElement(..), gTypeSVGDefsElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGDescElement.hs b/src/JSDOM/Generated/SVGDescElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGDescElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module JSDOM.Generated.SVGDescElement
+       (SVGDescElement(..), gTypeSVGDescElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGElement.hs b/src/JSDOM/Generated/SVGElement.hs
--- a/src/JSDOM/Generated/SVGElement.hs
+++ b/src/JSDOM/Generated/SVGElement.hs
@@ -1,125 +1,44 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGElement
-       (getPresentationAttribute, getPresentationAttribute_, focus, blur,
-        getOwnerSVGElement, getViewportElement, setXmllang, getXmllang,
-        setXmlspace, getXmlspace, getClassName, setTabIndex, getTabIndex,
-        getDataset, SVGElement(..), gTypeSVGElement, IsSVGElement,
-        toSVGElement)
+       (getClassName, getOwnerSVGElement, getOwnerSVGElementUnsafe, getOwnerSVGElementUnchecked, getViewportElement, getViewportElementUnsafe, getViewportElementUnchecked, SVGElement(..), gTypeSVGElement, IsSVGElement, toSVGElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.getPresentationAttribute Mozilla SVGElement.getPresentationAttribute documentation> 
-getPresentationAttribute ::
-                         (MonadDOM m, IsSVGElement self, ToJSString name) =>
-                           self -> Maybe name -> m CSSValue
-getPresentationAttribute self name
-  = liftDOM
-      (((toSVGElement self) ^. jsf "getPresentationAttribute"
-          [toJSVal name])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.getPresentationAttribute Mozilla SVGElement.getPresentationAttribute documentation> 
-getPresentationAttribute_ ::
-                          (MonadDOM m, IsSVGElement self, ToJSString name) =>
-                            self -> Maybe name -> m ()
-getPresentationAttribute_ self name
-  = liftDOM
-      (void
-         ((toSVGElement self) ^. jsf "getPresentationAttribute"
-            [toJSVal name]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.focus Mozilla SVGElement.focus documentation> 
-focus :: (MonadDOM m, IsSVGElement self) => self -> m ()
-focus self = liftDOM (void ((toSVGElement self) ^. jsf "focus" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.blur Mozilla SVGElement.blur documentation> 
-blur :: (MonadDOM m, IsSVGElement self) => self -> m ()
-blur self = liftDOM (void ((toSVGElement self) ^. jsf "blur" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.ownerSVGElement Mozilla SVGElement.ownerSVGElement documentation> 
-getOwnerSVGElement ::
-                   (MonadDOM m, IsSVGElement self) => self -> m SVGSVGElement
-getOwnerSVGElement self
-  = liftDOM
-      (((toSVGElement self) ^. js "ownerSVGElement") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.viewportElement Mozilla SVGElement.viewportElement documentation> 
-getViewportElement ::
-                   (MonadDOM m, IsSVGElement self) => self -> m SVGElement
-getViewportElement self
-  = liftDOM
-      (((toSVGElement self) ^. js "viewportElement") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmllang Mozilla SVGElement.xmllang documentation> 
-setXmllang ::
-           (MonadDOM m, IsSVGElement self, ToJSString val) =>
-             self -> val -> m ()
-setXmllang self val
-  = liftDOM ((toSVGElement self) ^. jss "xmllang" (toJSVal val))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmllang Mozilla SVGElement.xmllang documentation> 
-getXmllang ::
-           (MonadDOM m, IsSVGElement self, FromJSString result) =>
-             self -> m result
-getXmllang self
-  = liftDOM
-      (((toSVGElement self) ^. js "xmllang") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toSVGElement self) ^. js "className") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmlspace Mozilla SVGElement.xmlspace documentation> 
-setXmlspace ::
-            (MonadDOM m, IsSVGElement self, ToJSString val) =>
-              self -> val -> m ()
-setXmlspace self val
-  = liftDOM ((toSVGElement self) ^. jss "xmlspace" (toJSVal val))
+-- | <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 ((((Types.toSVGElement self) ^. js "ownerSVGElement") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmlspace Mozilla SVGElement.xmlspace documentation> 
-getXmlspace ::
-            (MonadDOM m, IsSVGElement self, FromJSString result) =>
-              self -> m result
-getXmlspace self
-  = liftDOM
-      (((toSVGElement self) ^. js "xmlspace") >>= fromJSValUnchecked)
+-- | <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 (((((Types.toSVGElement self) ^. js "ownerSVGElement") >>= 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 ::
-             (MonadDOM m, IsSVGElement self) => self -> m SVGAnimatedString
-getClassName self
-  = liftDOM
-      (((toSVGElement self) ^. js "className") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGElement/ownerSVGElement MDN SVGElement.ownerSVGElement documentation>
+getOwnerSVGElementUnchecked :: (MonadDOM m, IsSVGElement self) => self -> m SVGSVGElement
+getOwnerSVGElementUnchecked self = liftDOM ((((Types.toSVGElement self) ^. js "ownerSVGElement") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.tabIndex Mozilla SVGElement.tabIndex documentation> 
-setTabIndex ::
-            (MonadDOM m, IsSVGElement self) => self -> Int -> m ()
-setTabIndex self val
-  = liftDOM ((toSVGElement self) ^. jss "tabIndex" (toJSVal val))
+-- | <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 ((((Types.toSVGElement self) ^. js "viewportElement") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.tabIndex Mozilla SVGElement.tabIndex documentation> 
-getTabIndex :: (MonadDOM m, IsSVGElement self) => self -> m Int
-getTabIndex self
-  = liftDOM
-      (round <$>
-         (((toSVGElement self) ^. js "tabIndex") >>= valToNumber))
+-- | <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 (((((Types.toSVGElement self) ^. js "viewportElement") >>= 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 ::
-           (MonadDOM m, IsSVGElement self) => self -> m DOMStringMap
-getDataset self
-  = liftDOM
-      (((toSVGElement self) ^. js "dataset") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGElement/viewportElement MDN SVGElement.viewportElement documentation>
+getViewportElementUnchecked :: (MonadDOM m, IsSVGElement self) => self -> m SVGElement
+getViewportElementUnchecked self = liftDOM ((((Types.toSVGElement self) ^. js "viewportElement") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGEllipseElement.hs b/src/JSDOM/Generated/SVGEllipseElement.hs
--- a/src/JSDOM/Generated/SVGEllipseElement.hs
+++ b/src/JSDOM/Generated/SVGEllipseElement.hs
@@ -1,37 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGEllipseElement
-       (getCx, getCy, getRx, getRy, SVGEllipseElement(..),
-        gTypeSVGEllipseElement)
+       (getCx, getCy, getRx, getRy, SVGEllipseElement(..), gTypeSVGEllipseElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.cx Mozilla SVGEllipseElement.cx documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGEllipseElement/cx MDN SVGEllipseElement.cx documentation>
 getCx :: (MonadDOM m) => SVGEllipseElement -> m SVGAnimatedLength
-getCx self = liftDOM ((self ^. js "cx") >>= fromJSValUnchecked)
+getCx self = liftDOM (((self ^. js "cx") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.cy Mozilla SVGEllipseElement.cy documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGEllipseElement/cy MDN SVGEllipseElement.cy documentation>
 getCy :: (MonadDOM m) => SVGEllipseElement -> m SVGAnimatedLength
-getCy self = liftDOM ((self ^. js "cy") >>= fromJSValUnchecked)
+getCy self = liftDOM (((self ^. js "cy") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.rx Mozilla SVGEllipseElement.rx documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGEllipseElement/rx MDN SVGEllipseElement.rx documentation>
 getRx :: (MonadDOM m) => SVGEllipseElement -> m SVGAnimatedLength
-getRx self = liftDOM ((self ^. js "rx") >>= fromJSValUnchecked)
+getRx self = liftDOM (((self ^. js "rx") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.ry Mozilla SVGEllipseElement.ry documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGEllipseElement/ry MDN SVGEllipseElement.ry documentation>
 getRy :: (MonadDOM m) => SVGEllipseElement -> m SVGAnimatedLength
-getRy self = liftDOM ((self ^. js "ry") >>= fromJSValUnchecked)
+getRy self = liftDOM (((self ^. js "ry") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGException.hs b/src/JSDOM/Generated/SVGException.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGException.hs
+++ /dev/null
@@ -1,51 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGException
-       (toString, toString_, pattern SVG_WRONG_TYPE_ERR,
-        pattern SVG_INVALID_VALUE_ERR, pattern SVG_MATRIX_NOT_INVERTABLE,
-        getCode, getName, getMessage, SVGException(..), gTypeSVGException)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGException.toString Mozilla SVGException.toString documentation> 
-toString ::
-         (MonadDOM m, FromJSString result) => SVGException -> m result
-toString self
-  = liftDOM ((self ^. jsf "toString" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGException.toString Mozilla SVGException.toString documentation> 
-toString_ :: (MonadDOM m) => SVGException -> m ()
-toString_ self = liftDOM (void (self ^. jsf "toString" ()))
-pattern SVG_WRONG_TYPE_ERR = 0
-pattern SVG_INVALID_VALUE_ERR = 1
-pattern SVG_MATRIX_NOT_INVERTABLE = 2
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGException.code Mozilla SVGException.code documentation> 
-getCode :: (MonadDOM m) => SVGException -> m Word
-getCode self
-  = liftDOM (round <$> ((self ^. js "code") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGException.name Mozilla SVGException.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => SVGException -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGException.message Mozilla SVGException.message documentation> 
-getMessage ::
-           (MonadDOM m, FromJSString result) => SVGException -> m result
-getMessage self
-  = liftDOM ((self ^. js "message") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/SVGExternalResourcesRequired.hs b/src/JSDOM/Generated/SVGExternalResourcesRequired.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGExternalResourcesRequired.hs
+++ /dev/null
@@ -1,32 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGExternalResourcesRequired
-       (getExternalResourcesRequired, SVGExternalResourcesRequired(..),
-        gTypeSVGExternalResourcesRequired, IsSVGExternalResourcesRequired,
-        toSVGExternalResourcesRequired)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGExternalResourcesRequired.externalResourcesRequired Mozilla SVGExternalResourcesRequired.externalResourcesRequired documentation> 
-getExternalResourcesRequired ::
-                             (MonadDOM m, IsSVGExternalResourcesRequired self) =>
-                               self -> m SVGAnimatedBoolean
-getExternalResourcesRequired self
-  = liftDOM
-      (((toSVGExternalResourcesRequired self) ^.
-          js "externalResourcesRequired")
-         >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/SVGFEBlendElement.hs b/src/JSDOM/Generated/SVGFEBlendElement.hs
--- a/src/JSDOM/Generated/SVGFEBlendElement.hs
+++ b/src/JSDOM/Generated/SVGFEBlendElement.hs
@@ -1,43 +1,62 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.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,
-        getIn1, getIn2, getMode, SVGFEBlendElement(..),
-        gTypeSVGFEBlendElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEBlendElement/in1 MDN SVGFEBlendElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEBlendElement -> m SVGAnimatedString
+getIn1 self = liftDOM (((self ^. js "in1") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEBlendElement/in2 MDN SVGFEBlendElement.in2 documentation>
+getIn2 :: (MonadDOM m) => SVGFEBlendElement -> m SVGAnimatedString
+getIn2 self = liftDOM (((self ^. js "in2") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEBlendElement/mode MDN SVGFEBlendElement.mode documentation>
+getMode :: (MonadDOM m) => SVGFEBlendElement -> m SVGAnimatedEnumeration
+getMode self = liftDOM (((self ^. js "mode") >>= fromJSValUnchecked))
+
 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
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.in1 Mozilla SVGFEBlendElement.in1 documentation> 
-getIn1 :: (MonadDOM m) => SVGFEBlendElement -> m SVGAnimatedString
-getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSValUnchecked)
+pattern SVG_FEBLEND_MODE_OVERLAY = 6
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.in2 Mozilla SVGFEBlendElement.in2 documentation> 
-getIn2 :: (MonadDOM m) => SVGFEBlendElement -> m SVGAnimatedString
-getIn2 self = liftDOM ((self ^. js "in2") >>= fromJSValUnchecked)
+pattern SVG_FEBLEND_MODE_COLOR_DODGE = 7
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.mode Mozilla SVGFEBlendElement.mode documentation> 
-getMode ::
-        (MonadDOM m) => SVGFEBlendElement -> m SVGAnimatedEnumeration
-getMode self = liftDOM ((self ^. js "mode") >>= fromJSValUnchecked)
+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/JSDOM/Generated/SVGFEColorMatrixElement.hs b/src/JSDOM/Generated/SVGFEColorMatrixElement.hs
--- a/src/JSDOM/Generated/SVGFEColorMatrixElement.hs
+++ b/src/JSDOM/Generated/SVGFEColorMatrixElement.hs
@@ -1,47 +1,38 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.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, getIn1, getType,
-        getValues, SVGFEColorMatrixElement(..),
-        gTypeSVGFEColorMatrixElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEColorMatrixElement/in1 MDN SVGFEColorMatrixElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEColorMatrixElement -> m SVGAnimatedString
+getIn1 self = liftDOM (((self ^. js "in1") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEColorMatrixElement/type MDN SVGFEColorMatrixElement.type documentation>
+getType :: (MonadDOM m) => SVGFEColorMatrixElement -> m SVGAnimatedEnumeration
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEColorMatrixElement/values MDN SVGFEColorMatrixElement.values documentation>
+getValues :: (MonadDOM m) => SVGFEColorMatrixElement -> m SVGAnimatedNumberList
+getValues self = liftDOM (((self ^. js "values") >>= fromJSValUnchecked))
+
 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
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.in1 Mozilla SVGFEColorMatrixElement.in1 documentation> 
-getIn1 ::
-       (MonadDOM m) => SVGFEColorMatrixElement -> m SVGAnimatedString
-getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSValUnchecked)
+pattern SVG_FECOLORMATRIX_TYPE_SATURATE = 2
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.type Mozilla SVGFEColorMatrixElement.type documentation> 
-getType ::
-        (MonadDOM m) => SVGFEColorMatrixElement -> m SVGAnimatedEnumeration
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+pattern SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.values Mozilla SVGFEColorMatrixElement.values documentation> 
-getValues ::
-          (MonadDOM m) => SVGFEColorMatrixElement -> m SVGAnimatedNumberList
-getValues self
-  = liftDOM ((self ^. js "values") >>= fromJSValUnchecked)
+pattern SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4
diff --git a/src/JSDOM/Generated/SVGFEComponentTransferElement.hs b/src/JSDOM/Generated/SVGFEComponentTransferElement.hs
--- a/src/JSDOM/Generated/SVGFEComponentTransferElement.hs
+++ b/src/JSDOM/Generated/SVGFEComponentTransferElement.hs
@@ -1,27 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.Generated.SVGFEComponentTransferElement
-       (getIn1, SVGFEComponentTransferElement(..),
-        gTypeSVGFEComponentTransferElement)
+       (getIn1, SVGFEComponentTransferElement(..), gTypeSVGFEComponentTransferElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEComponentTransferElement.in1 Mozilla SVGFEComponentTransferElement.in1 documentation> 
-getIn1 ::
-       (MonadDOM m) =>
-         SVGFEComponentTransferElement -> m SVGAnimatedString
-getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEComponentTransferElement/in1 MDN SVGFEComponentTransferElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEComponentTransferElement -> m SVGAnimatedString
+getIn1 self = liftDOM (((self ^. js "in1") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGFECompositeElement.hs b/src/JSDOM/Generated/SVGFECompositeElement.hs
--- a/src/JSDOM/Generated/SVGFECompositeElement.hs
+++ b/src/JSDOM/Generated/SVGFECompositeElement.hs
@@ -1,71 +1,58 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.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, getIn1, getIn2,
-        getOperator, getK1, getK2, getK3, getK4, SVGFECompositeElement(..),
-        gTypeSVGFECompositeElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.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
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.in1 Mozilla SVGFECompositeElement.in1 documentation> 
-getIn1 ::
-       (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedString
-getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFECompositeElement/in1 MDN SVGFECompositeElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedString
+getIn1 self = liftDOM (((self ^. js "in1") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.in2 Mozilla SVGFECompositeElement.in2 documentation> 
-getIn2 ::
-       (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedString
-getIn2 self = liftDOM ((self ^. js "in2") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFECompositeElement/in2 MDN SVGFECompositeElement.in2 documentation>
+getIn2 :: (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedString
+getIn2 self = liftDOM (((self ^. js "in2") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.operator Mozilla SVGFECompositeElement.operator documentation> 
-getOperator ::
-            (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedEnumeration
-getOperator self
-  = liftDOM ((self ^. js "operator") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFECompositeElement/operator MDN SVGFECompositeElement.operator documentation>
+getOperator :: (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedEnumeration
+getOperator self = liftDOM (((self ^. js "operator") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k1 Mozilla SVGFECompositeElement.k1 documentation> 
-getK1 ::
-      (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedNumber
-getK1 self = liftDOM ((self ^. js "k1") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFECompositeElement/k1 MDN SVGFECompositeElement.k1 documentation>
+getK1 :: (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedNumber
+getK1 self = liftDOM (((self ^. js "k1") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k2 Mozilla SVGFECompositeElement.k2 documentation> 
-getK2 ::
-      (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedNumber
-getK2 self = liftDOM ((self ^. js "k2") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFECompositeElement/k2 MDN SVGFECompositeElement.k2 documentation>
+getK2 :: (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedNumber
+getK2 self = liftDOM (((self ^. js "k2") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k3 Mozilla SVGFECompositeElement.k3 documentation> 
-getK3 ::
-      (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedNumber
-getK3 self = liftDOM ((self ^. js "k3") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFECompositeElement/k3 MDN SVGFECompositeElement.k3 documentation>
+getK3 :: (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedNumber
+getK3 self = liftDOM (((self ^. js "k3") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k4 Mozilla SVGFECompositeElement.k4 documentation> 
-getK4 ::
-      (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedNumber
-getK4 self = liftDOM ((self ^. js "k4") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFECompositeElement/k4 MDN SVGFECompositeElement.k4 documentation>
+getK4 :: (MonadDOM m) => SVGFECompositeElement -> m SVGAnimatedNumber
+getK4 self = liftDOM (((self ^. js "k4") >>= fromJSValUnchecked))
+
+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/JSDOM/Generated/SVGFEConvolveMatrixElement.hs b/src/JSDOM/Generated/SVGFEConvolveMatrixElement.hs
--- a/src/JSDOM/Generated/SVGFEConvolveMatrixElement.hs
+++ b/src/JSDOM/Generated/SVGFEConvolveMatrixElement.hs
@@ -1,101 +1,72 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.Generated.SVGFEConvolveMatrixElement
-       (pattern SVG_EDGEMODE_UNKNOWN, pattern SVG_EDGEMODE_DUPLICATE,
-        pattern SVG_EDGEMODE_WRAP, pattern SVG_EDGEMODE_NONE, getIn1,
-        getOrderX, getOrderY, getKernelMatrix, getDivisor, getBias,
-        getTargetX, getTargetY, getEdgeMode, getKernelUnitLengthX,
-        getKernelUnitLengthY, getPreserveAlpha,
-        SVGFEConvolveMatrixElement(..), gTypeSVGFEConvolveMatrixElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-pattern SVG_EDGEMODE_UNKNOWN = 0
-pattern SVG_EDGEMODE_DUPLICATE = 1
-pattern SVG_EDGEMODE_WRAP = 2
-pattern SVG_EDGEMODE_NONE = 3
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.in1 Mozilla SVGFEConvolveMatrixElement.in1 documentation> 
-getIn1 ::
-       (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedString
-getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/in1 MDN SVGFEConvolveMatrixElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedString
+getIn1 self = liftDOM (((self ^. js "in1") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.orderX Mozilla SVGFEConvolveMatrixElement.orderX documentation> 
-getOrderX ::
-          (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
-getOrderX self
-  = liftDOM ((self ^. js "orderX") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/orderX MDN SVGFEConvolveMatrixElement.orderX documentation>
+getOrderX :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
+getOrderX self = liftDOM (((self ^. js "orderX") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.orderY Mozilla SVGFEConvolveMatrixElement.orderY documentation> 
-getOrderY ::
-          (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
-getOrderY self
-  = liftDOM ((self ^. js "orderY") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/orderY MDN SVGFEConvolveMatrixElement.orderY documentation>
+getOrderY :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
+getOrderY self = liftDOM (((self ^. js "orderY") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelMatrix Mozilla SVGFEConvolveMatrixElement.kernelMatrix documentation> 
-getKernelMatrix ::
-                (MonadDOM m) =>
-                  SVGFEConvolveMatrixElement -> m SVGAnimatedNumberList
-getKernelMatrix self
-  = liftDOM ((self ^. js "kernelMatrix") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/kernelMatrix MDN SVGFEConvolveMatrixElement.kernelMatrix documentation>
+getKernelMatrix :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumberList
+getKernelMatrix self = liftDOM (((self ^. js "kernelMatrix") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.divisor Mozilla SVGFEConvolveMatrixElement.divisor documentation> 
-getDivisor ::
-           (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
-getDivisor self
-  = liftDOM ((self ^. js "divisor") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/divisor MDN SVGFEConvolveMatrixElement.divisor documentation>
+getDivisor :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
+getDivisor self = liftDOM (((self ^. js "divisor") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.bias Mozilla SVGFEConvolveMatrixElement.bias documentation> 
-getBias ::
-        (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
-getBias self = liftDOM ((self ^. js "bias") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/bias MDN SVGFEConvolveMatrixElement.bias documentation>
+getBias :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
+getBias self = liftDOM (((self ^. js "bias") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.targetX Mozilla SVGFEConvolveMatrixElement.targetX documentation> 
-getTargetX ::
-           (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
-getTargetX self
-  = liftDOM ((self ^. js "targetX") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/targetX MDN SVGFEConvolveMatrixElement.targetX documentation>
+getTargetX :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
+getTargetX self = liftDOM (((self ^. js "targetX") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.targetY Mozilla SVGFEConvolveMatrixElement.targetY documentation> 
-getTargetY ::
-           (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
-getTargetY self
-  = liftDOM ((self ^. js "targetY") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/targetY MDN SVGFEConvolveMatrixElement.targetY documentation>
+getTargetY :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
+getTargetY self = liftDOM (((self ^. js "targetY") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.edgeMode Mozilla SVGFEConvolveMatrixElement.edgeMode documentation> 
-getEdgeMode ::
-            (MonadDOM m) =>
-              SVGFEConvolveMatrixElement -> m SVGAnimatedEnumeration
-getEdgeMode self
-  = liftDOM ((self ^. js "edgeMode") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/edgeMode MDN SVGFEConvolveMatrixElement.edgeMode documentation>
+getEdgeMode :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedEnumeration
+getEdgeMode self = liftDOM (((self ^. js "edgeMode") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelUnitLengthX Mozilla SVGFEConvolveMatrixElement.kernelUnitLengthX documentation> 
-getKernelUnitLengthX ::
-                     (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
-getKernelUnitLengthX self
-  = liftDOM ((self ^. js "kernelUnitLengthX") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/kernelUnitLengthX MDN SVGFEConvolveMatrixElement.kernelUnitLengthX documentation>
+getKernelUnitLengthX :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
+getKernelUnitLengthX self = liftDOM (((self ^. js "kernelUnitLengthX") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelUnitLengthY Mozilla SVGFEConvolveMatrixElement.kernelUnitLengthY documentation> 
-getKernelUnitLengthY ::
-                     (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
-getKernelUnitLengthY self
-  = liftDOM ((self ^. js "kernelUnitLengthY") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/kernelUnitLengthY MDN SVGFEConvolveMatrixElement.kernelUnitLengthY documentation>
+getKernelUnitLengthY :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
+getKernelUnitLengthY self = liftDOM (((self ^. js "kernelUnitLengthY") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.preserveAlpha Mozilla SVGFEConvolveMatrixElement.preserveAlpha documentation> 
-getPreserveAlpha ::
-                 (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedBoolean
-getPreserveAlpha self
-  = liftDOM ((self ^. js "preserveAlpha") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEConvolveMatrixElement/preserveAlpha MDN SVGFEConvolveMatrixElement.preserveAlpha documentation>
+getPreserveAlpha :: (MonadDOM m) => SVGFEConvolveMatrixElement -> m SVGAnimatedBoolean
+getPreserveAlpha self = liftDOM (((self ^. js "preserveAlpha") >>= fromJSValUnchecked))
+
+pattern SVG_EDGEMODE_UNKNOWN = 0
+
+pattern SVG_EDGEMODE_DUPLICATE = 1
+
+pattern SVG_EDGEMODE_WRAP = 2
+
+pattern SVG_EDGEMODE_NONE = 3
diff --git a/src/JSDOM/Generated/SVGFEDiffuseLightingElement.hs b/src/JSDOM/Generated/SVGFEDiffuseLightingElement.hs
--- a/src/JSDOM/Generated/SVGFEDiffuseLightingElement.hs
+++ b/src/JSDOM/Generated/SVGFEDiffuseLightingElement.hs
@@ -1,51 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.Generated.SVGFEDiffuseLightingElement
-       (getIn1, getSurfaceScale, getDiffuseConstant, getKernelUnitLengthX,
-        getKernelUnitLengthY, SVGFEDiffuseLightingElement(..),
-        gTypeSVGFEDiffuseLightingElement)
+       (getIn1, getSurfaceScale, getDiffuseConstant, getKernelUnitLengthX, getKernelUnitLengthY, SVGFEDiffuseLightingElement(..), gTypeSVGFEDiffuseLightingElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.in1 Mozilla SVGFEDiffuseLightingElement.in1 documentation> 
-getIn1 ::
-       (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedString
-getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDiffuseLightingElement/in1 MDN SVGFEDiffuseLightingElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedString
+getIn1 self = liftDOM (((self ^. js "in1") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.surfaceScale Mozilla SVGFEDiffuseLightingElement.surfaceScale documentation> 
-getSurfaceScale ::
-                (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
-getSurfaceScale self
-  = liftDOM ((self ^. js "surfaceScale") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDiffuseLightingElement/surfaceScale MDN SVGFEDiffuseLightingElement.surfaceScale documentation>
+getSurfaceScale :: (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
+getSurfaceScale self = liftDOM (((self ^. js "surfaceScale") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.diffuseConstant Mozilla SVGFEDiffuseLightingElement.diffuseConstant documentation> 
-getDiffuseConstant ::
-                   (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
-getDiffuseConstant self
-  = liftDOM ((self ^. js "diffuseConstant") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDiffuseLightingElement/diffuseConstant MDN SVGFEDiffuseLightingElement.diffuseConstant documentation>
+getDiffuseConstant :: (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
+getDiffuseConstant self = liftDOM (((self ^. js "diffuseConstant") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.kernelUnitLengthX Mozilla SVGFEDiffuseLightingElement.kernelUnitLengthX documentation> 
-getKernelUnitLengthX ::
-                     (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
-getKernelUnitLengthX self
-  = liftDOM ((self ^. js "kernelUnitLengthX") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDiffuseLightingElement/kernelUnitLengthX MDN SVGFEDiffuseLightingElement.kernelUnitLengthX documentation>
+getKernelUnitLengthX :: (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
+getKernelUnitLengthX self = liftDOM (((self ^. js "kernelUnitLengthX") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.kernelUnitLengthY Mozilla SVGFEDiffuseLightingElement.kernelUnitLengthY documentation> 
-getKernelUnitLengthY ::
-                     (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
-getKernelUnitLengthY self
-  = liftDOM ((self ^. js "kernelUnitLengthY") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDiffuseLightingElement/kernelUnitLengthY MDN SVGFEDiffuseLightingElement.kernelUnitLengthY documentation>
+getKernelUnitLengthY :: (MonadDOM m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
+getKernelUnitLengthY self = liftDOM (((self ^. js "kernelUnitLengthY") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGFEDisplacementMapElement.hs b/src/JSDOM/Generated/SVGFEDisplacementMapElement.hs
--- a/src/JSDOM/Generated/SVGFEDisplacementMapElement.hs
+++ b/src/JSDOM/Generated/SVGFEDisplacementMapElement.hs
@@ -1,59 +1,46 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.Generated.SVGFEDisplacementMapElement
-       (pattern SVG_CHANNEL_UNKNOWN, pattern SVG_CHANNEL_R,
-        pattern SVG_CHANNEL_G, pattern SVG_CHANNEL_B,
-        pattern SVG_CHANNEL_A, getIn1, getIn2, getScale,
-        getXChannelSelector, getYChannelSelector,
-        SVGFEDisplacementMapElement(..), gTypeSVGFEDisplacementMapElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.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
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.in1 Mozilla SVGFEDisplacementMapElement.in1 documentation> 
-getIn1 ::
-       (MonadDOM m) => SVGFEDisplacementMapElement -> m SVGAnimatedString
-getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDisplacementMapElement/in1 MDN SVGFEDisplacementMapElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEDisplacementMapElement -> m SVGAnimatedString
+getIn1 self = liftDOM (((self ^. js "in1") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.in2 Mozilla SVGFEDisplacementMapElement.in2 documentation> 
-getIn2 ::
-       (MonadDOM m) => SVGFEDisplacementMapElement -> m SVGAnimatedString
-getIn2 self = liftDOM ((self ^. js "in2") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDisplacementMapElement/in2 MDN SVGFEDisplacementMapElement.in2 documentation>
+getIn2 :: (MonadDOM m) => SVGFEDisplacementMapElement -> m SVGAnimatedString
+getIn2 self = liftDOM (((self ^. js "in2") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.scale Mozilla SVGFEDisplacementMapElement.scale documentation> 
-getScale ::
-         (MonadDOM m) => SVGFEDisplacementMapElement -> m SVGAnimatedNumber
-getScale self
-  = liftDOM ((self ^. js "scale") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDisplacementMapElement/scale MDN SVGFEDisplacementMapElement.scale documentation>
+getScale :: (MonadDOM m) => SVGFEDisplacementMapElement -> m SVGAnimatedNumber
+getScale self = liftDOM (((self ^. js "scale") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.xChannelSelector Mozilla SVGFEDisplacementMapElement.xChannelSelector documentation> 
-getXChannelSelector ::
-                    (MonadDOM m) =>
-                      SVGFEDisplacementMapElement -> m SVGAnimatedEnumeration
-getXChannelSelector self
-  = liftDOM ((self ^. js "xChannelSelector") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDisplacementMapElement/xChannelSelector MDN SVGFEDisplacementMapElement.xChannelSelector documentation>
+getXChannelSelector :: (MonadDOM m) => SVGFEDisplacementMapElement -> m SVGAnimatedEnumeration
+getXChannelSelector self = liftDOM (((self ^. js "xChannelSelector") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.yChannelSelector Mozilla SVGFEDisplacementMapElement.yChannelSelector documentation> 
-getYChannelSelector ::
-                    (MonadDOM m) =>
-                      SVGFEDisplacementMapElement -> m SVGAnimatedEnumeration
-getYChannelSelector self
-  = liftDOM ((self ^. js "yChannelSelector") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDisplacementMapElement/yChannelSelector MDN SVGFEDisplacementMapElement.yChannelSelector documentation>
+getYChannelSelector :: (MonadDOM m) => SVGFEDisplacementMapElement -> m SVGAnimatedEnumeration
+getYChannelSelector self = liftDOM (((self ^. js "yChannelSelector") >>= fromJSValUnchecked))
+
+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/JSDOM/Generated/SVGFEDistantLightElement.hs b/src/JSDOM/Generated/SVGFEDistantLightElement.hs
--- a/src/JSDOM/Generated/SVGFEDistantLightElement.hs
+++ b/src/JSDOM/Generated/SVGFEDistantLightElement.hs
@@ -1,33 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.Generated.SVGFEDistantLightElement
-       (getAzimuth, getElevation, SVGFEDistantLightElement(..),
-        gTypeSVGFEDistantLightElement)
+       (getAzimuth, getElevation, SVGFEDistantLightElement(..), gTypeSVGFEDistantLightElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement.azimuth Mozilla SVGFEDistantLightElement.azimuth documentation> 
-getAzimuth ::
-           (MonadDOM m) => SVGFEDistantLightElement -> m SVGAnimatedNumber
-getAzimuth self
-  = liftDOM ((self ^. js "azimuth") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDistantLightElement/azimuth MDN SVGFEDistantLightElement.azimuth documentation>
+getAzimuth :: (MonadDOM m) => SVGFEDistantLightElement -> m SVGAnimatedNumber
+getAzimuth self = liftDOM (((self ^. js "azimuth") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement.elevation Mozilla SVGFEDistantLightElement.elevation documentation> 
-getElevation ::
-             (MonadDOM m) => SVGFEDistantLightElement -> m SVGAnimatedNumber
-getElevation self
-  = liftDOM ((self ^. js "elevation") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDistantLightElement/elevation MDN SVGFEDistantLightElement.elevation documentation>
+getElevation :: (MonadDOM m) => SVGFEDistantLightElement -> m SVGAnimatedNumber
+getElevation self = liftDOM (((self ^. js "elevation") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGFEDropShadowElement.hs b/src/JSDOM/Generated/SVGFEDropShadowElement.hs
--- a/src/JSDOM/Generated/SVGFEDropShadowElement.hs
+++ b/src/JSDOM/Generated/SVGFEDropShadowElement.hs
@@ -1,59 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.Generated.SVGFEDropShadowElement
-       (setStdDeviation, getIn1, getDx, getDy, getStdDeviationX,
-        getStdDeviationY, SVGFEDropShadowElement(..),
-        gTypeSVGFEDropShadowElement)
+       (setStdDeviation, getIn1, getDx, getDy, getStdDeviationX, getStdDeviationY, SVGFEDropShadowElement(..), gTypeSVGFEDropShadowElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.setStdDeviation Mozilla SVGFEDropShadowElement.setStdDeviation documentation> 
-setStdDeviation ::
-                (MonadDOM m) =>
-                  SVGFEDropShadowElement -> Maybe Float -> Maybe Float -> m ()
-setStdDeviation self stdDeviationX stdDeviationY
-  = liftDOM
-      (void
-         (self ^. jsf "setStdDeviation"
-            [toJSVal stdDeviationX, toJSVal stdDeviationY]))
+-- | <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 (self ^. jsf "setStdDeviation" [toJSVal stdDeviationX, toJSVal stdDeviationY]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.in1 Mozilla SVGFEDropShadowElement.in1 documentation> 
-getIn1 ::
-       (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedString
-getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDropShadowElement/in1 MDN SVGFEDropShadowElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedString
+getIn1 self = liftDOM (((self ^. js "in1") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.dx Mozilla SVGFEDropShadowElement.dx documentation> 
-getDx ::
-      (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
-getDx self = liftDOM ((self ^. js "dx") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDropShadowElement/dx MDN SVGFEDropShadowElement.dx documentation>
+getDx :: (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
+getDx self = liftDOM (((self ^. js "dx") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.dy Mozilla SVGFEDropShadowElement.dy documentation> 
-getDy ::
-      (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
-getDy self = liftDOM ((self ^. js "dy") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDropShadowElement/dy MDN SVGFEDropShadowElement.dy documentation>
+getDy :: (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
+getDy self = liftDOM (((self ^. js "dy") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.stdDeviationX Mozilla SVGFEDropShadowElement.stdDeviationX documentation> 
-getStdDeviationX ::
-                 (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
-getStdDeviationX self
-  = liftDOM ((self ^. js "stdDeviationX") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDropShadowElement/stdDeviationX MDN SVGFEDropShadowElement.stdDeviationX documentation>
+getStdDeviationX :: (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
+getStdDeviationX self = liftDOM (((self ^. js "stdDeviationX") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.stdDeviationY Mozilla SVGFEDropShadowElement.stdDeviationY documentation> 
-getStdDeviationY ::
-                 (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
-getStdDeviationY self
-  = liftDOM ((self ^. js "stdDeviationY") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEDropShadowElement/stdDeviationY MDN SVGFEDropShadowElement.stdDeviationY documentation>
+getStdDeviationY :: (MonadDOM m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
+getStdDeviationY self = liftDOM (((self ^. js "stdDeviationY") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGFEFloodElement.hs b/src/JSDOM/Generated/SVGFEFloodElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGFEFloodElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
+module JSDOM.Generated.SVGFEFloodElement
+       (SVGFEFloodElement(..), gTypeSVGFEFloodElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGFEFuncAElement.hs b/src/JSDOM/Generated/SVGFEFuncAElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGFEFuncAElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
+module JSDOM.Generated.SVGFEFuncAElement
+       (SVGFEFuncAElement(..), gTypeSVGFEFuncAElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGFEFuncBElement.hs b/src/JSDOM/Generated/SVGFEFuncBElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGFEFuncBElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
+module JSDOM.Generated.SVGFEFuncBElement
+       (SVGFEFuncBElement(..), gTypeSVGFEFuncBElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGFEFuncGElement.hs b/src/JSDOM/Generated/SVGFEFuncGElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGFEFuncGElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
+module JSDOM.Generated.SVGFEFuncGElement
+       (SVGFEFuncGElement(..), gTypeSVGFEFuncGElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGFEFuncRElement.hs b/src/JSDOM/Generated/SVGFEFuncRElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGFEFuncRElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
+module JSDOM.Generated.SVGFEFuncRElement
+       (SVGFEFuncRElement(..), gTypeSVGFEFuncRElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGFEGaussianBlurElement.hs b/src/JSDOM/Generated/SVGFEGaussianBlurElement.hs
--- a/src/JSDOM/Generated/SVGFEGaussianBlurElement.hs
+++ b/src/JSDOM/Generated/SVGFEGaussianBlurElement.hs
@@ -1,62 +1,44 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.Generated.SVGFEGaussianBlurElement
-       (setStdDeviation, pattern SVG_EDGEMODE_UNKNOWN,
-        pattern SVG_EDGEMODE_DUPLICATE, pattern SVG_EDGEMODE_WRAP,
-        pattern SVG_EDGEMODE_NONE, getIn1, getStdDeviationX,
-        getStdDeviationY, getEdgeMode, SVGFEGaussianBlurElement(..),
-        gTypeSVGFEGaussianBlurElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.setStdDeviation Mozilla SVGFEGaussianBlurElement.setStdDeviation documentation> 
-setStdDeviation ::
-                (MonadDOM m) =>
-                  SVGFEGaussianBlurElement -> Maybe Float -> Maybe Float -> m ()
-setStdDeviation self stdDeviationX stdDeviationY
-  = liftDOM
-      (void
-         (self ^. jsf "setStdDeviation"
-            [toJSVal stdDeviationX, toJSVal stdDeviationY]))
-pattern SVG_EDGEMODE_UNKNOWN = 0
-pattern SVG_EDGEMODE_DUPLICATE = 1
-pattern SVG_EDGEMODE_WRAP = 2
-pattern SVG_EDGEMODE_NONE = 3
+-- | <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 (self ^. jsf "setStdDeviation" [toJSVal stdDeviationX, toJSVal stdDeviationY]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.in1 Mozilla SVGFEGaussianBlurElement.in1 documentation> 
-getIn1 ::
-       (MonadDOM m) => SVGFEGaussianBlurElement -> m SVGAnimatedString
-getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEGaussianBlurElement/in1 MDN SVGFEGaussianBlurElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEGaussianBlurElement -> m SVGAnimatedString
+getIn1 self = liftDOM (((self ^. js "in1") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.stdDeviationX Mozilla SVGFEGaussianBlurElement.stdDeviationX documentation> 
-getStdDeviationX ::
-                 (MonadDOM m) => SVGFEGaussianBlurElement -> m SVGAnimatedNumber
-getStdDeviationX self
-  = liftDOM ((self ^. js "stdDeviationX") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEGaussianBlurElement/stdDeviationX MDN SVGFEGaussianBlurElement.stdDeviationX documentation>
+getStdDeviationX :: (MonadDOM m) => SVGFEGaussianBlurElement -> m SVGAnimatedNumber
+getStdDeviationX self = liftDOM (((self ^. js "stdDeviationX") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.stdDeviationY Mozilla SVGFEGaussianBlurElement.stdDeviationY documentation> 
-getStdDeviationY ::
-                 (MonadDOM m) => SVGFEGaussianBlurElement -> m SVGAnimatedNumber
-getStdDeviationY self
-  = liftDOM ((self ^. js "stdDeviationY") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEGaussianBlurElement/stdDeviationY MDN SVGFEGaussianBlurElement.stdDeviationY documentation>
+getStdDeviationY :: (MonadDOM m) => SVGFEGaussianBlurElement -> m SVGAnimatedNumber
+getStdDeviationY self = liftDOM (((self ^. js "stdDeviationY") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.edgeMode Mozilla SVGFEGaussianBlurElement.edgeMode documentation> 
-getEdgeMode ::
-            (MonadDOM m) =>
-              SVGFEGaussianBlurElement -> m SVGAnimatedEnumeration
-getEdgeMode self
-  = liftDOM ((self ^. js "edgeMode") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEGaussianBlurElement/edgeMode MDN SVGFEGaussianBlurElement.edgeMode documentation>
+getEdgeMode :: (MonadDOM m) => SVGFEGaussianBlurElement -> m SVGAnimatedEnumeration
+getEdgeMode self = liftDOM (((self ^. js "edgeMode") >>= fromJSValUnchecked))
+
+pattern SVG_EDGEMODE_UNKNOWN = 0
+
+pattern SVG_EDGEMODE_DUPLICATE = 1
+
+pattern SVG_EDGEMODE_WRAP = 2
+
+pattern SVG_EDGEMODE_NONE = 3
diff --git a/src/JSDOM/Generated/SVGFEImageElement.hs b/src/JSDOM/Generated/SVGFEImageElement.hs
--- a/src/JSDOM/Generated/SVGFEImageElement.hs
+++ b/src/JSDOM/Generated/SVGFEImageElement.hs
@@ -1,29 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.Generated.SVGFEImageElement
-       (getPreserveAspectRatio, SVGFEImageElement(..),
-        gTypeSVGFEImageElement)
+       (getPreserveAspectRatio, SVGFEImageElement(..), gTypeSVGFEImageElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEImageElement.preserveAspectRatio Mozilla SVGFEImageElement.preserveAspectRatio documentation> 
-getPreserveAspectRatio ::
-                       (MonadDOM m) =>
-                         SVGFEImageElement -> m SVGAnimatedPreserveAspectRatio
-getPreserveAspectRatio self
-  = liftDOM
-      ((self ^. js "preserveAspectRatio") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEImageElement/preserveAspectRatio MDN SVGFEImageElement.preserveAspectRatio documentation>
+getPreserveAspectRatio :: (MonadDOM m) => SVGFEImageElement -> m SVGAnimatedPreserveAspectRatio
+getPreserveAspectRatio self = liftDOM (((self ^. js "preserveAspectRatio") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGFEMergeElement.hs b/src/JSDOM/Generated/SVGFEMergeElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGFEMergeElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
+module JSDOM.Generated.SVGFEMergeElement
+       (SVGFEMergeElement(..), gTypeSVGFEMergeElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGFEMergeNodeElement.hs b/src/JSDOM/Generated/SVGFEMergeNodeElement.hs
--- a/src/JSDOM/Generated/SVGFEMergeNodeElement.hs
+++ b/src/JSDOM/Generated/SVGFEMergeNodeElement.hs
@@ -1,25 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.Generated.SVGFEMergeNodeElement
        (getIn1, SVGFEMergeNodeElement(..), gTypeSVGFEMergeNodeElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMergeNodeElement.in1 Mozilla SVGFEMergeNodeElement.in1 documentation> 
-getIn1 ::
-       (MonadDOM m) => SVGFEMergeNodeElement -> m SVGAnimatedString
-getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEMergeNodeElement/in1 MDN SVGFEMergeNodeElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEMergeNodeElement -> m SVGAnimatedString
+getIn1 self = liftDOM (((self ^. js "in1") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGFEMorphologyElement.hs b/src/JSDOM/Generated/SVGFEMorphologyElement.hs
--- a/src/JSDOM/Generated/SVGFEMorphologyElement.hs
+++ b/src/JSDOM/Generated/SVGFEMorphologyElement.hs
@@ -1,58 +1,38 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.Generated.SVGFEMorphologyElement
-       (setRadius, pattern SVG_MORPHOLOGY_OPERATOR_UNKNOWN,
-        pattern SVG_MORPHOLOGY_OPERATOR_ERODE,
-        pattern SVG_MORPHOLOGY_OPERATOR_DILATE, getIn1, getOperator,
-        getRadiusX, getRadiusY, SVGFEMorphologyElement(..),
-        gTypeSVGFEMorphologyElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.setRadius Mozilla SVGFEMorphologyElement.setRadius documentation> 
-setRadius ::
-          (MonadDOM m) =>
-            SVGFEMorphologyElement -> Maybe Float -> Maybe Float -> m ()
-setRadius self radiusX radiusY
-  = liftDOM
-      (void (self ^. jsf "setRadius" [toJSVal radiusX, toJSVal radiusY]))
-pattern SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0
-pattern SVG_MORPHOLOGY_OPERATOR_ERODE = 1
-pattern SVG_MORPHOLOGY_OPERATOR_DILATE = 2
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEMorphologyElement/in1 MDN SVGFEMorphologyElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFEMorphologyElement -> m SVGAnimatedString
+getIn1 self = liftDOM (((self ^. js "in1") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.in1 Mozilla SVGFEMorphologyElement.in1 documentation> 
-getIn1 ::
-       (MonadDOM m) => SVGFEMorphologyElement -> m SVGAnimatedString
-getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEMorphologyElement/operator MDN SVGFEMorphologyElement.operator documentation>
+getOperator :: (MonadDOM m) => SVGFEMorphologyElement -> m SVGAnimatedEnumeration
+getOperator self = liftDOM (((self ^. js "operator") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.operator Mozilla SVGFEMorphologyElement.operator documentation> 
-getOperator ::
-            (MonadDOM m) => SVGFEMorphologyElement -> m SVGAnimatedEnumeration
-getOperator self
-  = liftDOM ((self ^. js "operator") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEMorphologyElement/radiusX MDN SVGFEMorphologyElement.radiusX documentation>
+getRadiusX :: (MonadDOM m) => SVGFEMorphologyElement -> m SVGAnimatedNumber
+getRadiusX self = liftDOM (((self ^. js "radiusX") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.radiusX Mozilla SVGFEMorphologyElement.radiusX documentation> 
-getRadiusX ::
-           (MonadDOM m) => SVGFEMorphologyElement -> m SVGAnimatedNumber
-getRadiusX self
-  = liftDOM ((self ^. js "radiusX") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEMorphologyElement/radiusY MDN SVGFEMorphologyElement.radiusY documentation>
+getRadiusY :: (MonadDOM m) => SVGFEMorphologyElement -> m SVGAnimatedNumber
+getRadiusY self = liftDOM (((self ^. js "radiusY") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.radiusY Mozilla SVGFEMorphologyElement.radiusY documentation> 
-getRadiusY ::
-           (MonadDOM m) => SVGFEMorphologyElement -> m SVGAnimatedNumber
-getRadiusY self
-  = liftDOM ((self ^. js "radiusY") >>= fromJSValUnchecked)
+pattern SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0
+
+pattern SVG_MORPHOLOGY_OPERATOR_ERODE = 1
+
+pattern SVG_MORPHOLOGY_OPERATOR_DILATE = 2
diff --git a/src/JSDOM/Generated/SVGFEOffsetElement.hs b/src/JSDOM/Generated/SVGFEOffsetElement.hs
--- a/src/JSDOM/Generated/SVGFEOffsetElement.hs
+++ b/src/JSDOM/Generated/SVGFEOffsetElement.hs
@@ -1,33 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.Generated.SVGFEOffsetElement
-       (getIn1, getDx, getDy, SVGFEOffsetElement(..),
-        gTypeSVGFEOffsetElement)
+       (getIn1, getDx, getDy, SVGFEOffsetElement(..), gTypeSVGFEOffsetElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.in1 Mozilla SVGFEOffsetElement.in1 documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEOffsetElement/in1 MDN SVGFEOffsetElement.in1 documentation>
 getIn1 :: (MonadDOM m) => SVGFEOffsetElement -> m SVGAnimatedString
-getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSValUnchecked)
+getIn1 self = liftDOM (((self ^. js "in1") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.dx Mozilla SVGFEOffsetElement.dx documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEOffsetElement/dx MDN SVGFEOffsetElement.dx documentation>
 getDx :: (MonadDOM m) => SVGFEOffsetElement -> m SVGAnimatedNumber
-getDx self = liftDOM ((self ^. js "dx") >>= fromJSValUnchecked)
+getDx self = liftDOM (((self ^. js "dx") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.dy Mozilla SVGFEOffsetElement.dy documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEOffsetElement/dy MDN SVGFEOffsetElement.dy documentation>
 getDy :: (MonadDOM m) => SVGFEOffsetElement -> m SVGAnimatedNumber
-getDy self = liftDOM ((self ^. js "dy") >>= fromJSValUnchecked)
+getDy self = liftDOM (((self ^. js "dy") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGFEPointLightElement.hs b/src/JSDOM/Generated/SVGFEPointLightElement.hs
--- a/src/JSDOM/Generated/SVGFEPointLightElement.hs
+++ b/src/JSDOM/Generated/SVGFEPointLightElement.hs
@@ -1,36 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.Generated.SVGFEPointLightElement
-       (getX, getY, getZ, SVGFEPointLightElement(..),
-        gTypeSVGFEPointLightElement)
+       (getX, getY, getZ, SVGFEPointLightElement(..), gTypeSVGFEPointLightElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.x Mozilla SVGFEPointLightElement.x documentation> 
-getX ::
-     (MonadDOM m) => SVGFEPointLightElement -> m SVGAnimatedNumber
-getX self = liftDOM ((self ^. js "x") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEPointLightElement/x MDN SVGFEPointLightElement.x documentation>
+getX :: (MonadDOM m) => SVGFEPointLightElement -> m SVGAnimatedNumber
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.y Mozilla SVGFEPointLightElement.y documentation> 
-getY ::
-     (MonadDOM m) => SVGFEPointLightElement -> m SVGAnimatedNumber
-getY self = liftDOM ((self ^. js "y") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEPointLightElement/y MDN SVGFEPointLightElement.y documentation>
+getY :: (MonadDOM m) => SVGFEPointLightElement -> m SVGAnimatedNumber
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.z Mozilla SVGFEPointLightElement.z documentation> 
-getZ ::
-     (MonadDOM m) => SVGFEPointLightElement -> m SVGAnimatedNumber
-getZ self = liftDOM ((self ^. js "z") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEPointLightElement/z MDN SVGFEPointLightElement.z documentation>
+getZ :: (MonadDOM m) => SVGFEPointLightElement -> m SVGAnimatedNumber
+getZ self = liftDOM (((self ^. js "z") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGFESpecularLightingElement.hs b/src/JSDOM/Generated/SVGFESpecularLightingElement.hs
--- a/src/JSDOM/Generated/SVGFESpecularLightingElement.hs
+++ b/src/JSDOM/Generated/SVGFESpecularLightingElement.hs
@@ -1,45 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.Generated.SVGFESpecularLightingElement
-       (getIn1, getSurfaceScale, getSpecularConstant, getSpecularExponent,
-        SVGFESpecularLightingElement(..),
-        gTypeSVGFESpecularLightingElement)
+       (getIn1, getSurfaceScale, getSpecularConstant, getSpecularExponent, getKernelUnitLengthX, getKernelUnitLengthY, SVGFESpecularLightingElement(..), gTypeSVGFESpecularLightingElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.in1 Mozilla SVGFESpecularLightingElement.in1 documentation> 
-getIn1 ::
-       (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedString
-getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpecularLightingElement/in1 MDN SVGFESpecularLightingElement.in1 documentation>
+getIn1 :: (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedString
+getIn1 self = liftDOM (((self ^. js "in1") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.surfaceScale Mozilla SVGFESpecularLightingElement.surfaceScale documentation> 
-getSurfaceScale ::
-                (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
-getSurfaceScale self
-  = liftDOM ((self ^. js "surfaceScale") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpecularLightingElement/surfaceScale MDN SVGFESpecularLightingElement.surfaceScale documentation>
+getSurfaceScale :: (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
+getSurfaceScale self = liftDOM (((self ^. js "surfaceScale") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.specularConstant Mozilla SVGFESpecularLightingElement.specularConstant documentation> 
-getSpecularConstant ::
-                    (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
-getSpecularConstant self
-  = liftDOM ((self ^. js "specularConstant") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpecularLightingElement/specularConstant MDN SVGFESpecularLightingElement.specularConstant documentation>
+getSpecularConstant :: (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
+getSpecularConstant self = liftDOM (((self ^. js "specularConstant") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.specularExponent Mozilla SVGFESpecularLightingElement.specularExponent documentation> 
-getSpecularExponent ::
-                    (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
-getSpecularExponent self
-  = liftDOM ((self ^. js "specularExponent") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpecularLightingElement/specularExponent MDN SVGFESpecularLightingElement.specularExponent documentation>
+getSpecularExponent :: (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
+getSpecularExponent self = liftDOM (((self ^. js "specularExponent") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpecularLightingElement/kernelUnitLengthX MDN SVGFESpecularLightingElement.kernelUnitLengthX documentation>
+getKernelUnitLengthX :: (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
+getKernelUnitLengthX self = liftDOM (((self ^. js "kernelUnitLengthX") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpecularLightingElement/kernelUnitLengthY MDN SVGFESpecularLightingElement.kernelUnitLengthY documentation>
+getKernelUnitLengthY :: (MonadDOM m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
+getKernelUnitLengthY self = liftDOM (((self ^. js "kernelUnitLengthY") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGFESpotLightElement.hs b/src/JSDOM/Generated/SVGFESpotLightElement.hs
--- a/src/JSDOM/Generated/SVGFESpotLightElement.hs
+++ b/src/JSDOM/Generated/SVGFESpotLightElement.hs
@@ -1,67 +1,48 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.Generated.SVGFESpotLightElement
-       (getX, getY, getZ, getPointsAtX, getPointsAtY, getPointsAtZ,
-        getSpecularExponent, getLimitingConeAngle,
-        SVGFESpotLightElement(..), gTypeSVGFESpotLightElement)
+       (getX, getY, getZ, getPointsAtX, getPointsAtY, getPointsAtZ, getSpecularExponent, getLimitingConeAngle, SVGFESpotLightElement(..), gTypeSVGFESpotLightElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.x Mozilla SVGFESpotLightElement.x documentation> 
-getX ::
-     (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
-getX self = liftDOM ((self ^. js "x") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpotLightElement/x MDN SVGFESpotLightElement.x documentation>
+getX :: (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.y Mozilla SVGFESpotLightElement.y documentation> 
-getY ::
-     (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
-getY self = liftDOM ((self ^. js "y") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpotLightElement/y MDN SVGFESpotLightElement.y documentation>
+getY :: (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.z Mozilla SVGFESpotLightElement.z documentation> 
-getZ ::
-     (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
-getZ self = liftDOM ((self ^. js "z") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpotLightElement/z MDN SVGFESpotLightElement.z documentation>
+getZ :: (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getZ self = liftDOM (((self ^. js "z") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtX Mozilla SVGFESpotLightElement.pointsAtX documentation> 
-getPointsAtX ::
-             (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
-getPointsAtX self
-  = liftDOM ((self ^. js "pointsAtX") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpotLightElement/pointsAtX MDN SVGFESpotLightElement.pointsAtX documentation>
+getPointsAtX :: (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getPointsAtX self = liftDOM (((self ^. js "pointsAtX") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtY Mozilla SVGFESpotLightElement.pointsAtY documentation> 
-getPointsAtY ::
-             (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
-getPointsAtY self
-  = liftDOM ((self ^. js "pointsAtY") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpotLightElement/pointsAtY MDN SVGFESpotLightElement.pointsAtY documentation>
+getPointsAtY :: (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getPointsAtY self = liftDOM (((self ^. js "pointsAtY") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtZ Mozilla SVGFESpotLightElement.pointsAtZ documentation> 
-getPointsAtZ ::
-             (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
-getPointsAtZ self
-  = liftDOM ((self ^. js "pointsAtZ") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpotLightElement/pointsAtZ MDN SVGFESpotLightElement.pointsAtZ documentation>
+getPointsAtZ :: (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getPointsAtZ self = liftDOM (((self ^. js "pointsAtZ") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.specularExponent Mozilla SVGFESpotLightElement.specularExponent documentation> 
-getSpecularExponent ::
-                    (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
-getSpecularExponent self
-  = liftDOM ((self ^. js "specularExponent") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpotLightElement/specularExponent MDN SVGFESpotLightElement.specularExponent documentation>
+getSpecularExponent :: (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getSpecularExponent self = liftDOM (((self ^. js "specularExponent") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.limitingConeAngle Mozilla SVGFESpotLightElement.limitingConeAngle documentation> 
-getLimitingConeAngle ::
-                     (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
-getLimitingConeAngle self
-  = liftDOM ((self ^. js "limitingConeAngle") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFESpotLightElement/limitingConeAngle MDN SVGFESpotLightElement.limitingConeAngle documentation>
+getLimitingConeAngle :: (MonadDOM m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getLimitingConeAngle self = liftDOM (((self ^. js "limitingConeAngle") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGFETileElement.hs b/src/JSDOM/Generated/SVGFETileElement.hs
--- a/src/JSDOM/Generated/SVGFETileElement.hs
+++ b/src/JSDOM/Generated/SVGFETileElement.hs
@@ -1,23 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.Generated.SVGFETileElement
-       (getIn1, SVGFETileElement(..), gTypeSVGFETileElement) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (getIn1, SVGFETileElement(..), gTypeSVGFETileElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETileElement.in1 Mozilla SVGFETileElement.in1 documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFETileElement/in1 MDN SVGFETileElement.in1 documentation>
 getIn1 :: (MonadDOM m) => SVGFETileElement -> m SVGAnimatedString
-getIn1 self = liftDOM ((self ^. js "in1") >>= fromJSValUnchecked)
+getIn1 self = liftDOM (((self ^. js "in1") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGFETurbulenceElement.hs b/src/JSDOM/Generated/SVGFETurbulenceElement.hs
--- a/src/JSDOM/Generated/SVGFETurbulenceElement.hs
+++ b/src/JSDOM/Generated/SVGFETurbulenceElement.hs
@@ -1,66 +1,52 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.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, getBaseFrequencyX,
-        getBaseFrequencyY, getNumOctaves, getSeed, getStitchTiles, getType,
-        SVGFETurbulenceElement(..), gTypeSVGFETurbulenceElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.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
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.baseFrequencyX Mozilla SVGFETurbulenceElement.baseFrequencyX documentation> 
-getBaseFrequencyX ::
-                  (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
-getBaseFrequencyX self
-  = liftDOM ((self ^. js "baseFrequencyX") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFETurbulenceElement/baseFrequencyX MDN SVGFETurbulenceElement.baseFrequencyX documentation>
+getBaseFrequencyX :: (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
+getBaseFrequencyX self = liftDOM (((self ^. js "baseFrequencyX") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.baseFrequencyY Mozilla SVGFETurbulenceElement.baseFrequencyY documentation> 
-getBaseFrequencyY ::
-                  (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
-getBaseFrequencyY self
-  = liftDOM ((self ^. js "baseFrequencyY") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFETurbulenceElement/baseFrequencyY MDN SVGFETurbulenceElement.baseFrequencyY documentation>
+getBaseFrequencyY :: (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
+getBaseFrequencyY self = liftDOM (((self ^. js "baseFrequencyY") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.numOctaves Mozilla SVGFETurbulenceElement.numOctaves documentation> 
-getNumOctaves ::
-              (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedInteger
-getNumOctaves self
-  = liftDOM ((self ^. js "numOctaves") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFETurbulenceElement/numOctaves MDN SVGFETurbulenceElement.numOctaves documentation>
+getNumOctaves :: (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedInteger
+getNumOctaves self = liftDOM (((self ^. js "numOctaves") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.seed Mozilla SVGFETurbulenceElement.seed documentation> 
-getSeed ::
-        (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
-getSeed self = liftDOM ((self ^. js "seed") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFETurbulenceElement/seed MDN SVGFETurbulenceElement.seed documentation>
+getSeed :: (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
+getSeed self = liftDOM (((self ^. js "seed") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.stitchTiles Mozilla SVGFETurbulenceElement.stitchTiles documentation> 
-getStitchTiles ::
-               (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedEnumeration
-getStitchTiles self
-  = liftDOM ((self ^. js "stitchTiles") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFETurbulenceElement/stitchTiles MDN SVGFETurbulenceElement.stitchTiles documentation>
+getStitchTiles :: (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedEnumeration
+getStitchTiles self = liftDOM (((self ^. js "stitchTiles") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.type Mozilla SVGFETurbulenceElement.type documentation> 
-getType ::
-        (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedEnumeration
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFETurbulenceElement/type MDN SVGFETurbulenceElement.type documentation>
+getType :: (MonadDOM m) => SVGFETurbulenceElement -> m SVGAnimatedEnumeration
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+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/JSDOM/Generated/SVGFilterElement.hs b/src/JSDOM/Generated/SVGFilterElement.hs
--- a/src/JSDOM/Generated/SVGFilterElement.hs
+++ b/src/JSDOM/Generated/SVGFilterElement.hs
@@ -1,75 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.Generated.SVGFilterElement
-       (setFilterRes, getFilterUnits, getPrimitiveUnits, getX, getY,
-        getWidth, getHeight, getFilterResX, getFilterResY,
-        SVGFilterElement(..), gTypeSVGFilterElement)
+       (getFilterUnits, getPrimitiveUnits, getX, getY, getWidth, getHeight, SVGFilterElement(..), gTypeSVGFilterElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.setFilterRes Mozilla SVGFilterElement.setFilterRes documentation> 
-setFilterRes ::
-             (MonadDOM m) =>
-               SVGFilterElement -> Maybe Word -> Maybe Word -> m ()
-setFilterRes self filterResX filterResY
-  = liftDOM
-      (void
-         (self ^. jsf "setFilterRes"
-            [toJSVal filterResX, toJSVal filterResY]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterUnits Mozilla SVGFilterElement.filterUnits documentation> 
-getFilterUnits ::
-               (MonadDOM m) => SVGFilterElement -> m SVGAnimatedEnumeration
-getFilterUnits self
-  = liftDOM ((self ^. js "filterUnits") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFilterElement/filterUnits MDN SVGFilterElement.filterUnits documentation>
+getFilterUnits :: (MonadDOM m) => SVGFilterElement -> m SVGAnimatedEnumeration
+getFilterUnits self = liftDOM (((self ^. js "filterUnits") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.primitiveUnits Mozilla SVGFilterElement.primitiveUnits documentation> 
-getPrimitiveUnits ::
-                  (MonadDOM m) => SVGFilterElement -> m SVGAnimatedEnumeration
-getPrimitiveUnits self
-  = liftDOM ((self ^. js "primitiveUnits") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFilterElement/primitiveUnits MDN SVGFilterElement.primitiveUnits documentation>
+getPrimitiveUnits :: (MonadDOM m) => SVGFilterElement -> m SVGAnimatedEnumeration
+getPrimitiveUnits self = liftDOM (((self ^. js "primitiveUnits") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.x Mozilla SVGFilterElement.x documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFilterElement/x MDN SVGFilterElement.x documentation>
 getX :: (MonadDOM m) => SVGFilterElement -> m SVGAnimatedLength
-getX self = liftDOM ((self ^. js "x") >>= fromJSValUnchecked)
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.y Mozilla SVGFilterElement.y documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFilterElement/y MDN SVGFilterElement.y documentation>
 getY :: (MonadDOM m) => SVGFilterElement -> m SVGAnimatedLength
-getY self = liftDOM ((self ^. js "y") >>= fromJSValUnchecked)
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.width Mozilla SVGFilterElement.width documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFilterElement/width MDN SVGFilterElement.width documentation>
 getWidth :: (MonadDOM m) => SVGFilterElement -> m SVGAnimatedLength
-getWidth self
-  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.height Mozilla SVGFilterElement.height documentation> 
-getHeight ::
-          (MonadDOM m) => SVGFilterElement -> m SVGAnimatedLength
-getHeight self
-  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterResX Mozilla SVGFilterElement.filterResX documentation> 
-getFilterResX ::
-              (MonadDOM m) => SVGFilterElement -> m SVGAnimatedInteger
-getFilterResX self
-  = liftDOM ((self ^. js "filterResX") >>= fromJSValUnchecked)
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterResY Mozilla SVGFilterElement.filterResY documentation> 
-getFilterResY ::
-              (MonadDOM m) => SVGFilterElement -> m SVGAnimatedInteger
-getFilterResY self
-  = liftDOM ((self ^. js "filterResY") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFilterElement/height MDN SVGFilterElement.height documentation>
+getHeight :: (MonadDOM m) => SVGFilterElement -> m SVGAnimatedLength
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGFilterPrimitiveStandardAttributes.hs b/src/JSDOM/Generated/SVGFilterPrimitiveStandardAttributes.hs
--- a/src/JSDOM/Generated/SVGFilterPrimitiveStandardAttributes.hs
+++ b/src/JSDOM/Generated/SVGFilterPrimitiveStandardAttributes.hs
@@ -1,69 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from filter-effects-1 (webref). Do not edit.
 module JSDOM.Generated.SVGFilterPrimitiveStandardAttributes
-       (getX, getY, getWidth, getHeight, getResult,
-        SVGFilterPrimitiveStandardAttributes(..),
-        gTypeSVGFilterPrimitiveStandardAttributes,
-        IsSVGFilterPrimitiveStandardAttributes,
-        toSVGFilterPrimitiveStandardAttributes)
+       (getX, getY, getWidth, getHeight, getResult, SVGFilterPrimitiveStandardAttributes(..), gTypeSVGFilterPrimitiveStandardAttributes, IsSVGFilterPrimitiveStandardAttributes, toSVGFilterPrimitiveStandardAttributes)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.x Mozilla SVGFilterPrimitiveStandardAttributes.x documentation> 
-getX ::
-     (MonadDOM m, IsSVGFilterPrimitiveStandardAttributes self) =>
-       self -> m SVGAnimatedLength
-getX self
-  = liftDOM
-      (((toSVGFilterPrimitiveStandardAttributes self) ^. js "x") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEBlendElement/x MDN SVGFilterPrimitiveStandardAttributes.x documentation>
+getX :: (MonadDOM m, IsSVGFilterPrimitiveStandardAttributes self) => self -> m SVGAnimatedLength
+getX self = liftDOM ((((Types.toSVGFilterPrimitiveStandardAttributes self) ^. js "x") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.y Mozilla SVGFilterPrimitiveStandardAttributes.y documentation> 
-getY ::
-     (MonadDOM m, IsSVGFilterPrimitiveStandardAttributes self) =>
-       self -> m SVGAnimatedLength
-getY self
-  = liftDOM
-      (((toSVGFilterPrimitiveStandardAttributes self) ^. js "y") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEBlendElement/y MDN SVGFilterPrimitiveStandardAttributes.y documentation>
+getY :: (MonadDOM m, IsSVGFilterPrimitiveStandardAttributes self) => self -> m SVGAnimatedLength
+getY self = liftDOM ((((Types.toSVGFilterPrimitiveStandardAttributes self) ^. js "y") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.width Mozilla SVGFilterPrimitiveStandardAttributes.width documentation> 
-getWidth ::
-         (MonadDOM m, IsSVGFilterPrimitiveStandardAttributes self) =>
-           self -> m SVGAnimatedLength
-getWidth self
-  = liftDOM
-      (((toSVGFilterPrimitiveStandardAttributes self) ^. js "width") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEBlendElement/width MDN SVGFilterPrimitiveStandardAttributes.width documentation>
+getWidth :: (MonadDOM m, IsSVGFilterPrimitiveStandardAttributes self) => self -> m SVGAnimatedLength
+getWidth self = liftDOM ((((Types.toSVGFilterPrimitiveStandardAttributes self) ^. js "width") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.height Mozilla SVGFilterPrimitiveStandardAttributes.height documentation> 
-getHeight ::
-          (MonadDOM m, IsSVGFilterPrimitiveStandardAttributes self) =>
-            self -> m SVGAnimatedLength
-getHeight self
-  = liftDOM
-      (((toSVGFilterPrimitiveStandardAttributes self) ^. js "height") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEBlendElement/height MDN SVGFilterPrimitiveStandardAttributes.height documentation>
+getHeight :: (MonadDOM m, IsSVGFilterPrimitiveStandardAttributes self) => self -> m SVGAnimatedLength
+getHeight self = liftDOM ((((Types.toSVGFilterPrimitiveStandardAttributes self) ^. js "height") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.result Mozilla SVGFilterPrimitiveStandardAttributes.result documentation> 
-getResult ::
-          (MonadDOM m, IsSVGFilterPrimitiveStandardAttributes self) =>
-            self -> m SVGAnimatedString
-getResult self
-  = liftDOM
-      (((toSVGFilterPrimitiveStandardAttributes self) ^. js "result") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGFEBlendElement/result MDN SVGFilterPrimitiveStandardAttributes.result documentation>
+getResult :: (MonadDOM m, IsSVGFilterPrimitiveStandardAttributes self) => self -> m SVGAnimatedString
+getResult self = liftDOM ((((Types.toSVGFilterPrimitiveStandardAttributes self) ^. js "result") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGFitToViewBox.hs b/src/JSDOM/Generated/SVGFitToViewBox.hs
--- a/src/JSDOM/Generated/SVGFitToViewBox.hs
+++ b/src/JSDOM/Generated/SVGFitToViewBox.hs
@@ -1,37 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGFitToViewBox
-       (getViewBox, getPreserveAspectRatio, SVGFitToViewBox(..),
-        gTypeSVGFitToViewBox, IsSVGFitToViewBox, toSVGFitToViewBox)
+       (getViewBox, getPreserveAspectRatio, SVGFitToViewBox(..), gTypeSVGFitToViewBox, IsSVGFitToViewBox, toSVGFitToViewBox)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox.viewBox Mozilla SVGFitToViewBox.viewBox documentation> 
-getViewBox ::
-           (MonadDOM m, IsSVGFitToViewBox self) => self -> m SVGAnimatedRect
-getViewBox self
-  = liftDOM
-      (((toSVGFitToViewBox self) ^. js "viewBox") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/viewBox MDN SVGFitToViewBox.viewBox documentation>
+getViewBox :: (MonadDOM m, IsSVGFitToViewBox self) => self -> m SVGAnimatedRect
+getViewBox self = liftDOM ((((Types.toSVGFitToViewBox self) ^. js "viewBox") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox.preserveAspectRatio Mozilla SVGFitToViewBox.preserveAspectRatio documentation> 
-getPreserveAspectRatio ::
-                       (MonadDOM m, IsSVGFitToViewBox self) =>
-                         self -> m SVGAnimatedPreserveAspectRatio
-getPreserveAspectRatio self
-  = liftDOM
-      (((toSVGFitToViewBox self) ^. js "preserveAspectRatio") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/preserveAspectRatio MDN SVGFitToViewBox.preserveAspectRatio documentation>
+getPreserveAspectRatio :: (MonadDOM m, IsSVGFitToViewBox self) => self -> m SVGAnimatedPreserveAspectRatio
+getPreserveAspectRatio self = liftDOM ((((Types.toSVGFitToViewBox self) ^. js "preserveAspectRatio") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGForeignObjectElement.hs b/src/JSDOM/Generated/SVGForeignObjectElement.hs
--- a/src/JSDOM/Generated/SVGForeignObjectElement.hs
+++ b/src/JSDOM/Generated/SVGForeignObjectElement.hs
@@ -1,43 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGForeignObjectElement
-       (getX, getY, getWidth, getHeight, SVGForeignObjectElement(..),
-        gTypeSVGForeignObjectElement)
+       (getX, getY, getWidth, getHeight, SVGForeignObjectElement(..), gTypeSVGForeignObjectElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.x Mozilla SVGForeignObjectElement.x documentation> 
-getX ::
-     (MonadDOM m) => SVGForeignObjectElement -> m SVGAnimatedLength
-getX self = liftDOM ((self ^. js "x") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGForeignObjectElement/x MDN SVGForeignObjectElement.x documentation>
+getX :: (MonadDOM m) => SVGForeignObjectElement -> m SVGAnimatedLength
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.y Mozilla SVGForeignObjectElement.y documentation> 
-getY ::
-     (MonadDOM m) => SVGForeignObjectElement -> m SVGAnimatedLength
-getY self = liftDOM ((self ^. js "y") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGForeignObjectElement/y MDN SVGForeignObjectElement.y documentation>
+getY :: (MonadDOM m) => SVGForeignObjectElement -> m SVGAnimatedLength
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.width Mozilla SVGForeignObjectElement.width documentation> 
-getWidth ::
-         (MonadDOM m) => SVGForeignObjectElement -> m SVGAnimatedLength
-getWidth self
-  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGForeignObjectElement/width MDN SVGForeignObjectElement.width documentation>
+getWidth :: (MonadDOM m) => SVGForeignObjectElement -> m SVGAnimatedLength
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.height Mozilla SVGForeignObjectElement.height documentation> 
-getHeight ::
-          (MonadDOM m) => SVGForeignObjectElement -> m SVGAnimatedLength
-getHeight self
-  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGForeignObjectElement/height MDN SVGForeignObjectElement.height documentation>
+getHeight :: (MonadDOM m) => SVGForeignObjectElement -> m SVGAnimatedLength
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGGElement.hs b/src/JSDOM/Generated/SVGGElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGGElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module JSDOM.Generated.SVGGElement
+       (SVGGElement(..), gTypeSVGGElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGGeometryElement.hs b/src/JSDOM/Generated/SVGGeometryElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGGeometryElement.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module JSDOM.Generated.SVGGeometryElement
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toSVGGeometryElement self) ^. jsf "getPointAtLength" [toJSVal distance]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toSVGGeometryElement self) ^. jsf "getPointAtLength" [toJSVal distance]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGeometryElement/getTotalLength MDN SVGGeometryElement.getTotalLength documentation>
+getTotalLength :: (MonadDOM m, IsSVGGeometryElement self) => self -> m Float
+getTotalLength self = liftDOM ((P.realToFrac <$> (((Types.toSVGGeometryElement self) ^. jsf "getTotalLength" ()) >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGeometryElement/getTotalLength MDN SVGGeometryElement.getTotalLength documentation>
+getTotalLength_ :: (MonadDOM m, IsSVGGeometryElement self) => self -> m ()
+getTotalLength_ self = liftDOM (void ((Types.toSVGGeometryElement self) ^. jsf "getTotalLength" ()))
+
+-- | <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 ((((Types.toSVGGeometryElement self) ^. jsf "isPointInFill" [P.maybe (P.return jsUndefined) toJSVal point]) >>= valToBool))
+
+-- | <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 ((Types.toSVGGeometryElement self) ^. jsf "isPointInFill" [P.maybe (P.return jsUndefined) toJSVal point]))
+
+-- | <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 ((((Types.toSVGGeometryElement self) ^. jsf "isPointInStroke" [P.maybe (P.return jsUndefined) toJSVal point]) >>= valToBool))
+
+-- | <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 ((Types.toSVGGeometryElement self) ^. jsf "isPointInStroke" [P.maybe (P.return jsUndefined) toJSVal point]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGeometryElement/pathLength MDN SVGGeometryElement.pathLength documentation>
+getPathLength :: (MonadDOM m, IsSVGGeometryElement self) => self -> m SVGAnimatedNumber
+getPathLength self = liftDOM ((((Types.toSVGGeometryElement self) ^. js "pathLength") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGGlyphRefElement.hs b/src/JSDOM/Generated/SVGGlyphRefElement.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGGlyphRefElement.hs
+++ /dev/null
@@ -1,81 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGGlyphRefElement
-       (setGlyphRef, getGlyphRef, setFormat, getFormat, setX, getX, setY,
-        getY, setDx, getDx, setDy, getDy, SVGGlyphRefElement(..),
-        gTypeSVGGlyphRefElement)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.glyphRef Mozilla SVGGlyphRefElement.glyphRef documentation> 
-setGlyphRef ::
-            (MonadDOM m, ToJSString val) => SVGGlyphRefElement -> val -> m ()
-setGlyphRef self val
-  = liftDOM (self ^. jss "glyphRef" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.glyphRef Mozilla SVGGlyphRefElement.glyphRef documentation> 
-getGlyphRef ::
-            (MonadDOM m, FromJSString result) => SVGGlyphRefElement -> m result
-getGlyphRef self
-  = liftDOM ((self ^. js "glyphRef") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.format Mozilla SVGGlyphRefElement.format documentation> 
-setFormat ::
-          (MonadDOM m, ToJSString val) => SVGGlyphRefElement -> val -> m ()
-setFormat self val = liftDOM (self ^. jss "format" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.format Mozilla SVGGlyphRefElement.format documentation> 
-getFormat ::
-          (MonadDOM m, FromJSString result) => SVGGlyphRefElement -> m result
-getFormat self
-  = liftDOM ((self ^. js "format") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.x Mozilla SVGGlyphRefElement.x documentation> 
-setX :: (MonadDOM m) => SVGGlyphRefElement -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.x Mozilla SVGGlyphRefElement.x documentation> 
-getX :: (MonadDOM m) => SVGGlyphRefElement -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.y Mozilla SVGGlyphRefElement.y documentation> 
-setY :: (MonadDOM m) => SVGGlyphRefElement -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.y Mozilla SVGGlyphRefElement.y documentation> 
-getY :: (MonadDOM m) => SVGGlyphRefElement -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.dx Mozilla SVGGlyphRefElement.dx documentation> 
-setDx :: (MonadDOM m) => SVGGlyphRefElement -> Float -> m ()
-setDx self val = liftDOM (self ^. jss "dx" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.dx Mozilla SVGGlyphRefElement.dx documentation> 
-getDx :: (MonadDOM m) => SVGGlyphRefElement -> m Float
-getDx self
-  = liftDOM (realToFrac <$> ((self ^. js "dx") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.dy Mozilla SVGGlyphRefElement.dy documentation> 
-setDy :: (MonadDOM m) => SVGGlyphRefElement -> Float -> m ()
-setDy self val = liftDOM (self ^. jss "dy" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.dy Mozilla SVGGlyphRefElement.dy documentation> 
-getDy :: (MonadDOM m) => SVGGlyphRefElement -> m Float
-getDy self
-  = liftDOM (realToFrac <$> ((self ^. js "dy") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGGradientElement.hs b/src/JSDOM/Generated/SVGGradientElement.hs
--- a/src/JSDOM/Generated/SVGGradientElement.hs
+++ b/src/JSDOM/Generated/SVGGradientElement.hs
@@ -1,55 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGGradientElement
-       (pattern SVG_SPREADMETHOD_UNKNOWN, pattern SVG_SPREADMETHOD_PAD,
-        pattern SVG_SPREADMETHOD_REFLECT, pattern SVG_SPREADMETHOD_REPEAT,
-        getGradientUnits, getGradientTransform, getSpreadMethod,
-        SVGGradientElement(..), gTypeSVGGradientElement,
-        IsSVGGradientElement, toSVGGradientElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGradientElement/gradientUnits MDN SVGGradientElement.gradientUnits documentation>
+getGradientUnits :: (MonadDOM m, IsSVGGradientElement self) => self -> m SVGAnimatedEnumeration
+getGradientUnits self = liftDOM ((((Types.toSVGGradientElement self) ^. js "gradientUnits") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGradientElement/gradientTransform MDN SVGGradientElement.gradientTransform documentation>
+getGradientTransform :: (MonadDOM m, IsSVGGradientElement self) => self -> m SVGAnimatedTransformList
+getGradientTransform self = liftDOM ((((Types.toSVGGradientElement self) ^. js "gradientTransform") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGradientElement/spreadMethod MDN SVGGradientElement.spreadMethod documentation>
+getSpreadMethod :: (MonadDOM m, IsSVGGradientElement self) => self -> m SVGAnimatedEnumeration
+getSpreadMethod self = liftDOM ((((Types.toSVGGradientElement self) ^. js "spreadMethod") >>= fromJSValUnchecked))
+
 pattern SVG_SPREADMETHOD_UNKNOWN = 0
-pattern SVG_SPREADMETHOD_PAD = 1
-pattern SVG_SPREADMETHOD_REFLECT = 2
-pattern SVG_SPREADMETHOD_REPEAT = 3
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.gradientUnits Mozilla SVGGradientElement.gradientUnits documentation> 
-getGradientUnits ::
-                 (MonadDOM m, IsSVGGradientElement self) =>
-                   self -> m SVGAnimatedEnumeration
-getGradientUnits self
-  = liftDOM
-      (((toSVGGradientElement self) ^. js "gradientUnits") >>=
-         fromJSValUnchecked)
+pattern SVG_SPREADMETHOD_PAD = 1
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.gradientTransform Mozilla SVGGradientElement.gradientTransform documentation> 
-getGradientTransform ::
-                     (MonadDOM m, IsSVGGradientElement self) =>
-                       self -> m SVGAnimatedTransformList
-getGradientTransform self
-  = liftDOM
-      (((toSVGGradientElement self) ^. js "gradientTransform") >>=
-         fromJSValUnchecked)
+pattern SVG_SPREADMETHOD_REFLECT = 2
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.spreadMethod Mozilla SVGGradientElement.spreadMethod documentation> 
-getSpreadMethod ::
-                (MonadDOM m, IsSVGGradientElement self) =>
-                  self -> m SVGAnimatedEnumeration
-getSpreadMethod self
-  = liftDOM
-      (((toSVGGradientElement self) ^. js "spreadMethod") >>=
-         fromJSValUnchecked)
+pattern SVG_SPREADMETHOD_REPEAT = 3
diff --git a/src/JSDOM/Generated/SVGGraphicsElement.hs b/src/JSDOM/Generated/SVGGraphicsElement.hs
--- a/src/JSDOM/Generated/SVGGraphicsElement.hs
+++ b/src/JSDOM/Generated/SVGGraphicsElement.hs
@@ -1,110 +1,68 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGGraphicsElement
-       (getBBox, getBBox_, getCTM, getCTM_, getScreenCTM, getScreenCTM_,
-        getTransformToElement, getTransformToElement_, getTransform,
-        getNearestViewportElement, getFarthestViewportElement,
-        SVGGraphicsElement(..), gTypeSVGGraphicsElement,
-        IsSVGGraphicsElement, toSVGGraphicsElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getBBox Mozilla SVGGraphicsElement.getBBox documentation> 
-getBBox ::
-        (MonadDOM m, IsSVGGraphicsElement self) => self -> m SVGRect
-getBBox self
-  = liftDOM
-      (((toSVGGraphicsElement self) ^. jsf "getBBox" ()) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getBBox MDN SVGGraphicsElement.getBBox documentation>
+getBBox :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m DOMRect
+getBBox self = liftDOM ((((Types.toSVGGraphicsElement self) ^. jsf "getBBox" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getBBox Mozilla SVGGraphicsElement.getBBox documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getBBox MDN SVGGraphicsElement.getBBox documentation>
 getBBox_ :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m ()
-getBBox_ self
-  = liftDOM (void ((toSVGGraphicsElement self) ^. jsf "getBBox" ()))
+getBBox_ self = liftDOM (void ((Types.toSVGGraphicsElement self) ^. jsf "getBBox" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getCTM Mozilla SVGGraphicsElement.getCTM documentation> 
-getCTM ::
-       (MonadDOM m, IsSVGGraphicsElement self) => self -> m SVGMatrix
-getCTM self
-  = liftDOM
-      (((toSVGGraphicsElement self) ^. jsf "getCTM" ()) >>=
-         fromJSValUnchecked)
+-- | <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 ((((Types.toSVGGraphicsElement self) ^. jsf "getBBox" [P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getCTM Mozilla SVGGraphicsElement.getCTM documentation> 
+-- | <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 ((Types.toSVGGraphicsElement self) ^. jsf "getBBox" [P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 ((((Types.toSVGGraphicsElement self) ^. jsf "getCTM" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getCTM MDN SVGGraphicsElement.getCTM documentation>
 getCTM_ :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m ()
-getCTM_ self
-  = liftDOM (void ((toSVGGraphicsElement self) ^. jsf "getCTM" ()))
+getCTM_ self = liftDOM (void ((Types.toSVGGraphicsElement self) ^. jsf "getCTM" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getScreenCTM Mozilla SVGGraphicsElement.getScreenCTM documentation> 
-getScreenCTM ::
-             (MonadDOM m, IsSVGGraphicsElement self) => self -> m SVGMatrix
-getScreenCTM self
-  = liftDOM
-      (((toSVGGraphicsElement self) ^. jsf "getScreenCTM" ()) >>=
-         fromJSValUnchecked)
+-- | <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 (((((Types.toSVGGraphicsElement self) ^. jsf "getCTM" ()) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getScreenCTM Mozilla SVGGraphicsElement.getScreenCTM documentation> 
-getScreenCTM_ ::
-              (MonadDOM m, IsSVGGraphicsElement self) => self -> m ()
-getScreenCTM_ self
-  = liftDOM
-      (void ((toSVGGraphicsElement self) ^. jsf "getScreenCTM" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getCTM MDN SVGGraphicsElement.getCTM documentation>
+getCTMUnchecked :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m DOMMatrix
+getCTMUnchecked self = liftDOM ((((Types.toSVGGraphicsElement self) ^. jsf "getCTM" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getTransformToElement Mozilla SVGGraphicsElement.getTransformToElement documentation> 
-getTransformToElement ::
-                      (MonadDOM m, IsSVGGraphicsElement self, IsSVGElement element) =>
-                        self -> Maybe element -> m SVGMatrix
-getTransformToElement self element
-  = liftDOM
-      (((toSVGGraphicsElement self) ^. jsf "getTransformToElement"
-          [toJSVal element])
-         >>= fromJSValUnchecked)
+-- | <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 ((((Types.toSVGGraphicsElement self) ^. jsf "getScreenCTM" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getTransformToElement Mozilla SVGGraphicsElement.getTransformToElement documentation> 
-getTransformToElement_ ::
-                       (MonadDOM m, IsSVGGraphicsElement self, IsSVGElement element) =>
-                         self -> Maybe element -> m ()
-getTransformToElement_ self element
-  = liftDOM
-      (void
-         ((toSVGGraphicsElement self) ^. jsf "getTransformToElement"
-            [toJSVal element]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getScreenCTM MDN SVGGraphicsElement.getScreenCTM documentation>
+getScreenCTM_ :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m ()
+getScreenCTM_ self = liftDOM (void ((Types.toSVGGraphicsElement self) ^. jsf "getScreenCTM" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.transform Mozilla SVGGraphicsElement.transform documentation> 
-getTransform ::
-             (MonadDOM m, IsSVGGraphicsElement self) =>
-               self -> m SVGAnimatedTransformList
-getTransform self
-  = liftDOM
-      (((toSVGGraphicsElement self) ^. js "transform") >>=
-         fromJSValUnchecked)
+-- | <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 (((((Types.toSVGGraphicsElement self) ^. jsf "getScreenCTM" ()) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.nearestViewportElement Mozilla SVGGraphicsElement.nearestViewportElement documentation> 
-getNearestViewportElement ::
-                          (MonadDOM m, IsSVGGraphicsElement self) => self -> m SVGElement
-getNearestViewportElement self
-  = liftDOM
-      (((toSVGGraphicsElement self) ^. js "nearestViewportElement") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/getScreenCTM MDN SVGGraphicsElement.getScreenCTM documentation>
+getScreenCTMUnchecked :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m DOMMatrix
+getScreenCTMUnchecked self = liftDOM ((((Types.toSVGGraphicsElement self) ^. jsf "getScreenCTM" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.farthestViewportElement Mozilla SVGGraphicsElement.farthestViewportElement documentation> 
-getFarthestViewportElement ::
-                           (MonadDOM m, IsSVGGraphicsElement self) => self -> m SVGElement
-getFarthestViewportElement self
-  = liftDOM
-      (((toSVGGraphicsElement self) ^. js "farthestViewportElement") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGGraphicsElement/transform MDN SVGGraphicsElement.transform documentation>
+getTransform :: (MonadDOM m, IsSVGGraphicsElement self) => self -> m SVGAnimatedTransformList
+getTransform self = liftDOM ((((Types.toSVGGraphicsElement self) ^. js "transform") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGImageElement.hs b/src/JSDOM/Generated/SVGImageElement.hs
--- a/src/JSDOM/Generated/SVGImageElement.hs
+++ b/src/JSDOM/Generated/SVGImageElement.hs
@@ -1,46 +1,52 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGImageElement
-       (getX, getY, getWidth, getHeight, getPreserveAspectRatio,
-        SVGImageElement(..), gTypeSVGImageElement)
+       (getX, getY, getWidth, getHeight, getPreserveAspectRatio, setCrossOrigin, getCrossOrigin, getCrossOriginUnsafe, getCrossOriginUnchecked, SVGImageElement(..), gTypeSVGImageElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.x Mozilla SVGImageElement.x documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGImageElement/x MDN SVGImageElement.x documentation>
 getX :: (MonadDOM m) => SVGImageElement -> m SVGAnimatedLength
-getX self = liftDOM ((self ^. js "x") >>= fromJSValUnchecked)
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.y Mozilla SVGImageElement.y documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGImageElement/y MDN SVGImageElement.y documentation>
 getY :: (MonadDOM m) => SVGImageElement -> m SVGAnimatedLength
-getY self = liftDOM ((self ^. js "y") >>= fromJSValUnchecked)
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.width Mozilla SVGImageElement.width documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGImageElement/width MDN SVGImageElement.width documentation>
 getWidth :: (MonadDOM m) => SVGImageElement -> m SVGAnimatedLength
-getWidth self
-  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.height Mozilla SVGImageElement.height documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGImageElement/height MDN SVGImageElement.height documentation>
 getHeight :: (MonadDOM m) => SVGImageElement -> m SVGAnimatedLength
-getHeight self
-  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.preserveAspectRatio Mozilla SVGImageElement.preserveAspectRatio documentation> 
-getPreserveAspectRatio ::
-                       (MonadDOM m) => SVGImageElement -> m SVGAnimatedPreserveAspectRatio
-getPreserveAspectRatio self
-  = liftDOM
-      ((self ^. js "preserveAspectRatio") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGImageElement/preserveAspectRatio MDN SVGImageElement.preserveAspectRatio documentation>
+getPreserveAspectRatio :: (MonadDOM m) => SVGImageElement -> m SVGAnimatedPreserveAspectRatio
+getPreserveAspectRatio self = liftDOM (((self ^. js "preserveAspectRatio") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "crossOrigin" (toJSVal val)))
+
+-- | <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 (((self ^. js "crossOrigin") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "crossOrigin") >>= fromMaybeJSString) >>= 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 (((self ^. js "crossOrigin") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGLength.hs b/src/JSDOM/Generated/SVGLength.hs
--- a/src/JSDOM/Generated/SVGLength.hs
+++ b/src/JSDOM/Generated/SVGLength.hs
@@ -1,94 +1,74 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGLength
-       (newValueSpecifiedUnits, 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, getUnitType, setValue, getValue,
-        setValueInSpecifiedUnits, getValueInSpecifiedUnits,
-        setValueAsString, getValueAsString, SVGLength(..), gTypeSVGLength)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.newValueSpecifiedUnits Mozilla SVGLength.newValueSpecifiedUnits documentation> 
-newValueSpecifiedUnits ::
-                       (MonadDOM m) => SVGLength -> Word -> Float -> m ()
-newValueSpecifiedUnits self unitType valueInSpecifiedUnits
-  = liftDOM
-      (void
-         (self ^. jsf "newValueSpecifiedUnits"
-            [toJSVal unitType, toJSVal valueInSpecifiedUnits]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLength/convertToSpecifiedUnits MDN SVGLength.convertToSpecifiedUnits documentation>
+convertToSpecifiedUnits :: (MonadDOM m) => SVGLength -> Word -> m ()
+convertToSpecifiedUnits self unitType = liftDOM (void (self ^. jsf "convertToSpecifiedUnits" [toJSVal unitType]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.convertToSpecifiedUnits Mozilla SVGLength.convertToSpecifiedUnits documentation> 
-convertToSpecifiedUnits ::
-                        (MonadDOM m) => SVGLength -> Word -> m ()
-convertToSpecifiedUnits self unitType
-  = liftDOM
-      (void (self ^. jsf "convertToSpecifiedUnits" [toJSVal 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
+-- | <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 (self ^. jsf "newValueSpecifiedUnits" [toJSVal unitType, toJSVal valueInSpecifiedUnits]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.unitType Mozilla SVGLength.unitType documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLength/unitType MDN SVGLength.unitType documentation>
 getUnitType :: (MonadDOM m) => SVGLength -> m Word
-getUnitType self
-  = liftDOM (round <$> ((self ^. js "unitType") >>= valToNumber))
+getUnitType self = liftDOM ((P.round <$> ((self ^. js "unitType") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.value Mozilla SVGLength.value documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLength/value MDN SVGLength.value documentation>
 setValue :: (MonadDOM m) => SVGLength -> Float -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+setValue self val = liftDOM (void (self ^. jss "value" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.value Mozilla SVGLength.value documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLength/value MDN SVGLength.value documentation>
 getValue :: (MonadDOM m) => SVGLength -> m Float
-getValue self
-  = liftDOM (realToFrac <$> ((self ^. js "value") >>= valToNumber))
+getValue self = liftDOM ((P.realToFrac <$> ((self ^. js "value") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueInSpecifiedUnits Mozilla SVGLength.valueInSpecifiedUnits documentation> 
-setValueInSpecifiedUnits ::
-                         (MonadDOM m) => SVGLength -> Float -> m ()
-setValueInSpecifiedUnits self val
-  = liftDOM (self ^. jss "valueInSpecifiedUnits" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLength/valueInSpecifiedUnits MDN SVGLength.valueInSpecifiedUnits documentation>
+setValueInSpecifiedUnits :: (MonadDOM m) => SVGLength -> Float -> m ()
+setValueInSpecifiedUnits self val = liftDOM (void (self ^. jss "valueInSpecifiedUnits" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueInSpecifiedUnits Mozilla SVGLength.valueInSpecifiedUnits documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLength/valueInSpecifiedUnits MDN SVGLength.valueInSpecifiedUnits documentation>
 getValueInSpecifiedUnits :: (MonadDOM m) => SVGLength -> m Float
-getValueInSpecifiedUnits self
-  = liftDOM
-      (realToFrac <$>
-         ((self ^. js "valueInSpecifiedUnits") >>= valToNumber))
+getValueInSpecifiedUnits self = liftDOM ((P.realToFrac <$> ((self ^. js "valueInSpecifiedUnits") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueAsString Mozilla SVGLength.valueAsString documentation> 
-setValueAsString ::
-                 (MonadDOM m, ToJSString val) => SVGLength -> val -> m ()
-setValueAsString self val
-  = liftDOM (self ^. jss "valueAsString" (toJSVal val))
+-- | <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 (self ^. jss "valueAsString" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueAsString Mozilla SVGLength.valueAsString documentation> 
-getValueAsString ::
-                 (MonadDOM m, FromJSString result) => SVGLength -> m result
-getValueAsString self
-  = liftDOM ((self ^. js "valueAsString") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLength/valueAsString MDN SVGLength.valueAsString documentation>
+getValueAsString :: (MonadDOM m, FromJSString result) => SVGLength -> m result
+getValueAsString self = liftDOM (((self ^. js "valueAsString") >>= fromJSValUnchecked))
+
+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/JSDOM/Generated/SVGLengthList.hs b/src/JSDOM/Generated/SVGLengthList.hs
--- a/src/JSDOM/Generated/SVGLengthList.hs
+++ b/src/JSDOM/Generated/SVGLengthList.hs
@@ -1,110 +1,76 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGLengthList
-       (clear, initialize, initialize_, getItem, getItem_,
-        insertItemBefore, insertItemBefore_, replaceItem, replaceItem_,
-        removeItem, removeItem_, appendItem, appendItem_, getNumberOfItems,
-        SVGLengthList(..), gTypeSVGLengthList)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.clear Mozilla SVGLengthList.clear documentation> 
-clear :: (MonadDOM m) => SVGLengthList -> m ()
-clear self = liftDOM (void (self ^. jsf "clear" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/appendItem MDN SVGLengthList.appendItem documentation>
+appendItem :: (MonadDOM m) => SVGLengthList -> SVGLength -> m SVGLength
+appendItem self newItem = liftDOM (((self ^. jsf "appendItem" [toJSVal newItem]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.initialize Mozilla SVGLengthList.initialize documentation> 
-initialize ::
-           (MonadDOM m) => SVGLengthList -> SVGLength -> m SVGLength
-initialize self item
-  = liftDOM
-      ((self ^. jsf "initialize" [toJSVal item]) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/appendItem MDN SVGLengthList.appendItem documentation>
+appendItem_ :: (MonadDOM m) => SVGLengthList -> SVGLength -> m ()
+appendItem_ self newItem = liftDOM (void (self ^. jsf "appendItem" [toJSVal newItem]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.initialize Mozilla SVGLengthList.initialize documentation> 
-initialize_ :: (MonadDOM m) => SVGLengthList -> SVGLength -> m ()
-initialize_ self item
-  = liftDOM (void (self ^. jsf "initialize" [toJSVal item]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/clear MDN SVGLengthList.clear documentation>
+clear :: (MonadDOM m) => SVGLengthList -> m ()
+clear self = liftDOM (void (self ^. jsf "clear" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.getItem Mozilla SVGLengthList.getItem documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/getItem MDN SVGLengthList.getItem documentation>
 getItem :: (MonadDOM m) => SVGLengthList -> Word -> m SVGLength
-getItem self index
-  = liftDOM
-      ((self ^. jsf "getItem" [toJSVal index]) >>= fromJSValUnchecked)
+getItem self index = liftDOM (((self ^. jsf "getItem" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.getItem Mozilla SVGLengthList.getItem documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/getItem MDN SVGLengthList.getItem documentation>
 getItem_ :: (MonadDOM m) => SVGLengthList -> Word -> m ()
-getItem_ self index
-  = liftDOM (void (self ^. jsf "getItem" [toJSVal index]))
+getItem_ self index = liftDOM (void (self ^. jsf "getItem" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.insertItemBefore Mozilla SVGLengthList.insertItemBefore documentation> 
-insertItemBefore ::
-                 (MonadDOM m) => SVGLengthList -> SVGLength -> Word -> m SVGLength
-insertItemBefore self item index
-  = liftDOM
-      ((self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/initialize MDN SVGLengthList.initialize documentation>
+initialize :: (MonadDOM m) => SVGLengthList -> SVGLength -> m SVGLength
+initialize self newItem = liftDOM (((self ^. jsf "initialize" [toJSVal newItem]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.insertItemBefore Mozilla SVGLengthList.insertItemBefore documentation> 
-insertItemBefore_ ::
-                  (MonadDOM m) => SVGLengthList -> SVGLength -> Word -> m ()
-insertItemBefore_ self item index
-  = liftDOM
-      (void
-         (self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/initialize MDN SVGLengthList.initialize documentation>
+initialize_ :: (MonadDOM m) => SVGLengthList -> SVGLength -> m ()
+initialize_ self newItem = liftDOM (void (self ^. jsf "initialize" [toJSVal newItem]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.replaceItem Mozilla SVGLengthList.replaceItem documentation> 
-replaceItem ::
-            (MonadDOM m) => SVGLengthList -> SVGLength -> Word -> m SVGLength
-replaceItem self item index
-  = liftDOM
-      ((self ^. jsf "replaceItem" [toJSVal item, toJSVal index]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "insertItemBefore" [toJSVal newItem, toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.replaceItem Mozilla SVGLengthList.replaceItem documentation> 
-replaceItem_ ::
-             (MonadDOM m) => SVGLengthList -> SVGLength -> Word -> m ()
-replaceItem_ self item index
-  = liftDOM
-      (void (self ^. jsf "replaceItem" [toJSVal item, toJSVal 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 (self ^. jsf "insertItemBefore" [toJSVal newItem, toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.removeItem Mozilla SVGLengthList.removeItem documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/removeItem MDN SVGLengthList.removeItem documentation>
 removeItem :: (MonadDOM m) => SVGLengthList -> Word -> m SVGLength
-removeItem self index
-  = liftDOM
-      ((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSValUnchecked)
+removeItem self index = liftDOM (((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.removeItem Mozilla SVGLengthList.removeItem documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/removeItem MDN SVGLengthList.removeItem documentation>
 removeItem_ :: (MonadDOM m) => SVGLengthList -> Word -> m ()
-removeItem_ self index
-  = liftDOM (void (self ^. jsf "removeItem" [toJSVal index]))
+removeItem_ self index = liftDOM (void (self ^. jsf "removeItem" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.appendItem Mozilla SVGLengthList.appendItem documentation> 
-appendItem ::
-           (MonadDOM m) => SVGLengthList -> SVGLength -> m SVGLength
-appendItem self item
-  = liftDOM
-      ((self ^. jsf "appendItem" [toJSVal item]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "replaceItem" [toJSVal newItem, toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.appendItem Mozilla SVGLengthList.appendItem documentation> 
-appendItem_ :: (MonadDOM m) => SVGLengthList -> SVGLength -> m ()
-appendItem_ self item
-  = liftDOM (void (self ^. jsf "appendItem" [toJSVal 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 (self ^. jsf "replaceItem" [toJSVal newItem, toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.numberOfItems Mozilla SVGLengthList.numberOfItems documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/length MDN SVGLengthList.length documentation>
+getLength :: (MonadDOM m) => SVGLengthList -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLengthList/numberOfItems MDN SVGLengthList.numberOfItems documentation>
 getNumberOfItems :: (MonadDOM m) => SVGLengthList -> m Word
-getNumberOfItems self
-  = liftDOM
-      (round <$> ((self ^. js "numberOfItems") >>= valToNumber))
+getNumberOfItems self = liftDOM ((P.round <$> ((self ^. js "numberOfItems") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/SVGLineElement.hs b/src/JSDOM/Generated/SVGLineElement.hs
--- a/src/JSDOM/Generated/SVGLineElement.hs
+++ b/src/JSDOM/Generated/SVGLineElement.hs
@@ -1,37 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGLineElement
-       (getX1, getY1, getX2, getY2, SVGLineElement(..),
-        gTypeSVGLineElement)
+       (getX1, getY1, getX2, getY2, SVGLineElement(..), gTypeSVGLineElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.x1 Mozilla SVGLineElement.x1 documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLineElement/x1 MDN SVGLineElement.x1 documentation>
 getX1 :: (MonadDOM m) => SVGLineElement -> m SVGAnimatedLength
-getX1 self = liftDOM ((self ^. js "x1") >>= fromJSValUnchecked)
+getX1 self = liftDOM (((self ^. js "x1") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.y1 Mozilla SVGLineElement.y1 documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLineElement/y1 MDN SVGLineElement.y1 documentation>
 getY1 :: (MonadDOM m) => SVGLineElement -> m SVGAnimatedLength
-getY1 self = liftDOM ((self ^. js "y1") >>= fromJSValUnchecked)
+getY1 self = liftDOM (((self ^. js "y1") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.x2 Mozilla SVGLineElement.x2 documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLineElement/x2 MDN SVGLineElement.x2 documentation>
 getX2 :: (MonadDOM m) => SVGLineElement -> m SVGAnimatedLength
-getX2 self = liftDOM ((self ^. js "x2") >>= fromJSValUnchecked)
+getX2 self = liftDOM (((self ^. js "x2") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.y2 Mozilla SVGLineElement.y2 documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLineElement/y2 MDN SVGLineElement.y2 documentation>
 getY2 :: (MonadDOM m) => SVGLineElement -> m SVGAnimatedLength
-getY2 self = liftDOM ((self ^. js "y2") >>= fromJSValUnchecked)
+getY2 self = liftDOM (((self ^. js "y2") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGLinearGradientElement.hs b/src/JSDOM/Generated/SVGLinearGradientElement.hs
--- a/src/JSDOM/Generated/SVGLinearGradientElement.hs
+++ b/src/JSDOM/Generated/SVGLinearGradientElement.hs
@@ -1,41 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGLinearGradientElement
-       (getX1, getY1, getX2, getY2, SVGLinearGradientElement(..),
-        gTypeSVGLinearGradientElement)
+       (getX1, getY1, getX2, getY2, SVGLinearGradientElement(..), gTypeSVGLinearGradientElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.x1 Mozilla SVGLinearGradientElement.x1 documentation> 
-getX1 ::
-      (MonadDOM m) => SVGLinearGradientElement -> m SVGAnimatedLength
-getX1 self = liftDOM ((self ^. js "x1") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLinearGradientElement/x1 MDN SVGLinearGradientElement.x1 documentation>
+getX1 :: (MonadDOM m) => SVGLinearGradientElement -> m SVGAnimatedLength
+getX1 self = liftDOM (((self ^. js "x1") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.y1 Mozilla SVGLinearGradientElement.y1 documentation> 
-getY1 ::
-      (MonadDOM m) => SVGLinearGradientElement -> m SVGAnimatedLength
-getY1 self = liftDOM ((self ^. js "y1") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLinearGradientElement/y1 MDN SVGLinearGradientElement.y1 documentation>
+getY1 :: (MonadDOM m) => SVGLinearGradientElement -> m SVGAnimatedLength
+getY1 self = liftDOM (((self ^. js "y1") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.x2 Mozilla SVGLinearGradientElement.x2 documentation> 
-getX2 ::
-      (MonadDOM m) => SVGLinearGradientElement -> m SVGAnimatedLength
-getX2 self = liftDOM ((self ^. js "x2") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLinearGradientElement/x2 MDN SVGLinearGradientElement.x2 documentation>
+getX2 :: (MonadDOM m) => SVGLinearGradientElement -> m SVGAnimatedLength
+getX2 self = liftDOM (((self ^. js "x2") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.y2 Mozilla SVGLinearGradientElement.y2 documentation> 
-getY2 ::
-      (MonadDOM m) => SVGLinearGradientElement -> m SVGAnimatedLength
-getY2 self = liftDOM ((self ^. js "y2") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGLinearGradientElement/y2 MDN SVGLinearGradientElement.y2 documentation>
+getY2 :: (MonadDOM m) => SVGLinearGradientElement -> m SVGAnimatedLength
+getY2 self = liftDOM (((self ^. js "y2") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGMPathElement.hs b/src/JSDOM/Generated/SVGMPathElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGMPathElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from svg-animations (webref). Do not edit.
+module JSDOM.Generated.SVGMPathElement
+       (SVGMPathElement(..), gTypeSVGMPathElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGMarkerElement.hs b/src/JSDOM/Generated/SVGMarkerElement.hs
--- a/src/JSDOM/Generated/SVGMarkerElement.hs
+++ b/src/JSDOM/Generated/SVGMarkerElement.hs
@@ -1,82 +1,66 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGMarkerElement
-       (setOrientToAuto, 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, getRefX, getRefY, getMarkerUnits,
-        getMarkerWidth, getMarkerHeight, getOrientType, getOrientAngle,
-        SVGMarkerElement(..), gTypeSVGMarkerElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.setOrientToAuto Mozilla SVGMarkerElement.setOrientToAuto documentation> 
-setOrientToAuto :: (MonadDOM m) => SVGMarkerElement -> m ()
-setOrientToAuto self
-  = liftDOM (void (self ^. jsf "setOrientToAuto" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/setOrientToAngle MDN SVGMarkerElement.setOrientToAngle documentation>
+setOrientToAngle :: (MonadDOM m) => SVGMarkerElement -> SVGAngle -> m ()
+setOrientToAngle self angle = liftDOM (void (self ^. jsf "setOrientToAngle" [toJSVal angle]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.setOrientToAngle Mozilla SVGMarkerElement.setOrientToAngle documentation> 
-setOrientToAngle ::
-                 (MonadDOM m) => SVGMarkerElement -> SVGAngle -> m ()
-setOrientToAngle self angle
-  = liftDOM (void (self ^. jsf "setOrientToAngle" [toJSVal 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
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/setOrientToAuto MDN SVGMarkerElement.setOrientToAuto documentation>
+setOrientToAuto :: (MonadDOM m) => SVGMarkerElement -> m ()
+setOrientToAuto self = liftDOM (void (self ^. jsf "setOrientToAuto" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.refX Mozilla SVGMarkerElement.refX documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/refX MDN SVGMarkerElement.refX documentation>
 getRefX :: (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedLength
-getRefX self = liftDOM ((self ^. js "refX") >>= fromJSValUnchecked)
+getRefX self = liftDOM (((self ^. js "refX") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.refY Mozilla SVGMarkerElement.refY documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/refY MDN SVGMarkerElement.refY documentation>
 getRefY :: (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedLength
-getRefY self = liftDOM ((self ^. js "refY") >>= fromJSValUnchecked)
+getRefY self = liftDOM (((self ^. js "refY") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerUnits Mozilla SVGMarkerElement.markerUnits documentation> 
-getMarkerUnits ::
-               (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedEnumeration
-getMarkerUnits self
-  = liftDOM ((self ^. js "markerUnits") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/markerUnits MDN SVGMarkerElement.markerUnits documentation>
+getMarkerUnits :: (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedEnumeration
+getMarkerUnits self = liftDOM (((self ^. js "markerUnits") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerWidth Mozilla SVGMarkerElement.markerWidth documentation> 
-getMarkerWidth ::
-               (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedLength
-getMarkerWidth self
-  = liftDOM ((self ^. js "markerWidth") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/markerWidth MDN SVGMarkerElement.markerWidth documentation>
+getMarkerWidth :: (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedLength
+getMarkerWidth self = liftDOM (((self ^. js "markerWidth") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerHeight Mozilla SVGMarkerElement.markerHeight documentation> 
-getMarkerHeight ::
-                (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedLength
-getMarkerHeight self
-  = liftDOM ((self ^. js "markerHeight") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/markerHeight MDN SVGMarkerElement.markerHeight documentation>
+getMarkerHeight :: (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedLength
+getMarkerHeight self = liftDOM (((self ^. js "markerHeight") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.orientType Mozilla SVGMarkerElement.orientType documentation> 
-getOrientType ::
-              (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedEnumeration
-getOrientType self
-  = liftDOM ((self ^. js "orientType") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/orientType MDN SVGMarkerElement.orientType documentation>
+getOrientType :: (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedEnumeration
+getOrientType self = liftDOM (((self ^. js "orientType") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.orientAngle Mozilla SVGMarkerElement.orientAngle documentation> 
-getOrientAngle ::
-               (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedAngle
-getOrientAngle self
-  = liftDOM ((self ^. js "orientAngle") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMarkerElement/orientAngle MDN SVGMarkerElement.orientAngle documentation>
+getOrientAngle :: (MonadDOM m) => SVGMarkerElement -> m SVGAnimatedAngle
+getOrientAngle self = liftDOM (((self ^. js "orientAngle") >>= fromJSValUnchecked))
+
+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/JSDOM/Generated/SVGMaskElement.hs b/src/JSDOM/Generated/SVGMaskElement.hs
--- a/src/JSDOM/Generated/SVGMaskElement.hs
+++ b/src/JSDOM/Generated/SVGMaskElement.hs
@@ -1,51 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-masking-1 (webref). Do not edit.
 module JSDOM.Generated.SVGMaskElement
-       (getMaskUnits, getMaskContentUnits, getX, getY, getWidth,
-        getHeight, SVGMaskElement(..), gTypeSVGMaskElement)
+       (getMaskUnits, getMaskContentUnits, getX, getY, getWidth, getHeight, SVGMaskElement(..), gTypeSVGMaskElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.maskUnits Mozilla SVGMaskElement.maskUnits documentation> 
-getMaskUnits ::
-             (MonadDOM m) => SVGMaskElement -> m SVGAnimatedEnumeration
-getMaskUnits self
-  = liftDOM ((self ^. js "maskUnits") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMaskElement/maskUnits MDN SVGMaskElement.maskUnits documentation>
+getMaskUnits :: (MonadDOM m) => SVGMaskElement -> m SVGAnimatedEnumeration
+getMaskUnits self = liftDOM (((self ^. js "maskUnits") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.maskContentUnits Mozilla SVGMaskElement.maskContentUnits documentation> 
-getMaskContentUnits ::
-                    (MonadDOM m) => SVGMaskElement -> m SVGAnimatedEnumeration
-getMaskContentUnits self
-  = liftDOM ((self ^. js "maskContentUnits") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMaskElement/maskContentUnits MDN SVGMaskElement.maskContentUnits documentation>
+getMaskContentUnits :: (MonadDOM m) => SVGMaskElement -> m SVGAnimatedEnumeration
+getMaskContentUnits self = liftDOM (((self ^. js "maskContentUnits") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.x Mozilla SVGMaskElement.x documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMaskElement/x MDN SVGMaskElement.x documentation>
 getX :: (MonadDOM m) => SVGMaskElement -> m SVGAnimatedLength
-getX self = liftDOM ((self ^. js "x") >>= fromJSValUnchecked)
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.y Mozilla SVGMaskElement.y documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMaskElement/y MDN SVGMaskElement.y documentation>
 getY :: (MonadDOM m) => SVGMaskElement -> m SVGAnimatedLength
-getY self = liftDOM ((self ^. js "y") >>= fromJSValUnchecked)
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.width Mozilla SVGMaskElement.width documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMaskElement/width MDN SVGMaskElement.width documentation>
 getWidth :: (MonadDOM m) => SVGMaskElement -> m SVGAnimatedLength
-getWidth self
-  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.height Mozilla SVGMaskElement.height documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGMaskElement/height MDN SVGMaskElement.height documentation>
 getHeight :: (MonadDOM m) => SVGMaskElement -> m SVGAnimatedLength
-getHeight self
-  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGMatrix.hs b/src/JSDOM/Generated/SVGMatrix.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGMatrix.hs
+++ /dev/null
@@ -1,202 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGMatrix
-       (multiply, multiply_, inverse, inverse_, translate, translate_,
-        scale, scale_, scaleNonUniform, scaleNonUniform_, rotate, rotate_,
-        rotateFromVector, rotateFromVector_, flipX, flipX_, flipY, flipY_,
-        skewX, skewX_, skewY, skewY_, setA, getA, setB, getB, setC, getC,
-        setD, getD, setE, getE, setF, getF, SVGMatrix(..), gTypeSVGMatrix)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.multiply Mozilla SVGMatrix.multiply documentation> 
-multiply :: (MonadDOM m) => SVGMatrix -> SVGMatrix -> m SVGMatrix
-multiply self secondMatrix
-  = liftDOM
-      ((self ^. jsf "multiply" [toJSVal secondMatrix]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.multiply Mozilla SVGMatrix.multiply documentation> 
-multiply_ :: (MonadDOM m) => SVGMatrix -> SVGMatrix -> m ()
-multiply_ self secondMatrix
-  = liftDOM (void (self ^. jsf "multiply" [toJSVal secondMatrix]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.inverse Mozilla SVGMatrix.inverse documentation> 
-inverse :: (MonadDOM m) => SVGMatrix -> m SVGMatrix
-inverse self
-  = liftDOM ((self ^. jsf "inverse" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.inverse Mozilla SVGMatrix.inverse documentation> 
-inverse_ :: (MonadDOM m) => SVGMatrix -> m ()
-inverse_ self = liftDOM (void (self ^. jsf "inverse" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.translate Mozilla SVGMatrix.translate documentation> 
-translate ::
-          (MonadDOM m) => SVGMatrix -> Float -> Float -> m SVGMatrix
-translate self x y
-  = liftDOM
-      ((self ^. jsf "translate" [toJSVal x, toJSVal y]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.translate Mozilla SVGMatrix.translate documentation> 
-translate_ :: (MonadDOM m) => SVGMatrix -> Float -> Float -> m ()
-translate_ self x y
-  = liftDOM (void (self ^. jsf "translate" [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scale Mozilla SVGMatrix.scale documentation> 
-scale :: (MonadDOM m) => SVGMatrix -> Float -> m SVGMatrix
-scale self scaleFactor
-  = liftDOM
-      ((self ^. jsf "scale" [toJSVal scaleFactor]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scale Mozilla SVGMatrix.scale documentation> 
-scale_ :: (MonadDOM m) => SVGMatrix -> Float -> m ()
-scale_ self scaleFactor
-  = liftDOM (void (self ^. jsf "scale" [toJSVal scaleFactor]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scaleNonUniform Mozilla SVGMatrix.scaleNonUniform documentation> 
-scaleNonUniform ::
-                (MonadDOM m) => SVGMatrix -> Float -> Float -> m SVGMatrix
-scaleNonUniform self scaleFactorX scaleFactorY
-  = liftDOM
-      ((self ^. jsf "scaleNonUniform"
-          [toJSVal scaleFactorX, toJSVal scaleFactorY])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scaleNonUniform Mozilla SVGMatrix.scaleNonUniform documentation> 
-scaleNonUniform_ ::
-                 (MonadDOM m) => SVGMatrix -> Float -> Float -> m ()
-scaleNonUniform_ self scaleFactorX scaleFactorY
-  = liftDOM
-      (void
-         (self ^. jsf "scaleNonUniform"
-            [toJSVal scaleFactorX, toJSVal scaleFactorY]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotate Mozilla SVGMatrix.rotate documentation> 
-rotate :: (MonadDOM m) => SVGMatrix -> Float -> m SVGMatrix
-rotate self angle
-  = liftDOM
-      ((self ^. jsf "rotate" [toJSVal angle]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotate Mozilla SVGMatrix.rotate documentation> 
-rotate_ :: (MonadDOM m) => SVGMatrix -> Float -> m ()
-rotate_ self angle
-  = liftDOM (void (self ^. jsf "rotate" [toJSVal angle]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotateFromVector Mozilla SVGMatrix.rotateFromVector documentation> 
-rotateFromVector ::
-                 (MonadDOM m) => SVGMatrix -> Float -> Float -> m SVGMatrix
-rotateFromVector self x y
-  = liftDOM
-      ((self ^. jsf "rotateFromVector" [toJSVal x, toJSVal y]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotateFromVector Mozilla SVGMatrix.rotateFromVector documentation> 
-rotateFromVector_ ::
-                  (MonadDOM m) => SVGMatrix -> Float -> Float -> m ()
-rotateFromVector_ self x y
-  = liftDOM
-      (void (self ^. jsf "rotateFromVector" [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipX Mozilla SVGMatrix.flipX documentation> 
-flipX :: (MonadDOM m) => SVGMatrix -> m SVGMatrix
-flipX self
-  = liftDOM ((self ^. jsf "flipX" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipX Mozilla SVGMatrix.flipX documentation> 
-flipX_ :: (MonadDOM m) => SVGMatrix -> m ()
-flipX_ self = liftDOM (void (self ^. jsf "flipX" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipY Mozilla SVGMatrix.flipY documentation> 
-flipY :: (MonadDOM m) => SVGMatrix -> m SVGMatrix
-flipY self
-  = liftDOM ((self ^. jsf "flipY" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipY Mozilla SVGMatrix.flipY documentation> 
-flipY_ :: (MonadDOM m) => SVGMatrix -> m ()
-flipY_ self = liftDOM (void (self ^. jsf "flipY" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewX Mozilla SVGMatrix.skewX documentation> 
-skewX :: (MonadDOM m) => SVGMatrix -> Float -> m SVGMatrix
-skewX self angle
-  = liftDOM
-      ((self ^. jsf "skewX" [toJSVal angle]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewX Mozilla SVGMatrix.skewX documentation> 
-skewX_ :: (MonadDOM m) => SVGMatrix -> Float -> m ()
-skewX_ self angle
-  = liftDOM (void (self ^. jsf "skewX" [toJSVal angle]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewY Mozilla SVGMatrix.skewY documentation> 
-skewY :: (MonadDOM m) => SVGMatrix -> Float -> m SVGMatrix
-skewY self angle
-  = liftDOM
-      ((self ^. jsf "skewY" [toJSVal angle]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewY Mozilla SVGMatrix.skewY documentation> 
-skewY_ :: (MonadDOM m) => SVGMatrix -> Float -> m ()
-skewY_ self angle
-  = liftDOM (void (self ^. jsf "skewY" [toJSVal angle]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.a Mozilla SVGMatrix.a documentation> 
-setA :: (MonadDOM m) => SVGMatrix -> Double -> m ()
-setA self val = liftDOM (self ^. jss "a" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.a Mozilla SVGMatrix.a documentation> 
-getA :: (MonadDOM m) => SVGMatrix -> m Double
-getA self = liftDOM ((self ^. js "a") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.b Mozilla SVGMatrix.b documentation> 
-setB :: (MonadDOM m) => SVGMatrix -> Double -> m ()
-setB self val = liftDOM (self ^. jss "b" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.b Mozilla SVGMatrix.b documentation> 
-getB :: (MonadDOM m) => SVGMatrix -> m Double
-getB self = liftDOM ((self ^. js "b") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.c Mozilla SVGMatrix.c documentation> 
-setC :: (MonadDOM m) => SVGMatrix -> Double -> m ()
-setC self val = liftDOM (self ^. jss "c" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.c Mozilla SVGMatrix.c documentation> 
-getC :: (MonadDOM m) => SVGMatrix -> m Double
-getC self = liftDOM ((self ^. js "c") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.d Mozilla SVGMatrix.d documentation> 
-setD :: (MonadDOM m) => SVGMatrix -> Double -> m ()
-setD self val = liftDOM (self ^. jss "d" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.d Mozilla SVGMatrix.d documentation> 
-getD :: (MonadDOM m) => SVGMatrix -> m Double
-getD self = liftDOM ((self ^. js "d") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.e Mozilla SVGMatrix.e documentation> 
-setE :: (MonadDOM m) => SVGMatrix -> Double -> m ()
-setE self val = liftDOM (self ^. jss "e" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.e Mozilla SVGMatrix.e documentation> 
-getE :: (MonadDOM m) => SVGMatrix -> m Double
-getE self = liftDOM ((self ^. js "e") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.f Mozilla SVGMatrix.f documentation> 
-setF :: (MonadDOM m) => SVGMatrix -> Double -> m ()
-setF self val = liftDOM (self ^. jss "f" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.f Mozilla SVGMatrix.f documentation> 
-getF :: (MonadDOM m) => SVGMatrix -> m Double
-getF self = liftDOM ((self ^. js "f") >>= valToNumber)
diff --git a/src/JSDOM/Generated/SVGMetadataElement.hs b/src/JSDOM/Generated/SVGMetadataElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGMetadataElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module JSDOM.Generated.SVGMetadataElement
+       (SVGMetadataElement(..), gTypeSVGMetadataElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGNumber.hs b/src/JSDOM/Generated/SVGNumber.hs
--- a/src/JSDOM/Generated/SVGNumber.hs
+++ b/src/JSDOM/Generated/SVGNumber.hs
@@ -1,28 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGNumber
-       (setValue, getValue, SVGNumber(..), gTypeSVGNumber) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (setValue, getValue, SVGNumber(..), gTypeSVGNumber)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumber.value Mozilla SVGNumber.value documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumber/value MDN SVGNumber.value documentation>
 setValue :: (MonadDOM m) => SVGNumber -> Float -> m ()
-setValue self val = liftDOM (self ^. jss "value" (toJSVal val))
+setValue self val = liftDOM (void (self ^. jss "value" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumber.value Mozilla SVGNumber.value documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumber/value MDN SVGNumber.value documentation>
 getValue :: (MonadDOM m) => SVGNumber -> m Float
-getValue self
-  = liftDOM (realToFrac <$> ((self ^. js "value") >>= valToNumber))
+getValue self = liftDOM ((P.realToFrac <$> ((self ^. js "value") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/SVGNumberList.hs b/src/JSDOM/Generated/SVGNumberList.hs
--- a/src/JSDOM/Generated/SVGNumberList.hs
+++ b/src/JSDOM/Generated/SVGNumberList.hs
@@ -1,110 +1,76 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGNumberList
-       (clear, initialize, initialize_, getItem, getItem_,
-        insertItemBefore, insertItemBefore_, replaceItem, replaceItem_,
-        removeItem, removeItem_, appendItem, appendItem_, getNumberOfItems,
-        SVGNumberList(..), gTypeSVGNumberList)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.clear Mozilla SVGNumberList.clear documentation> 
-clear :: (MonadDOM m) => SVGNumberList -> m ()
-clear self = liftDOM (void (self ^. jsf "clear" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/appendItem MDN SVGNumberList.appendItem documentation>
+appendItem :: (MonadDOM m) => SVGNumberList -> SVGNumber -> m SVGNumber
+appendItem self newItem = liftDOM (((self ^. jsf "appendItem" [toJSVal newItem]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.initialize Mozilla SVGNumberList.initialize documentation> 
-initialize ::
-           (MonadDOM m) => SVGNumberList -> SVGNumber -> m SVGNumber
-initialize self item
-  = liftDOM
-      ((self ^. jsf "initialize" [toJSVal item]) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/appendItem MDN SVGNumberList.appendItem documentation>
+appendItem_ :: (MonadDOM m) => SVGNumberList -> SVGNumber -> m ()
+appendItem_ self newItem = liftDOM (void (self ^. jsf "appendItem" [toJSVal newItem]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.initialize Mozilla SVGNumberList.initialize documentation> 
-initialize_ :: (MonadDOM m) => SVGNumberList -> SVGNumber -> m ()
-initialize_ self item
-  = liftDOM (void (self ^. jsf "initialize" [toJSVal item]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/clear MDN SVGNumberList.clear documentation>
+clear :: (MonadDOM m) => SVGNumberList -> m ()
+clear self = liftDOM (void (self ^. jsf "clear" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.getItem Mozilla SVGNumberList.getItem documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/getItem MDN SVGNumberList.getItem documentation>
 getItem :: (MonadDOM m) => SVGNumberList -> Word -> m SVGNumber
-getItem self index
-  = liftDOM
-      ((self ^. jsf "getItem" [toJSVal index]) >>= fromJSValUnchecked)
+getItem self index = liftDOM (((self ^. jsf "getItem" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.getItem Mozilla SVGNumberList.getItem documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/getItem MDN SVGNumberList.getItem documentation>
 getItem_ :: (MonadDOM m) => SVGNumberList -> Word -> m ()
-getItem_ self index
-  = liftDOM (void (self ^. jsf "getItem" [toJSVal index]))
+getItem_ self index = liftDOM (void (self ^. jsf "getItem" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.insertItemBefore Mozilla SVGNumberList.insertItemBefore documentation> 
-insertItemBefore ::
-                 (MonadDOM m) => SVGNumberList -> SVGNumber -> Word -> m SVGNumber
-insertItemBefore self item index
-  = liftDOM
-      ((self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/initialize MDN SVGNumberList.initialize documentation>
+initialize :: (MonadDOM m) => SVGNumberList -> SVGNumber -> m SVGNumber
+initialize self newItem = liftDOM (((self ^. jsf "initialize" [toJSVal newItem]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.insertItemBefore Mozilla SVGNumberList.insertItemBefore documentation> 
-insertItemBefore_ ::
-                  (MonadDOM m) => SVGNumberList -> SVGNumber -> Word -> m ()
-insertItemBefore_ self item index
-  = liftDOM
-      (void
-         (self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/initialize MDN SVGNumberList.initialize documentation>
+initialize_ :: (MonadDOM m) => SVGNumberList -> SVGNumber -> m ()
+initialize_ self newItem = liftDOM (void (self ^. jsf "initialize" [toJSVal newItem]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.replaceItem Mozilla SVGNumberList.replaceItem documentation> 
-replaceItem ::
-            (MonadDOM m) => SVGNumberList -> SVGNumber -> Word -> m SVGNumber
-replaceItem self item index
-  = liftDOM
-      ((self ^. jsf "replaceItem" [toJSVal item, toJSVal index]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "insertItemBefore" [toJSVal newItem, toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.replaceItem Mozilla SVGNumberList.replaceItem documentation> 
-replaceItem_ ::
-             (MonadDOM m) => SVGNumberList -> SVGNumber -> Word -> m ()
-replaceItem_ self item index
-  = liftDOM
-      (void (self ^. jsf "replaceItem" [toJSVal item, toJSVal 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 (self ^. jsf "insertItemBefore" [toJSVal newItem, toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.removeItem Mozilla SVGNumberList.removeItem documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/removeItem MDN SVGNumberList.removeItem documentation>
 removeItem :: (MonadDOM m) => SVGNumberList -> Word -> m SVGNumber
-removeItem self index
-  = liftDOM
-      ((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSValUnchecked)
+removeItem self index = liftDOM (((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.removeItem Mozilla SVGNumberList.removeItem documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/removeItem MDN SVGNumberList.removeItem documentation>
 removeItem_ :: (MonadDOM m) => SVGNumberList -> Word -> m ()
-removeItem_ self index
-  = liftDOM (void (self ^. jsf "removeItem" [toJSVal index]))
+removeItem_ self index = liftDOM (void (self ^. jsf "removeItem" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.appendItem Mozilla SVGNumberList.appendItem documentation> 
-appendItem ::
-           (MonadDOM m) => SVGNumberList -> SVGNumber -> m SVGNumber
-appendItem self item
-  = liftDOM
-      ((self ^. jsf "appendItem" [toJSVal item]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "replaceItem" [toJSVal newItem, toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.appendItem Mozilla SVGNumberList.appendItem documentation> 
-appendItem_ :: (MonadDOM m) => SVGNumberList -> SVGNumber -> m ()
-appendItem_ self item
-  = liftDOM (void (self ^. jsf "appendItem" [toJSVal 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 (self ^. jsf "replaceItem" [toJSVal newItem, toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.numberOfItems Mozilla SVGNumberList.numberOfItems documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/length MDN SVGNumberList.length documentation>
+getLength :: (MonadDOM m) => SVGNumberList -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGNumberList/numberOfItems MDN SVGNumberList.numberOfItems documentation>
 getNumberOfItems :: (MonadDOM m) => SVGNumberList -> m Word
-getNumberOfItems self
-  = liftDOM
-      (round <$> ((self ^. js "numberOfItems") >>= valToNumber))
+getNumberOfItems self = liftDOM ((P.round <$> ((self ^. js "numberOfItems") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/SVGPathElement.hs b/src/JSDOM/Generated/SVGPathElement.hs
--- a/src/JSDOM/Generated/SVGPathElement.hs
+++ b/src/JSDOM/Generated/SVGPathElement.hs
@@ -1,559 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from svg-paths (webref). Do not edit.
 module JSDOM.Generated.SVGPathElement
-       (getTotalLength, getTotalLength_, getPointAtLength,
-        getPointAtLength_, getPathSegAtLength, getPathSegAtLength_,
-        createSVGPathSegClosePath, createSVGPathSegClosePath_,
-        createSVGPathSegMovetoAbs, createSVGPathSegMovetoAbs_,
-        createSVGPathSegMovetoRel, createSVGPathSegMovetoRel_,
-        createSVGPathSegLinetoAbs, createSVGPathSegLinetoAbs_,
-        createSVGPathSegLinetoRel, createSVGPathSegLinetoRel_,
-        createSVGPathSegCurvetoCubicAbs, createSVGPathSegCurvetoCubicAbs_,
-        createSVGPathSegCurvetoCubicRel, createSVGPathSegCurvetoCubicRel_,
-        createSVGPathSegCurvetoQuadraticAbs,
-        createSVGPathSegCurvetoQuadraticAbs_,
-        createSVGPathSegCurvetoQuadraticRel,
-        createSVGPathSegCurvetoQuadraticRel_, createSVGPathSegArcAbs,
-        createSVGPathSegArcAbs_, createSVGPathSegArcRel,
-        createSVGPathSegArcRel_, createSVGPathSegLinetoHorizontalAbs,
-        createSVGPathSegLinetoHorizontalAbs_,
-        createSVGPathSegLinetoHorizontalRel,
-        createSVGPathSegLinetoHorizontalRel_,
-        createSVGPathSegLinetoVerticalAbs,
-        createSVGPathSegLinetoVerticalAbs_,
-        createSVGPathSegLinetoVerticalRel,
-        createSVGPathSegLinetoVerticalRel_,
-        createSVGPathSegCurvetoCubicSmoothAbs,
-        createSVGPathSegCurvetoCubicSmoothAbs_,
-        createSVGPathSegCurvetoCubicSmoothRel,
-        createSVGPathSegCurvetoCubicSmoothRel_,
-        createSVGPathSegCurvetoQuadraticSmoothAbs,
-        createSVGPathSegCurvetoQuadraticSmoothAbs_,
-        createSVGPathSegCurvetoQuadraticSmoothRel,
-        createSVGPathSegCurvetoQuadraticSmoothRel_, getPathLength,
-        getPathSegList, getNormalizedPathSegList, getAnimatedPathSegList,
-        getAnimatedNormalizedPathSegList, SVGPathElement(..),
-        gTypeSVGPathElement)
+       (getPointAtLength, getPointAtLength_, getTotalLength, getTotalLength_, getPathLength, SVGPathElement(..), gTypeSVGPathElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getTotalLength Mozilla SVGPathElement.getTotalLength documentation> 
-getTotalLength :: (MonadDOM m) => SVGPathElement -> m Float
-getTotalLength self
-  = liftDOM
-      (realToFrac <$>
-         ((self ^. jsf "getTotalLength" ()) >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getTotalLength Mozilla SVGPathElement.getTotalLength documentation> 
-getTotalLength_ :: (MonadDOM m) => SVGPathElement -> m ()
-getTotalLength_ self
-  = liftDOM (void (self ^. jsf "getTotalLength" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPointAtLength Mozilla SVGPathElement.getPointAtLength documentation> 
-getPointAtLength ::
-                 (MonadDOM m) => SVGPathElement -> Maybe Float -> m SVGPoint
-getPointAtLength self distance
-  = liftDOM
-      ((self ^. jsf "getPointAtLength" [toJSVal distance]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPointAtLength Mozilla SVGPathElement.getPointAtLength documentation> 
-getPointAtLength_ ::
-                  (MonadDOM m) => SVGPathElement -> Maybe Float -> m ()
-getPointAtLength_ self distance
-  = liftDOM
-      (void (self ^. jsf "getPointAtLength" [toJSVal distance]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPathSegAtLength Mozilla SVGPathElement.getPathSegAtLength documentation> 
-getPathSegAtLength ::
-                   (MonadDOM m) => SVGPathElement -> Maybe Float -> m Word
-getPathSegAtLength self distance
-  = liftDOM
-      (round <$>
-         ((self ^. jsf "getPathSegAtLength" [toJSVal distance]) >>=
-            valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPathSegAtLength Mozilla SVGPathElement.getPathSegAtLength documentation> 
-getPathSegAtLength_ ::
-                    (MonadDOM m) => SVGPathElement -> Maybe Float -> m ()
-getPathSegAtLength_ self distance
-  = liftDOM
-      (void (self ^. jsf "getPathSegAtLength" [toJSVal distance]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegClosePath Mozilla SVGPathElement.createSVGPathSegClosePath documentation> 
-createSVGPathSegClosePath ::
-                          (MonadDOM m) => SVGPathElement -> m SVGPathSegClosePath
-createSVGPathSegClosePath self
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegClosePath" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegClosePath Mozilla SVGPathElement.createSVGPathSegClosePath documentation> 
-createSVGPathSegClosePath_ ::
-                           (MonadDOM m) => SVGPathElement -> m ()
-createSVGPathSegClosePath_ self
-  = liftDOM (void (self ^. jsf "createSVGPathSegClosePath" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoAbs Mozilla SVGPathElement.createSVGPathSegMovetoAbs documentation> 
-createSVGPathSegMovetoAbs ::
-                          (MonadDOM m) =>
-                            SVGPathElement ->
-                              Maybe Float -> Maybe Float -> m SVGPathSegMovetoAbs
-createSVGPathSegMovetoAbs self x y
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegMovetoAbs" [toJSVal x, toJSVal y])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoAbs Mozilla SVGPathElement.createSVGPathSegMovetoAbs documentation> 
-createSVGPathSegMovetoAbs_ ::
-                           (MonadDOM m) =>
-                             SVGPathElement -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegMovetoAbs_ self x y
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegMovetoAbs" [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoRel Mozilla SVGPathElement.createSVGPathSegMovetoRel documentation> 
-createSVGPathSegMovetoRel ::
-                          (MonadDOM m) =>
-                            SVGPathElement ->
-                              Maybe Float -> Maybe Float -> m SVGPathSegMovetoRel
-createSVGPathSegMovetoRel self x y
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegMovetoRel" [toJSVal x, toJSVal y])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoRel Mozilla SVGPathElement.createSVGPathSegMovetoRel documentation> 
-createSVGPathSegMovetoRel_ ::
-                           (MonadDOM m) =>
-                             SVGPathElement -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegMovetoRel_ self x y
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegMovetoRel" [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoAbs Mozilla SVGPathElement.createSVGPathSegLinetoAbs documentation> 
-createSVGPathSegLinetoAbs ::
-                          (MonadDOM m) =>
-                            SVGPathElement ->
-                              Maybe Float -> Maybe Float -> m SVGPathSegLinetoAbs
-createSVGPathSegLinetoAbs self x y
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegLinetoAbs" [toJSVal x, toJSVal y])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoAbs Mozilla SVGPathElement.createSVGPathSegLinetoAbs documentation> 
-createSVGPathSegLinetoAbs_ ::
-                           (MonadDOM m) =>
-                             SVGPathElement -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegLinetoAbs_ self x y
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegLinetoAbs" [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoRel Mozilla SVGPathElement.createSVGPathSegLinetoRel documentation> 
-createSVGPathSegLinetoRel ::
-                          (MonadDOM m) =>
-                            SVGPathElement ->
-                              Maybe Float -> Maybe Float -> m SVGPathSegLinetoRel
-createSVGPathSegLinetoRel self x y
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegLinetoRel" [toJSVal x, toJSVal y])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoRel Mozilla SVGPathElement.createSVGPathSegLinetoRel documentation> 
-createSVGPathSegLinetoRel_ ::
-                           (MonadDOM m) =>
-                             SVGPathElement -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegLinetoRel_ self x y
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegLinetoRel" [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicAbs documentation> 
-createSVGPathSegCurvetoCubicAbs ::
-                                (MonadDOM m) =>
-                                  SVGPathElement ->
-                                    Maybe Float ->
-                                      Maybe Float ->
-                                        Maybe Float ->
-                                          Maybe Float ->
-                                            Maybe Float ->
-                                              Maybe Float -> m SVGPathSegCurvetoCubicAbs
-createSVGPathSegCurvetoCubicAbs self x y x1 y1 x2 y2
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegCurvetoCubicAbs"
-          [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1, toJSVal x2,
-           toJSVal y2])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicAbs documentation> 
-createSVGPathSegCurvetoCubicAbs_ ::
-                                 (MonadDOM m) =>
-                                   SVGPathElement ->
-                                     Maybe Float ->
-                                       Maybe Float ->
-                                         Maybe Float ->
-                                           Maybe Float -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegCurvetoCubicAbs_ self x y x1 y1 x2 y2
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegCurvetoCubicAbs"
-            [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1, toJSVal x2,
-             toJSVal y2]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicRel documentation> 
-createSVGPathSegCurvetoCubicRel ::
-                                (MonadDOM m) =>
-                                  SVGPathElement ->
-                                    Maybe Float ->
-                                      Maybe Float ->
-                                        Maybe Float ->
-                                          Maybe Float ->
-                                            Maybe Float ->
-                                              Maybe Float -> m SVGPathSegCurvetoCubicRel
-createSVGPathSegCurvetoCubicRel self x y x1 y1 x2 y2
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegCurvetoCubicRel"
-          [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1, toJSVal x2,
-           toJSVal y2])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicRel documentation> 
-createSVGPathSegCurvetoCubicRel_ ::
-                                 (MonadDOM m) =>
-                                   SVGPathElement ->
-                                     Maybe Float ->
-                                       Maybe Float ->
-                                         Maybe Float ->
-                                           Maybe Float -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegCurvetoCubicRel_ self x y x1 y1 x2 y2
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegCurvetoCubicRel"
-            [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1, toJSVal x2,
-             toJSVal y2]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticAbs documentation> 
-createSVGPathSegCurvetoQuadraticAbs ::
-                                    (MonadDOM m) =>
-                                      SVGPathElement ->
-                                        Maybe Float ->
-                                          Maybe Float ->
-                                            Maybe Float ->
-                                              Maybe Float -> m SVGPathSegCurvetoQuadraticAbs
-createSVGPathSegCurvetoQuadraticAbs self x y x1 y1
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegCurvetoQuadraticAbs"
-          [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticAbs documentation> 
-createSVGPathSegCurvetoQuadraticAbs_ ::
-                                     (MonadDOM m) =>
-                                       SVGPathElement ->
-                                         Maybe Float ->
-                                           Maybe Float -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegCurvetoQuadraticAbs_ self x y x1 y1
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegCurvetoQuadraticAbs"
-            [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticRel documentation> 
-createSVGPathSegCurvetoQuadraticRel ::
-                                    (MonadDOM m) =>
-                                      SVGPathElement ->
-                                        Maybe Float ->
-                                          Maybe Float ->
-                                            Maybe Float ->
-                                              Maybe Float -> m SVGPathSegCurvetoQuadraticRel
-createSVGPathSegCurvetoQuadraticRel self x y x1 y1
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegCurvetoQuadraticRel"
-          [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticRel documentation> 
-createSVGPathSegCurvetoQuadraticRel_ ::
-                                     (MonadDOM m) =>
-                                       SVGPathElement ->
-                                         Maybe Float ->
-                                           Maybe Float -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegCurvetoQuadraticRel_ self x y x1 y1
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegCurvetoQuadraticRel"
-            [toJSVal x, toJSVal y, toJSVal x1, toJSVal y1]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcAbs Mozilla SVGPathElement.createSVGPathSegArcAbs documentation> 
-createSVGPathSegArcAbs ::
-                       (MonadDOM 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
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegArcAbs"
-          [toJSVal x, toJSVal y, toJSVal r1, toJSVal r2, toJSVal angle,
-           toJSVal largeArcFlag, toJSVal sweepFlag])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcAbs Mozilla SVGPathElement.createSVGPathSegArcAbs documentation> 
-createSVGPathSegArcAbs_ ::
-                        (MonadDOM m) =>
-                          SVGPathElement ->
-                            Maybe Float ->
-                              Maybe Float ->
-                                Maybe Float -> Maybe Float -> Maybe Float -> Bool -> Bool -> m ()
-createSVGPathSegArcAbs_ self x y r1 r2 angle largeArcFlag sweepFlag
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegArcAbs"
-            [toJSVal x, toJSVal y, toJSVal r1, toJSVal r2, toJSVal angle,
-             toJSVal largeArcFlag, toJSVal sweepFlag]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcRel Mozilla SVGPathElement.createSVGPathSegArcRel documentation> 
-createSVGPathSegArcRel ::
-                       (MonadDOM 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
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegArcRel"
-          [toJSVal x, toJSVal y, toJSVal r1, toJSVal r2, toJSVal angle,
-           toJSVal largeArcFlag, toJSVal sweepFlag])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcRel Mozilla SVGPathElement.createSVGPathSegArcRel documentation> 
-createSVGPathSegArcRel_ ::
-                        (MonadDOM m) =>
-                          SVGPathElement ->
-                            Maybe Float ->
-                              Maybe Float ->
-                                Maybe Float -> Maybe Float -> Maybe Float -> Bool -> Bool -> m ()
-createSVGPathSegArcRel_ self x y r1 r2 angle largeArcFlag sweepFlag
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegArcRel"
-            [toJSVal x, toJSVal y, toJSVal r1, toJSVal r2, toJSVal angle,
-             toJSVal largeArcFlag, toJSVal sweepFlag]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalAbs Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalAbs documentation> 
-createSVGPathSegLinetoHorizontalAbs ::
-                                    (MonadDOM m) =>
-                                      SVGPathElement ->
-                                        Maybe Float -> m SVGPathSegLinetoHorizontalAbs
-createSVGPathSegLinetoHorizontalAbs self x
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegLinetoHorizontalAbs" [toJSVal x])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalAbs Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalAbs documentation> 
-createSVGPathSegLinetoHorizontalAbs_ ::
-                                     (MonadDOM m) => SVGPathElement -> Maybe Float -> m ()
-createSVGPathSegLinetoHorizontalAbs_ self x
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegLinetoHorizontalAbs" [toJSVal x]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalRel Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalRel documentation> 
-createSVGPathSegLinetoHorizontalRel ::
-                                    (MonadDOM m) =>
-                                      SVGPathElement ->
-                                        Maybe Float -> m SVGPathSegLinetoHorizontalRel
-createSVGPathSegLinetoHorizontalRel self x
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegLinetoHorizontalRel" [toJSVal x])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalRel Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalRel documentation> 
-createSVGPathSegLinetoHorizontalRel_ ::
-                                     (MonadDOM m) => SVGPathElement -> Maybe Float -> m ()
-createSVGPathSegLinetoHorizontalRel_ self x
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegLinetoHorizontalRel" [toJSVal x]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalAbs Mozilla SVGPathElement.createSVGPathSegLinetoVerticalAbs documentation> 
-createSVGPathSegLinetoVerticalAbs ::
-                                  (MonadDOM m) =>
-                                    SVGPathElement -> Maybe Float -> m SVGPathSegLinetoVerticalAbs
-createSVGPathSegLinetoVerticalAbs self y
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegLinetoVerticalAbs" [toJSVal y]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalAbs Mozilla SVGPathElement.createSVGPathSegLinetoVerticalAbs documentation> 
-createSVGPathSegLinetoVerticalAbs_ ::
-                                   (MonadDOM m) => SVGPathElement -> Maybe Float -> m ()
-createSVGPathSegLinetoVerticalAbs_ self y
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegLinetoVerticalAbs" [toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalRel Mozilla SVGPathElement.createSVGPathSegLinetoVerticalRel documentation> 
-createSVGPathSegLinetoVerticalRel ::
-                                  (MonadDOM m) =>
-                                    SVGPathElement -> Maybe Float -> m SVGPathSegLinetoVerticalRel
-createSVGPathSegLinetoVerticalRel self y
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegLinetoVerticalRel" [toJSVal y]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalRel Mozilla SVGPathElement.createSVGPathSegLinetoVerticalRel documentation> 
-createSVGPathSegLinetoVerticalRel_ ::
-                                   (MonadDOM m) => SVGPathElement -> Maybe Float -> m ()
-createSVGPathSegLinetoVerticalRel_ self y
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegLinetoVerticalRel" [toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs documentation> 
-createSVGPathSegCurvetoCubicSmoothAbs ::
-                                      (MonadDOM m) =>
-                                        SVGPathElement ->
-                                          Maybe Float ->
-                                            Maybe Float ->
-                                              Maybe Float ->
-                                                Maybe Float -> m SVGPathSegCurvetoCubicSmoothAbs
-createSVGPathSegCurvetoCubicSmoothAbs self x y x2 y2
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegCurvetoCubicSmoothAbs"
-          [toJSVal x, toJSVal y, toJSVal x2, toJSVal y2])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs documentation> 
-createSVGPathSegCurvetoCubicSmoothAbs_ ::
-                                       (MonadDOM m) =>
-                                         SVGPathElement ->
-                                           Maybe Float ->
-                                             Maybe Float -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegCurvetoCubicSmoothAbs_ self x y x2 y2
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegCurvetoCubicSmoothAbs"
-            [toJSVal x, toJSVal y, toJSVal x2, toJSVal y2]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel documentation> 
-createSVGPathSegCurvetoCubicSmoothRel ::
-                                      (MonadDOM m) =>
-                                        SVGPathElement ->
-                                          Maybe Float ->
-                                            Maybe Float ->
-                                              Maybe Float ->
-                                                Maybe Float -> m SVGPathSegCurvetoCubicSmoothRel
-createSVGPathSegCurvetoCubicSmoothRel self x y x2 y2
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegCurvetoCubicSmoothRel"
-          [toJSVal x, toJSVal y, toJSVal x2, toJSVal y2])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel documentation> 
-createSVGPathSegCurvetoCubicSmoothRel_ ::
-                                       (MonadDOM m) =>
-                                         SVGPathElement ->
-                                           Maybe Float ->
-                                             Maybe Float -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegCurvetoCubicSmoothRel_ self x y x2 y2
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegCurvetoCubicSmoothRel"
-            [toJSVal x, toJSVal y, toJSVal x2, toJSVal y2]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs documentation> 
-createSVGPathSegCurvetoQuadraticSmoothAbs ::
-                                          (MonadDOM m) =>
-                                            SVGPathElement ->
-                                              Maybe Float ->
-                                                Maybe Float -> m SVGPathSegCurvetoQuadraticSmoothAbs
-createSVGPathSegCurvetoQuadraticSmoothAbs self x y
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegCurvetoQuadraticSmoothAbs"
-          [toJSVal x, toJSVal y])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs documentation> 
-createSVGPathSegCurvetoQuadraticSmoothAbs_ ::
-                                           (MonadDOM m) =>
-                                             SVGPathElement -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegCurvetoQuadraticSmoothAbs_ self x y
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegCurvetoQuadraticSmoothAbs"
-            [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel documentation> 
-createSVGPathSegCurvetoQuadraticSmoothRel ::
-                                          (MonadDOM m) =>
-                                            SVGPathElement ->
-                                              Maybe Float ->
-                                                Maybe Float -> m SVGPathSegCurvetoQuadraticSmoothRel
-createSVGPathSegCurvetoQuadraticSmoothRel self x y
-  = liftDOM
-      ((self ^. jsf "createSVGPathSegCurvetoQuadraticSmoothRel"
-          [toJSVal x, toJSVal y])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel documentation> 
-createSVGPathSegCurvetoQuadraticSmoothRel_ ::
-                                           (MonadDOM m) =>
-                                             SVGPathElement -> Maybe Float -> Maybe Float -> m ()
-createSVGPathSegCurvetoQuadraticSmoothRel_ self x y
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGPathSegCurvetoQuadraticSmoothRel"
-            [toJSVal x, toJSVal y]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.pathLength Mozilla SVGPathElement.pathLength documentation> 
-getPathLength ::
-              (MonadDOM m) => SVGPathElement -> m SVGAnimatedNumber
-getPathLength self
-  = liftDOM ((self ^. js "pathLength") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPathElement/getPointAtLength MDN SVGPathElement.getPointAtLength documentation>
+getPointAtLength :: (MonadDOM m) => SVGPathElement -> Float -> m DOMPoint
+getPointAtLength self distance = liftDOM (((self ^. jsf "getPointAtLength" [toJSVal distance]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.pathSegList Mozilla SVGPathElement.pathSegList documentation> 
-getPathSegList ::
-               (MonadDOM m) => SVGPathElement -> m SVGPathSegList
-getPathSegList self
-  = liftDOM ((self ^. js "pathSegList") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPathElement/getPointAtLength MDN SVGPathElement.getPointAtLength documentation>
+getPointAtLength_ :: (MonadDOM m) => SVGPathElement -> Float -> m ()
+getPointAtLength_ self distance = liftDOM (void (self ^. jsf "getPointAtLength" [toJSVal distance]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.normalizedPathSegList Mozilla SVGPathElement.normalizedPathSegList documentation> 
-getNormalizedPathSegList ::
-                         (MonadDOM m) => SVGPathElement -> m SVGPathSegList
-getNormalizedPathSegList self
-  = liftDOM
-      ((self ^. js "normalizedPathSegList") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPathElement/getTotalLength MDN SVGPathElement.getTotalLength documentation>
+getTotalLength :: (MonadDOM m) => SVGPathElement -> m Float
+getTotalLength self = liftDOM ((P.realToFrac <$> ((self ^. jsf "getTotalLength" ()) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.animatedPathSegList Mozilla SVGPathElement.animatedPathSegList documentation> 
-getAnimatedPathSegList ::
-                       (MonadDOM m) => SVGPathElement -> m SVGPathSegList
-getAnimatedPathSegList self
-  = liftDOM
-      ((self ^. js "animatedPathSegList") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPathElement/getTotalLength MDN SVGPathElement.getTotalLength documentation>
+getTotalLength_ :: (MonadDOM m) => SVGPathElement -> m ()
+getTotalLength_ self = liftDOM (void (self ^. jsf "getTotalLength" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.animatedNormalizedPathSegList Mozilla SVGPathElement.animatedNormalizedPathSegList documentation> 
-getAnimatedNormalizedPathSegList ::
-                                 (MonadDOM m) => SVGPathElement -> m SVGPathSegList
-getAnimatedNormalizedPathSegList self
-  = liftDOM
-      ((self ^. js "animatedNormalizedPathSegList") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPathElement/pathLength MDN SVGPathElement.pathLength documentation>
+getPathLength :: (MonadDOM m) => SVGPathElement -> m SVGAnimatedNumber
+getPathLength self = liftDOM (((self ^. js "pathLength") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGPathSeg.hs b/src/JSDOM/Generated/SVGPathSeg.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSeg.hs
+++ /dev/null
@@ -1,72 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.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, getPathSegType,
-        getPathSegTypeAsLetter, SVGPathSeg(..), gTypeSVGPathSeg,
-        IsSVGPathSeg, toSVGPathSeg)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.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
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSeg.pathSegType Mozilla SVGPathSeg.pathSegType documentation> 
-getPathSegType :: (MonadDOM m, IsSVGPathSeg self) => self -> m Word
-getPathSegType self
-  = liftDOM
-      (round <$>
-         (((toSVGPathSeg self) ^. js "pathSegType") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSeg.pathSegTypeAsLetter Mozilla SVGPathSeg.pathSegTypeAsLetter documentation> 
-getPathSegTypeAsLetter ::
-                       (MonadDOM m, IsSVGPathSeg self, FromJSString result) =>
-                         self -> m result
-getPathSegTypeAsLetter self
-  = liftDOM
-      (((toSVGPathSeg self) ^. js "pathSegTypeAsLetter") >>=
-         fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/SVGPathSegArcAbs.hs b/src/JSDOM/Generated/SVGPathSegArcAbs.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegArcAbs.hs
+++ /dev/null
@@ -1,87 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegArcAbs
-       (setX, getX, setY, getY, setR1, getR1, setR2, getR2, setAngle,
-        getAngle, setLargeArcFlag, getLargeArcFlag, setSweepFlag,
-        getSweepFlag, SVGPathSegArcAbs(..), gTypeSVGPathSegArcAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.x Mozilla SVGPathSegArcAbs.x documentation> 
-setX :: (MonadDOM m) => SVGPathSegArcAbs -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.x Mozilla SVGPathSegArcAbs.x documentation> 
-getX :: (MonadDOM m) => SVGPathSegArcAbs -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.y Mozilla SVGPathSegArcAbs.y documentation> 
-setY :: (MonadDOM m) => SVGPathSegArcAbs -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.y Mozilla SVGPathSegArcAbs.y documentation> 
-getY :: (MonadDOM m) => SVGPathSegArcAbs -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.r1 Mozilla SVGPathSegArcAbs.r1 documentation> 
-setR1 :: (MonadDOM m) => SVGPathSegArcAbs -> Float -> m ()
-setR1 self val = liftDOM (self ^. jss "r1" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.r1 Mozilla SVGPathSegArcAbs.r1 documentation> 
-getR1 :: (MonadDOM m) => SVGPathSegArcAbs -> m Float
-getR1 self
-  = liftDOM (realToFrac <$> ((self ^. js "r1") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.r2 Mozilla SVGPathSegArcAbs.r2 documentation> 
-setR2 :: (MonadDOM m) => SVGPathSegArcAbs -> Float -> m ()
-setR2 self val = liftDOM (self ^. jss "r2" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.r2 Mozilla SVGPathSegArcAbs.r2 documentation> 
-getR2 :: (MonadDOM m) => SVGPathSegArcAbs -> m Float
-getR2 self
-  = liftDOM (realToFrac <$> ((self ^. js "r2") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.angle Mozilla SVGPathSegArcAbs.angle documentation> 
-setAngle :: (MonadDOM m) => SVGPathSegArcAbs -> Float -> m ()
-setAngle self val = liftDOM (self ^. jss "angle" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.angle Mozilla SVGPathSegArcAbs.angle documentation> 
-getAngle :: (MonadDOM m) => SVGPathSegArcAbs -> m Float
-getAngle self
-  = liftDOM (realToFrac <$> ((self ^. js "angle") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.largeArcFlag Mozilla SVGPathSegArcAbs.largeArcFlag documentation> 
-setLargeArcFlag :: (MonadDOM m) => SVGPathSegArcAbs -> Bool -> m ()
-setLargeArcFlag self val
-  = liftDOM (self ^. jss "largeArcFlag" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.largeArcFlag Mozilla SVGPathSegArcAbs.largeArcFlag documentation> 
-getLargeArcFlag :: (MonadDOM m) => SVGPathSegArcAbs -> m Bool
-getLargeArcFlag self
-  = liftDOM ((self ^. js "largeArcFlag") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.sweepFlag Mozilla SVGPathSegArcAbs.sweepFlag documentation> 
-setSweepFlag :: (MonadDOM m) => SVGPathSegArcAbs -> Bool -> m ()
-setSweepFlag self val
-  = liftDOM (self ^. jss "sweepFlag" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.sweepFlag Mozilla SVGPathSegArcAbs.sweepFlag documentation> 
-getSweepFlag :: (MonadDOM m) => SVGPathSegArcAbs -> m Bool
-getSweepFlag self
-  = liftDOM ((self ^. js "sweepFlag") >>= valToBool)
diff --git a/src/JSDOM/Generated/SVGPathSegArcRel.hs b/src/JSDOM/Generated/SVGPathSegArcRel.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegArcRel.hs
+++ /dev/null
@@ -1,87 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegArcRel
-       (setX, getX, setY, getY, setR1, getR1, setR2, getR2, setAngle,
-        getAngle, setLargeArcFlag, getLargeArcFlag, setSweepFlag,
-        getSweepFlag, SVGPathSegArcRel(..), gTypeSVGPathSegArcRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.x Mozilla SVGPathSegArcRel.x documentation> 
-setX :: (MonadDOM m) => SVGPathSegArcRel -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.x Mozilla SVGPathSegArcRel.x documentation> 
-getX :: (MonadDOM m) => SVGPathSegArcRel -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.y Mozilla SVGPathSegArcRel.y documentation> 
-setY :: (MonadDOM m) => SVGPathSegArcRel -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.y Mozilla SVGPathSegArcRel.y documentation> 
-getY :: (MonadDOM m) => SVGPathSegArcRel -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.r1 Mozilla SVGPathSegArcRel.r1 documentation> 
-setR1 :: (MonadDOM m) => SVGPathSegArcRel -> Float -> m ()
-setR1 self val = liftDOM (self ^. jss "r1" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.r1 Mozilla SVGPathSegArcRel.r1 documentation> 
-getR1 :: (MonadDOM m) => SVGPathSegArcRel -> m Float
-getR1 self
-  = liftDOM (realToFrac <$> ((self ^. js "r1") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.r2 Mozilla SVGPathSegArcRel.r2 documentation> 
-setR2 :: (MonadDOM m) => SVGPathSegArcRel -> Float -> m ()
-setR2 self val = liftDOM (self ^. jss "r2" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.r2 Mozilla SVGPathSegArcRel.r2 documentation> 
-getR2 :: (MonadDOM m) => SVGPathSegArcRel -> m Float
-getR2 self
-  = liftDOM (realToFrac <$> ((self ^. js "r2") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.angle Mozilla SVGPathSegArcRel.angle documentation> 
-setAngle :: (MonadDOM m) => SVGPathSegArcRel -> Float -> m ()
-setAngle self val = liftDOM (self ^. jss "angle" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.angle Mozilla SVGPathSegArcRel.angle documentation> 
-getAngle :: (MonadDOM m) => SVGPathSegArcRel -> m Float
-getAngle self
-  = liftDOM (realToFrac <$> ((self ^. js "angle") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.largeArcFlag Mozilla SVGPathSegArcRel.largeArcFlag documentation> 
-setLargeArcFlag :: (MonadDOM m) => SVGPathSegArcRel -> Bool -> m ()
-setLargeArcFlag self val
-  = liftDOM (self ^. jss "largeArcFlag" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.largeArcFlag Mozilla SVGPathSegArcRel.largeArcFlag documentation> 
-getLargeArcFlag :: (MonadDOM m) => SVGPathSegArcRel -> m Bool
-getLargeArcFlag self
-  = liftDOM ((self ^. js "largeArcFlag") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.sweepFlag Mozilla SVGPathSegArcRel.sweepFlag documentation> 
-setSweepFlag :: (MonadDOM m) => SVGPathSegArcRel -> Bool -> m ()
-setSweepFlag self val
-  = liftDOM (self ^. jss "sweepFlag" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.sweepFlag Mozilla SVGPathSegArcRel.sweepFlag documentation> 
-getSweepFlag :: (MonadDOM m) => SVGPathSegArcRel -> m Bool
-getSweepFlag self
-  = liftDOM ((self ^. js "sweepFlag") >>= valToBool)
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoCubicAbs.hs b/src/JSDOM/Generated/SVGPathSegCurvetoCubicAbs.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegCurvetoCubicAbs.hs
+++ /dev/null
@@ -1,76 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegCurvetoCubicAbs
-       (setX, getX, setY, getY, setX1, getX1, setY1, getY1, setX2, getX2,
-        setY2, getY2, SVGPathSegCurvetoCubicAbs(..),
-        gTypeSVGPathSegCurvetoCubicAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x Mozilla SVGPathSegCurvetoCubicAbs.x documentation> 
-setX :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x Mozilla SVGPathSegCurvetoCubicAbs.x documentation> 
-getX :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y Mozilla SVGPathSegCurvetoCubicAbs.y documentation> 
-setY :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y Mozilla SVGPathSegCurvetoCubicAbs.y documentation> 
-getY :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x1 Mozilla SVGPathSegCurvetoCubicAbs.x1 documentation> 
-setX1 :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
-setX1 self val = liftDOM (self ^. jss "x1" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x1 Mozilla SVGPathSegCurvetoCubicAbs.x1 documentation> 
-getX1 :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> m Float
-getX1 self
-  = liftDOM (realToFrac <$> ((self ^. js "x1") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y1 Mozilla SVGPathSegCurvetoCubicAbs.y1 documentation> 
-setY1 :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
-setY1 self val = liftDOM (self ^. jss "y1" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y1 Mozilla SVGPathSegCurvetoCubicAbs.y1 documentation> 
-getY1 :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> m Float
-getY1 self
-  = liftDOM (realToFrac <$> ((self ^. js "y1") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x2 Mozilla SVGPathSegCurvetoCubicAbs.x2 documentation> 
-setX2 :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
-setX2 self val = liftDOM (self ^. jss "x2" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x2 Mozilla SVGPathSegCurvetoCubicAbs.x2 documentation> 
-getX2 :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> m Float
-getX2 self
-  = liftDOM (realToFrac <$> ((self ^. js "x2") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y2 Mozilla SVGPathSegCurvetoCubicAbs.y2 documentation> 
-setY2 :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
-setY2 self val = liftDOM (self ^. jss "y2" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y2 Mozilla SVGPathSegCurvetoCubicAbs.y2 documentation> 
-getY2 :: (MonadDOM m) => SVGPathSegCurvetoCubicAbs -> m Float
-getY2 self
-  = liftDOM (realToFrac <$> ((self ^. js "y2") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoCubicRel.hs b/src/JSDOM/Generated/SVGPathSegCurvetoCubicRel.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegCurvetoCubicRel.hs
+++ /dev/null
@@ -1,76 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegCurvetoCubicRel
-       (setX, getX, setY, getY, setX1, getX1, setY1, getY1, setX2, getX2,
-        setY2, getY2, SVGPathSegCurvetoCubicRel(..),
-        gTypeSVGPathSegCurvetoCubicRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x Mozilla SVGPathSegCurvetoCubicRel.x documentation> 
-setX :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x Mozilla SVGPathSegCurvetoCubicRel.x documentation> 
-getX :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y Mozilla SVGPathSegCurvetoCubicRel.y documentation> 
-setY :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y Mozilla SVGPathSegCurvetoCubicRel.y documentation> 
-getY :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x1 Mozilla SVGPathSegCurvetoCubicRel.x1 documentation> 
-setX1 :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
-setX1 self val = liftDOM (self ^. jss "x1" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x1 Mozilla SVGPathSegCurvetoCubicRel.x1 documentation> 
-getX1 :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> m Float
-getX1 self
-  = liftDOM (realToFrac <$> ((self ^. js "x1") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y1 Mozilla SVGPathSegCurvetoCubicRel.y1 documentation> 
-setY1 :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
-setY1 self val = liftDOM (self ^. jss "y1" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y1 Mozilla SVGPathSegCurvetoCubicRel.y1 documentation> 
-getY1 :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> m Float
-getY1 self
-  = liftDOM (realToFrac <$> ((self ^. js "y1") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x2 Mozilla SVGPathSegCurvetoCubicRel.x2 documentation> 
-setX2 :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
-setX2 self val = liftDOM (self ^. jss "x2" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x2 Mozilla SVGPathSegCurvetoCubicRel.x2 documentation> 
-getX2 :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> m Float
-getX2 self
-  = liftDOM (realToFrac <$> ((self ^. js "x2") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y2 Mozilla SVGPathSegCurvetoCubicRel.y2 documentation> 
-setY2 :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
-setY2 self val = liftDOM (self ^. jss "y2" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y2 Mozilla SVGPathSegCurvetoCubicRel.y2 documentation> 
-getY2 :: (MonadDOM m) => SVGPathSegCurvetoCubicRel -> m Float
-getY2 self
-  = liftDOM (realToFrac <$> ((self ^. js "y2") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs b/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs
+++ /dev/null
@@ -1,62 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegCurvetoCubicSmoothAbs
-       (setX, getX, setY, getY, setX2, getX2, setY2, getY2,
-        SVGPathSegCurvetoCubicSmoothAbs(..),
-        gTypeSVGPathSegCurvetoCubicSmoothAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x Mozilla SVGPathSegCurvetoCubicSmoothAbs.x documentation> 
-setX ::
-     (MonadDOM m) => SVGPathSegCurvetoCubicSmoothAbs -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x Mozilla SVGPathSegCurvetoCubicSmoothAbs.x documentation> 
-getX :: (MonadDOM m) => SVGPathSegCurvetoCubicSmoothAbs -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.y Mozilla SVGPathSegCurvetoCubicSmoothAbs.y documentation> 
-setY ::
-     (MonadDOM m) => SVGPathSegCurvetoCubicSmoothAbs -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.y Mozilla SVGPathSegCurvetoCubicSmoothAbs.y documentation> 
-getY :: (MonadDOM m) => SVGPathSegCurvetoCubicSmoothAbs -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x2 Mozilla SVGPathSegCurvetoCubicSmoothAbs.x2 documentation> 
-setX2 ::
-      (MonadDOM m) => SVGPathSegCurvetoCubicSmoothAbs -> Float -> m ()
-setX2 self val = liftDOM (self ^. jss "x2" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x2 Mozilla SVGPathSegCurvetoCubicSmoothAbs.x2 documentation> 
-getX2 :: (MonadDOM m) => SVGPathSegCurvetoCubicSmoothAbs -> m Float
-getX2 self
-  = liftDOM (realToFrac <$> ((self ^. js "x2") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.y2 Mozilla SVGPathSegCurvetoCubicSmoothAbs.y2 documentation> 
-setY2 ::
-      (MonadDOM m) => SVGPathSegCurvetoCubicSmoothAbs -> Float -> m ()
-setY2 self val = liftDOM (self ^. jss "y2" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.y2 Mozilla SVGPathSegCurvetoCubicSmoothAbs.y2 documentation> 
-getY2 :: (MonadDOM m) => SVGPathSegCurvetoCubicSmoothAbs -> m Float
-getY2 self
-  = liftDOM (realToFrac <$> ((self ^. js "y2") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothRel.hs b/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothRel.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegCurvetoCubicSmoothRel.hs
+++ /dev/null
@@ -1,62 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegCurvetoCubicSmoothRel
-       (setX, getX, setY, getY, setX2, getX2, setY2, getY2,
-        SVGPathSegCurvetoCubicSmoothRel(..),
-        gTypeSVGPathSegCurvetoCubicSmoothRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x Mozilla SVGPathSegCurvetoCubicSmoothRel.x documentation> 
-setX ::
-     (MonadDOM m) => SVGPathSegCurvetoCubicSmoothRel -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x Mozilla SVGPathSegCurvetoCubicSmoothRel.x documentation> 
-getX :: (MonadDOM m) => SVGPathSegCurvetoCubicSmoothRel -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.y Mozilla SVGPathSegCurvetoCubicSmoothRel.y documentation> 
-setY ::
-     (MonadDOM m) => SVGPathSegCurvetoCubicSmoothRel -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.y Mozilla SVGPathSegCurvetoCubicSmoothRel.y documentation> 
-getY :: (MonadDOM m) => SVGPathSegCurvetoCubicSmoothRel -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x2 Mozilla SVGPathSegCurvetoCubicSmoothRel.x2 documentation> 
-setX2 ::
-      (MonadDOM m) => SVGPathSegCurvetoCubicSmoothRel -> Float -> m ()
-setX2 self val = liftDOM (self ^. jss "x2" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x2 Mozilla SVGPathSegCurvetoCubicSmoothRel.x2 documentation> 
-getX2 :: (MonadDOM m) => SVGPathSegCurvetoCubicSmoothRel -> m Float
-getX2 self
-  = liftDOM (realToFrac <$> ((self ^. js "x2") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.y2 Mozilla SVGPathSegCurvetoCubicSmoothRel.y2 documentation> 
-setY2 ::
-      (MonadDOM m) => SVGPathSegCurvetoCubicSmoothRel -> Float -> m ()
-setY2 self val = liftDOM (self ^. jss "y2" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.y2 Mozilla SVGPathSegCurvetoCubicSmoothRel.y2 documentation> 
-getY2 :: (MonadDOM m) => SVGPathSegCurvetoCubicSmoothRel -> m Float
-getY2 self
-  = liftDOM (realToFrac <$> ((self ^. js "y2") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticAbs.hs b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticAbs.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticAbs.hs
+++ /dev/null
@@ -1,62 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegCurvetoQuadraticAbs
-       (setX, getX, setY, getY, setX1, getX1, setY1, getY1,
-        SVGPathSegCurvetoQuadraticAbs(..),
-        gTypeSVGPathSegCurvetoQuadraticAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x Mozilla SVGPathSegCurvetoQuadraticAbs.x documentation> 
-setX ::
-     (MonadDOM m) => SVGPathSegCurvetoQuadraticAbs -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x Mozilla SVGPathSegCurvetoQuadraticAbs.x documentation> 
-getX :: (MonadDOM m) => SVGPathSegCurvetoQuadraticAbs -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.y Mozilla SVGPathSegCurvetoQuadraticAbs.y documentation> 
-setY ::
-     (MonadDOM m) => SVGPathSegCurvetoQuadraticAbs -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.y Mozilla SVGPathSegCurvetoQuadraticAbs.y documentation> 
-getY :: (MonadDOM m) => SVGPathSegCurvetoQuadraticAbs -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x1 Mozilla SVGPathSegCurvetoQuadraticAbs.x1 documentation> 
-setX1 ::
-      (MonadDOM m) => SVGPathSegCurvetoQuadraticAbs -> Float -> m ()
-setX1 self val = liftDOM (self ^. jss "x1" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x1 Mozilla SVGPathSegCurvetoQuadraticAbs.x1 documentation> 
-getX1 :: (MonadDOM m) => SVGPathSegCurvetoQuadraticAbs -> m Float
-getX1 self
-  = liftDOM (realToFrac <$> ((self ^. js "x1") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.y1 Mozilla SVGPathSegCurvetoQuadraticAbs.y1 documentation> 
-setY1 ::
-      (MonadDOM m) => SVGPathSegCurvetoQuadraticAbs -> Float -> m ()
-setY1 self val = liftDOM (self ^. jss "y1" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.y1 Mozilla SVGPathSegCurvetoQuadraticAbs.y1 documentation> 
-getY1 :: (MonadDOM m) => SVGPathSegCurvetoQuadraticAbs -> m Float
-getY1 self
-  = liftDOM (realToFrac <$> ((self ^. js "y1") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticRel.hs b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticRel.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticRel.hs
+++ /dev/null
@@ -1,62 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegCurvetoQuadraticRel
-       (setX, getX, setY, getY, setX1, getX1, setY1, getY1,
-        SVGPathSegCurvetoQuadraticRel(..),
-        gTypeSVGPathSegCurvetoQuadraticRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x Mozilla SVGPathSegCurvetoQuadraticRel.x documentation> 
-setX ::
-     (MonadDOM m) => SVGPathSegCurvetoQuadraticRel -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x Mozilla SVGPathSegCurvetoQuadraticRel.x documentation> 
-getX :: (MonadDOM m) => SVGPathSegCurvetoQuadraticRel -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.y Mozilla SVGPathSegCurvetoQuadraticRel.y documentation> 
-setY ::
-     (MonadDOM m) => SVGPathSegCurvetoQuadraticRel -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.y Mozilla SVGPathSegCurvetoQuadraticRel.y documentation> 
-getY :: (MonadDOM m) => SVGPathSegCurvetoQuadraticRel -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x1 Mozilla SVGPathSegCurvetoQuadraticRel.x1 documentation> 
-setX1 ::
-      (MonadDOM m) => SVGPathSegCurvetoQuadraticRel -> Float -> m ()
-setX1 self val = liftDOM (self ^. jss "x1" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x1 Mozilla SVGPathSegCurvetoQuadraticRel.x1 documentation> 
-getX1 :: (MonadDOM m) => SVGPathSegCurvetoQuadraticRel -> m Float
-getX1 self
-  = liftDOM (realToFrac <$> ((self ^. js "x1") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.y1 Mozilla SVGPathSegCurvetoQuadraticRel.y1 documentation> 
-setY1 ::
-      (MonadDOM m) => SVGPathSegCurvetoQuadraticRel -> Float -> m ()
-setY1 self val = liftDOM (self ^. jss "y1" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.y1 Mozilla SVGPathSegCurvetoQuadraticRel.y1 documentation> 
-getY1 :: (MonadDOM m) => SVGPathSegCurvetoQuadraticRel -> m Float
-getY1 self
-  = liftDOM (realToFrac <$> ((self ^. js "y1") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs
+++ /dev/null
@@ -1,45 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegCurvetoQuadraticSmoothAbs
-       (setX, getX, setY, getY, SVGPathSegCurvetoQuadraticSmoothAbs(..),
-        gTypeSVGPathSegCurvetoQuadraticSmoothAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.x Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.x documentation> 
-setX ::
-     (MonadDOM m) =>
-       SVGPathSegCurvetoQuadraticSmoothAbs -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.x Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.x documentation> 
-getX ::
-     (MonadDOM m) => SVGPathSegCurvetoQuadraticSmoothAbs -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.y Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.y documentation> 
-setY ::
-     (MonadDOM m) =>
-       SVGPathSegCurvetoQuadraticSmoothAbs -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.y Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.y documentation> 
-getY ::
-     (MonadDOM m) => SVGPathSegCurvetoQuadraticSmoothAbs -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs b/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs
+++ /dev/null
@@ -1,45 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegCurvetoQuadraticSmoothRel
-       (setX, getX, setY, getY, SVGPathSegCurvetoQuadraticSmoothRel(..),
-        gTypeSVGPathSegCurvetoQuadraticSmoothRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.x Mozilla SVGPathSegCurvetoQuadraticSmoothRel.x documentation> 
-setX ::
-     (MonadDOM m) =>
-       SVGPathSegCurvetoQuadraticSmoothRel -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.x Mozilla SVGPathSegCurvetoQuadraticSmoothRel.x documentation> 
-getX ::
-     (MonadDOM m) => SVGPathSegCurvetoQuadraticSmoothRel -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.y Mozilla SVGPathSegCurvetoQuadraticSmoothRel.y documentation> 
-setY ::
-     (MonadDOM m) =>
-       SVGPathSegCurvetoQuadraticSmoothRel -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.y Mozilla SVGPathSegCurvetoQuadraticSmoothRel.y documentation> 
-getY ::
-     (MonadDOM m) => SVGPathSegCurvetoQuadraticSmoothRel -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoAbs.hs b/src/JSDOM/Generated/SVGPathSegLinetoAbs.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegLinetoAbs.hs
+++ /dev/null
@@ -1,39 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegLinetoAbs
-       (setX, getX, setY, getY, SVGPathSegLinetoAbs(..),
-        gTypeSVGPathSegLinetoAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.x Mozilla SVGPathSegLinetoAbs.x documentation> 
-setX :: (MonadDOM m) => SVGPathSegLinetoAbs -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.x Mozilla SVGPathSegLinetoAbs.x documentation> 
-getX :: (MonadDOM m) => SVGPathSegLinetoAbs -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.y Mozilla SVGPathSegLinetoAbs.y documentation> 
-setY :: (MonadDOM m) => SVGPathSegLinetoAbs -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.y Mozilla SVGPathSegLinetoAbs.y documentation> 
-getY :: (MonadDOM m) => SVGPathSegLinetoAbs -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoHorizontalAbs.hs b/src/JSDOM/Generated/SVGPathSegLinetoHorizontalAbs.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegLinetoHorizontalAbs.hs
+++ /dev/null
@@ -1,31 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegLinetoHorizontalAbs
-       (setX, getX, SVGPathSegLinetoHorizontalAbs(..),
-        gTypeSVGPathSegLinetoHorizontalAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalAbs.x Mozilla SVGPathSegLinetoHorizontalAbs.x documentation> 
-setX ::
-     (MonadDOM m) => SVGPathSegLinetoHorizontalAbs -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalAbs.x Mozilla SVGPathSegLinetoHorizontalAbs.x documentation> 
-getX :: (MonadDOM m) => SVGPathSegLinetoHorizontalAbs -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoHorizontalRel.hs b/src/JSDOM/Generated/SVGPathSegLinetoHorizontalRel.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegLinetoHorizontalRel.hs
+++ /dev/null
@@ -1,31 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegLinetoHorizontalRel
-       (setX, getX, SVGPathSegLinetoHorizontalRel(..),
-        gTypeSVGPathSegLinetoHorizontalRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalRel.x Mozilla SVGPathSegLinetoHorizontalRel.x documentation> 
-setX ::
-     (MonadDOM m) => SVGPathSegLinetoHorizontalRel -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalRel.x Mozilla SVGPathSegLinetoHorizontalRel.x documentation> 
-getX :: (MonadDOM m) => SVGPathSegLinetoHorizontalRel -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoRel.hs b/src/JSDOM/Generated/SVGPathSegLinetoRel.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegLinetoRel.hs
+++ /dev/null
@@ -1,39 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegLinetoRel
-       (setX, getX, setY, getY, SVGPathSegLinetoRel(..),
-        gTypeSVGPathSegLinetoRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.x Mozilla SVGPathSegLinetoRel.x documentation> 
-setX :: (MonadDOM m) => SVGPathSegLinetoRel -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.x Mozilla SVGPathSegLinetoRel.x documentation> 
-getX :: (MonadDOM m) => SVGPathSegLinetoRel -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.y Mozilla SVGPathSegLinetoRel.y documentation> 
-setY :: (MonadDOM m) => SVGPathSegLinetoRel -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.y Mozilla SVGPathSegLinetoRel.y documentation> 
-getY :: (MonadDOM m) => SVGPathSegLinetoRel -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoVerticalAbs.hs b/src/JSDOM/Generated/SVGPathSegLinetoVerticalAbs.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegLinetoVerticalAbs.hs
+++ /dev/null
@@ -1,31 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegLinetoVerticalAbs
-       (setY, getY, SVGPathSegLinetoVerticalAbs(..),
-        gTypeSVGPathSegLinetoVerticalAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalAbs.y Mozilla SVGPathSegLinetoVerticalAbs.y documentation> 
-setY ::
-     (MonadDOM m) => SVGPathSegLinetoVerticalAbs -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalAbs.y Mozilla SVGPathSegLinetoVerticalAbs.y documentation> 
-getY :: (MonadDOM m) => SVGPathSegLinetoVerticalAbs -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPathSegLinetoVerticalRel.hs b/src/JSDOM/Generated/SVGPathSegLinetoVerticalRel.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegLinetoVerticalRel.hs
+++ /dev/null
@@ -1,31 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegLinetoVerticalRel
-       (setY, getY, SVGPathSegLinetoVerticalRel(..),
-        gTypeSVGPathSegLinetoVerticalRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalRel.y Mozilla SVGPathSegLinetoVerticalRel.y documentation> 
-setY ::
-     (MonadDOM m) => SVGPathSegLinetoVerticalRel -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalRel.y Mozilla SVGPathSegLinetoVerticalRel.y documentation> 
-getY :: (MonadDOM m) => SVGPathSegLinetoVerticalRel -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPathSegList.hs b/src/JSDOM/Generated/SVGPathSegList.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegList.hs
+++ /dev/null
@@ -1,123 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegList
-       (clear, initialize, initialize_, getItem, getItem_,
-        insertItemBefore, insertItemBefore_, replaceItem, replaceItem_,
-        removeItem, removeItem_, appendItem, appendItem_, getNumberOfItems,
-        SVGPathSegList(..), gTypeSVGPathSegList)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.clear Mozilla SVGPathSegList.clear documentation> 
-clear :: (MonadDOM m) => SVGPathSegList -> m ()
-clear self = liftDOM (void (self ^. jsf "clear" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.initialize Mozilla SVGPathSegList.initialize documentation> 
-initialize ::
-           (MonadDOM m, IsSVGPathSeg newItem) =>
-             SVGPathSegList -> Maybe newItem -> m SVGPathSeg
-initialize self newItem
-  = liftDOM
-      ((self ^. jsf "initialize" [toJSVal newItem]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.initialize Mozilla SVGPathSegList.initialize documentation> 
-initialize_ ::
-            (MonadDOM m, IsSVGPathSeg newItem) =>
-              SVGPathSegList -> Maybe newItem -> m ()
-initialize_ self newItem
-  = liftDOM (void (self ^. jsf "initialize" [toJSVal newItem]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.getItem Mozilla SVGPathSegList.getItem documentation> 
-getItem :: (MonadDOM m) => SVGPathSegList -> Word -> m SVGPathSeg
-getItem self index
-  = liftDOM
-      ((self ^. jsf "getItem" [toJSVal index]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.getItem Mozilla SVGPathSegList.getItem documentation> 
-getItem_ :: (MonadDOM m) => SVGPathSegList -> Word -> m ()
-getItem_ self index
-  = liftDOM (void (self ^. jsf "getItem" [toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.insertItemBefore Mozilla SVGPathSegList.insertItemBefore documentation> 
-insertItemBefore ::
-                 (MonadDOM m, IsSVGPathSeg newItem) =>
-                   SVGPathSegList -> Maybe newItem -> Word -> m SVGPathSeg
-insertItemBefore self newItem index
-  = liftDOM
-      ((self ^. jsf "insertItemBefore" [toJSVal newItem, toJSVal index])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.insertItemBefore Mozilla SVGPathSegList.insertItemBefore documentation> 
-insertItemBefore_ ::
-                  (MonadDOM m, IsSVGPathSeg newItem) =>
-                    SVGPathSegList -> Maybe newItem -> Word -> m ()
-insertItemBefore_ self newItem index
-  = liftDOM
-      (void
-         (self ^. jsf "insertItemBefore" [toJSVal newItem, toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.replaceItem Mozilla SVGPathSegList.replaceItem documentation> 
-replaceItem ::
-            (MonadDOM m, IsSVGPathSeg newItem) =>
-              SVGPathSegList -> Maybe newItem -> Word -> m SVGPathSeg
-replaceItem self newItem index
-  = liftDOM
-      ((self ^. jsf "replaceItem" [toJSVal newItem, toJSVal index]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.replaceItem Mozilla SVGPathSegList.replaceItem documentation> 
-replaceItem_ ::
-             (MonadDOM m, IsSVGPathSeg newItem) =>
-               SVGPathSegList -> Maybe newItem -> Word -> m ()
-replaceItem_ self newItem index
-  = liftDOM
-      (void (self ^. jsf "replaceItem" [toJSVal newItem, toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.removeItem Mozilla SVGPathSegList.removeItem documentation> 
-removeItem ::
-           (MonadDOM m) => SVGPathSegList -> Word -> m SVGPathSeg
-removeItem self index
-  = liftDOM
-      ((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.removeItem Mozilla SVGPathSegList.removeItem documentation> 
-removeItem_ :: (MonadDOM m) => SVGPathSegList -> Word -> m ()
-removeItem_ self index
-  = liftDOM (void (self ^. jsf "removeItem" [toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.appendItem Mozilla SVGPathSegList.appendItem documentation> 
-appendItem ::
-           (MonadDOM m, IsSVGPathSeg newItem) =>
-             SVGPathSegList -> Maybe newItem -> m SVGPathSeg
-appendItem self newItem
-  = liftDOM
-      ((self ^. jsf "appendItem" [toJSVal newItem]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.appendItem Mozilla SVGPathSegList.appendItem documentation> 
-appendItem_ ::
-            (MonadDOM m, IsSVGPathSeg newItem) =>
-              SVGPathSegList -> Maybe newItem -> m ()
-appendItem_ self newItem
-  = liftDOM (void (self ^. jsf "appendItem" [toJSVal newItem]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.numberOfItems Mozilla SVGPathSegList.numberOfItems documentation> 
-getNumberOfItems :: (MonadDOM m) => SVGPathSegList -> m Word
-getNumberOfItems self
-  = liftDOM
-      (round <$> ((self ^. js "numberOfItems") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPathSegMovetoAbs.hs b/src/JSDOM/Generated/SVGPathSegMovetoAbs.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegMovetoAbs.hs
+++ /dev/null
@@ -1,39 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegMovetoAbs
-       (setX, getX, setY, getY, SVGPathSegMovetoAbs(..),
-        gTypeSVGPathSegMovetoAbs)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.x Mozilla SVGPathSegMovetoAbs.x documentation> 
-setX :: (MonadDOM m) => SVGPathSegMovetoAbs -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.x Mozilla SVGPathSegMovetoAbs.x documentation> 
-getX :: (MonadDOM m) => SVGPathSegMovetoAbs -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.y Mozilla SVGPathSegMovetoAbs.y documentation> 
-setY :: (MonadDOM m) => SVGPathSegMovetoAbs -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.y Mozilla SVGPathSegMovetoAbs.y documentation> 
-getY :: (MonadDOM m) => SVGPathSegMovetoAbs -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPathSegMovetoRel.hs b/src/JSDOM/Generated/SVGPathSegMovetoRel.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPathSegMovetoRel.hs
+++ /dev/null
@@ -1,39 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPathSegMovetoRel
-       (setX, getX, setY, getY, SVGPathSegMovetoRel(..),
-        gTypeSVGPathSegMovetoRel)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.x Mozilla SVGPathSegMovetoRel.x documentation> 
-setX :: (MonadDOM m) => SVGPathSegMovetoRel -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.x Mozilla SVGPathSegMovetoRel.x documentation> 
-getX :: (MonadDOM m) => SVGPathSegMovetoRel -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.y Mozilla SVGPathSegMovetoRel.y documentation> 
-setY :: (MonadDOM m) => SVGPathSegMovetoRel -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.y Mozilla SVGPathSegMovetoRel.y documentation> 
-getY :: (MonadDOM m) => SVGPathSegMovetoRel -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPatternElement.hs b/src/JSDOM/Generated/SVGPatternElement.hs
--- a/src/JSDOM/Generated/SVGPatternElement.hs
+++ b/src/JSDOM/Generated/SVGPatternElement.hs
@@ -1,61 +1,44 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGPatternElement
-       (getPatternUnits, getPatternContentUnits, getPatternTransform,
-        getX, getY, getWidth, getHeight, SVGPatternElement(..),
-        gTypeSVGPatternElement)
+       (getPatternUnits, getPatternContentUnits, getPatternTransform, getX, getY, getWidth, getHeight, SVGPatternElement(..), gTypeSVGPatternElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternUnits Mozilla SVGPatternElement.patternUnits documentation> 
-getPatternUnits ::
-                (MonadDOM m) => SVGPatternElement -> m SVGAnimatedEnumeration
-getPatternUnits self
-  = liftDOM ((self ^. js "patternUnits") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPatternElement/patternUnits MDN SVGPatternElement.patternUnits documentation>
+getPatternUnits :: (MonadDOM m) => SVGPatternElement -> m SVGAnimatedEnumeration
+getPatternUnits self = liftDOM (((self ^. js "patternUnits") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternContentUnits Mozilla SVGPatternElement.patternContentUnits documentation> 
-getPatternContentUnits ::
-                       (MonadDOM m) => SVGPatternElement -> m SVGAnimatedEnumeration
-getPatternContentUnits self
-  = liftDOM
-      ((self ^. js "patternContentUnits") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPatternElement/patternContentUnits MDN SVGPatternElement.patternContentUnits documentation>
+getPatternContentUnits :: (MonadDOM m) => SVGPatternElement -> m SVGAnimatedEnumeration
+getPatternContentUnits self = liftDOM (((self ^. js "patternContentUnits") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternTransform Mozilla SVGPatternElement.patternTransform documentation> 
-getPatternTransform ::
-                    (MonadDOM m) => SVGPatternElement -> m SVGAnimatedTransformList
-getPatternTransform self
-  = liftDOM ((self ^. js "patternTransform") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPatternElement/patternTransform MDN SVGPatternElement.patternTransform documentation>
+getPatternTransform :: (MonadDOM m) => SVGPatternElement -> m SVGAnimatedTransformList
+getPatternTransform self = liftDOM (((self ^. js "patternTransform") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.x Mozilla SVGPatternElement.x documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPatternElement/x MDN SVGPatternElement.x documentation>
 getX :: (MonadDOM m) => SVGPatternElement -> m SVGAnimatedLength
-getX self = liftDOM ((self ^. js "x") >>= fromJSValUnchecked)
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.y Mozilla SVGPatternElement.y documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPatternElement/y MDN SVGPatternElement.y documentation>
 getY :: (MonadDOM m) => SVGPatternElement -> m SVGAnimatedLength
-getY self = liftDOM ((self ^. js "y") >>= fromJSValUnchecked)
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.width Mozilla SVGPatternElement.width documentation> 
-getWidth ::
-         (MonadDOM m) => SVGPatternElement -> m SVGAnimatedLength
-getWidth self
-  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPatternElement/width MDN SVGPatternElement.width documentation>
+getWidth :: (MonadDOM m) => SVGPatternElement -> m SVGAnimatedLength
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.height Mozilla SVGPatternElement.height documentation> 
-getHeight ::
-          (MonadDOM m) => SVGPatternElement -> m SVGAnimatedLength
-getHeight self
-  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPatternElement/height MDN SVGPatternElement.height documentation>
+getHeight :: (MonadDOM m) => SVGPatternElement -> m SVGAnimatedLength
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGPoint.hs b/src/JSDOM/Generated/SVGPoint.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGPoint.hs
+++ /dev/null
@@ -1,52 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGPoint
-       (matrixTransform, matrixTransform_, setX, getX, setY, getY,
-        SVGPoint(..), gTypeSVGPoint)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.matrixTransform Mozilla SVGPoint.matrixTransform documentation> 
-matrixTransform ::
-                (MonadDOM m) => SVGPoint -> SVGMatrix -> m SVGPoint
-matrixTransform self matrix
-  = liftDOM
-      ((self ^. jsf "matrixTransform" [toJSVal matrix]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.matrixTransform Mozilla SVGPoint.matrixTransform documentation> 
-matrixTransform_ :: (MonadDOM m) => SVGPoint -> SVGMatrix -> m ()
-matrixTransform_ self matrix
-  = liftDOM (void (self ^. jsf "matrixTransform" [toJSVal matrix]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.x Mozilla SVGPoint.x documentation> 
-setX :: (MonadDOM m) => SVGPoint -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.x Mozilla SVGPoint.x documentation> 
-getX :: (MonadDOM m) => SVGPoint -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.y Mozilla SVGPoint.y documentation> 
-setY :: (MonadDOM m) => SVGPoint -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.y Mozilla SVGPoint.y documentation> 
-getY :: (MonadDOM m) => SVGPoint -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGPointList.hs b/src/JSDOM/Generated/SVGPointList.hs
--- a/src/JSDOM/Generated/SVGPointList.hs
+++ b/src/JSDOM/Generated/SVGPointList.hs
@@ -1,110 +1,76 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGPointList
-       (clear, initialize, initialize_, getItem, getItem_,
-        insertItemBefore, insertItemBefore_, replaceItem, replaceItem_,
-        removeItem, removeItem_, appendItem, appendItem_, getNumberOfItems,
-        SVGPointList(..), gTypeSVGPointList)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.clear Mozilla SVGPointList.clear documentation> 
-clear :: (MonadDOM m) => SVGPointList -> m ()
-clear self = liftDOM (void (self ^. jsf "clear" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/appendItem MDN SVGPointList.appendItem documentation>
+appendItem :: (MonadDOM m) => SVGPointList -> DOMPoint -> m DOMPoint
+appendItem self newItem = liftDOM (((self ^. jsf "appendItem" [toJSVal newItem]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.initialize Mozilla SVGPointList.initialize documentation> 
-initialize ::
-           (MonadDOM m) => SVGPointList -> SVGPoint -> m SVGPoint
-initialize self item
-  = liftDOM
-      ((self ^. jsf "initialize" [toJSVal item]) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/appendItem MDN SVGPointList.appendItem documentation>
+appendItem_ :: (MonadDOM m) => SVGPointList -> DOMPoint -> m ()
+appendItem_ self newItem = liftDOM (void (self ^. jsf "appendItem" [toJSVal newItem]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.initialize Mozilla SVGPointList.initialize documentation> 
-initialize_ :: (MonadDOM m) => SVGPointList -> SVGPoint -> m ()
-initialize_ self item
-  = liftDOM (void (self ^. jsf "initialize" [toJSVal item]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/clear MDN SVGPointList.clear documentation>
+clear :: (MonadDOM m) => SVGPointList -> m ()
+clear self = liftDOM (void (self ^. jsf "clear" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.getItem Mozilla SVGPointList.getItem documentation> 
-getItem :: (MonadDOM m) => SVGPointList -> Word -> m SVGPoint
-getItem self index
-  = liftDOM
-      ((self ^. jsf "getItem" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/getItem MDN SVGPointList.getItem documentation>
+getItem :: (MonadDOM m) => SVGPointList -> Word -> m DOMPoint
+getItem self index = liftDOM (((self ^. jsf "getItem" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.getItem Mozilla SVGPointList.getItem documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/getItem MDN SVGPointList.getItem documentation>
 getItem_ :: (MonadDOM m) => SVGPointList -> Word -> m ()
-getItem_ self index
-  = liftDOM (void (self ^. jsf "getItem" [toJSVal index]))
+getItem_ self index = liftDOM (void (self ^. jsf "getItem" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.insertItemBefore Mozilla SVGPointList.insertItemBefore documentation> 
-insertItemBefore ::
-                 (MonadDOM m) => SVGPointList -> SVGPoint -> Word -> m SVGPoint
-insertItemBefore self item index
-  = liftDOM
-      ((self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/initialize MDN SVGPointList.initialize documentation>
+initialize :: (MonadDOM m) => SVGPointList -> DOMPoint -> m DOMPoint
+initialize self newItem = liftDOM (((self ^. jsf "initialize" [toJSVal newItem]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.insertItemBefore Mozilla SVGPointList.insertItemBefore documentation> 
-insertItemBefore_ ::
-                  (MonadDOM m) => SVGPointList -> SVGPoint -> Word -> m ()
-insertItemBefore_ self item index
-  = liftDOM
-      (void
-         (self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/initialize MDN SVGPointList.initialize documentation>
+initialize_ :: (MonadDOM m) => SVGPointList -> DOMPoint -> m ()
+initialize_ self newItem = liftDOM (void (self ^. jsf "initialize" [toJSVal newItem]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.replaceItem Mozilla SVGPointList.replaceItem documentation> 
-replaceItem ::
-            (MonadDOM m) => SVGPointList -> SVGPoint -> Word -> m SVGPoint
-replaceItem self item index
-  = liftDOM
-      ((self ^. jsf "replaceItem" [toJSVal item, toJSVal index]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "insertItemBefore" [toJSVal newItem, toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.replaceItem Mozilla SVGPointList.replaceItem documentation> 
-replaceItem_ ::
-             (MonadDOM m) => SVGPointList -> SVGPoint -> Word -> m ()
-replaceItem_ self item index
-  = liftDOM
-      (void (self ^. jsf "replaceItem" [toJSVal item, toJSVal 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 (self ^. jsf "insertItemBefore" [toJSVal newItem, toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.removeItem Mozilla SVGPointList.removeItem documentation> 
-removeItem :: (MonadDOM m) => SVGPointList -> Word -> m SVGPoint
-removeItem self index
-  = liftDOM
-      ((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/removeItem MDN SVGPointList.removeItem documentation>
+removeItem :: (MonadDOM m) => SVGPointList -> Word -> m DOMPoint
+removeItem self index = liftDOM (((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.removeItem Mozilla SVGPointList.removeItem documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/removeItem MDN SVGPointList.removeItem documentation>
 removeItem_ :: (MonadDOM m) => SVGPointList -> Word -> m ()
-removeItem_ self index
-  = liftDOM (void (self ^. jsf "removeItem" [toJSVal index]))
+removeItem_ self index = liftDOM (void (self ^. jsf "removeItem" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.appendItem Mozilla SVGPointList.appendItem documentation> 
-appendItem ::
-           (MonadDOM m) => SVGPointList -> SVGPoint -> m SVGPoint
-appendItem self item
-  = liftDOM
-      ((self ^. jsf "appendItem" [toJSVal item]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "replaceItem" [toJSVal newItem, toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.appendItem Mozilla SVGPointList.appendItem documentation> 
-appendItem_ :: (MonadDOM m) => SVGPointList -> SVGPoint -> m ()
-appendItem_ self item
-  = liftDOM (void (self ^. jsf "appendItem" [toJSVal 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 (self ^. jsf "replaceItem" [toJSVal newItem, toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.numberOfItems Mozilla SVGPointList.numberOfItems documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/length MDN SVGPointList.length documentation>
+getLength :: (MonadDOM m) => SVGPointList -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPointList/numberOfItems MDN SVGPointList.numberOfItems documentation>
 getNumberOfItems :: (MonadDOM m) => SVGPointList -> m Word
-getNumberOfItems self
-  = liftDOM
-      (round <$> ((self ^. js "numberOfItems") >>= valToNumber))
+getNumberOfItems self = liftDOM ((P.round <$> ((self ^. js "numberOfItems") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/SVGPolygonElement.hs b/src/JSDOM/Generated/SVGPolygonElement.hs
--- a/src/JSDOM/Generated/SVGPolygonElement.hs
+++ b/src/JSDOM/Generated/SVGPolygonElement.hs
@@ -1,32 +1,17 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGPolygonElement
-       (getPoints, getAnimatedPoints, SVGPolygonElement(..),
-        gTypeSVGPolygonElement)
+       (SVGPolygonElement(..), gTypeSVGPolygonElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement.points Mozilla SVGPolygonElement.points documentation> 
-getPoints :: (MonadDOM m) => SVGPolygonElement -> m SVGPointList
-getPoints self
-  = liftDOM ((self ^. js "points") >>= fromJSValUnchecked)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement.animatedPoints Mozilla SVGPolygonElement.animatedPoints documentation> 
-getAnimatedPoints ::
-                  (MonadDOM m) => SVGPolygonElement -> m SVGPointList
-getAnimatedPoints self
-  = liftDOM ((self ^. js "animatedPoints") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/SVGPolylineElement.hs b/src/JSDOM/Generated/SVGPolylineElement.hs
--- a/src/JSDOM/Generated/SVGPolylineElement.hs
+++ b/src/JSDOM/Generated/SVGPolylineElement.hs
@@ -1,32 +1,17 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGPolylineElement
-       (getPoints, getAnimatedPoints, SVGPolylineElement(..),
-        gTypeSVGPolylineElement)
+       (SVGPolylineElement(..), gTypeSVGPolylineElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement.points Mozilla SVGPolylineElement.points documentation> 
-getPoints :: (MonadDOM m) => SVGPolylineElement -> m SVGPointList
-getPoints self
-  = liftDOM ((self ^. js "points") >>= fromJSValUnchecked)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement.animatedPoints Mozilla SVGPolylineElement.animatedPoints documentation> 
-getAnimatedPoints ::
-                  (MonadDOM m) => SVGPolylineElement -> m SVGPointList
-getAnimatedPoints self
-  = liftDOM ((self ^. js "animatedPoints") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/SVGPreserveAspectRatio.hs b/src/JSDOM/Generated/SVGPreserveAspectRatio.hs
--- a/src/JSDOM/Generated/SVGPreserveAspectRatio.hs
+++ b/src/JSDOM/Generated/SVGPreserveAspectRatio.hs
@@ -1,68 +1,60 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.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, setAlign, getAlign, setMeetOrSlice,
-        getMeetOrSlice, SVGPreserveAspectRatio(..),
-        gTypeSVGPreserveAspectRatio)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPreserveAspectRatio/align MDN SVGPreserveAspectRatio.align documentation>
+setAlign :: (MonadDOM m) => SVGPreserveAspectRatio -> Word -> m ()
+setAlign self val = liftDOM (void (self ^. jss "align" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPreserveAspectRatio/align MDN SVGPreserveAspectRatio.align documentation>
+getAlign :: (MonadDOM m) => SVGPreserveAspectRatio -> m Word
+getAlign self = liftDOM ((P.round <$> ((self ^. js "align") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPreserveAspectRatio/meetOrSlice MDN SVGPreserveAspectRatio.meetOrSlice documentation>
+setMeetOrSlice :: (MonadDOM m) => SVGPreserveAspectRatio -> Word -> m ()
+setMeetOrSlice self val = liftDOM (void (self ^. jss "meetOrSlice" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGPreserveAspectRatio/meetOrSlice MDN SVGPreserveAspectRatio.meetOrSlice documentation>
+getMeetOrSlice :: (MonadDOM m) => SVGPreserveAspectRatio -> m Word
+getMeetOrSlice self = liftDOM ((P.round <$> ((self ^. js "meetOrSlice") >>= valToNumber)))
+
 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
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.align Mozilla SVGPreserveAspectRatio.align documentation> 
-setAlign :: (MonadDOM m) => SVGPreserveAspectRatio -> Word -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+pattern SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.align Mozilla SVGPreserveAspectRatio.align documentation> 
-getAlign :: (MonadDOM m) => SVGPreserveAspectRatio -> m Word
-getAlign self
-  = liftDOM (round <$> ((self ^. js "align") >>= valToNumber))
+pattern SVG_MEETORSLICE_UNKNOWN = 0
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.meetOrSlice Mozilla SVGPreserveAspectRatio.meetOrSlice documentation> 
-setMeetOrSlice ::
-               (MonadDOM m) => SVGPreserveAspectRatio -> Word -> m ()
-setMeetOrSlice self val
-  = liftDOM (self ^. jss "meetOrSlice" (toJSVal val))
+pattern SVG_MEETORSLICE_MEET = 1
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.meetOrSlice Mozilla SVGPreserveAspectRatio.meetOrSlice documentation> 
-getMeetOrSlice :: (MonadDOM m) => SVGPreserveAspectRatio -> m Word
-getMeetOrSlice self
-  = liftDOM (round <$> ((self ^. js "meetOrSlice") >>= valToNumber))
+pattern SVG_MEETORSLICE_SLICE = 2
diff --git a/src/JSDOM/Generated/SVGRadialGradientElement.hs b/src/JSDOM/Generated/SVGRadialGradientElement.hs
--- a/src/JSDOM/Generated/SVGRadialGradientElement.hs
+++ b/src/JSDOM/Generated/SVGRadialGradientElement.hs
@@ -1,51 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGRadialGradientElement
-       (getCx, getCy, getR, getFx, getFy, getFr,
-        SVGRadialGradientElement(..), gTypeSVGRadialGradientElement)
+       (getCx, getCy, getR, getFx, getFy, getFr, SVGRadialGradientElement(..), gTypeSVGRadialGradientElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.cx Mozilla SVGRadialGradientElement.cx documentation> 
-getCx ::
-      (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
-getCx self = liftDOM ((self ^. js "cx") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRadialGradientElement/cx MDN SVGRadialGradientElement.cx documentation>
+getCx :: (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getCx self = liftDOM (((self ^. js "cx") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.cy Mozilla SVGRadialGradientElement.cy documentation> 
-getCy ::
-      (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
-getCy self = liftDOM ((self ^. js "cy") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRadialGradientElement/cy MDN SVGRadialGradientElement.cy documentation>
+getCy :: (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getCy self = liftDOM (((self ^. js "cy") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.r Mozilla SVGRadialGradientElement.r documentation> 
-getR ::
-     (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
-getR self = liftDOM ((self ^. js "r") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRadialGradientElement/r MDN SVGRadialGradientElement.r documentation>
+getR :: (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getR self = liftDOM (((self ^. js "r") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fx Mozilla SVGRadialGradientElement.fx documentation> 
-getFx ::
-      (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
-getFx self = liftDOM ((self ^. js "fx") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRadialGradientElement/fx MDN SVGRadialGradientElement.fx documentation>
+getFx :: (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getFx self = liftDOM (((self ^. js "fx") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fy Mozilla SVGRadialGradientElement.fy documentation> 
-getFy ::
-      (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
-getFy self = liftDOM ((self ^. js "fy") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRadialGradientElement/fy MDN SVGRadialGradientElement.fy documentation>
+getFy :: (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getFy self = liftDOM (((self ^. js "fy") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fr Mozilla SVGRadialGradientElement.fr documentation> 
-getFr ::
-      (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
-getFr self = liftDOM ((self ^. js "fr") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRadialGradientElement/fr MDN SVGRadialGradientElement.fr documentation>
+getFr :: (MonadDOM m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getFr self = liftDOM (((self ^. js "fr") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGRect.hs b/src/JSDOM/Generated/SVGRect.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGRect.hs
+++ /dev/null
@@ -1,57 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGRect
-       (setX, getX, setY, getY, setWidth, getWidth, setHeight, getHeight,
-        SVGRect(..), gTypeSVGRect)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.x Mozilla SVGRect.x documentation> 
-setX :: (MonadDOM m) => SVGRect -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.x Mozilla SVGRect.x documentation> 
-getX :: (MonadDOM m) => SVGRect -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.y Mozilla SVGRect.y documentation> 
-setY :: (MonadDOM m) => SVGRect -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.y Mozilla SVGRect.y documentation> 
-getY :: (MonadDOM m) => SVGRect -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.width Mozilla SVGRect.width documentation> 
-setWidth :: (MonadDOM m) => SVGRect -> Float -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.width Mozilla SVGRect.width documentation> 
-getWidth :: (MonadDOM m) => SVGRect -> m Float
-getWidth self
-  = liftDOM (realToFrac <$> ((self ^. js "width") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.height Mozilla SVGRect.height documentation> 
-setHeight :: (MonadDOM m) => SVGRect -> Float -> m ()
-setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.height Mozilla SVGRect.height documentation> 
-getHeight :: (MonadDOM m) => SVGRect -> m Float
-getHeight self
-  = liftDOM (realToFrac <$> ((self ^. js "height") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGRectElement.hs b/src/JSDOM/Generated/SVGRectElement.hs
--- a/src/JSDOM/Generated/SVGRectElement.hs
+++ b/src/JSDOM/Generated/SVGRectElement.hs
@@ -1,47 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGRectElement
-       (getX, getY, getWidth, getHeight, getRx, getRy, SVGRectElement(..),
-        gTypeSVGRectElement)
+       (getX, getY, getWidth, getHeight, getRx, getRy, SVGRectElement(..), gTypeSVGRectElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.x Mozilla SVGRectElement.x documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRectElement/x MDN SVGRectElement.x documentation>
 getX :: (MonadDOM m) => SVGRectElement -> m SVGAnimatedLength
-getX self = liftDOM ((self ^. js "x") >>= fromJSValUnchecked)
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.y Mozilla SVGRectElement.y documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRectElement/y MDN SVGRectElement.y documentation>
 getY :: (MonadDOM m) => SVGRectElement -> m SVGAnimatedLength
-getY self = liftDOM ((self ^. js "y") >>= fromJSValUnchecked)
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.width Mozilla SVGRectElement.width documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRectElement/width MDN SVGRectElement.width documentation>
 getWidth :: (MonadDOM m) => SVGRectElement -> m SVGAnimatedLength
-getWidth self
-  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.height Mozilla SVGRectElement.height documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRectElement/height MDN SVGRectElement.height documentation>
 getHeight :: (MonadDOM m) => SVGRectElement -> m SVGAnimatedLength
-getHeight self
-  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.rx Mozilla SVGRectElement.rx documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRectElement/rx MDN SVGRectElement.rx documentation>
 getRx :: (MonadDOM m) => SVGRectElement -> m SVGAnimatedLength
-getRx self = liftDOM ((self ^. js "rx") >>= fromJSValUnchecked)
+getRx self = liftDOM (((self ^. js "rx") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.ry Mozilla SVGRectElement.ry documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGRectElement/ry MDN SVGRectElement.ry documentation>
 getRy :: (MonadDOM m) => SVGRectElement -> m SVGAnimatedLength
-getRy self = liftDOM ((self ^. js "ry") >>= fromJSValUnchecked)
+getRy self = liftDOM (((self ^. js "ry") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGRenderingIntent.hs b/src/JSDOM/Generated/SVGRenderingIntent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGRenderingIntent.hs
+++ /dev/null
@@ -1,31 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.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/JSDOM/Generated/SVGSVGElement.hs b/src/JSDOM/Generated/SVGSVGElement.hs
--- a/src/JSDOM/Generated/SVGSVGElement.hs
+++ b/src/JSDOM/Generated/SVGSVGElement.hs
@@ -1,402 +1,208 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGSVGElement
-       (suspendRedraw, suspendRedraw_, unsuspendRedraw,
-        unsuspendRedrawAll, forceRedraw, pauseAnimations,
-        unpauseAnimations, animationsPaused, animationsPaused_,
-        getCurrentTime, getCurrentTime_, setCurrentTime,
-        getIntersectionList, getIntersectionList_, getEnclosureList,
-        getEnclosureList_, checkIntersection, checkIntersection_,
-        checkEnclosure, checkEnclosure_, deselectAll, createSVGNumber,
-        createSVGNumber_, createSVGLength, createSVGLength_,
-        createSVGAngle, createSVGAngle_, createSVGPoint, createSVGPoint_,
-        createSVGMatrix, createSVGMatrix_, createSVGRect, createSVGRect_,
-        createSVGTransform, createSVGTransform_,
-        createSVGTransformFromMatrix, createSVGTransformFromMatrix_,
-        getElementById, getElementById_, getX, getY, getWidth, getHeight,
-        setContentScriptType, getContentScriptType, setContentStyleType,
-        getContentStyleType, getViewport, getPixelUnitToMillimeterX,
-        getPixelUnitToMillimeterY, getScreenPixelToMillimeterX,
-        getScreenPixelToMillimeterY, getUseCurrentView, getCurrentView,
-        setCurrentScale, getCurrentScale, getCurrentTranslate,
-        SVGSVGElement(..), gTypeSVGSVGElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.suspendRedraw Mozilla SVGSVGElement.suspendRedraw documentation> 
-suspendRedraw ::
-              (MonadDOM m) => SVGSVGElement -> Maybe Word -> m Word
-suspendRedraw self maxWaitMilliseconds
-  = liftDOM
-      (round <$>
-         ((self ^. jsf "suspendRedraw" [toJSVal maxWaitMilliseconds]) >>=
-            valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.suspendRedraw Mozilla SVGSVGElement.suspendRedraw documentation> 
-suspendRedraw_ ::
-               (MonadDOM m) => SVGSVGElement -> Maybe Word -> m ()
-suspendRedraw_ self maxWaitMilliseconds
-  = liftDOM
-      (void (self ^. jsf "suspendRedraw" [toJSVal maxWaitMilliseconds]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.unsuspendRedraw Mozilla SVGSVGElement.unsuspendRedraw documentation> 
-unsuspendRedraw ::
-                (MonadDOM m) => SVGSVGElement -> Maybe Word -> m ()
-unsuspendRedraw self suspendHandleId
-  = liftDOM
-      (void (self ^. jsf "unsuspendRedraw" [toJSVal suspendHandleId]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.unsuspendRedrawAll Mozilla SVGSVGElement.unsuspendRedrawAll documentation> 
-unsuspendRedrawAll :: (MonadDOM m) => SVGSVGElement -> m ()
-unsuspendRedrawAll self
-  = liftDOM (void (self ^. jsf "unsuspendRedrawAll" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.forceRedraw Mozilla SVGSVGElement.forceRedraw documentation> 
-forceRedraw :: (MonadDOM m) => SVGSVGElement -> m ()
-forceRedraw self = liftDOM (void (self ^. jsf "forceRedraw" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.pauseAnimations Mozilla SVGSVGElement.pauseAnimations documentation> 
-pauseAnimations :: (MonadDOM m) => SVGSVGElement -> m ()
-pauseAnimations self
-  = liftDOM (void (self ^. jsf "pauseAnimations" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.unpauseAnimations Mozilla SVGSVGElement.unpauseAnimations documentation> 
-unpauseAnimations :: (MonadDOM m) => SVGSVGElement -> m ()
-unpauseAnimations self
-  = liftDOM (void (self ^. jsf "unpauseAnimations" ()))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.animationsPaused Mozilla SVGSVGElement.animationsPaused documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/animationsPaused MDN SVGSVGElement.animationsPaused documentation>
 animationsPaused :: (MonadDOM m) => SVGSVGElement -> m Bool
-animationsPaused self
-  = liftDOM ((self ^. jsf "animationsPaused" ()) >>= valToBool)
+animationsPaused self = liftDOM (((self ^. jsf "animationsPaused" ()) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.animationsPaused Mozilla SVGSVGElement.animationsPaused documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/animationsPaused MDN SVGSVGElement.animationsPaused documentation>
 animationsPaused_ :: (MonadDOM m) => SVGSVGElement -> m ()
-animationsPaused_ self
-  = liftDOM (void (self ^. jsf "animationsPaused" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getCurrentTime Mozilla SVGSVGElement.getCurrentTime documentation> 
-getCurrentTime :: (MonadDOM m) => SVGSVGElement -> m Float
-getCurrentTime self
-  = liftDOM
-      (realToFrac <$>
-         ((self ^. jsf "getCurrentTime" ()) >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getCurrentTime Mozilla SVGSVGElement.getCurrentTime documentation> 
-getCurrentTime_ :: (MonadDOM m) => SVGSVGElement -> m ()
-getCurrentTime_ self
-  = liftDOM (void (self ^. jsf "getCurrentTime" ()))
+animationsPaused_ self = liftDOM (void (self ^. jsf "animationsPaused" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.setCurrentTime Mozilla SVGSVGElement.setCurrentTime documentation> 
-setCurrentTime ::
-               (MonadDOM m) => SVGSVGElement -> Maybe Float -> m ()
-setCurrentTime self seconds
-  = liftDOM (void (self ^. jsf "setCurrentTime" [toJSVal seconds]))
+-- | <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 (((self ^. jsf "checkEnclosure" [toJSVal element, toJSVal rect]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getIntersectionList Mozilla SVGSVGElement.getIntersectionList documentation> 
-getIntersectionList ::
-                    (MonadDOM m, IsSVGElement referenceElement) =>
-                      SVGSVGElement -> SVGRect -> Maybe referenceElement -> m NodeList
-getIntersectionList self rect referenceElement
-  = liftDOM
-      ((self ^. jsf "getIntersectionList"
-          [toJSVal rect, toJSVal referenceElement])
-         >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "checkEnclosure" [toJSVal element, toJSVal rect]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getIntersectionList Mozilla SVGSVGElement.getIntersectionList documentation> 
-getIntersectionList_ ::
-                     (MonadDOM m, IsSVGElement referenceElement) =>
-                       SVGSVGElement -> SVGRect -> Maybe referenceElement -> m ()
-getIntersectionList_ self rect referenceElement
-  = liftDOM
-      (void
-         (self ^. jsf "getIntersectionList"
-            [toJSVal rect, toJSVal referenceElement]))
+-- | <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 (((self ^. jsf "checkIntersection" [toJSVal element, toJSVal rect]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getEnclosureList Mozilla SVGSVGElement.getEnclosureList documentation> 
-getEnclosureList ::
-                 (MonadDOM m, IsSVGElement referenceElement) =>
-                   SVGSVGElement -> SVGRect -> Maybe referenceElement -> m NodeList
-getEnclosureList self rect referenceElement
-  = liftDOM
-      ((self ^. jsf "getEnclosureList"
-          [toJSVal rect, toJSVal referenceElement])
-         >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "checkIntersection" [toJSVal element, toJSVal rect]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getEnclosureList Mozilla SVGSVGElement.getEnclosureList documentation> 
-getEnclosureList_ ::
-                  (MonadDOM m, IsSVGElement referenceElement) =>
-                    SVGSVGElement -> SVGRect -> Maybe referenceElement -> m ()
-getEnclosureList_ self rect referenceElement
-  = liftDOM
-      (void
-         (self ^. jsf "getEnclosureList"
-            [toJSVal rect, toJSVal referenceElement]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGAngle MDN SVGSVGElement.createSVGAngle documentation>
+createSVGAngle :: (MonadDOM m) => SVGSVGElement -> m SVGAngle
+createSVGAngle self = liftDOM (((self ^. jsf "createSVGAngle" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.checkIntersection Mozilla SVGSVGElement.checkIntersection documentation> 
-checkIntersection ::
-                  (MonadDOM m, IsSVGElement element) =>
-                    SVGSVGElement -> Maybe element -> SVGRect -> m Bool
-checkIntersection self element rect
-  = liftDOM
-      ((self ^. jsf "checkIntersection" [toJSVal element, toJSVal rect])
-         >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGAngle MDN SVGSVGElement.createSVGAngle documentation>
+createSVGAngle_ :: (MonadDOM m) => SVGSVGElement -> m ()
+createSVGAngle_ self = liftDOM (void (self ^. jsf "createSVGAngle" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.checkIntersection Mozilla SVGSVGElement.checkIntersection documentation> 
-checkIntersection_ ::
-                   (MonadDOM m, IsSVGElement element) =>
-                     SVGSVGElement -> Maybe element -> SVGRect -> m ()
-checkIntersection_ self element rect
-  = liftDOM
-      (void
-         (self ^. jsf "checkIntersection" [toJSVal element, toJSVal rect]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGLength MDN SVGSVGElement.createSVGLength documentation>
+createSVGLength :: (MonadDOM m) => SVGSVGElement -> m SVGLength
+createSVGLength self = liftDOM (((self ^. jsf "createSVGLength" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.checkEnclosure Mozilla SVGSVGElement.checkEnclosure documentation> 
-checkEnclosure ::
-               (MonadDOM m, IsSVGElement element) =>
-                 SVGSVGElement -> Maybe element -> SVGRect -> m Bool
-checkEnclosure self element rect
-  = liftDOM
-      ((self ^. jsf "checkEnclosure" [toJSVal element, toJSVal rect]) >>=
-         valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGLength MDN SVGSVGElement.createSVGLength documentation>
+createSVGLength_ :: (MonadDOM m) => SVGSVGElement -> m ()
+createSVGLength_ self = liftDOM (void (self ^. jsf "createSVGLength" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.checkEnclosure Mozilla SVGSVGElement.checkEnclosure documentation> 
-checkEnclosure_ ::
-                (MonadDOM m, IsSVGElement element) =>
-                  SVGSVGElement -> Maybe element -> SVGRect -> m ()
-checkEnclosure_ self element rect
-  = liftDOM
-      (void
-         (self ^. jsf "checkEnclosure" [toJSVal element, toJSVal rect]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGMatrix MDN SVGSVGElement.createSVGMatrix documentation>
+createSVGMatrix :: (MonadDOM m) => SVGSVGElement -> m DOMMatrix
+createSVGMatrix self = liftDOM (((self ^. jsf "createSVGMatrix" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.deselectAll Mozilla SVGSVGElement.deselectAll documentation> 
-deselectAll :: (MonadDOM m) => SVGSVGElement -> m ()
-deselectAll self = liftDOM (void (self ^. jsf "deselectAll" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGMatrix MDN SVGSVGElement.createSVGMatrix documentation>
+createSVGMatrix_ :: (MonadDOM m) => SVGSVGElement -> m ()
+createSVGMatrix_ self = liftDOM (void (self ^. jsf "createSVGMatrix" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGNumber Mozilla SVGSVGElement.createSVGNumber documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGNumber MDN SVGSVGElement.createSVGNumber documentation>
 createSVGNumber :: (MonadDOM m) => SVGSVGElement -> m SVGNumber
-createSVGNumber self
-  = liftDOM
-      ((self ^. jsf "createSVGNumber" ()) >>= fromJSValUnchecked)
+createSVGNumber self = liftDOM (((self ^. jsf "createSVGNumber" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGNumber Mozilla SVGSVGElement.createSVGNumber documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGNumber MDN SVGSVGElement.createSVGNumber documentation>
 createSVGNumber_ :: (MonadDOM m) => SVGSVGElement -> m ()
-createSVGNumber_ self
-  = liftDOM (void (self ^. jsf "createSVGNumber" ()))
+createSVGNumber_ self = liftDOM (void (self ^. jsf "createSVGNumber" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGLength Mozilla SVGSVGElement.createSVGLength documentation> 
-createSVGLength :: (MonadDOM m) => SVGSVGElement -> m SVGLength
-createSVGLength self
-  = liftDOM
-      ((self ^. jsf "createSVGLength" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGPoint MDN SVGSVGElement.createSVGPoint documentation>
+createSVGPoint :: (MonadDOM m) => SVGSVGElement -> m DOMPoint
+createSVGPoint self = liftDOM (((self ^. jsf "createSVGPoint" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGLength Mozilla SVGSVGElement.createSVGLength documentation> 
-createSVGLength_ :: (MonadDOM m) => SVGSVGElement -> m ()
-createSVGLength_ self
-  = liftDOM (void (self ^. jsf "createSVGLength" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGPoint MDN SVGSVGElement.createSVGPoint documentation>
+createSVGPoint_ :: (MonadDOM m) => SVGSVGElement -> m ()
+createSVGPoint_ self = liftDOM (void (self ^. jsf "createSVGPoint" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGAngle Mozilla SVGSVGElement.createSVGAngle documentation> 
-createSVGAngle :: (MonadDOM m) => SVGSVGElement -> m SVGAngle
-createSVGAngle self
-  = liftDOM
-      ((self ^. jsf "createSVGAngle" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGRect MDN SVGSVGElement.createSVGRect documentation>
+createSVGRect :: (MonadDOM m) => SVGSVGElement -> m DOMRect
+createSVGRect self = liftDOM (((self ^. jsf "createSVGRect" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGAngle Mozilla SVGSVGElement.createSVGAngle documentation> 
-createSVGAngle_ :: (MonadDOM m) => SVGSVGElement -> m ()
-createSVGAngle_ self
-  = liftDOM (void (self ^. jsf "createSVGAngle" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGRect MDN SVGSVGElement.createSVGRect documentation>
+createSVGRect_ :: (MonadDOM m) => SVGSVGElement -> m ()
+createSVGRect_ self = liftDOM (void (self ^. jsf "createSVGRect" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGPoint Mozilla SVGSVGElement.createSVGPoint documentation> 
-createSVGPoint :: (MonadDOM m) => SVGSVGElement -> m SVGPoint
-createSVGPoint self
-  = liftDOM
-      ((self ^. jsf "createSVGPoint" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGTransform MDN SVGSVGElement.createSVGTransform documentation>
+createSVGTransform :: (MonadDOM m) => SVGSVGElement -> m SVGTransform
+createSVGTransform self = liftDOM (((self ^. jsf "createSVGTransform" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGPoint Mozilla SVGSVGElement.createSVGPoint documentation> 
-createSVGPoint_ :: (MonadDOM m) => SVGSVGElement -> m ()
-createSVGPoint_ self
-  = liftDOM (void (self ^. jsf "createSVGPoint" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/createSVGTransform MDN SVGSVGElement.createSVGTransform documentation>
+createSVGTransform_ :: (MonadDOM m) => SVGSVGElement -> m ()
+createSVGTransform_ self = liftDOM (void (self ^. jsf "createSVGTransform" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGMatrix Mozilla SVGSVGElement.createSVGMatrix documentation> 
-createSVGMatrix :: (MonadDOM m) => SVGSVGElement -> m SVGMatrix
-createSVGMatrix self
-  = liftDOM
-      ((self ^. jsf "createSVGMatrix" ()) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "createSVGTransformFromMatrix" [P.maybe (P.return jsUndefined) toJSVal matrix]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGMatrix Mozilla SVGSVGElement.createSVGMatrix documentation> 
-createSVGMatrix_ :: (MonadDOM m) => SVGSVGElement -> m ()
-createSVGMatrix_ self
-  = liftDOM (void (self ^. jsf "createSVGMatrix" ()))
+-- | <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 (self ^. jsf "createSVGTransformFromMatrix" [P.maybe (P.return jsUndefined) toJSVal matrix]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGRect Mozilla SVGSVGElement.createSVGRect documentation> 
-createSVGRect :: (MonadDOM m) => SVGSVGElement -> m SVGRect
-createSVGRect self
-  = liftDOM ((self ^. jsf "createSVGRect" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/deselectAll MDN SVGSVGElement.deselectAll documentation>
+deselectAll :: (MonadDOM m) => SVGSVGElement -> m ()
+deselectAll self = liftDOM (void (self ^. jsf "deselectAll" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGRect Mozilla SVGSVGElement.createSVGRect documentation> 
-createSVGRect_ :: (MonadDOM m) => SVGSVGElement -> m ()
-createSVGRect_ self
-  = liftDOM (void (self ^. jsf "createSVGRect" ()))
+-- | <https://w3c.github.io/svgwg/svg2-draft/struct.html#__svg__SVGSVGElement__forceRedraw SVGSVGElement.forceRedraw specification>
+forceRedraw :: (MonadDOM m) => SVGSVGElement -> m ()
+forceRedraw self = liftDOM (void (self ^. jsf "forceRedraw" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransform Mozilla SVGSVGElement.createSVGTransform documentation> 
-createSVGTransform ::
-                   (MonadDOM m) => SVGSVGElement -> m SVGTransform
-createSVGTransform self
-  = liftDOM
-      ((self ^. jsf "createSVGTransform" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/getCurrentTime MDN SVGSVGElement.getCurrentTime documentation>
+getCurrentTime :: (MonadDOM m) => SVGSVGElement -> m Float
+getCurrentTime self = liftDOM ((P.realToFrac <$> ((self ^. jsf "getCurrentTime" ()) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransform Mozilla SVGSVGElement.createSVGTransform documentation> 
-createSVGTransform_ :: (MonadDOM m) => SVGSVGElement -> m ()
-createSVGTransform_ self
-  = liftDOM (void (self ^. jsf "createSVGTransform" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/getCurrentTime MDN SVGSVGElement.getCurrentTime documentation>
+getCurrentTime_ :: (MonadDOM m) => SVGSVGElement -> m ()
+getCurrentTime_ self = liftDOM (void (self ^. jsf "getCurrentTime" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransformFromMatrix Mozilla SVGSVGElement.createSVGTransformFromMatrix documentation> 
-createSVGTransformFromMatrix ::
-                             (MonadDOM m) => SVGSVGElement -> SVGMatrix -> m SVGTransform
-createSVGTransformFromMatrix self matrix
-  = liftDOM
-      ((self ^. jsf "createSVGTransformFromMatrix" [toJSVal matrix]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "getElementById" [toJSVal elementId]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransformFromMatrix Mozilla SVGSVGElement.createSVGTransformFromMatrix documentation> 
-createSVGTransformFromMatrix_ ::
-                              (MonadDOM m) => SVGSVGElement -> SVGMatrix -> m ()
-createSVGTransformFromMatrix_ self matrix
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGTransformFromMatrix" [toJSVal 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 (self ^. jsf "getElementById" [toJSVal elementId]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getElementById Mozilla SVGSVGElement.getElementById documentation> 
-getElementById ::
-               (MonadDOM m, ToJSString elementId) =>
-                 SVGSVGElement -> elementId -> m Element
-getElementById self elementId
-  = liftDOM
-      ((self ^. jsf "getElementById" [toJSVal elementId]) >>=
-         fromJSValUnchecked)
+-- | <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 ((((self ^. jsf "getElementById" [toJSVal 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_ ::
-                (MonadDOM m, ToJSString elementId) =>
-                  SVGSVGElement -> elementId -> m ()
-getElementById_ self elementId
-  = liftDOM (void (self ^. jsf "getElementById" [toJSVal 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 (((self ^. jsf "getElementById" [toJSVal elementId]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.x Mozilla SVGSVGElement.x documentation> 
-getX :: (MonadDOM m) => SVGSVGElement -> m SVGAnimatedLength
-getX self = liftDOM ((self ^. js "x") >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "getEnclosureList" [toJSVal rect, toJSVal referenceElement]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.y Mozilla SVGSVGElement.y documentation> 
-getY :: (MonadDOM m) => SVGSVGElement -> m SVGAnimatedLength
-getY self = liftDOM ((self ^. js "y") >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "getEnclosureList" [toJSVal rect, toJSVal referenceElement]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.width Mozilla SVGSVGElement.width documentation> 
-getWidth :: (MonadDOM m) => SVGSVGElement -> m SVGAnimatedLength
-getWidth self
-  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "getIntersectionList" [toJSVal rect, toJSVal referenceElement]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.height Mozilla SVGSVGElement.height documentation> 
-getHeight :: (MonadDOM m) => SVGSVGElement -> m SVGAnimatedLength
-getHeight self
-  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "getIntersectionList" [toJSVal rect, toJSVal referenceElement]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.contentScriptType Mozilla SVGSVGElement.contentScriptType documentation> 
-setContentScriptType ::
-                     (MonadDOM m, ToJSString val) => SVGSVGElement -> val -> m ()
-setContentScriptType self val
-  = liftDOM (self ^. jss "contentScriptType" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/pauseAnimations MDN SVGSVGElement.pauseAnimations documentation>
+pauseAnimations :: (MonadDOM m) => SVGSVGElement -> m ()
+pauseAnimations self = liftDOM (void (self ^. jsf "pauseAnimations" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.contentScriptType Mozilla SVGSVGElement.contentScriptType documentation> 
-getContentScriptType ::
-                     (MonadDOM m, FromJSString result) => SVGSVGElement -> m result
-getContentScriptType self
-  = liftDOM ((self ^. js "contentScriptType") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/setCurrentTime MDN SVGSVGElement.setCurrentTime documentation>
+setCurrentTime :: (MonadDOM m) => SVGSVGElement -> Float -> m ()
+setCurrentTime self seconds = liftDOM (void (self ^. jsf "setCurrentTime" [toJSVal seconds]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.contentStyleType Mozilla SVGSVGElement.contentStyleType documentation> 
-setContentStyleType ::
-                    (MonadDOM m, ToJSString val) => SVGSVGElement -> val -> m ()
-setContentStyleType self val
-  = liftDOM (self ^. jss "contentStyleType" (toJSVal val))
+-- | <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 ((P.round <$> ((self ^. jsf "suspendRedraw" [toJSVal maxWaitMilliseconds]) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.contentStyleType Mozilla SVGSVGElement.contentStyleType documentation> 
-getContentStyleType ::
-                    (MonadDOM m, FromJSString result) => SVGSVGElement -> m result
-getContentStyleType self
-  = liftDOM ((self ^. js "contentStyleType") >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "suspendRedraw" [toJSVal maxWaitMilliseconds]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.viewport Mozilla SVGSVGElement.viewport documentation> 
-getViewport :: (MonadDOM m) => SVGSVGElement -> m SVGRect
-getViewport self
-  = liftDOM ((self ^. js "viewport") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/unpauseAnimations MDN SVGSVGElement.unpauseAnimations documentation>
+unpauseAnimations :: (MonadDOM m) => SVGSVGElement -> m ()
+unpauseAnimations self = liftDOM (void (self ^. jsf "unpauseAnimations" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.pixelUnitToMillimeterX Mozilla SVGSVGElement.pixelUnitToMillimeterX documentation> 
-getPixelUnitToMillimeterX ::
-                          (MonadDOM m) => SVGSVGElement -> m Float
-getPixelUnitToMillimeterX self
-  = liftDOM
-      (realToFrac <$>
-         ((self ^. js "pixelUnitToMillimeterX") >>= valToNumber))
+-- | <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 (self ^. jsf "unsuspendRedraw" [toJSVal suspendHandleID]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.pixelUnitToMillimeterY Mozilla SVGSVGElement.pixelUnitToMillimeterY documentation> 
-getPixelUnitToMillimeterY ::
-                          (MonadDOM m) => SVGSVGElement -> m Float
-getPixelUnitToMillimeterY self
-  = liftDOM
-      (realToFrac <$>
-         ((self ^. js "pixelUnitToMillimeterY") >>= valToNumber))
+-- | <https://w3c.github.io/svgwg/svg2-draft/struct.html#__svg__SVGSVGElement__unsuspendRedrawAll SVGSVGElement.unsuspendRedrawAll specification>
+unsuspendRedrawAll :: (MonadDOM m) => SVGSVGElement -> m ()
+unsuspendRedrawAll self = liftDOM (void (self ^. jsf "unsuspendRedrawAll" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.screenPixelToMillimeterX Mozilla SVGSVGElement.screenPixelToMillimeterX documentation> 
-getScreenPixelToMillimeterX ::
-                            (MonadDOM m) => SVGSVGElement -> m Float
-getScreenPixelToMillimeterX self
-  = liftDOM
-      (realToFrac <$>
-         ((self ^. js "screenPixelToMillimeterX") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/x MDN SVGSVGElement.x documentation>
+getX :: (MonadDOM m) => SVGSVGElement -> m SVGAnimatedLength
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.screenPixelToMillimeterY Mozilla SVGSVGElement.screenPixelToMillimeterY documentation> 
-getScreenPixelToMillimeterY ::
-                            (MonadDOM m) => SVGSVGElement -> m Float
-getScreenPixelToMillimeterY self
-  = liftDOM
-      (realToFrac <$>
-         ((self ^. js "screenPixelToMillimeterY") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/y MDN SVGSVGElement.y documentation>
+getY :: (MonadDOM m) => SVGSVGElement -> m SVGAnimatedLength
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.useCurrentView Mozilla SVGSVGElement.useCurrentView documentation> 
-getUseCurrentView :: (MonadDOM m) => SVGSVGElement -> m Bool
-getUseCurrentView self
-  = liftDOM ((self ^. js "useCurrentView") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/width MDN SVGSVGElement.width documentation>
+getWidth :: (MonadDOM m) => SVGSVGElement -> m SVGAnimatedLength
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentView Mozilla SVGSVGElement.currentView documentation> 
-getCurrentView :: (MonadDOM m) => SVGSVGElement -> m SVGViewSpec
-getCurrentView self
-  = liftDOM ((self ^. js "currentView") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/height MDN SVGSVGElement.height documentation>
+getHeight :: (MonadDOM m) => SVGSVGElement -> m SVGAnimatedLength
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentScale Mozilla SVGSVGElement.currentScale documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/currentScale MDN SVGSVGElement.currentScale documentation>
 setCurrentScale :: (MonadDOM m) => SVGSVGElement -> Float -> m ()
-setCurrentScale self val
-  = liftDOM (self ^. jss "currentScale" (toJSVal val))
+setCurrentScale self val = liftDOM (void (self ^. jss "currentScale" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentScale Mozilla SVGSVGElement.currentScale documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/currentScale MDN SVGSVGElement.currentScale documentation>
 getCurrentScale :: (MonadDOM m) => SVGSVGElement -> m Float
-getCurrentScale self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "currentScale") >>= valToNumber))
+getCurrentScale self = liftDOM ((P.realToFrac <$> ((self ^. js "currentScale") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentTranslate Mozilla SVGSVGElement.currentTranslate documentation> 
-getCurrentTranslate :: (MonadDOM m) => SVGSVGElement -> m SVGPoint
-getCurrentTranslate self
-  = liftDOM ((self ^. js "currentTranslate") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGSVGElement/currentTranslate MDN SVGSVGElement.currentTranslate documentation>
+getCurrentTranslate :: (MonadDOM m) => SVGSVGElement -> m DOMPoint
+getCurrentTranslate self = liftDOM (((self ^. js "currentTranslate") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGScriptElement.hs b/src/JSDOM/Generated/SVGScriptElement.hs
--- a/src/JSDOM/Generated/SVGScriptElement.hs
+++ b/src/JSDOM/Generated/SVGScriptElement.hs
@@ -1,30 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGScriptElement
        (setType, getType, SVGScriptElement(..), gTypeSVGScriptElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement.type Mozilla SVGScriptElement.type documentation> 
-setType ::
-        (MonadDOM m, ToJSString val) => SVGScriptElement -> val -> m ()
-setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+-- | <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 (self ^. jss "type" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement.type Mozilla SVGScriptElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => SVGScriptElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGScriptElement/type MDN SVGScriptElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => SVGScriptElement -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGSetElement.hs b/src/JSDOM/Generated/SVGSetElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGSetElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from svg-animations (webref). Do not edit.
+module JSDOM.Generated.SVGSetElement
+       (SVGSetElement(..), gTypeSVGSetElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGStopElement.hs b/src/JSDOM/Generated/SVGStopElement.hs
--- a/src/JSDOM/Generated/SVGStopElement.hs
+++ b/src/JSDOM/Generated/SVGStopElement.hs
@@ -1,24 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGStopElement
-       (getOffset, SVGStopElement(..), gTypeSVGStopElement) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (getOffset, SVGStopElement(..), gTypeSVGStopElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStopElement.offset Mozilla SVGStopElement.offset documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStopElement/offset MDN SVGStopElement.offset documentation>
 getOffset :: (MonadDOM m) => SVGStopElement -> m SVGAnimatedNumber
-getOffset self
-  = liftDOM ((self ^. js "offset") >>= fromJSValUnchecked)
+getOffset self = liftDOM (((self ^. js "offset") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGStringList.hs b/src/JSDOM/Generated/SVGStringList.hs
--- a/src/JSDOM/Generated/SVGStringList.hs
+++ b/src/JSDOM/Generated/SVGStringList.hs
@@ -1,122 +1,76 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGStringList
-       (clear, initialize, initialize_, getItem, getItem_,
-        insertItemBefore, insertItemBefore_, replaceItem, replaceItem_,
-        removeItem, removeItem_, appendItem, appendItem_, getNumberOfItems,
-        SVGStringList(..), gTypeSVGStringList)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.clear Mozilla SVGStringList.clear documentation> 
-clear :: (MonadDOM m) => SVGStringList -> m ()
-clear self = liftDOM (void (self ^. jsf "clear" ()))
+-- | <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 (((self ^. jsf "appendItem" [toJSVal newItem]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.initialize Mozilla SVGStringList.initialize documentation> 
-initialize ::
-           (MonadDOM m, ToJSString item, FromJSString result) =>
-             SVGStringList -> item -> m result
-initialize self item
-  = liftDOM
-      ((self ^. jsf "initialize" [toJSVal item]) >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "appendItem" [toJSVal newItem]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.initialize Mozilla SVGStringList.initialize documentation> 
-initialize_ ::
-            (MonadDOM m, ToJSString item) => SVGStringList -> item -> m ()
-initialize_ self item
-  = liftDOM (void (self ^. jsf "initialize" [toJSVal item]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/clear MDN SVGStringList.clear documentation>
+clear :: (MonadDOM m) => SVGStringList -> m ()
+clear self = liftDOM (void (self ^. jsf "clear" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.getItem Mozilla SVGStringList.getItem documentation> 
-getItem ::
-        (MonadDOM m, FromJSString result) =>
-          SVGStringList -> Word -> m result
-getItem self index
-  = liftDOM
-      ((self ^. jsf "getItem" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "getItem" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.getItem Mozilla SVGStringList.getItem documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/getItem MDN SVGStringList.getItem documentation>
 getItem_ :: (MonadDOM m) => SVGStringList -> Word -> m ()
-getItem_ self index
-  = liftDOM (void (self ^. jsf "getItem" [toJSVal index]))
+getItem_ self index = liftDOM (void (self ^. jsf "getItem" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.insertItemBefore Mozilla SVGStringList.insertItemBefore documentation> 
-insertItemBefore ::
-                 (MonadDOM m, ToJSString item, FromJSString result) =>
-                   SVGStringList -> item -> Word -> m result
-insertItemBefore self item index
-  = liftDOM
-      ((self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "initialize" [toJSVal newItem]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.insertItemBefore Mozilla SVGStringList.insertItemBefore documentation> 
-insertItemBefore_ ::
-                  (MonadDOM m, ToJSString item) =>
-                    SVGStringList -> item -> Word -> m ()
-insertItemBefore_ self item index
-  = liftDOM
-      (void
-         (self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]))
+-- | <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 (self ^. jsf "initialize" [toJSVal newItem]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.replaceItem Mozilla SVGStringList.replaceItem documentation> 
-replaceItem ::
-            (MonadDOM m, ToJSString item, FromJSString result) =>
-              SVGStringList -> item -> Word -> m result
-replaceItem self item index
-  = liftDOM
-      ((self ^. jsf "replaceItem" [toJSVal item, toJSVal index]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "insertItemBefore" [toJSVal newItem, toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.replaceItem Mozilla SVGStringList.replaceItem documentation> 
-replaceItem_ ::
-             (MonadDOM m, ToJSString item) =>
-               SVGStringList -> item -> Word -> m ()
-replaceItem_ self item index
-  = liftDOM
-      (void (self ^. jsf "replaceItem" [toJSVal item, toJSVal 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 (self ^. jsf "insertItemBefore" [toJSVal newItem, toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.removeItem Mozilla SVGStringList.removeItem documentation> 
-removeItem ::
-           (MonadDOM m, FromJSString result) =>
-             SVGStringList -> Word -> m result
-removeItem self index
-  = liftDOM
-      ((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.removeItem Mozilla SVGStringList.removeItem documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/removeItem MDN SVGStringList.removeItem documentation>
 removeItem_ :: (MonadDOM m) => SVGStringList -> Word -> m ()
-removeItem_ self index
-  = liftDOM (void (self ^. jsf "removeItem" [toJSVal index]))
+removeItem_ self index = liftDOM (void (self ^. jsf "removeItem" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.appendItem Mozilla SVGStringList.appendItem documentation> 
-appendItem ::
-           (MonadDOM m, ToJSString item, FromJSString result) =>
-             SVGStringList -> item -> m result
-appendItem self item
-  = liftDOM
-      ((self ^. jsf "appendItem" [toJSVal item]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "replaceItem" [toJSVal newItem, toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.appendItem Mozilla SVGStringList.appendItem documentation> 
-appendItem_ ::
-            (MonadDOM m, ToJSString item) => SVGStringList -> item -> m ()
-appendItem_ self item
-  = liftDOM (void (self ^. jsf "appendItem" [toJSVal 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 (self ^. jsf "replaceItem" [toJSVal newItem, toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.numberOfItems Mozilla SVGStringList.numberOfItems documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/length MDN SVGStringList.length documentation>
+getLength :: (MonadDOM m) => SVGStringList -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStringList/numberOfItems MDN SVGStringList.numberOfItems documentation>
 getNumberOfItems :: (MonadDOM m) => SVGStringList -> m Word
-getNumberOfItems self
-  = liftDOM
-      (round <$> ((self ^. js "numberOfItems") >>= valToNumber))
+getNumberOfItems self = liftDOM ((P.round <$> ((self ^. js "numberOfItems") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/SVGStyleElement.hs b/src/JSDOM/Generated/SVGStyleElement.hs
--- a/src/JSDOM/Generated/SVGStyleElement.hs
+++ b/src/JSDOM/Generated/SVGStyleElement.hs
@@ -1,62 +1,48 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGStyleElement
-       (setDisabled, getDisabled, setType, getType, setMedia, getMedia,
-        setTitle, getTitle, SVGStyleElement(..), gTypeSVGStyleElement)
+       (setType, getType, setMedia, getMedia, setTitle, getTitle, setDisabled, getDisabled, SVGStyleElement(..), gTypeSVGStyleElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.disabled Mozilla SVGStyleElement.disabled documentation> 
-setDisabled :: (MonadDOM m) => SVGStyleElement -> Bool -> m ()
-setDisabled self val
-  = liftDOM (self ^. jss "disabled" (toJSVal val))
+-- | <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 (self ^. jss "type" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.disabled Mozilla SVGStyleElement.disabled documentation> 
-getDisabled :: (MonadDOM m) => SVGStyleElement -> m Bool
-getDisabled self = liftDOM ((self ^. js "disabled") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStyleElement/type MDN SVGStyleElement.type documentation>
+getType :: (MonadDOM m, FromJSString result) => SVGStyleElement -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.type Mozilla SVGStyleElement.type documentation> 
-setType ::
-        (MonadDOM m, ToJSString val) => SVGStyleElement -> val -> m ()
-setType self val = liftDOM (self ^. jss "type" (toJSVal val))
+-- | <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 (self ^. jss "media" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.type Mozilla SVGStyleElement.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => SVGStyleElement -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStyleElement/media MDN SVGStyleElement.media documentation>
+getMedia :: (MonadDOM m, FromJSString result) => SVGStyleElement -> m result
+getMedia self = liftDOM (((self ^. js "media") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.media Mozilla SVGStyleElement.media documentation> 
-setMedia ::
-         (MonadDOM m, ToJSString val) => SVGStyleElement -> val -> m ()
-setMedia self val = liftDOM (self ^. jss "media" (toJSVal val))
+-- | <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 (self ^. jss "title" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.media Mozilla SVGStyleElement.media documentation> 
-getMedia ::
-         (MonadDOM m, FromJSString result) => SVGStyleElement -> m result
-getMedia self
-  = liftDOM ((self ^. js "media") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStyleElement/title MDN SVGStyleElement.title documentation>
+getTitle :: (MonadDOM m, FromJSString result) => SVGStyleElement -> m result
+getTitle self = liftDOM (((self ^. js "title") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.title Mozilla SVGStyleElement.title documentation> 
-setTitle ::
-         (MonadDOM m, ToJSString val) => SVGStyleElement -> val -> m ()
-setTitle self val = liftDOM (self ^. jss "title" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStyleElement/disabled MDN SVGStyleElement.disabled documentation>
+setDisabled :: (MonadDOM m) => SVGStyleElement -> Bool -> m ()
+setDisabled self val = liftDOM (void (self ^. jss "disabled" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.title Mozilla SVGStyleElement.title documentation> 
-getTitle ::
-         (MonadDOM m, FromJSString result) => SVGStyleElement -> m result
-getTitle self
-  = liftDOM ((self ^. js "title") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGStyleElement/disabled MDN SVGStyleElement.disabled documentation>
+getDisabled :: (MonadDOM m) => SVGStyleElement -> m Bool
+getDisabled self = liftDOM (((self ^. js "disabled") >>= valToBool))
diff --git a/src/JSDOM/Generated/SVGSwitchElement.hs b/src/JSDOM/Generated/SVGSwitchElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGSwitchElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module JSDOM.Generated.SVGSwitchElement
+       (SVGSwitchElement(..), gTypeSVGSwitchElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGSymbolElement.hs b/src/JSDOM/Generated/SVGSymbolElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGSymbolElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module JSDOM.Generated.SVGSymbolElement
+       (SVGSymbolElement(..), gTypeSVGSymbolElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGTSpanElement.hs b/src/JSDOM/Generated/SVGTSpanElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGTSpanElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module JSDOM.Generated.SVGTSpanElement
+       (SVGTSpanElement(..), gTypeSVGTSpanElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGTests.hs b/src/JSDOM/Generated/SVGTests.hs
--- a/src/JSDOM/Generated/SVGTests.hs
+++ b/src/JSDOM/Generated/SVGTests.hs
@@ -1,63 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGTests
-       (hasExtension, hasExtension_, getRequiredFeatures,
-        getRequiredExtensions, getSystemLanguage, SVGTests(..),
-        gTypeSVGTests, IsSVGTests, toSVGTests)
+       (getRequiredExtensions, getSystemLanguage, SVGTests(..), gTypeSVGTests, IsSVGTests, toSVGTests)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.hasExtension Mozilla SVGTests.hasExtension documentation> 
-hasExtension ::
-             (MonadDOM m, IsSVGTests self, ToJSString extension) =>
-               self -> Maybe extension -> m Bool
-hasExtension self extension
-  = liftDOM
-      (((toSVGTests self) ^. jsf "hasExtension" [toJSVal extension]) >>=
-         valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.hasExtension Mozilla SVGTests.hasExtension documentation> 
-hasExtension_ ::
-              (MonadDOM m, IsSVGTests self, ToJSString extension) =>
-                self -> Maybe extension -> m ()
-hasExtension_ self extension
-  = liftDOM
-      (void
-         ((toSVGTests self) ^. jsf "hasExtension" [toJSVal extension]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.requiredFeatures Mozilla SVGTests.requiredFeatures documentation> 
-getRequiredFeatures ::
-                    (MonadDOM m, IsSVGTests self) => self -> m SVGStringList
-getRequiredFeatures self
-  = liftDOM
-      (((toSVGTests self) ^. js "requiredFeatures") >>=
-         fromJSValUnchecked)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.requiredExtensions Mozilla SVGTests.requiredExtensions documentation> 
-getRequiredExtensions ::
-                      (MonadDOM m, IsSVGTests self) => self -> m SVGStringList
-getRequiredExtensions self
-  = liftDOM
-      (((toSVGTests self) ^. js "requiredExtensions") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/requiredExtensions MDN SVGTests.requiredExtensions documentation>
+getRequiredExtensions :: (MonadDOM m, IsSVGTests self) => self -> m SVGStringList
+getRequiredExtensions self = liftDOM ((((Types.toSVGTests self) ^. js "requiredExtensions") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.systemLanguage Mozilla SVGTests.systemLanguage documentation> 
-getSystemLanguage ::
-                  (MonadDOM m, IsSVGTests self) => self -> m SVGStringList
-getSystemLanguage self
-  = liftDOM
-      (((toSVGTests self) ^. js "systemLanguage") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAnimationElement/systemLanguage MDN SVGTests.systemLanguage documentation>
+getSystemLanguage :: (MonadDOM m, IsSVGTests self) => self -> m SVGStringList
+getSystemLanguage self = liftDOM ((((Types.toSVGTests self) ^. js "systemLanguage") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGTextContentElement.hs b/src/JSDOM/Generated/SVGTextContentElement.hs
--- a/src/JSDOM/Generated/SVGTextContentElement.hs
+++ b/src/JSDOM/Generated/SVGTextContentElement.hs
@@ -1,218 +1,98 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGTextContentElement
-       (getNumberOfChars, getNumberOfChars_, getComputedTextLength,
-        getComputedTextLength_, getSubStringLength, getSubStringLength_,
-        getStartPositionOfChar, getStartPositionOfChar_,
-        getEndPositionOfChar, getEndPositionOfChar_, getExtentOfChar,
-        getExtentOfChar_, getRotationOfChar, getRotationOfChar_,
-        getCharNumAtPosition, getCharNumAtPosition_, selectSubString,
-        pattern LENGTHADJUST_UNKNOWN, pattern LENGTHADJUST_SPACING,
-        pattern LENGTHADJUST_SPACINGANDGLYPHS, getTextLength,
-        getLengthAdjust, SVGTextContentElement(..),
-        gTypeSVGTextContentElement, IsSVGTextContentElement,
-        toSVGTextContentElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getNumberOfChars Mozilla SVGTextContentElement.getNumberOfChars documentation> 
-getNumberOfChars ::
-                 (MonadDOM m, IsSVGTextContentElement self) => self -> m Int
-getNumberOfChars self
-  = liftDOM
-      (round <$>
-         (((toSVGTextContentElement self) ^. jsf "getNumberOfChars" ()) >>=
-            valToNumber))
+-- | <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.round <$> (((Types.toSVGTextContentElement self) ^. jsf "getCharNumAtPosition" [P.maybe (P.return jsUndefined) toJSVal point]) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getNumberOfChars Mozilla SVGTextContentElement.getNumberOfChars documentation> 
-getNumberOfChars_ ::
-                  (MonadDOM m, IsSVGTextContentElement self) => self -> m ()
-getNumberOfChars_ self
-  = liftDOM
-      (void
-         ((toSVGTextContentElement self) ^. jsf "getNumberOfChars" ()))
+-- | <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 ((Types.toSVGTextContentElement self) ^. jsf "getCharNumAtPosition" [P.maybe (P.return jsUndefined) toJSVal point]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getComputedTextLength Mozilla SVGTextContentElement.getComputedTextLength documentation> 
-getComputedTextLength ::
-                      (MonadDOM m, IsSVGTextContentElement self) => self -> m Float
-getComputedTextLength self
-  = liftDOM
-      (realToFrac <$>
-         (((toSVGTextContentElement self) ^. jsf "getComputedTextLength" ())
-            >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getComputedTextLength MDN SVGTextContentElement.getComputedTextLength documentation>
+getComputedTextLength :: (MonadDOM m, IsSVGTextContentElement self) => self -> m Float
+getComputedTextLength self = liftDOM ((P.realToFrac <$> (((Types.toSVGTextContentElement self) ^. jsf "getComputedTextLength" ()) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getComputedTextLength Mozilla SVGTextContentElement.getComputedTextLength documentation> 
-getComputedTextLength_ ::
-                       (MonadDOM m, IsSVGTextContentElement self) => self -> m ()
-getComputedTextLength_ self
-  = liftDOM
-      (void
-         ((toSVGTextContentElement self) ^. jsf "getComputedTextLength" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getComputedTextLength MDN SVGTextContentElement.getComputedTextLength documentation>
+getComputedTextLength_ :: (MonadDOM m, IsSVGTextContentElement self) => self -> m ()
+getComputedTextLength_ self = liftDOM (void ((Types.toSVGTextContentElement self) ^. jsf "getComputedTextLength" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getSubStringLength Mozilla SVGTextContentElement.getSubStringLength documentation> 
-getSubStringLength ::
-                   (MonadDOM m, IsSVGTextContentElement self) =>
-                     self -> Maybe Word -> Maybe Word -> m Float
-getSubStringLength self offset length
-  = liftDOM
-      (realToFrac <$>
-         (((toSVGTextContentElement self) ^. jsf "getSubStringLength"
-             [toJSVal offset, toJSVal length])
-            >>= valToNumber))
+-- | <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 ((((Types.toSVGTextContentElement self) ^. jsf "getEndPositionOfChar" [toJSVal charnum]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getSubStringLength Mozilla SVGTextContentElement.getSubStringLength documentation> 
-getSubStringLength_ ::
-                    (MonadDOM m, IsSVGTextContentElement self) =>
-                      self -> Maybe Word -> Maybe Word -> m ()
-getSubStringLength_ self offset length
-  = liftDOM
-      (void
-         ((toSVGTextContentElement self) ^. jsf "getSubStringLength"
-            [toJSVal offset, toJSVal 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 ((Types.toSVGTextContentElement self) ^. jsf "getEndPositionOfChar" [toJSVal charnum]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getStartPositionOfChar Mozilla SVGTextContentElement.getStartPositionOfChar documentation> 
-getStartPositionOfChar ::
-                       (MonadDOM m, IsSVGTextContentElement self) =>
-                         self -> Maybe Word -> m SVGPoint
-getStartPositionOfChar self offset
-  = liftDOM
-      (((toSVGTextContentElement self) ^. jsf "getStartPositionOfChar"
-          [toJSVal offset])
-         >>= fromJSValUnchecked)
+-- | <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 ((((Types.toSVGTextContentElement self) ^. jsf "getExtentOfChar" [toJSVal charnum]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getStartPositionOfChar Mozilla SVGTextContentElement.getStartPositionOfChar documentation> 
-getStartPositionOfChar_ ::
-                        (MonadDOM m, IsSVGTextContentElement self) =>
-                          self -> Maybe Word -> m ()
-getStartPositionOfChar_ self offset
-  = liftDOM
-      (void
-         ((toSVGTextContentElement self) ^. jsf "getStartPositionOfChar"
-            [toJSVal 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 ((Types.toSVGTextContentElement self) ^. jsf "getExtentOfChar" [toJSVal charnum]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getEndPositionOfChar Mozilla SVGTextContentElement.getEndPositionOfChar documentation> 
-getEndPositionOfChar ::
-                     (MonadDOM m, IsSVGTextContentElement self) =>
-                       self -> Maybe Word -> m SVGPoint
-getEndPositionOfChar self offset
-  = liftDOM
-      (((toSVGTextContentElement self) ^. jsf "getEndPositionOfChar"
-          [toJSVal offset])
-         >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/getNumberOfChars MDN SVGTextContentElement.getNumberOfChars documentation>
+getNumberOfChars :: (MonadDOM m, IsSVGTextContentElement self) => self -> m Int
+getNumberOfChars self = liftDOM ((P.round <$> (((Types.toSVGTextContentElement self) ^. jsf "getNumberOfChars" ()) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getEndPositionOfChar Mozilla SVGTextContentElement.getEndPositionOfChar documentation> 
-getEndPositionOfChar_ ::
-                      (MonadDOM m, IsSVGTextContentElement self) =>
-                        self -> Maybe Word -> m ()
-getEndPositionOfChar_ self offset
-  = liftDOM
-      (void
-         ((toSVGTextContentElement self) ^. jsf "getEndPositionOfChar"
-            [toJSVal 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 ((Types.toSVGTextContentElement self) ^. jsf "getNumberOfChars" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getExtentOfChar Mozilla SVGTextContentElement.getExtentOfChar documentation> 
-getExtentOfChar ::
-                (MonadDOM m, IsSVGTextContentElement self) =>
-                  self -> Maybe Word -> m SVGRect
-getExtentOfChar self offset
-  = liftDOM
-      (((toSVGTextContentElement self) ^. jsf "getExtentOfChar"
-          [toJSVal offset])
-         >>= fromJSValUnchecked)
+-- | <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 ((P.realToFrac <$> (((Types.toSVGTextContentElement self) ^. jsf "getRotationOfChar" [toJSVal charnum]) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getExtentOfChar Mozilla SVGTextContentElement.getExtentOfChar documentation> 
-getExtentOfChar_ ::
-                 (MonadDOM m, IsSVGTextContentElement self) =>
-                   self -> Maybe Word -> m ()
-getExtentOfChar_ self offset
-  = liftDOM
-      (void
-         ((toSVGTextContentElement self) ^. jsf "getExtentOfChar"
-            [toJSVal 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 ((Types.toSVGTextContentElement self) ^. jsf "getRotationOfChar" [toJSVal charnum]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getRotationOfChar Mozilla SVGTextContentElement.getRotationOfChar documentation> 
-getRotationOfChar ::
-                  (MonadDOM m, IsSVGTextContentElement self) =>
-                    self -> Maybe Word -> m Float
-getRotationOfChar self offset
-  = liftDOM
-      (realToFrac <$>
-         (((toSVGTextContentElement self) ^. jsf "getRotationOfChar"
-             [toJSVal offset])
-            >>= valToNumber))
+-- | <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 ((((Types.toSVGTextContentElement self) ^. jsf "getStartPositionOfChar" [toJSVal charnum]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getRotationOfChar Mozilla SVGTextContentElement.getRotationOfChar documentation> 
-getRotationOfChar_ ::
-                   (MonadDOM m, IsSVGTextContentElement self) =>
-                     self -> Maybe Word -> m ()
-getRotationOfChar_ self offset
-  = liftDOM
-      (void
-         ((toSVGTextContentElement self) ^. jsf "getRotationOfChar"
-            [toJSVal 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 ((Types.toSVGTextContentElement self) ^. jsf "getStartPositionOfChar" [toJSVal charnum]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getCharNumAtPosition Mozilla SVGTextContentElement.getCharNumAtPosition documentation> 
-getCharNumAtPosition ::
-                     (MonadDOM m, IsSVGTextContentElement self) =>
-                       self -> SVGPoint -> m Int
-getCharNumAtPosition self point
-  = liftDOM
-      (round <$>
-         (((toSVGTextContentElement self) ^. jsf "getCharNumAtPosition"
-             [toJSVal point])
-            >>= valToNumber))
+-- | <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 ((P.realToFrac <$> (((Types.toSVGTextContentElement self) ^. jsf "getSubStringLength" [toJSVal charnum, toJSVal nchars]) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getCharNumAtPosition Mozilla SVGTextContentElement.getCharNumAtPosition documentation> 
-getCharNumAtPosition_ ::
-                      (MonadDOM m, IsSVGTextContentElement self) =>
-                        self -> SVGPoint -> m ()
-getCharNumAtPosition_ self point
-  = liftDOM
-      (void
-         ((toSVGTextContentElement self) ^. jsf "getCharNumAtPosition"
-            [toJSVal 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 ((Types.toSVGTextContentElement self) ^. jsf "getSubStringLength" [toJSVal charnum, toJSVal nchars]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.selectSubString Mozilla SVGTextContentElement.selectSubString documentation> 
-selectSubString ::
-                (MonadDOM m, IsSVGTextContentElement self) =>
-                  self -> Maybe Word -> Maybe Word -> m ()
-selectSubString self offset length
-  = liftDOM
-      (void
-         ((toSVGTextContentElement self) ^. jsf "selectSubString"
-            [toJSVal offset, toJSVal length]))
+-- | <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 ((Types.toSVGTextContentElement self) ^. jsf "selectSubString" [toJSVal charnum, toJSVal nchars]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/textLength MDN SVGTextContentElement.textLength documentation>
+getTextLength :: (MonadDOM m, IsSVGTextContentElement self) => self -> m SVGAnimatedLength
+getTextLength self = liftDOM ((((Types.toSVGTextContentElement self) ^. js "textLength") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextContentElement/lengthAdjust MDN SVGTextContentElement.lengthAdjust documentation>
+getLengthAdjust :: (MonadDOM m, IsSVGTextContentElement self) => self -> m SVGAnimatedEnumeration
+getLengthAdjust self = liftDOM ((((Types.toSVGTextContentElement self) ^. js "lengthAdjust") >>= fromJSValUnchecked))
+
 pattern LENGTHADJUST_UNKNOWN = 0
-pattern LENGTHADJUST_SPACING = 1
-pattern LENGTHADJUST_SPACINGANDGLYPHS = 2
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.textLength Mozilla SVGTextContentElement.textLength documentation> 
-getTextLength ::
-              (MonadDOM m, IsSVGTextContentElement self) =>
-                self -> m SVGAnimatedLength
-getTextLength self
-  = liftDOM
-      (((toSVGTextContentElement self) ^. js "textLength") >>=
-         fromJSValUnchecked)
+pattern LENGTHADJUST_SPACING = 1
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.lengthAdjust Mozilla SVGTextContentElement.lengthAdjust documentation> 
-getLengthAdjust ::
-                (MonadDOM m, IsSVGTextContentElement self) =>
-                  self -> m SVGAnimatedEnumeration
-getLengthAdjust self
-  = liftDOM
-      (((toSVGTextContentElement self) ^. js "lengthAdjust") >>=
-         fromJSValUnchecked)
+pattern LENGTHADJUST_SPACINGANDGLYPHS = 2
diff --git a/src/JSDOM/Generated/SVGTextElement.hs b/src/JSDOM/Generated/SVGTextElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGTextElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module JSDOM.Generated.SVGTextElement
+       (SVGTextElement(..), gTypeSVGTextElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGTextPathElement.hs b/src/JSDOM/Generated/SVGTextPathElement.hs
--- a/src/JSDOM/Generated/SVGTextPathElement.hs
+++ b/src/JSDOM/Generated/SVGTextPathElement.hs
@@ -1,50 +1,50 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.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, getStartOffset, getMethod,
-        getSpacing, SVGTextPathElement(..), gTypeSVGTextPathElement)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPathElement/startOffset MDN SVGTextPathElement.startOffset documentation>
+getStartOffset :: (MonadDOM m) => SVGTextPathElement -> m SVGAnimatedLength
+getStartOffset self = liftDOM (((self ^. js "startOffset") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPathElement/method MDN SVGTextPathElement.method documentation>
+getMethod :: (MonadDOM m) => SVGTextPathElement -> m SVGAnimatedEnumeration
+getMethod self = liftDOM (((self ^. js "method") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPathElement/spacing MDN SVGTextPathElement.spacing documentation>
+getSpacing :: (MonadDOM m) => SVGTextPathElement -> m SVGAnimatedEnumeration
+getSpacing self = liftDOM (((self ^. js "spacing") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPathElement/side MDN SVGTextPathElement.side documentation>
+getSide :: (MonadDOM m) => SVGTextPathElement -> m SVGAnimatedEnumeration
+getSide self = liftDOM (((self ^. js "side") >>= fromJSValUnchecked))
+
 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
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.startOffset Mozilla SVGTextPathElement.startOffset documentation> 
-getStartOffset ::
-               (MonadDOM m) => SVGTextPathElement -> m SVGAnimatedLength
-getStartOffset self
-  = liftDOM ((self ^. js "startOffset") >>= fromJSValUnchecked)
+pattern TEXTPATH_SIDETYPE_UNKNOWN = 0
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.method Mozilla SVGTextPathElement.method documentation> 
-getMethod ::
-          (MonadDOM m) => SVGTextPathElement -> m SVGAnimatedEnumeration
-getMethod self
-  = liftDOM ((self ^. js "method") >>= fromJSValUnchecked)
+pattern TEXTPATH_SIDETYPE_LEFT = 1
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.spacing Mozilla SVGTextPathElement.spacing documentation> 
-getSpacing ::
-           (MonadDOM m) => SVGTextPathElement -> m SVGAnimatedEnumeration
-getSpacing self
-  = liftDOM ((self ^. js "spacing") >>= fromJSValUnchecked)
+pattern TEXTPATH_SIDETYPE_RIGHT = 2
diff --git a/src/JSDOM/Generated/SVGTextPositioningElement.hs b/src/JSDOM/Generated/SVGTextPositioningElement.hs
--- a/src/JSDOM/Generated/SVGTextPositioningElement.hs
+++ b/src/JSDOM/Generated/SVGTextPositioningElement.hs
@@ -1,67 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGTextPositioningElement
-       (getX, getY, getDx, getDy, getRotate,
-        SVGTextPositioningElement(..), gTypeSVGTextPositioningElement,
-        IsSVGTextPositioningElement, toSVGTextPositioningElement)
+       (getX, getY, getDx, getDy, getRotate, SVGTextPositioningElement(..), gTypeSVGTextPositioningElement, IsSVGTextPositioningElement, toSVGTextPositioningElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.x Mozilla SVGTextPositioningElement.x documentation> 
-getX ::
-     (MonadDOM m, IsSVGTextPositioningElement self) =>
-       self -> m SVGAnimatedLengthList
-getX self
-  = liftDOM
-      (((toSVGTextPositioningElement self) ^. js "x") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPositioningElement/x MDN SVGTextPositioningElement.x documentation>
+getX :: (MonadDOM m, IsSVGTextPositioningElement self) => self -> m SVGAnimatedLengthList
+getX self = liftDOM ((((Types.toSVGTextPositioningElement self) ^. js "x") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.y Mozilla SVGTextPositioningElement.y documentation> 
-getY ::
-     (MonadDOM m, IsSVGTextPositioningElement self) =>
-       self -> m SVGAnimatedLengthList
-getY self
-  = liftDOM
-      (((toSVGTextPositioningElement self) ^. js "y") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPositioningElement/y MDN SVGTextPositioningElement.y documentation>
+getY :: (MonadDOM m, IsSVGTextPositioningElement self) => self -> m SVGAnimatedLengthList
+getY self = liftDOM ((((Types.toSVGTextPositioningElement self) ^. js "y") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.dx Mozilla SVGTextPositioningElement.dx documentation> 
-getDx ::
-      (MonadDOM m, IsSVGTextPositioningElement self) =>
-        self -> m SVGAnimatedLengthList
-getDx self
-  = liftDOM
-      (((toSVGTextPositioningElement self) ^. js "dx") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPositioningElement/dx MDN SVGTextPositioningElement.dx documentation>
+getDx :: (MonadDOM m, IsSVGTextPositioningElement self) => self -> m SVGAnimatedLengthList
+getDx self = liftDOM ((((Types.toSVGTextPositioningElement self) ^. js "dx") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.dy Mozilla SVGTextPositioningElement.dy documentation> 
-getDy ::
-      (MonadDOM m, IsSVGTextPositioningElement self) =>
-        self -> m SVGAnimatedLengthList
-getDy self
-  = liftDOM
-      (((toSVGTextPositioningElement self) ^. js "dy") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPositioningElement/dy MDN SVGTextPositioningElement.dy documentation>
+getDy :: (MonadDOM m, IsSVGTextPositioningElement self) => self -> m SVGAnimatedLengthList
+getDy self = liftDOM ((((Types.toSVGTextPositioningElement self) ^. js "dy") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.rotate Mozilla SVGTextPositioningElement.rotate documentation> 
-getRotate ::
-          (MonadDOM m, IsSVGTextPositioningElement self) =>
-            self -> m SVGAnimatedNumberList
-getRotate self
-  = liftDOM
-      (((toSVGTextPositioningElement self) ^. js "rotate") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTextPositioningElement/rotate MDN SVGTextPositioningElement.rotate documentation>
+getRotate :: (MonadDOM m, IsSVGTextPositioningElement self) => self -> m SVGAnimatedNumberList
+getRotate self = liftDOM ((((Types.toSVGTextPositioningElement self) ^. js "rotate") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGTitleElement.hs b/src/JSDOM/Generated/SVGTitleElement.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SVGTitleElement.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
+module JSDOM.Generated.SVGTitleElement
+       (SVGTitleElement(..), gTypeSVGTitleElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/SVGTransform.hs b/src/JSDOM/Generated/SVGTransform.hs
--- a/src/JSDOM/Generated/SVGTransform.hs
+++ b/src/JSDOM/Generated/SVGTransform.hs
@@ -1,82 +1,66 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGTransform
-       (setMatrix, setTranslate, setScale, setRotate, setSkewX, 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, getType, getMatrix, getAngle,
-        SVGTransform(..), gTypeSVGTransform)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setMatrix Mozilla SVGTransform.setMatrix documentation> 
-setMatrix :: (MonadDOM m) => SVGTransform -> SVGMatrix -> m ()
-setMatrix self matrix
-  = liftDOM (void (self ^. jsf "setMatrix" [toJSVal matrix]))
+-- | <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 (self ^. jsf "setMatrix" [P.maybe (P.return jsUndefined) toJSVal matrix]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setTranslate Mozilla SVGTransform.setTranslate documentation> 
-setTranslate ::
-             (MonadDOM m) => SVGTransform -> Float -> Float -> m ()
-setTranslate self tx ty
-  = liftDOM
-      (void (self ^. jsf "setTranslate" [toJSVal tx, toJSVal ty]))
+-- | <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 (self ^. jsf "setRotate" [toJSVal angle, toJSVal cx, toJSVal cy]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setScale Mozilla SVGTransform.setScale documentation> 
+-- | <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 (self ^. jsf "setScale" [toJSVal sx, toJSVal sy]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setRotate Mozilla SVGTransform.setRotate documentation> 
-setRotate ::
-          (MonadDOM m) => SVGTransform -> Float -> Float -> Float -> m ()
-setRotate self angle cx cy
-  = liftDOM
-      (void
-         (self ^. jsf "setRotate" [toJSVal angle, toJSVal cx, toJSVal cy]))
+setScale self sx sy = liftDOM (void (self ^. jsf "setScale" [toJSVal sx, toJSVal sy]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setSkewX Mozilla SVGTransform.setSkewX documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransform/setSkewX MDN SVGTransform.setSkewX documentation>
 setSkewX :: (MonadDOM m) => SVGTransform -> Float -> m ()
-setSkewX self angle
-  = liftDOM (void (self ^. jsf "setSkewX" [toJSVal angle]))
+setSkewX self angle = liftDOM (void (self ^. jsf "setSkewX" [toJSVal angle]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setSkewY Mozilla SVGTransform.setSkewY documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransform/setSkewY MDN SVGTransform.setSkewY documentation>
 setSkewY :: (MonadDOM m) => SVGTransform -> Float -> m ()
-setSkewY self angle
-  = liftDOM (void (self ^. jsf "setSkewY" [toJSVal angle]))
+setSkewY self angle = liftDOM (void (self ^. jsf "setSkewY" [toJSVal angle]))
+
+-- | <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 (self ^. jsf "setTranslate" [toJSVal tx, toJSVal ty]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransform/type MDN SVGTransform.type documentation>
+getType :: (MonadDOM m) => SVGTransform -> m Word
+getType self = liftDOM ((P.round <$> ((self ^. js "type") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransform/matrix MDN SVGTransform.matrix documentation>
+getMatrix :: (MonadDOM m) => SVGTransform -> m DOMMatrix
+getMatrix self = liftDOM (((self ^. js "matrix") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransform/angle MDN SVGTransform.angle documentation>
+getAngle :: (MonadDOM m) => SVGTransform -> m Float
+getAngle self = liftDOM ((P.realToFrac <$> ((self ^. js "angle") >>= valToNumber)))
+
 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
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.type Mozilla SVGTransform.type documentation> 
-getType :: (MonadDOM m) => SVGTransform -> m Word
-getType self
-  = liftDOM (round <$> ((self ^. js "type") >>= valToNumber))
+pattern SVG_TRANSFORM_ROTATE = 4
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.matrix Mozilla SVGTransform.matrix documentation> 
-getMatrix :: (MonadDOM m) => SVGTransform -> m SVGMatrix
-getMatrix self
-  = liftDOM ((self ^. js "matrix") >>= fromJSValUnchecked)
+pattern SVG_TRANSFORM_SKEWX = 5
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.angle Mozilla SVGTransform.angle documentation> 
-getAngle :: (MonadDOM m) => SVGTransform -> m Float
-getAngle self
-  = liftDOM (realToFrac <$> ((self ^. js "angle") >>= valToNumber))
+pattern SVG_TRANSFORM_SKEWY = 6
diff --git a/src/JSDOM/Generated/SVGTransformList.hs b/src/JSDOM/Generated/SVGTransformList.hs
--- a/src/JSDOM/Generated/SVGTransformList.hs
+++ b/src/JSDOM/Generated/SVGTransformList.hs
@@ -1,143 +1,100 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGTransformList
-       (clear, initialize, initialize_, getItem, getItem_,
-        insertItemBefore, insertItemBefore_, replaceItem, replaceItem_,
-        removeItem, removeItem_, appendItem, appendItem_,
-        createSVGTransformFromMatrix, createSVGTransformFromMatrix_,
-        consolidate, consolidate_, getNumberOfItems, SVGTransformList(..),
-        gTypeSVGTransformList)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.clear Mozilla SVGTransformList.clear documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/appendItem MDN SVGTransformList.appendItem documentation>
+appendItem :: (MonadDOM m) => SVGTransformList -> SVGTransform -> m SVGTransform
+appendItem self newItem = liftDOM (((self ^. jsf "appendItem" [toJSVal newItem]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/appendItem MDN SVGTransformList.appendItem documentation>
+appendItem_ :: (MonadDOM m) => SVGTransformList -> SVGTransform -> m ()
+appendItem_ self newItem = liftDOM (void (self ^. jsf "appendItem" [toJSVal newItem]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/clear MDN SVGTransformList.clear documentation>
 clear :: (MonadDOM m) => SVGTransformList -> m ()
 clear self = liftDOM (void (self ^. jsf "clear" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.initialize Mozilla SVGTransformList.initialize documentation> 
-initialize ::
-           (MonadDOM m) => SVGTransformList -> SVGTransform -> m SVGTransform
-initialize self item
-  = liftDOM
-      ((self ^. jsf "initialize" [toJSVal item]) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/consolidate MDN SVGTransformList.consolidate documentation>
+consolidate :: (MonadDOM m) => SVGTransformList -> m (Maybe SVGTransform)
+consolidate self = liftDOM (((self ^. jsf "consolidate" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.initialize Mozilla SVGTransformList.initialize documentation> 
-initialize_ ::
-            (MonadDOM m) => SVGTransformList -> SVGTransform -> m ()
-initialize_ self item
-  = liftDOM (void (self ^. jsf "initialize" [toJSVal item]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/consolidate MDN SVGTransformList.consolidate documentation>
+consolidate_ :: (MonadDOM m) => SVGTransformList -> m ()
+consolidate_ self = liftDOM (void (self ^. jsf "consolidate" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.getItem Mozilla SVGTransformList.getItem documentation> 
-getItem ::
-        (MonadDOM m) => SVGTransformList -> Word -> m SVGTransform
-getItem self index
-  = liftDOM
-      ((self ^. jsf "getItem" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/consolidate MDN SVGTransformList.consolidate documentation>
+consolidateUnsafe :: (MonadDOM m, HasCallStack) => SVGTransformList -> m SVGTransform
+consolidateUnsafe self = liftDOM ((((self ^. jsf "consolidate" ()) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.getItem Mozilla SVGTransformList.getItem documentation> 
-getItem_ :: (MonadDOM m) => SVGTransformList -> Word -> m ()
-getItem_ self index
-  = liftDOM (void (self ^. jsf "getItem" [toJSVal index]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/consolidate MDN SVGTransformList.consolidate documentation>
+consolidateUnchecked :: (MonadDOM m) => SVGTransformList -> m SVGTransform
+consolidateUnchecked self = liftDOM (((self ^. jsf "consolidate" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.insertItemBefore Mozilla SVGTransformList.insertItemBefore documentation> 
-insertItemBefore ::
-                 (MonadDOM m) =>
-                   SVGTransformList -> SVGTransform -> Word -> m SVGTransform
-insertItemBefore self item index
-  = liftDOM
-      ((self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "createSVGTransformFromMatrix" [P.maybe (P.return jsUndefined) toJSVal matrix]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.insertItemBefore Mozilla SVGTransformList.insertItemBefore documentation> 
-insertItemBefore_ ::
-                  (MonadDOM m) => SVGTransformList -> SVGTransform -> Word -> m ()
-insertItemBefore_ self item index
-  = liftDOM
-      (void
-         (self ^. jsf "insertItemBefore" [toJSVal item, toJSVal index]))
+-- | <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 (self ^. jsf "createSVGTransformFromMatrix" [P.maybe (P.return jsUndefined) toJSVal matrix]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.replaceItem Mozilla SVGTransformList.replaceItem documentation> 
-replaceItem ::
-            (MonadDOM m) =>
-              SVGTransformList -> SVGTransform -> Word -> m SVGTransform
-replaceItem self item index
-  = liftDOM
-      ((self ^. jsf "replaceItem" [toJSVal item, toJSVal index]) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/getItem MDN SVGTransformList.getItem documentation>
+getItem :: (MonadDOM m) => SVGTransformList -> Word -> m SVGTransform
+getItem self index = liftDOM (((self ^. jsf "getItem" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.replaceItem Mozilla SVGTransformList.replaceItem documentation> 
-replaceItem_ ::
-             (MonadDOM m) => SVGTransformList -> SVGTransform -> Word -> m ()
-replaceItem_ self item index
-  = liftDOM
-      (void (self ^. jsf "replaceItem" [toJSVal item, toJSVal index]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/getItem MDN SVGTransformList.getItem documentation>
+getItem_ :: (MonadDOM m) => SVGTransformList -> Word -> m ()
+getItem_ self index = liftDOM (void (self ^. jsf "getItem" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.removeItem Mozilla SVGTransformList.removeItem documentation> 
-removeItem ::
-           (MonadDOM m) => SVGTransformList -> Word -> m SVGTransform
-removeItem self index
-  = liftDOM
-      ((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/initialize MDN SVGTransformList.initialize documentation>
+initialize :: (MonadDOM m) => SVGTransformList -> SVGTransform -> m SVGTransform
+initialize self newItem = liftDOM (((self ^. jsf "initialize" [toJSVal newItem]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.removeItem Mozilla SVGTransformList.removeItem documentation> 
-removeItem_ :: (MonadDOM m) => SVGTransformList -> Word -> m ()
-removeItem_ self index
-  = liftDOM (void (self ^. jsf "removeItem" [toJSVal index]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/initialize MDN SVGTransformList.initialize documentation>
+initialize_ :: (MonadDOM m) => SVGTransformList -> SVGTransform -> m ()
+initialize_ self newItem = liftDOM (void (self ^. jsf "initialize" [toJSVal newItem]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.appendItem Mozilla SVGTransformList.appendItem documentation> 
-appendItem ::
-           (MonadDOM m) => SVGTransformList -> SVGTransform -> m SVGTransform
-appendItem self item
-  = liftDOM
-      ((self ^. jsf "appendItem" [toJSVal item]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "insertItemBefore" [toJSVal newItem, toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.appendItem Mozilla SVGTransformList.appendItem documentation> 
-appendItem_ ::
-            (MonadDOM m) => SVGTransformList -> SVGTransform -> m ()
-appendItem_ self item
-  = liftDOM (void (self ^. jsf "appendItem" [toJSVal item]))
+-- | <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 (self ^. jsf "insertItemBefore" [toJSVal newItem, toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.createSVGTransformFromMatrix Mozilla SVGTransformList.createSVGTransformFromMatrix documentation> 
-createSVGTransformFromMatrix ::
-                             (MonadDOM m) => SVGTransformList -> SVGMatrix -> m SVGTransform
-createSVGTransformFromMatrix self matrix
-  = liftDOM
-      ((self ^. jsf "createSVGTransformFromMatrix" [toJSVal matrix]) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/removeItem MDN SVGTransformList.removeItem documentation>
+removeItem :: (MonadDOM m) => SVGTransformList -> Word -> m SVGTransform
+removeItem self index = liftDOM (((self ^. jsf "removeItem" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.createSVGTransformFromMatrix Mozilla SVGTransformList.createSVGTransformFromMatrix documentation> 
-createSVGTransformFromMatrix_ ::
-                              (MonadDOM m) => SVGTransformList -> SVGMatrix -> m ()
-createSVGTransformFromMatrix_ self matrix
-  = liftDOM
-      (void
-         (self ^. jsf "createSVGTransformFromMatrix" [toJSVal matrix]))
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/removeItem MDN SVGTransformList.removeItem documentation>
+removeItem_ :: (MonadDOM m) => SVGTransformList -> Word -> m ()
+removeItem_ self index = liftDOM (void (self ^. jsf "removeItem" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.consolidate Mozilla SVGTransformList.consolidate documentation> 
-consolidate :: (MonadDOM m) => SVGTransformList -> m SVGTransform
-consolidate self
-  = liftDOM ((self ^. jsf "consolidate" ()) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "replaceItem" [toJSVal newItem, toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.consolidate Mozilla SVGTransformList.consolidate documentation> 
-consolidate_ :: (MonadDOM m) => SVGTransformList -> m ()
-consolidate_ self = liftDOM (void (self ^. jsf "consolidate" ()))
+-- | <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 (self ^. jsf "replaceItem" [toJSVal newItem, toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.numberOfItems Mozilla SVGTransformList.numberOfItems documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/length MDN SVGTransformList.length documentation>
+getLength :: (MonadDOM m) => SVGTransformList -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SVGTransformList/numberOfItems MDN SVGTransformList.numberOfItems documentation>
 getNumberOfItems :: (MonadDOM m) => SVGTransformList -> m Word
-getNumberOfItems self
-  = liftDOM
-      (round <$> ((self ^. js "numberOfItems") >>= valToNumber))
+getNumberOfItems self = liftDOM ((P.round <$> ((self ^. js "numberOfItems") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/SVGURIReference.hs b/src/JSDOM/Generated/SVGURIReference.hs
--- a/src/JSDOM/Generated/SVGURIReference.hs
+++ b/src/JSDOM/Generated/SVGURIReference.hs
@@ -1,28 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGURIReference
-       (getHref, SVGURIReference(..), gTypeSVGURIReference,
-        IsSVGURIReference, toSVGURIReference)
+       (getHref, SVGURIReference(..), gTypeSVGURIReference, IsSVGURIReference, toSVGURIReference)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGURIReference.href Mozilla SVGURIReference.href documentation> 
-getHref ::
-        (MonadDOM m, IsSVGURIReference self) => self -> m SVGAnimatedString
-getHref self
-  = liftDOM
-      (((toSVGURIReference self) ^. js "href") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SVGAElement/href MDN SVGURIReference.href documentation>
+getHref :: (MonadDOM m, IsSVGURIReference self) => self -> m SVGAnimatedString
+getHref self = liftDOM ((((Types.toSVGURIReference self) ^. js "href") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGUnitTypes.hs b/src/JSDOM/Generated/SVGUnitTypes.hs
--- a/src/JSDOM/Generated/SVGUnitTypes.hs
+++ b/src/JSDOM/Generated/SVGUnitTypes.hs
@@ -1,26 +1,22 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
+
 pattern SVG_UNIT_TYPE_UNKNOWN = 0
+
 pattern SVG_UNIT_TYPE_USERSPACEONUSE = 1
+
 pattern SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2
diff --git a/src/JSDOM/Generated/SVGUseElement.hs b/src/JSDOM/Generated/SVGUseElement.hs
--- a/src/JSDOM/Generated/SVGUseElement.hs
+++ b/src/JSDOM/Generated/SVGUseElement.hs
@@ -1,39 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGUseElement
-       (getX, getY, getWidth, getHeight, SVGUseElement(..),
-        gTypeSVGUseElement)
+       (getX, getY, getWidth, getHeight, SVGUseElement(..), gTypeSVGUseElement)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.x Mozilla SVGUseElement.x documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGUseElement/x MDN SVGUseElement.x documentation>
 getX :: (MonadDOM m) => SVGUseElement -> m SVGAnimatedLength
-getX self = liftDOM ((self ^. js "x") >>= fromJSValUnchecked)
+getX self = liftDOM (((self ^. js "x") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.y Mozilla SVGUseElement.y documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGUseElement/y MDN SVGUseElement.y documentation>
 getY :: (MonadDOM m) => SVGUseElement -> m SVGAnimatedLength
-getY self = liftDOM ((self ^. js "y") >>= fromJSValUnchecked)
+getY self = liftDOM (((self ^. js "y") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.width Mozilla SVGUseElement.width documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGUseElement/width MDN SVGUseElement.width documentation>
 getWidth :: (MonadDOM m) => SVGUseElement -> m SVGAnimatedLength
-getWidth self
-  = liftDOM ((self ^. js "width") >>= fromJSValUnchecked)
+getWidth self = liftDOM (((self ^. js "width") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.height Mozilla SVGUseElement.height documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SVGUseElement/height MDN SVGUseElement.height documentation>
 getHeight :: (MonadDOM m) => SVGUseElement -> m SVGAnimatedLength
-getHeight self
-  = liftDOM ((self ^. js "height") >>= fromJSValUnchecked)
+getHeight self = liftDOM (((self ^. js "height") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SVGViewElement.hs b/src/JSDOM/Generated/SVGViewElement.hs
--- a/src/JSDOM/Generated/SVGViewElement.hs
+++ b/src/JSDOM/Generated/SVGViewElement.hs
@@ -1,24 +1,17 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from SVG2 (webref). Do not edit.
 module JSDOM.Generated.SVGViewElement
-       (getViewTarget, SVGViewElement(..), gTypeSVGViewElement) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (SVGViewElement(..), gTypeSVGViewElement)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewElement.viewTarget Mozilla SVGViewElement.viewTarget documentation> 
-getViewTarget :: (MonadDOM m) => SVGViewElement -> m SVGStringList
-getViewTarget self
-  = liftDOM ((self ^. js "viewTarget") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/SVGViewSpec.hs b/src/JSDOM/Generated/SVGViewSpec.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGViewSpec.hs
+++ /dev/null
@@ -1,68 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGViewSpec
-       (getTransform, getViewTarget, getViewBoxString,
-        getPreserveAspectRatioString, getTransformString,
-        getViewTargetString, setZoomAndPan, getZoomAndPan, SVGViewSpec(..),
-        gTypeSVGViewSpec)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.transform Mozilla SVGViewSpec.transform documentation> 
-getTransform :: (MonadDOM m) => SVGViewSpec -> m SVGTransformList
-getTransform self
-  = liftDOM ((self ^. js "transform") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewTarget Mozilla SVGViewSpec.viewTarget documentation> 
-getViewTarget :: (MonadDOM m) => SVGViewSpec -> m SVGElement
-getViewTarget self
-  = liftDOM ((self ^. js "viewTarget") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewBoxString Mozilla SVGViewSpec.viewBoxString documentation> 
-getViewBoxString ::
-                 (MonadDOM m, FromJSString result) => SVGViewSpec -> m result
-getViewBoxString self
-  = liftDOM ((self ^. js "viewBoxString") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.preserveAspectRatioString Mozilla SVGViewSpec.preserveAspectRatioString documentation> 
-getPreserveAspectRatioString ::
-                             (MonadDOM m, FromJSString result) => SVGViewSpec -> m result
-getPreserveAspectRatioString self
-  = liftDOM
-      ((self ^. js "preserveAspectRatioString") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.transformString Mozilla SVGViewSpec.transformString documentation> 
-getTransformString ::
-                   (MonadDOM m, FromJSString result) => SVGViewSpec -> m result
-getTransformString self
-  = liftDOM ((self ^. js "transformString") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewTargetString Mozilla SVGViewSpec.viewTargetString documentation> 
-getViewTargetString ::
-                    (MonadDOM m, FromJSString result) => SVGViewSpec -> m result
-getViewTargetString self
-  = liftDOM ((self ^. js "viewTargetString") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.zoomAndPan Mozilla SVGViewSpec.zoomAndPan documentation> 
-setZoomAndPan :: (MonadDOM m) => SVGViewSpec -> Word -> m ()
-setZoomAndPan self val
-  = liftDOM (self ^. jss "zoomAndPan" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.zoomAndPan Mozilla SVGViewSpec.zoomAndPan documentation> 
-getZoomAndPan :: (MonadDOM m) => SVGViewSpec -> m Word
-getZoomAndPan self
-  = liftDOM (round <$> ((self ^. js "zoomAndPan") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGZoomAndPan.hs b/src/JSDOM/Generated/SVGZoomAndPan.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGZoomAndPan.hs
+++ /dev/null
@@ -1,41 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGZoomAndPan
-       (pattern SVG_ZOOMANDPAN_UNKNOWN, pattern SVG_ZOOMANDPAN_DISABLE,
-        pattern SVG_ZOOMANDPAN_MAGNIFY, setZoomAndPan, getZoomAndPan,
-        SVGZoomAndPan(..), gTypeSVGZoomAndPan, IsSVGZoomAndPan,
-        toSVGZoomAndPan)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-pattern SVG_ZOOMANDPAN_UNKNOWN = 0
-pattern SVG_ZOOMANDPAN_DISABLE = 1
-pattern SVG_ZOOMANDPAN_MAGNIFY = 2
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomAndPan.zoomAndPan Mozilla SVGZoomAndPan.zoomAndPan documentation> 
-setZoomAndPan ::
-              (MonadDOM m, IsSVGZoomAndPan self) => self -> Word -> m ()
-setZoomAndPan self val
-  = liftDOM
-      ((toSVGZoomAndPan self) ^. jss "zoomAndPan" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomAndPan.zoomAndPan Mozilla SVGZoomAndPan.zoomAndPan documentation> 
-getZoomAndPan ::
-              (MonadDOM m, IsSVGZoomAndPan self) => self -> m Word
-getZoomAndPan self
-  = liftDOM
-      (round <$>
-         (((toSVGZoomAndPan self) ^. js "zoomAndPan") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SVGZoomEvent.hs b/src/JSDOM/Generated/SVGZoomEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SVGZoomEvent.hs
+++ /dev/null
@@ -1,48 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SVGZoomEvent
-       (getZoomRectScreen, getPreviousScale, getPreviousTranslate,
-        getNewScale, getNewTranslate, SVGZoomEvent(..), gTypeSVGZoomEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.zoomRectScreen Mozilla SVGZoomEvent.zoomRectScreen documentation> 
-getZoomRectScreen :: (MonadDOM m) => SVGZoomEvent -> m SVGRect
-getZoomRectScreen self
-  = liftDOM ((self ^. js "zoomRectScreen") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.previousScale Mozilla SVGZoomEvent.previousScale documentation> 
-getPreviousScale :: (MonadDOM m) => SVGZoomEvent -> m Float
-getPreviousScale self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "previousScale") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.previousTranslate Mozilla SVGZoomEvent.previousTranslate documentation> 
-getPreviousTranslate :: (MonadDOM m) => SVGZoomEvent -> m SVGPoint
-getPreviousTranslate self
-  = liftDOM ((self ^. js "previousTranslate") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.newScale Mozilla SVGZoomEvent.newScale documentation> 
-getNewScale :: (MonadDOM m) => SVGZoomEvent -> m Float
-getNewScale self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "newScale") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.newTranslate Mozilla SVGZoomEvent.newTranslate documentation> 
-getNewTranslate :: (MonadDOM m) => SVGZoomEvent -> m SVGPoint
-getNewTranslate self
-  = liftDOM ((self ^. js "newTranslate") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/Sanitizer.hs b/src/JSDOM/Generated/Sanitizer.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Sanitizer.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.Sanitizer
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/Sanitizer MDN Sanitizer. documentation>
+newSanitizer :: (MonadDOM m, IsSanitizerConfigOrSanitizerPresets configuration) => Maybe configuration -> m Sanitizer
+newSanitizer configuration = liftDOM (((new (jsg "Sanitizer") [P.maybe (P.return jsUndefined) toJSVal configuration]) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "allowAttribute" [toJSVal attribute]) >>= valToBool))
+
+-- | <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 (self ^. jsf "allowAttribute" [toJSVal attribute]))
+
+-- | <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 (((self ^. jsf "allowElement" [toJSVal element]) >>= valToBool))
+
+-- | <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 (self ^. jsf "allowElement" [toJSVal element]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/get MDN Sanitizer.get documentation>
+get :: (MonadDOM m) => Sanitizer -> m SanitizerConfig
+get self = liftDOM (((self ^. jsf "get" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/get MDN Sanitizer.get documentation>
+get_ :: (MonadDOM m) => Sanitizer -> m ()
+get_ self = liftDOM (void (self ^. jsf "get" ()))
+
+-- | <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 (((self ^. jsf "removeAttribute" [toJSVal attribute]) >>= valToBool))
+
+-- | <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 (self ^. jsf "removeAttribute" [toJSVal attribute]))
+
+-- | <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 (((self ^. jsf "removeElement" [toJSVal element]) >>= valToBool))
+
+-- | <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 (self ^. jsf "removeElement" [toJSVal element]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/removeUnsafe MDN Sanitizer.removeUnsafe documentation>
+removeUnsafe :: (MonadDOM m) => Sanitizer -> m Bool
+removeUnsafe self = liftDOM (((self ^. jsf "removeUnsafe" ()) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/removeUnsafe MDN Sanitizer.removeUnsafe documentation>
+removeUnsafe_ :: (MonadDOM m) => Sanitizer -> m ()
+removeUnsafe_ self = liftDOM (void (self ^. jsf "removeUnsafe" ()))
+
+-- | <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 (((self ^. jsf "replaceElementWithChildren" [toJSVal element]) >>= valToBool))
+
+-- | <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 (self ^. jsf "replaceElementWithChildren" [toJSVal element]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/setComments MDN Sanitizer.setComments documentation>
+setComments :: (MonadDOM m) => Sanitizer -> Bool -> m Bool
+setComments self allow = liftDOM (((self ^. jsf "setComments" [toJSVal allow]) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/setComments MDN Sanitizer.setComments documentation>
+setComments_ :: (MonadDOM m) => Sanitizer -> Bool -> m ()
+setComments_ self allow = liftDOM (void (self ^. jsf "setComments" [toJSVal allow]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/setDataAttributes MDN Sanitizer.setDataAttributes documentation>
+setDataAttributes :: (MonadDOM m) => Sanitizer -> Bool -> m Bool
+setDataAttributes self allow = liftDOM (((self ^. jsf "setDataAttributes" [toJSVal allow]) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Sanitizer/setDataAttributes MDN Sanitizer.setDataAttributes documentation>
+setDataAttributes_ :: (MonadDOM m) => Sanitizer -> Bool -> m ()
+setDataAttributes_ self allow = liftDOM (void (self ^. jsf "setDataAttributes" [toJSVal allow]))
diff --git a/src/JSDOM/Generated/SanitizerAttributeNamespace.hs b/src/JSDOM/Generated/SanitizerAttributeNamespace.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SanitizerAttributeNamespace.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.SanitizerAttributeNamespace
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#sanitizerattributenamespace SanitizerAttributeNamespace specification>
+newSanitizerAttributeNamespace :: (MonadDOM m, ToJSString name) => name -> m SanitizerAttributeNamespace
+newSanitizerAttributeNamespace name = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "name" (toJSVal name)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "name" (toJSVal val)))
+
+-- | <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 (((self ^. js "name") >>= fromJSValUnchecked))
+
+setNamespace :: (MonadDOM m, ToJSString val) => SanitizerAttributeNamespace -> Maybe val -> m ()
+setNamespace self val = liftDOM (void (self ^. jss "namespace" (toJSVal val)))
+
+getNamespace :: (MonadDOM m, FromJSString result) => SanitizerAttributeNamespace -> m (Maybe result)
+getNamespace self = liftDOM (((self ^. js "namespace") >>= fromMaybeJSString))
+
+getNamespaceUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SanitizerAttributeNamespace -> m result
+getNamespaceUnsafe self = liftDOM ((((self ^. js "namespace") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getNamespaceUnchecked :: (MonadDOM m, FromJSString result) => SanitizerAttributeNamespace -> m result
+getNamespaceUnchecked self = liftDOM (((self ^. js "namespace") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SanitizerConfig.hs b/src/JSDOM/Generated/SanitizerConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SanitizerConfig.hs
@@ -0,0 +1,180 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.SanitizerConfig
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#sanitizerconfig SanitizerConfig specification>
+newSanitizerConfig :: (MonadDOM m) => m SanitizerConfig
+newSanitizerConfig = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "elements" (toJSVal val)))
+
+-- | <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 (((self ^. js "elements") >>= 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 ((((self ^. js "elements") >>= 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 (((self ^. js "elements") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "removeElements" (toJSVal val)))
+
+-- | <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 (((self ^. js "removeElements") >>= 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 ((((self ^. js "removeElements") >>= 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 (((self ^. js "removeElements") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "replaceWithChildrenElements" (toJSVal val)))
+
+-- | <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 (((self ^. js "replaceWithChildrenElements") >>= 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 ((((self ^. js "replaceWithChildrenElements") >>= 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 (((self ^. js "replaceWithChildrenElements") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "processingInstructions" (toJSVal val)))
+
+-- | <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 (((self ^. js "processingInstructions") >>= 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 ((((self ^. js "processingInstructions") >>= 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 (((self ^. js "processingInstructions") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "removeProcessingInstructions" (toJSVal val)))
+
+-- | <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 (((self ^. js "removeProcessingInstructions") >>= 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 ((((self ^. js "removeProcessingInstructions") >>= 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 (((self ^. js "removeProcessingInstructions") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "attributes" (toJSVal val)))
+
+-- | <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 (((self ^. js "attributes") >>= 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 ((((self ^. js "attributes") >>= 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 (((self ^. js "attributes") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "removeAttributes" (toJSVal val)))
+
+-- | <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 (((self ^. js "removeAttributes") >>= 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 ((((self ^. js "removeAttributes") >>= 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 (((self ^. js "removeAttributes") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "comments" (toJSVal val)))
+
+-- | <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 (((self ^. js "comments") >>= 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 ((((self ^. js "comments") >>= 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 (((self ^. js "comments") >>= valToBool))
+
+-- | <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 (self ^. jss "dataAttributes" (toJSVal val)))
+
+-- | <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 (((self ^. js "dataAttributes") >>= 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 ((((self ^. js "dataAttributes") >>= 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 (((self ^. js "dataAttributes") >>= valToBool))
+
+-- | <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 (self ^. jss "javascriptURLs" (toJSVal val)))
+
+-- | <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 (((self ^. js "javascriptURLs") >>= 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 ((((self ^. js "javascriptURLs") >>= 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 (((self ^. js "javascriptURLs") >>= valToBool))
diff --git a/src/JSDOM/Generated/SanitizerElementNamespace.hs b/src/JSDOM/Generated/SanitizerElementNamespace.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SanitizerElementNamespace.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.SanitizerElementNamespace
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#sanitizerelementnamespace SanitizerElementNamespace specification>
+newSanitizerElementNamespace :: (MonadDOM m, ToJSString name) => name -> m SanitizerElementNamespace
+newSanitizerElementNamespace name = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "name" (toJSVal name)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toSanitizerElementNamespace self) ^. jss "name" (toJSVal val)))
+
+-- | <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 ((((Types.toSanitizerElementNamespace self) ^. js "name") >>= fromJSValUnchecked))
+
+setNamespace :: (MonadDOM m, IsSanitizerElementNamespace self, ToJSString val) => self -> Maybe val -> m ()
+setNamespace self val = liftDOM (void ((Types.toSanitizerElementNamespace self) ^. jss "namespace" (toJSVal val)))
+
+getNamespace :: (MonadDOM m, IsSanitizerElementNamespace self, FromJSString result) => self -> m (Maybe result)
+getNamespace self = liftDOM ((((Types.toSanitizerElementNamespace self) ^. js "namespace") >>= fromMaybeJSString))
+
+getNamespaceUnsafe :: (MonadDOM m, IsSanitizerElementNamespace self, HasCallStack, FromJSString result) => self -> m result
+getNamespaceUnsafe self = liftDOM (((((Types.toSanitizerElementNamespace self) ^. js "namespace") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getNamespaceUnchecked :: (MonadDOM m, IsSanitizerElementNamespace self, FromJSString result) => self -> m result
+getNamespaceUnchecked self = liftDOM ((((Types.toSanitizerElementNamespace self) ^. js "namespace") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SanitizerElementNamespaceWithAttributes.hs b/src/JSDOM/Generated/SanitizerElementNamespaceWithAttributes.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SanitizerElementNamespaceWithAttributes.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.SanitizerElementNamespaceWithAttributes
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#sanitizerelementnamespacewithattributes SanitizerElementNamespaceWithAttributes specification>
+newSanitizerElementNamespaceWithAttributes :: (MonadDOM m, ToJSString name) => name -> m SanitizerElementNamespaceWithAttributes
+newSanitizerElementNamespaceWithAttributes name = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "name" (toJSVal name)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "attributes" (toJSVal val)))
+
+-- | <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 (((self ^. js "attributes") >>= 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 ((((self ^. js "attributes") >>= 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 (((self ^. js "attributes") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "removeAttributes" (toJSVal val)))
+
+-- | <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 (((self ^. js "removeAttributes") >>= 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 ((((self ^. js "removeAttributes") >>= 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 (((self ^. js "removeAttributes") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SanitizerProcessingInstruction.hs b/src/JSDOM/Generated/SanitizerProcessingInstruction.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SanitizerProcessingInstruction.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.SanitizerProcessingInstruction
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#sanitizerprocessinginstruction SanitizerProcessingInstruction specification>
+newSanitizerProcessingInstruction :: (MonadDOM m, ToJSString target) => target -> m SanitizerProcessingInstruction
+newSanitizerProcessingInstruction target = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "target" (toJSVal target)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "target" (toJSVal val)))
+
+-- | <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 (((self ^. js "target") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Scheduler.hs b/src/JSDOM/Generated/Scheduler.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Scheduler.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module JSDOM.Generated.Scheduler
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "postTask" [toJSVal callback', P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise))
+
+-- | <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 (((self ^. jsf "postTask" [toJSVal callback', P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Scheduler/yield MDN Scheduler.yield documentation>
+yield :: (MonadDOM m) => Scheduler -> m ()
+yield self = liftDOM (void (((self ^. jsf "yield" ()) >>= readPromise)))
diff --git a/src/JSDOM/Generated/SchedulerPostTaskCallback.hs b/src/JSDOM/Generated/SchedulerPostTaskCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SchedulerPostTaskCallback.hs
@@ -0,0 +1,27 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newSchedulerPostTaskCallback :: (MonadDOM m) => (JSM ()) -> m SchedulerPostTaskCallback
+newSchedulerPostTaskCallback callback = liftDOM (SchedulerPostTaskCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        _ -> do
+          callback ))
+
+newSchedulerPostTaskCallbackSync :: (MonadDOM m) => (JSM ()) -> m SchedulerPostTaskCallback
+newSchedulerPostTaskCallbackSync callback = liftDOM (SchedulerPostTaskCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        _ -> do
+          callback ))
+
+newSchedulerPostTaskCallbackAsync :: (MonadDOM m) => (JSM ()) -> m SchedulerPostTaskCallback
+newSchedulerPostTaskCallbackAsync callback = liftDOM (SchedulerPostTaskCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        _ -> do
+          callback ))
diff --git a/src/JSDOM/Generated/SchedulerPostTaskOptions.hs b/src/JSDOM/Generated/SchedulerPostTaskOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SchedulerPostTaskOptions.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module JSDOM.Generated.SchedulerPostTaskOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://wicg.github.io/scheduling-apis/#dictdef-schedulerposttaskoptions SchedulerPostTaskOptions specification>
+newSchedulerPostTaskOptions :: (MonadDOM m) => m SchedulerPostTaskOptions
+newSchedulerPostTaskOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "signal" (toJSVal val)))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-signal SchedulerPostTaskOptions.signal specification>
+getSignal :: (MonadDOM m) => SchedulerPostTaskOptions -> m (Maybe AbortSignal)
+getSignal self = liftDOM (((self ^. js "signal") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-signal SchedulerPostTaskOptions.signal specification>
+getSignalUnsafe :: (MonadDOM m, HasCallStack) => SchedulerPostTaskOptions -> m AbortSignal
+getSignalUnsafe self = liftDOM ((((self ^. js "signal") >>= 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 (((self ^. js "signal") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-priority SchedulerPostTaskOptions.priority specification>
+setPriority :: (MonadDOM m) => SchedulerPostTaskOptions -> TaskPriority -> m ()
+setPriority self val = liftDOM (void (self ^. jss "priority" (toJSVal val)))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-priority SchedulerPostTaskOptions.priority specification>
+getPriority :: (MonadDOM m) => SchedulerPostTaskOptions -> m (Maybe TaskPriority)
+getPriority self = liftDOM (((self ^. js "priority") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-priority SchedulerPostTaskOptions.priority specification>
+getPriorityUnsafe :: (MonadDOM m, HasCallStack) => SchedulerPostTaskOptions -> m TaskPriority
+getPriorityUnsafe self = liftDOM ((((self ^. js "priority") >>= 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 (((self ^. js "priority") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-delay SchedulerPostTaskOptions.delay specification>
+setDelay :: (MonadDOM m) => SchedulerPostTaskOptions -> Word53 -> m ()
+setDelay self val = liftDOM (void (self ^. jss "delay" (toJSVal val)))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-delay SchedulerPostTaskOptions.delay specification>
+getDelay :: (MonadDOM m) => SchedulerPostTaskOptions -> m (Maybe Word53)
+getDelay self = liftDOM (((self ^. js "delay") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-schedulerposttaskoptions-delay SchedulerPostTaskOptions.delay specification>
+getDelayUnsafe :: (MonadDOM m, HasCallStack) => SchedulerPostTaskOptions -> m Word53
+getDelayUnsafe self = liftDOM ((((self ^. js "delay") >>= 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 (((self ^. js "delay") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Screen.hs b/src/JSDOM/Generated/Screen.hs
--- a/src/JSDOM/Generated/Screen.hs
+++ b/src/JSDOM/Generated/Screen.hs
@@ -1,62 +1,44 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
 module JSDOM.Generated.Screen
-       (getHeight, getWidth, getColorDepth, getPixelDepth, getAvailLeft,
-        getAvailTop, getAvailHeight, getAvailWidth, Screen(..),
-        gTypeScreen)
+       (getAvailWidth, getAvailHeight, getWidth, getHeight, getColorDepth, getPixelDepth, getOrientation, Screen(..), gTypeScreen, IsScreen, toScreen)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.height Mozilla Screen.height documentation> 
-getHeight :: (MonadDOM m) => Screen -> m Word
-getHeight self
-  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.width Mozilla Screen.width documentation> 
-getWidth :: (MonadDOM m) => Screen -> m Word
-getWidth self
-  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Screen/availWidth MDN Screen.availWidth documentation>
+getAvailWidth :: (MonadDOM m, IsScreen self) => self -> m Int
+getAvailWidth self = liftDOM ((P.round <$> (((Types.toScreen self) ^. js "availWidth") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.colorDepth Mozilla Screen.colorDepth documentation> 
-getColorDepth :: (MonadDOM m) => Screen -> m Word
-getColorDepth self
-  = liftDOM (round <$> ((self ^. js "colorDepth") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Screen/availHeight MDN Screen.availHeight documentation>
+getAvailHeight :: (MonadDOM m, IsScreen self) => self -> m Int
+getAvailHeight self = liftDOM ((P.round <$> (((Types.toScreen self) ^. js "availHeight") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.pixelDepth Mozilla Screen.pixelDepth documentation> 
-getPixelDepth :: (MonadDOM m) => Screen -> m Word
-getPixelDepth self
-  = liftDOM (round <$> ((self ^. js "pixelDepth") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Screen/width MDN Screen.width documentation>
+getWidth :: (MonadDOM m, IsScreen self) => self -> m Int
+getWidth self = liftDOM ((P.round <$> (((Types.toScreen self) ^. js "width") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.availLeft Mozilla Screen.availLeft documentation> 
-getAvailLeft :: (MonadDOM m) => Screen -> m Int
-getAvailLeft self
-  = liftDOM (round <$> ((self ^. js "availLeft") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Screen/height MDN Screen.height documentation>
+getHeight :: (MonadDOM m, IsScreen self) => self -> m Int
+getHeight self = liftDOM ((P.round <$> (((Types.toScreen self) ^. js "height") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.availTop Mozilla Screen.availTop documentation> 
-getAvailTop :: (MonadDOM m) => Screen -> m Int
-getAvailTop self
-  = liftDOM (round <$> ((self ^. js "availTop") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Screen/colorDepth MDN Screen.colorDepth documentation>
+getColorDepth :: (MonadDOM m, IsScreen self) => self -> m Word
+getColorDepth self = liftDOM ((P.round <$> (((Types.toScreen self) ^. js "colorDepth") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.availHeight Mozilla Screen.availHeight documentation> 
-getAvailHeight :: (MonadDOM m) => Screen -> m Word
-getAvailHeight self
-  = liftDOM (round <$> ((self ^. js "availHeight") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Screen/pixelDepth MDN Screen.pixelDepth documentation>
+getPixelDepth :: (MonadDOM m, IsScreen self) => self -> m Word
+getPixelDepth self = liftDOM ((P.round <$> (((Types.toScreen self) ^. js "pixelDepth") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.availWidth Mozilla Screen.availWidth documentation> 
-getAvailWidth :: (MonadDOM m) => Screen -> m Word
-getAvailWidth self
-  = liftDOM (round <$> ((self ^. js "availWidth") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Screen/orientation MDN Screen.orientation documentation>
+getOrientation :: (MonadDOM m, IsScreen self) => self -> m ScreenOrientation
+getOrientation self = liftDOM ((((Types.toScreen self) ^. js "orientation") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ScreenDetailed.hs b/src/JSDOM/Generated/ScreenDetailed.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ScreenDetailed.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from window-management (webref). Do not edit.
+module JSDOM.Generated.ScreenDetailed
+       (ScreenDetailed(..), gTypeScreenDetailed)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/ScreenOrientation.hs b/src/JSDOM/Generated/ScreenOrientation.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ScreenOrientation.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from screen-orientation (webref). Do not edit.
+module JSDOM.Generated.ScreenOrientation
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/ScreenOrientation/lock MDN ScreenOrientation.lock documentation>
+lock :: (MonadDOM m) => ScreenOrientation -> OrientationLockType -> m ()
+lock self orientation = liftDOM (void (((self ^. jsf "lock" [toJSVal orientation]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ScreenOrientation/unlock MDN ScreenOrientation.unlock documentation>
+unlock :: (MonadDOM m) => ScreenOrientation -> m ()
+unlock self = liftDOM (void (self ^. jsf "unlock" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ScreenOrientation/type MDN ScreenOrientation.type documentation>
+getType :: (MonadDOM m) => ScreenOrientation -> m OrientationType
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ScreenOrientation/angle MDN ScreenOrientation.angle documentation>
+getAngle :: (MonadDOM m) => ScreenOrientation -> m Word
+getAngle self = liftDOM ((P.round <$> ((self ^. js "angle") >>= valToNumber)))
+
+-- | <https://w3c.github.io/screen-orientation/#dom-screenorientation-onchange change event>
+change :: EventName ScreenOrientation Event
+change = unsafeEventName (toJSString "change")
diff --git a/src/JSDOM/Generated/ScriptProcessorNode.hs b/src/JSDOM/Generated/ScriptProcessorNode.hs
--- a/src/JSDOM/Generated/ScriptProcessorNode.hs
+++ b/src/JSDOM/Generated/ScriptProcessorNode.hs
@@ -1,30 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.ScriptProcessorNode
-       (audioProcess, getBufferSize, ScriptProcessorNode(..),
-        gTypeScriptProcessorNode)
+       (getBufferSize, audioProcess, ScriptProcessorNode(..), gTypeScriptProcessorNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode.onaudioprocess Mozilla ScriptProcessorNode.onaudioprocess documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ScriptProcessorNode/bufferSize MDN ScriptProcessorNode.bufferSize documentation>
+getBufferSize :: (MonadDOM m) => ScriptProcessorNode -> m Int
+getBufferSize self = liftDOM ((P.round <$> ((self ^. js "bufferSize") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-scriptprocessornode-onaudioprocess audioprocess event>
 audioProcess :: EventName ScriptProcessorNode AudioProcessingEvent
 audioProcess = unsafeEventName (toJSString "audioprocess")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode.bufferSize Mozilla ScriptProcessorNode.bufferSize documentation> 
-getBufferSize :: (MonadDOM m) => ScriptProcessorNode -> m Int
-getBufferSize self
-  = liftDOM (round <$> ((self ^. js "bufferSize") >>= valToNumber))
diff --git a/src/JSDOM/Generated/ScrollIntoViewOptions.hs b/src/JSDOM/Generated/ScrollIntoViewOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ScrollIntoViewOptions.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module JSDOM.Generated.ScrollIntoViewOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dictdef-scrollintoviewoptions ScrollIntoViewOptions specification>
+newScrollIntoViewOptions :: (MonadDOM m) => m ScrollIntoViewOptions
+newScrollIntoViewOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-block ScrollIntoViewOptions.block specification>
+setBlock :: (MonadDOM m) => ScrollIntoViewOptions -> ScrollLogicalPosition -> m ()
+setBlock self val = liftDOM (void (self ^. jss "block" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-block ScrollIntoViewOptions.block specification>
+getBlock :: (MonadDOM m) => ScrollIntoViewOptions -> m (Maybe ScrollLogicalPosition)
+getBlock self = liftDOM (((self ^. js "block") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-block ScrollIntoViewOptions.block specification>
+getBlockUnsafe :: (MonadDOM m, HasCallStack) => ScrollIntoViewOptions -> m ScrollLogicalPosition
+getBlockUnsafe self = liftDOM ((((self ^. js "block") >>= 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 (((self ^. js "block") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-inline ScrollIntoViewOptions.inline specification>
+setInline :: (MonadDOM m) => ScrollIntoViewOptions -> ScrollLogicalPosition -> m ()
+setInline self val = liftDOM (void (self ^. jss "inline" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-inline ScrollIntoViewOptions.inline specification>
+getInline :: (MonadDOM m) => ScrollIntoViewOptions -> m (Maybe ScrollLogicalPosition)
+getInline self = liftDOM (((self ^. js "inline") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-inline ScrollIntoViewOptions.inline specification>
+getInlineUnsafe :: (MonadDOM m, HasCallStack) => ScrollIntoViewOptions -> m ScrollLogicalPosition
+getInlineUnsafe self = liftDOM ((((self ^. js "inline") >>= 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 (((self ^. js "inline") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-container ScrollIntoViewOptions.container specification>
+setContainer :: (MonadDOM m) => ScrollIntoViewOptions -> ScrollIntoViewContainer -> m ()
+setContainer self val = liftDOM (void (self ^. jss "container" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-container ScrollIntoViewOptions.container specification>
+getContainer :: (MonadDOM m) => ScrollIntoViewOptions -> m (Maybe ScrollIntoViewContainer)
+getContainer self = liftDOM (((self ^. js "container") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollintoviewoptions-container ScrollIntoViewOptions.container specification>
+getContainerUnsafe :: (MonadDOM m, HasCallStack) => ScrollIntoViewOptions -> m ScrollIntoViewContainer
+getContainerUnsafe self = liftDOM ((((self ^. js "container") >>= 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 (((self ^. js "container") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ScrollOptions.hs b/src/JSDOM/Generated/ScrollOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ScrollOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module JSDOM.Generated.ScrollOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dictdef-scrolloptions ScrollOptions specification>
+newScrollOptions :: (MonadDOM m) => m ScrollOptions
+newScrollOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toScrollOptions self) ^. jss "behavior" (toJSVal val)))
+
+-- | <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 ((((Types.toScrollOptions self) ^. js "behavior") >>= 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 (((((Types.toScrollOptions self) ^. js "behavior") >>= 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 ((((Types.toScrollOptions self) ^. js "behavior") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ScrollResult.hs b/src/JSDOM/Generated/ScrollResult.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ScrollResult.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module JSDOM.Generated.ScrollResult
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dictdef-scrollresult ScrollResult specification>
+newScrollResult :: (MonadDOM m) => Bool -> m ScrollResult
+newScrollResult interrupted = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "interrupted" (toJSVal interrupted)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollresult-interrupted ScrollResult.interrupted specification>
+setInterrupted :: (MonadDOM m) => ScrollResult -> Bool -> m ()
+setInterrupted self val = liftDOM (void (self ^. jss "interrupted" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrollresult-interrupted ScrollResult.interrupted specification>
+getInterrupted :: (MonadDOM m) => ScrollResult -> m Bool
+getInterrupted self = liftDOM (((self ^. js "interrupted") >>= valToBool))
diff --git a/src/JSDOM/Generated/ScrollTimeline.hs b/src/JSDOM/Generated/ScrollTimeline.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ScrollTimeline.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scroll-animations-1 (webref). Do not edit.
+module JSDOM.Generated.ScrollTimeline
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/ScrollTimeline/ScrollTimeline MDN ScrollTimeline. documentation>
+newScrollTimeline :: (MonadDOM m) => Maybe ScrollTimelineOptions -> m ScrollTimeline
+newScrollTimeline options = liftDOM (((new (jsg "ScrollTimeline") [P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toScrollTimeline self) ^. js "source") >>= 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 (((((Types.toScrollTimeline self) ^. js "source") >>= 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 ((((Types.toScrollTimeline self) ^. js "source") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ScrollTimeline/axis MDN ScrollTimeline.axis documentation>
+getAxis :: (MonadDOM m, IsScrollTimeline self) => self -> m ScrollAxis
+getAxis self = liftDOM ((((Types.toScrollTimeline self) ^. js "axis") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ScrollTimelineOptions.hs b/src/JSDOM/Generated/ScrollTimelineOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ScrollTimelineOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scroll-animations-1 (webref). Do not edit.
+module JSDOM.Generated.ScrollTimelineOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dictdef-scrolltimelineoptions ScrollTimelineOptions specification>
+newScrollTimelineOptions :: (MonadDOM m) => m ScrollTimelineOptions
+newScrollTimelineOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "source" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-scrolltimelineoptions-source ScrollTimelineOptions.source specification>
+getSource :: (MonadDOM m) => ScrollTimelineOptions -> m (Maybe Element)
+getSource self = liftDOM (((self ^. js "source") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-scrolltimelineoptions-source ScrollTimelineOptions.source specification>
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => ScrollTimelineOptions -> m Element
+getSourceUnsafe self = liftDOM ((((self ^. js "source") >>= 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 (((self ^. js "source") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-scrolltimelineoptions-axis ScrollTimelineOptions.axis specification>
+setAxis :: (MonadDOM m) => ScrollTimelineOptions -> ScrollAxis -> m ()
+setAxis self val = liftDOM (void (self ^. jss "axis" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-scrolltimelineoptions-axis ScrollTimelineOptions.axis specification>
+getAxis :: (MonadDOM m) => ScrollTimelineOptions -> m (Maybe ScrollAxis)
+getAxis self = liftDOM (((self ^. js "axis") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-scrolltimelineoptions-axis ScrollTimelineOptions.axis specification>
+getAxisUnsafe :: (MonadDOM m, HasCallStack) => ScrollTimelineOptions -> m ScrollAxis
+getAxisUnsafe self = liftDOM ((((self ^. js "axis") >>= 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 (((self ^. js "axis") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ScrollToOptions.hs b/src/JSDOM/Generated/ScrollToOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ScrollToOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module JSDOM.Generated.ScrollToOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dictdef-scrolltooptions ScrollToOptions specification>
+newScrollToOptions :: (MonadDOM m) => m ScrollToOptions
+newScrollToOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolltooptions-left ScrollToOptions.left specification>
+setLeft :: (MonadDOM m) => ScrollToOptions -> Double -> m ()
+setLeft self val = liftDOM (void (self ^. jss "left" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolltooptions-left ScrollToOptions.left specification>
+getLeft :: (MonadDOM m) => ScrollToOptions -> m (Maybe Double)
+getLeft self = liftDOM (((self ^. js "left") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolltooptions-left ScrollToOptions.left specification>
+getLeftUnsafe :: (MonadDOM m, HasCallStack) => ScrollToOptions -> m Double
+getLeftUnsafe self = liftDOM ((((self ^. js "left") >>= 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 (((self ^. js "left") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolltooptions-top ScrollToOptions.top specification>
+setTop :: (MonadDOM m) => ScrollToOptions -> Double -> m ()
+setTop self val = liftDOM (void (self ^. jss "top" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolltooptions-top ScrollToOptions.top specification>
+getTop :: (MonadDOM m) => ScrollToOptions -> m (Maybe Double)
+getTop self = liftDOM (((self ^. js "top") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-scrolltooptions-top ScrollToOptions.top specification>
+getTopUnsafe :: (MonadDOM m, HasCallStack) => ScrollToOptions -> m Double
+getTopUnsafe self = liftDOM ((((self ^. js "top") >>= 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 (((self ^. js "top") >>= valToNumber))
diff --git a/src/JSDOM/Generated/SecurityPolicyViolationEvent.hs b/src/JSDOM/Generated/SecurityPolicyViolationEvent.hs
--- a/src/JSDOM/Generated/SecurityPolicyViolationEvent.hs
+++ b/src/JSDOM/Generated/SecurityPolicyViolationEvent.hs
@@ -1,104 +1,68 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from CSP3 (webref). Do not edit.
 module JSDOM.Generated.SecurityPolicyViolationEvent
-       (newSecurityPolicyViolationEvent, getDocumentURI, getReferrer,
-        getBlockedURI, getViolatedDirective, getEffectiveDirective,
-        getOriginalPolicy, getSourceFile, getStatusCode, getLineNumber,
-        getColumnNumber, SecurityPolicyViolationEvent(..),
-        gTypeSecurityPolicyViolationEvent)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent Mozilla SecurityPolicyViolationEvent documentation> 
-newSecurityPolicyViolationEvent ::
-                                (MonadDOM m, ToJSString type') =>
-                                  type' ->
-                                    Maybe SecurityPolicyViolationEventInit ->
-                                      m SecurityPolicyViolationEvent
-newSecurityPolicyViolationEvent type' eventInitDict
-  = liftDOM
-      (SecurityPolicyViolationEvent <$>
-         new (jsg "SecurityPolicyViolationEvent")
-           [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "SecurityPolicyViolationEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.documentURI Mozilla SecurityPolicyViolationEvent.documentURI documentation> 
-getDocumentURI ::
-               (MonadDOM m, FromJSString result) =>
-                 SecurityPolicyViolationEvent -> m result
-getDocumentURI self
-  = liftDOM ((self ^. js "documentURI") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/documentURI MDN SecurityPolicyViolationEvent.documentURI documentation>
+getDocumentURI :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEvent -> m result
+getDocumentURI self = liftDOM (((self ^. js "documentURI") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.referrer Mozilla SecurityPolicyViolationEvent.referrer documentation> 
-getReferrer ::
-            (MonadDOM m, FromJSString result) =>
-              SecurityPolicyViolationEvent -> m result
-getReferrer self
-  = liftDOM ((self ^. js "referrer") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/referrer MDN SecurityPolicyViolationEvent.referrer documentation>
+getReferrer :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEvent -> m result
+getReferrer self = liftDOM (((self ^. js "referrer") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.blockedURI Mozilla SecurityPolicyViolationEvent.blockedURI documentation> 
-getBlockedURI ::
-              (MonadDOM m, FromJSString result) =>
-                SecurityPolicyViolationEvent -> m result
-getBlockedURI self
-  = liftDOM ((self ^. js "blockedURI") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/blockedURI MDN SecurityPolicyViolationEvent.blockedURI documentation>
+getBlockedURI :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEvent -> m result
+getBlockedURI self = liftDOM (((self ^. js "blockedURI") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.violatedDirective Mozilla SecurityPolicyViolationEvent.violatedDirective documentation> 
-getViolatedDirective ::
-                     (MonadDOM m, FromJSString result) =>
-                       SecurityPolicyViolationEvent -> m result
-getViolatedDirective self
-  = liftDOM ((self ^. js "violatedDirective") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/effectiveDirective MDN SecurityPolicyViolationEvent.effectiveDirective documentation>
+getEffectiveDirective :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEvent -> m result
+getEffectiveDirective self = liftDOM (((self ^. js "effectiveDirective") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.effectiveDirective Mozilla SecurityPolicyViolationEvent.effectiveDirective documentation> 
-getEffectiveDirective ::
-                      (MonadDOM m, FromJSString result) =>
-                        SecurityPolicyViolationEvent -> m result
-getEffectiveDirective self
-  = liftDOM
-      ((self ^. js "effectiveDirective") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/violatedDirective MDN SecurityPolicyViolationEvent.violatedDirective documentation>
+getViolatedDirective :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEvent -> m result
+getViolatedDirective self = liftDOM (((self ^. js "violatedDirective") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.originalPolicy Mozilla SecurityPolicyViolationEvent.originalPolicy documentation> 
-getOriginalPolicy ::
-                  (MonadDOM m, FromJSString result) =>
-                    SecurityPolicyViolationEvent -> m result
-getOriginalPolicy self
-  = liftDOM ((self ^. js "originalPolicy") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/originalPolicy MDN SecurityPolicyViolationEvent.originalPolicy documentation>
+getOriginalPolicy :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEvent -> m result
+getOriginalPolicy self = liftDOM (((self ^. js "originalPolicy") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.sourceFile Mozilla SecurityPolicyViolationEvent.sourceFile documentation> 
-getSourceFile ::
-              (MonadDOM m, FromJSString result) =>
-                SecurityPolicyViolationEvent -> m result
-getSourceFile self
-  = liftDOM ((self ^. js "sourceFile") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/sourceFile MDN SecurityPolicyViolationEvent.sourceFile documentation>
+getSourceFile :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEvent -> m result
+getSourceFile self = liftDOM (((self ^. js "sourceFile") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.statusCode Mozilla SecurityPolicyViolationEvent.statusCode documentation> 
-getStatusCode ::
-              (MonadDOM m) => SecurityPolicyViolationEvent -> m Word
-getStatusCode self
-  = liftDOM (round <$> ((self ^. js "statusCode") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/sample MDN SecurityPolicyViolationEvent.sample documentation>
+getSample :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEvent -> m result
+getSample self = liftDOM (((self ^. js "sample") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.lineNumber Mozilla SecurityPolicyViolationEvent.lineNumber documentation> 
-getLineNumber ::
-              (MonadDOM m) => SecurityPolicyViolationEvent -> m Int
-getLineNumber self
-  = liftDOM (round <$> ((self ^. js "lineNumber") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/disposition MDN SecurityPolicyViolationEvent.disposition documentation>
+getDisposition :: (MonadDOM m) => SecurityPolicyViolationEvent -> m SecurityPolicyViolationEventDisposition
+getDisposition self = liftDOM (((self ^. js "disposition") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.columnNumber Mozilla SecurityPolicyViolationEvent.columnNumber documentation> 
-getColumnNumber ::
-                (MonadDOM m) => SecurityPolicyViolationEvent -> m Int
-getColumnNumber self
-  = liftDOM (round <$> ((self ^. js "columnNumber") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/statusCode MDN SecurityPolicyViolationEvent.statusCode documentation>
+getStatusCode :: (MonadDOM m) => SecurityPolicyViolationEvent -> m Word
+getStatusCode self = liftDOM ((P.round <$> ((self ^. js "statusCode") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/lineNumber MDN SecurityPolicyViolationEvent.lineNumber documentation>
+getLineNumber :: (MonadDOM m) => SecurityPolicyViolationEvent -> m Word
+getLineNumber self = liftDOM ((P.round <$> ((self ^. js "lineNumber") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SecurityPolicyViolationEvent/columnNumber MDN SecurityPolicyViolationEvent.columnNumber documentation>
+getColumnNumber :: (MonadDOM m) => SecurityPolicyViolationEvent -> m Word
+getColumnNumber self = liftDOM ((P.round <$> ((self ^. js "columnNumber") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/SecurityPolicyViolationEventInit.hs b/src/JSDOM/Generated/SecurityPolicyViolationEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SecurityPolicyViolationEventInit.hs
@@ -0,0 +1,212 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from CSP3 (webref). Do not edit.
+module JSDOM.Generated.SecurityPolicyViolationEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webappsec-csp/#dictdef-securitypolicyviolationeventinit SecurityPolicyViolationEventInit specification>
+newSecurityPolicyViolationEventInit :: (MonadDOM m) => m SecurityPolicyViolationEventInit
+newSecurityPolicyViolationEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "documentURI" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-documenturi SecurityPolicyViolationEventInit.documentURI specification>
+getDocumentURI :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m (Maybe result)
+getDocumentURI self = liftDOM (((self ^. js "documentURI") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-documenturi SecurityPolicyViolationEventInit.documentURI specification>
+getDocumentURIUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getDocumentURIUnsafe self = liftDOM ((((self ^. js "documentURI") >>= fromMaybeJSString) >>= 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 (((self ^. js "documentURI") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "referrer" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-referrer SecurityPolicyViolationEventInit.referrer specification>
+getReferrer :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m (Maybe result)
+getReferrer self = liftDOM (((self ^. js "referrer") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-referrer SecurityPolicyViolationEventInit.referrer specification>
+getReferrerUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getReferrerUnsafe self = liftDOM ((((self ^. js "referrer") >>= fromMaybeJSString) >>= 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 (((self ^. js "referrer") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "blockedURI" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-blockeduri SecurityPolicyViolationEventInit.blockedURI specification>
+getBlockedURI :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m (Maybe result)
+getBlockedURI self = liftDOM (((self ^. js "blockedURI") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-blockeduri SecurityPolicyViolationEventInit.blockedURI specification>
+getBlockedURIUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getBlockedURIUnsafe self = liftDOM ((((self ^. js "blockedURI") >>= fromMaybeJSString) >>= 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 (((self ^. js "blockedURI") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "violatedDirective" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-violateddirective SecurityPolicyViolationEventInit.violatedDirective specification>
+getViolatedDirective :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m (Maybe result)
+getViolatedDirective self = liftDOM (((self ^. js "violatedDirective") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-violateddirective SecurityPolicyViolationEventInit.violatedDirective specification>
+getViolatedDirectiveUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getViolatedDirectiveUnsafe self = liftDOM ((((self ^. js "violatedDirective") >>= fromMaybeJSString) >>= 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 (((self ^. js "violatedDirective") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "effectiveDirective" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-effectivedirective SecurityPolicyViolationEventInit.effectiveDirective specification>
+getEffectiveDirective :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m (Maybe result)
+getEffectiveDirective self = liftDOM (((self ^. js "effectiveDirective") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-effectivedirective SecurityPolicyViolationEventInit.effectiveDirective specification>
+getEffectiveDirectiveUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getEffectiveDirectiveUnsafe self = liftDOM ((((self ^. js "effectiveDirective") >>= fromMaybeJSString) >>= 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 (((self ^. js "effectiveDirective") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "originalPolicy" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-originalpolicy SecurityPolicyViolationEventInit.originalPolicy specification>
+getOriginalPolicy :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m (Maybe result)
+getOriginalPolicy self = liftDOM (((self ^. js "originalPolicy") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-originalpolicy SecurityPolicyViolationEventInit.originalPolicy specification>
+getOriginalPolicyUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getOriginalPolicyUnsafe self = liftDOM ((((self ^. js "originalPolicy") >>= fromMaybeJSString) >>= 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 (((self ^. js "originalPolicy") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "sourceFile" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-sourcefile SecurityPolicyViolationEventInit.sourceFile specification>
+getSourceFile :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m (Maybe result)
+getSourceFile self = liftDOM (((self ^. js "sourceFile") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-sourcefile SecurityPolicyViolationEventInit.sourceFile specification>
+getSourceFileUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getSourceFileUnsafe self = liftDOM ((((self ^. js "sourceFile") >>= fromMaybeJSString) >>= 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 (((self ^. js "sourceFile") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "sample" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-sample SecurityPolicyViolationEventInit.sample specification>
+getSample :: (MonadDOM m, FromJSString result) => SecurityPolicyViolationEventInit -> m (Maybe result)
+getSample self = liftDOM (((self ^. js "sample") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-sample SecurityPolicyViolationEventInit.sample specification>
+getSampleUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => SecurityPolicyViolationEventInit -> m result
+getSampleUnsafe self = liftDOM ((((self ^. js "sample") >>= fromMaybeJSString) >>= 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 (((self ^. js "sample") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-disposition SecurityPolicyViolationEventInit.disposition specification>
+setDisposition :: (MonadDOM m) => SecurityPolicyViolationEventInit -> SecurityPolicyViolationEventDisposition -> m ()
+setDisposition self val = liftDOM (void (self ^. jss "disposition" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-disposition SecurityPolicyViolationEventInit.disposition specification>
+getDisposition :: (MonadDOM m) => SecurityPolicyViolationEventInit -> m (Maybe SecurityPolicyViolationEventDisposition)
+getDisposition self = liftDOM (((self ^. js "disposition") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-disposition SecurityPolicyViolationEventInit.disposition specification>
+getDispositionUnsafe :: (MonadDOM m, HasCallStack) => SecurityPolicyViolationEventInit -> m SecurityPolicyViolationEventDisposition
+getDispositionUnsafe self = liftDOM ((((self ^. js "disposition") >>= 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 (((self ^. js "disposition") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-statuscode SecurityPolicyViolationEventInit.statusCode specification>
+setStatusCode :: (MonadDOM m) => SecurityPolicyViolationEventInit -> Word -> m ()
+setStatusCode self val = liftDOM (void (self ^. jss "statusCode" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-statuscode SecurityPolicyViolationEventInit.statusCode specification>
+getStatusCode :: (MonadDOM m) => SecurityPolicyViolationEventInit -> m (Maybe Word)
+getStatusCode self = liftDOM (((self ^. js "statusCode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-statuscode SecurityPolicyViolationEventInit.statusCode specification>
+getStatusCodeUnsafe :: (MonadDOM m, HasCallStack) => SecurityPolicyViolationEventInit -> m Word
+getStatusCodeUnsafe self = liftDOM ((((self ^. js "statusCode") >>= 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 ((P.round <$> ((self ^. js "statusCode") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-linenumber SecurityPolicyViolationEventInit.lineNumber specification>
+setLineNumber :: (MonadDOM m) => SecurityPolicyViolationEventInit -> Word -> m ()
+setLineNumber self val = liftDOM (void (self ^. jss "lineNumber" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-linenumber SecurityPolicyViolationEventInit.lineNumber specification>
+getLineNumber :: (MonadDOM m) => SecurityPolicyViolationEventInit -> m (Maybe Word)
+getLineNumber self = liftDOM (((self ^. js "lineNumber") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-linenumber SecurityPolicyViolationEventInit.lineNumber specification>
+getLineNumberUnsafe :: (MonadDOM m, HasCallStack) => SecurityPolicyViolationEventInit -> m Word
+getLineNumberUnsafe self = liftDOM ((((self ^. js "lineNumber") >>= 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 ((P.round <$> ((self ^. js "lineNumber") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-columnnumber SecurityPolicyViolationEventInit.columnNumber specification>
+setColumnNumber :: (MonadDOM m) => SecurityPolicyViolationEventInit -> Word -> m ()
+setColumnNumber self val = liftDOM (void (self ^. jss "columnNumber" (toJSVal val)))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-columnnumber SecurityPolicyViolationEventInit.columnNumber specification>
+getColumnNumber :: (MonadDOM m) => SecurityPolicyViolationEventInit -> m (Maybe Word)
+getColumnNumber self = liftDOM (((self ^. js "columnNumber") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webappsec-csp/#dom-securitypolicyviolationeventinit-columnnumber SecurityPolicyViolationEventInit.columnNumber specification>
+getColumnNumberUnsafe :: (MonadDOM m, HasCallStack) => SecurityPolicyViolationEventInit -> m Word
+getColumnNumberUnsafe self = liftDOM ((((self ^. js "columnNumber") >>= 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 ((P.round <$> ((self ^. js "columnNumber") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/Segment.hs b/src/JSDOM/Generated/Segment.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Segment.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-extensions (webref). Do not edit.
+module JSDOM.Generated.Segment
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment Segment specification>
+newSegment :: (MonadDOM m) => SegmentType -> Int -> Float -> m Segment
+newSegment type' id probability = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "type" (toJSVal type')) P.>> (o ^. jss "id" (toJSVal id)) P.>> (o ^. jss "probability" (toJSVal probability)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-type Segment.type specification>
+setType :: (MonadDOM m) => Segment -> SegmentType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-type Segment.type specification>
+getType :: (MonadDOM m) => Segment -> m SegmentType
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-id Segment.id specification>
+setId :: (MonadDOM m) => Segment -> Int -> m ()
+setId self val = liftDOM (void (self ^. jss "id" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-id Segment.id specification>
+getId :: (MonadDOM m) => Segment -> m Int
+getId self = liftDOM ((P.round <$> ((self ^. js "id") >>= valToNumber)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-partof Segment.partOf specification>
+setPartOf :: (MonadDOM m) => Segment -> Int -> m ()
+setPartOf self val = liftDOM (void (self ^. jss "partOf" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-partof Segment.partOf specification>
+getPartOf :: (MonadDOM m) => Segment -> m (Maybe Int)
+getPartOf self = liftDOM (((self ^. js "partOf") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-partof Segment.partOf specification>
+getPartOfUnsafe :: (MonadDOM m, HasCallStack) => Segment -> m Int
+getPartOfUnsafe self = liftDOM ((((self ^. js "partOf") >>= 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 ((P.round <$> ((self ^. js "partOf") >>= valToNumber)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-probability Segment.probability specification>
+setProbability :: (MonadDOM m) => Segment -> Float -> m ()
+setProbability self val = liftDOM (void (self ^. jss "probability" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-probability Segment.probability specification>
+getProbability :: (MonadDOM m) => Segment -> m Float
+getProbability self = liftDOM ((P.realToFrac <$> ((self ^. js "probability") >>= valToNumber)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-centerpoint Segment.centerPoint specification>
+setCenterPoint :: (MonadDOM m) => Segment -> Point2D -> m ()
+setCenterPoint self val = liftDOM (void (self ^. jss "centerPoint" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-centerpoint Segment.centerPoint specification>
+getCenterPoint :: (MonadDOM m) => Segment -> m (Maybe Point2D)
+getCenterPoint self = liftDOM (((self ^. js "centerPoint") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-centerpoint Segment.centerPoint specification>
+getCenterPointUnsafe :: (MonadDOM m, HasCallStack) => Segment -> m Point2D
+getCenterPointUnsafe self = liftDOM ((((self ^. js "centerPoint") >>= 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 (((self ^. js "centerPoint") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-boundingbox Segment.boundingBox specification>
+setBoundingBox :: (MonadDOM m) => Segment -> DOMRectInit -> m ()
+setBoundingBox self val = liftDOM (void (self ^. jss "boundingBox" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-boundingbox Segment.boundingBox specification>
+getBoundingBox :: (MonadDOM m) => Segment -> m (Maybe DOMRectInit)
+getBoundingBox self = liftDOM (((self ^. js "boundingBox") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-segment-boundingbox Segment.boundingBox specification>
+getBoundingBoxUnsafe :: (MonadDOM m, HasCallStack) => Segment -> m DOMRectInit
+getBoundingBoxUnsafe self = liftDOM ((((self ^. js "boundingBox") >>= 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 (((self ^. js "boundingBox") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Selection.hs b/src/JSDOM/Generated/Selection.hs
--- a/src/JSDOM/Generated/Selection.hs
+++ b/src/JSDOM/Generated/Selection.hs
@@ -1,256 +1,140 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from selection-api (webref). Do not edit.
 module JSDOM.Generated.Selection
-       (collapse, collapseToEnd, collapseToStart, deleteFromDocument,
-        containsNode, containsNode_, selectAllChildren, extend, getRangeAt,
-        getRangeAt_, removeAllRanges, addRange, toString, toString_,
-        setBaseAndExtent, setPosition, empty, modify, getAnchorNode,
-        getAnchorNodeUnsafe, getAnchorNodeUnchecked, getAnchorOffset,
-        getFocusNode, getFocusNodeUnsafe, getFocusNodeUnchecked,
-        getFocusOffset, getIsCollapsed, getRangeCount, getType,
-        getBaseNode, getBaseNodeUnsafe, getBaseNodeUnchecked,
-        getBaseOffset, getExtentNode, getExtentNodeUnsafe,
-        getExtentNodeUnchecked, getExtentOffset, Selection(..),
-        gTypeSelection)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.collapse Mozilla Selection.collapse documentation> 
-collapse ::
-         (MonadDOM m, IsNode node) =>
-           Selection -> Maybe node -> Maybe Word -> m ()
-collapse self node offset
-  = liftDOM
-      (void (self ^. jsf "collapse" [toJSVal node, toJSVal offset]))
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/addRange MDN Selection.addRange documentation>
+addRange :: (MonadDOM m) => Selection -> Range -> m ()
+addRange self range = liftDOM (void (self ^. jsf "addRange" [toJSVal range]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.collapseToEnd Mozilla Selection.collapseToEnd documentation> 
+-- | <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 (self ^. jsf "collapse" [toJSVal node, P.maybe (P.return jsUndefined) toJSVal offset]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/collapseToEnd MDN Selection.collapseToEnd documentation>
 collapseToEnd :: (MonadDOM m) => Selection -> m ()
-collapseToEnd self
-  = liftDOM (void (self ^. jsf "collapseToEnd" ()))
+collapseToEnd self = liftDOM (void (self ^. jsf "collapseToEnd" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.collapseToStart Mozilla Selection.collapseToStart documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/collapseToStart MDN Selection.collapseToStart documentation>
 collapseToStart :: (MonadDOM m) => Selection -> m ()
-collapseToStart self
-  = liftDOM (void (self ^. jsf "collapseToStart" ()))
+collapseToStart self = liftDOM (void (self ^. jsf "collapseToStart" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.deleteFromDocument Mozilla Selection.deleteFromDocument documentation> 
+-- | <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 (((self ^. jsf "containsNode" [toJSVal node, P.maybe (P.return jsUndefined) toJSVal allowPartialContainment]) >>= valToBool))
+
+-- | <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 (self ^. jsf "containsNode" [toJSVal node, P.maybe (P.return jsUndefined) toJSVal allowPartialContainment]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/deleteFromDocument MDN Selection.deleteFromDocument documentation>
 deleteFromDocument :: (MonadDOM m) => Selection -> m ()
-deleteFromDocument self
-  = liftDOM (void (self ^. jsf "deleteFromDocument" ()))
+deleteFromDocument self = liftDOM (void (self ^. jsf "deleteFromDocument" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.containsNode Mozilla Selection.containsNode documentation> 
-containsNode ::
-             (MonadDOM m, IsNode node) => Selection -> node -> Bool -> m Bool
-containsNode self node allowPartial
-  = liftDOM
-      ((self ^. jsf "containsNode" [toJSVal node, toJSVal allowPartial])
-         >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/empty MDN Selection.empty documentation>
+empty :: (MonadDOM m) => Selection -> m ()
+empty self = liftDOM (void (self ^. jsf "empty" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.containsNode Mozilla Selection.containsNode documentation> 
-containsNode_ ::
-              (MonadDOM m, IsNode node) => Selection -> node -> Bool -> m ()
-containsNode_ self node allowPartial
-  = liftDOM
-      (void
-         (self ^. jsf "containsNode" [toJSVal node, toJSVal allowPartial]))
+-- | <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 (self ^. jsf "extend" [toJSVal node, P.maybe (P.return jsUndefined) toJSVal offset]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.selectAllChildren Mozilla Selection.selectAllChildren documentation> 
-selectAllChildren ::
-                  (MonadDOM m, IsNode node) => Selection -> node -> m ()
-selectAllChildren self node
-  = liftDOM (void (self ^. jsf "selectAllChildren" [toJSVal node]))
+-- | <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 (((self ^. jsf "getComposedRanges" [P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extend Mozilla Selection.extend documentation> 
-extend ::
-       (MonadDOM m, IsNode node) =>
-         Selection -> node -> Maybe Word -> m ()
-extend self node offset
-  = liftDOM
-      (void (self ^. jsf "extend" [toJSVal node, toJSVal offset]))
+-- | <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 (self ^. jsf "getComposedRanges" [P.maybe (P.return jsUndefined) toJSVal options]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.getRangeAt Mozilla Selection.getRangeAt documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/getRangeAt MDN Selection.getRangeAt documentation>
 getRangeAt :: (MonadDOM m) => Selection -> Word -> m Range
-getRangeAt self index
-  = liftDOM
-      ((self ^. jsf "getRangeAt" [toJSVal index]) >>= fromJSValUnchecked)
+getRangeAt self index = liftDOM (((self ^. jsf "getRangeAt" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.getRangeAt Mozilla Selection.getRangeAt documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/getRangeAt MDN Selection.getRangeAt documentation>
 getRangeAt_ :: (MonadDOM m) => Selection -> Word -> m ()
-getRangeAt_ self index
-  = liftDOM (void (self ^. jsf "getRangeAt" [toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.removeAllRanges Mozilla Selection.removeAllRanges documentation> 
-removeAllRanges :: (MonadDOM m) => Selection -> m ()
-removeAllRanges self
-  = liftDOM (void (self ^. jsf "removeAllRanges" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.addRange Mozilla Selection.addRange documentation> 
-addRange :: (MonadDOM m) => Selection -> Range -> m ()
-addRange self range
-  = liftDOM (void (self ^. jsf "addRange" [toJSVal range]))
+getRangeAt_ self index = liftDOM (void (self ^. jsf "getRangeAt" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.toString Mozilla Selection.toString documentation> 
-toString ::
-         (MonadDOM m, FromJSString result) => Selection -> m result
-toString self
-  = liftDOM ((self ^. jsf "toString" ()) >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "modify" [P.maybe (P.return jsUndefined) toJSVal alter, P.maybe (P.return jsUndefined) toJSVal direction, P.maybe (P.return jsUndefined) toJSVal granularity]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.toString Mozilla Selection.toString documentation> 
-toString_ :: (MonadDOM m) => Selection -> m ()
-toString_ self = liftDOM (void (self ^. jsf "toString" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/removeAllRanges MDN Selection.removeAllRanges documentation>
+removeAllRanges :: (MonadDOM m) => Selection -> m ()
+removeAllRanges self = liftDOM (void (self ^. jsf "removeAllRanges" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.setBaseAndExtent Mozilla Selection.setBaseAndExtent documentation> 
-setBaseAndExtent ::
-                 (MonadDOM m, IsNode baseNode, IsNode extentNode) =>
-                   Selection ->
-                     Maybe baseNode -> Word -> Maybe extentNode -> Word -> m ()
-setBaseAndExtent self baseNode baseOffset extentNode extentOffset
-  = liftDOM
-      (void
-         (self ^. jsf "setBaseAndExtent"
-            [toJSVal baseNode, toJSVal baseOffset, toJSVal extentNode,
-             toJSVal extentOffset]))
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/removeRange MDN Selection.removeRange documentation>
+removeRange :: (MonadDOM m) => Selection -> Range -> m ()
+removeRange self range = liftDOM (void (self ^. jsf "removeRange" [toJSVal range]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.setPosition Mozilla Selection.setPosition documentation> 
-setPosition ::
-            (MonadDOM m, IsNode node) =>
-              Selection -> Maybe node -> Maybe Word -> m ()
-setPosition self node offset
-  = liftDOM
-      (void (self ^. jsf "setPosition" [toJSVal node, toJSVal offset]))
+-- | <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 (self ^. jsf "selectAllChildren" [toJSVal node]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.empty Mozilla Selection.empty documentation> 
-empty :: (MonadDOM m) => Selection -> m ()
-empty self = liftDOM (void (self ^. jsf "empty" ()))
+-- | <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 (self ^. jsf "setBaseAndExtent" [toJSVal anchorNode, toJSVal anchorOffset, toJSVal focusNode, toJSVal focusOffset]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.modify Mozilla 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
-         (self ^. jsf "modify"
-            [toJSVal alter, toJSVal direction, toJSVal granularity]))
+-- | <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 (self ^. jsf "setPosition" [toJSVal node, P.maybe (P.return jsUndefined) toJSVal offset]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.anchorNode Mozilla Selection.anchorNode documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/anchorNode MDN Selection.anchorNode documentation>
 getAnchorNode :: (MonadDOM m) => Selection -> m (Maybe Node)
-getAnchorNode self
-  = liftDOM ((self ^. js "anchorNode") >>= fromJSVal)
+getAnchorNode self = liftDOM (((self ^. js "anchorNode") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.anchorNode Mozilla Selection.anchorNode documentation> 
-getAnchorNodeUnsafe ::
-                    (MonadDOM m, HasCallStack) => Selection -> m Node
-getAnchorNodeUnsafe self
-  = liftDOM
-      (((self ^. js "anchorNode") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/anchorNode MDN Selection.anchorNode documentation>
+getAnchorNodeUnsafe :: (MonadDOM m, HasCallStack) => Selection -> m Node
+getAnchorNodeUnsafe self = liftDOM ((((self ^. js "anchorNode") >>= 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> 
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/anchorNode MDN Selection.anchorNode documentation>
 getAnchorNodeUnchecked :: (MonadDOM m) => Selection -> m Node
-getAnchorNodeUnchecked self
-  = liftDOM ((self ^. js "anchorNode") >>= fromJSValUnchecked)
+getAnchorNodeUnchecked self = liftDOM (((self ^. js "anchorNode") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.anchorOffset Mozilla Selection.anchorOffset documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/anchorOffset MDN Selection.anchorOffset documentation>
 getAnchorOffset :: (MonadDOM m) => Selection -> m Word
-getAnchorOffset self
-  = liftDOM (round <$> ((self ^. js "anchorOffset") >>= valToNumber))
+getAnchorOffset self = liftDOM ((P.round <$> ((self ^. js "anchorOffset") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.focusNode Mozilla Selection.focusNode documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/focusNode MDN Selection.focusNode documentation>
 getFocusNode :: (MonadDOM m) => Selection -> m (Maybe Node)
-getFocusNode self
-  = liftDOM ((self ^. js "focusNode") >>= fromJSVal)
+getFocusNode self = liftDOM (((self ^. js "focusNode") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.focusNode Mozilla Selection.focusNode documentation> 
-getFocusNodeUnsafe ::
-                   (MonadDOM m, HasCallStack) => Selection -> m Node
-getFocusNodeUnsafe self
-  = liftDOM
-      (((self ^. js "focusNode") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/focusNode MDN Selection.focusNode documentation>
+getFocusNodeUnsafe :: (MonadDOM m, HasCallStack) => Selection -> m Node
+getFocusNodeUnsafe self = liftDOM ((((self ^. js "focusNode") >>= 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> 
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/focusNode MDN Selection.focusNode documentation>
 getFocusNodeUnchecked :: (MonadDOM m) => Selection -> m Node
-getFocusNodeUnchecked self
-  = liftDOM ((self ^. js "focusNode") >>= fromJSValUnchecked)
+getFocusNodeUnchecked self = liftDOM (((self ^. js "focusNode") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.focusOffset Mozilla Selection.focusOffset documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/focusOffset MDN Selection.focusOffset documentation>
 getFocusOffset :: (MonadDOM m) => Selection -> m Word
-getFocusOffset self
-  = liftDOM (round <$> ((self ^. js "focusOffset") >>= valToNumber))
+getFocusOffset self = liftDOM ((P.round <$> ((self ^. js "focusOffset") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.isCollapsed Mozilla Selection.isCollapsed documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/isCollapsed MDN Selection.isCollapsed documentation>
 getIsCollapsed :: (MonadDOM m) => Selection -> m Bool
-getIsCollapsed self
-  = liftDOM ((self ^. js "isCollapsed") >>= valToBool)
+getIsCollapsed self = liftDOM (((self ^. js "isCollapsed") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.rangeCount Mozilla Selection.rangeCount documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/rangeCount MDN Selection.rangeCount documentation>
 getRangeCount :: (MonadDOM m) => Selection -> m Word
-getRangeCount self
-  = liftDOM (round <$> ((self ^. js "rangeCount") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.type Mozilla Selection.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => Selection -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.baseNode Mozilla Selection.baseNode documentation> 
-getBaseNode :: (MonadDOM m) => Selection -> m (Maybe Node)
-getBaseNode self = liftDOM ((self ^. js "baseNode") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.baseNode Mozilla Selection.baseNode documentation> 
-getBaseNodeUnsafe ::
-                  (MonadDOM m, HasCallStack) => Selection -> m Node
-getBaseNodeUnsafe self
-  = liftDOM
-      (((self ^. js "baseNode") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.baseNode Mozilla Selection.baseNode documentation> 
-getBaseNodeUnchecked :: (MonadDOM m) => Selection -> m Node
-getBaseNodeUnchecked self
-  = liftDOM ((self ^. js "baseNode") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.baseOffset Mozilla Selection.baseOffset documentation> 
-getBaseOffset :: (MonadDOM m) => Selection -> m Word
-getBaseOffset self
-  = liftDOM (round <$> ((self ^. js "baseOffset") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extentNode Mozilla Selection.extentNode documentation> 
-getExtentNode :: (MonadDOM m) => Selection -> m (Maybe Node)
-getExtentNode self
-  = liftDOM ((self ^. js "extentNode") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extentNode Mozilla Selection.extentNode documentation> 
-getExtentNodeUnsafe ::
-                    (MonadDOM m, HasCallStack) => Selection -> m Node
-getExtentNodeUnsafe self
-  = liftDOM
-      (((self ^. js "extentNode") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+getRangeCount self = liftDOM ((P.round <$> ((self ^. js "rangeCount") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extentNode Mozilla Selection.extentNode documentation> 
-getExtentNodeUnchecked :: (MonadDOM m) => Selection -> m Node
-getExtentNodeUnchecked self
-  = liftDOM ((self ^. js "extentNode") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/type MDN Selection.type documentation>
+getType :: (MonadDOM m, FromJSString result) => Selection -> m result
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extentOffset Mozilla Selection.extentOffset documentation> 
-getExtentOffset :: (MonadDOM m) => Selection -> m Word
-getExtentOffset self
-  = liftDOM (round <$> ((self ^. js "extentOffset") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Selection/direction MDN Selection.direction documentation>
+getDirection :: (MonadDOM m, FromJSString result) => Selection -> m result
+getDirection self = liftDOM (((self ^. js "direction") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Serial.hs b/src/JSDOM/Generated/Serial.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Serial.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from serial (webref). Do not edit.
+module JSDOM.Generated.Serial
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Serial/getPorts MDN Serial.getPorts documentation>
+getPorts :: (MonadDOM m) => Serial -> m [SerialPort]
+getPorts self = liftDOM (((((self ^. jsf "getPorts" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Serial/getPorts MDN Serial.getPorts documentation>
+getPorts_ :: (MonadDOM m) => Serial -> m ()
+getPorts_ self = liftDOM (void (((self ^. jsf "getPorts" ()) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "requestPort" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "requestPort" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
diff --git a/src/JSDOM/Generated/SerialInputSignals.hs b/src/JSDOM/Generated/SerialInputSignals.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SerialInputSignals.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from serial (webref). Do not edit.
+module JSDOM.Generated.SerialInputSignals
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://serial.spec.whatwg.org/#dictdef-serialinputsignals SerialInputSignals specification>
+newSerialInputSignals :: (MonadDOM m) => Bool -> Bool -> Bool -> Bool -> m SerialInputSignals
+newSerialInputSignals dataCarrierDetect clearToSend ringIndicator dataSetReady = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "dataCarrierDetect" (toJSVal dataCarrierDetect)) P.>> (o ^. jss "clearToSend" (toJSVal clearToSend)) P.>> (o ^. jss "ringIndicator" (toJSVal ringIndicator)) P.>> (o ^. jss "dataSetReady" (toJSVal dataSetReady)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialinputsignals-datacarrierdetect SerialInputSignals.dataCarrierDetect specification>
+setDataCarrierDetect :: (MonadDOM m) => SerialInputSignals -> Bool -> m ()
+setDataCarrierDetect self val = liftDOM (void (self ^. jss "dataCarrierDetect" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialinputsignals-datacarrierdetect SerialInputSignals.dataCarrierDetect specification>
+getDataCarrierDetect :: (MonadDOM m) => SerialInputSignals -> m Bool
+getDataCarrierDetect self = liftDOM (((self ^. js "dataCarrierDetect") >>= valToBool))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialinputsignals-cleartosend SerialInputSignals.clearToSend specification>
+setClearToSend :: (MonadDOM m) => SerialInputSignals -> Bool -> m ()
+setClearToSend self val = liftDOM (void (self ^. jss "clearToSend" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialinputsignals-cleartosend SerialInputSignals.clearToSend specification>
+getClearToSend :: (MonadDOM m) => SerialInputSignals -> m Bool
+getClearToSend self = liftDOM (((self ^. js "clearToSend") >>= valToBool))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialinputsignals-ringindicator SerialInputSignals.ringIndicator specification>
+setRingIndicator :: (MonadDOM m) => SerialInputSignals -> Bool -> m ()
+setRingIndicator self val = liftDOM (void (self ^. jss "ringIndicator" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialinputsignals-ringindicator SerialInputSignals.ringIndicator specification>
+getRingIndicator :: (MonadDOM m) => SerialInputSignals -> m Bool
+getRingIndicator self = liftDOM (((self ^. js "ringIndicator") >>= valToBool))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialinputsignals-datasetready SerialInputSignals.dataSetReady specification>
+setDataSetReady :: (MonadDOM m) => SerialInputSignals -> Bool -> m ()
+setDataSetReady self val = liftDOM (void (self ^. jss "dataSetReady" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialinputsignals-datasetready SerialInputSignals.dataSetReady specification>
+getDataSetReady :: (MonadDOM m) => SerialInputSignals -> m Bool
+getDataSetReady self = liftDOM (((self ^. js "dataSetReady") >>= valToBool))
diff --git a/src/JSDOM/Generated/SerialOptions.hs b/src/JSDOM/Generated/SerialOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SerialOptions.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from serial (webref). Do not edit.
+module JSDOM.Generated.SerialOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://serial.spec.whatwg.org/#dictdef-serialoptions SerialOptions specification>
+newSerialOptions :: (MonadDOM m) => Word -> m SerialOptions
+newSerialOptions baudRate = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "baudRate" (toJSVal baudRate)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-baudrate SerialOptions.baudRate specification>
+setBaudRate :: (MonadDOM m) => SerialOptions -> Word -> m ()
+setBaudRate self val = liftDOM (void (self ^. jss "baudRate" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-baudrate SerialOptions.baudRate specification>
+getBaudRate :: (MonadDOM m) => SerialOptions -> m Word
+getBaudRate self = liftDOM ((P.round <$> ((self ^. js "baudRate") >>= valToNumber)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-databits SerialOptions.dataBits specification>
+setDataBits :: (MonadDOM m) => SerialOptions -> Word -> m ()
+setDataBits self val = liftDOM (void (self ^. jss "dataBits" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-databits SerialOptions.dataBits specification>
+getDataBits :: (MonadDOM m) => SerialOptions -> m (Maybe Word)
+getDataBits self = liftDOM (((self ^. js "dataBits") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-databits SerialOptions.dataBits specification>
+getDataBitsUnsafe :: (MonadDOM m, HasCallStack) => SerialOptions -> m Word
+getDataBitsUnsafe self = liftDOM ((((self ^. js "dataBits") >>= 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 ((P.round <$> ((self ^. js "dataBits") >>= valToNumber)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-stopbits SerialOptions.stopBits specification>
+setStopBits :: (MonadDOM m) => SerialOptions -> Word -> m ()
+setStopBits self val = liftDOM (void (self ^. jss "stopBits" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-stopbits SerialOptions.stopBits specification>
+getStopBits :: (MonadDOM m) => SerialOptions -> m (Maybe Word)
+getStopBits self = liftDOM (((self ^. js "stopBits") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-stopbits SerialOptions.stopBits specification>
+getStopBitsUnsafe :: (MonadDOM m, HasCallStack) => SerialOptions -> m Word
+getStopBitsUnsafe self = liftDOM ((((self ^. js "stopBits") >>= 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 ((P.round <$> ((self ^. js "stopBits") >>= valToNumber)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-parity SerialOptions.parity specification>
+setParity :: (MonadDOM m) => SerialOptions -> ParityType -> m ()
+setParity self val = liftDOM (void (self ^. jss "parity" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-parity SerialOptions.parity specification>
+getParity :: (MonadDOM m) => SerialOptions -> m (Maybe ParityType)
+getParity self = liftDOM (((self ^. js "parity") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-parity SerialOptions.parity specification>
+getParityUnsafe :: (MonadDOM m, HasCallStack) => SerialOptions -> m ParityType
+getParityUnsafe self = liftDOM ((((self ^. js "parity") >>= 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 (((self ^. js "parity") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-buffersize SerialOptions.bufferSize specification>
+setBufferSize :: (MonadDOM m) => SerialOptions -> Word -> m ()
+setBufferSize self val = liftDOM (void (self ^. jss "bufferSize" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-buffersize SerialOptions.bufferSize specification>
+getBufferSize :: (MonadDOM m) => SerialOptions -> m (Maybe Word)
+getBufferSize self = liftDOM (((self ^. js "bufferSize") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-buffersize SerialOptions.bufferSize specification>
+getBufferSizeUnsafe :: (MonadDOM m, HasCallStack) => SerialOptions -> m Word
+getBufferSizeUnsafe self = liftDOM ((((self ^. js "bufferSize") >>= 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 ((P.round <$> ((self ^. js "bufferSize") >>= valToNumber)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-flowcontrol SerialOptions.flowControl specification>
+setFlowControl :: (MonadDOM m) => SerialOptions -> FlowControlType -> m ()
+setFlowControl self val = liftDOM (void (self ^. jss "flowControl" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-flowcontrol SerialOptions.flowControl specification>
+getFlowControl :: (MonadDOM m) => SerialOptions -> m (Maybe FlowControlType)
+getFlowControl self = liftDOM (((self ^. js "flowControl") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoptions-flowcontrol SerialOptions.flowControl specification>
+getFlowControlUnsafe :: (MonadDOM m, HasCallStack) => SerialOptions -> m FlowControlType
+getFlowControlUnsafe self = liftDOM ((((self ^. js "flowControl") >>= 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 (((self ^. js "flowControl") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SerialOutputSignals.hs b/src/JSDOM/Generated/SerialOutputSignals.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SerialOutputSignals.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from serial (webref). Do not edit.
+module JSDOM.Generated.SerialOutputSignals
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://serial.spec.whatwg.org/#dictdef-serialoutputsignals SerialOutputSignals specification>
+newSerialOutputSignals :: (MonadDOM m) => m SerialOutputSignals
+newSerialOutputSignals = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-dataterminalready SerialOutputSignals.dataTerminalReady specification>
+setDataTerminalReady :: (MonadDOM m) => SerialOutputSignals -> Bool -> m ()
+setDataTerminalReady self val = liftDOM (void (self ^. jss "dataTerminalReady" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-dataterminalready SerialOutputSignals.dataTerminalReady specification>
+getDataTerminalReady :: (MonadDOM m) => SerialOutputSignals -> m (Maybe Bool)
+getDataTerminalReady self = liftDOM (((self ^. js "dataTerminalReady") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-dataterminalready SerialOutputSignals.dataTerminalReady specification>
+getDataTerminalReadyUnsafe :: (MonadDOM m, HasCallStack) => SerialOutputSignals -> m Bool
+getDataTerminalReadyUnsafe self = liftDOM ((((self ^. js "dataTerminalReady") >>= 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 (((self ^. js "dataTerminalReady") >>= valToBool))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-requesttosend SerialOutputSignals.requestToSend specification>
+setRequestToSend :: (MonadDOM m) => SerialOutputSignals -> Bool -> m ()
+setRequestToSend self val = liftDOM (void (self ^. jss "requestToSend" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-requesttosend SerialOutputSignals.requestToSend specification>
+getRequestToSend :: (MonadDOM m) => SerialOutputSignals -> m (Maybe Bool)
+getRequestToSend self = liftDOM (((self ^. js "requestToSend") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-requesttosend SerialOutputSignals.requestToSend specification>
+getRequestToSendUnsafe :: (MonadDOM m, HasCallStack) => SerialOutputSignals -> m Bool
+getRequestToSendUnsafe self = liftDOM ((((self ^. js "requestToSend") >>= 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 (((self ^. js "requestToSend") >>= valToBool))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-break SerialOutputSignals.break specification>
+setBreak :: (MonadDOM m) => SerialOutputSignals -> Bool -> m ()
+setBreak self val = liftDOM (void (self ^. jss "break" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-break SerialOutputSignals.break specification>
+getBreak :: (MonadDOM m) => SerialOutputSignals -> m (Maybe Bool)
+getBreak self = liftDOM (((self ^. js "break") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialoutputsignals-break SerialOutputSignals.break specification>
+getBreakUnsafe :: (MonadDOM m, HasCallStack) => SerialOutputSignals -> m Bool
+getBreakUnsafe self = liftDOM ((((self ^. js "break") >>= 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 (((self ^. js "break") >>= valToBool))
diff --git a/src/JSDOM/Generated/SerialPort.hs b/src/JSDOM/Generated/SerialPort.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SerialPort.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from serial (webref). Do not edit.
+module JSDOM.Generated.SerialPort
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/close MDN SerialPort.close documentation>
+close :: (MonadDOM m) => SerialPort -> m ()
+close self = liftDOM (void (((self ^. jsf "close" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/forget MDN SerialPort.forget documentation>
+forget :: (MonadDOM m) => SerialPort -> m ()
+forget self = liftDOM (void (((self ^. jsf "forget" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/getInfo MDN SerialPort.getInfo documentation>
+getInfo :: (MonadDOM m) => SerialPort -> m SerialPortInfo
+getInfo self = liftDOM (((self ^. jsf "getInfo" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/getInfo MDN SerialPort.getInfo documentation>
+getInfo_ :: (MonadDOM m) => SerialPort -> m ()
+getInfo_ self = liftDOM (void (self ^. jsf "getInfo" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/getSignals MDN SerialPort.getSignals documentation>
+getSignals :: (MonadDOM m) => SerialPort -> m SerialInputSignals
+getSignals self = liftDOM (((((self ^. jsf "getSignals" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/getSignals MDN SerialPort.getSignals documentation>
+getSignals_ :: (MonadDOM m) => SerialPort -> m ()
+getSignals_ self = liftDOM (void (((self ^. jsf "getSignals" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/open MDN SerialPort.open documentation>
+open :: (MonadDOM m) => SerialPort -> SerialOptions -> m ()
+open self options = liftDOM (void (((self ^. jsf "open" [toJSVal options]) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "setSignals" [P.maybe (P.return jsUndefined) toJSVal signals]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/connected MDN SerialPort.connected documentation>
+getConnected :: (MonadDOM m) => SerialPort -> m Bool
+getConnected self = liftDOM (((self ^. js "connected") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/readable MDN SerialPort.readable documentation>
+getReadable :: (MonadDOM m) => SerialPort -> m (Maybe ReadableStream)
+getReadable self = liftDOM (((self ^. js "readable") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/readable MDN SerialPort.readable documentation>
+getReadableUnsafe :: (MonadDOM m, HasCallStack) => SerialPort -> m ReadableStream
+getReadableUnsafe self = liftDOM ((((self ^. js "readable") >>= 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 (((self ^. js "readable") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/writable MDN SerialPort.writable documentation>
+getWritable :: (MonadDOM m) => SerialPort -> m (Maybe WritableStream)
+getWritable self = liftDOM (((self ^. js "writable") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SerialPort/writable MDN SerialPort.writable documentation>
+getWritableUnsafe :: (MonadDOM m, HasCallStack) => SerialPort -> m WritableStream
+getWritableUnsafe self = liftDOM ((((self ^. js "writable") >>= 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 (((self ^. js "writable") >>= fromJSValUnchecked))
+
+-- | <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/JSDOM/Generated/SerialPortFilter.hs b/src/JSDOM/Generated/SerialPortFilter.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SerialPortFilter.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from serial (webref). Do not edit.
+module JSDOM.Generated.SerialPortFilter
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://serial.spec.whatwg.org/#dictdef-serialportfilter SerialPortFilter specification>
+newSerialPortFilter :: (MonadDOM m) => m SerialPortFilter
+newSerialPortFilter = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-usbvendorid SerialPortFilter.usbVendorId specification>
+setUsbVendorId :: (MonadDOM m) => SerialPortFilter -> Word -> m ()
+setUsbVendorId self val = liftDOM (void (self ^. jss "usbVendorId" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-usbvendorid SerialPortFilter.usbVendorId specification>
+getUsbVendorId :: (MonadDOM m) => SerialPortFilter -> m (Maybe Word)
+getUsbVendorId self = liftDOM (((self ^. js "usbVendorId") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-usbvendorid SerialPortFilter.usbVendorId specification>
+getUsbVendorIdUnsafe :: (MonadDOM m, HasCallStack) => SerialPortFilter -> m Word
+getUsbVendorIdUnsafe self = liftDOM ((((self ^. js "usbVendorId") >>= 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 ((P.round <$> ((self ^. js "usbVendorId") >>= valToNumber)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-usbproductid SerialPortFilter.usbProductId specification>
+setUsbProductId :: (MonadDOM m) => SerialPortFilter -> Word -> m ()
+setUsbProductId self val = liftDOM (void (self ^. jss "usbProductId" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-usbproductid SerialPortFilter.usbProductId specification>
+getUsbProductId :: (MonadDOM m) => SerialPortFilter -> m (Maybe Word)
+getUsbProductId self = liftDOM (((self ^. js "usbProductId") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-usbproductid SerialPortFilter.usbProductId specification>
+getUsbProductIdUnsafe :: (MonadDOM m, HasCallStack) => SerialPortFilter -> m Word
+getUsbProductIdUnsafe self = liftDOM ((((self ^. js "usbProductId") >>= 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 ((P.round <$> ((self ^. js "usbProductId") >>= valToNumber)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-bluetoothserviceclassid SerialPortFilter.bluetoothServiceClassId specification>
+setBluetoothServiceClassId :: (MonadDOM m, IsBluetoothServiceUUID val) => SerialPortFilter -> val -> m ()
+setBluetoothServiceClassId self val = liftDOM (void (self ^. jss "bluetoothServiceClassId" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-bluetoothserviceclassid SerialPortFilter.bluetoothServiceClassId specification>
+getBluetoothServiceClassId :: (MonadDOM m) => SerialPortFilter -> m (Maybe BluetoothServiceUUID)
+getBluetoothServiceClassId self = liftDOM (((self ^. js "bluetoothServiceClassId") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportfilter-bluetoothserviceclassid SerialPortFilter.bluetoothServiceClassId specification>
+getBluetoothServiceClassIdUnsafe :: (MonadDOM m, HasCallStack) => SerialPortFilter -> m BluetoothServiceUUID
+getBluetoothServiceClassIdUnsafe self = liftDOM ((((self ^. js "bluetoothServiceClassId") >>= 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 (((self ^. js "bluetoothServiceClassId") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SerialPortInfo.hs b/src/JSDOM/Generated/SerialPortInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SerialPortInfo.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from serial (webref). Do not edit.
+module JSDOM.Generated.SerialPortInfo
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://serial.spec.whatwg.org/#dictdef-serialportinfo SerialPortInfo specification>
+newSerialPortInfo :: (MonadDOM m) => m SerialPortInfo
+newSerialPortInfo = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-usbvendorid SerialPortInfo.usbVendorId specification>
+setUsbVendorId :: (MonadDOM m) => SerialPortInfo -> Word -> m ()
+setUsbVendorId self val = liftDOM (void (self ^. jss "usbVendorId" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-usbvendorid SerialPortInfo.usbVendorId specification>
+getUsbVendorId :: (MonadDOM m) => SerialPortInfo -> m (Maybe Word)
+getUsbVendorId self = liftDOM (((self ^. js "usbVendorId") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-usbvendorid SerialPortInfo.usbVendorId specification>
+getUsbVendorIdUnsafe :: (MonadDOM m, HasCallStack) => SerialPortInfo -> m Word
+getUsbVendorIdUnsafe self = liftDOM ((((self ^. js "usbVendorId") >>= 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 ((P.round <$> ((self ^. js "usbVendorId") >>= valToNumber)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-usbproductid SerialPortInfo.usbProductId specification>
+setUsbProductId :: (MonadDOM m) => SerialPortInfo -> Word -> m ()
+setUsbProductId self val = liftDOM (void (self ^. jss "usbProductId" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-usbproductid SerialPortInfo.usbProductId specification>
+getUsbProductId :: (MonadDOM m) => SerialPortInfo -> m (Maybe Word)
+getUsbProductId self = liftDOM (((self ^. js "usbProductId") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-usbproductid SerialPortInfo.usbProductId specification>
+getUsbProductIdUnsafe :: (MonadDOM m, HasCallStack) => SerialPortInfo -> m Word
+getUsbProductIdUnsafe self = liftDOM ((((self ^. js "usbProductId") >>= 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 ((P.round <$> ((self ^. js "usbProductId") >>= valToNumber)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-bluetoothserviceclassid SerialPortInfo.bluetoothServiceClassId specification>
+setBluetoothServiceClassId :: (MonadDOM m, IsBluetoothServiceUUID val) => SerialPortInfo -> val -> m ()
+setBluetoothServiceClassId self val = liftDOM (void (self ^. jss "bluetoothServiceClassId" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-bluetoothserviceclassid SerialPortInfo.bluetoothServiceClassId specification>
+getBluetoothServiceClassId :: (MonadDOM m) => SerialPortInfo -> m (Maybe BluetoothServiceUUID)
+getBluetoothServiceClassId self = liftDOM (((self ^. js "bluetoothServiceClassId") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportinfo-bluetoothserviceclassid SerialPortInfo.bluetoothServiceClassId specification>
+getBluetoothServiceClassIdUnsafe :: (MonadDOM m, HasCallStack) => SerialPortInfo -> m BluetoothServiceUUID
+getBluetoothServiceClassIdUnsafe self = liftDOM ((((self ^. js "bluetoothServiceClassId") >>= 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 (((self ^. js "bluetoothServiceClassId") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SerialPortRequestOptions.hs b/src/JSDOM/Generated/SerialPortRequestOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SerialPortRequestOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from serial (webref). Do not edit.
+module JSDOM.Generated.SerialPortRequestOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://serial.spec.whatwg.org/#dictdef-serialportrequestoptions SerialPortRequestOptions specification>
+newSerialPortRequestOptions :: (MonadDOM m) => m SerialPortRequestOptions
+newSerialPortRequestOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportrequestoptions-filters SerialPortRequestOptions.filters specification>
+setFilters :: (MonadDOM m) => SerialPortRequestOptions -> [SerialPortFilter] -> m ()
+setFilters self val = liftDOM (void (self ^. jss "filters" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportrequestoptions-filters SerialPortRequestOptions.filters specification>
+getFilters :: (MonadDOM m) => SerialPortRequestOptions -> m (Maybe [SerialPortFilter])
+getFilters self = liftDOM (((self ^. js "filters") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportrequestoptions-filters SerialPortRequestOptions.filters specification>
+getFiltersUnsafe :: (MonadDOM m, HasCallStack) => SerialPortRequestOptions -> m [SerialPortFilter]
+getFiltersUnsafe self = liftDOM ((((self ^. js "filters") >>= 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 (((self ^. js "filters") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportrequestoptions-allowedbluetoothserviceclassids SerialPortRequestOptions.allowedBluetoothServiceClassIds specification>
+setAllowedBluetoothServiceClassIds :: (MonadDOM m, IsBluetoothServiceUUID val) => SerialPortRequestOptions -> [val] -> m ()
+setAllowedBluetoothServiceClassIds self val = liftDOM (void (self ^. jss "allowedBluetoothServiceClassIds" (toJSVal val)))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportrequestoptions-allowedbluetoothserviceclassids SerialPortRequestOptions.allowedBluetoothServiceClassIds specification>
+getAllowedBluetoothServiceClassIds :: (MonadDOM m) => SerialPortRequestOptions -> m (Maybe [BluetoothServiceUUID])
+getAllowedBluetoothServiceClassIds self = liftDOM (((self ^. js "allowedBluetoothServiceClassIds") >>= fromJSValUnchecked))
+
+-- | <https://serial.spec.whatwg.org/#dom-serialportrequestoptions-allowedbluetoothserviceclassids SerialPortRequestOptions.allowedBluetoothServiceClassIds specification>
+getAllowedBluetoothServiceClassIdsUnsafe :: (MonadDOM m, HasCallStack) => SerialPortRequestOptions -> m [BluetoothServiceUUID]
+getAllowedBluetoothServiceClassIdsUnsafe self = liftDOM ((((self ^. js "allowedBluetoothServiceClassIds") >>= 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 (((self ^. js "allowedBluetoothServiceClassIds") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ServiceWorker.hs b/src/JSDOM/Generated/ServiceWorker.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ServiceWorker.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.ServiceWorker
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "postMessage" [toJSVal message, toJSVal transfer]))
+
+-- | <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 (self ^. jsf "postMessage" [toJSVal message, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorker/scriptURL MDN ServiceWorker.scriptURL documentation>
+getScriptURL :: (MonadDOM m, FromJSString result) => ServiceWorker -> m result
+getScriptURL self = liftDOM (((self ^. js "scriptURL") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorker/state MDN ServiceWorker.state documentation>
+getState :: (MonadDOM m) => ServiceWorker -> m ServiceWorkerState
+getState self = liftDOM (((self ^. js "state") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-serviceworker-onstatechange statechange event>
+statechange :: EventName ServiceWorker Event
+statechange = unsafeEventName (toJSString "statechange")
diff --git a/src/JSDOM/Generated/ServiceWorkerContainer.hs b/src/JSDOM/Generated/ServiceWorkerContainer.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ServiceWorkerContainer.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.ServiceWorkerContainer
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((((self ^. jsf "getRegistration" [P.maybe (P.return jsUndefined) toJSVal clientURL]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "getRegistration" [P.maybe (P.return jsUndefined) toJSVal clientURL]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/getRegistrations MDN ServiceWorkerContainer.getRegistrations documentation>
+getRegistrations :: (MonadDOM m) => ServiceWorkerContainer -> m [ServiceWorkerRegistration]
+getRegistrations self = liftDOM (((((self ^. jsf "getRegistrations" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/getRegistrations MDN ServiceWorkerContainer.getRegistrations documentation>
+getRegistrations_ :: (MonadDOM m) => ServiceWorkerContainer -> m ()
+getRegistrations_ self = liftDOM (void (((self ^. jsf "getRegistrations" ()) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "register" [toJSVal scriptURL, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "register" [toJSVal scriptURL, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/startMessages MDN ServiceWorkerContainer.startMessages documentation>
+startMessages :: (MonadDOM m) => ServiceWorkerContainer -> m ()
+startMessages self = liftDOM (void (self ^. jsf "startMessages" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/controller MDN ServiceWorkerContainer.controller documentation>
+getController :: (MonadDOM m) => ServiceWorkerContainer -> m (Maybe ServiceWorker)
+getController self = liftDOM (((self ^. js "controller") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/controller MDN ServiceWorkerContainer.controller documentation>
+getControllerUnsafe :: (MonadDOM m, HasCallStack) => ServiceWorkerContainer -> m ServiceWorker
+getControllerUnsafe self = liftDOM ((((self ^. js "controller") >>= 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 (((self ^. js "controller") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerContainer/ready MDN ServiceWorkerContainer.ready documentation>
+getReady :: (MonadDOM m) => ServiceWorkerContainer -> m ServiceWorkerRegistration
+getReady self = liftDOM (((((self ^. js "ready") >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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/JSDOM/Generated/ServiceWorkerGlobalScope.hs b/src/JSDOM/Generated/ServiceWorkerGlobalScope.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ServiceWorkerGlobalScope.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.ServiceWorkerGlobalScope
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerGlobalScope/skipWaiting MDN ServiceWorkerGlobalScope.skipWaiting documentation>
+skipWaiting :: (MonadDOM m) => ServiceWorkerGlobalScope -> m ()
+skipWaiting self = liftDOM (void (((self ^. jsf "skipWaiting" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerGlobalScope/clients MDN ServiceWorkerGlobalScope.clients documentation>
+getClients :: (MonadDOM m) => ServiceWorkerGlobalScope -> m Clients
+getClients self = liftDOM (((self ^. js "clients") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerGlobalScope/registration MDN ServiceWorkerGlobalScope.registration documentation>
+getRegistration :: (MonadDOM m) => ServiceWorkerGlobalScope -> m ServiceWorkerRegistration
+getRegistration self = liftDOM (((self ^. js "registration") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerGlobalScope/serviceWorker MDN ServiceWorkerGlobalScope.serviceWorker documentation>
+getServiceWorker :: (MonadDOM m) => ServiceWorkerGlobalScope -> m ServiceWorker
+getServiceWorker self = liftDOM (((self ^. js "serviceWorker") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerGlobalScope/cookieStore MDN ServiceWorkerGlobalScope.cookieStore documentation>
+getCookieStore :: (MonadDOM m) => ServiceWorkerGlobalScope -> m CookieStore
+getCookieStore self = liftDOM (((self ^. js "cookieStore") >>= fromJSValUnchecked))
+
+-- | <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/JSDOM/Generated/ServiceWorkerRegistration.hs b/src/JSDOM/Generated/ServiceWorkerRegistration.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ServiceWorkerRegistration.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.ServiceWorkerRegistration
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((((self ^. jsf "getNotifications" [P.maybe (P.return jsUndefined) toJSVal filter]) >>= readPromise)) >>= 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 (((self ^. jsf "getNotifications" [P.maybe (P.return jsUndefined) toJSVal filter]) >>= readPromise)))
+
+-- | <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 (((self ^. jsf "showNotification" [toJSVal title, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/unregister MDN ServiceWorkerRegistration.unregister documentation>
+unregister :: (MonadDOM m) => ServiceWorkerRegistration -> m Bool
+unregister self = liftDOM (((((self ^. jsf "unregister" ()) >>= readPromise)) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/unregister MDN ServiceWorkerRegistration.unregister documentation>
+unregister_ :: (MonadDOM m) => ServiceWorkerRegistration -> m ()
+unregister_ self = liftDOM (void (((self ^. jsf "unregister" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/update MDN ServiceWorkerRegistration.update documentation>
+update :: (MonadDOM m) => ServiceWorkerRegistration -> m ServiceWorkerRegistration
+update self = liftDOM (((((self ^. jsf "update" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/update MDN ServiceWorkerRegistration.update documentation>
+update_ :: (MonadDOM m) => ServiceWorkerRegistration -> m ()
+update_ self = liftDOM (void (((self ^. jsf "update" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/installing MDN ServiceWorkerRegistration.installing documentation>
+getInstalling :: (MonadDOM m) => ServiceWorkerRegistration -> m (Maybe ServiceWorker)
+getInstalling self = liftDOM (((self ^. js "installing") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/installing MDN ServiceWorkerRegistration.installing documentation>
+getInstallingUnsafe :: (MonadDOM m, HasCallStack) => ServiceWorkerRegistration -> m ServiceWorker
+getInstallingUnsafe self = liftDOM ((((self ^. js "installing") >>= 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 (((self ^. js "installing") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/waiting MDN ServiceWorkerRegistration.waiting documentation>
+getWaiting :: (MonadDOM m) => ServiceWorkerRegistration -> m (Maybe ServiceWorker)
+getWaiting self = liftDOM (((self ^. js "waiting") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/waiting MDN ServiceWorkerRegistration.waiting documentation>
+getWaitingUnsafe :: (MonadDOM m, HasCallStack) => ServiceWorkerRegistration -> m ServiceWorker
+getWaitingUnsafe self = liftDOM ((((self ^. js "waiting") >>= 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 (((self ^. js "waiting") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/active MDN ServiceWorkerRegistration.active documentation>
+getActive :: (MonadDOM m) => ServiceWorkerRegistration -> m (Maybe ServiceWorker)
+getActive self = liftDOM (((self ^. js "active") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/active MDN ServiceWorkerRegistration.active documentation>
+getActiveUnsafe :: (MonadDOM m, HasCallStack) => ServiceWorkerRegistration -> m ServiceWorker
+getActiveUnsafe self = liftDOM ((((self ^. js "active") >>= 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 (((self ^. js "active") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/navigationPreload MDN ServiceWorkerRegistration.navigationPreload documentation>
+getNavigationPreload :: (MonadDOM m) => ServiceWorkerRegistration -> m NavigationPreloadManager
+getNavigationPreload self = liftDOM (((self ^. js "navigationPreload") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/scope MDN ServiceWorkerRegistration.scope documentation>
+getScope :: (MonadDOM m, FromJSString result) => ServiceWorkerRegistration -> m result
+getScope self = liftDOM (((self ^. js "scope") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/updateViaCache MDN ServiceWorkerRegistration.updateViaCache documentation>
+getUpdateViaCache :: (MonadDOM m) => ServiceWorkerRegistration -> m ServiceWorkerUpdateViaCache
+getUpdateViaCache self = liftDOM (((self ^. js "updateViaCache") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ServiceWorkerRegistration/cookies MDN ServiceWorkerRegistration.cookies documentation>
+getCookies :: (MonadDOM m) => ServiceWorkerRegistration -> m CookieStoreManager
+getCookies self = liftDOM (((self ^. js "cookies") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/ServiceWorker/#dom-serviceworkerregistration-onupdatefound updatefound event>
+updatefound :: EventName ServiceWorkerRegistration Event
+updatefound = unsafeEventName (toJSString "updatefound")
diff --git a/src/JSDOM/Generated/SetHTMLOptions.hs b/src/JSDOM/Generated/SetHTMLOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SetHTMLOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.SetHTMLOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#sethtmloptions SetHTMLOptions specification>
+newSetHTMLOptions :: (MonadDOM m) => m SetHTMLOptions
+newSetHTMLOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "sanitizer" (toJSVal val)))
+
+-- | <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 (((self ^. js "sanitizer") >>= 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 ((((self ^. js "sanitizer") >>= 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 (((self ^. js "sanitizer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SetHTMLUnsafeOptions.hs b/src/JSDOM/Generated/SetHTMLUnsafeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SetHTMLUnsafeOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.SetHTMLUnsafeOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#sethtmlunsafeoptions SetHTMLUnsafeOptions specification>
+newSetHTMLUnsafeOptions :: (MonadDOM m) => m SetHTMLUnsafeOptions
+newSetHTMLUnsafeOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "sanitizer" (toJSVal val)))
+
+-- | <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 (((self ^. js "sanitizer") >>= 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 ((((self ^. js "sanitizer") >>= 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 (((self ^. js "sanitizer") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "runScripts" (toJSVal val)))
+
+-- | <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 (((self ^. js "runScripts") >>= 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 ((((self ^. js "runScripts") >>= 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 (((self ^. js "runScripts") >>= valToBool))
diff --git a/src/JSDOM/Generated/ShadowRoot.hs b/src/JSDOM/Generated/ShadowRoot.hs
--- a/src/JSDOM/Generated/ShadowRoot.hs
+++ b/src/JSDOM/Generated/ShadowRoot.hs
@@ -1,41 +1,64 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.ShadowRoot
-       (getMode, getHost, setInnerHTML, getInnerHTML, ShadowRoot(..),
-        gTypeShadowRoot)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot.mode Mozilla ShadowRoot.mode documentation> 
+-- | <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 (((self ^. jsf "getHTML" [P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "getHTML" [P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 (self ^. jsf "setHTML" [toJSVal html, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 (self ^. jsf "setHTMLUnsafe" [toJSVal html, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/mode MDN ShadowRoot.mode documentation>
 getMode :: (MonadDOM m) => ShadowRoot -> m ShadowRootMode
-getMode self = liftDOM ((self ^. js "mode") >>= fromJSValUnchecked)
+getMode self = liftDOM (((self ^. js "mode") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot.host Mozilla ShadowRoot.host documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/delegatesFocus MDN ShadowRoot.delegatesFocus documentation>
+getDelegatesFocus :: (MonadDOM m) => ShadowRoot -> m Bool
+getDelegatesFocus self = liftDOM (((self ^. js "delegatesFocus") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/serializable MDN ShadowRoot.serializable documentation>
+getSerializable :: (MonadDOM m) => ShadowRoot -> m Bool
+getSerializable self = liftDOM (((self ^. js "serializable") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/slotAssignment MDN ShadowRoot.slotAssignment documentation>
+getSlotAssignment :: (MonadDOM m) => ShadowRoot -> m SlotAssignmentMode
+getSlotAssignment self = liftDOM (((self ^. js "slotAssignment") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/clonable MDN ShadowRoot.clonable documentation>
+getClonable :: (MonadDOM m) => ShadowRoot -> m Bool
+getClonable self = liftDOM (((self ^. js "clonable") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/host MDN ShadowRoot.host documentation>
 getHost :: (MonadDOM m) => ShadowRoot -> m Element
-getHost self = liftDOM ((self ^. js "host") >>= fromJSValUnchecked)
+getHost self = liftDOM (((self ^. js "host") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot.innerHTML Mozilla ShadowRoot.innerHTML documentation> 
-setInnerHTML ::
-             (MonadDOM m, ToJSString val) => ShadowRoot -> val -> m ()
-setInnerHTML self val
-  = liftDOM (self ^. jss "innerHTML" (toJSVal val))
+-- | <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 (self ^. jss "innerHTML" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot.innerHTML Mozilla ShadowRoot.innerHTML documentation> 
-getInnerHTML ::
-             (MonadDOM m, FromJSString result) => ShadowRoot -> m result
-getInnerHTML self
-  = liftDOM ((self ^. js "innerHTML") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/ShadowRoot/innerHTML MDN ShadowRoot.innerHTML documentation>
+getInnerHTML :: (MonadDOM m) => ShadowRoot -> m TrustedHTMLOrString
+getInnerHTML self = liftDOM (((self ^. js "innerHTML") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ShadowRootInit.hs b/src/JSDOM/Generated/ShadowRootInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ShadowRootInit.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.ShadowRootInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://dom.spec.whatwg.org/#dictdef-shadowrootinit ShadowRootInit specification>
+newShadowRootInit :: (MonadDOM m) => ShadowRootMode -> m ShadowRootInit
+newShadowRootInit mode = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "mode" (toJSVal mode)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-mode ShadowRootInit.mode specification>
+setMode :: (MonadDOM m) => ShadowRootInit -> ShadowRootMode -> m ()
+setMode self val = liftDOM (void (self ^. jss "mode" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-mode ShadowRootInit.mode specification>
+getMode :: (MonadDOM m) => ShadowRootInit -> m ShadowRootMode
+getMode self = liftDOM (((self ^. js "mode") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-delegatesfocus ShadowRootInit.delegatesFocus specification>
+setDelegatesFocus :: (MonadDOM m) => ShadowRootInit -> Bool -> m ()
+setDelegatesFocus self val = liftDOM (void (self ^. jss "delegatesFocus" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-delegatesfocus ShadowRootInit.delegatesFocus specification>
+getDelegatesFocus :: (MonadDOM m) => ShadowRootInit -> m (Maybe Bool)
+getDelegatesFocus self = liftDOM (((self ^. js "delegatesFocus") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-delegatesfocus ShadowRootInit.delegatesFocus specification>
+getDelegatesFocusUnsafe :: (MonadDOM m, HasCallStack) => ShadowRootInit -> m Bool
+getDelegatesFocusUnsafe self = liftDOM ((((self ^. js "delegatesFocus") >>= 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 (((self ^. js "delegatesFocus") >>= valToBool))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-serializable ShadowRootInit.serializable specification>
+setSerializable :: (MonadDOM m) => ShadowRootInit -> Bool -> m ()
+setSerializable self val = liftDOM (void (self ^. jss "serializable" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-serializable ShadowRootInit.serializable specification>
+getSerializable :: (MonadDOM m) => ShadowRootInit -> m (Maybe Bool)
+getSerializable self = liftDOM (((self ^. js "serializable") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-serializable ShadowRootInit.serializable specification>
+getSerializableUnsafe :: (MonadDOM m, HasCallStack) => ShadowRootInit -> m Bool
+getSerializableUnsafe self = liftDOM ((((self ^. js "serializable") >>= 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 (((self ^. js "serializable") >>= valToBool))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-slotassignment ShadowRootInit.slotAssignment specification>
+setSlotAssignment :: (MonadDOM m) => ShadowRootInit -> SlotAssignmentMode -> m ()
+setSlotAssignment self val = liftDOM (void (self ^. jss "slotAssignment" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-slotassignment ShadowRootInit.slotAssignment specification>
+getSlotAssignment :: (MonadDOM m) => ShadowRootInit -> m (Maybe SlotAssignmentMode)
+getSlotAssignment self = liftDOM (((self ^. js "slotAssignment") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-slotassignment ShadowRootInit.slotAssignment specification>
+getSlotAssignmentUnsafe :: (MonadDOM m, HasCallStack) => ShadowRootInit -> m SlotAssignmentMode
+getSlotAssignmentUnsafe self = liftDOM ((((self ^. js "slotAssignment") >>= 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 (((self ^. js "slotAssignment") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-clonable ShadowRootInit.clonable specification>
+setClonable :: (MonadDOM m) => ShadowRootInit -> Bool -> m ()
+setClonable self val = liftDOM (void (self ^. jss "clonable" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-clonable ShadowRootInit.clonable specification>
+getClonable :: (MonadDOM m) => ShadowRootInit -> m (Maybe Bool)
+getClonable self = liftDOM (((self ^. js "clonable") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-clonable ShadowRootInit.clonable specification>
+getClonableUnsafe :: (MonadDOM m, HasCallStack) => ShadowRootInit -> m Bool
+getClonableUnsafe self = liftDOM ((((self ^. js "clonable") >>= 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 (((self ^. js "clonable") >>= valToBool))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-customelementregistry ShadowRootInit.customElementRegistry specification>
+setCustomElementRegistry :: (MonadDOM m) => ShadowRootInit -> Maybe CustomElementRegistry -> m ()
+setCustomElementRegistry self val = liftDOM (void (self ^. jss "customElementRegistry" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-customelementregistry ShadowRootInit.customElementRegistry specification>
+getCustomElementRegistry :: (MonadDOM m) => ShadowRootInit -> m (Maybe CustomElementRegistry)
+getCustomElementRegistry self = liftDOM (((self ^. js "customElementRegistry") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-shadowrootinit-customelementregistry ShadowRootInit.customElementRegistry specification>
+getCustomElementRegistryUnsafe :: (MonadDOM m, HasCallStack) => ShadowRootInit -> m CustomElementRegistry
+getCustomElementRegistryUnsafe self = liftDOM ((((self ^. js "customElementRegistry") >>= 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 (((self ^. js "customElementRegistry") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ShareData.hs b/src/JSDOM/Generated/ShareData.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ShareData.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-share (webref). Do not edit.
+module JSDOM.Generated.ShareData
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata ShareData specification>
+newShareData :: (MonadDOM m) => m ShareData
+newShareData = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata-files ShareData.files specification>
+setFiles :: (MonadDOM m) => ShareData -> [File] -> m ()
+setFiles self val = liftDOM (void (self ^. jss "files" (toJSVal val)))
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata-files ShareData.files specification>
+getFiles :: (MonadDOM m) => ShareData -> m (Maybe [File])
+getFiles self = liftDOM (((self ^. js "files") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata-files ShareData.files specification>
+getFilesUnsafe :: (MonadDOM m, HasCallStack) => ShareData -> m [File]
+getFilesUnsafe self = liftDOM ((((self ^. js "files") >>= 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 (((self ^. js "files") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "title" (toJSVal val)))
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata-title ShareData.title specification>
+getTitle :: (MonadDOM m, FromJSString result) => ShareData -> m (Maybe result)
+getTitle self = liftDOM (((self ^. js "title") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata-title ShareData.title specification>
+getTitleUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ShareData -> m result
+getTitleUnsafe self = liftDOM ((((self ^. js "title") >>= fromMaybeJSString) >>= 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 (((self ^. js "title") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "text" (toJSVal val)))
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata-text ShareData.text specification>
+getText :: (MonadDOM m, FromJSString result) => ShareData -> m (Maybe result)
+getText self = liftDOM (((self ^. js "text") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata-text ShareData.text specification>
+getTextUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ShareData -> m result
+getTextUnsafe self = liftDOM ((((self ^. js "text") >>= fromMaybeJSString) >>= 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 (((self ^. js "text") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "url" (toJSVal val)))
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata-url ShareData.url specification>
+getUrl :: (MonadDOM m, FromJSString result) => ShareData -> m (Maybe result)
+getUrl self = liftDOM (((self ^. js "url") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/web-share/#dom-sharedata-url ShareData.url specification>
+getUrlUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ShareData -> m result
+getUrlUnsafe self = liftDOM ((((self ^. js "url") >>= fromMaybeJSString) >>= 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 (((self ^. js "url") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SharedWorker.hs b/src/JSDOM/Generated/SharedWorker.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SharedWorker.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.SharedWorker
+       (newSharedWorker, getPort, SharedWorker(..), gTypeSharedWorker)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "SharedWorker") [toJSVal scriptURL, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SharedWorker/port MDN SharedWorker.port documentation>
+getPort :: (MonadDOM m) => SharedWorker -> m MessagePort
+getPort self = liftDOM (((self ^. js "port") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SharedWorkerGlobalScope.hs b/src/JSDOM/Generated/SharedWorkerGlobalScope.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SharedWorkerGlobalScope.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.SharedWorkerGlobalScope
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/SharedWorkerGlobalScope/close MDN SharedWorkerGlobalScope.close documentation>
+close :: (MonadDOM m) => SharedWorkerGlobalScope -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SharedWorkerGlobalScope/name MDN SharedWorkerGlobalScope.name documentation>
+getName :: (MonadDOM m, FromJSString result) => SharedWorkerGlobalScope -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <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/JSDOM/Generated/SharedWorkerOptions.hs b/src/JSDOM/Generated/SharedWorkerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SharedWorkerOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.SharedWorkerOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/workers.html#sharedworkeroptions SharedWorkerOptions specification>
+newSharedWorkerOptions :: (MonadDOM m) => m SharedWorkerOptions
+newSharedWorkerOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "extendedLifetime" (toJSVal val)))
+
+-- | <https://html.spec.whatwg.org/multipage/workers.html#dom-sharedworkeroptions-extendedlifetime SharedWorkerOptions.extendedLifetime specification>
+getExtendedLifetime :: (MonadDOM m) => SharedWorkerOptions -> m (Maybe Bool)
+getExtendedLifetime self = liftDOM (((self ^. js "extendedLifetime") >>= 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 ((((self ^. js "extendedLifetime") >>= 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 (((self ^. js "extendedLifetime") >>= valToBool))
+
+-- | <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 (self ^. jss "sameSiteCookies" (toJSVal val)))
+
+-- | <https://privacycg.github.io/saa-non-cookie-storage/#dom-sharedworkeroptions-samesitecookies SharedWorkerOptions.sameSiteCookies specification>
+getSameSiteCookies :: (MonadDOM m) => SharedWorkerOptions -> m (Maybe SameSiteCookiesType)
+getSameSiteCookies self = liftDOM (((self ^. js "sameSiteCookies") >>= 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 ((((self ^. js "sameSiteCookies") >>= 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 (((self ^. js "sameSiteCookies") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ShowPopoverOptions.hs b/src/JSDOM/Generated/ShowPopoverOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ShowPopoverOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.ShowPopoverOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/dom.html#showpopoveroptions ShowPopoverOptions specification>
+newShowPopoverOptions :: (MonadDOM m) => m ShowPopoverOptions
+newShowPopoverOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toShowPopoverOptions self) ^. jss "source" (toJSVal val)))
+
+-- | <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 ((((Types.toShowPopoverOptions self) ^. js "source") >>= 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 (((((Types.toShowPopoverOptions self) ^. js "source") >>= 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 ((((Types.toShowPopoverOptions self) ^. js "source") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SiteBoundCredential.hs b/src/JSDOM/Generated/SiteBoundCredential.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/SiteBoundCredential.hs
+++ /dev/null
@@ -1,40 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.SiteBoundCredential
-       (getName, getIconURL, SiteBoundCredential(..),
-        gTypeSiteBoundCredential, IsSiteBoundCredential,
-        toSiteBoundCredential)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SiteBoundCredential.name Mozilla SiteBoundCredential.name documentation> 
-getName ::
-        (MonadDOM m, IsSiteBoundCredential self, FromJSString result) =>
-          self -> m result
-getName self
-  = liftDOM
-      (((toSiteBoundCredential self) ^. js "name") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SiteBoundCredential.iconURL Mozilla SiteBoundCredential.iconURL documentation> 
-getIconURL ::
-           (MonadDOM m, IsSiteBoundCredential self, FromJSString result) =>
-             self -> m result
-getIconURL self
-  = liftDOM
-      (((toSiteBoundCredential self) ^. js "iconURL") >>=
-         fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/Slotable.hs b/src/JSDOM/Generated/Slotable.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/Slotable.hs
+++ /dev/null
@@ -1,43 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.Slotable
-       (getAssignedSlot, getAssignedSlotUnsafe, getAssignedSlotUnchecked,
-        Slotable(..), gTypeSlotable, IsSlotable, toSlotable)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Slotable.assignedSlot Mozilla Slotable.assignedSlot documentation> 
-getAssignedSlot ::
-                (MonadDOM m, IsSlotable self) => self -> m (Maybe HTMLSlotElement)
-getAssignedSlot self
-  = liftDOM (((toSlotable self) ^. js "assignedSlot") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Slotable.assignedSlot Mozilla Slotable.assignedSlot documentation> 
-getAssignedSlotUnsafe ::
-                      (MonadDOM m, IsSlotable self, HasCallStack) =>
-                        self -> m HTMLSlotElement
-getAssignedSlotUnsafe self
-  = liftDOM
-      ((((toSlotable self) ^. js "assignedSlot") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Slotable.assignedSlot Mozilla Slotable.assignedSlot documentation> 
-getAssignedSlotUnchecked ::
-                         (MonadDOM m, IsSlotable self) => self -> m HTMLSlotElement
-getAssignedSlotUnchecked self
-  = liftDOM
-      (((toSlotable self) ^. js "assignedSlot") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/Slottable.hs b/src/JSDOM/Generated/Slottable.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Slottable.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.Slottable
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toSlottable self) ^. js "assignedSlot") >>= 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 (((((Types.toSlottable self) ^. js "assignedSlot") >>= 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 ((((Types.toSlottable self) ^. js "assignedSlot") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SourceBuffer.hs b/src/JSDOM/Generated/SourceBuffer.hs
--- a/src/JSDOM/Generated/SourceBuffer.hs
+++ b/src/JSDOM/Generated/SourceBuffer.hs
@@ -1,126 +1,104 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-source-2 (webref). Do not edit.
 module JSDOM.Generated.SourceBuffer
-       (appendBuffer, abort, remove, setMode, getMode, getUpdating,
-        getBuffered, setTimestampOffset, getTimestampOffset,
-        getAudioTracks, getVideoTracks, getTextTracks,
-        setAppendWindowStart, getAppendWindowStart, setAppendWindowEnd,
-        getAppendWindowEnd, updatestart, update, updateend, error,
-        abortEvent, SourceBuffer(..), gTypeSourceBuffer)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendBuffer Mozilla SourceBuffer.appendBuffer documentation> 
-appendBuffer ::
-             (MonadDOM m, IsBufferSource data') => SourceBuffer -> data' -> m ()
-appendBuffer self data'
-  = liftDOM (void (self ^. jsf "appendBuffer" [toJSVal data']))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.abort Mozilla SourceBuffer.abort documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/abort MDN SourceBuffer.abort documentation>
 abort :: (MonadDOM m) => SourceBuffer -> m ()
 abort self = liftDOM (void (self ^. jsf "abort" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.remove Mozilla SourceBuffer.remove documentation> 
+-- | <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 (self ^. jsf "appendBuffer" [toJSVal data']))
+
+-- | <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 (self ^. jsf "changeType" [toJSVal type']))
+
+-- | <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 (self ^. jsf "remove" [toJSVal start, toJSVal end]))
+remove self start end = liftDOM (void (self ^. jsf "remove" [toJSVal start, toJSVal end]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.mode Mozilla SourceBuffer.mode documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/mode MDN SourceBuffer.mode documentation>
 setMode :: (MonadDOM m) => SourceBuffer -> AppendMode -> m ()
-setMode self val = liftDOM (self ^. jss "mode" (toJSVal val))
+setMode self val = liftDOM (void (self ^. jss "mode" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.mode Mozilla SourceBuffer.mode documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/mode MDN SourceBuffer.mode documentation>
 getMode :: (MonadDOM m) => SourceBuffer -> m AppendMode
-getMode self = liftDOM ((self ^. js "mode") >>= fromJSValUnchecked)
+getMode self = liftDOM (((self ^. js "mode") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.updating Mozilla SourceBuffer.updating documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/updating MDN SourceBuffer.updating documentation>
 getUpdating :: (MonadDOM m) => SourceBuffer -> m Bool
-getUpdating self = liftDOM ((self ^. js "updating") >>= valToBool)
+getUpdating self = liftDOM (((self ^. js "updating") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.buffered Mozilla SourceBuffer.buffered documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/buffered MDN SourceBuffer.buffered documentation>
 getBuffered :: (MonadDOM m) => SourceBuffer -> m TimeRanges
-getBuffered self
-  = liftDOM ((self ^. js "buffered") >>= fromJSValUnchecked)
+getBuffered self = liftDOM (((self ^. js "buffered") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.timestampOffset Mozilla SourceBuffer.timestampOffset documentation> 
-setTimestampOffset ::
-                   (MonadDOM m) => SourceBuffer -> Double -> m ()
-setTimestampOffset self val
-  = liftDOM (self ^. jss "timestampOffset" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/timestampOffset MDN SourceBuffer.timestampOffset documentation>
+setTimestampOffset :: (MonadDOM m) => SourceBuffer -> Double -> m ()
+setTimestampOffset self val = liftDOM (void (self ^. jss "timestampOffset" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.timestampOffset Mozilla SourceBuffer.timestampOffset documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/timestampOffset MDN SourceBuffer.timestampOffset documentation>
 getTimestampOffset :: (MonadDOM m) => SourceBuffer -> m Double
-getTimestampOffset self
-  = liftDOM ((self ^. js "timestampOffset") >>= valToNumber)
+getTimestampOffset self = liftDOM (((self ^. js "timestampOffset") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.audioTracks Mozilla SourceBuffer.audioTracks documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/audioTracks MDN SourceBuffer.audioTracks documentation>
 getAudioTracks :: (MonadDOM m) => SourceBuffer -> m AudioTrackList
-getAudioTracks self
-  = liftDOM ((self ^. js "audioTracks") >>= fromJSValUnchecked)
+getAudioTracks self = liftDOM (((self ^. js "audioTracks") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.videoTracks Mozilla SourceBuffer.videoTracks documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/videoTracks MDN SourceBuffer.videoTracks documentation>
 getVideoTracks :: (MonadDOM m) => SourceBuffer -> m VideoTrackList
-getVideoTracks self
-  = liftDOM ((self ^. js "videoTracks") >>= fromJSValUnchecked)
+getVideoTracks self = liftDOM (((self ^. js "videoTracks") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.textTracks Mozilla SourceBuffer.textTracks documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/textTracks MDN SourceBuffer.textTracks documentation>
 getTextTracks :: (MonadDOM m) => SourceBuffer -> m TextTrackList
-getTextTracks self
-  = liftDOM ((self ^. js "textTracks") >>= fromJSValUnchecked)
+getTextTracks self = liftDOM (((self ^. js "textTracks") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowStart Mozilla SourceBuffer.appendWindowStart documentation> 
-setAppendWindowStart ::
-                     (MonadDOM m) => SourceBuffer -> Double -> m ()
-setAppendWindowStart self val
-  = liftDOM (self ^. jss "appendWindowStart" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/appendWindowStart MDN SourceBuffer.appendWindowStart documentation>
+setAppendWindowStart :: (MonadDOM m) => SourceBuffer -> Double -> m ()
+setAppendWindowStart self val = liftDOM (void (self ^. jss "appendWindowStart" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowStart Mozilla SourceBuffer.appendWindowStart documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/appendWindowStart MDN SourceBuffer.appendWindowStart documentation>
 getAppendWindowStart :: (MonadDOM m) => SourceBuffer -> m Double
-getAppendWindowStart self
-  = liftDOM ((self ^. js "appendWindowStart") >>= valToNumber)
+getAppendWindowStart self = liftDOM (((self ^. js "appendWindowStart") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowEnd Mozilla SourceBuffer.appendWindowEnd documentation> 
-setAppendWindowEnd ::
-                   (MonadDOM m) => SourceBuffer -> Double -> m ()
-setAppendWindowEnd self val
-  = liftDOM (self ^. jss "appendWindowEnd" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/appendWindowEnd MDN SourceBuffer.appendWindowEnd documentation>
+setAppendWindowEnd :: (MonadDOM m) => SourceBuffer -> Double -> m ()
+setAppendWindowEnd self val = liftDOM (void (self ^. jss "appendWindowEnd" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowEnd Mozilla SourceBuffer.appendWindowEnd documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBuffer/appendWindowEnd MDN SourceBuffer.appendWindowEnd documentation>
 getAppendWindowEnd :: (MonadDOM m) => SourceBuffer -> m Double
-getAppendWindowEnd self
-  = liftDOM ((self ^. js "appendWindowEnd") >>= valToNumber)
+getAppendWindowEnd self = liftDOM (((self ^. js "appendWindowEnd") >>= valToNumber))
 
--- | <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/JSDOM/Generated/SourceBufferList.hs b/src/JSDOM/Generated/SourceBufferList.hs
--- a/src/JSDOM/Generated/SourceBufferList.hs
+++ b/src/JSDOM/Generated/SourceBufferList.hs
@@ -1,47 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-source-2 (webref). Do not edit.
 module JSDOM.Generated.SourceBufferList
-       (item, item_, getLength, addsourcebuffer, removesourcebuffer,
-        SourceBufferList(..), gTypeSourceBufferList)
+       (getLength, addsourcebuffer, removesourcebuffer, SourceBufferList(..), gTypeSourceBufferList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.item Mozilla SourceBufferList.item documentation> 
-item :: (MonadDOM m) => SourceBufferList -> Word -> m SourceBuffer
-item self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.item Mozilla SourceBufferList.item documentation> 
-item_ :: (MonadDOM m) => SourceBufferList -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.length Mozilla SourceBufferList.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SourceBufferList/length MDN SourceBufferList.length documentation>
 getLength :: (MonadDOM m) => SourceBufferList -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
 
--- | <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/JSDOM/Generated/SpeechGrammar.hs b/src/JSDOM/Generated/SpeechGrammar.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SpeechGrammar.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module JSDOM.Generated.SpeechGrammar
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jss "src" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechGrammar/src MDN SpeechGrammar.src documentation>
+getSrc :: (MonadDOM m, FromJSString result) => SpeechGrammar -> m result
+getSrc self = liftDOM (((self ^. js "src") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechGrammar/weight MDN SpeechGrammar.weight documentation>
+setWeight :: (MonadDOM m) => SpeechGrammar -> Float -> m ()
+setWeight self val = liftDOM (void (self ^. jss "weight" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechGrammar/weight MDN SpeechGrammar.weight documentation>
+getWeight :: (MonadDOM m) => SpeechGrammar -> m Float
+getWeight self = liftDOM ((P.realToFrac <$> ((self ^. js "weight") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/SpeechGrammarList.hs b/src/JSDOM/Generated/SpeechGrammarList.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SpeechGrammarList.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module JSDOM.Generated.SpeechGrammarList
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechGrammarList/SpeechGrammarList MDN SpeechGrammarList. documentation>
+newSpeechGrammarList :: (MonadDOM m) => m SpeechGrammarList
+newSpeechGrammarList = liftDOM (((new (jsg "SpeechGrammarList") ()) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "addFromString" [toJSVal string, P.maybe (P.return jsUndefined) toJSVal weight]))
+
+-- | <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 (((self ^. jsf "item" [toJSVal 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 (self ^. jsf "item" [toJSVal 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 ((((self ^. jsf "item" [toJSVal 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 (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechGrammarList/length MDN SpeechGrammarList.length documentation>
+getLength :: (MonadDOM m) => SpeechGrammarList -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/SpeechRecognition.hs b/src/JSDOM/Generated/SpeechRecognition.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SpeechRecognition.hs
@@ -0,0 +1,160 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module JSDOM.Generated.SpeechRecognition
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/SpeechRecognition MDN SpeechRecognition. documentation>
+newSpeechRecognition :: (MonadDOM m) => m SpeechRecognition
+newSpeechRecognition = liftDOM (((new (jsg "SpeechRecognition") ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/abort MDN SpeechRecognition.abort documentation>
+abort :: (MonadDOM m) => SpeechRecognition -> m ()
+abort self = liftDOM (void (self ^. jsf "abort" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/start MDN SpeechRecognition.start documentation>
+start :: (MonadDOM m) => SpeechRecognition -> m ()
+start self = liftDOM (void (self ^. jsf "start" ()))
+
+-- | <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 (self ^. jsf "start" [toJSVal audioTrack]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/stop MDN SpeechRecognition.stop documentation>
+stop :: (MonadDOM m) => SpeechRecognition -> m ()
+stop self = liftDOM (void (self ^. jsf "stop" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/available_static MDN SpeechRecognition.available documentation>
+available :: (MonadDOM m) => SpeechRecognitionOptions -> m SpeechRecognitionAvailabilityStatus
+available options = liftDOM ((((((jsg "SpeechRecognition") ^. jsf "available" [toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/available_static MDN SpeechRecognition.available documentation>
+available_ :: (MonadDOM m) => SpeechRecognitionOptions -> m ()
+available_ options = liftDOM (void ((((jsg "SpeechRecognition") ^. jsf "available" [toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/install_static MDN SpeechRecognition.install documentation>
+install :: (MonadDOM m) => SpeechRecognitionOptions -> m Bool
+install options = liftDOM ((((((jsg "SpeechRecognition") ^. jsf "install" [toJSVal options]) >>= readPromise)) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/install_static MDN SpeechRecognition.install documentation>
+install_ :: (MonadDOM m) => SpeechRecognitionOptions -> m ()
+install_ options = liftDOM (void ((((jsg "SpeechRecognition") ^. jsf "install" [toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/grammars MDN SpeechRecognition.grammars documentation>
+setGrammars :: (MonadDOM m) => SpeechRecognition -> SpeechGrammarList -> m ()
+setGrammars self val = liftDOM (void (self ^. jss "grammars" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/grammars MDN SpeechRecognition.grammars documentation>
+getGrammars :: (MonadDOM m) => SpeechRecognition -> m SpeechGrammarList
+getGrammars self = liftDOM (((self ^. js "grammars") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "lang" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/lang MDN SpeechRecognition.lang documentation>
+getLang :: (MonadDOM m, FromJSString result) => SpeechRecognition -> m result
+getLang self = liftDOM (((self ^. js "lang") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/continuous MDN SpeechRecognition.continuous documentation>
+setContinuous :: (MonadDOM m) => SpeechRecognition -> Bool -> m ()
+setContinuous self val = liftDOM (void (self ^. jss "continuous" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/continuous MDN SpeechRecognition.continuous documentation>
+getContinuous :: (MonadDOM m) => SpeechRecognition -> m Bool
+getContinuous self = liftDOM (((self ^. js "continuous") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/interimResults MDN SpeechRecognition.interimResults documentation>
+setInterimResults :: (MonadDOM m) => SpeechRecognition -> Bool -> m ()
+setInterimResults self val = liftDOM (void (self ^. jss "interimResults" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/interimResults MDN SpeechRecognition.interimResults documentation>
+getInterimResults :: (MonadDOM m) => SpeechRecognition -> m Bool
+getInterimResults self = liftDOM (((self ^. js "interimResults") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/unspokenPunctuation MDN SpeechRecognition.unspokenPunctuation documentation>
+setUnspokenPunctuation :: (MonadDOM m) => SpeechRecognition -> Bool -> m ()
+setUnspokenPunctuation self val = liftDOM (void (self ^. jss "unspokenPunctuation" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/unspokenPunctuation MDN SpeechRecognition.unspokenPunctuation documentation>
+getUnspokenPunctuation :: (MonadDOM m) => SpeechRecognition -> m Bool
+getUnspokenPunctuation self = liftDOM (((self ^. js "unspokenPunctuation") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/maxAlternatives MDN SpeechRecognition.maxAlternatives documentation>
+setMaxAlternatives :: (MonadDOM m) => SpeechRecognition -> Word -> m ()
+setMaxAlternatives self val = liftDOM (void (self ^. jss "maxAlternatives" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/maxAlternatives MDN SpeechRecognition.maxAlternatives documentation>
+getMaxAlternatives :: (MonadDOM m) => SpeechRecognition -> m Word
+getMaxAlternatives self = liftDOM ((P.round <$> ((self ^. js "maxAlternatives") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/processLocally MDN SpeechRecognition.processLocally documentation>
+setProcessLocally :: (MonadDOM m) => SpeechRecognition -> Bool -> m ()
+setProcessLocally self val = liftDOM (void (self ^. jss "processLocally" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/processLocally MDN SpeechRecognition.processLocally documentation>
+getProcessLocally :: (MonadDOM m) => SpeechRecognition -> m Bool
+getProcessLocally self = liftDOM (((self ^. js "processLocally") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/phrases MDN SpeechRecognition.phrases documentation>
+setPhrases :: (MonadDOM m) => SpeechRecognition -> [SpeechRecognitionPhrase] -> m ()
+setPhrases self val = liftDOM (void (self ^. jss "phrases" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognition/phrases MDN SpeechRecognition.phrases documentation>
+getPhrases :: (MonadDOM m) => SpeechRecognition -> m [SpeechRecognitionPhrase]
+getPhrases self = liftDOM (((self ^. js "phrases") >>= 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/JSDOM/Generated/SpeechRecognitionAlternative.hs b/src/JSDOM/Generated/SpeechRecognitionAlternative.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SpeechRecognitionAlternative.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module JSDOM.Generated.SpeechRecognitionAlternative
+       (getTranscript, getConfidence, SpeechRecognitionAlternative(..), gTypeSpeechRecognitionAlternative)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionAlternative/transcript MDN SpeechRecognitionAlternative.transcript documentation>
+getTranscript :: (MonadDOM m, FromJSString result) => SpeechRecognitionAlternative -> m result
+getTranscript self = liftDOM (((self ^. js "transcript") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionAlternative/confidence MDN SpeechRecognitionAlternative.confidence documentation>
+getConfidence :: (MonadDOM m) => SpeechRecognitionAlternative -> m Float
+getConfidence self = liftDOM ((P.realToFrac <$> ((self ^. js "confidence") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/SpeechRecognitionErrorEvent.hs b/src/JSDOM/Generated/SpeechRecognitionErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SpeechRecognitionErrorEvent.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module JSDOM.Generated.SpeechRecognitionErrorEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "SpeechRecognitionErrorEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionErrorEvent/error MDN SpeechRecognitionErrorEvent.error documentation>
+getError :: (MonadDOM m) => SpeechRecognitionErrorEvent -> m SpeechRecognitionErrorCode
+getError self = liftDOM (((self ^. js "error") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionErrorEvent/message MDN SpeechRecognitionErrorEvent.message documentation>
+getMessage :: (MonadDOM m, FromJSString result) => SpeechRecognitionErrorEvent -> m result
+getMessage self = liftDOM (((self ^. js "message") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SpeechRecognitionErrorEventInit.hs b/src/JSDOM/Generated/SpeechRecognitionErrorEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SpeechRecognitionErrorEventInit.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module JSDOM.Generated.SpeechRecognitionErrorEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-speech-api/#dictdef-speechrecognitionerroreventinit SpeechRecognitionErrorEventInit specification>
+newSpeechRecognitionErrorEventInit :: (MonadDOM m) => SpeechRecognitionErrorCode -> m SpeechRecognitionErrorEventInit
+newSpeechRecognitionErrorEventInit error = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "error" (toJSVal error)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionerroreventinit-error SpeechRecognitionErrorEventInit.error specification>
+setError :: (MonadDOM m) => SpeechRecognitionErrorEventInit -> SpeechRecognitionErrorCode -> m ()
+setError self val = liftDOM (void (self ^. jss "error" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionerroreventinit-error SpeechRecognitionErrorEventInit.error specification>
+getError :: (MonadDOM m) => SpeechRecognitionErrorEventInit -> m SpeechRecognitionErrorCode
+getError self = liftDOM (((self ^. js "error") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "message" (toJSVal val)))
+
+-- | <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 (((self ^. js "message") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "message") >>= fromMaybeJSString) >>= 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 (((self ^. js "message") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SpeechRecognitionEvent.hs b/src/JSDOM/Generated/SpeechRecognitionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SpeechRecognitionEvent.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module JSDOM.Generated.SpeechRecognitionEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "SpeechRecognitionEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionEvent/resultIndex MDN SpeechRecognitionEvent.resultIndex documentation>
+getResultIndex :: (MonadDOM m) => SpeechRecognitionEvent -> m Word
+getResultIndex self = liftDOM ((P.round <$> ((self ^. js "resultIndex") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionEvent/results MDN SpeechRecognitionEvent.results documentation>
+getResults :: (MonadDOM m) => SpeechRecognitionEvent -> m SpeechRecognitionResultList
+getResults self = liftDOM (((self ^. js "results") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SpeechRecognitionEventInit.hs b/src/JSDOM/Generated/SpeechRecognitionEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SpeechRecognitionEventInit.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module JSDOM.Generated.SpeechRecognitionEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-speech-api/#dictdef-speechrecognitioneventinit SpeechRecognitionEventInit specification>
+newSpeechRecognitionEventInit :: (MonadDOM m) => SpeechRecognitionResultList -> m SpeechRecognitionEventInit
+newSpeechRecognitionEventInit results = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "results" (toJSVal results)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitioneventinit-resultindex SpeechRecognitionEventInit.resultIndex specification>
+setResultIndex :: (MonadDOM m) => SpeechRecognitionEventInit -> Word -> m ()
+setResultIndex self val = liftDOM (void (self ^. jss "resultIndex" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitioneventinit-resultindex SpeechRecognitionEventInit.resultIndex specification>
+getResultIndex :: (MonadDOM m) => SpeechRecognitionEventInit -> m (Maybe Word)
+getResultIndex self = liftDOM (((self ^. js "resultIndex") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitioneventinit-resultindex SpeechRecognitionEventInit.resultIndex specification>
+getResultIndexUnsafe :: (MonadDOM m, HasCallStack) => SpeechRecognitionEventInit -> m Word
+getResultIndexUnsafe self = liftDOM ((((self ^. js "resultIndex") >>= 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 ((P.round <$> ((self ^. js "resultIndex") >>= valToNumber)))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitioneventinit-results SpeechRecognitionEventInit.results specification>
+setResults :: (MonadDOM m) => SpeechRecognitionEventInit -> SpeechRecognitionResultList -> m ()
+setResults self val = liftDOM (void (self ^. jss "results" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitioneventinit-results SpeechRecognitionEventInit.results specification>
+getResults :: (MonadDOM m) => SpeechRecognitionEventInit -> m SpeechRecognitionResultList
+getResults self = liftDOM (((self ^. js "results") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SpeechRecognitionOptions.hs b/src/JSDOM/Generated/SpeechRecognitionOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SpeechRecognitionOptions.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module JSDOM.Generated.SpeechRecognitionOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-speech-api/#dictdef-speechrecognitionoptions SpeechRecognitionOptions specification>
+newSpeechRecognitionOptions :: (MonadDOM m, ToJSString langs) => [langs] -> m SpeechRecognitionOptions
+newSpeechRecognitionOptions langs = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "langs" (toJSVal langs)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "langs" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionoptions-langs SpeechRecognitionOptions.langs specification>
+getLangs :: (MonadDOM m, FromJSString result) => SpeechRecognitionOptions -> m [result]
+getLangs self = liftDOM (((self ^. js "langs") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionoptions-processlocally SpeechRecognitionOptions.processLocally specification>
+setProcessLocally :: (MonadDOM m) => SpeechRecognitionOptions -> Bool -> m ()
+setProcessLocally self val = liftDOM (void (self ^. jss "processLocally" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionoptions-processlocally SpeechRecognitionOptions.processLocally specification>
+getProcessLocally :: (MonadDOM m) => SpeechRecognitionOptions -> m (Maybe Bool)
+getProcessLocally self = liftDOM (((self ^. js "processLocally") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionoptions-processlocally SpeechRecognitionOptions.processLocally specification>
+getProcessLocallyUnsafe :: (MonadDOM m, HasCallStack) => SpeechRecognitionOptions -> m Bool
+getProcessLocallyUnsafe self = liftDOM ((((self ^. js "processLocally") >>= 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 (((self ^. js "processLocally") >>= valToBool))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionoptions-quality SpeechRecognitionOptions.quality specification>
+setQuality :: (MonadDOM m) => SpeechRecognitionOptions -> SpeechRecognitionQuality -> m ()
+setQuality self val = liftDOM (void (self ^. jss "quality" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionoptions-quality SpeechRecognitionOptions.quality specification>
+getQuality :: (MonadDOM m) => SpeechRecognitionOptions -> m (Maybe SpeechRecognitionQuality)
+getQuality self = liftDOM (((self ^. js "quality") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechrecognitionoptions-quality SpeechRecognitionOptions.quality specification>
+getQualityUnsafe :: (MonadDOM m, HasCallStack) => SpeechRecognitionOptions -> m SpeechRecognitionQuality
+getQualityUnsafe self = liftDOM ((((self ^. js "quality") >>= 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 (((self ^. js "quality") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SpeechRecognitionPhrase.hs b/src/JSDOM/Generated/SpeechRecognitionPhrase.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SpeechRecognitionPhrase.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module JSDOM.Generated.SpeechRecognitionPhrase
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "SpeechRecognitionPhrase") [toJSVal phrase, P.maybe (P.return jsUndefined) toJSVal boost]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionPhrase/phrase MDN SpeechRecognitionPhrase.phrase documentation>
+getPhrase :: (MonadDOM m, FromJSString result) => SpeechRecognitionPhrase -> m result
+getPhrase self = liftDOM (((self ^. js "phrase") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionPhrase/boost MDN SpeechRecognitionPhrase.boost documentation>
+getBoost :: (MonadDOM m) => SpeechRecognitionPhrase -> m Float
+getBoost self = liftDOM ((P.realToFrac <$> ((self ^. js "boost") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/SpeechRecognitionResult.hs b/src/JSDOM/Generated/SpeechRecognitionResult.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SpeechRecognitionResult.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module JSDOM.Generated.SpeechRecognitionResult
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "item" [toJSVal 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 (self ^. jsf "item" [toJSVal 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 ((((self ^. jsf "item" [toJSVal 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 (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionResult/length MDN SpeechRecognitionResult.length documentation>
+getLength :: (MonadDOM m) => SpeechRecognitionResult -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionResult/isFinal MDN SpeechRecognitionResult.isFinal documentation>
+getIsFinal :: (MonadDOM m) => SpeechRecognitionResult -> m Bool
+getIsFinal self = liftDOM (((self ^. js "isFinal") >>= valToBool))
diff --git a/src/JSDOM/Generated/SpeechRecognitionResultList.hs b/src/JSDOM/Generated/SpeechRecognitionResultList.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SpeechRecognitionResultList.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module JSDOM.Generated.SpeechRecognitionResultList
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "item" [toJSVal 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 (self ^. jsf "item" [toJSVal 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 ((((self ^. jsf "item" [toJSVal 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 (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechRecognitionResultList/length MDN SpeechRecognitionResultList.length documentation>
+getLength :: (MonadDOM m) => SpeechRecognitionResultList -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/SpeechSynthesis.hs b/src/JSDOM/Generated/SpeechSynthesis.hs
--- a/src/JSDOM/Generated/SpeechSynthesis.hs
+++ b/src/JSDOM/Generated/SpeechSynthesis.hs
@@ -1,61 +1,56 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
 module JSDOM.Generated.SpeechSynthesis
-       (speak, cancel, pause, resume, getVoices, getVoices_, getPending,
-        getSpeaking, getPaused, SpeechSynthesis(..), gTypeSpeechSynthesis)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.speak Mozilla SpeechSynthesis.speak documentation> 
-speak ::
-      (MonadDOM m) => SpeechSynthesis -> SpeechSynthesisUtterance -> m ()
-speak self utterance
-  = liftDOM (void (self ^. jsf "speak" [toJSVal utterance]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.cancel Mozilla SpeechSynthesis.cancel documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/cancel MDN SpeechSynthesis.cancel documentation>
 cancel :: (MonadDOM m) => SpeechSynthesis -> m ()
 cancel self = liftDOM (void (self ^. jsf "cancel" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.pause Mozilla SpeechSynthesis.pause documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/getVoices MDN SpeechSynthesis.getVoices documentation>
+getVoices :: (MonadDOM m) => SpeechSynthesis -> m [SpeechSynthesisVoice]
+getVoices self = liftDOM (((self ^. jsf "getVoices" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/getVoices MDN SpeechSynthesis.getVoices documentation>
+getVoices_ :: (MonadDOM m) => SpeechSynthesis -> m ()
+getVoices_ self = liftDOM (void (self ^. jsf "getVoices" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/pause MDN SpeechSynthesis.pause documentation>
 pause :: (MonadDOM m) => SpeechSynthesis -> m ()
 pause self = liftDOM (void (self ^. jsf "pause" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.resume Mozilla SpeechSynthesis.resume documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/resume MDN SpeechSynthesis.resume documentation>
 resume :: (MonadDOM m) => SpeechSynthesis -> m ()
 resume self = liftDOM (void (self ^. jsf "resume" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.getVoices Mozilla SpeechSynthesis.getVoices documentation> 
-getVoices ::
-          (MonadDOM m) => SpeechSynthesis -> m [SpeechSynthesisVoice]
-getVoices self
-  = liftDOM ((self ^. jsf "getVoices" ()) >>= fromJSArrayUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.getVoices Mozilla SpeechSynthesis.getVoices documentation> 
-getVoices_ :: (MonadDOM m) => SpeechSynthesis -> m ()
-getVoices_ self = liftDOM (void (self ^. jsf "getVoices" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/speak MDN SpeechSynthesis.speak documentation>
+speak :: (MonadDOM m) => SpeechSynthesis -> SpeechSynthesisUtterance -> m ()
+speak self utterance = liftDOM (void (self ^. jsf "speak" [toJSVal utterance]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.pending Mozilla SpeechSynthesis.pending documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/pending MDN SpeechSynthesis.pending documentation>
 getPending :: (MonadDOM m) => SpeechSynthesis -> m Bool
-getPending self = liftDOM ((self ^. js "pending") >>= valToBool)
+getPending self = liftDOM (((self ^. js "pending") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.speaking Mozilla SpeechSynthesis.speaking documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/speaking MDN SpeechSynthesis.speaking documentation>
 getSpeaking :: (MonadDOM m) => SpeechSynthesis -> m Bool
-getSpeaking self = liftDOM ((self ^. js "speaking") >>= valToBool)
+getSpeaking self = liftDOM (((self ^. js "speaking") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.paused Mozilla SpeechSynthesis.paused documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesis/paused MDN SpeechSynthesis.paused documentation>
 getPaused :: (MonadDOM m) => SpeechSynthesis -> m Bool
-getPaused self = liftDOM ((self ^. js "paused") >>= valToBool)
+getPaused self = liftDOM (((self ^. js "paused") >>= valToBool))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesis-onvoiceschanged voiceschanged event>
+voiceschanged :: EventName SpeechSynthesis Event
+voiceschanged = unsafeEventName (toJSString "voiceschanged")
diff --git a/src/JSDOM/Generated/SpeechSynthesisErrorEvent.hs b/src/JSDOM/Generated/SpeechSynthesisErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SpeechSynthesisErrorEvent.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module JSDOM.Generated.SpeechSynthesisErrorEvent
+       (newSpeechSynthesisErrorEvent, getError, SpeechSynthesisErrorEvent(..), gTypeSpeechSynthesisErrorEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "SpeechSynthesisErrorEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisErrorEvent/error MDN SpeechSynthesisErrorEvent.error documentation>
+getError :: (MonadDOM m) => SpeechSynthesisErrorEvent -> m SpeechSynthesisErrorCode
+getError self = liftDOM (((self ^. js "error") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SpeechSynthesisErrorEventInit.hs b/src/JSDOM/Generated/SpeechSynthesisErrorEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SpeechSynthesisErrorEventInit.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module JSDOM.Generated.SpeechSynthesisErrorEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-speech-api/#dictdef-speechsynthesiserroreventinit SpeechSynthesisErrorEventInit specification>
+newSpeechSynthesisErrorEventInit :: (MonadDOM m) => SpeechSynthesisUtterance -> SpeechSynthesisErrorCode -> m SpeechSynthesisErrorEventInit
+newSpeechSynthesisErrorEventInit utterance error = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "utterance" (toJSVal utterance)) P.>> (o ^. jss "error" (toJSVal error)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiserroreventinit-error SpeechSynthesisErrorEventInit.error specification>
+setError :: (MonadDOM m) => SpeechSynthesisErrorEventInit -> SpeechSynthesisErrorCode -> m ()
+setError self val = liftDOM (void (self ^. jss "error" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiserroreventinit-error SpeechSynthesisErrorEventInit.error specification>
+getError :: (MonadDOM m) => SpeechSynthesisErrorEventInit -> m SpeechSynthesisErrorCode
+getError self = liftDOM (((self ^. js "error") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SpeechSynthesisEvent.hs b/src/JSDOM/Generated/SpeechSynthesisEvent.hs
--- a/src/JSDOM/Generated/SpeechSynthesisEvent.hs
+++ b/src/JSDOM/Generated/SpeechSynthesisEvent.hs
@@ -1,38 +1,40 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
 module JSDOM.Generated.SpeechSynthesisEvent
-       (getCharIndex, getElapsedTime, getName, SpeechSynthesisEvent(..),
-        gTypeSpeechSynthesisEvent)
+       (newSpeechSynthesisEvent, getUtterance, getCharIndex, getCharLength, getElapsedTime, getName, SpeechSynthesisEvent(..), gTypeSpeechSynthesisEvent, IsSpeechSynthesisEvent, toSpeechSynthesisEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent.charIndex Mozilla SpeechSynthesisEvent.charIndex documentation> 
-getCharIndex :: (MonadDOM m) => SpeechSynthesisEvent -> m Word
-getCharIndex self
-  = liftDOM (round <$> ((self ^. js "charIndex") >>= valToNumber))
+-- | <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 (((new (jsg "SpeechSynthesisEvent") [toJSVal type', toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent.elapsedTime Mozilla SpeechSynthesisEvent.elapsedTime documentation> 
-getElapsedTime :: (MonadDOM m) => SpeechSynthesisEvent -> m Float
-getElapsedTime self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "elapsedTime") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisEvent/utterance MDN SpeechSynthesisEvent.utterance documentation>
+getUtterance :: (MonadDOM m, IsSpeechSynthesisEvent self) => self -> m SpeechSynthesisUtterance
+getUtterance self = liftDOM ((((Types.toSpeechSynthesisEvent self) ^. js "utterance") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent.name Mozilla SpeechSynthesisEvent.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) =>
-          SpeechSynthesisEvent -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisEvent/charIndex MDN SpeechSynthesisEvent.charIndex documentation>
+getCharIndex :: (MonadDOM m, IsSpeechSynthesisEvent self) => self -> m Word
+getCharIndex self = liftDOM ((P.round <$> (((Types.toSpeechSynthesisEvent self) ^. js "charIndex") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisEvent/charLength MDN SpeechSynthesisEvent.charLength documentation>
+getCharLength :: (MonadDOM m, IsSpeechSynthesisEvent self) => self -> m Word
+getCharLength self = liftDOM ((P.round <$> (((Types.toSpeechSynthesisEvent self) ^. js "charLength") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisEvent/elapsedTime MDN SpeechSynthesisEvent.elapsedTime documentation>
+getElapsedTime :: (MonadDOM m, IsSpeechSynthesisEvent self) => self -> m Float
+getElapsedTime self = liftDOM ((P.realToFrac <$> (((Types.toSpeechSynthesisEvent self) ^. js "elapsedTime") >>= valToNumber)))
+
+-- | <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 ((((Types.toSpeechSynthesisEvent self) ^. js "name") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SpeechSynthesisEventInit.hs b/src/JSDOM/Generated/SpeechSynthesisEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SpeechSynthesisEventInit.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
+module JSDOM.Generated.SpeechSynthesisEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-speech-api/#dictdef-speechsynthesiseventinit SpeechSynthesisEventInit specification>
+newSpeechSynthesisEventInit :: (MonadDOM m) => SpeechSynthesisUtterance -> m SpeechSynthesisEventInit
+newSpeechSynthesisEventInit utterance = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "utterance" (toJSVal utterance)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toSpeechSynthesisEventInit self) ^. jss "utterance" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-speech-api/#dom-speechsynthesiseventinit-utterance SpeechSynthesisEventInit.utterance specification>
+getUtterance :: (MonadDOM m, IsSpeechSynthesisEventInit self) => self -> m SpeechSynthesisUtterance
+getUtterance self = liftDOM ((((Types.toSpeechSynthesisEventInit self) ^. js "utterance") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toSpeechSynthesisEventInit self) ^. jss "charIndex" (toJSVal val)))
+
+-- | <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 ((((Types.toSpeechSynthesisEventInit self) ^. js "charIndex") >>= 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 (((((Types.toSpeechSynthesisEventInit self) ^. js "charIndex") >>= 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 ((P.round <$> (((Types.toSpeechSynthesisEventInit self) ^. js "charIndex") >>= valToNumber)))
+
+-- | <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 ((Types.toSpeechSynthesisEventInit self) ^. jss "charLength" (toJSVal val)))
+
+-- | <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 ((((Types.toSpeechSynthesisEventInit self) ^. js "charLength") >>= 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 (((((Types.toSpeechSynthesisEventInit self) ^. js "charLength") >>= 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 ((P.round <$> (((Types.toSpeechSynthesisEventInit self) ^. js "charLength") >>= valToNumber)))
+
+-- | <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 ((Types.toSpeechSynthesisEventInit self) ^. jss "elapsedTime" (toJSVal val)))
+
+-- | <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 ((((Types.toSpeechSynthesisEventInit self) ^. js "elapsedTime") >>= 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 (((((Types.toSpeechSynthesisEventInit self) ^. js "elapsedTime") >>= 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 ((P.realToFrac <$> (((Types.toSpeechSynthesisEventInit self) ^. js "elapsedTime") >>= valToNumber)))
+
+-- | <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 ((Types.toSpeechSynthesisEventInit self) ^. jss "name" (toJSVal val)))
+
+-- | <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 ((((Types.toSpeechSynthesisEventInit self) ^. js "name") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toSpeechSynthesisEventInit self) ^. js "name") >>= fromMaybeJSString) >>= 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 ((((Types.toSpeechSynthesisEventInit self) ^. js "name") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SpeechSynthesisUtterance.hs b/src/JSDOM/Generated/SpeechSynthesisUtterance.hs
--- a/src/JSDOM/Generated/SpeechSynthesisUtterance.hs
+++ b/src/JSDOM/Generated/SpeechSynthesisUtterance.hs
@@ -1,142 +1,104 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
 module JSDOM.Generated.SpeechSynthesisUtterance
-       (newSpeechSynthesisUtterance, setText, getText, setLang, getLang,
-        setVoice, getVoice, getVoiceUnsafe, getVoiceUnchecked, setVolume,
-        getVolume, setRate, getRate, setPitch, getPitch, start, end, error,
-        pause, resume, mark, boundary, SpeechSynthesisUtterance(..),
-        gTypeSpeechSynthesisUtterance)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance Mozilla SpeechSynthesisUtterance documentation> 
-newSpeechSynthesisUtterance ::
-                            (MonadDOM m, ToJSString text) =>
-                              Maybe text -> m SpeechSynthesisUtterance
-newSpeechSynthesisUtterance text
-  = liftDOM
-      (SpeechSynthesisUtterance <$>
-         new (jsg "SpeechSynthesisUtterance") [toJSVal text])
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/SpeechSynthesisUtterance MDN SpeechSynthesisUtterance. documentation>
+newSpeechSynthesisUtterance :: (MonadDOM m, ToJSString text) => Maybe text -> m SpeechSynthesisUtterance
+newSpeechSynthesisUtterance text = liftDOM (((new (jsg "SpeechSynthesisUtterance") [P.maybe (P.return jsUndefined) toJSVal text]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.text Mozilla SpeechSynthesisUtterance.text documentation> 
-setText ::
-        (MonadDOM m, ToJSString val) =>
-          SpeechSynthesisUtterance -> val -> m ()
-setText self val = liftDOM (self ^. jss "text" (toJSVal val))
+-- | <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 (self ^. jss "text" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.text Mozilla SpeechSynthesisUtterance.text documentation> 
-getText ::
-        (MonadDOM m, FromJSString result) =>
-          SpeechSynthesisUtterance -> m result
-getText self = liftDOM ((self ^. js "text") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/text MDN SpeechSynthesisUtterance.text documentation>
+getText :: (MonadDOM m, FromJSString result) => SpeechSynthesisUtterance -> m result
+getText self = liftDOM (((self ^. js "text") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.lang Mozilla SpeechSynthesisUtterance.lang documentation> 
-setLang ::
-        (MonadDOM m, ToJSString val) =>
-          SpeechSynthesisUtterance -> val -> m ()
-setLang self val = liftDOM (self ^. jss "lang" (toJSVal val))
+-- | <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 (self ^. jss "lang" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.lang Mozilla SpeechSynthesisUtterance.lang documentation> 
-getLang ::
-        (MonadDOM m, FromJSString result) =>
-          SpeechSynthesisUtterance -> m result
-getLang self = liftDOM ((self ^. js "lang") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/lang MDN SpeechSynthesisUtterance.lang documentation>
+getLang :: (MonadDOM m, FromJSString result) => SpeechSynthesisUtterance -> m result
+getLang self = liftDOM (((self ^. js "lang") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.voice Mozilla SpeechSynthesisUtterance.voice documentation> 
-setVoice ::
-         (MonadDOM m) =>
-           SpeechSynthesisUtterance -> Maybe SpeechSynthesisVoice -> m ()
-setVoice self val = liftDOM (self ^. jss "voice" (toJSVal val))
+-- | <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 (self ^. jss "voice" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.voice Mozilla SpeechSynthesisUtterance.voice documentation> 
-getVoice ::
-         (MonadDOM m) =>
-           SpeechSynthesisUtterance -> m (Maybe SpeechSynthesisVoice)
-getVoice self = liftDOM ((self ^. js "voice") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/voice MDN SpeechSynthesisUtterance.voice documentation>
+getVoice :: (MonadDOM m) => SpeechSynthesisUtterance -> m (Maybe SpeechSynthesisVoice)
+getVoice self = liftDOM (((self ^. js "voice") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.voice Mozilla SpeechSynthesisUtterance.voice documentation> 
-getVoiceUnsafe ::
-               (MonadDOM m, HasCallStack) =>
-                 SpeechSynthesisUtterance -> m SpeechSynthesisVoice
-getVoiceUnsafe self
-  = liftDOM
-      (((self ^. js "voice") >>= fromJSVal) >>=
-         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 ((((self ^. js "voice") >>= 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 ::
-                  (MonadDOM m) => SpeechSynthesisUtterance -> m SpeechSynthesisVoice
-getVoiceUnchecked self
-  = liftDOM ((self ^. js "voice") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/voice MDN SpeechSynthesisUtterance.voice documentation>
+getVoiceUnchecked :: (MonadDOM m) => SpeechSynthesisUtterance -> m SpeechSynthesisVoice
+getVoiceUnchecked self = liftDOM (((self ^. js "voice") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.volume Mozilla SpeechSynthesisUtterance.volume documentation> 
-setVolume ::
-          (MonadDOM m) => SpeechSynthesisUtterance -> Float -> m ()
-setVolume self val = liftDOM (self ^. jss "volume" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/volume MDN SpeechSynthesisUtterance.volume documentation>
+setVolume :: (MonadDOM m) => SpeechSynthesisUtterance -> Float -> m ()
+setVolume self val = liftDOM (void (self ^. jss "volume" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.volume Mozilla SpeechSynthesisUtterance.volume documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/volume MDN SpeechSynthesisUtterance.volume documentation>
 getVolume :: (MonadDOM m) => SpeechSynthesisUtterance -> m Float
-getVolume self
-  = liftDOM (realToFrac <$> ((self ^. js "volume") >>= valToNumber))
+getVolume self = liftDOM ((P.realToFrac <$> ((self ^. js "volume") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.rate Mozilla SpeechSynthesisUtterance.rate documentation> 
-setRate ::
-        (MonadDOM m) => SpeechSynthesisUtterance -> Float -> m ()
-setRate self val = liftDOM (self ^. jss "rate" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/rate MDN SpeechSynthesisUtterance.rate documentation>
+setRate :: (MonadDOM m) => SpeechSynthesisUtterance -> Float -> m ()
+setRate self val = liftDOM (void (self ^. jss "rate" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.rate Mozilla SpeechSynthesisUtterance.rate documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/rate MDN SpeechSynthesisUtterance.rate documentation>
 getRate :: (MonadDOM m) => SpeechSynthesisUtterance -> m Float
-getRate self
-  = liftDOM (realToFrac <$> ((self ^. js "rate") >>= valToNumber))
+getRate self = liftDOM ((P.realToFrac <$> ((self ^. js "rate") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.pitch Mozilla SpeechSynthesisUtterance.pitch documentation> 
-setPitch ::
-         (MonadDOM m) => SpeechSynthesisUtterance -> Float -> m ()
-setPitch self val = liftDOM (self ^. jss "pitch" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/pitch MDN SpeechSynthesisUtterance.pitch documentation>
+setPitch :: (MonadDOM m) => SpeechSynthesisUtterance -> Float -> m ()
+setPitch self val = liftDOM (void (self ^. jss "pitch" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.pitch Mozilla SpeechSynthesisUtterance.pitch documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisUtterance/pitch MDN SpeechSynthesisUtterance.pitch documentation>
 getPitch :: (MonadDOM m) => SpeechSynthesisUtterance -> m Float
-getPitch self
-  = liftDOM (realToFrac <$> ((self ^. js "pitch") >>= valToNumber))
+getPitch self = liftDOM ((P.realToFrac <$> ((self ^. js "pitch") >>= valToNumber)))
 
--- | <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/JSDOM/Generated/SpeechSynthesisVoice.hs b/src/JSDOM/Generated/SpeechSynthesisVoice.hs
--- a/src/JSDOM/Generated/SpeechSynthesisVoice.hs
+++ b/src/JSDOM/Generated/SpeechSynthesisVoice.hs
@@ -1,49 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from speech-api (webref). Do not edit.
 module JSDOM.Generated.SpeechSynthesisVoice
-       (getVoiceURI, getName, getLang, getLocalService, getDefault,
-        SpeechSynthesisVoice(..), gTypeSpeechSynthesisVoice)
+       (getVoiceURI, getName, getLang, getLocalService, getDefault, SpeechSynthesisVoice(..), gTypeSpeechSynthesisVoice)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.voiceURI Mozilla SpeechSynthesisVoice.voiceURI documentation> 
-getVoiceURI ::
-            (MonadDOM m, FromJSString result) =>
-              SpeechSynthesisVoice -> m result
-getVoiceURI self
-  = liftDOM ((self ^. js "voiceURI") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisVoice/voiceURI MDN SpeechSynthesisVoice.voiceURI documentation>
+getVoiceURI :: (MonadDOM m, FromJSString result) => SpeechSynthesisVoice -> m result
+getVoiceURI self = liftDOM (((self ^. js "voiceURI") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.name Mozilla SpeechSynthesisVoice.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) =>
-          SpeechSynthesisVoice -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisVoice/name MDN SpeechSynthesisVoice.name documentation>
+getName :: (MonadDOM m, FromJSString result) => SpeechSynthesisVoice -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.lang Mozilla SpeechSynthesisVoice.lang documentation> 
-getLang ::
-        (MonadDOM m, FromJSString result) =>
-          SpeechSynthesisVoice -> m result
-getLang self = liftDOM ((self ^. js "lang") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisVoice/lang MDN SpeechSynthesisVoice.lang documentation>
+getLang :: (MonadDOM m, FromJSString result) => SpeechSynthesisVoice -> m result
+getLang self = liftDOM (((self ^. js "lang") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.localService Mozilla SpeechSynthesisVoice.localService documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisVoice/localService MDN SpeechSynthesisVoice.localService documentation>
 getLocalService :: (MonadDOM m) => SpeechSynthesisVoice -> m Bool
-getLocalService self
-  = liftDOM ((self ^. js "localService") >>= valToBool)
+getLocalService self = liftDOM (((self ^. js "localService") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.default Mozilla SpeechSynthesisVoice.default documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/SpeechSynthesisVoice/default MDN SpeechSynthesisVoice.default documentation>
 getDefault :: (MonadDOM m) => SpeechSynthesisVoice -> m Bool
-getDefault self = liftDOM ((self ^. js "default") >>= valToBool)
+getDefault self = liftDOM (((self ^. js "default") >>= valToBool))
diff --git a/src/JSDOM/Generated/StartViewTransitionOptions.hs b/src/JSDOM/Generated/StartViewTransitionOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/StartViewTransitionOptions.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-view-transitions-2 (webref). Do not edit.
+module JSDOM.Generated.StartViewTransitionOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/css-view-transitions-2/#dictdef-startviewtransitionoptions StartViewTransitionOptions specification>
+newStartViewTransitionOptions :: (MonadDOM m) => m StartViewTransitionOptions
+newStartViewTransitionOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "update" (toJSVal val)))
+
+-- | <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 (self ^. jss "types" (toJSVal val)))
+
+-- | <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 (((self ^. js "types") >>= 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 ((((self ^. js "types") >>= 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 (((self ^. js "types") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/StaticRange.hs b/src/JSDOM/Generated/StaticRange.hs
--- a/src/JSDOM/Generated/StaticRange.hs
+++ b/src/JSDOM/Generated/StaticRange.hs
@@ -1,46 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.StaticRange
-       (getStartOffset, getEndOffset, getStartContainer, getEndContainer,
-        getCollapsed, StaticRange(..), gTypeStaticRange)
+       (newStaticRange, StaticRange(..), gTypeStaticRange)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StaticRange.startOffset Mozilla StaticRange.startOffset documentation> 
-getStartOffset :: (MonadDOM m) => StaticRange -> m Word
-getStartOffset self
-  = liftDOM (round <$> ((self ^. js "startOffset") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StaticRange.endOffset Mozilla StaticRange.endOffset documentation> 
-getEndOffset :: (MonadDOM m) => StaticRange -> m Word
-getEndOffset self
-  = liftDOM (round <$> ((self ^. js "endOffset") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StaticRange.startContainer Mozilla StaticRange.startContainer documentation> 
-getStartContainer :: (MonadDOM m) => StaticRange -> m Node
-getStartContainer self
-  = liftDOM ((self ^. js "startContainer") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StaticRange.endContainer Mozilla StaticRange.endContainer documentation> 
-getEndContainer :: (MonadDOM m) => StaticRange -> m Node
-getEndContainer self
-  = liftDOM ((self ^. js "endContainer") >>= fromJSValUnchecked)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StaticRange.collapsed Mozilla StaticRange.collapsed documentation> 
-getCollapsed :: (MonadDOM m) => StaticRange -> m Bool
-getCollapsed self
-  = liftDOM ((self ^. js "collapsed") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/StaticRange/StaticRange MDN StaticRange. documentation>
+newStaticRange :: (MonadDOM m) => StaticRangeInit -> m StaticRange
+newStaticRange init = liftDOM (((new (jsg "StaticRange") [toJSVal init]) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/StaticRangeInit.hs b/src/JSDOM/Generated/StaticRangeInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/StaticRangeInit.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.StaticRangeInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "startContainer" (toJSVal startContainer)) P.>> (o ^. jss "startOffset" (toJSVal startOffset)) P.>> (o ^. jss "endContainer" (toJSVal endContainer)) P.>> (o ^. jss "endOffset" (toJSVal endOffset)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-staticrangeinit-startcontainer StaticRangeInit.startContainer specification>
+setStartContainer :: (MonadDOM m, IsNode val) => StaticRangeInit -> val -> m ()
+setStartContainer self val = liftDOM (void (self ^. jss "startContainer" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-staticrangeinit-startcontainer StaticRangeInit.startContainer specification>
+getStartContainer :: (MonadDOM m) => StaticRangeInit -> m Node
+getStartContainer self = liftDOM (((self ^. js "startContainer") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-staticrangeinit-startoffset StaticRangeInit.startOffset specification>
+setStartOffset :: (MonadDOM m) => StaticRangeInit -> Word -> m ()
+setStartOffset self val = liftDOM (void (self ^. jss "startOffset" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-staticrangeinit-startoffset StaticRangeInit.startOffset specification>
+getStartOffset :: (MonadDOM m) => StaticRangeInit -> m Word
+getStartOffset self = liftDOM ((P.round <$> ((self ^. js "startOffset") >>= valToNumber)))
+
+-- | <https://dom.spec.whatwg.org/#dom-staticrangeinit-endcontainer StaticRangeInit.endContainer specification>
+setEndContainer :: (MonadDOM m, IsNode val) => StaticRangeInit -> val -> m ()
+setEndContainer self val = liftDOM (void (self ^. jss "endContainer" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-staticrangeinit-endcontainer StaticRangeInit.endContainer specification>
+getEndContainer :: (MonadDOM m) => StaticRangeInit -> m Node
+getEndContainer self = liftDOM (((self ^. js "endContainer") >>= fromJSValUnchecked))
+
+-- | <https://dom.spec.whatwg.org/#dom-staticrangeinit-endoffset StaticRangeInit.endOffset specification>
+setEndOffset :: (MonadDOM m) => StaticRangeInit -> Word -> m ()
+setEndOffset self val = liftDOM (void (self ^. jss "endOffset" (toJSVal val)))
+
+-- | <https://dom.spec.whatwg.org/#dom-staticrangeinit-endoffset StaticRangeInit.endOffset specification>
+getEndOffset :: (MonadDOM m) => StaticRangeInit -> m Word
+getEndOffset self = liftDOM ((P.round <$> ((self ^. js "endOffset") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/StereoPannerNode.hs b/src/JSDOM/Generated/StereoPannerNode.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/StereoPannerNode.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.StereoPannerNode
+       (newStereoPannerNode, getPan, StereoPannerNode(..), gTypeStereoPannerNode)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "StereoPannerNode") [toJSVal context, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StereoPannerNode/pan MDN StereoPannerNode.pan documentation>
+getPan :: (MonadDOM m) => StereoPannerNode -> m AudioParam
+getPan self = liftDOM (((self ^. js "pan") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/StereoPannerOptions.hs b/src/JSDOM/Generated/StereoPannerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/StereoPannerOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.StereoPannerOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#StereoPannerOptions StereoPannerOptions specification>
+newStereoPannerOptions :: (MonadDOM m) => m StereoPannerOptions
+newStereoPannerOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-stereopanneroptions-pan StereoPannerOptions.pan specification>
+setPan :: (MonadDOM m) => StereoPannerOptions -> Float -> m ()
+setPan self val = liftDOM (void (self ^. jss "pan" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-stereopanneroptions-pan StereoPannerOptions.pan specification>
+getPan :: (MonadDOM m) => StereoPannerOptions -> m (Maybe Float)
+getPan self = liftDOM (((self ^. js "pan") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-stereopanneroptions-pan StereoPannerOptions.pan specification>
+getPanUnsafe :: (MonadDOM m, HasCallStack) => StereoPannerOptions -> m Float
+getPanUnsafe self = liftDOM ((((self ^. js "pan") >>= 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 ((P.realToFrac <$> ((self ^. js "pan") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/Storage.hs b/src/JSDOM/Generated/Storage.hs
--- a/src/JSDOM/Generated/Storage.hs
+++ b/src/JSDOM/Generated/Storage.hs
@@ -1,100 +1,64 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.Storage
-       (key, key_, keyUnsafe, keyUnchecked, getItem, getItem_,
-        getItemUnsafe, getItemUnchecked, setItem, removeItem, clear,
-        getLength, Storage(..), gTypeStorage)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
-key ::
-    (MonadDOM m, FromJSString result) =>
-      Storage -> Word -> m (Maybe result)
-key self index
-  = liftDOM
-      ((self ^. jsf "key" [toJSVal index]) >>= fromMaybeJSString)
+-- | <https://developer.mozilla.org/docs/Web/API/Storage/clear MDN Storage.clear documentation>
+clear :: (MonadDOM m) => Storage -> m ()
+clear self = liftDOM (void (self ^. jsf "clear" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
-key_ :: (MonadDOM m) => Storage -> Word -> m ()
-key_ self index
-  = liftDOM (void (self ^. jsf "key" [toJSVal index]))
+-- | <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 (((self ^. jsf "getItem" [toJSVal key]) >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
-keyUnsafe ::
-          (MonadDOM m, HasCallStack, FromJSString result) =>
-            Storage -> Word -> m result
-keyUnsafe self index
-  = liftDOM
-      (((self ^. jsf "key" [toJSVal index]) >>= fromMaybeJSString) >>=
-         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 (self ^. jsf "getItem" [toJSVal key]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
-keyUnchecked ::
-             (MonadDOM m, FromJSString result) => Storage -> Word -> m result
-keyUnchecked self index
-  = liftDOM
-      ((self ^. jsf "key" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <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 ((((self ^. jsf "getItem" [toJSVal key]) >>= fromMaybeJSString) >>= 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 ::
-        (MonadDOM m, ToJSString key, FromJSString result) =>
-          Storage -> key -> m (Maybe result)
-getItem self key = liftDOM ((self ! key) >>= fromMaybeJSString)
+-- | <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 (((self ^. jsf "getItem" [toJSVal key]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.getItem Mozilla Storage.getItem documentation> 
-getItem_ :: (MonadDOM m, ToJSString key) => Storage -> key -> m ()
-getItem_ self key = liftDOM (void (self ! key))
+-- | <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 (((self ^. jsf "key" [toJSVal index]) >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.getItem Mozilla Storage.getItem documentation> 
-getItemUnsafe ::
-              (MonadDOM m, ToJSString key, HasCallStack, FromJSString result) =>
-                Storage -> key -> m result
-getItemUnsafe self key
-  = liftDOM
-      (((self ! key) >>= fromMaybeJSString) >>=
-         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 (self ^. jsf "key" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.getItem Mozilla Storage.getItem documentation> 
-getItemUnchecked ::
-                 (MonadDOM m, ToJSString key, FromJSString result) =>
-                   Storage -> key -> m result
-getItemUnchecked self key
-  = liftDOM ((self ! key) >>= fromJSValUnchecked)
+-- | <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 ((((self ^. jsf "key" [toJSVal index]) >>= fromMaybeJSString) >>= 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 ::
-        (MonadDOM m, ToJSString key, ToJSString data') =>
-          Storage -> key -> data' -> m ()
-setItem self key data'
-  = liftDOM
-      (void (self ^. jsf "setItem" [toJSVal key, toJSVal 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 (((self ^. jsf "key" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.removeItem Mozilla Storage.removeItem documentation> 
-removeItem ::
-           (MonadDOM m, ToJSString key) => Storage -> key -> m ()
-removeItem self key
-  = liftDOM (void (self ^. jsf "removeItem" [toJSVal key]))
+-- | <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 (self ^. jsf "removeItem" [toJSVal key]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.clear Mozilla Storage.clear documentation> 
-clear :: (MonadDOM m) => Storage -> m ()
-clear self = liftDOM (void (self ^. jsf "clear" ()))
+-- | <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 (self ^. jsf "setItem" [toJSVal key, toJSVal value]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.length Mozilla Storage.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Storage/length MDN Storage.length documentation>
 getLength :: (MonadDOM m) => Storage -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/StorageErrorCallback.hs b/src/JSDOM/Generated/StorageErrorCallback.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/StorageErrorCallback.hs
+++ /dev/null
@@ -1,51 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.StorageErrorCallback
-       (newStorageErrorCallback, newStorageErrorCallbackSync,
-        newStorageErrorCallbackAsync, StorageErrorCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageErrorCallback Mozilla StorageErrorCallback documentation> 
-newStorageErrorCallback ::
-                        (MonadDOM m) => (DOMException -> JSM ()) -> m StorageErrorCallback
-newStorageErrorCallback callback
-  = liftDOM
-      (StorageErrorCallback . Callback <$>
-         function
-           (\ _ _ [error] ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageErrorCallback Mozilla StorageErrorCallback documentation> 
-newStorageErrorCallbackSync ::
-                            (MonadDOM m) => (DOMException -> JSM ()) -> m StorageErrorCallback
-newStorageErrorCallbackSync callback
-  = liftDOM
-      (StorageErrorCallback . Callback <$>
-         function
-           (\ _ _ [error] ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageErrorCallback Mozilla StorageErrorCallback documentation> 
-newStorageErrorCallbackAsync ::
-                             (MonadDOM m) => (DOMException -> JSM ()) -> m StorageErrorCallback
-newStorageErrorCallbackAsync callback
-  = liftDOM
-      (StorageErrorCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [error] ->
-              fromJSValUnchecked error >>= \ error' -> callback error'))
diff --git a/src/JSDOM/Generated/StorageEstimate.hs b/src/JSDOM/Generated/StorageEstimate.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/StorageEstimate.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from storage (webref). Do not edit.
+module JSDOM.Generated.StorageEstimate
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://storage.spec.whatwg.org/#dictdef-storageestimate StorageEstimate specification>
+newStorageEstimate :: (MonadDOM m) => m StorageEstimate
+newStorageEstimate = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://storage.spec.whatwg.org/#dom-storageestimate-usage StorageEstimate.usage specification>
+setUsage :: (MonadDOM m) => StorageEstimate -> Word53 -> m ()
+setUsage self val = liftDOM (void (self ^. jss "usage" (toJSVal val)))
+
+-- | <https://storage.spec.whatwg.org/#dom-storageestimate-usage StorageEstimate.usage specification>
+getUsage :: (MonadDOM m) => StorageEstimate -> m (Maybe Word53)
+getUsage self = liftDOM (((self ^. js "usage") >>= fromJSValUnchecked))
+
+-- | <https://storage.spec.whatwg.org/#dom-storageestimate-usage StorageEstimate.usage specification>
+getUsageUnsafe :: (MonadDOM m, HasCallStack) => StorageEstimate -> m Word53
+getUsageUnsafe self = liftDOM ((((self ^. js "usage") >>= 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 (((self ^. js "usage") >>= fromJSValUnchecked))
+
+-- | <https://storage.spec.whatwg.org/#dom-storageestimate-quota StorageEstimate.quota specification>
+setQuota :: (MonadDOM m) => StorageEstimate -> Word53 -> m ()
+setQuota self val = liftDOM (void (self ^. jss "quota" (toJSVal val)))
+
+-- | <https://storage.spec.whatwg.org/#dom-storageestimate-quota StorageEstimate.quota specification>
+getQuota :: (MonadDOM m) => StorageEstimate -> m (Maybe Word53)
+getQuota self = liftDOM (((self ^. js "quota") >>= fromJSValUnchecked))
+
+-- | <https://storage.spec.whatwg.org/#dom-storageestimate-quota StorageEstimate.quota specification>
+getQuotaUnsafe :: (MonadDOM m, HasCallStack) => StorageEstimate -> m Word53
+getQuotaUnsafe self = liftDOM ((((self ^. js "quota") >>= 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 (((self ^. js "quota") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/StorageEvent.hs b/src/JSDOM/Generated/StorageEvent.hs
--- a/src/JSDOM/Generated/StorageEvent.hs
+++ b/src/JSDOM/Generated/StorageEvent.hs
@@ -1,143 +1,76 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.StorageEvent
-       (newStorageEvent, initStorageEvent, getKey, getKeyUnsafe,
-        getKeyUnchecked, getOldValue, getOldValueUnsafe,
-        getOldValueUnchecked, getNewValue, getNewValueUnsafe,
-        getNewValueUnchecked, getUrl, getStorageArea, getStorageAreaUnsafe,
-        getStorageAreaUnchecked, StorageEvent(..), gTypeStorageEvent)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent Mozilla StorageEvent documentation> 
-newStorageEvent ::
-                (MonadDOM m, ToJSString type') =>
-                  type' -> Maybe StorageEventInit -> m StorageEvent
-newStorageEvent type' eventInitDict
-  = liftDOM
-      (StorageEvent <$>
-         new (jsg "StorageEvent") [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "StorageEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.initStorageEvent Mozilla StorageEvent.initStorageEvent documentation> 
-initStorageEvent ::
-                 (MonadDOM 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
-  = liftDOM
-      (void
-         (self ^. jsf "initStorageEvent"
-            [toJSVal typeArg, toJSVal canBubbleArg, toJSVal cancelableArg,
-             toJSVal keyArg, toJSVal oldValueArg, toJSVal newValueArg,
-             toJSVal urlArg, toJSVal storageAreaArg]))
+-- | <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 (self ^. jsf "initStorageEvent" [toJSVal type', P.maybe (P.return jsUndefined) toJSVal bubbles, P.maybe (P.return jsUndefined) toJSVal cancelable, toJSVal key, toJSVal oldValue, toJSVal newValue, P.maybe (P.return jsUndefined) toJSVal url, toJSVal storageArea]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.key Mozilla StorageEvent.key documentation> 
-getKey ::
-       (MonadDOM m, FromJSString result) =>
-         StorageEvent -> m (Maybe result)
-getKey self = liftDOM ((self ^. js "key") >>= fromMaybeJSString)
+-- | <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 (((self ^. js "key") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.key Mozilla StorageEvent.key documentation> 
-getKeyUnsafe ::
-             (MonadDOM m, HasCallStack, FromJSString result) =>
-               StorageEvent -> m result
-getKeyUnsafe self
-  = liftDOM
-      (((self ^. js "key") >>= fromMaybeJSString) >>=
-         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 ((((self ^. js "key") >>= fromMaybeJSString) >>= 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 ::
-                (MonadDOM m, FromJSString result) => StorageEvent -> m result
-getKeyUnchecked self
-  = liftDOM ((self ^. js "key") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/key MDN StorageEvent.key documentation>
+getKeyUnchecked :: (MonadDOM m, FromJSString result) => StorageEvent -> m result
+getKeyUnchecked self = liftDOM (((self ^. js "key") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.oldValue Mozilla StorageEvent.oldValue documentation> 
-getOldValue ::
-            (MonadDOM m, FromJSString result) =>
-              StorageEvent -> m (Maybe result)
-getOldValue self
-  = liftDOM ((self ^. js "oldValue") >>= fromMaybeJSString)
+-- | <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 (((self ^. js "oldValue") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.oldValue Mozilla StorageEvent.oldValue documentation> 
-getOldValueUnsafe ::
-                  (MonadDOM m, HasCallStack, FromJSString result) =>
-                    StorageEvent -> m result
-getOldValueUnsafe self
-  = liftDOM
-      (((self ^. js "oldValue") >>= fromMaybeJSString) >>=
-         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 ((((self ^. js "oldValue") >>= fromMaybeJSString) >>= 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 ::
-                     (MonadDOM m, FromJSString result) => StorageEvent -> m result
-getOldValueUnchecked self
-  = liftDOM ((self ^. js "oldValue") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/oldValue MDN StorageEvent.oldValue documentation>
+getOldValueUnchecked :: (MonadDOM m, FromJSString result) => StorageEvent -> m result
+getOldValueUnchecked self = liftDOM (((self ^. js "oldValue") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.newValue Mozilla StorageEvent.newValue documentation> 
-getNewValue ::
-            (MonadDOM m, FromJSString result) =>
-              StorageEvent -> m (Maybe result)
-getNewValue self
-  = liftDOM ((self ^. js "newValue") >>= fromMaybeJSString)
+-- | <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 (((self ^. js "newValue") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.newValue Mozilla StorageEvent.newValue documentation> 
-getNewValueUnsafe ::
-                  (MonadDOM m, HasCallStack, FromJSString result) =>
-                    StorageEvent -> m result
-getNewValueUnsafe self
-  = liftDOM
-      (((self ^. js "newValue") >>= fromMaybeJSString) >>=
-         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 ((((self ^. js "newValue") >>= fromMaybeJSString) >>= 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 ::
-                     (MonadDOM m, FromJSString result) => StorageEvent -> m result
-getNewValueUnchecked self
-  = liftDOM ((self ^. js "newValue") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/newValue MDN StorageEvent.newValue documentation>
+getNewValueUnchecked :: (MonadDOM m, FromJSString result) => StorageEvent -> m result
+getNewValueUnchecked self = liftDOM (((self ^. js "newValue") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.url Mozilla StorageEvent.url documentation> 
-getUrl ::
-       (MonadDOM m, FromJSString result) => StorageEvent -> m result
-getUrl self = liftDOM ((self ^. js "url") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/url MDN StorageEvent.url documentation>
+getUrl :: (MonadDOM m, FromJSString result) => StorageEvent -> m result
+getUrl self = liftDOM (((self ^. js "url") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.storageArea Mozilla StorageEvent.storageArea documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/storageArea MDN StorageEvent.storageArea documentation>
 getStorageArea :: (MonadDOM m) => StorageEvent -> m (Maybe Storage)
-getStorageArea self
-  = liftDOM ((self ^. js "storageArea") >>= fromJSVal)
+getStorageArea self = liftDOM (((self ^. js "storageArea") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.storageArea Mozilla StorageEvent.storageArea documentation> 
-getStorageAreaUnsafe ::
-                     (MonadDOM m, HasCallStack) => StorageEvent -> m Storage
-getStorageAreaUnsafe self
-  = liftDOM
-      (((self ^. js "storageArea") >>= fromJSVal) >>=
-         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 ((((self ^. js "storageArea") >>= 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 ::
-                        (MonadDOM m) => StorageEvent -> m Storage
-getStorageAreaUnchecked self
-  = liftDOM ((self ^. js "storageArea") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/StorageEvent/storageArea MDN StorageEvent.storageArea documentation>
+getStorageAreaUnchecked :: (MonadDOM m) => StorageEvent -> m Storage
+getStorageAreaUnchecked self = liftDOM (((self ^. js "storageArea") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/StorageEventInit.hs b/src/JSDOM/Generated/StorageEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/StorageEventInit.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.StorageEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/webstorage.html#storageeventinit StorageEventInit specification>
+newStorageEventInit :: (MonadDOM m) => m StorageEventInit
+newStorageEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+setKey :: (MonadDOM m, ToJSString val) => StorageEventInit -> Maybe val -> m ()
+setKey self val = liftDOM (void (self ^. jss "key" (toJSVal val)))
+
+getKey :: (MonadDOM m, FromJSString result) => StorageEventInit -> m (Maybe result)
+getKey self = liftDOM (((self ^. js "key") >>= fromMaybeJSString))
+
+getKeyUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => StorageEventInit -> m result
+getKeyUnsafe self = liftDOM ((((self ^. js "key") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getKeyUnchecked :: (MonadDOM m, FromJSString result) => StorageEventInit -> m result
+getKeyUnchecked self = liftDOM (((self ^. js "key") >>= fromJSValUnchecked))
+
+setOldValue :: (MonadDOM m, ToJSString val) => StorageEventInit -> Maybe val -> m ()
+setOldValue self val = liftDOM (void (self ^. jss "oldValue" (toJSVal val)))
+
+getOldValue :: (MonadDOM m, FromJSString result) => StorageEventInit -> m (Maybe result)
+getOldValue self = liftDOM (((self ^. js "oldValue") >>= fromMaybeJSString))
+
+getOldValueUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => StorageEventInit -> m result
+getOldValueUnsafe self = liftDOM ((((self ^. js "oldValue") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getOldValueUnchecked :: (MonadDOM m, FromJSString result) => StorageEventInit -> m result
+getOldValueUnchecked self = liftDOM (((self ^. js "oldValue") >>= fromJSValUnchecked))
+
+setNewValue :: (MonadDOM m, ToJSString val) => StorageEventInit -> Maybe val -> m ()
+setNewValue self val = liftDOM (void (self ^. jss "newValue" (toJSVal val)))
+
+getNewValue :: (MonadDOM m, FromJSString result) => StorageEventInit -> m (Maybe result)
+getNewValue self = liftDOM (((self ^. js "newValue") >>= fromMaybeJSString))
+
+getNewValueUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => StorageEventInit -> m result
+getNewValueUnsafe self = liftDOM ((((self ^. js "newValue") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getNewValueUnchecked :: (MonadDOM m, FromJSString result) => StorageEventInit -> m result
+getNewValueUnchecked self = liftDOM (((self ^. js "newValue") >>= fromJSValUnchecked))
+
+setUrl :: (MonadDOM m, ToJSString val) => StorageEventInit -> val -> m ()
+setUrl self val = liftDOM (void (self ^. jss "url" (toJSVal val)))
+
+getUrl :: (MonadDOM m, FromJSString result) => StorageEventInit -> m (Maybe result)
+getUrl self = liftDOM (((self ^. js "url") >>= fromMaybeJSString))
+
+getUrlUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => StorageEventInit -> m result
+getUrlUnsafe self = liftDOM ((((self ^. js "url") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getUrlUnchecked :: (MonadDOM m, FromJSString result) => StorageEventInit -> m result
+getUrlUnchecked self = liftDOM (((self ^. js "url") >>= fromJSValUnchecked))
+
+setStorageArea :: (MonadDOM m) => StorageEventInit -> Maybe Storage -> m ()
+setStorageArea self val = liftDOM (void (self ^. jss "storageArea" (toJSVal val)))
+
+getStorageArea :: (MonadDOM m) => StorageEventInit -> m (Maybe Storage)
+getStorageArea self = liftDOM (((self ^. js "storageArea") >>= fromJSValUnchecked))
+
+getStorageAreaUnsafe :: (MonadDOM m, HasCallStack) => StorageEventInit -> m Storage
+getStorageAreaUnsafe self = liftDOM ((((self ^. js "storageArea") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getStorageAreaUnchecked :: (MonadDOM m) => StorageEventInit -> m Storage
+getStorageAreaUnchecked self = liftDOM (((self ^. js "storageArea") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/StorageInfo.hs b/src/JSDOM/Generated/StorageInfo.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/StorageInfo.hs
+++ /dev/null
@@ -1,51 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.StorageInfo
-       (queryUsageAndQuota, requestQuota, pattern TEMPORARY,
-        pattern PERSISTENT, StorageInfo(..), gTypeStorageInfo)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageInfo.queryUsageAndQuota Mozilla StorageInfo.queryUsageAndQuota documentation> 
-queryUsageAndQuota ::
-                   (MonadDOM m) =>
-                     StorageInfo ->
-                       Word ->
-                         Maybe StorageUsageCallback -> Maybe StorageErrorCallback -> m ()
-queryUsageAndQuota self storageType usageCallback errorCallback
-  = liftDOM
-      (void
-         (self ^. jsf "queryUsageAndQuota"
-            [toJSVal storageType, toJSVal usageCallback,
-             toJSVal errorCallback]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageInfo.requestQuota Mozilla StorageInfo.requestQuota documentation> 
-requestQuota ::
-             (MonadDOM m) =>
-               StorageInfo ->
-                 Word ->
-                   Word64 ->
-                     Maybe StorageQuotaCallback -> Maybe StorageErrorCallback -> m ()
-requestQuota self storageType newQuotaInBytes quotaCallback
-  errorCallback
-  = liftDOM
-      (void
-         (self ^. jsf "requestQuota"
-            [toJSVal storageType, integralToDoubleToJSVal newQuotaInBytes,
-             toJSVal quotaCallback, toJSVal errorCallback]))
-pattern TEMPORARY = 0
-pattern PERSISTENT = 1
diff --git a/src/JSDOM/Generated/StorageManager.hs b/src/JSDOM/Generated/StorageManager.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/StorageManager.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from storage (webref). Do not edit.
+module JSDOM.Generated.StorageManager
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/StorageManager/estimate MDN StorageManager.estimate documentation>
+estimate :: (MonadDOM m) => StorageManager -> m StorageEstimate
+estimate self = liftDOM (((((self ^. jsf "estimate" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StorageManager/estimate MDN StorageManager.estimate documentation>
+estimate_ :: (MonadDOM m) => StorageManager -> m ()
+estimate_ self = liftDOM (void (((self ^. jsf "estimate" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StorageManager/getDirectory MDN StorageManager.getDirectory documentation>
+getDirectory :: (MonadDOM m) => StorageManager -> m FileSystemDirectoryHandle
+getDirectory self = liftDOM (((((self ^. jsf "getDirectory" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StorageManager/getDirectory MDN StorageManager.getDirectory documentation>
+getDirectory_ :: (MonadDOM m) => StorageManager -> m ()
+getDirectory_ self = liftDOM (void (((self ^. jsf "getDirectory" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StorageManager/persist MDN StorageManager.persist documentation>
+persist :: (MonadDOM m) => StorageManager -> m Bool
+persist self = liftDOM (((((self ^. jsf "persist" ()) >>= readPromise)) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StorageManager/persist MDN StorageManager.persist documentation>
+persist_ :: (MonadDOM m) => StorageManager -> m ()
+persist_ self = liftDOM (void (((self ^. jsf "persist" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StorageManager/persisted MDN StorageManager.persisted documentation>
+persisted :: (MonadDOM m) => StorageManager -> m Bool
+persisted self = liftDOM (((((self ^. jsf "persisted" ()) >>= readPromise)) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StorageManager/persisted MDN StorageManager.persisted documentation>
+persisted_ :: (MonadDOM m) => StorageManager -> m ()
+persisted_ self = liftDOM (void (((self ^. jsf "persisted" ()) >>= readPromise)))
diff --git a/src/JSDOM/Generated/StorageQuota.hs b/src/JSDOM/Generated/StorageQuota.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/StorageQuota.hs
+++ /dev/null
@@ -1,45 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.StorageQuota
-       (queryUsageAndQuota, requestQuota, StorageQuota(..),
-        gTypeStorageQuota)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota.queryUsageAndQuota Mozilla StorageQuota.queryUsageAndQuota documentation> 
-queryUsageAndQuota ::
-                   (MonadDOM m) =>
-                     StorageQuota ->
-                       StorageUsageCallback -> Maybe StorageErrorCallback -> m ()
-queryUsageAndQuota self usageCallback errorCallback
-  = liftDOM
-      (void
-         (self ^. jsf "queryUsageAndQuota"
-            [toJSVal usageCallback, toJSVal errorCallback]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota.requestQuota Mozilla StorageQuota.requestQuota documentation> 
-requestQuota ::
-             (MonadDOM m) =>
-               StorageQuota ->
-                 Word64 ->
-                   Maybe StorageQuotaCallback -> Maybe StorageErrorCallback -> m ()
-requestQuota self newQuotaInBytes quotaCallback errorCallback
-  = liftDOM
-      (void
-         (self ^. jsf "requestQuota"
-            [integralToDoubleToJSVal newQuotaInBytes, toJSVal quotaCallback,
-             toJSVal errorCallback]))
diff --git a/src/JSDOM/Generated/StorageQuotaCallback.hs b/src/JSDOM/Generated/StorageQuotaCallback.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/StorageQuotaCallback.hs
+++ /dev/null
@@ -1,54 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.StorageQuotaCallback
-       (newStorageQuotaCallback, newStorageQuotaCallbackSync,
-        newStorageQuotaCallbackAsync, StorageQuotaCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuotaCallback Mozilla StorageQuotaCallback documentation> 
-newStorageQuotaCallback ::
-                        (MonadDOM m) => (Double -> JSM ()) -> m StorageQuotaCallback
-newStorageQuotaCallback callback
-  = liftDOM
-      (StorageQuotaCallback . Callback <$>
-         function
-           (\ _ _ [grantedQuotaInBytes] ->
-              fromJSValUnchecked grantedQuotaInBytes >>=
-                \ grantedQuotaInBytes' -> callback grantedQuotaInBytes'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuotaCallback Mozilla StorageQuotaCallback documentation> 
-newStorageQuotaCallbackSync ::
-                            (MonadDOM m) => (Double -> JSM ()) -> m StorageQuotaCallback
-newStorageQuotaCallbackSync callback
-  = liftDOM
-      (StorageQuotaCallback . Callback <$>
-         function
-           (\ _ _ [grantedQuotaInBytes] ->
-              fromJSValUnchecked grantedQuotaInBytes >>=
-                \ grantedQuotaInBytes' -> callback grantedQuotaInBytes'))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuotaCallback Mozilla StorageQuotaCallback documentation> 
-newStorageQuotaCallbackAsync ::
-                             (MonadDOM m) => (Double -> JSM ()) -> m StorageQuotaCallback
-newStorageQuotaCallbackAsync callback
-  = liftDOM
-      (StorageQuotaCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [grantedQuotaInBytes] ->
-              fromJSValUnchecked grantedQuotaInBytes >>=
-                \ grantedQuotaInBytes' -> callback grantedQuotaInBytes'))
diff --git a/src/JSDOM/Generated/StorageUsageCallback.hs b/src/JSDOM/Generated/StorageUsageCallback.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/StorageUsageCallback.hs
+++ /dev/null
@@ -1,66 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.StorageUsageCallback
-       (newStorageUsageCallback, newStorageUsageCallbackSync,
-        newStorageUsageCallbackAsync, StorageUsageCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageUsageCallback Mozilla StorageUsageCallback documentation> 
-newStorageUsageCallback ::
-                        (MonadDOM m) =>
-                          (Double -> Double -> JSM ()) -> m StorageUsageCallback
-newStorageUsageCallback callback
-  = liftDOM
-      (StorageUsageCallback . Callback <$>
-         function
-           (\ _ _ [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 ::
-                            (MonadDOM m) =>
-                              (Double -> Double -> JSM ()) -> m StorageUsageCallback
-newStorageUsageCallbackSync callback
-  = liftDOM
-      (StorageUsageCallback . Callback <$>
-         function
-           (\ _ _ [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 ::
-                             (MonadDOM m) =>
-                               (Double -> Double -> JSM ()) -> m StorageUsageCallback
-newStorageUsageCallbackAsync callback
-  = liftDOM
-      (StorageUsageCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [currentUsageInBytes, currentQuotaInBytes] ->
-              fromJSValUnchecked currentQuotaInBytes >>=
-                \ currentQuotaInBytes' ->
-                  fromJSValUnchecked currentUsageInBytes >>=
-                    \ currentUsageInBytes' -> callback currentUsageInBytes'
-                    currentQuotaInBytes'))
diff --git a/src/JSDOM/Generated/StreamPipeOptions.hs b/src/JSDOM/Generated/StreamPipeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/StreamPipeOptions.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module JSDOM.Generated.StreamPipeOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://streams.spec.whatwg.org/#dictdef-streampipeoptions StreamPipeOptions specification>
+newStreamPipeOptions :: (MonadDOM m) => m StreamPipeOptions
+newStreamPipeOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventclose StreamPipeOptions.preventClose specification>
+setPreventClose :: (MonadDOM m) => StreamPipeOptions -> Bool -> m ()
+setPreventClose self val = liftDOM (void (self ^. jss "preventClose" (toJSVal val)))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventclose StreamPipeOptions.preventClose specification>
+getPreventClose :: (MonadDOM m) => StreamPipeOptions -> m (Maybe Bool)
+getPreventClose self = liftDOM (((self ^. js "preventClose") >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventclose StreamPipeOptions.preventClose specification>
+getPreventCloseUnsafe :: (MonadDOM m, HasCallStack) => StreamPipeOptions -> m Bool
+getPreventCloseUnsafe self = liftDOM ((((self ^. js "preventClose") >>= 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 (((self ^. js "preventClose") >>= valToBool))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventabort StreamPipeOptions.preventAbort specification>
+setPreventAbort :: (MonadDOM m) => StreamPipeOptions -> Bool -> m ()
+setPreventAbort self val = liftDOM (void (self ^. jss "preventAbort" (toJSVal val)))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventabort StreamPipeOptions.preventAbort specification>
+getPreventAbort :: (MonadDOM m) => StreamPipeOptions -> m (Maybe Bool)
+getPreventAbort self = liftDOM (((self ^. js "preventAbort") >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventabort StreamPipeOptions.preventAbort specification>
+getPreventAbortUnsafe :: (MonadDOM m, HasCallStack) => StreamPipeOptions -> m Bool
+getPreventAbortUnsafe self = liftDOM ((((self ^. js "preventAbort") >>= 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 (((self ^. js "preventAbort") >>= valToBool))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventcancel StreamPipeOptions.preventCancel specification>
+setPreventCancel :: (MonadDOM m) => StreamPipeOptions -> Bool -> m ()
+setPreventCancel self val = liftDOM (void (self ^. jss "preventCancel" (toJSVal val)))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventcancel StreamPipeOptions.preventCancel specification>
+getPreventCancel :: (MonadDOM m) => StreamPipeOptions -> m (Maybe Bool)
+getPreventCancel self = liftDOM (((self ^. js "preventCancel") >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-preventcancel StreamPipeOptions.preventCancel specification>
+getPreventCancelUnsafe :: (MonadDOM m, HasCallStack) => StreamPipeOptions -> m Bool
+getPreventCancelUnsafe self = liftDOM ((((self ^. js "preventCancel") >>= 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 (((self ^. js "preventCancel") >>= valToBool))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-signal StreamPipeOptions.signal specification>
+setSignal :: (MonadDOM m, IsAbortSignal val) => StreamPipeOptions -> val -> m ()
+setSignal self val = liftDOM (void (self ^. jss "signal" (toJSVal val)))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-signal StreamPipeOptions.signal specification>
+getSignal :: (MonadDOM m) => StreamPipeOptions -> m (Maybe AbortSignal)
+getSignal self = liftDOM (((self ^. js "signal") >>= fromJSValUnchecked))
+
+-- | <https://streams.spec.whatwg.org/#dom-streampipeoptions-signal StreamPipeOptions.signal specification>
+getSignalUnsafe :: (MonadDOM m, HasCallStack) => StreamPipeOptions -> m AbortSignal
+getSignalUnsafe self = liftDOM ((((self ^. js "signal") >>= 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 (((self ^. js "signal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/StringCallback.hs b/src/JSDOM/Generated/StringCallback.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/StringCallback.hs
+++ /dev/null
@@ -1,54 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.StringCallback
-       (newStringCallback, newStringCallbackSync, newStringCallbackAsync,
-        StringCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StringCallback Mozilla StringCallback documentation> 
-newStringCallback ::
-                  (MonadDOM m, FromJSString data') =>
-                    (data' -> JSM ()) -> m (StringCallback data')
-newStringCallback callback
-  = liftDOM
-      (StringCallback . Callback <$>
-         function
-           (\ _ _ [data'] ->
-              fromJSValUnchecked data' >>= \ data'' -> callback data''))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StringCallback Mozilla StringCallback documentation> 
-newStringCallbackSync ::
-                      (MonadDOM m, FromJSString data') =>
-                        (data' -> JSM ()) -> m (StringCallback data')
-newStringCallbackSync callback
-  = liftDOM
-      (StringCallback . Callback <$>
-         function
-           (\ _ _ [data'] ->
-              fromJSValUnchecked data' >>= \ data'' -> callback data''))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StringCallback Mozilla StringCallback documentation> 
-newStringCallbackAsync ::
-                       (MonadDOM m, FromJSString data') =>
-                         (data' -> JSM ()) -> m (StringCallback data')
-newStringCallbackAsync callback
-  = liftDOM
-      (StringCallback . Callback <$>
-         asyncFunction
-           (\ _ _ [data'] ->
-              fromJSValUnchecked data' >>= \ data'' -> callback data''))
diff --git a/src/JSDOM/Generated/StructuredSerializeOptions.hs b/src/JSDOM/Generated/StructuredSerializeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/StructuredSerializeOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.StructuredSerializeOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/web-messaging.html#structuredserializeoptions StructuredSerializeOptions specification>
+newStructuredSerializeOptions :: (MonadDOM m) => m StructuredSerializeOptions
+newStructuredSerializeOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toStructuredSerializeOptions self) ^. jss "transfer" (toJSVal val)))
+
+-- | <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 ((((Types.toStructuredSerializeOptions self) ^. js "transfer") >>= 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 (((((Types.toStructuredSerializeOptions self) ^. js "transfer") >>= 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 ((((Types.toStructuredSerializeOptions self) ^. js "transfer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/StyleMedia.hs b/src/JSDOM/Generated/StyleMedia.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/StyleMedia.hs
+++ /dev/null
@@ -1,41 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.StyleMedia
-       (matchMedium, matchMedium_, getType, StyleMedia(..),
-        gTypeStyleMedia)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia.matchMedium Mozilla StyleMedia.matchMedium documentation> 
-matchMedium ::
-            (MonadDOM m, ToJSString mediaquery) =>
-              StyleMedia -> Maybe mediaquery -> m Bool
-matchMedium self mediaquery
-  = liftDOM
-      ((self ^. jsf "matchMedium" [toJSVal mediaquery]) >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia.matchMedium Mozilla StyleMedia.matchMedium documentation> 
-matchMedium_ ::
-             (MonadDOM m, ToJSString mediaquery) =>
-               StyleMedia -> Maybe mediaquery -> m ()
-matchMedium_ self mediaquery
-  = liftDOM (void (self ^. jsf "matchMedium" [toJSVal mediaquery]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia.type Mozilla StyleMedia.type documentation> 
-getType ::
-        (MonadDOM m, FromJSString result) => StyleMedia -> m result
-getType self = liftDOM ((self ^. js "type") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/StylePropertyMap.hs b/src/JSDOM/Generated/StylePropertyMap.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/StylePropertyMap.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.StylePropertyMap
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "append" ([toJSVal property] ++ P.map toJSVal values)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StylePropertyMap/clear MDN StylePropertyMap.clear documentation>
+clear :: (MonadDOM m) => StylePropertyMap -> m ()
+clear self = liftDOM (void (self ^. jsf "clear" ()))
+
+-- | <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 (self ^. jsf "delete" [toJSVal property]))
+
+-- | <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 (self ^. jsf "set" ([toJSVal property] ++ P.map toJSVal values)))
diff --git a/src/JSDOM/Generated/StylePropertyMapReadOnly.hs b/src/JSDOM/Generated/StylePropertyMapReadOnly.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/StylePropertyMapReadOnly.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-typed-om-1 (webref). Do not edit.
+module JSDOM.Generated.StylePropertyMapReadOnly
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toStylePropertyMapReadOnly self) ^. jsf "get" [toJSVal property]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toStylePropertyMapReadOnly self) ^. jsf "get" [toJSVal property]))
+
+-- | <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 ((((Types.toStylePropertyMapReadOnly self) ^. jsf "getAll" [toJSVal 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 ((Types.toStylePropertyMapReadOnly self) ^. jsf "getAll" [toJSVal property]))
+
+-- | <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 ((((Types.toStylePropertyMapReadOnly self) ^. jsf "has" [toJSVal property]) >>= valToBool))
+
+-- | <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 ((Types.toStylePropertyMapReadOnly self) ^. jsf "has" [toJSVal property]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StylePropertyMapReadOnly/size MDN StylePropertyMapReadOnly.size documentation>
+getSize :: (MonadDOM m, IsStylePropertyMapReadOnly self) => self -> m Word
+getSize self = liftDOM ((P.round <$> (((Types.toStylePropertyMapReadOnly self) ^. js "size") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/StyleSheet.hs b/src/JSDOM/Generated/StyleSheet.hs
--- a/src/JSDOM/Generated/StyleSheet.hs
+++ b/src/JSDOM/Generated/StyleSheet.hs
@@ -1,133 +1,80 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module JSDOM.Generated.StyleSheet
-       (getType, getTypeUnsafe, getTypeUnchecked, setDisabled,
-        getDisabled, getOwnerNode, getParentStyleSheet, getHref,
-        getHrefUnsafe, getHrefUnchecked, getTitle, getTitleUnsafe,
-        getTitleUnchecked, getMedia, StyleSheet(..), gTypeStyleSheet,
-        IsStyleSheet, toStyleSheet)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.type Mozilla StyleSheet.type documentation> 
-getType ::
-        (MonadDOM m, IsStyleSheet self, FromJSString result) =>
-          self -> m (Maybe result)
-getType self
-  = liftDOM
-      (((toStyleSheet self) ^. js "type") >>= fromMaybeJSString)
+-- | <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 ((((Types.toStyleSheet self) ^. js "type") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.type Mozilla StyleSheet.type documentation> 
-getTypeUnsafe ::
-              (MonadDOM m, IsStyleSheet self, HasCallStack,
-               FromJSString result) =>
-                self -> m result
-getTypeUnsafe self
-  = liftDOM
-      ((((toStyleSheet self) ^. js "type") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 ((((Types.toStyleSheet self) ^. js "href") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.type Mozilla StyleSheet.type documentation> 
-getTypeUnchecked ::
-                 (MonadDOM m, IsStyleSheet self, FromJSString result) =>
-                   self -> m result
-getTypeUnchecked self
-  = liftDOM
-      (((toStyleSheet self) ^. js "type") >>= fromJSValUnchecked)
+-- | <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 (((((Types.toStyleSheet self) ^. js "href") >>= fromMaybeJSString) >>= 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 ::
-            (MonadDOM m, IsStyleSheet self) => self -> Bool -> m ()
-setDisabled self val
-  = liftDOM ((toStyleSheet self) ^. jss "disabled" (toJSVal val))
+-- | <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 ((((Types.toStyleSheet self) ^. js "href") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.disabled Mozilla StyleSheet.disabled documentation> 
-getDisabled :: (MonadDOM m, IsStyleSheet self) => self -> m Bool
-getDisabled self
-  = liftDOM (((toStyleSheet self) ^. js "disabled") >>= valToBool)
+-- | <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 ((((Types.toStyleSheet self) ^. js "ownerNode") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.ownerNode Mozilla StyleSheet.ownerNode documentation> 
-getOwnerNode :: (MonadDOM m, IsStyleSheet self) => self -> m Node
-getOwnerNode self
-  = liftDOM
-      (((toStyleSheet self) ^. js "ownerNode") >>= fromJSValUnchecked)
+-- | <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 (((((Types.toStyleSheet self) ^. js "ownerNode") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.parentStyleSheet Mozilla StyleSheet.parentStyleSheet documentation> 
-getParentStyleSheet ::
-                    (MonadDOM m, IsStyleSheet self) => self -> m StyleSheet
-getParentStyleSheet self
-  = liftDOM
-      (((toStyleSheet self) ^. js "parentStyleSheet") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/ownerNode MDN StyleSheet.ownerNode documentation>
+getOwnerNodeUnchecked :: (MonadDOM m, IsStyleSheet self) => self -> m ElementOrProcessingInstruction
+getOwnerNodeUnchecked self = liftDOM ((((Types.toStyleSheet self) ^. js "ownerNode") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.href Mozilla StyleSheet.href documentation> 
-getHref ::
-        (MonadDOM m, IsStyleSheet self, FromJSString result) =>
-          self -> m (Maybe result)
-getHref self
-  = liftDOM
-      (((toStyleSheet self) ^. js "href") >>= fromMaybeJSString)
+-- | <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 ((((Types.toStyleSheet self) ^. js "parentStyleSheet") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.href Mozilla StyleSheet.href documentation> 
-getHrefUnsafe ::
-              (MonadDOM m, IsStyleSheet self, HasCallStack,
-               FromJSString result) =>
-                self -> m result
-getHrefUnsafe self
-  = liftDOM
-      ((((toStyleSheet self) ^. js "href") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((((Types.toStyleSheet self) ^. js "parentStyleSheet") >>= 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> 
-getHrefUnchecked ::
-                 (MonadDOM m, IsStyleSheet self, FromJSString result) =>
-                   self -> m result
-getHrefUnchecked self
-  = liftDOM
-      (((toStyleSheet self) ^. js "href") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/parentStyleSheet MDN StyleSheet.parentStyleSheet documentation>
+getParentStyleSheetUnchecked :: (MonadDOM m, IsStyleSheet self) => self -> m CSSStyleSheet
+getParentStyleSheetUnchecked self = liftDOM ((((Types.toStyleSheet self) ^. js "parentStyleSheet") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.title Mozilla StyleSheet.title documentation> 
-getTitle ::
-         (MonadDOM m, IsStyleSheet self, FromJSString result) =>
-           self -> m (Maybe result)
-getTitle self
-  = liftDOM
-      (((toStyleSheet self) ^. js "title") >>= fromMaybeJSString)
+-- | <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 ((((Types.toStyleSheet self) ^. js "title") >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.title Mozilla StyleSheet.title documentation> 
-getTitleUnsafe ::
-               (MonadDOM m, IsStyleSheet self, HasCallStack,
-                FromJSString result) =>
-                 self -> m result
-getTitleUnsafe self
-  = liftDOM
-      ((((toStyleSheet self) ^. js "title") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 (((((Types.toStyleSheet self) ^. js "title") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.title Mozilla StyleSheet.title documentation> 
-getTitleUnchecked ::
-                  (MonadDOM m, IsStyleSheet self, FromJSString result) =>
-                    self -> m result
-getTitleUnchecked self
-  = liftDOM
-      (((toStyleSheet self) ^. js "title") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toStyleSheet self) ^. js "title") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.media Mozilla StyleSheet.media documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/media MDN StyleSheet.media documentation>
 getMedia :: (MonadDOM m, IsStyleSheet self) => self -> m MediaList
-getMedia self
-  = liftDOM
-      (((toStyleSheet self) ^. js "media") >>= fromJSValUnchecked)
+getMedia self = liftDOM ((((Types.toStyleSheet self) ^. js "media") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toStyleSheet self) ^. jss "disabled" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheet/disabled MDN StyleSheet.disabled documentation>
+getDisabled :: (MonadDOM m, IsStyleSheet self) => self -> m Bool
+getDisabled self = liftDOM ((((Types.toStyleSheet self) ^. js "disabled") >>= valToBool))
diff --git a/src/JSDOM/Generated/StyleSheetList.hs b/src/JSDOM/Generated/StyleSheetList.hs
--- a/src/JSDOM/Generated/StyleSheetList.hs
+++ b/src/JSDOM/Generated/StyleSheetList.hs
@@ -1,64 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-1 (webref). Do not edit.
 module JSDOM.Generated.StyleSheetList
-       (item, item_, itemUnsafe, itemUnchecked, get, get_, getLength,
-        StyleSheetList(..), gTypeStyleSheetList)
+       (item, item_, itemUnsafe, itemUnchecked, getLength, StyleSheetList(..), gTypeStyleSheetList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
-item ::
-     (MonadDOM m) => StyleSheetList -> Word -> m (Maybe StyleSheet)
-item self index
-  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
+-- | <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 (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheetList/item MDN StyleSheetList.item documentation>
 item_ :: (MonadDOM m) => StyleSheetList -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
-itemUnsafe ::
-           (MonadDOM m, HasCallStack) =>
-             StyleSheetList -> Word -> m StyleSheet
-itemUnsafe self index
-  = liftDOM
-      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
-itemUnchecked ::
-              (MonadDOM m) => StyleSheetList -> Word -> m StyleSheet
-itemUnchecked self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+item_ self index = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.get Mozilla StyleSheetList.get documentation> 
-get ::
-    (MonadDOM m, ToJSString name) =>
-      StyleSheetList -> name -> m CSSStyleSheet
-get self name = liftDOM ((self ! name) >>= fromJSValUnchecked)
+-- | <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 ((((self ^. jsf "item" [toJSVal 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_ ::
-     (MonadDOM m, ToJSString name) => StyleSheetList -> name -> m ()
-get_ self name = liftDOM (void (self ! name))
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheetList/item MDN StyleSheetList.item documentation>
+itemUnchecked :: (MonadDOM m) => StyleSheetList -> Word -> m CSSStyleSheet
+itemUnchecked self index = liftDOM (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.length Mozilla StyleSheetList.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/StyleSheetList/length MDN StyleSheetList.length documentation>
 getLength :: (MonadDOM m) => StyleSheetList -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/SubmitEvent.hs b/src/JSDOM/Generated/SubmitEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SubmitEvent.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.SubmitEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "SubmitEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SubmitEvent/submitter MDN SubmitEvent.submitter documentation>
+getSubmitter :: (MonadDOM m) => SubmitEvent -> m (Maybe HTMLElement)
+getSubmitter self = liftDOM (((self ^. js "submitter") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/SubmitEvent/submitter MDN SubmitEvent.submitter documentation>
+getSubmitterUnsafe :: (MonadDOM m, HasCallStack) => SubmitEvent -> m HTMLElement
+getSubmitterUnsafe self = liftDOM ((((self ^. js "submitter") >>= 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 (((self ^. js "submitter") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SubmitEventInit.hs b/src/JSDOM/Generated/SubmitEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SubmitEventInit.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.SubmitEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#submiteventinit SubmitEventInit specification>
+newSubmitEventInit :: (MonadDOM m) => m SubmitEventInit
+newSubmitEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+setSubmitter :: (MonadDOM m, IsHTMLElement val) => SubmitEventInit -> Maybe val -> m ()
+setSubmitter self val = liftDOM (void (self ^. jss "submitter" (toJSVal val)))
+
+getSubmitter :: (MonadDOM m) => SubmitEventInit -> m (Maybe HTMLElement)
+getSubmitter self = liftDOM (((self ^. js "submitter") >>= fromJSValUnchecked))
+
+getSubmitterUnsafe :: (MonadDOM m, HasCallStack) => SubmitEventInit -> m HTMLElement
+getSubmitterUnsafe self = liftDOM ((((self ^. js "submitter") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getSubmitterUnchecked :: (MonadDOM m) => SubmitEventInit -> m HTMLElement
+getSubmitterUnchecked self = liftDOM (((self ^. js "submitter") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/SubtleCrypto.hs b/src/JSDOM/Generated/SubtleCrypto.hs
--- a/src/JSDOM/Generated/SubtleCrypto.hs
+++ b/src/JSDOM/Generated/SubtleCrypto.hs
@@ -1,314 +1,112 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcrypto-2 (webref). Do not edit.
 module JSDOM.Generated.SubtleCrypto
-       (encrypt, encrypt_, decrypt, decrypt_, sign, sign_, verify,
-        verify_, digest, digest_, deriveKey, deriveKey_, deriveBits,
-        deriveBits_, generateKey, generateKey_, importKey, importKey_,
-        exportKey, exportKey_, wrapKey, wrapKey_, unwrapKey, unwrapKey_,
-        SubtleCrypto(..), gTypeSubtleCrypto)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
-encrypt ::
-        (MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
-          SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
-encrypt self algorithm key data'
-  = liftDOM
-      (((self ^. jsf "encrypt"
-           [toJSVal algorithm, toJSVal key, toJSVal data'])
-          >>= readPromise)
-         >>= toJSVal)
+-- | <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 (((((self ^. jsf "decrypt" [toJSVal algorithm, toJSVal key, toJSVal data']) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
-encrypt_ ::
-         (MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
-           SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
-encrypt_ self algorithm key data'
-  = liftDOM
-      (void
-         (self ^. jsf "encrypt"
-            [toJSVal algorithm, toJSVal key, toJSVal data']))
+-- | <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 (((self ^. jsf "decrypt" [toJSVal algorithm, toJSVal key, toJSVal data']) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
-decrypt ::
-        (MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
-          SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
-decrypt self algorithm key data'
-  = liftDOM
-      (((self ^. jsf "decrypt"
-           [toJSVal algorithm, toJSVal key, toJSVal data'])
-          >>= readPromise)
-         >>= toJSVal)
+-- | <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 (((((self ^. jsf "deriveBits" [toJSVal algorithm, toJSVal baseKey, toJSVal length]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
-decrypt_ ::
-         (MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
-           SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
-decrypt_ self algorithm key data'
-  = liftDOM
-      (void
-         (self ^. jsf "decrypt"
-            [toJSVal algorithm, toJSVal key, toJSVal data']))
+-- | <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 (((self ^. jsf "deriveBits" [toJSVal algorithm, toJSVal baseKey, toJSVal length]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
-sign ::
-     (MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
-       SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
-sign self algorithm key data'
-  = liftDOM
-      (((self ^. jsf "sign"
-           [toJSVal algorithm, toJSVal key, toJSVal data'])
-          >>= readPromise)
-         >>= toJSVal)
+-- | <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 (((((self ^. jsf "deriveKey" [toJSVal algorithm, toJSVal baseKey, toJSVal derivedKeyType, toJSVal extractable, toJSVal keyUsages]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
-sign_ ::
-      (MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
-        SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
-sign_ self algorithm key data'
-  = liftDOM
-      (void
-         (self ^. jsf "sign"
-            [toJSVal algorithm, toJSVal key, toJSVal data']))
+-- | <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 (((self ^. jsf "deriveKey" [toJSVal algorithm, toJSVal baseKey, toJSVal derivedKeyType, toJSVal extractable, toJSVal keyUsages]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
-verify ::
-       (MonadDOM m, ToJSString algorithm, IsBufferSource signature,
-        IsBufferSource data') =>
-         SubtleCrypto ->
-           algorithm -> CryptoKey -> signature -> data' -> m JSVal
-verify self algorithm key signature data'
-  = liftDOM
-      (((self ^. jsf "verify"
-           [toJSVal algorithm, toJSVal key, toJSVal signature, toJSVal data'])
-          >>= readPromise)
-         >>= toJSVal)
+-- | <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 (((((self ^. jsf "digest" [toJSVal algorithm, toJSVal data']) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
-verify_ ::
-        (MonadDOM m, ToJSString algorithm, IsBufferSource signature,
-         IsBufferSource data') =>
-          SubtleCrypto ->
-            algorithm -> CryptoKey -> signature -> data' -> m ()
-verify_ self algorithm key signature data'
-  = liftDOM
-      (void
-         (self ^. jsf "verify"
-            [toJSVal algorithm, toJSVal key, toJSVal signature,
-             toJSVal data']))
+-- | <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 (((self ^. jsf "digest" [toJSVal algorithm, toJSVal data']) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
-digest ::
-       (MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
-         SubtleCrypto -> algorithm -> data' -> m JSVal
-digest self algorithm data'
-  = liftDOM
-      (((self ^. jsf "digest" [toJSVal algorithm, toJSVal data']) >>=
-          readPromise)
-         >>= toJSVal)
+-- | <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 (((((self ^. jsf "encrypt" [toJSVal algorithm, toJSVal key, toJSVal data']) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
-digest_ ::
-        (MonadDOM m, ToJSString algorithm, IsBufferSource data') =>
-          SubtleCrypto -> algorithm -> data' -> m ()
-digest_ self algorithm data'
-  = liftDOM
-      (void (self ^. jsf "digest" [toJSVal algorithm, toJSVal data']))
+-- | <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 (((self ^. jsf "encrypt" [toJSVal algorithm, toJSVal key, toJSVal data']) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.deriveKey Mozilla WebKitSubtleCrypto.deriveKey documentation> 
-deriveKey ::
-          (MonadDOM m, ToJSString algorithm, ToJSString derivedKeyType) =>
-            SubtleCrypto ->
-              algorithm ->
-                CryptoKey -> derivedKeyType -> Bool -> [CryptoKeyUsage] -> m JSVal
-deriveKey self algorithm baseKey derivedKeyType extractable
-  keyUsages
-  = liftDOM
-      (((self ^. jsf "deriveKey"
-           [toJSVal algorithm, toJSVal baseKey, toJSVal derivedKeyType,
-            toJSVal extractable, toJSVal (array keyUsages)])
-          >>= readPromise)
-         >>= toJSVal)
+-- | <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 (((((self ^. jsf "exportKey" [toJSVal format, toJSVal key]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.deriveKey Mozilla WebKitSubtleCrypto.deriveKey documentation> 
-deriveKey_ ::
-           (MonadDOM m, ToJSString algorithm, ToJSString derivedKeyType) =>
-             SubtleCrypto ->
-               algorithm ->
-                 CryptoKey -> derivedKeyType -> Bool -> [CryptoKeyUsage] -> m ()
-deriveKey_ self algorithm baseKey derivedKeyType extractable
-  keyUsages
-  = liftDOM
-      (void
-         (self ^. jsf "deriveKey"
-            [toJSVal algorithm, toJSVal baseKey, toJSVal derivedKeyType,
-             toJSVal extractable, toJSVal (array keyUsages)]))
+-- | <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 (((self ^. jsf "exportKey" [toJSVal format, toJSVal key]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.deriveBits Mozilla WebKitSubtleCrypto.deriveBits documentation> 
-deriveBits ::
-           (MonadDOM m, ToJSString algorithm) =>
-             SubtleCrypto -> algorithm -> CryptoKey -> Word -> m ArrayBuffer
-deriveBits self algorithm baseKey length
-  = liftDOM
-      (((self ^. jsf "deriveBits"
-           [toJSVal algorithm, toJSVal baseKey, toJSVal length])
-          >>= readPromise)
-         >>= fromJSValUnchecked)
+-- | <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 (((((self ^. jsf "generateKey" [toJSVal algorithm, toJSVal extractable, toJSVal keyUsages]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.deriveBits Mozilla WebKitSubtleCrypto.deriveBits documentation> 
-deriveBits_ ::
-            (MonadDOM m, ToJSString algorithm) =>
-              SubtleCrypto -> algorithm -> CryptoKey -> Word -> m ()
-deriveBits_ self algorithm baseKey length
-  = liftDOM
-      (void
-         (self ^. jsf "deriveBits"
-            [toJSVal algorithm, toJSVal baseKey, toJSVal length]))
+-- | <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 (((self ^. jsf "generateKey" [toJSVal algorithm, toJSVal extractable, toJSVal keyUsages]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
-generateKey ::
-            (MonadDOM m, ToJSString algorithm) =>
-              SubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m JSVal
-generateKey self algorithm extractable keyUsages
-  = liftDOM
-      (((self ^. jsf "generateKey"
-           [toJSVal algorithm, toJSVal extractable,
-            toJSVal (array keyUsages)])
-          >>= readPromise)
-         >>= toJSVal)
+-- | <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 (((((self ^. jsf "importKey" [toJSVal format, toJSVal keyData, toJSVal algorithm, toJSVal extractable, toJSVal keyUsages]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
-generateKey_ ::
-             (MonadDOM m, ToJSString algorithm) =>
-               SubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m ()
-generateKey_ self algorithm extractable keyUsages
-  = liftDOM
-      (void
-         (self ^. jsf "generateKey"
-            [toJSVal algorithm, toJSVal extractable,
-             toJSVal (array keyUsages)]))
+-- | <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 (((self ^. jsf "importKey" [toJSVal format, toJSVal keyData, toJSVal algorithm, toJSVal extractable, toJSVal keyUsages]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
-importKey ::
-          (MonadDOM m, ToJSString format, IsKeyData keyData,
-           ToJSString algorithm) =>
-            SubtleCrypto ->
-              format ->
-                keyData -> algorithm -> Bool -> [CryptoKeyUsage] -> m CryptoKey
-importKey self format keyData algorithm extractable keyUsages
-  = liftDOM
-      (((self ^. jsf "importKey"
-           [toJSVal format, toJSVal keyData, toJSVal algorithm,
-            toJSVal extractable, toJSVal (array keyUsages)])
-          >>= readPromise)
-         >>= fromJSValUnchecked)
+-- | <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 (((((self ^. jsf "sign" [toJSVal algorithm, toJSVal key, toJSVal data']) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
-importKey_ ::
-           (MonadDOM m, ToJSString format, IsKeyData keyData,
-            ToJSString algorithm) =>
-             SubtleCrypto ->
-               format -> keyData -> algorithm -> Bool -> [CryptoKeyUsage] -> m ()
-importKey_ self format keyData algorithm extractable keyUsages
-  = liftDOM
-      (void
-         (self ^. jsf "importKey"
-            [toJSVal format, toJSVal keyData, toJSVal algorithm,
-             toJSVal extractable, toJSVal (array keyUsages)]))
+-- | <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 (((self ^. jsf "sign" [toJSVal algorithm, toJSVal key, toJSVal data']) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
-exportKey ::
-          (MonadDOM m, ToJSString format) =>
-            SubtleCrypto -> format -> CryptoKey -> m JSVal
-exportKey self format key
-  = liftDOM
-      (((self ^. jsf "exportKey" [toJSVal format, toJSVal key]) >>=
-          readPromise)
-         >>= toJSVal)
+-- | <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 (((((self ^. jsf "unwrapKey" [toJSVal format, toJSVal wrappedKey, toJSVal unwrappingKey, toJSVal unwrapAlgorithm, toJSVal unwrappedKeyAlgorithm, toJSVal extractable, toJSVal keyUsages]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
-exportKey_ ::
-           (MonadDOM m, ToJSString format) =>
-             SubtleCrypto -> format -> CryptoKey -> m ()
-exportKey_ self format key
-  = liftDOM
-      (void (self ^. jsf "exportKey" [toJSVal format, toJSVal key]))
+-- | <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 (((self ^. jsf "unwrapKey" [toJSVal format, toJSVal wrappedKey, toJSVal unwrappingKey, toJSVal unwrapAlgorithm, toJSVal unwrappedKeyAlgorithm, toJSVal extractable, toJSVal keyUsages]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
-wrapKey ::
-        (MonadDOM m, ToJSString format, ToJSString wrapAlgorithm) =>
-          SubtleCrypto ->
-            format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m JSVal
-wrapKey self format key wrappingKey wrapAlgorithm
-  = liftDOM
-      (((self ^. jsf "wrapKey"
-           [toJSVal format, toJSVal key, toJSVal wrappingKey,
-            toJSVal wrapAlgorithm])
-          >>= readPromise)
-         >>= toJSVal)
+-- | <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 (((((self ^. jsf "verify" [toJSVal algorithm, toJSVal key, toJSVal signature, toJSVal data']) >>= readPromise)) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
-wrapKey_ ::
-         (MonadDOM m, ToJSString format, ToJSString wrapAlgorithm) =>
-           SubtleCrypto ->
-             format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ()
-wrapKey_ self format key wrappingKey wrapAlgorithm
-  = liftDOM
-      (void
-         (self ^. jsf "wrapKey"
-            [toJSVal format, toJSVal key, toJSVal wrappingKey,
-             toJSVal wrapAlgorithm]))
+-- | <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 (((self ^. jsf "verify" [toJSVal algorithm, toJSVal key, toJSVal signature, toJSVal data']) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.unwrapKey Mozilla WebKitSubtleCrypto.unwrapKey documentation> 
-unwrapKey ::
-          (MonadDOM 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
-  = liftDOM
-      (((self ^. jsf "unwrapKey"
-           [toJSVal format, toJSVal wrappedKey, toJSVal unwrappingKey,
-            toJSVal unwrapAlgorithm, toJSVal unwrappedKeyAlgorithm,
-            toJSVal extractable, toJSVal (array keyUsages)])
-          >>= readPromise)
-         >>= fromJSValUnchecked)
+-- | <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 (((((self ^. jsf "wrapKey" [toJSVal format, toJSVal key, toJSVal wrappingKey, toJSVal wrapAlgorithm]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.unwrapKey Mozilla WebKitSubtleCrypto.unwrapKey documentation> 
-unwrapKey_ ::
-           (MonadDOM 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
-  = liftDOM
-      (void
-         (self ^. jsf "unwrapKey"
-            [toJSVal format, toJSVal wrappedKey, toJSVal unwrappingKey,
-             toJSVal unwrapAlgorithm, toJSVal unwrappedKeyAlgorithm,
-             toJSVal extractable, toJSVal (array 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 (((self ^. jsf "wrapKey" [toJSVal format, toJSVal key, toJSVal wrappingKey, toJSVal wrapAlgorithm]) >>= readPromise)))
diff --git a/src/JSDOM/Generated/SvcOutputMetadata.hs b/src/JSDOM/Generated/SvcOutputMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/SvcOutputMetadata.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.SvcOutputMetadata
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-svcoutputmetadata SvcOutputMetadata specification>
+newSvcOutputMetadata :: (MonadDOM m) => m SvcOutputMetadata
+newSvcOutputMetadata = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-svcoutputmetadata-temporallayerid SvcOutputMetadata.temporalLayerId specification>
+setTemporalLayerId :: (MonadDOM m) => SvcOutputMetadata -> Word -> m ()
+setTemporalLayerId self val = liftDOM (void (self ^. jss "temporalLayerId" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-svcoutputmetadata-temporallayerid SvcOutputMetadata.temporalLayerId specification>
+getTemporalLayerId :: (MonadDOM m) => SvcOutputMetadata -> m (Maybe Word)
+getTemporalLayerId self = liftDOM (((self ^. js "temporalLayerId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-svcoutputmetadata-temporallayerid SvcOutputMetadata.temporalLayerId specification>
+getTemporalLayerIdUnsafe :: (MonadDOM m, HasCallStack) => SvcOutputMetadata -> m Word
+getTemporalLayerIdUnsafe self = liftDOM ((((self ^. js "temporalLayerId") >>= 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 ((P.round <$> ((self ^. js "temporalLayerId") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/TaskController.hs b/src/JSDOM/Generated/TaskController.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TaskController.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module JSDOM.Generated.TaskController
+       (newTaskController, setPriority, TaskController(..), gTypeTaskController)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/TaskController/TaskController MDN TaskController. documentation>
+newTaskController :: (MonadDOM m) => Maybe TaskControllerInit -> m TaskController
+newTaskController init = liftDOM (((new (jsg "TaskController") [P.maybe (P.return jsUndefined) toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TaskController/setPriority MDN TaskController.setPriority documentation>
+setPriority :: (MonadDOM m) => TaskController -> TaskPriority -> m ()
+setPriority self priority = liftDOM (void (self ^. jsf "setPriority" [toJSVal priority]))
diff --git a/src/JSDOM/Generated/TaskControllerInit.hs b/src/JSDOM/Generated/TaskControllerInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TaskControllerInit.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module JSDOM.Generated.TaskControllerInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://wicg.github.io/scheduling-apis/#dictdef-taskcontrollerinit TaskControllerInit specification>
+newTaskControllerInit :: (MonadDOM m) => m TaskControllerInit
+newTaskControllerInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-taskcontrollerinit-priority TaskControllerInit.priority specification>
+setPriority :: (MonadDOM m) => TaskControllerInit -> TaskPriority -> m ()
+setPriority self val = liftDOM (void (self ^. jss "priority" (toJSVal val)))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-taskcontrollerinit-priority TaskControllerInit.priority specification>
+getPriority :: (MonadDOM m) => TaskControllerInit -> m (Maybe TaskPriority)
+getPriority self = liftDOM (((self ^. js "priority") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-taskcontrollerinit-priority TaskControllerInit.priority specification>
+getPriorityUnsafe :: (MonadDOM m, HasCallStack) => TaskControllerInit -> m TaskPriority
+getPriorityUnsafe self = liftDOM ((((self ^. js "priority") >>= 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 (((self ^. js "priority") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TaskPriorityChangeEvent.hs b/src/JSDOM/Generated/TaskPriorityChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TaskPriorityChangeEvent.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module JSDOM.Generated.TaskPriorityChangeEvent
+       (newTaskPriorityChangeEvent, getPreviousPriority, TaskPriorityChangeEvent(..), gTypeTaskPriorityChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "TaskPriorityChangeEvent") [toJSVal type', toJSVal priorityChangeEventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TaskPriorityChangeEvent/previousPriority MDN TaskPriorityChangeEvent.previousPriority documentation>
+getPreviousPriority :: (MonadDOM m) => TaskPriorityChangeEvent -> m TaskPriority
+getPreviousPriority self = liftDOM (((self ^. js "previousPriority") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TaskPriorityChangeEventInit.hs b/src/JSDOM/Generated/TaskPriorityChangeEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TaskPriorityChangeEventInit.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module JSDOM.Generated.TaskPriorityChangeEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://wicg.github.io/scheduling-apis/#dictdef-taskprioritychangeeventinit TaskPriorityChangeEventInit specification>
+newTaskPriorityChangeEventInit :: (MonadDOM m) => TaskPriority -> m TaskPriorityChangeEventInit
+newTaskPriorityChangeEventInit previousPriority = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "previousPriority" (toJSVal previousPriority)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-taskprioritychangeeventinit-previouspriority TaskPriorityChangeEventInit.previousPriority specification>
+setPreviousPriority :: (MonadDOM m) => TaskPriorityChangeEventInit -> TaskPriority -> m ()
+setPreviousPriority self val = liftDOM (void (self ^. jss "previousPriority" (toJSVal val)))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-taskprioritychangeeventinit-previouspriority TaskPriorityChangeEventInit.previousPriority specification>
+getPreviousPriority :: (MonadDOM m) => TaskPriorityChangeEventInit -> m TaskPriority
+getPreviousPriority self = liftDOM (((self ^. js "previousPriority") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TaskSignal.hs b/src/JSDOM/Generated/TaskSignal.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TaskSignal.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module JSDOM.Generated.TaskSignal
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((jsg "TaskSignal") ^. jsf "any" [toJSVal signals, P.maybe (P.return jsUndefined) toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <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 ((jsg "TaskSignal") ^. jsf "any" [toJSVal signals, P.maybe (P.return jsUndefined) toJSVal init]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TaskSignal/priority MDN TaskSignal.priority documentation>
+getPriority :: (MonadDOM m) => TaskSignal -> m TaskPriority
+getPriority self = liftDOM (((self ^. js "priority") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-tasksignal-onprioritychange prioritychange event>
+prioritychange :: EventName TaskSignal TaskPriorityChangeEvent
+prioritychange = unsafeEventName (toJSString "prioritychange")
diff --git a/src/JSDOM/Generated/TaskSignalAnyInit.hs b/src/JSDOM/Generated/TaskSignalAnyInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TaskSignalAnyInit.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scheduling-apis (webref). Do not edit.
+module JSDOM.Generated.TaskSignalAnyInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://wicg.github.io/scheduling-apis/#dictdef-tasksignalanyinit TaskSignalAnyInit specification>
+newTaskSignalAnyInit :: (MonadDOM m) => m TaskSignalAnyInit
+newTaskSignalAnyInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "priority" (toJSVal val)))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-tasksignalanyinit-priority TaskSignalAnyInit.priority specification>
+getPriority :: (MonadDOM m) => TaskSignalAnyInit -> m (Maybe TaskPriorityOrTaskSignal)
+getPriority self = liftDOM (((self ^. js "priority") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/scheduling-apis/#dom-tasksignalanyinit-priority TaskSignalAnyInit.priority specification>
+getPriorityUnsafe :: (MonadDOM m, HasCallStack) => TaskSignalAnyInit -> m TaskPriorityOrTaskSignal
+getPriorityUnsafe self = liftDOM ((((self ^. js "priority") >>= 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 (((self ^. js "priority") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Text.hs b/src/JSDOM/Generated/Text.hs
--- a/src/JSDOM/Generated/Text.hs
+++ b/src/JSDOM/Generated/Text.hs
@@ -1,45 +1,48 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.Text
-       (newText, splitText, splitText_, getWholeText, Text(..), gTypeText,
-        IsText, toText)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Text Mozilla Text documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/Text/Text MDN Text. documentation>
 newText :: (MonadDOM m, ToJSString data') => Maybe data' -> m Text
-newText data' = liftDOM (Text <$> new (jsg "Text") [toJSVal data'])
+newText data' = liftDOM (((new (jsg "Text") [P.maybe (P.return jsUndefined) toJSVal data']) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.splitText Mozilla Text.splitText documentation> 
+-- | <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
-      (((toText self) ^. jsf "splitText" [toJSVal offset]) >>=
-         fromJSValUnchecked)
+splitText self offset = liftDOM ((((Types.toText self) ^. jsf "splitText" [toJSVal offset]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.splitText Mozilla Text.splitText documentation> 
+-- | <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 ((toText self) ^. jsf "splitText" [toJSVal offset]))
+splitText_ self offset = liftDOM (void ((Types.toText self) ^. jsf "splitText" [toJSVal offset]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.wholeText Mozilla Text.wholeText documentation> 
-getWholeText ::
-             (MonadDOM m, IsText self, FromJSString result) => self -> m result
-getWholeText self
-  = liftDOM
-      (((toText self) ^. js "wholeText") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toText self) ^. js "wholeText") >>= fromJSValUnchecked))
+
+-- | <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/JSDOM/Generated/TextDecodeOptions.hs b/src/JSDOM/Generated/TextDecodeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TextDecodeOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
+module JSDOM.Generated.TextDecodeOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://encoding.spec.whatwg.org/#textdecodeoptions TextDecodeOptions specification>
+newTextDecodeOptions :: (MonadDOM m) => m TextDecodeOptions
+newTextDecodeOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textdecodeoptions-stream TextDecodeOptions.stream specification>
+setStream :: (MonadDOM m) => TextDecodeOptions -> Bool -> m ()
+setStream self val = liftDOM (void (self ^. jss "stream" (toJSVal val)))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textdecodeoptions-stream TextDecodeOptions.stream specification>
+getStream :: (MonadDOM m) => TextDecodeOptions -> m (Maybe Bool)
+getStream self = liftDOM (((self ^. js "stream") >>= fromJSValUnchecked))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textdecodeoptions-stream TextDecodeOptions.stream specification>
+getStreamUnsafe :: (MonadDOM m, HasCallStack) => TextDecodeOptions -> m Bool
+getStreamUnsafe self = liftDOM ((((self ^. js "stream") >>= 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 (((self ^. js "stream") >>= valToBool))
diff --git a/src/JSDOM/Generated/TextDecoder.hs b/src/JSDOM/Generated/TextDecoder.hs
--- a/src/JSDOM/Generated/TextDecoder.hs
+++ b/src/JSDOM/Generated/TextDecoder.hs
@@ -1,62 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
 module JSDOM.Generated.TextDecoder
-       (newTextDecoder, decode, decode_, getEncoding, getFatal,
-        getIgnoreBOM, TextDecoder(..), gTypeTextDecoder)
+       (newTextDecoder, decode, decode_, TextDecoder(..), gTypeTextDecoder)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder Mozilla TextDecoder documentation> 
-newTextDecoder ::
-               (MonadDOM m, ToJSString label) =>
-                 Maybe label -> Maybe TextDecoderOptions -> m TextDecoder
-newTextDecoder label options
-  = liftDOM
-      (TextDecoder <$>
-         new (jsg "TextDecoder") [toJSVal label, toJSVal options])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder.decode Mozilla TextDecoder.decode documentation> 
-decode ::
-       (MonadDOM m, IsBufferSource input, FromJSString result) =>
-         TextDecoder -> Maybe input -> Maybe TextDecodeOptions -> m result
-decode self input options
-  = liftDOM
-      ((self ^. jsf "decode" [toJSVal input, toJSVal options]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder.decode Mozilla TextDecoder.decode documentation> 
-decode_ ::
-        (MonadDOM m, IsBufferSource input) =>
-          TextDecoder -> Maybe input -> Maybe TextDecodeOptions -> m ()
-decode_ self input options
-  = liftDOM
-      (void (self ^. jsf "decode" [toJSVal input, toJSVal options]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder.encoding Mozilla TextDecoder.encoding documentation> 
-getEncoding ::
-            (MonadDOM m, FromJSString result) => TextDecoder -> m result
-getEncoding self
-  = liftDOM ((self ^. js "encoding") >>= fromJSValUnchecked)
+-- | <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 (((new (jsg "TextDecoder") [P.maybe (P.return jsUndefined) toJSVal label, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder.fatal Mozilla TextDecoder.fatal documentation> 
-getFatal :: (MonadDOM m) => TextDecoder -> m Bool
-getFatal self = liftDOM ((self ^. js "fatal") >>= valToBool)
+-- | <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 (((self ^. jsf "decode" [P.maybe (P.return jsUndefined) toJSVal input, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder.ignoreBOM Mozilla TextDecoder.ignoreBOM documentation> 
-getIgnoreBOM :: (MonadDOM m) => TextDecoder -> m Bool
-getIgnoreBOM self
-  = liftDOM ((self ^. js "ignoreBOM") >>= valToBool)
+-- | <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 (self ^. jsf "decode" [P.maybe (P.return jsUndefined) toJSVal input, P.maybe (P.return jsUndefined) toJSVal options]))
diff --git a/src/JSDOM/Generated/TextDecoderCommon.hs b/src/JSDOM/Generated/TextDecoderCommon.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TextDecoderCommon.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
+module JSDOM.Generated.TextDecoderCommon
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toTextDecoderCommon self) ^. js "encoding") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TextDecoder/fatal MDN TextDecoderCommon.fatal documentation>
+getFatal :: (MonadDOM m, IsTextDecoderCommon self) => self -> m Bool
+getFatal self = liftDOM ((((Types.toTextDecoderCommon self) ^. js "fatal") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TextDecoder/ignoreBOM MDN TextDecoderCommon.ignoreBOM documentation>
+getIgnoreBOM :: (MonadDOM m, IsTextDecoderCommon self) => self -> m Bool
+getIgnoreBOM self = liftDOM ((((Types.toTextDecoderCommon self) ^. js "ignoreBOM") >>= valToBool))
diff --git a/src/JSDOM/Generated/TextDecoderOptions.hs b/src/JSDOM/Generated/TextDecoderOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TextDecoderOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
+module JSDOM.Generated.TextDecoderOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://encoding.spec.whatwg.org/#textdecoderoptions TextDecoderOptions specification>
+newTextDecoderOptions :: (MonadDOM m) => m TextDecoderOptions
+newTextDecoderOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textdecoderoptions-fatal TextDecoderOptions.fatal specification>
+setFatal :: (MonadDOM m) => TextDecoderOptions -> Bool -> m ()
+setFatal self val = liftDOM (void (self ^. jss "fatal" (toJSVal val)))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textdecoderoptions-fatal TextDecoderOptions.fatal specification>
+getFatal :: (MonadDOM m) => TextDecoderOptions -> m (Maybe Bool)
+getFatal self = liftDOM (((self ^. js "fatal") >>= fromJSValUnchecked))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textdecoderoptions-fatal TextDecoderOptions.fatal specification>
+getFatalUnsafe :: (MonadDOM m, HasCallStack) => TextDecoderOptions -> m Bool
+getFatalUnsafe self = liftDOM ((((self ^. js "fatal") >>= 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 (((self ^. js "fatal") >>= valToBool))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textdecoderoptions-ignorebom TextDecoderOptions.ignoreBOM specification>
+setIgnoreBOM :: (MonadDOM m) => TextDecoderOptions -> Bool -> m ()
+setIgnoreBOM self val = liftDOM (void (self ^. jss "ignoreBOM" (toJSVal val)))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textdecoderoptions-ignorebom TextDecoderOptions.ignoreBOM specification>
+getIgnoreBOM :: (MonadDOM m) => TextDecoderOptions -> m (Maybe Bool)
+getIgnoreBOM self = liftDOM (((self ^. js "ignoreBOM") >>= fromJSValUnchecked))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textdecoderoptions-ignorebom TextDecoderOptions.ignoreBOM specification>
+getIgnoreBOMUnsafe :: (MonadDOM m, HasCallStack) => TextDecoderOptions -> m Bool
+getIgnoreBOMUnsafe self = liftDOM ((((self ^. js "ignoreBOM") >>= 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 (((self ^. js "ignoreBOM") >>= valToBool))
diff --git a/src/JSDOM/Generated/TextDecoderStream.hs b/src/JSDOM/Generated/TextDecoderStream.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TextDecoderStream.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
+module JSDOM.Generated.TextDecoderStream
+       (newTextDecoderStream, TextDecoderStream(..), gTypeTextDecoderStream)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "TextDecoderStream") [P.maybe (P.return jsUndefined) toJSVal label, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TextEncoder.hs b/src/JSDOM/Generated/TextEncoder.hs
--- a/src/JSDOM/Generated/TextEncoder.hs
+++ b/src/JSDOM/Generated/TextEncoder.hs
@@ -1,47 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
 module JSDOM.Generated.TextEncoder
-       (newTextEncoder, encode, encode_, getEncoding, TextEncoder(..),
-        gTypeTextEncoder)
+       (newTextEncoder, encode, encode_, encodeInto, encodeInto_, TextEncoder(..), gTypeTextEncoder)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder Mozilla TextEncoder documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TextEncoder/TextEncoder MDN TextEncoder. documentation>
 newTextEncoder :: (MonadDOM m) => m TextEncoder
-newTextEncoder
-  = liftDOM (TextEncoder <$> new (jsg "TextEncoder") ())
+newTextEncoder = liftDOM (((new (jsg "TextEncoder") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder.encode Mozilla TextEncoder.encode documentation> 
-encode ::
-       (MonadDOM m, ToJSString input) =>
-         TextEncoder -> Maybe input -> m Uint8Array
-encode self input
-  = liftDOM
-      ((self ^. jsf "encode" [toJSVal input]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "encode" [P.maybe (P.return jsUndefined) toJSVal input]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder.encode Mozilla TextEncoder.encode documentation> 
-encode_ ::
-        (MonadDOM m, ToJSString input) =>
-          TextEncoder -> Maybe input -> m ()
-encode_ self input
-  = liftDOM (void (self ^. jsf "encode" [toJSVal 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 (self ^. jsf "encode" [P.maybe (P.return jsUndefined) toJSVal input]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder.encoding Mozilla TextEncoder.encoding documentation> 
-getEncoding ::
-            (MonadDOM m, FromJSString result) => TextEncoder -> m result
-getEncoding self
-  = liftDOM ((self ^. js "encoding") >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "encodeInto" [toJSVal source, toJSVal destination]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "encodeInto" [toJSVal source, toJSVal destination]))
diff --git a/src/JSDOM/Generated/TextEncoderCommon.hs b/src/JSDOM/Generated/TextEncoderCommon.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TextEncoderCommon.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
+module JSDOM.Generated.TextEncoderCommon
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toTextEncoderCommon self) ^. js "encoding") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TextEncoderEncodeIntoResult.hs b/src/JSDOM/Generated/TextEncoderEncodeIntoResult.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TextEncoderEncodeIntoResult.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
+module JSDOM.Generated.TextEncoderEncodeIntoResult
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://encoding.spec.whatwg.org/#dictdef-textencoderencodeintoresult TextEncoderEncodeIntoResult specification>
+newTextEncoderEncodeIntoResult :: (MonadDOM m) => m TextEncoderEncodeIntoResult
+newTextEncoderEncodeIntoResult = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textencoderencodeintoresult-read TextEncoderEncodeIntoResult.read specification>
+setRead :: (MonadDOM m) => TextEncoderEncodeIntoResult -> Word53 -> m ()
+setRead self val = liftDOM (void (self ^. jss "read" (toJSVal val)))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textencoderencodeintoresult-read TextEncoderEncodeIntoResult.read specification>
+getRead :: (MonadDOM m) => TextEncoderEncodeIntoResult -> m (Maybe Word53)
+getRead self = liftDOM (((self ^. js "read") >>= fromJSValUnchecked))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textencoderencodeintoresult-read TextEncoderEncodeIntoResult.read specification>
+getReadUnsafe :: (MonadDOM m, HasCallStack) => TextEncoderEncodeIntoResult -> m Word53
+getReadUnsafe self = liftDOM ((((self ^. js "read") >>= 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 (((self ^. js "read") >>= fromJSValUnchecked))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textencoderencodeintoresult-written TextEncoderEncodeIntoResult.written specification>
+setWritten :: (MonadDOM m) => TextEncoderEncodeIntoResult -> Word53 -> m ()
+setWritten self val = liftDOM (void (self ^. jss "written" (toJSVal val)))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textencoderencodeintoresult-written TextEncoderEncodeIntoResult.written specification>
+getWritten :: (MonadDOM m) => TextEncoderEncodeIntoResult -> m (Maybe Word53)
+getWritten self = liftDOM (((self ^. js "written") >>= fromJSValUnchecked))
+
+-- | <https://encoding.spec.whatwg.org/#dom-textencoderencodeintoresult-written TextEncoderEncodeIntoResult.written specification>
+getWrittenUnsafe :: (MonadDOM m, HasCallStack) => TextEncoderEncodeIntoResult -> m Word53
+getWrittenUnsafe self = liftDOM ((((self ^. js "written") >>= 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 (((self ^. js "written") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TextEncoderStream.hs b/src/JSDOM/Generated/TextEncoderStream.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TextEncoderStream.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from encoding (webref). Do not edit.
+module JSDOM.Generated.TextEncoderStream
+       (newTextEncoderStream, TextEncoderStream(..), gTypeTextEncoderStream)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/TextEncoderStream/TextEncoderStream MDN TextEncoderStream. documentation>
+newTextEncoderStream :: (MonadDOM m) => m TextEncoderStream
+newTextEncoderStream = liftDOM (((new (jsg "TextEncoderStream") ()) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TextEvent.hs b/src/JSDOM/Generated/TextEvent.hs
--- a/src/JSDOM/Generated/TextEvent.hs
+++ b/src/JSDOM/Generated/TextEvent.hs
@@ -1,38 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
 module JSDOM.Generated.TextEvent
-       (initTextEvent, getData, TextEvent(..), gTypeTextEvent) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (initTextEvent, getData, TextEvent(..), gTypeTextEvent)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEvent.initTextEvent Mozilla TextEvent.initTextEvent documentation> 
-initTextEvent ::
-              (MonadDOM m, ToJSString typeArg, ToJSString dataArg) =>
-                TextEvent ->
-                  Maybe typeArg ->
-                    Bool -> Bool -> Maybe Window -> Maybe dataArg -> m ()
-initTextEvent self typeArg canBubbleArg cancelableArg viewArg
-  dataArg
-  = liftDOM
-      (void
-         (self ^. jsf "initTextEvent"
-            [toJSVal typeArg, toJSVal canBubbleArg, toJSVal cancelableArg,
-             toJSVal viewArg, toJSVal dataArg]))
+-- | <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 (self ^. jsf "initTextEvent" [toJSVal type', P.maybe (P.return jsUndefined) toJSVal bubbles, P.maybe (P.return jsUndefined) toJSVal cancelable, toJSVal view, P.maybe (P.return jsUndefined) toJSVal data']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEvent.data Mozilla TextEvent.data documentation> 
-getData ::
-        (MonadDOM m, FromJSString result) => TextEvent -> m result
-getData self = liftDOM ((self ^. js "data") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/TextEvent/data MDN TextEvent.data documentation>
+getData :: (MonadDOM m, FromJSString result) => TextEvent -> m result
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TextMetrics.hs b/src/JSDOM/Generated/TextMetrics.hs
--- a/src/JSDOM/Generated/TextMetrics.hs
+++ b/src/JSDOM/Generated/TextMetrics.hs
@@ -1,24 +1,64 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.TextMetrics
-       (getWidth, TextMetrics(..), gTypeTextMetrics) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (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.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics.width Mozilla TextMetrics.width documentation> 
-getWidth :: (MonadDOM m) => TextMetrics -> m Float
-getWidth self
-  = liftDOM (realToFrac <$> ((self ^. js "width") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/width MDN TextMetrics.width documentation>
+getWidth :: (MonadDOM m) => TextMetrics -> m Double
+getWidth self = liftDOM (((self ^. js "width") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/actualBoundingBoxLeft MDN TextMetrics.actualBoundingBoxLeft documentation>
+getActualBoundingBoxLeft :: (MonadDOM m) => TextMetrics -> m Double
+getActualBoundingBoxLeft self = liftDOM (((self ^. js "actualBoundingBoxLeft") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/actualBoundingBoxRight MDN TextMetrics.actualBoundingBoxRight documentation>
+getActualBoundingBoxRight :: (MonadDOM m) => TextMetrics -> m Double
+getActualBoundingBoxRight self = liftDOM (((self ^. js "actualBoundingBoxRight") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/fontBoundingBoxAscent MDN TextMetrics.fontBoundingBoxAscent documentation>
+getFontBoundingBoxAscent :: (MonadDOM m) => TextMetrics -> m Double
+getFontBoundingBoxAscent self = liftDOM (((self ^. js "fontBoundingBoxAscent") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/fontBoundingBoxDescent MDN TextMetrics.fontBoundingBoxDescent documentation>
+getFontBoundingBoxDescent :: (MonadDOM m) => TextMetrics -> m Double
+getFontBoundingBoxDescent self = liftDOM (((self ^. js "fontBoundingBoxDescent") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/actualBoundingBoxAscent MDN TextMetrics.actualBoundingBoxAscent documentation>
+getActualBoundingBoxAscent :: (MonadDOM m) => TextMetrics -> m Double
+getActualBoundingBoxAscent self = liftDOM (((self ^. js "actualBoundingBoxAscent") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/actualBoundingBoxDescent MDN TextMetrics.actualBoundingBoxDescent documentation>
+getActualBoundingBoxDescent :: (MonadDOM m) => TextMetrics -> m Double
+getActualBoundingBoxDescent self = liftDOM (((self ^. js "actualBoundingBoxDescent") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/emHeightAscent MDN TextMetrics.emHeightAscent documentation>
+getEmHeightAscent :: (MonadDOM m) => TextMetrics -> m Double
+getEmHeightAscent self = liftDOM (((self ^. js "emHeightAscent") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/emHeightDescent MDN TextMetrics.emHeightDescent documentation>
+getEmHeightDescent :: (MonadDOM m) => TextMetrics -> m Double
+getEmHeightDescent self = liftDOM (((self ^. js "emHeightDescent") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/hangingBaseline MDN TextMetrics.hangingBaseline documentation>
+getHangingBaseline :: (MonadDOM m) => TextMetrics -> m Double
+getHangingBaseline self = liftDOM (((self ^. js "hangingBaseline") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/alphabeticBaseline MDN TextMetrics.alphabeticBaseline documentation>
+getAlphabeticBaseline :: (MonadDOM m) => TextMetrics -> m Double
+getAlphabeticBaseline self = liftDOM (((self ^. js "alphabeticBaseline") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TextMetrics/ideographicBaseline MDN TextMetrics.ideographicBaseline documentation>
+getIdeographicBaseline :: (MonadDOM m) => TextMetrics -> m Double
+getIdeographicBaseline self = liftDOM (((self ^. js "ideographicBaseline") >>= valToNumber))
diff --git a/src/JSDOM/Generated/TextTrack.hs b/src/JSDOM/Generated/TextTrack.hs
--- a/src/JSDOM/Generated/TextTrack.hs
+++ b/src/JSDOM/Generated/TextTrack.hs
@@ -1,145 +1,92 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.TextTrack
-       (addCue, removeCue, addRegion, removeRegion, getId, setKind,
-        getKind, getLabel, setLanguage, getLanguage,
-        getInBandMetadataTrackDispatchType, setMode, getMode, getCues,
-        getCuesUnsafe, getCuesUnchecked, getActiveCues,
-        getActiveCuesUnsafe, getActiveCuesUnchecked, cueChange, getRegions,
-        getSourceBuffer, TextTrack(..), gTypeTextTrack)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.addCue Mozilla TextTrack.addCue documentation> 
-addCue ::
-       (MonadDOM m, IsTextTrackCue cue) => TextTrack -> cue -> m ()
-addCue self cue
-  = liftDOM (void (self ^. jsf "addCue" [toJSVal cue]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.removeCue Mozilla TextTrack.removeCue documentation> 
-removeCue ::
-          (MonadDOM m, IsTextTrackCue cue) => TextTrack -> cue -> m ()
-removeCue self cue
-  = liftDOM (void (self ^. jsf "removeCue" [toJSVal cue]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.addRegion Mozilla TextTrack.addRegion documentation> 
-addRegion :: (MonadDOM m) => TextTrack -> Maybe VTTRegion -> m ()
-addRegion self region
-  = liftDOM (void (self ^. jsf "addRegion" [toJSVal region]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.removeRegion Mozilla TextTrack.removeRegion documentation> 
-removeRegion ::
-             (MonadDOM m) => TextTrack -> Maybe VTTRegion -> m ()
-removeRegion self region
-  = liftDOM (void (self ^. jsf "removeRegion" [toJSVal region]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.id Mozilla TextTrack.id documentation> 
-getId :: (MonadDOM m, FromJSString result) => TextTrack -> m result
-getId self = liftDOM ((self ^. js "id") >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "addCue" [toJSVal cue]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.kind Mozilla TextTrack.kind documentation> 
-setKind :: (MonadDOM m) => TextTrack -> TextTrackKind -> m ()
-setKind self val = liftDOM (self ^. jss "kind" (toJSVal val))
+-- | <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 (self ^. jsf "removeCue" [toJSVal cue]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.kind Mozilla TextTrack.kind documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/kind MDN TextTrack.kind documentation>
 getKind :: (MonadDOM m) => TextTrack -> m TextTrackKind
-getKind self = liftDOM ((self ^. js "kind") >>= fromJSValUnchecked)
+getKind self = liftDOM (((self ^. js "kind") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.label Mozilla TextTrack.label documentation> 
-getLabel ::
-         (MonadDOM m, FromJSString result) => TextTrack -> m result
-getLabel self
-  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/label MDN TextTrack.label documentation>
+getLabel :: (MonadDOM m, FromJSString result) => TextTrack -> m result
+getLabel self = liftDOM (((self ^. js "label") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.language Mozilla TextTrack.language documentation> 
-setLanguage ::
-            (MonadDOM m, ToJSString val) => TextTrack -> val -> m ()
-setLanguage self val
-  = liftDOM (self ^. jss "language" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/language MDN TextTrack.language documentation>
+getLanguage :: (MonadDOM m, FromJSString result) => TextTrack -> m result
+getLanguage self = liftDOM (((self ^. js "language") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.language Mozilla TextTrack.language documentation> 
-getLanguage ::
-            (MonadDOM m, FromJSString result) => TextTrack -> m result
-getLanguage self
-  = liftDOM ((self ^. js "language") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/id MDN TextTrack.id documentation>
+getId :: (MonadDOM m, FromJSString result) => TextTrack -> m result
+getId self = liftDOM (((self ^. js "id") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.inBandMetadataTrackDispatchType Mozilla TextTrack.inBandMetadataTrackDispatchType documentation> 
-getInBandMetadataTrackDispatchType ::
-                                   (MonadDOM m, FromJSString result) => TextTrack -> m result
-getInBandMetadataTrackDispatchType self
-  = liftDOM
-      ((self ^. js "inBandMetadataTrackDispatchType") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/inBandMetadataTrackDispatchType MDN TextTrack.inBandMetadataTrackDispatchType documentation>
+getInBandMetadataTrackDispatchType :: (MonadDOM m, FromJSString result) => TextTrack -> m result
+getInBandMetadataTrackDispatchType self = liftDOM (((self ^. js "inBandMetadataTrackDispatchType") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.mode Mozilla TextTrack.mode documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/mode MDN TextTrack.mode documentation>
 setMode :: (MonadDOM m) => TextTrack -> TextTrackMode -> m ()
-setMode self val = liftDOM (self ^. jss "mode" (toJSVal val))
+setMode self val = liftDOM (void (self ^. jss "mode" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.mode Mozilla TextTrack.mode documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/mode MDN TextTrack.mode documentation>
 getMode :: (MonadDOM m) => TextTrack -> m TextTrackMode
-getMode self = liftDOM ((self ^. js "mode") >>= fromJSValUnchecked)
+getMode self = liftDOM (((self ^. js "mode") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.cues Mozilla TextTrack.cues documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/cues MDN TextTrack.cues documentation>
 getCues :: (MonadDOM m) => TextTrack -> m (Maybe TextTrackCueList)
-getCues self = liftDOM ((self ^. js "cues") >>= fromJSVal)
+getCues self = liftDOM (((self ^. js "cues") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.cues Mozilla TextTrack.cues documentation> 
-getCuesUnsafe ::
-              (MonadDOM m, HasCallStack) => TextTrack -> m TextTrackCueList
-getCuesUnsafe self
-  = liftDOM
-      (((self ^. js "cues") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/cues MDN TextTrack.cues documentation>
+getCuesUnsafe :: (MonadDOM m, HasCallStack) => TextTrack -> m TextTrackCueList
+getCuesUnsafe self = liftDOM ((((self ^. js "cues") >>= 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> 
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/cues MDN TextTrack.cues documentation>
 getCuesUnchecked :: (MonadDOM m) => TextTrack -> m TextTrackCueList
-getCuesUnchecked self
-  = liftDOM ((self ^. js "cues") >>= fromJSValUnchecked)
+getCuesUnchecked self = liftDOM (((self ^. js "cues") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.activeCues Mozilla TextTrack.activeCues documentation> 
-getActiveCues ::
-              (MonadDOM m) => TextTrack -> m (Maybe TextTrackCueList)
-getActiveCues self
-  = liftDOM ((self ^. js "activeCues") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/activeCues MDN TextTrack.activeCues documentation>
+getActiveCues :: (MonadDOM m) => TextTrack -> m (Maybe TextTrackCueList)
+getActiveCues self = liftDOM (((self ^. js "activeCues") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.activeCues Mozilla TextTrack.activeCues documentation> 
-getActiveCuesUnsafe ::
-                    (MonadDOM m, HasCallStack) => TextTrack -> m TextTrackCueList
-getActiveCuesUnsafe self
-  = liftDOM
-      (((self ^. js "activeCues") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/activeCues MDN TextTrack.activeCues documentation>
+getActiveCuesUnsafe :: (MonadDOM m, HasCallStack) => TextTrack -> m TextTrackCueList
+getActiveCuesUnsafe self = liftDOM ((((self ^. js "activeCues") >>= 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> 
-getActiveCuesUnchecked ::
-                       (MonadDOM m) => TextTrack -> m TextTrackCueList
-getActiveCuesUnchecked self
-  = liftDOM ((self ^. js "activeCues") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/activeCues MDN TextTrack.activeCues documentation>
+getActiveCuesUnchecked :: (MonadDOM m) => TextTrack -> m TextTrackCueList
+getActiveCuesUnchecked self = liftDOM (((self ^. js "activeCues") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.oncuechange Mozilla TextTrack.oncuechange documentation> 
-cueChange :: EventName TextTrack Event
-cueChange = unsafeEventName (toJSString "cuechange")
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/sourceBuffer MDN TextTrack.sourceBuffer documentation>
+getSourceBuffer :: (MonadDOM m) => TextTrack -> m (Maybe SourceBuffer)
+getSourceBuffer self = liftDOM (((self ^. js "sourceBuffer") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.regions Mozilla TextTrack.regions documentation> 
-getRegions :: (MonadDOM m) => TextTrack -> m VTTRegionList
-getRegions self
-  = liftDOM ((self ^. js "regions") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/sourceBuffer MDN TextTrack.sourceBuffer documentation>
+getSourceBufferUnsafe :: (MonadDOM m, HasCallStack) => TextTrack -> m SourceBuffer
+getSourceBufferUnsafe self = liftDOM ((((self ^. js "sourceBuffer") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.sourceBuffer Mozilla TextTrack.sourceBuffer documentation> 
-getSourceBuffer :: (MonadDOM m) => TextTrack -> m SourceBuffer
-getSourceBuffer self
-  = liftDOM ((self ^. js "sourceBuffer") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrack/sourceBuffer MDN TextTrack.sourceBuffer documentation>
+getSourceBufferUnchecked :: (MonadDOM m) => TextTrack -> m SourceBuffer
+getSourceBufferUnchecked self = liftDOM (((self ^. js "sourceBuffer") >>= fromJSValUnchecked))
+
+-- | <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/JSDOM/Generated/TextTrackCue.hs b/src/JSDOM/Generated/TextTrackCue.hs
--- a/src/JSDOM/Generated/TextTrackCue.hs
+++ b/src/JSDOM/Generated/TextTrackCue.hs
@@ -1,93 +1,68 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.TextTrackCue
-       (getTrack, setId, getId, setStartTime, getStartTime, setEndTime,
-        getEndTime, setPauseOnExit, getPauseOnExit, enter, exit,
-        TextTrackCue(..), gTypeTextTrackCue, IsTextTrackCue,
-        toTextTrackCue)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.track Mozilla TextTrackCue.track documentation> 
-getTrack ::
-         (MonadDOM m, IsTextTrackCue self) => self -> m TextTrack
-getTrack self
-  = liftDOM
-      (((toTextTrackCue self) ^. js "track") >>= fromJSValUnchecked)
+-- | <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 ((((Types.toTextTrackCue self) ^. js "track") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.id Mozilla TextTrackCue.id documentation> 
-setId ::
-      (MonadDOM m, IsTextTrackCue self, ToJSString val) =>
-        self -> val -> m ()
-setId self val
-  = liftDOM ((toTextTrackCue self) ^. jss "id" (toJSVal val))
+-- | <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 (((((Types.toTextTrackCue self) ^. js "track") >>= 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 ::
-      (MonadDOM m, IsTextTrackCue self, FromJSString result) =>
-        self -> m result
-getId self
-  = liftDOM
-      (((toTextTrackCue self) ^. js "id") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCue/track MDN TextTrackCue.track documentation>
+getTrackUnchecked :: (MonadDOM m, IsTextTrackCue self) => self -> m TextTrack
+getTrackUnchecked self = liftDOM ((((Types.toTextTrackCue self) ^. js "track") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.startTime Mozilla TextTrackCue.startTime documentation> 
-setStartTime ::
-             (MonadDOM m, IsTextTrackCue self) => self -> Double -> m ()
-setStartTime self val
-  = liftDOM ((toTextTrackCue self) ^. jss "startTime" (toJSVal val))
+-- | <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 ((Types.toTextTrackCue self) ^. jss "id" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.startTime Mozilla TextTrackCue.startTime documentation> 
-getStartTime ::
-             (MonadDOM m, IsTextTrackCue self) => self -> m Double
-getStartTime self
-  = liftDOM
-      (((toTextTrackCue self) ^. js "startTime") >>= valToNumber)
+-- | <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 ((((Types.toTextTrackCue self) ^. js "id") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.endTime Mozilla TextTrackCue.endTime documentation> 
-setEndTime ::
-           (MonadDOM m, IsTextTrackCue self) => self -> Double -> m ()
-setEndTime self val
-  = liftDOM ((toTextTrackCue self) ^. jss "endTime" (toJSVal val))
+-- | <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 ((Types.toTextTrackCue self) ^. jss "startTime" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.endTime Mozilla TextTrackCue.endTime documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCue/startTime MDN TextTrackCue.startTime documentation>
+getStartTime :: (MonadDOM m, IsTextTrackCue self) => self -> m Double
+getStartTime self = liftDOM ((((Types.toTextTrackCue self) ^. js "startTime") >>= valToNumber))
+
+-- | <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 ((Types.toTextTrackCue self) ^. jss "endTime" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCue/endTime MDN TextTrackCue.endTime documentation>
 getEndTime :: (MonadDOM m, IsTextTrackCue self) => self -> m Double
-getEndTime self
-  = liftDOM (((toTextTrackCue self) ^. js "endTime") >>= valToNumber)
+getEndTime self = liftDOM ((((Types.toTextTrackCue self) ^. js "endTime") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.pauseOnExit Mozilla TextTrackCue.pauseOnExit documentation> 
-setPauseOnExit ::
-               (MonadDOM m, IsTextTrackCue self) => self -> Bool -> m ()
-setPauseOnExit self val
-  = liftDOM
-      ((toTextTrackCue self) ^. jss "pauseOnExit" (toJSVal val))
+-- | <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 ((Types.toTextTrackCue self) ^. jss "pauseOnExit" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.pauseOnExit Mozilla TextTrackCue.pauseOnExit documentation> 
-getPauseOnExit ::
-               (MonadDOM m, IsTextTrackCue self) => self -> m Bool
-getPauseOnExit self
-  = liftDOM
-      (((toTextTrackCue self) ^. js "pauseOnExit") >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCue/pauseOnExit MDN TextTrackCue.pauseOnExit documentation>
+getPauseOnExit :: (MonadDOM m, IsTextTrackCue self) => self -> m Bool
+getPauseOnExit self = liftDOM ((((Types.toTextTrackCue self) ^. js "pauseOnExit") >>= valToBool))
 
--- | <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/JSDOM/Generated/TextTrackCueList.hs b/src/JSDOM/Generated/TextTrackCueList.hs
--- a/src/JSDOM/Generated/TextTrackCueList.hs
+++ b/src/JSDOM/Generated/TextTrackCueList.hs
@@ -1,51 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.TextTrackCueList
-       (item, item_, getCueById, getCueById_, getLength,
-        TextTrackCueList(..), gTypeTextTrackCueList)
+       (getCueById, getCueById_, getCueByIdUnsafe, getCueByIdUnchecked, getLength, TextTrackCueList(..), gTypeTextTrackCueList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.item Mozilla TextTrackCueList.item documentation> 
-item :: (MonadDOM m) => TextTrackCueList -> Word -> m TextTrackCue
-item self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "getCueById" [toJSVal id]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.item Mozilla TextTrackCueList.item documentation> 
-item_ :: (MonadDOM m) => TextTrackCueList -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+-- | <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 (self ^. jsf "getCueById" [toJSVal id]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.getCueById Mozilla TextTrackCueList.getCueById documentation> 
-getCueById ::
-           (MonadDOM m, ToJSString id) =>
-             TextTrackCueList -> id -> m TextTrackCue
-getCueById self id
-  = liftDOM
-      ((self ^. jsf "getCueById" [toJSVal id]) >>= fromJSValUnchecked)
+-- | <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 ((((self ^. jsf "getCueById" [toJSVal 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_ ::
-            (MonadDOM m, ToJSString id) => TextTrackCueList -> id -> m ()
-getCueById_ self id
-  = liftDOM (void (self ^. jsf "getCueById" [toJSVal id]))
+-- | <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 (((self ^. jsf "getCueById" [toJSVal id]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.length Mozilla TextTrackCueList.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackCueList/length MDN TextTrackCueList.length documentation>
 getLength :: (MonadDOM m) => TextTrackCueList -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/TextTrackList.hs b/src/JSDOM/Generated/TextTrackList.hs
--- a/src/JSDOM/Generated/TextTrackList.hs
+++ b/src/JSDOM/Generated/TextTrackList.hs
@@ -1,62 +1,48 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.TextTrackList
-       (item, item_, getTrackById, getTrackById_, getLength, addTrack,
-        change, removeTrack, TextTrackList(..), gTypeTextTrackList)
+       (getTrackById, getTrackById_, getTrackByIdUnsafe, getTrackByIdUnchecked, getLength, change, addTrack, removeTrack, TextTrackList(..), gTypeTextTrackList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.item Mozilla TextTrackList.item documentation> 
-item :: (MonadDOM m) => TextTrackList -> Word -> m TextTrack
-item self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "getTrackById" [toJSVal id]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.item Mozilla TextTrackList.item documentation> 
-item_ :: (MonadDOM m) => TextTrackList -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+-- | <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 (self ^. jsf "getTrackById" [toJSVal id]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.getTrackById Mozilla TextTrackList.getTrackById documentation> 
-getTrackById ::
-             (MonadDOM m, ToJSString id) => TextTrackList -> id -> m TextTrack
-getTrackById self id
-  = liftDOM
-      ((self ^. jsf "getTrackById" [toJSVal id]) >>= fromJSValUnchecked)
+-- | <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 ((((self ^. jsf "getTrackById" [toJSVal id]) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.getTrackById Mozilla TextTrackList.getTrackById documentation> 
-getTrackById_ ::
-              (MonadDOM m, ToJSString id) => TextTrackList -> id -> m ()
-getTrackById_ self id
-  = liftDOM (void (self ^. jsf "getTrackById" [toJSVal id]))
+-- | <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 (((self ^. jsf "getTrackById" [toJSVal id]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.length Mozilla TextTrackList.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TextTrackList/length MDN TextTrackList.length documentation>
 getLength :: (MonadDOM m) => TextTrackList -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.onaddtrack Mozilla TextTrackList.onaddtrack documentation> 
-addTrack :: EventName TextTrackList Event
-addTrack = unsafeEventName (toJSString "addtrack")
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
 
--- | <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/JSDOM/Generated/TimeRanges.hs b/src/JSDOM/Generated/TimeRanges.hs
--- a/src/JSDOM/Generated/TimeRanges.hs
+++ b/src/JSDOM/Generated/TimeRanges.hs
@@ -1,46 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.TimeRanges
-       (start, start_, end, end_, getLength, TimeRanges(..),
-        gTypeTimeRanges)
+       (end, end_, start, start_, getLength, TimeRanges(..), gTypeTimeRanges)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.start Mozilla TimeRanges.start documentation> 
-start :: (MonadDOM m) => TimeRanges -> Word -> m Double
-start self index
-  = liftDOM ((self ^. jsf "start" [toJSVal index]) >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.start Mozilla TimeRanges.start documentation> 
-start_ :: (MonadDOM m) => TimeRanges -> Word -> m ()
-start_ self index
-  = liftDOM (void (self ^. jsf "start" [toJSVal index]))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.end Mozilla TimeRanges.end documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TimeRanges/end MDN TimeRanges.end documentation>
 end :: (MonadDOM m) => TimeRanges -> Word -> m Double
-end self index
-  = liftDOM ((self ^. jsf "end" [toJSVal index]) >>= valToNumber)
+end self index = liftDOM (((self ^. jsf "end" [toJSVal index]) >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.end Mozilla TimeRanges.end documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TimeRanges/end MDN TimeRanges.end documentation>
 end_ :: (MonadDOM m) => TimeRanges -> Word -> m ()
-end_ self index
-  = liftDOM (void (self ^. jsf "end" [toJSVal index]))
+end_ self index = liftDOM (void (self ^. jsf "end" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.length Mozilla TimeRanges.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TimeRanges/start MDN TimeRanges.start documentation>
+start :: (MonadDOM m) => TimeRanges -> Word -> m Double
+start self index = liftDOM (((self ^. jsf "start" [toJSVal index]) >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TimeRanges/start MDN TimeRanges.start documentation>
+start_ :: (MonadDOM m) => TimeRanges -> Word -> m ()
+start_ self index = liftDOM (void (self ^. jsf "start" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TimeRanges/length MDN TimeRanges.length documentation>
 getLength :: (MonadDOM m) => TimeRanges -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/TimelineRangeOffset.hs b/src/JSDOM/Generated/TimelineRangeOffset.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TimelineRangeOffset.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from web-animations-2 (webref). Do not edit.
+module JSDOM.Generated.TimelineRangeOffset
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/web-animations-2/#dictdef-timelinerangeoffset TimelineRangeOffset specification>
+newTimelineRangeOffset :: (MonadDOM m) => m TimelineRangeOffset
+newTimelineRangeOffset = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "rangeName" (toJSVal val)))
+
+-- | <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 (((self ^. js "rangeName") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "rangeName") >>= fromMaybeJSString) >>= 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 (((self ^. js "rangeName") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "offset" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-timelinerangeoffset-offset TimelineRangeOffset.offset specification>
+getOffset :: (MonadDOM m) => TimelineRangeOffset -> m (Maybe CSSNumericValue)
+getOffset self = liftDOM (((self ^. js "offset") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/web-animations-2/#dom-timelinerangeoffset-offset TimelineRangeOffset.offset specification>
+getOffsetUnsafe :: (MonadDOM m, HasCallStack) => TimelineRangeOffset -> m CSSNumericValue
+getOffsetUnsafe self = liftDOM ((((self ^. js "offset") >>= 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 (((self ^. js "offset") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ToggleEvent.hs b/src/JSDOM/Generated/ToggleEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ToggleEvent.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.ToggleEvent
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "ToggleEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ToggleEvent/oldState MDN ToggleEvent.oldState documentation>
+getOldState :: (MonadDOM m, FromJSString result) => ToggleEvent -> m result
+getOldState self = liftDOM (((self ^. js "oldState") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ToggleEvent/newState MDN ToggleEvent.newState documentation>
+getNewState :: (MonadDOM m, FromJSString result) => ToggleEvent -> m result
+getNewState self = liftDOM (((self ^. js "newState") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ToggleEvent/source MDN ToggleEvent.source documentation>
+getSource :: (MonadDOM m) => ToggleEvent -> m (Maybe Element)
+getSource self = liftDOM (((self ^. js "source") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ToggleEvent/source MDN ToggleEvent.source documentation>
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => ToggleEvent -> m Element
+getSourceUnsafe self = liftDOM ((((self ^. js "source") >>= 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 (((self ^. js "source") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ToggleEventInit.hs b/src/JSDOM/Generated/ToggleEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ToggleEventInit.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.ToggleEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/interaction.html#toggleeventinit ToggleEventInit specification>
+newToggleEventInit :: (MonadDOM m) => m ToggleEventInit
+newToggleEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+setOldState :: (MonadDOM m, ToJSString val) => ToggleEventInit -> val -> m ()
+setOldState self val = liftDOM (void (self ^. jss "oldState" (toJSVal val)))
+
+getOldState :: (MonadDOM m, FromJSString result) => ToggleEventInit -> m (Maybe result)
+getOldState self = liftDOM (((self ^. js "oldState") >>= fromMaybeJSString))
+
+getOldStateUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ToggleEventInit -> m result
+getOldStateUnsafe self = liftDOM ((((self ^. js "oldState") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getOldStateUnchecked :: (MonadDOM m, FromJSString result) => ToggleEventInit -> m result
+getOldStateUnchecked self = liftDOM (((self ^. js "oldState") >>= fromJSValUnchecked))
+
+setNewState :: (MonadDOM m, ToJSString val) => ToggleEventInit -> val -> m ()
+setNewState self val = liftDOM (void (self ^. jss "newState" (toJSVal val)))
+
+getNewState :: (MonadDOM m, FromJSString result) => ToggleEventInit -> m (Maybe result)
+getNewState self = liftDOM (((self ^. js "newState") >>= fromMaybeJSString))
+
+getNewStateUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => ToggleEventInit -> m result
+getNewStateUnsafe self = liftDOM ((((self ^. js "newState") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getNewStateUnchecked :: (MonadDOM m, FromJSString result) => ToggleEventInit -> m result
+getNewStateUnchecked self = liftDOM (((self ^. js "newState") >>= fromJSValUnchecked))
+
+setSource :: (MonadDOM m, IsElement val) => ToggleEventInit -> Maybe val -> m ()
+setSource self val = liftDOM (void (self ^. jss "source" (toJSVal val)))
+
+getSource :: (MonadDOM m) => ToggleEventInit -> m (Maybe Element)
+getSource self = liftDOM (((self ^. js "source") >>= fromJSValUnchecked))
+
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => ToggleEventInit -> m Element
+getSourceUnsafe self = liftDOM ((((self ^. js "source") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getSourceUnchecked :: (MonadDOM m) => ToggleEventInit -> m Element
+getSourceUnchecked self = liftDOM (((self ^. js "source") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TogglePopoverOptions.hs b/src/JSDOM/Generated/TogglePopoverOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TogglePopoverOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.TogglePopoverOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/dom.html#togglepopoveroptions TogglePopoverOptions specification>
+newTogglePopoverOptions :: (MonadDOM m) => m TogglePopoverOptions
+newTogglePopoverOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "force" (toJSVal val)))
+
+-- | <https://html.spec.whatwg.org/multipage/dom.html#dom-togglepopoveroptions-force TogglePopoverOptions.force specification>
+getForce :: (MonadDOM m) => TogglePopoverOptions -> m (Maybe Bool)
+getForce self = liftDOM (((self ^. js "force") >>= 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 ((((self ^. js "force") >>= 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 (((self ^. js "force") >>= valToBool))
diff --git a/src/JSDOM/Generated/Touch.hs b/src/JSDOM/Generated/Touch.hs
--- a/src/JSDOM/Generated/Touch.hs
+++ b/src/JSDOM/Generated/Touch.hs
@@ -1,88 +1,68 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from touch-events (webref). Do not edit.
 module JSDOM.Generated.Touch
-       (getClientX, getClientY, getScreenX, getScreenY, getPageX,
-        getPageY, getTarget, getIdentifier, getWebkitRadiusX,
-        getWebkitRadiusY, getWebkitRotationAngle, getWebkitForce,
-        Touch(..), gTypeTouch)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.clientX Mozilla Touch.clientX documentation> 
-getClientX :: (MonadDOM m) => Touch -> m Int
-getClientX self
-  = liftDOM (round <$> ((self ^. js "clientX") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/Touch MDN Touch. documentation>
+newTouch :: (MonadDOM m) => TouchInit -> m Touch
+newTouch touchInitDict = liftDOM (((new (jsg "Touch") [toJSVal touchInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.clientY Mozilla Touch.clientY documentation> 
-getClientY :: (MonadDOM m) => Touch -> m Int
-getClientY self
-  = liftDOM (round <$> ((self ^. js "clientY") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/identifier MDN Touch.identifier documentation>
+getIdentifier :: (MonadDOM m) => Touch -> m Int
+getIdentifier self = liftDOM ((P.round <$> ((self ^. js "identifier") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.screenX Mozilla Touch.screenX documentation> 
-getScreenX :: (MonadDOM m) => Touch -> m Int
-getScreenX self
-  = liftDOM (round <$> ((self ^. js "screenX") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/target MDN Touch.target documentation>
+getTarget :: (MonadDOM m) => Touch -> m EventTarget
+getTarget self = liftDOM (((self ^. js "target") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.screenY Mozilla Touch.screenY documentation> 
-getScreenY :: (MonadDOM m) => Touch -> m Int
-getScreenY self
-  = liftDOM (round <$> ((self ^. js "screenY") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/screenX MDN Touch.screenX documentation>
+getScreenX :: (MonadDOM m) => Touch -> m Double
+getScreenX self = liftDOM (((self ^. js "screenX") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.pageX Mozilla Touch.pageX documentation> 
-getPageX :: (MonadDOM m) => Touch -> m Int
-getPageX self
-  = liftDOM (round <$> ((self ^. js "pageX") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/screenY MDN Touch.screenY documentation>
+getScreenY :: (MonadDOM m) => Touch -> m Double
+getScreenY self = liftDOM (((self ^. js "screenY") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.pageY Mozilla Touch.pageY documentation> 
-getPageY :: (MonadDOM m) => Touch -> m Int
-getPageY self
-  = liftDOM (round <$> ((self ^. js "pageY") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/clientX MDN Touch.clientX documentation>
+getClientX :: (MonadDOM m) => Touch -> m Double
+getClientX self = liftDOM (((self ^. js "clientX") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.target Mozilla Touch.target documentation> 
-getTarget :: (MonadDOM m) => Touch -> m EventTarget
-getTarget self
-  = liftDOM ((self ^. js "target") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/clientY MDN Touch.clientY documentation>
+getClientY :: (MonadDOM m) => Touch -> m Double
+getClientY self = liftDOM (((self ^. js "clientY") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.identifier Mozilla Touch.identifier documentation> 
-getIdentifier :: (MonadDOM m) => Touch -> m Word
-getIdentifier self
-  = liftDOM (round <$> ((self ^. js "identifier") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/pageX MDN Touch.pageX documentation>
+getPageX :: (MonadDOM m) => Touch -> m Double
+getPageX self = liftDOM (((self ^. js "pageX") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.webkitRadiusX Mozilla Touch.webkitRadiusX documentation> 
-getWebkitRadiusX :: (MonadDOM m) => Touch -> m Int
-getWebkitRadiusX self
-  = liftDOM
-      (round <$> ((self ^. js "webkitRadiusX") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/pageY MDN Touch.pageY documentation>
+getPageY :: (MonadDOM m) => Touch -> m Double
+getPageY self = liftDOM (((self ^. js "pageY") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.webkitRadiusY Mozilla Touch.webkitRadiusY documentation> 
-getWebkitRadiusY :: (MonadDOM m) => Touch -> m Int
-getWebkitRadiusY self
-  = liftDOM
-      (round <$> ((self ^. js "webkitRadiusY") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/radiusX MDN Touch.radiusX documentation>
+getRadiusX :: (MonadDOM m) => Touch -> m Float
+getRadiusX self = liftDOM ((P.realToFrac <$> ((self ^. js "radiusX") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.webkitRotationAngle Mozilla Touch.webkitRotationAngle documentation> 
-getWebkitRotationAngle :: (MonadDOM m) => Touch -> m Float
-getWebkitRotationAngle self
-  = liftDOM
-      (realToFrac <$>
-         ((self ^. js "webkitRotationAngle") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/radiusY MDN Touch.radiusY documentation>
+getRadiusY :: (MonadDOM m) => Touch -> m Float
+getRadiusY self = liftDOM ((P.realToFrac <$> ((self ^. js "radiusY") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.webkitForce Mozilla Touch.webkitForce documentation> 
-getWebkitForce :: (MonadDOM m) => Touch -> m Float
-getWebkitForce self
-  = liftDOM
-      (realToFrac <$> ((self ^. js "webkitForce") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/rotationAngle MDN Touch.rotationAngle documentation>
+getRotationAngle :: (MonadDOM m) => Touch -> m Float
+getRotationAngle self = liftDOM ((P.realToFrac <$> ((self ^. js "rotationAngle") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Touch/force MDN Touch.force documentation>
+getForce :: (MonadDOM m) => Touch -> m Float
+getForce self = liftDOM ((P.realToFrac <$> ((self ^. js "force") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/TouchEvent.hs b/src/JSDOM/Generated/TouchEvent.hs
--- a/src/JSDOM/Generated/TouchEvent.hs
+++ b/src/JSDOM/Generated/TouchEvent.hs
@@ -1,84 +1,48 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from touch-events (webref). Do not edit.
 module JSDOM.Generated.TouchEvent
-       (newTouchEvent, initTouchEvent, getTouches, getTargetTouches,
-        getChangedTouches, getCtrlKey, getShiftKey, getAltKey, getMetaKey,
-        TouchEvent(..), gTypeTouchEvent)
+       (newTouchEvent, getTouches, getTargetTouches, getChangedTouches, getAltKey, getMetaKey, getCtrlKey, getShiftKey, TouchEvent(..), gTypeTouchEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent Mozilla TouchEvent documentation> 
-newTouchEvent ::
-              (MonadDOM m, ToJSString type') =>
-                type' -> Maybe TouchEventInit -> m TouchEvent
-newTouchEvent type' eventInitDict
-  = liftDOM
-      (TouchEvent <$>
-         new (jsg "TouchEvent") [toJSVal type', toJSVal eventInitDict])
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.initTouchEvent Mozilla TouchEvent.initTouchEvent documentation> 
-initTouchEvent ::
-               (MonadDOM 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
-  = liftDOM
-      (void
-         (self ^. jsf "initTouchEvent"
-            [toJSVal touches, toJSVal targetTouches, toJSVal changedTouches,
-             toJSVal type', toJSVal view, toJSVal screenX, toJSVal screenY,
-             toJSVal clientX, toJSVal clientY, toJSVal ctrlKey, toJSVal altKey,
-             toJSVal shiftKey, toJSVal metaKey]))
+-- | <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 (((new (jsg "TouchEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.touches Mozilla TouchEvent.touches documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TouchEvent/touches MDN TouchEvent.touches documentation>
 getTouches :: (MonadDOM m) => TouchEvent -> m TouchList
-getTouches self
-  = liftDOM ((self ^. js "touches") >>= fromJSValUnchecked)
+getTouches self = liftDOM (((self ^. js "touches") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.targetTouches Mozilla TouchEvent.targetTouches documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TouchEvent/targetTouches MDN TouchEvent.targetTouches documentation>
 getTargetTouches :: (MonadDOM m) => TouchEvent -> m TouchList
-getTargetTouches self
-  = liftDOM ((self ^. js "targetTouches") >>= fromJSValUnchecked)
+getTargetTouches self = liftDOM (((self ^. js "targetTouches") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.changedTouches Mozilla TouchEvent.changedTouches documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TouchEvent/changedTouches MDN TouchEvent.changedTouches documentation>
 getChangedTouches :: (MonadDOM m) => TouchEvent -> m TouchList
-getChangedTouches self
-  = liftDOM ((self ^. js "changedTouches") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.ctrlKey Mozilla TouchEvent.ctrlKey documentation> 
-getCtrlKey :: (MonadDOM m) => TouchEvent -> m Bool
-getCtrlKey self = liftDOM ((self ^. js "ctrlKey") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.shiftKey Mozilla TouchEvent.shiftKey documentation> 
-getShiftKey :: (MonadDOM m) => TouchEvent -> m Bool
-getShiftKey self = liftDOM ((self ^. js "shiftKey") >>= valToBool)
+getChangedTouches self = liftDOM (((self ^. js "changedTouches") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.altKey Mozilla TouchEvent.altKey documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TouchEvent/altKey MDN TouchEvent.altKey documentation>
 getAltKey :: (MonadDOM m) => TouchEvent -> m Bool
-getAltKey self = liftDOM ((self ^. js "altKey") >>= valToBool)
+getAltKey self = liftDOM (((self ^. js "altKey") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.metaKey Mozilla TouchEvent.metaKey documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TouchEvent/metaKey MDN TouchEvent.metaKey documentation>
 getMetaKey :: (MonadDOM m) => TouchEvent -> m Bool
-getMetaKey self = liftDOM ((self ^. js "metaKey") >>= valToBool)
+getMetaKey self = liftDOM (((self ^. js "metaKey") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TouchEvent/ctrlKey MDN TouchEvent.ctrlKey documentation>
+getCtrlKey :: (MonadDOM m) => TouchEvent -> m Bool
+getCtrlKey self = liftDOM (((self ^. js "ctrlKey") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TouchEvent/shiftKey MDN TouchEvent.shiftKey documentation>
+getShiftKey :: (MonadDOM m) => TouchEvent -> m Bool
+getShiftKey self = liftDOM (((self ^. js "shiftKey") >>= valToBool))
diff --git a/src/JSDOM/Generated/TouchEventInit.hs b/src/JSDOM/Generated/TouchEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TouchEventInit.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from touch-events (webref). Do not edit.
+module JSDOM.Generated.TouchEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit TouchEventInit specification>
+newTouchEventInit :: (MonadDOM m) => m TouchEventInit
+newTouchEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-touches TouchEventInit.touches specification>
+setTouches :: (MonadDOM m) => TouchEventInit -> [Touch] -> m ()
+setTouches self val = liftDOM (void (self ^. jss "touches" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-touches TouchEventInit.touches specification>
+getTouches :: (MonadDOM m) => TouchEventInit -> m (Maybe [Touch])
+getTouches self = liftDOM (((self ^. js "touches") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-touches TouchEventInit.touches specification>
+getTouchesUnsafe :: (MonadDOM m, HasCallStack) => TouchEventInit -> m [Touch]
+getTouchesUnsafe self = liftDOM ((((self ^. js "touches") >>= 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 (((self ^. js "touches") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-targettouches TouchEventInit.targetTouches specification>
+setTargetTouches :: (MonadDOM m) => TouchEventInit -> [Touch] -> m ()
+setTargetTouches self val = liftDOM (void (self ^. jss "targetTouches" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-targettouches TouchEventInit.targetTouches specification>
+getTargetTouches :: (MonadDOM m) => TouchEventInit -> m (Maybe [Touch])
+getTargetTouches self = liftDOM (((self ^. js "targetTouches") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-targettouches TouchEventInit.targetTouches specification>
+getTargetTouchesUnsafe :: (MonadDOM m, HasCallStack) => TouchEventInit -> m [Touch]
+getTargetTouchesUnsafe self = liftDOM ((((self ^. js "targetTouches") >>= 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 (((self ^. js "targetTouches") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-changedtouches TouchEventInit.changedTouches specification>
+setChangedTouches :: (MonadDOM m) => TouchEventInit -> [Touch] -> m ()
+setChangedTouches self val = liftDOM (void (self ^. jss "changedTouches" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-changedtouches TouchEventInit.changedTouches specification>
+getChangedTouches :: (MonadDOM m) => TouchEventInit -> m (Maybe [Touch])
+getChangedTouches self = liftDOM (((self ^. js "changedTouches") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-toucheventinit-changedtouches TouchEventInit.changedTouches specification>
+getChangedTouchesUnsafe :: (MonadDOM m, HasCallStack) => TouchEventInit -> m [Touch]
+getChangedTouchesUnsafe self = liftDOM ((((self ^. js "changedTouches") >>= 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 (((self ^. js "changedTouches") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TouchInit.hs b/src/JSDOM/Generated/TouchInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TouchInit.hs
@@ -0,0 +1,244 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from touch-events (webref). Do not edit.
+module JSDOM.Generated.TouchInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit TouchInit specification>
+newTouchInit :: (MonadDOM m, IsEventTarget target) => Int -> target -> m TouchInit
+newTouchInit identifier target = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "identifier" (toJSVal identifier)) P.>> (o ^. jss "target" (toJSVal target)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-identifier TouchInit.identifier specification>
+setIdentifier :: (MonadDOM m) => TouchInit -> Int -> m ()
+setIdentifier self val = liftDOM (void (self ^. jss "identifier" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-identifier TouchInit.identifier specification>
+getIdentifier :: (MonadDOM m) => TouchInit -> m Int
+getIdentifier self = liftDOM ((P.round <$> ((self ^. js "identifier") >>= valToNumber)))
+
+-- | <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 (self ^. jss "target" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-target TouchInit.target specification>
+getTarget :: (MonadDOM m) => TouchInit -> m EventTarget
+getTarget self = liftDOM (((self ^. js "target") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-clientx TouchInit.clientX specification>
+setClientX :: (MonadDOM m) => TouchInit -> Double -> m ()
+setClientX self val = liftDOM (void (self ^. jss "clientX" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-clientx TouchInit.clientX specification>
+getClientX :: (MonadDOM m) => TouchInit -> m (Maybe Double)
+getClientX self = liftDOM (((self ^. js "clientX") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-clientx TouchInit.clientX specification>
+getClientXUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Double
+getClientXUnsafe self = liftDOM ((((self ^. js "clientX") >>= 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 (((self ^. js "clientX") >>= valToNumber))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-clienty TouchInit.clientY specification>
+setClientY :: (MonadDOM m) => TouchInit -> Double -> m ()
+setClientY self val = liftDOM (void (self ^. jss "clientY" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-clienty TouchInit.clientY specification>
+getClientY :: (MonadDOM m) => TouchInit -> m (Maybe Double)
+getClientY self = liftDOM (((self ^. js "clientY") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-clienty TouchInit.clientY specification>
+getClientYUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Double
+getClientYUnsafe self = liftDOM ((((self ^. js "clientY") >>= 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 (((self ^. js "clientY") >>= valToNumber))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-screenx TouchInit.screenX specification>
+setScreenX :: (MonadDOM m) => TouchInit -> Double -> m ()
+setScreenX self val = liftDOM (void (self ^. jss "screenX" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-screenx TouchInit.screenX specification>
+getScreenX :: (MonadDOM m) => TouchInit -> m (Maybe Double)
+getScreenX self = liftDOM (((self ^. js "screenX") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-screenx TouchInit.screenX specification>
+getScreenXUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Double
+getScreenXUnsafe self = liftDOM ((((self ^. js "screenX") >>= 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 (((self ^. js "screenX") >>= valToNumber))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-screeny TouchInit.screenY specification>
+setScreenY :: (MonadDOM m) => TouchInit -> Double -> m ()
+setScreenY self val = liftDOM (void (self ^. jss "screenY" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-screeny TouchInit.screenY specification>
+getScreenY :: (MonadDOM m) => TouchInit -> m (Maybe Double)
+getScreenY self = liftDOM (((self ^. js "screenY") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-screeny TouchInit.screenY specification>
+getScreenYUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Double
+getScreenYUnsafe self = liftDOM ((((self ^. js "screenY") >>= 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 (((self ^. js "screenY") >>= valToNumber))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-pagex TouchInit.pageX specification>
+setPageX :: (MonadDOM m) => TouchInit -> Double -> m ()
+setPageX self val = liftDOM (void (self ^. jss "pageX" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-pagex TouchInit.pageX specification>
+getPageX :: (MonadDOM m) => TouchInit -> m (Maybe Double)
+getPageX self = liftDOM (((self ^. js "pageX") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-pagex TouchInit.pageX specification>
+getPageXUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Double
+getPageXUnsafe self = liftDOM ((((self ^. js "pageX") >>= 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 (((self ^. js "pageX") >>= valToNumber))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-pagey TouchInit.pageY specification>
+setPageY :: (MonadDOM m) => TouchInit -> Double -> m ()
+setPageY self val = liftDOM (void (self ^. jss "pageY" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-pagey TouchInit.pageY specification>
+getPageY :: (MonadDOM m) => TouchInit -> m (Maybe Double)
+getPageY self = liftDOM (((self ^. js "pageY") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-pagey TouchInit.pageY specification>
+getPageYUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Double
+getPageYUnsafe self = liftDOM ((((self ^. js "pageY") >>= 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 (((self ^. js "pageY") >>= valToNumber))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-radiusx TouchInit.radiusX specification>
+setRadiusX :: (MonadDOM m) => TouchInit -> Float -> m ()
+setRadiusX self val = liftDOM (void (self ^. jss "radiusX" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-radiusx TouchInit.radiusX specification>
+getRadiusX :: (MonadDOM m) => TouchInit -> m (Maybe Float)
+getRadiusX self = liftDOM (((self ^. js "radiusX") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-radiusx TouchInit.radiusX specification>
+getRadiusXUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Float
+getRadiusXUnsafe self = liftDOM ((((self ^. js "radiusX") >>= 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 ((P.realToFrac <$> ((self ^. js "radiusX") >>= valToNumber)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-radiusy TouchInit.radiusY specification>
+setRadiusY :: (MonadDOM m) => TouchInit -> Float -> m ()
+setRadiusY self val = liftDOM (void (self ^. jss "radiusY" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-radiusy TouchInit.radiusY specification>
+getRadiusY :: (MonadDOM m) => TouchInit -> m (Maybe Float)
+getRadiusY self = liftDOM (((self ^. js "radiusY") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-radiusy TouchInit.radiusY specification>
+getRadiusYUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Float
+getRadiusYUnsafe self = liftDOM ((((self ^. js "radiusY") >>= 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 ((P.realToFrac <$> ((self ^. js "radiusY") >>= valToNumber)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-rotationangle TouchInit.rotationAngle specification>
+setRotationAngle :: (MonadDOM m) => TouchInit -> Float -> m ()
+setRotationAngle self val = liftDOM (void (self ^. jss "rotationAngle" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-rotationangle TouchInit.rotationAngle specification>
+getRotationAngle :: (MonadDOM m) => TouchInit -> m (Maybe Float)
+getRotationAngle self = liftDOM (((self ^. js "rotationAngle") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-rotationangle TouchInit.rotationAngle specification>
+getRotationAngleUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Float
+getRotationAngleUnsafe self = liftDOM ((((self ^. js "rotationAngle") >>= 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 ((P.realToFrac <$> ((self ^. js "rotationAngle") >>= valToNumber)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-force TouchInit.force specification>
+setForce :: (MonadDOM m) => TouchInit -> Float -> m ()
+setForce self val = liftDOM (void (self ^. jss "force" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-force TouchInit.force specification>
+getForce :: (MonadDOM m) => TouchInit -> m (Maybe Float)
+getForce self = liftDOM (((self ^. js "force") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-force TouchInit.force specification>
+getForceUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Float
+getForceUnsafe self = liftDOM ((((self ^. js "force") >>= 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 ((P.realToFrac <$> ((self ^. js "force") >>= valToNumber)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-altitudeangle TouchInit.altitudeAngle specification>
+setAltitudeAngle :: (MonadDOM m) => TouchInit -> Double -> m ()
+setAltitudeAngle self val = liftDOM (void (self ^. jss "altitudeAngle" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-altitudeangle TouchInit.altitudeAngle specification>
+getAltitudeAngle :: (MonadDOM m) => TouchInit -> m (Maybe Double)
+getAltitudeAngle self = liftDOM (((self ^. js "altitudeAngle") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-altitudeangle TouchInit.altitudeAngle specification>
+getAltitudeAngleUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Double
+getAltitudeAngleUnsafe self = liftDOM ((((self ^. js "altitudeAngle") >>= 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 (((self ^. js "altitudeAngle") >>= valToNumber))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-azimuthangle TouchInit.azimuthAngle specification>
+setAzimuthAngle :: (MonadDOM m) => TouchInit -> Double -> m ()
+setAzimuthAngle self val = liftDOM (void (self ^. jss "azimuthAngle" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-azimuthangle TouchInit.azimuthAngle specification>
+getAzimuthAngle :: (MonadDOM m) => TouchInit -> m (Maybe Double)
+getAzimuthAngle self = liftDOM (((self ^. js "azimuthAngle") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-azimuthangle TouchInit.azimuthAngle specification>
+getAzimuthAngleUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m Double
+getAzimuthAngleUnsafe self = liftDOM ((((self ^. js "azimuthAngle") >>= 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 (((self ^. js "azimuthAngle") >>= valToNumber))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-touchtype TouchInit.touchType specification>
+setTouchType :: (MonadDOM m) => TouchInit -> TouchType -> m ()
+setTouchType self val = liftDOM (void (self ^. jss "touchType" (toJSVal val)))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-touchtype TouchInit.touchType specification>
+getTouchType :: (MonadDOM m) => TouchInit -> m (Maybe TouchType)
+getTouchType self = liftDOM (((self ^. js "touchType") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/touch-events/#dom-touchinit-touchtype TouchInit.touchType specification>
+getTouchTypeUnsafe :: (MonadDOM m, HasCallStack) => TouchInit -> m TouchType
+getTouchTypeUnsafe self = liftDOM ((((self ^. js "touchType") >>= 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 (((self ^. js "touchType") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TouchList.hs b/src/JSDOM/Generated/TouchList.hs
--- a/src/JSDOM/Generated/TouchList.hs
+++ b/src/JSDOM/Generated/TouchList.hs
@@ -1,35 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from touch-events (webref). Do not edit.
 module JSDOM.Generated.TouchList
-       (item, item_, getLength, TouchList(..), gTypeTouchList) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+       (item, item_, itemUnsafe, itemUnchecked, getLength, TouchList(..), gTypeTouchList)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchList.item Mozilla TouchList.item documentation> 
-item :: (MonadDOM m) => TouchList -> Word -> m Touch
-item self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchList.item Mozilla TouchList.item documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TouchList/item MDN TouchList.item documentation>
 item_ :: (MonadDOM m) => TouchList -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+item_ self index = liftDOM (void (self ^. jsf "item" [toJSVal index]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchList.length Mozilla TouchList.length documentation> 
+-- | <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 ((((self ^. jsf "item" [toJSVal 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 (((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TouchList/length MDN TouchList.length documentation>
 getLength :: (MonadDOM m) => TouchList -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/TrackEvent.hs b/src/JSDOM/Generated/TrackEvent.hs
--- a/src/JSDOM/Generated/TrackEvent.hs
+++ b/src/JSDOM/Generated/TrackEvent.hs
@@ -1,47 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.TrackEvent
-       (newTrackEvent, getTrack, getTrackUnsafe, getTrackUnchecked,
-        TrackEvent(..), gTypeTrackEvent)
+       (newTrackEvent, getTrack, getTrackUnsafe, getTrackUnchecked, TrackEvent(..), gTypeTrackEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent Mozilla TrackEvent documentation> 
-newTrackEvent ::
-              (MonadDOM m, ToJSString type') =>
-                type' -> Maybe TrackEventInit -> m TrackEvent
-newTrackEvent type' eventInitDict
-  = liftDOM
-      (TrackEvent <$>
-         new (jsg "TrackEvent") [toJSVal type', toJSVal eventInitDict])
+-- | <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 (((new (jsg "TrackEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent.track Mozilla TrackEvent.track documentation> 
-getTrack :: (MonadDOM m) => TrackEvent -> m (Maybe Track)
-getTrack self = liftDOM ((self ^. js "track") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/TrackEvent/track MDN TrackEvent.track documentation>
+getTrack :: (MonadDOM m) => TrackEvent -> m (Maybe VideoTrackOrAudioTrackOrTextTrack)
+getTrack self = liftDOM (((self ^. js "track") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent.track Mozilla TrackEvent.track documentation> 
-getTrackUnsafe ::
-               (MonadDOM m, HasCallStack) => TrackEvent -> m Track
-getTrackUnsafe self
-  = liftDOM
-      (((self ^. js "track") >>= fromJSVal) >>=
-         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 ((((self ^. js "track") >>= 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 :: (MonadDOM m) => TrackEvent -> m Track
-getTrackUnchecked self
-  = liftDOM ((self ^. js "track") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/TrackEvent/track MDN TrackEvent.track documentation>
+getTrackUnchecked :: (MonadDOM m) => TrackEvent -> m VideoTrackOrAudioTrackOrTextTrack
+getTrackUnchecked self = liftDOM (((self ^. js "track") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TrackEventInit.hs b/src/JSDOM/Generated/TrackEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TrackEventInit.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.TrackEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/media.html#trackeventinit TrackEventInit specification>
+newTrackEventInit :: (MonadDOM m) => m TrackEventInit
+newTrackEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+setTrack :: (MonadDOM m, IsVideoTrackOrAudioTrackOrTextTrack val) => TrackEventInit -> Maybe val -> m ()
+setTrack self val = liftDOM (void (self ^. jss "track" (toJSVal val)))
+
+getTrack :: (MonadDOM m) => TrackEventInit -> m (Maybe VideoTrackOrAudioTrackOrTextTrack)
+getTrack self = liftDOM (((self ^. js "track") >>= fromJSValUnchecked))
+
+getTrackUnsafe :: (MonadDOM m, HasCallStack) => TrackEventInit -> m VideoTrackOrAudioTrackOrTextTrack
+getTrackUnsafe self = liftDOM ((((self ^. js "track") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getTrackUnchecked :: (MonadDOM m) => TrackEventInit -> m VideoTrackOrAudioTrackOrTextTrack
+getTrackUnchecked self = liftDOM (((self ^. js "track") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TransformStream.hs b/src/JSDOM/Generated/TransformStream.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TransformStream.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module JSDOM.Generated.TransformStream
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "TransformStream") [P.maybe (P.return jsUndefined) toJSVal transformer, P.maybe (P.return jsUndefined) toJSVal writableStrategy, P.maybe (P.return jsUndefined) toJSVal readableStrategy]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TransformStream/readable MDN TransformStream.readable documentation>
+getReadable :: (MonadDOM m) => TransformStream -> m ReadableStream
+getReadable self = liftDOM (((self ^. js "readable") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TransformStream/writable MDN TransformStream.writable documentation>
+getWritable :: (MonadDOM m) => TransformStream -> m WritableStream
+getWritable self = liftDOM (((self ^. js "writable") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TransformStreamDefaultController.hs b/src/JSDOM/Generated/TransformStreamDefaultController.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TransformStreamDefaultController.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module JSDOM.Generated.TransformStreamDefaultController
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/enqueue MDN TransformStreamDefaultController.enqueue documentation>
+enqueue :: (MonadDOM m) => TransformStreamDefaultController -> JSVal -> m ()
+enqueue self chunk = liftDOM (void (self ^. jsf "enqueue" [toJSVal chunk]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/error MDN TransformStreamDefaultController.error documentation>
+error :: (MonadDOM m) => TransformStreamDefaultController -> JSVal -> m ()
+error self reason = liftDOM (void (self ^. jsf "error" [toJSVal reason]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/terminate MDN TransformStreamDefaultController.terminate documentation>
+terminate :: (MonadDOM m) => TransformStreamDefaultController -> m ()
+terminate self = liftDOM (void (self ^. jsf "terminate" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/desiredSize MDN TransformStreamDefaultController.desiredSize documentation>
+getDesiredSize :: (MonadDOM m) => TransformStreamDefaultController -> m (Maybe Double)
+getDesiredSize self = liftDOM (((self ^. js "desiredSize") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TransformStreamDefaultController/desiredSize MDN TransformStreamDefaultController.desiredSize documentation>
+getDesiredSizeUnsafe :: (MonadDOM m, HasCallStack) => TransformStreamDefaultController -> m Double
+getDesiredSizeUnsafe self = liftDOM ((((self ^. js "desiredSize") >>= 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 (((self ^. js "desiredSize") >>= valToNumber))
diff --git a/src/JSDOM/Generated/TransitionEvent.hs b/src/JSDOM/Generated/TransitionEvent.hs
--- a/src/JSDOM/Generated/TransitionEvent.hs
+++ b/src/JSDOM/Generated/TransitionEvent.hs
@@ -1,48 +1,44 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-transitions-1 (webref). Do not edit.
 module JSDOM.Generated.TransitionEvent
-       (newTransitionEvent, getPropertyName, getElapsedTime,
-        getPseudoElement, TransitionEvent(..), gTypeTransitionEvent)
+       (newTransitionEvent, getPropertyName, getElapsedTime, getPseudoElement, getAnimation, getAnimationUnsafe, getAnimationUnchecked, TransitionEvent(..), gTypeTransitionEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent Mozilla TransitionEvent documentation> 
-newTransitionEvent ::
-                   (MonadDOM m, ToJSString type') =>
-                     type' -> Maybe TransitionEventInit -> m TransitionEvent
-newTransitionEvent type' transitionEventInitDict
-  = liftDOM
-      (TransitionEvent <$>
-         new (jsg "TransitionEvent")
-           [toJSVal type', toJSVal transitionEventInitDict])
+-- | <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 (((new (jsg "TransitionEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal transitionEventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent.propertyName Mozilla TransitionEvent.propertyName documentation> 
-getPropertyName ::
-                (MonadDOM m, FromJSString result) => TransitionEvent -> m result
-getPropertyName self
-  = liftDOM ((self ^. js "propertyName") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/TransitionEvent/propertyName MDN TransitionEvent.propertyName documentation>
+getPropertyName :: (MonadDOM m, FromJSString result) => TransitionEvent -> m result
+getPropertyName self = liftDOM (((self ^. js "propertyName") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent.elapsedTime Mozilla TransitionEvent.elapsedTime documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TransitionEvent/elapsedTime MDN TransitionEvent.elapsedTime documentation>
 getElapsedTime :: (MonadDOM m) => TransitionEvent -> m Double
-getElapsedTime self
-  = liftDOM ((self ^. js "elapsedTime") >>= valToNumber)
+getElapsedTime self = liftDOM (((self ^. js "elapsedTime") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent.pseudoElement Mozilla TransitionEvent.pseudoElement documentation> 
-getPseudoElement ::
-                 (MonadDOM m, FromJSString result) => TransitionEvent -> m result
-getPseudoElement self
-  = liftDOM ((self ^. js "pseudoElement") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/TransitionEvent/pseudoElement MDN TransitionEvent.pseudoElement documentation>
+getPseudoElement :: (MonadDOM m, FromJSString result) => TransitionEvent -> m result
+getPseudoElement self = liftDOM (((self ^. js "pseudoElement") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TransitionEvent/animation MDN TransitionEvent.animation documentation>
+getAnimation :: (MonadDOM m) => TransitionEvent -> m (Maybe CSSTransition)
+getAnimation self = liftDOM (((self ^. js "animation") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TransitionEvent/animation MDN TransitionEvent.animation documentation>
+getAnimationUnsafe :: (MonadDOM m, HasCallStack) => TransitionEvent -> m CSSTransition
+getAnimationUnsafe self = liftDOM ((((self ^. js "animation") >>= 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 (((self ^. js "animation") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TransitionEventInit.hs b/src/JSDOM/Generated/TransitionEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TransitionEventInit.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-transitions-1 (webref). Do not edit.
+module JSDOM.Generated.TransitionEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/css-transitions-1/#dictdef-transitioneventinit TransitionEventInit specification>
+newTransitionEventInit :: (MonadDOM m) => m TransitionEventInit
+newTransitionEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "propertyName" (toJSVal val)))
+
+-- | <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 (((self ^. js "propertyName") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "propertyName") >>= fromMaybeJSString) >>= 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 (((self ^. js "propertyName") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-transitioneventinit-elapsedtime TransitionEventInit.elapsedTime specification>
+setElapsedTime :: (MonadDOM m) => TransitionEventInit -> Double -> m ()
+setElapsedTime self val = liftDOM (void (self ^. jss "elapsedTime" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-transitioneventinit-elapsedtime TransitionEventInit.elapsedTime specification>
+getElapsedTime :: (MonadDOM m) => TransitionEventInit -> m (Maybe Double)
+getElapsedTime self = liftDOM (((self ^. js "elapsedTime") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-transitions-1/#dom-transitioneventinit-elapsedtime TransitionEventInit.elapsedTime specification>
+getElapsedTimeUnsafe :: (MonadDOM m, HasCallStack) => TransitionEventInit -> m Double
+getElapsedTimeUnsafe self = liftDOM ((((self ^. js "elapsedTime") >>= 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 (((self ^. js "elapsedTime") >>= valToNumber))
+
+-- | <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 (self ^. jss "pseudoElement" (toJSVal val)))
+
+-- | <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 (((self ^. js "pseudoElement") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "pseudoElement") >>= fromMaybeJSString) >>= 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 (((self ^. js "pseudoElement") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "animation" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/css-transitions-2/#dom-transitioneventinit-animation TransitionEventInit.animation specification>
+getAnimation :: (MonadDOM m) => TransitionEventInit -> m (Maybe CSSTransition)
+getAnimation self = liftDOM (((self ^. js "animation") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/css-transitions-2/#dom-transitioneventinit-animation TransitionEventInit.animation specification>
+getAnimationUnsafe :: (MonadDOM m, HasCallStack) => TransitionEventInit -> m CSSTransition
+getAnimationUnsafe self = liftDOM ((((self ^. js "animation") >>= 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 (((self ^. js "animation") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TreeWalker.hs b/src/JSDOM/Generated/TreeWalker.hs
--- a/src/JSDOM/Generated/TreeWalker.hs
+++ b/src/JSDOM/Generated/TreeWalker.hs
@@ -1,204 +1,144 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.TreeWalker
-       (parentNode, parentNode_, parentNodeUnsafe, parentNodeUnchecked,
-        firstChild, firstChild_, firstChildUnsafe, firstChildUnchecked,
-        lastChild, lastChild_, lastChildUnsafe, lastChildUnchecked,
-        previousSibling, previousSibling_, previousSiblingUnsafe,
-        previousSiblingUnchecked, nextSibling, nextSibling_,
-        nextSiblingUnsafe, nextSiblingUnchecked, previousNode,
-        previousNode_, previousNodeUnsafe, previousNodeUnchecked, nextNode,
-        nextNode_, nextNodeUnsafe, nextNodeUnchecked, getRoot,
-        getWhatToShow, setCurrentNode, getCurrentNode, TreeWalker(..),
-        gTypeTreeWalker)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.parentNode Mozilla TreeWalker.parentNode documentation> 
-parentNode :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
-parentNode self
-  = liftDOM ((self ^. jsf "parentNode" ()) >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.parentNode Mozilla TreeWalker.parentNode documentation> 
-parentNode_ :: (MonadDOM m) => TreeWalker -> m ()
-parentNode_ self = liftDOM (void (self ^. jsf "parentNode" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.parentNode Mozilla TreeWalker.parentNode documentation> 
-parentNodeUnsafe ::
-                 (MonadDOM m, HasCallStack) => TreeWalker -> m Node
-parentNodeUnsafe self
-  = liftDOM
-      (((self ^. jsf "parentNode" ()) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.parentNode Mozilla TreeWalker.parentNode documentation> 
-parentNodeUnchecked :: (MonadDOM m) => TreeWalker -> m Node
-parentNodeUnchecked self
-  = liftDOM ((self ^. jsf "parentNode" ()) >>= fromJSValUnchecked)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.firstChild Mozilla TreeWalker.firstChild documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/firstChild MDN TreeWalker.firstChild documentation>
 firstChild :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
-firstChild self
-  = liftDOM ((self ^. jsf "firstChild" ()) >>= fromJSVal)
+firstChild self = liftDOM (((self ^. jsf "firstChild" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.firstChild Mozilla TreeWalker.firstChild documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/firstChild MDN TreeWalker.firstChild documentation>
 firstChild_ :: (MonadDOM m) => TreeWalker -> m ()
 firstChild_ self = liftDOM (void (self ^. jsf "firstChild" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.firstChild Mozilla TreeWalker.firstChild documentation> 
-firstChildUnsafe ::
-                 (MonadDOM m, HasCallStack) => TreeWalker -> m Node
-firstChildUnsafe self
-  = liftDOM
-      (((self ^. jsf "firstChild" ()) >>= fromJSVal) >>=
-         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 ((((self ^. jsf "firstChild" ()) >>= 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> 
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/firstChild MDN TreeWalker.firstChild documentation>
 firstChildUnchecked :: (MonadDOM m) => TreeWalker -> m Node
-firstChildUnchecked self
-  = liftDOM ((self ^. jsf "firstChild" ()) >>= fromJSValUnchecked)
+firstChildUnchecked self = liftDOM (((self ^. jsf "firstChild" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.lastChild Mozilla TreeWalker.lastChild documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/lastChild MDN TreeWalker.lastChild documentation>
 lastChild :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
-lastChild self
-  = liftDOM ((self ^. jsf "lastChild" ()) >>= fromJSVal)
+lastChild self = liftDOM (((self ^. jsf "lastChild" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.lastChild Mozilla TreeWalker.lastChild documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/lastChild MDN TreeWalker.lastChild documentation>
 lastChild_ :: (MonadDOM m) => TreeWalker -> m ()
 lastChild_ self = liftDOM (void (self ^. jsf "lastChild" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.lastChild Mozilla TreeWalker.lastChild documentation> 
-lastChildUnsafe ::
-                (MonadDOM m, HasCallStack) => TreeWalker -> m Node
-lastChildUnsafe self
-  = liftDOM
-      (((self ^. jsf "lastChild" ()) >>= fromJSVal) >>=
-         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 ((((self ^. jsf "lastChild" ()) >>= 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> 
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/lastChild MDN TreeWalker.lastChild documentation>
 lastChildUnchecked :: (MonadDOM m) => TreeWalker -> m Node
-lastChildUnchecked self
-  = liftDOM ((self ^. jsf "lastChild" ()) >>= fromJSValUnchecked)
+lastChildUnchecked self = liftDOM (((self ^. jsf "lastChild" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousSibling Mozilla TreeWalker.previousSibling documentation> 
-previousSibling :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
-previousSibling self
-  = liftDOM ((self ^. jsf "previousSibling" ()) >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/nextNode MDN TreeWalker.nextNode documentation>
+nextNode :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+nextNode self = liftDOM (((self ^. jsf "nextNode" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousSibling Mozilla TreeWalker.previousSibling documentation> 
-previousSibling_ :: (MonadDOM m) => TreeWalker -> m ()
-previousSibling_ self
-  = liftDOM (void (self ^. jsf "previousSibling" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/nextNode MDN TreeWalker.nextNode documentation>
+nextNode_ :: (MonadDOM m) => TreeWalker -> m ()
+nextNode_ self = liftDOM (void (self ^. jsf "nextNode" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousSibling Mozilla TreeWalker.previousSibling documentation> 
-previousSiblingUnsafe ::
-                      (MonadDOM m, HasCallStack) => TreeWalker -> m Node
-previousSiblingUnsafe self
-  = liftDOM
-      (((self ^. jsf "previousSibling" ()) >>= fromJSVal) >>=
-         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 ((((self ^. jsf "nextNode" ()) >>= 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 :: (MonadDOM m) => TreeWalker -> m Node
-previousSiblingUnchecked self
-  = liftDOM
-      ((self ^. jsf "previousSibling" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/nextNode MDN TreeWalker.nextNode documentation>
+nextNodeUnchecked :: (MonadDOM m) => TreeWalker -> m Node
+nextNodeUnchecked self = liftDOM (((self ^. jsf "nextNode" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextSibling Mozilla TreeWalker.nextSibling documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/nextSibling MDN TreeWalker.nextSibling documentation>
 nextSibling :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
-nextSibling self
-  = liftDOM ((self ^. jsf "nextSibling" ()) >>= fromJSVal)
+nextSibling self = liftDOM (((self ^. jsf "nextSibling" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextSibling Mozilla TreeWalker.nextSibling documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/nextSibling MDN TreeWalker.nextSibling documentation>
 nextSibling_ :: (MonadDOM m) => TreeWalker -> m ()
 nextSibling_ self = liftDOM (void (self ^. jsf "nextSibling" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextSibling Mozilla TreeWalker.nextSibling documentation> 
-nextSiblingUnsafe ::
-                  (MonadDOM m, HasCallStack) => TreeWalker -> m Node
-nextSiblingUnsafe self
-  = liftDOM
-      (((self ^. jsf "nextSibling" ()) >>= fromJSVal) >>=
-         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 ((((self ^. jsf "nextSibling" ()) >>= 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> 
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/nextSibling MDN TreeWalker.nextSibling documentation>
 nextSiblingUnchecked :: (MonadDOM m) => TreeWalker -> m Node
-nextSiblingUnchecked self
-  = liftDOM ((self ^. jsf "nextSibling" ()) >>= fromJSValUnchecked)
+nextSiblingUnchecked self = liftDOM (((self ^. jsf "nextSibling" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousNode Mozilla TreeWalker.previousNode documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/parentNode MDN TreeWalker.parentNode documentation>
+parentNode :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+parentNode self = liftDOM (((self ^. jsf "parentNode" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/parentNode MDN TreeWalker.parentNode documentation>
+parentNode_ :: (MonadDOM m) => TreeWalker -> m ()
+parentNode_ self = liftDOM (void (self ^. jsf "parentNode" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/parentNode MDN TreeWalker.parentNode documentation>
+parentNodeUnsafe :: (MonadDOM m, HasCallStack) => TreeWalker -> m Node
+parentNodeUnsafe self = liftDOM ((((self ^. jsf "parentNode" ()) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/parentNode MDN TreeWalker.parentNode documentation>
+parentNodeUnchecked :: (MonadDOM m) => TreeWalker -> m Node
+parentNodeUnchecked self = liftDOM (((self ^. jsf "parentNode" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/previousNode MDN TreeWalker.previousNode documentation>
 previousNode :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
-previousNode self
-  = liftDOM ((self ^. jsf "previousNode" ()) >>= fromJSVal)
+previousNode self = liftDOM (((self ^. jsf "previousNode" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousNode Mozilla TreeWalker.previousNode documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/previousNode MDN TreeWalker.previousNode documentation>
 previousNode_ :: (MonadDOM m) => TreeWalker -> m ()
 previousNode_ self = liftDOM (void (self ^. jsf "previousNode" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousNode Mozilla TreeWalker.previousNode documentation> 
-previousNodeUnsafe ::
-                   (MonadDOM m, HasCallStack) => TreeWalker -> m Node
-previousNodeUnsafe self
-  = liftDOM
-      (((self ^. jsf "previousNode" ()) >>= fromJSVal) >>=
-         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 ((((self ^. jsf "previousNode" ()) >>= 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> 
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/previousNode MDN TreeWalker.previousNode documentation>
 previousNodeUnchecked :: (MonadDOM m) => TreeWalker -> m Node
-previousNodeUnchecked self
-  = liftDOM ((self ^. jsf "previousNode" ()) >>= fromJSValUnchecked)
+previousNodeUnchecked self = liftDOM (((self ^. jsf "previousNode" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextNode Mozilla TreeWalker.nextNode documentation> 
-nextNode :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
-nextNode self = liftDOM ((self ^. jsf "nextNode" ()) >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/previousSibling MDN TreeWalker.previousSibling documentation>
+previousSibling :: (MonadDOM m) => TreeWalker -> m (Maybe Node)
+previousSibling self = liftDOM (((self ^. jsf "previousSibling" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextNode Mozilla TreeWalker.nextNode documentation> 
-nextNode_ :: (MonadDOM m) => TreeWalker -> m ()
-nextNode_ self = liftDOM (void (self ^. jsf "nextNode" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/previousSibling MDN TreeWalker.previousSibling documentation>
+previousSibling_ :: (MonadDOM m) => TreeWalker -> m ()
+previousSibling_ self = liftDOM (void (self ^. jsf "previousSibling" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextNode Mozilla TreeWalker.nextNode documentation> 
-nextNodeUnsafe ::
-               (MonadDOM m, HasCallStack) => TreeWalker -> m Node
-nextNodeUnsafe self
-  = liftDOM
-      (((self ^. jsf "nextNode" ()) >>= fromJSVal) >>=
-         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 ((((self ^. jsf "previousSibling" ()) >>= 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 :: (MonadDOM m) => TreeWalker -> m Node
-nextNodeUnchecked self
-  = liftDOM ((self ^. jsf "nextNode" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/previousSibling MDN TreeWalker.previousSibling documentation>
+previousSiblingUnchecked :: (MonadDOM m) => TreeWalker -> m Node
+previousSiblingUnchecked self = liftDOM (((self ^. jsf "previousSibling" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.root Mozilla TreeWalker.root documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/root MDN TreeWalker.root documentation>
 getRoot :: (MonadDOM m) => TreeWalker -> m Node
-getRoot self = liftDOM ((self ^. js "root") >>= fromJSValUnchecked)
+getRoot self = liftDOM (((self ^. js "root") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.whatToShow Mozilla TreeWalker.whatToShow documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/whatToShow MDN TreeWalker.whatToShow documentation>
 getWhatToShow :: (MonadDOM m) => TreeWalker -> m Word
-getWhatToShow self
-  = liftDOM (round <$> ((self ^. js "whatToShow") >>= valToNumber))
+getWhatToShow self = liftDOM ((P.round <$> ((self ^. js "whatToShow") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.currentNode Mozilla TreeWalker.currentNode documentation> 
-setCurrentNode ::
-               (MonadDOM m, IsNode val) => TreeWalker -> val -> m ()
-setCurrentNode self val
-  = liftDOM (self ^. jss "currentNode" (toJSVal val))
+-- | <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 (self ^. jss "currentNode" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.currentNode Mozilla TreeWalker.currentNode documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/TreeWalker/currentNode MDN TreeWalker.currentNode documentation>
 getCurrentNode :: (MonadDOM m) => TreeWalker -> m Node
-getCurrentNode self
-  = liftDOM ((self ^. js "currentNode") >>= fromJSValUnchecked)
+getCurrentNode self = liftDOM (((self ^. js "currentNode") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TrustedHTML.hs b/src/JSDOM/Generated/TrustedHTML.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TrustedHTML.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module JSDOM.Generated.TrustedHTML
+       (toJSON, toJSON_, TrustedHTML(..), gTypeTrustedHTML)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedHTML/toJSON MDN TrustedHTML.toJSON documentation>
+toJSON :: (MonadDOM m, FromJSString result) => TrustedHTML -> m result
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedHTML/toJSON MDN TrustedHTML.toJSON documentation>
+toJSON_ :: (MonadDOM m) => TrustedHTML -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
diff --git a/src/JSDOM/Generated/TrustedHTMLParserOptions.hs b/src/JSDOM/Generated/TrustedHTMLParserOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TrustedHTMLParserOptions.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module JSDOM.Generated.TrustedHTMLParserOptions
+       (TrustedHTMLParserOptions(..), gTypeTrustedHTMLParserOptions)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/TrustedScript.hs b/src/JSDOM/Generated/TrustedScript.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TrustedScript.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module JSDOM.Generated.TrustedScript
+       (toJSON, toJSON_, TrustedScript(..), gTypeTrustedScript)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedScript/toJSON MDN TrustedScript.toJSON documentation>
+toJSON :: (MonadDOM m, FromJSString result) => TrustedScript -> m result
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedScript/toJSON MDN TrustedScript.toJSON documentation>
+toJSON_ :: (MonadDOM m) => TrustedScript -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
diff --git a/src/JSDOM/Generated/TrustedScriptURL.hs b/src/JSDOM/Generated/TrustedScriptURL.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TrustedScriptURL.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module JSDOM.Generated.TrustedScriptURL
+       (toJSON, toJSON_, TrustedScriptURL(..), gTypeTrustedScriptURL)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedScriptURL/toJSON MDN TrustedScriptURL.toJSON documentation>
+toJSON :: (MonadDOM m, FromJSString result) => TrustedScriptURL -> m result
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedScriptURL/toJSON MDN TrustedScriptURL.toJSON documentation>
+toJSON_ :: (MonadDOM m) => TrustedScriptURL -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
diff --git a/src/JSDOM/Generated/TrustedTypePolicy.hs b/src/JSDOM/Generated/TrustedTypePolicy.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TrustedTypePolicy.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module JSDOM.Generated.TrustedTypePolicy
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "createHTML" ([toJSVal input] ++ P.map toJSVal arguments)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "createHTML" ([toJSVal input] ++ P.map toJSVal arguments)))
+
+-- | <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 (((self ^. jsf "createScript" ([toJSVal input] ++ P.map toJSVal arguments)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "createScript" ([toJSVal input] ++ P.map toJSVal arguments)))
+
+-- | <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 (((self ^. jsf "createScriptURL" ([toJSVal input] ++ P.map toJSVal arguments)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "createScriptURL" ([toJSVal input] ++ P.map toJSVal arguments)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicy/name MDN TrustedTypePolicy.name documentation>
+getName :: (MonadDOM m, FromJSString result) => TrustedTypePolicy -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TrustedTypePolicyFactory.hs b/src/JSDOM/Generated/TrustedTypePolicyFactory.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TrustedTypePolicyFactory.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module JSDOM.Generated.TrustedTypePolicyFactory
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "createPolicy" [toJSVal policyName, P.maybe (P.return jsUndefined) toJSVal policyOptions]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "createPolicy" [toJSVal policyName, P.maybe (P.return jsUndefined) toJSVal policyOptions]))
+
+-- | <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 (((self ^. jsf "getAttributeType" [toJSVal tagName, toJSVal attribute, toJSVal elementNs, toJSVal attrNs]) >>= fromMaybeJSString))
+
+-- | <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 (self ^. jsf "getAttributeType" [toJSVal tagName, toJSVal attribute, toJSVal elementNs, toJSVal 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 ((((self ^. jsf "getAttributeType" [toJSVal tagName, toJSVal attribute, toJSVal elementNs, toJSVal attrNs]) >>= fromMaybeJSString) >>= 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 (((self ^. jsf "getAttributeType" [toJSVal tagName, toJSVal attribute, toJSVal elementNs, toJSVal attrNs]) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "getPropertyType" [toJSVal tagName, toJSVal property, toJSVal elementNs]) >>= fromMaybeJSString))
+
+-- | <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 (self ^. jsf "getPropertyType" [toJSVal tagName, toJSVal property, toJSVal 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 ((((self ^. jsf "getPropertyType" [toJSVal tagName, toJSVal property, toJSVal elementNs]) >>= fromMaybeJSString) >>= 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 (((self ^. jsf "getPropertyType" [toJSVal tagName, toJSVal property, toJSVal elementNs]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/isHTML MDN TrustedTypePolicyFactory.isHTML documentation>
+isHTML :: (MonadDOM m) => TrustedTypePolicyFactory -> JSVal -> m Bool
+isHTML self value = liftDOM (((self ^. jsf "isHTML" [toJSVal value]) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/isHTML MDN TrustedTypePolicyFactory.isHTML documentation>
+isHTML_ :: (MonadDOM m) => TrustedTypePolicyFactory -> JSVal -> m ()
+isHTML_ self value = liftDOM (void (self ^. jsf "isHTML" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/isScript MDN TrustedTypePolicyFactory.isScript documentation>
+isScript :: (MonadDOM m) => TrustedTypePolicyFactory -> JSVal -> m Bool
+isScript self value = liftDOM (((self ^. jsf "isScript" [toJSVal value]) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/isScript MDN TrustedTypePolicyFactory.isScript documentation>
+isScript_ :: (MonadDOM m) => TrustedTypePolicyFactory -> JSVal -> m ()
+isScript_ self value = liftDOM (void (self ^. jsf "isScript" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/isScriptURL MDN TrustedTypePolicyFactory.isScriptURL documentation>
+isScriptURL :: (MonadDOM m) => TrustedTypePolicyFactory -> JSVal -> m Bool
+isScriptURL self value = liftDOM (((self ^. jsf "isScriptURL" [toJSVal value]) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/isScriptURL MDN TrustedTypePolicyFactory.isScriptURL documentation>
+isScriptURL_ :: (MonadDOM m) => TrustedTypePolicyFactory -> JSVal -> m ()
+isScriptURL_ self value = liftDOM (void (self ^. jsf "isScriptURL" [toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/emptyHTML MDN TrustedTypePolicyFactory.emptyHTML documentation>
+getEmptyHTML :: (MonadDOM m) => TrustedTypePolicyFactory -> m TrustedHTML
+getEmptyHTML self = liftDOM (((self ^. js "emptyHTML") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/emptyScript MDN TrustedTypePolicyFactory.emptyScript documentation>
+getEmptyScript :: (MonadDOM m) => TrustedTypePolicyFactory -> m TrustedScript
+getEmptyScript self = liftDOM (((self ^. js "emptyScript") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/defaultPolicy MDN TrustedTypePolicyFactory.defaultPolicy documentation>
+getDefaultPolicy :: (MonadDOM m) => TrustedTypePolicyFactory -> m (Maybe TrustedTypePolicy)
+getDefaultPolicy self = liftDOM (((self ^. js "defaultPolicy") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/TrustedTypePolicyFactory/defaultPolicy MDN TrustedTypePolicyFactory.defaultPolicy documentation>
+getDefaultPolicyUnsafe :: (MonadDOM m, HasCallStack) => TrustedTypePolicyFactory -> m TrustedTypePolicy
+getDefaultPolicyUnsafe self = liftDOM ((((self ^. js "defaultPolicy") >>= 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 (((self ^. js "defaultPolicy") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/TrustedTypePolicyOptions.hs b/src/JSDOM/Generated/TrustedTypePolicyOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/TrustedTypePolicyOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from trusted-types (webref). Do not edit.
+module JSDOM.Generated.TrustedTypePolicyOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/trusted-types/dist/spec/#dictdef-trustedtypepolicyoptions TrustedTypePolicyOptions specification>
+newTrustedTypePolicyOptions :: (MonadDOM m) => m TrustedTypePolicyOptions
+newTrustedTypePolicyOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "createHTML" (toJSVal val)))
+
+-- | <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 (self ^. jss "createScript" (toJSVal val)))
+
+-- | <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 (self ^. jss "createScriptURL" (toJSVal val)))
+
+-- | <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 (self ^. jss "createParserOptions" (toJSVal val)))
diff --git a/src/JSDOM/Generated/UIEvent.hs b/src/JSDOM/Generated/UIEvent.hs
--- a/src/JSDOM/Generated/UIEvent.hs
+++ b/src/JSDOM/Generated/UIEvent.hs
@@ -1,83 +1,44 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
 module JSDOM.Generated.UIEvent
-       (newUIEvent, initUIEvent, getView, getDetail, getLayerX, getLayerY,
-        getPageX, getPageY, getWhich, UIEvent(..), gTypeUIEvent, IsUIEvent,
-        toUIEvent)
+       (newUIEvent, initUIEvent, getView, getViewUnsafe, getViewUnchecked, getDetail, getWhich, UIEvent(..), gTypeUIEvent, IsUIEvent, toUIEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent Mozilla UIEvent documentation> 
-newUIEvent ::
-           (MonadDOM m, ToJSString type', IsUIEventInit eventInitDict) =>
-             type' -> Maybe eventInitDict -> m UIEvent
-newUIEvent type' eventInitDict
-  = liftDOM
-      (UIEvent <$>
-         new (jsg "UIEvent") [toJSVal type', toJSVal eventInitDict])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.initUIEvent Mozilla UIEvent.initUIEvent documentation> 
-initUIEvent ::
-            (MonadDOM m, IsUIEvent self, ToJSString type') =>
-              self ->
-                Maybe type' -> Bool -> Bool -> Maybe Window -> Maybe Int -> m ()
-initUIEvent self type' canBubble cancelable view detail
-  = liftDOM
-      (void
-         ((toUIEvent self) ^. jsf "initUIEvent"
-            [toJSVal type', toJSVal canBubble, toJSVal cancelable,
-             toJSVal view, toJSVal detail]))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.view Mozilla UIEvent.view documentation> 
-getView :: (MonadDOM m, IsUIEvent self) => self -> m Window
-getView self
-  = liftDOM (((toUIEvent self) ^. js "view") >>= fromJSValUnchecked)
+-- | <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 (((new (jsg "UIEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.detail Mozilla UIEvent.detail documentation> 
-getDetail :: (MonadDOM m, IsUIEvent self) => self -> m Int
-getDetail self
-  = liftDOM
-      (round <$> (((toUIEvent self) ^. js "detail") >>= valToNumber))
+-- | <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 ((Types.toUIEvent self) ^. jsf "initUIEvent" [toJSVal typeArg, P.maybe (P.return jsUndefined) toJSVal bubblesArg, P.maybe (P.return jsUndefined) toJSVal cancelableArg, toJSVal viewArg, P.maybe (P.return jsUndefined) toJSVal detailArg]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.layerX Mozilla UIEvent.layerX documentation> 
-getLayerX :: (MonadDOM m, IsUIEvent self) => self -> m Int
-getLayerX self
-  = liftDOM
-      (round <$> (((toUIEvent self) ^. js "layerX") >>= valToNumber))
+-- | <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 ((((Types.toUIEvent self) ^. js "view") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.layerY Mozilla UIEvent.layerY documentation> 
-getLayerY :: (MonadDOM m, IsUIEvent self) => self -> m Int
-getLayerY self
-  = liftDOM
-      (round <$> (((toUIEvent self) ^. js "layerY") >>= valToNumber))
+-- | <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 (((((Types.toUIEvent self) ^. js "view") >>= 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 :: (MonadDOM m, IsUIEvent self) => self -> m Int
-getPageX self
-  = liftDOM
-      (round <$> (((toUIEvent self) ^. js "pageX") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/UIEvent/view MDN UIEvent.view documentation>
+getViewUnchecked :: (MonadDOM m, IsUIEvent self) => self -> m Window
+getViewUnchecked self = liftDOM ((((Types.toUIEvent self) ^. js "view") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.pageY Mozilla UIEvent.pageY documentation> 
-getPageY :: (MonadDOM m, IsUIEvent self) => self -> m Int
-getPageY self
-  = liftDOM
-      (round <$> (((toUIEvent self) ^. js "pageY") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/UIEvent/detail MDN UIEvent.detail documentation>
+getDetail :: (MonadDOM m, IsUIEvent self) => self -> m Int
+getDetail self = liftDOM ((P.round <$> (((Types.toUIEvent self) ^. js "detail") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.which Mozilla UIEvent.which documentation> 
-getWhich :: (MonadDOM m, IsUIEvent self) => self -> m Int
-getWhich self
-  = liftDOM
-      (round <$> (((toUIEvent self) ^. js "which") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/UIEvent/which MDN UIEvent.which documentation>
+getWhich :: (MonadDOM m, IsUIEvent self) => self -> m Word
+getWhich self = liftDOM ((P.round <$> (((Types.toUIEvent self) ^. js "which") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/UIEventInit.hs b/src/JSDOM/Generated/UIEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/UIEventInit.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from uievents (webref). Do not edit.
+module JSDOM.Generated.UIEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/uievents/#dictdef-uieventinit UIEventInit specification>
+newUIEventInit :: (MonadDOM m) => m UIEventInit
+newUIEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toUIEventInit self) ^. jss "view" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-view UIEventInit.view specification>
+getView :: (MonadDOM m, IsUIEventInit self) => self -> m (Maybe Window)
+getView self = liftDOM ((((Types.toUIEventInit self) ^. js "view") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-view UIEventInit.view specification>
+getViewUnsafe :: (MonadDOM m, IsUIEventInit self, HasCallStack) => self -> m Window
+getViewUnsafe self = liftDOM (((((Types.toUIEventInit self) ^. js "view") >>= 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 ((((Types.toUIEventInit self) ^. js "view") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-detail UIEventInit.detail specification>
+setDetail :: (MonadDOM m, IsUIEventInit self) => self -> Int -> m ()
+setDetail self val = liftDOM (void ((Types.toUIEventInit self) ^. jss "detail" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-detail UIEventInit.detail specification>
+getDetail :: (MonadDOM m, IsUIEventInit self) => self -> m (Maybe Int)
+getDetail self = liftDOM ((((Types.toUIEventInit self) ^. js "detail") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-detail UIEventInit.detail specification>
+getDetailUnsafe :: (MonadDOM m, IsUIEventInit self, HasCallStack) => self -> m Int
+getDetailUnsafe self = liftDOM (((((Types.toUIEventInit self) ^. js "detail") >>= 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 ((P.round <$> (((Types.toUIEventInit self) ^. js "detail") >>= valToNumber)))
+
+-- | <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 ((Types.toUIEventInit self) ^. jss "sourceCapabilities" (toJSVal val)))
+
+-- | <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 ((((Types.toUIEventInit self) ^. js "sourceCapabilities") >>= 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 (((((Types.toUIEventInit self) ^. js "sourceCapabilities") >>= 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 ((((Types.toUIEventInit self) ^. js "sourceCapabilities") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-which UIEventInit.which specification>
+setWhich :: (MonadDOM m, IsUIEventInit self) => self -> Word -> m ()
+setWhich self val = liftDOM (void ((Types.toUIEventInit self) ^. jss "which" (toJSVal val)))
+
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-which UIEventInit.which specification>
+getWhich :: (MonadDOM m, IsUIEventInit self) => self -> m (Maybe Word)
+getWhich self = liftDOM ((((Types.toUIEventInit self) ^. js "which") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/uievents/#dom-uieventinit-which UIEventInit.which specification>
+getWhichUnsafe :: (MonadDOM m, IsUIEventInit self, HasCallStack) => self -> m Word
+getWhichUnsafe self = liftDOM (((((Types.toUIEventInit self) ^. js "which") >>= 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 ((P.round <$> (((Types.toUIEventInit self) ^. js "which") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/ULongRange.hs b/src/JSDOM/Generated/ULongRange.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ULongRange.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from mediacapture-streams (webref). Do not edit.
+module JSDOM.Generated.ULongRange
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-ulongrange ULongRange specification>
+newULongRange :: (MonadDOM m) => m ULongRange
+newULongRange = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toULongRange self) ^. jss "max" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-ulongrange-max ULongRange.max specification>
+getMax :: (MonadDOM m, IsULongRange self) => self -> m (Maybe Word)
+getMax self = liftDOM ((((Types.toULongRange self) ^. js "max") >>= 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 (((((Types.toULongRange self) ^. js "max") >>= 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 ((P.round <$> (((Types.toULongRange self) ^. js "max") >>= valToNumber)))
+
+-- | <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 ((Types.toULongRange self) ^. jss "min" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-main/#dom-ulongrange-min ULongRange.min specification>
+getMin :: (MonadDOM m, IsULongRange self) => self -> m (Maybe Word)
+getMin self = liftDOM ((((Types.toULongRange self) ^. js "min") >>= 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 (((((Types.toULongRange self) ^. js "min") >>= 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 ((P.round <$> (((Types.toULongRange self) ^. js "min") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/URL.hs b/src/JSDOM/Generated/URL.hs
--- a/src/JSDOM/Generated/URL.hs
+++ b/src/JSDOM/Generated/URL.hs
@@ -1,186 +1,156 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from url (webref). Do not edit.
 module JSDOM.Generated.URL
-       (newURL, newURL', newURL'', toJSON, toJSON_, createObjectURL,
-        createObjectURL_, revokeObjectURL, createObjectURLSource,
-        createObjectURLSource_, setHref, getHref, getOrigin, setProtocol,
-        getProtocol, setUsername, getUsername, setPassword, getPassword,
-        setHost, getHost, setHostname, getHostname, setPort, getPort,
-        setPathname, getPathname, setHash, getHash, setSearch, getSearch,
-        getSearchParams, URL(..), gTypeURL)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/URL/URL MDN URL. documentation>
 newURL :: (MonadDOM m, ToJSString url) => url -> m URL
-newURL url = liftDOM (URL <$> new (jsg "URL") [toJSVal url])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
-newURL' ::
-        (MonadDOM m, ToJSString url, ToJSString base) =>
-          url -> base -> m URL
-newURL' url base
-  = liftDOM (URL <$> new (jsg "URL") [toJSVal url, toJSVal base])
+newURL url = liftDOM (((new (jsg "URL") [toJSVal url]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
-newURL'' :: (MonadDOM m, ToJSString url) => url -> URL -> m URL
-newURL'' url base
-  = liftDOM (URL <$> new (jsg "URL") [toJSVal url, toJSVal base])
+-- | <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 (((new (jsg "URL") [toJSVal url, P.maybe (P.return jsUndefined) toJSVal base]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.toJSON Mozilla URL.toJSON documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/URL/toJSON MDN URL.toJSON documentation>
 toJSON :: (MonadDOM m, FromJSString result) => URL -> m result
-toJSON self
-  = liftDOM ((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked)
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.toJSON Mozilla URL.toJSON documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/URL/toJSON MDN URL.toJSON documentation>
 toJSON_ :: (MonadDOM m) => URL -> m ()
 toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
-createObjectURL ::
-                (MonadDOM m, IsBlob blob, FromJSString result) => blob -> m result
-createObjectURL blob
-  = liftDOM
-      (((jsg "URL") ^. jsf "createObjectURL" [toJSVal blob]) >>=
-         fromJSValUnchecked)
+-- | <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 ((((jsg "URL") ^. jsf "canParse" [toJSVal url, P.maybe (P.return jsUndefined) toJSVal base]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
-createObjectURL_ :: (MonadDOM m, IsBlob blob) => blob -> m ()
-createObjectURL_ blob
-  = liftDOM
-      (void ((jsg "URL") ^. jsf "createObjectURL" [toJSVal 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 ((jsg "URL") ^. jsf "canParse" [toJSVal url, P.maybe (P.return jsUndefined) toJSVal base]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.revokeObjectURL Mozilla URL.revokeObjectURL documentation> 
-revokeObjectURL :: (MonadDOM m, ToJSString url) => url -> m ()
-revokeObjectURL url
-  = liftDOM
-      (void ((jsg "URL") ^. jsf "revokeObjectURL" [toJSVal url]))
+-- | <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 ((((jsg "URL") ^. jsf "createObjectURL" [toJSVal obj]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
-createObjectURLSource ::
-                      (MonadDOM m, FromJSString result) => MediaSource -> m result
-createObjectURLSource source
-  = liftDOM
-      (((jsg "URL") ^. jsf "createObjectURL" [toJSVal source]) >>=
-         fromJSValUnchecked)
+-- | <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 ((jsg "URL") ^. jsf "createObjectURL" [toJSVal obj]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
-createObjectURLSource_ :: (MonadDOM m) => MediaSource -> m ()
-createObjectURLSource_ source
-  = liftDOM
-      (void ((jsg "URL") ^. jsf "createObjectURL" [toJSVal source]))
+-- | <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 ((((jsg "URL") ^. jsf "parse" [toJSVal url, P.maybe (P.return jsUndefined) toJSVal base]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.href Mozilla URL.href documentation> 
+-- | <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 ((jsg "URL") ^. jsf "parse" [toJSVal url, P.maybe (P.return jsUndefined) toJSVal base]))
+
+-- | <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 (((((jsg "URL") ^. jsf "parse" [toJSVal url, P.maybe (P.return jsUndefined) toJSVal base]) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <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 ((((jsg "URL") ^. jsf "parse" [toJSVal url, P.maybe (P.return jsUndefined) toJSVal base]) >>= fromJSValUnchecked))
+
+-- | <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 ((jsg "URL") ^. jsf "revokeObjectURL" [toJSVal url]))
+
+-- | <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 (self ^. jss "href" (toJSVal val))
+setHref self val = liftDOM (void (self ^. jss "href" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.href Mozilla URL.href documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/URL/href MDN URL.href documentation>
 getHref :: (MonadDOM m, FromJSString result) => URL -> m result
-getHref self = liftDOM ((self ^. js "href") >>= fromJSValUnchecked)
+getHref self = liftDOM (((self ^. js "href") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.origin Mozilla URL.origin documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/URL/origin MDN URL.origin documentation>
 getOrigin :: (MonadDOM m, FromJSString result) => URL -> m result
-getOrigin self
-  = liftDOM ((self ^. js "origin") >>= fromJSValUnchecked)
+getOrigin self = liftDOM (((self ^. js "origin") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.protocol Mozilla URL.protocol documentation> 
+-- | <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 (self ^. jss "protocol" (toJSVal val))
+setProtocol self val = liftDOM (void (self ^. jss "protocol" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.protocol Mozilla URL.protocol documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/URL/protocol MDN URL.protocol documentation>
 getProtocol :: (MonadDOM m, FromJSString result) => URL -> m result
-getProtocol self
-  = liftDOM ((self ^. js "protocol") >>= fromJSValUnchecked)
+getProtocol self = liftDOM (((self ^. js "protocol") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.username Mozilla URL.username documentation> 
+-- | <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 (self ^. jss "username" (toJSVal val))
+setUsername self val = liftDOM (void (self ^. jss "username" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.username Mozilla URL.username documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/URL/username MDN URL.username documentation>
 getUsername :: (MonadDOM m, FromJSString result) => URL -> m result
-getUsername self
-  = liftDOM ((self ^. js "username") >>= fromJSValUnchecked)
+getUsername self = liftDOM (((self ^. js "username") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.password Mozilla URL.password documentation> 
+-- | <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 (self ^. jss "password" (toJSVal val))
+setPassword self val = liftDOM (void (self ^. jss "password" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.password Mozilla URL.password documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/URL/password MDN URL.password documentation>
 getPassword :: (MonadDOM m, FromJSString result) => URL -> m result
-getPassword self
-  = liftDOM ((self ^. js "password") >>= fromJSValUnchecked)
+getPassword self = liftDOM (((self ^. js "password") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.host Mozilla URL.host documentation> 
+-- | <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 (self ^. jss "host" (toJSVal val))
+setHost self val = liftDOM (void (self ^. jss "host" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.host Mozilla URL.host documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/URL/host MDN URL.host documentation>
 getHost :: (MonadDOM m, FromJSString result) => URL -> m result
-getHost self = liftDOM ((self ^. js "host") >>= fromJSValUnchecked)
+getHost self = liftDOM (((self ^. js "host") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.hostname Mozilla URL.hostname documentation> 
+-- | <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 (self ^. jss "hostname" (toJSVal val))
+setHostname self val = liftDOM (void (self ^. jss "hostname" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.hostname Mozilla URL.hostname documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/URL/hostname MDN URL.hostname documentation>
 getHostname :: (MonadDOM m, FromJSString result) => URL -> m result
-getHostname self
-  = liftDOM ((self ^. js "hostname") >>= fromJSValUnchecked)
+getHostname self = liftDOM (((self ^. js "hostname") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.port Mozilla URL.port documentation> 
+-- | <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 (self ^. jss "port" (toJSVal val))
+setPort self val = liftDOM (void (self ^. jss "port" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.port Mozilla URL.port documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/URL/port MDN URL.port documentation>
 getPort :: (MonadDOM m, FromJSString result) => URL -> m result
-getPort self = liftDOM ((self ^. js "port") >>= fromJSValUnchecked)
+getPort self = liftDOM (((self ^. js "port") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.pathname Mozilla URL.pathname documentation> 
+-- | <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 (self ^. jss "pathname" (toJSVal val))
+setPathname self val = liftDOM (void (self ^. jss "pathname" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.pathname Mozilla URL.pathname documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/URL/pathname MDN URL.pathname documentation>
 getPathname :: (MonadDOM m, FromJSString result) => URL -> m result
-getPathname self
-  = liftDOM ((self ^. js "pathname") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.hash Mozilla URL.hash documentation> 
-setHash :: (MonadDOM m, ToJSString val) => URL -> val -> m ()
-setHash self val = liftDOM (self ^. jss "hash" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.hash Mozilla URL.hash documentation> 
-getHash :: (MonadDOM m, FromJSString result) => URL -> m result
-getHash self = liftDOM ((self ^. js "hash") >>= fromJSValUnchecked)
+getPathname self = liftDOM (((self ^. js "pathname") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.search Mozilla URL.search documentation> 
+-- | <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 (self ^. jss "search" (toJSVal val))
+setSearch self val = liftDOM (void (self ^. jss "search" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.search Mozilla URL.search documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/URL/search MDN URL.search documentation>
 getSearch :: (MonadDOM m, FromJSString result) => URL -> m result
-getSearch self
-  = liftDOM ((self ^. js "search") >>= fromJSValUnchecked)
+getSearch self = liftDOM (((self ^. js "search") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.searchParams Mozilla URL.searchParams documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/URL/searchParams MDN URL.searchParams documentation>
 getSearchParams :: (MonadDOM m) => URL -> m URLSearchParams
-getSearchParams self
-  = liftDOM ((self ^. js "searchParams") >>= fromJSValUnchecked)
+getSearchParams self = liftDOM (((self ^. js "searchParams") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "hash" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/URL/hash MDN URL.hash documentation>
+getHash :: (MonadDOM m, FromJSString result) => URL -> m result
+getHash self = liftDOM (((self ^. js "hash") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/URLPattern.hs b/src/JSDOM/Generated/URLPattern.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/URLPattern.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from urlpattern (webref). Do not edit.
+module JSDOM.Generated.URLPattern
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "URLPattern") [toJSVal input, toJSVal baseURL, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 (((new (jsg "URLPattern") [P.maybe (P.return jsUndefined) toJSVal input, P.maybe (P.return jsUndefined) toJSVal options]) >>= 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 (Maybe URLPatternResult)
+exec self input baseURL = liftDOM (((self ^. jsf "exec" [P.maybe (P.return jsUndefined) toJSVal input, P.maybe (P.return jsUndefined) toJSVal 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 (self ^. jsf "exec" [P.maybe (P.return jsUndefined) toJSVal input, P.maybe (P.return jsUndefined) toJSVal 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 ((((self ^. jsf "exec" [P.maybe (P.return jsUndefined) toJSVal input, P.maybe (P.return jsUndefined) toJSVal 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 (((self ^. jsf "exec" [P.maybe (P.return jsUndefined) toJSVal input, P.maybe (P.return jsUndefined) toJSVal baseURL]) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "test" [P.maybe (P.return jsUndefined) toJSVal input, P.maybe (P.return jsUndefined) toJSVal baseURL]) >>= valToBool))
+
+-- | <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 (self ^. jsf "test" [P.maybe (P.return jsUndefined) toJSVal input, P.maybe (P.return jsUndefined) toJSVal baseURL]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/protocol MDN URLPattern.protocol documentation>
+getProtocol :: (MonadDOM m, FromJSString result) => URLPattern -> m result
+getProtocol self = liftDOM (((self ^. js "protocol") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/username MDN URLPattern.username documentation>
+getUsername :: (MonadDOM m, FromJSString result) => URLPattern -> m result
+getUsername self = liftDOM (((self ^. js "username") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/password MDN URLPattern.password documentation>
+getPassword :: (MonadDOM m, FromJSString result) => URLPattern -> m result
+getPassword self = liftDOM (((self ^. js "password") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/hostname MDN URLPattern.hostname documentation>
+getHostname :: (MonadDOM m, FromJSString result) => URLPattern -> m result
+getHostname self = liftDOM (((self ^. js "hostname") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/port MDN URLPattern.port documentation>
+getPort :: (MonadDOM m, FromJSString result) => URLPattern -> m result
+getPort self = liftDOM (((self ^. js "port") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/pathname MDN URLPattern.pathname documentation>
+getPathname :: (MonadDOM m, FromJSString result) => URLPattern -> m result
+getPathname self = liftDOM (((self ^. js "pathname") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/search MDN URLPattern.search documentation>
+getSearch :: (MonadDOM m, FromJSString result) => URLPattern -> m result
+getSearch self = liftDOM (((self ^. js "search") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/hash MDN URLPattern.hash documentation>
+getHash :: (MonadDOM m, FromJSString result) => URLPattern -> m result
+getHash self = liftDOM (((self ^. js "hash") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/URLPattern/hasRegExpGroups MDN URLPattern.hasRegExpGroups documentation>
+getHasRegExpGroups :: (MonadDOM m) => URLPattern -> m Bool
+getHasRegExpGroups self = liftDOM (((self ^. js "hasRegExpGroups") >>= valToBool))
diff --git a/src/JSDOM/Generated/URLPatternComponentResult.hs b/src/JSDOM/Generated/URLPatternComponentResult.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/URLPatternComponentResult.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from urlpattern (webref). Do not edit.
+module JSDOM.Generated.URLPatternComponentResult
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://urlpattern.spec.whatwg.org/#dictdef-urlpatterncomponentresult URLPatternComponentResult specification>
+newURLPatternComponentResult :: (MonadDOM m) => m URLPatternComponentResult
+newURLPatternComponentResult = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterncomponentresult-input URLPatternComponentResult.input specification>
+setInput :: (MonadDOM m, ToJSString val) => URLPatternComponentResult -> val -> m ()
+setInput self val = liftDOM (void (self ^. jss "input" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterncomponentresult-input URLPatternComponentResult.input specification>
+getInput :: (MonadDOM m, FromJSString result) => URLPatternComponentResult -> m (Maybe result)
+getInput self = liftDOM (((self ^. js "input") >>= fromMaybeJSString))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterncomponentresult-input URLPatternComponentResult.input specification>
+getInputUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternComponentResult -> m result
+getInputUnsafe self = liftDOM ((((self ^. js "input") >>= fromMaybeJSString) >>= 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 (((self ^. js "input") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterncomponentresult-groups URLPatternComponentResult.groups specification>
+setGroups :: (MonadDOM m) => URLPatternComponentResult -> (Record JSString JSVal) -> m ()
+setGroups self val = liftDOM (void (self ^. jss "groups" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterncomponentresult-groups URLPatternComponentResult.groups specification>
+getGroups :: (MonadDOM m) => URLPatternComponentResult -> m (Maybe (Record JSString JSVal))
+getGroups self = liftDOM (((self ^. js "groups") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterncomponentresult-groups URLPatternComponentResult.groups specification>
+getGroupsUnsafe :: (MonadDOM m, HasCallStack) => URLPatternComponentResult -> m (Record JSString JSVal)
+getGroupsUnsafe self = liftDOM ((((self ^. js "groups") >>= 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 (((self ^. js "groups") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/URLPatternInit.hs b/src/JSDOM/Generated/URLPatternInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/URLPatternInit.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from urlpattern (webref). Do not edit.
+module JSDOM.Generated.URLPatternInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://urlpattern.spec.whatwg.org/#dictdef-urlpatterninit URLPatternInit specification>
+newURLPatternInit :: (MonadDOM m) => m URLPatternInit
+newURLPatternInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-protocol URLPatternInit.protocol specification>
+setProtocol :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setProtocol self val = liftDOM (void (self ^. jss "protocol" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-protocol URLPatternInit.protocol specification>
+getProtocol :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getProtocol self = liftDOM (((self ^. js "protocol") >>= fromMaybeJSString))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-protocol URLPatternInit.protocol specification>
+getProtocolUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getProtocolUnsafe self = liftDOM ((((self ^. js "protocol") >>= fromMaybeJSString) >>= 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 (((self ^. js "protocol") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-username URLPatternInit.username specification>
+setUsername :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setUsername self val = liftDOM (void (self ^. jss "username" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-username URLPatternInit.username specification>
+getUsername :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getUsername self = liftDOM (((self ^. js "username") >>= fromMaybeJSString))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-username URLPatternInit.username specification>
+getUsernameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getUsernameUnsafe self = liftDOM ((((self ^. js "username") >>= fromMaybeJSString) >>= 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 (((self ^. js "username") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-password URLPatternInit.password specification>
+setPassword :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setPassword self val = liftDOM (void (self ^. jss "password" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-password URLPatternInit.password specification>
+getPassword :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getPassword self = liftDOM (((self ^. js "password") >>= fromMaybeJSString))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-password URLPatternInit.password specification>
+getPasswordUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getPasswordUnsafe self = liftDOM ((((self ^. js "password") >>= fromMaybeJSString) >>= 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 (((self ^. js "password") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-hostname URLPatternInit.hostname specification>
+setHostname :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setHostname self val = liftDOM (void (self ^. jss "hostname" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-hostname URLPatternInit.hostname specification>
+getHostname :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getHostname self = liftDOM (((self ^. js "hostname") >>= fromMaybeJSString))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-hostname URLPatternInit.hostname specification>
+getHostnameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getHostnameUnsafe self = liftDOM ((((self ^. js "hostname") >>= fromMaybeJSString) >>= 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 (((self ^. js "hostname") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-port URLPatternInit.port specification>
+setPort :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setPort self val = liftDOM (void (self ^. jss "port" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-port URLPatternInit.port specification>
+getPort :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getPort self = liftDOM (((self ^. js "port") >>= fromMaybeJSString))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-port URLPatternInit.port specification>
+getPortUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getPortUnsafe self = liftDOM ((((self ^. js "port") >>= fromMaybeJSString) >>= 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 (((self ^. js "port") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-pathname URLPatternInit.pathname specification>
+setPathname :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setPathname self val = liftDOM (void (self ^. jss "pathname" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-pathname URLPatternInit.pathname specification>
+getPathname :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getPathname self = liftDOM (((self ^. js "pathname") >>= fromMaybeJSString))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-pathname URLPatternInit.pathname specification>
+getPathnameUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getPathnameUnsafe self = liftDOM ((((self ^. js "pathname") >>= fromMaybeJSString) >>= 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 (((self ^. js "pathname") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-search URLPatternInit.search specification>
+setSearch :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setSearch self val = liftDOM (void (self ^. jss "search" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-search URLPatternInit.search specification>
+getSearch :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getSearch self = liftDOM (((self ^. js "search") >>= fromMaybeJSString))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-search URLPatternInit.search specification>
+getSearchUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getSearchUnsafe self = liftDOM ((((self ^. js "search") >>= fromMaybeJSString) >>= 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 (((self ^. js "search") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-hash URLPatternInit.hash specification>
+setHash :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setHash self val = liftDOM (void (self ^. jss "hash" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-hash URLPatternInit.hash specification>
+getHash :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getHash self = liftDOM (((self ^. js "hash") >>= fromMaybeJSString))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-hash URLPatternInit.hash specification>
+getHashUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getHashUnsafe self = liftDOM ((((self ^. js "hash") >>= fromMaybeJSString) >>= 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 (((self ^. js "hash") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-baseurl URLPatternInit.baseURL specification>
+setBaseURL :: (MonadDOM m, ToJSString val) => URLPatternInit -> val -> m ()
+setBaseURL self val = liftDOM (void (self ^. jss "baseURL" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-baseurl URLPatternInit.baseURL specification>
+getBaseURL :: (MonadDOM m, FromJSString result) => URLPatternInit -> m (Maybe result)
+getBaseURL self = liftDOM (((self ^. js "baseURL") >>= fromMaybeJSString))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatterninit-baseurl URLPatternInit.baseURL specification>
+getBaseURLUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => URLPatternInit -> m result
+getBaseURLUnsafe self = liftDOM ((((self ^. js "baseURL") >>= fromMaybeJSString) >>= 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 (((self ^. js "baseURL") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/URLPatternOptions.hs b/src/JSDOM/Generated/URLPatternOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/URLPatternOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from urlpattern (webref). Do not edit.
+module JSDOM.Generated.URLPatternOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://urlpattern.spec.whatwg.org/#dictdef-urlpatternoptions URLPatternOptions specification>
+newURLPatternOptions :: (MonadDOM m) => m URLPatternOptions
+newURLPatternOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternoptions-ignorecase URLPatternOptions.ignoreCase specification>
+setIgnoreCase :: (MonadDOM m) => URLPatternOptions -> Bool -> m ()
+setIgnoreCase self val = liftDOM (void (self ^. jss "ignoreCase" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternoptions-ignorecase URLPatternOptions.ignoreCase specification>
+getIgnoreCase :: (MonadDOM m) => URLPatternOptions -> m (Maybe Bool)
+getIgnoreCase self = liftDOM (((self ^. js "ignoreCase") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternoptions-ignorecase URLPatternOptions.ignoreCase specification>
+getIgnoreCaseUnsafe :: (MonadDOM m, HasCallStack) => URLPatternOptions -> m Bool
+getIgnoreCaseUnsafe self = liftDOM ((((self ^. js "ignoreCase") >>= 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 (((self ^. js "ignoreCase") >>= valToBool))
diff --git a/src/JSDOM/Generated/URLPatternResult.hs b/src/JSDOM/Generated/URLPatternResult.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/URLPatternResult.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from urlpattern (webref). Do not edit.
+module JSDOM.Generated.URLPatternResult
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://urlpattern.spec.whatwg.org/#dictdef-urlpatternresult URLPatternResult specification>
+newURLPatternResult :: (MonadDOM m) => m URLPatternResult
+newURLPatternResult = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-inputs URLPatternResult.inputs specification>
+setInputs :: (MonadDOM m, IsURLPatternInput val) => URLPatternResult -> [val] -> m ()
+setInputs self val = liftDOM (void (self ^. jss "inputs" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-inputs URLPatternResult.inputs specification>
+getInputs :: (MonadDOM m) => URLPatternResult -> m (Maybe [URLPatternInput])
+getInputs self = liftDOM (((self ^. js "inputs") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-inputs URLPatternResult.inputs specification>
+getInputsUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m [URLPatternInput]
+getInputsUnsafe self = liftDOM ((((self ^. js "inputs") >>= 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 (((self ^. js "inputs") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-protocol URLPatternResult.protocol specification>
+setProtocol :: (MonadDOM m) => URLPatternResult -> URLPatternComponentResult -> m ()
+setProtocol self val = liftDOM (void (self ^. jss "protocol" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-protocol URLPatternResult.protocol specification>
+getProtocol :: (MonadDOM m) => URLPatternResult -> m (Maybe URLPatternComponentResult)
+getProtocol self = liftDOM (((self ^. js "protocol") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-protocol URLPatternResult.protocol specification>
+getProtocolUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m URLPatternComponentResult
+getProtocolUnsafe self = liftDOM ((((self ^. js "protocol") >>= 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 (((self ^. js "protocol") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-username URLPatternResult.username specification>
+setUsername :: (MonadDOM m) => URLPatternResult -> URLPatternComponentResult -> m ()
+setUsername self val = liftDOM (void (self ^. jss "username" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-username URLPatternResult.username specification>
+getUsername :: (MonadDOM m) => URLPatternResult -> m (Maybe URLPatternComponentResult)
+getUsername self = liftDOM (((self ^. js "username") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-username URLPatternResult.username specification>
+getUsernameUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m URLPatternComponentResult
+getUsernameUnsafe self = liftDOM ((((self ^. js "username") >>= 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 (((self ^. js "username") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-password URLPatternResult.password specification>
+setPassword :: (MonadDOM m) => URLPatternResult -> URLPatternComponentResult -> m ()
+setPassword self val = liftDOM (void (self ^. jss "password" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-password URLPatternResult.password specification>
+getPassword :: (MonadDOM m) => URLPatternResult -> m (Maybe URLPatternComponentResult)
+getPassword self = liftDOM (((self ^. js "password") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-password URLPatternResult.password specification>
+getPasswordUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m URLPatternComponentResult
+getPasswordUnsafe self = liftDOM ((((self ^. js "password") >>= 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 (((self ^. js "password") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-hostname URLPatternResult.hostname specification>
+setHostname :: (MonadDOM m) => URLPatternResult -> URLPatternComponentResult -> m ()
+setHostname self val = liftDOM (void (self ^. jss "hostname" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-hostname URLPatternResult.hostname specification>
+getHostname :: (MonadDOM m) => URLPatternResult -> m (Maybe URLPatternComponentResult)
+getHostname self = liftDOM (((self ^. js "hostname") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-hostname URLPatternResult.hostname specification>
+getHostnameUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m URLPatternComponentResult
+getHostnameUnsafe self = liftDOM ((((self ^. js "hostname") >>= 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 (((self ^. js "hostname") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-port URLPatternResult.port specification>
+setPort :: (MonadDOM m) => URLPatternResult -> URLPatternComponentResult -> m ()
+setPort self val = liftDOM (void (self ^. jss "port" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-port URLPatternResult.port specification>
+getPort :: (MonadDOM m) => URLPatternResult -> m (Maybe URLPatternComponentResult)
+getPort self = liftDOM (((self ^. js "port") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-port URLPatternResult.port specification>
+getPortUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m URLPatternComponentResult
+getPortUnsafe self = liftDOM ((((self ^. js "port") >>= 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 (((self ^. js "port") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-pathname URLPatternResult.pathname specification>
+setPathname :: (MonadDOM m) => URLPatternResult -> URLPatternComponentResult -> m ()
+setPathname self val = liftDOM (void (self ^. jss "pathname" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-pathname URLPatternResult.pathname specification>
+getPathname :: (MonadDOM m) => URLPatternResult -> m (Maybe URLPatternComponentResult)
+getPathname self = liftDOM (((self ^. js "pathname") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-pathname URLPatternResult.pathname specification>
+getPathnameUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m URLPatternComponentResult
+getPathnameUnsafe self = liftDOM ((((self ^. js "pathname") >>= 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 (((self ^. js "pathname") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-search URLPatternResult.search specification>
+setSearch :: (MonadDOM m) => URLPatternResult -> URLPatternComponentResult -> m ()
+setSearch self val = liftDOM (void (self ^. jss "search" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-search URLPatternResult.search specification>
+getSearch :: (MonadDOM m) => URLPatternResult -> m (Maybe URLPatternComponentResult)
+getSearch self = liftDOM (((self ^. js "search") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-search URLPatternResult.search specification>
+getSearchUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m URLPatternComponentResult
+getSearchUnsafe self = liftDOM ((((self ^. js "search") >>= 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 (((self ^. js "search") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-hash URLPatternResult.hash specification>
+setHash :: (MonadDOM m) => URLPatternResult -> URLPatternComponentResult -> m ()
+setHash self val = liftDOM (void (self ^. jss "hash" (toJSVal val)))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-hash URLPatternResult.hash specification>
+getHash :: (MonadDOM m) => URLPatternResult -> m (Maybe URLPatternComponentResult)
+getHash self = liftDOM (((self ^. js "hash") >>= fromJSValUnchecked))
+
+-- | <https://urlpattern.spec.whatwg.org/#dom-urlpatternresult-hash URLPatternResult.hash specification>
+getHashUnsafe :: (MonadDOM m, HasCallStack) => URLPatternResult -> m URLPatternComponentResult
+getHashUnsafe self = liftDOM ((((self ^. js "hash") >>= 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 (((self ^. js "hash") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/URLSearchParams.hs b/src/JSDOM/Generated/URLSearchParams.hs
--- a/src/JSDOM/Generated/URLSearchParams.hs
+++ b/src/JSDOM/Generated/URLSearchParams.hs
@@ -1,120 +1,84 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from url (webref). Do not edit.
 module JSDOM.Generated.URLSearchParams
-       (newURLSearchParams, append, delete, get, get_, getUnsafe,
-        getUnchecked, getAll, getAll_, has, has_, set, sort, toString,
-        toString_, URLSearchParams(..), gTypeURLSearchParams)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams Mozilla URLSearchParams documentation> 
-newURLSearchParams ::
-                   (MonadDOM m, IsURLSearchParamsInit init) =>
-                     init -> m URLSearchParams
-newURLSearchParams init
-  = liftDOM
-      (URLSearchParams <$> new (jsg "URLSearchParams") [toJSVal init])
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/URLSearchParams MDN URLSearchParams. documentation>
+newURLSearchParams :: (MonadDOM m, IsSequenceSequenceStringOrRecordStringStringOrString init) => Maybe init -> m URLSearchParams
+newURLSearchParams init = liftDOM (((new (jsg "URLSearchParams") [P.maybe (P.return jsUndefined) toJSVal init]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.append Mozilla URLSearchParams.append documentation> 
-append ::
-       (MonadDOM m, ToJSString name, ToJSString value) =>
-         URLSearchParams -> name -> value -> m ()
-append self name value
-  = liftDOM
-      (void (self ^. jsf "append" [toJSVal name, toJSVal value]))
+-- | <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 (self ^. jsf "append" [toJSVal name, toJSVal value]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.delete Mozilla URLSearchParams.delete documentation> 
-delete ::
-       (MonadDOM m, ToJSString name) => URLSearchParams -> name -> m ()
-delete self name
-  = liftDOM (void (self ^. jsf "delete" [toJSVal name]))
+-- | <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 (self ^. jsf "delete" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.get Mozilla URLSearchParams.get documentation> 
-get ::
-    (MonadDOM m, ToJSString name, FromJSString result) =>
-      URLSearchParams -> name -> m (Maybe result)
-get self name
-  = liftDOM
-      ((self ^. jsf "get" [toJSVal name]) >>= fromMaybeJSString)
+-- | <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 (self ^. jsf "delete" [toJSVal name, P.maybe (P.return jsUndefined) toJSVal value]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.get Mozilla URLSearchParams.get documentation> 
-get_ ::
-     (MonadDOM m, ToJSString name) => URLSearchParams -> name -> m ()
+-- | <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 (((self ^. jsf "get" [toJSVal name]) >>= fromMaybeJSString))
+
+-- | <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 (self ^. jsf "get" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.get Mozilla URLSearchParams.get documentation> 
-getUnsafe ::
-          (MonadDOM m, ToJSString name, HasCallStack, FromJSString result) =>
-            URLSearchParams -> name -> m result
-getUnsafe self name
-  = liftDOM
-      (((self ^. jsf "get" [toJSVal name]) >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <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 ((((self ^. jsf "get" [toJSVal name]) >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.get Mozilla URLSearchParams.get documentation> 
-getUnchecked ::
-             (MonadDOM m, ToJSString name, FromJSString result) =>
-               URLSearchParams -> name -> m result
-getUnchecked self name
-  = liftDOM
-      ((self ^. jsf "get" [toJSVal 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 (((self ^. jsf "get" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.getAll Mozilla URLSearchParams.getAll documentation> 
-getAll ::
-       (MonadDOM m, ToJSString name, FromJSString result) =>
-         URLSearchParams -> name -> m [result]
-getAll self name
-  = liftDOM
-      ((self ^. jsf "getAll" [toJSVal name]) >>= fromJSArrayUnchecked)
+-- | <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 (((self ^. jsf "getAll" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.getAll Mozilla URLSearchParams.getAll documentation> 
-getAll_ ::
-        (MonadDOM m, ToJSString name) => URLSearchParams -> name -> m ()
-getAll_ self name
-  = liftDOM (void (self ^. jsf "getAll" [toJSVal 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 (self ^. jsf "getAll" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.has Mozilla URLSearchParams.has documentation> 
-has ::
-    (MonadDOM m, ToJSString name) => URLSearchParams -> name -> m Bool
-has self name
-  = liftDOM ((self ^. jsf "has" [toJSVal name]) >>= valToBool)
+-- | <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 (((self ^. jsf "has" [toJSVal name]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.has Mozilla URLSearchParams.has documentation> 
-has_ ::
-     (MonadDOM m, ToJSString name) => URLSearchParams -> name -> m ()
+-- | <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 (self ^. jsf "has" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.set Mozilla URLSearchParams.set documentation> 
-set ::
-    (MonadDOM m, ToJSString name, ToJSString value) =>
-      URLSearchParams -> name -> value -> m ()
-set self name value
-  = liftDOM (void (self ^. jsf "set" [toJSVal name, toJSVal value]))
+-- | <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 (((self ^. jsf "has" [toJSVal name, P.maybe (P.return jsUndefined) toJSVal value]) >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.sort Mozilla URLSearchParams.sort documentation> 
+-- | <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 (self ^. jsf "has" [toJSVal name, P.maybe (P.return jsUndefined) toJSVal value]))
+
+-- | <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 (self ^. jsf "set" [toJSVal name, toJSVal value]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/sort MDN URLSearchParams.sort documentation>
 sort :: (MonadDOM m) => URLSearchParams -> m ()
 sort self = liftDOM (void (self ^. jsf "sort" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.toString Mozilla URLSearchParams.toString documentation> 
-toString ::
-         (MonadDOM m, FromJSString result) => URLSearchParams -> m result
-toString self
-  = liftDOM ((self ^. jsf "toString" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.toString Mozilla URLSearchParams.toString documentation> 
-toString_ :: (MonadDOM m) => URLSearchParams -> m ()
-toString_ self = liftDOM (void (self ^. jsf "toString" ()))
+-- | <https://developer.mozilla.org/docs/Web/API/URLSearchParams/size MDN URLSearchParams.size documentation>
+getSize :: (MonadDOM m) => URLSearchParams -> m Word
+getSize self = liftDOM ((P.round <$> ((self ^. js "size") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/UnknownCredentialOptions.hs b/src/JSDOM/Generated/UnknownCredentialOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/UnknownCredentialOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webauthn-4 (webref). Do not edit.
+module JSDOM.Generated.UnknownCredentialOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webauthn/#dictdef-unknowncredentialoptions UnknownCredentialOptions specification>
+newUnknownCredentialOptions :: (MonadDOM m, ToJSString rpId, ToJSString credentialId) => rpId -> credentialId -> m UnknownCredentialOptions
+newUnknownCredentialOptions rpId credentialId = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "rpId" (toJSVal rpId)) P.>> (o ^. jss "credentialId" (toJSVal credentialId)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-unknowncredentialoptions-rpid UnknownCredentialOptions.rpId specification>
+setRpId :: (MonadDOM m, ToJSString val) => UnknownCredentialOptions -> val -> m ()
+setRpId self val = liftDOM (void (self ^. jss "rpId" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-unknowncredentialoptions-rpid UnknownCredentialOptions.rpId specification>
+getRpId :: (MonadDOM m, FromJSString result) => UnknownCredentialOptions -> m result
+getRpId self = liftDOM (((self ^. js "rpId") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webauthn/#dom-unknowncredentialoptions-credentialid UnknownCredentialOptions.credentialId specification>
+setCredentialId :: (MonadDOM m, ToJSString val) => UnknownCredentialOptions -> val -> m ()
+setCredentialId self val = liftDOM (void (self ^. jss "credentialId" (toJSVal val)))
+
+-- | <https://w3c.github.io/webauthn/#dom-unknowncredentialoptions-credentialid UnknownCredentialOptions.credentialId specification>
+getCredentialId :: (MonadDOM m, FromJSString result) => UnknownCredentialOptions -> m result
+getCredentialId self = liftDOM (((self ^. js "credentialId") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/UserActivation.hs b/src/JSDOM/Generated/UserActivation.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/UserActivation.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.UserActivation
+       (getHasBeenActive, getIsActive, UserActivation(..), gTypeUserActivation)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/UserActivation/hasBeenActive MDN UserActivation.hasBeenActive documentation>
+getHasBeenActive :: (MonadDOM m) => UserActivation -> m Bool
+getHasBeenActive self = liftDOM (((self ^. js "hasBeenActive") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/UserActivation/isActive MDN UserActivation.isActive documentation>
+getIsActive :: (MonadDOM m) => UserActivation -> m Bool
+getIsActive self = liftDOM (((self ^. js "isActive") >>= valToBool))
diff --git a/src/JSDOM/Generated/UserMessageHandler.hs b/src/JSDOM/Generated/UserMessageHandler.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/UserMessageHandler.hs
+++ /dev/null
@@ -1,27 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.UserMessageHandler
-       (postMessage, UserMessageHandler(..), gTypeUserMessageHandler)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/UserMessageHandler.postMessage Mozilla UserMessageHandler.postMessage documentation> 
-postMessage ::
-            (MonadDOM m, IsSerializedScriptValue message) =>
-              UserMessageHandler -> message -> m ()
-postMessage self message
-  = liftDOM (void (self ^. jsf "postMessage" [toJSVal message]))
diff --git a/src/JSDOM/Generated/VTTCue.hs b/src/JSDOM/Generated/VTTCue.hs
--- a/src/JSDOM/Generated/VTTCue.hs
+++ b/src/JSDOM/Generated/VTTCue.hs
@@ -1,119 +1,116 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webvtt1 (webref). Do not edit.
 module JSDOM.Generated.VTTCue
-       (newVTTCue, getCueAsHTML, getCueAsHTML_, setVertical, getVertical,
-        setSnapToLines, getSnapToLines, setLine, getLine, setPosition,
-        getPosition, setSize, getSize, setAlign, getAlign, setText,
-        getText, setRegionId, getRegionId, VTTCue(..), gTypeVTTCue)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue Mozilla VTTCue documentation> 
-newVTTCue ::
-          (MonadDOM m, ToJSString text) =>
-            Double -> Double -> text -> m VTTCue
-newVTTCue startTime endTime text
-  = liftDOM
-      (VTTCue <$>
-         new (jsg "VTTCue")
-           [toJSVal startTime, toJSVal endTime, toJSVal text])
+-- | <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 (((new (jsg "VTTCue") [toJSVal startTime, toJSVal endTime, toJSVal text]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.getCueAsHTML Mozilla VTTCue.getCueAsHTML documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/getCueAsHTML MDN VTTCue.getCueAsHTML documentation>
 getCueAsHTML :: (MonadDOM m) => VTTCue -> m DocumentFragment
-getCueAsHTML self
-  = liftDOM ((self ^. jsf "getCueAsHTML" ()) >>= fromJSValUnchecked)
+getCueAsHTML self = liftDOM (((self ^. jsf "getCueAsHTML" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.getCueAsHTML Mozilla VTTCue.getCueAsHTML documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/getCueAsHTML MDN VTTCue.getCueAsHTML documentation>
 getCueAsHTML_ :: (MonadDOM m) => VTTCue -> m ()
 getCueAsHTML_ self = liftDOM (void (self ^. jsf "getCueAsHTML" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.vertical Mozilla VTTCue.vertical documentation> 
-setVertical ::
-            (MonadDOM m, ToJSString val) => VTTCue -> val -> m ()
-setVertical self val
-  = liftDOM (self ^. jss "vertical" (toJSVal val))
+-- | <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 (self ^. jss "region" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.vertical Mozilla VTTCue.vertical documentation> 
-getVertical ::
-            (MonadDOM m, FromJSString result) => VTTCue -> m result
-getVertical self
-  = liftDOM ((self ^. js "vertical") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/region MDN VTTCue.region documentation>
+getRegion :: (MonadDOM m) => VTTCue -> m (Maybe VTTRegion)
+getRegion self = liftDOM (((self ^. js "region") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.snapToLines Mozilla VTTCue.snapToLines documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/region MDN VTTCue.region documentation>
+getRegionUnsafe :: (MonadDOM m, HasCallStack) => VTTCue -> m VTTRegion
+getRegionUnsafe self = liftDOM ((((self ^. js "region") >>= 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 (((self ^. js "region") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/vertical MDN VTTCue.vertical documentation>
+setVertical :: (MonadDOM m) => VTTCue -> DirectionSetting -> m ()
+setVertical self val = liftDOM (void (self ^. jss "vertical" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/vertical MDN VTTCue.vertical documentation>
+getVertical :: (MonadDOM m) => VTTCue -> m DirectionSetting
+getVertical self = liftDOM (((self ^. js "vertical") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/snapToLines MDN VTTCue.snapToLines documentation>
 setSnapToLines :: (MonadDOM m) => VTTCue -> Bool -> m ()
-setSnapToLines self val
-  = liftDOM (self ^. jss "snapToLines" (toJSVal val))
+setSnapToLines self val = liftDOM (void (self ^. jss "snapToLines" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.snapToLines Mozilla VTTCue.snapToLines documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/snapToLines MDN VTTCue.snapToLines documentation>
 getSnapToLines :: (MonadDOM m) => VTTCue -> m Bool
-getSnapToLines self
-  = liftDOM ((self ^. js "snapToLines") >>= valToBool)
+getSnapToLines self = liftDOM (((self ^. js "snapToLines") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.line Mozilla VTTCue.line documentation> 
-setLine :: (MonadDOM m) => VTTCue -> Double -> m ()
-setLine self val = liftDOM (self ^. jss "line" (toJSVal val))
+-- | <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 (self ^. jss "line" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.line Mozilla VTTCue.line documentation> 
-getLine :: (MonadDOM m) => VTTCue -> m Double
-getLine self = liftDOM ((self ^. js "line") >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/line MDN VTTCue.line documentation>
+getLine :: (MonadDOM m) => VTTCue -> m LineAndPositionSetting
+getLine self = liftDOM (((self ^. js "line") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.position Mozilla VTTCue.position documentation> 
-setPosition :: (MonadDOM m) => VTTCue -> Double -> m ()
-setPosition self val
-  = liftDOM (self ^. jss "position" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/lineAlign MDN VTTCue.lineAlign documentation>
+setLineAlign :: (MonadDOM m) => VTTCue -> LineAlignSetting -> m ()
+setLineAlign self val = liftDOM (void (self ^. jss "lineAlign" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.position Mozilla VTTCue.position documentation> 
-getPosition :: (MonadDOM m) => VTTCue -> m Double
-getPosition self
-  = liftDOM ((self ^. js "position") >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/lineAlign MDN VTTCue.lineAlign documentation>
+getLineAlign :: (MonadDOM m) => VTTCue -> m LineAlignSetting
+getLineAlign self = liftDOM (((self ^. js "lineAlign") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.size Mozilla VTTCue.size documentation> 
+-- | <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 (self ^. jss "position" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/position MDN VTTCue.position documentation>
+getPosition :: (MonadDOM m) => VTTCue -> m LineAndPositionSetting
+getPosition self = liftDOM (((self ^. js "position") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/positionAlign MDN VTTCue.positionAlign documentation>
+setPositionAlign :: (MonadDOM m) => VTTCue -> PositionAlignSetting -> m ()
+setPositionAlign self val = liftDOM (void (self ^. jss "positionAlign" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/positionAlign MDN VTTCue.positionAlign documentation>
+getPositionAlign :: (MonadDOM m) => VTTCue -> m PositionAlignSetting
+getPositionAlign self = liftDOM (((self ^. js "positionAlign") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/size MDN VTTCue.size documentation>
 setSize :: (MonadDOM m) => VTTCue -> Double -> m ()
-setSize self val = liftDOM (self ^. jss "size" (toJSVal val))
+setSize self val = liftDOM (void (self ^. jss "size" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.size Mozilla VTTCue.size documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/size MDN VTTCue.size documentation>
 getSize :: (MonadDOM m) => VTTCue -> m Double
-getSize self = liftDOM ((self ^. js "size") >>= valToNumber)
+getSize self = liftDOM (((self ^. js "size") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.align Mozilla VTTCue.align documentation> 
-setAlign :: (MonadDOM m, ToJSString val) => VTTCue -> val -> m ()
-setAlign self val = liftDOM (self ^. jss "align" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/align MDN VTTCue.align documentation>
+setAlign :: (MonadDOM m) => VTTCue -> AlignSetting -> m ()
+setAlign self val = liftDOM (void (self ^. jss "align" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.align Mozilla VTTCue.align documentation> 
-getAlign :: (MonadDOM m, FromJSString result) => VTTCue -> m result
-getAlign self
-  = liftDOM ((self ^. js "align") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/align MDN VTTCue.align documentation>
+getAlign :: (MonadDOM m) => VTTCue -> m AlignSetting
+getAlign self = liftDOM (((self ^. js "align") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.text Mozilla VTTCue.text documentation> 
+-- | <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 (self ^. jss "text" (toJSVal val))
+setText self val = liftDOM (void (self ^. jss "text" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.text Mozilla VTTCue.text documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTCue/text MDN VTTCue.text documentation>
 getText :: (MonadDOM m, FromJSString result) => VTTCue -> m result
-getText self = liftDOM ((self ^. js "text") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.regionId Mozilla VTTCue.regionId documentation> 
-setRegionId ::
-            (MonadDOM m, ToJSString val) => VTTCue -> val -> m ()
-setRegionId self val
-  = liftDOM (self ^. jss "regionId" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.regionId Mozilla VTTCue.regionId documentation> 
-getRegionId ::
-            (MonadDOM m, FromJSString result) => VTTCue -> m result
-getRegionId self
-  = liftDOM ((self ^. js "regionId") >>= fromJSValUnchecked)
+getText self = liftDOM (((self ^. js "text") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/VTTRegion.hs b/src/JSDOM/Generated/VTTRegion.hs
--- a/src/JSDOM/Generated/VTTRegion.hs
+++ b/src/JSDOM/Generated/VTTRegion.hs
@@ -1,109 +1,84 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webvtt1 (webref). Do not edit.
 module JSDOM.Generated.VTTRegion
-       (newVTTRegion, getTrack, setId, getId, setWidth, getWidth,
-        setHeight, getHeight, setRegionAnchorX, getRegionAnchorX,
-        setRegionAnchorY, getRegionAnchorY, setViewportAnchorX,
-        getViewportAnchorX, setViewportAnchorY, getViewportAnchorY,
-        setScroll, getScroll, VTTRegion(..), gTypeVTTRegion)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion Mozilla VTTRegion documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/VTTRegion MDN VTTRegion. documentation>
 newVTTRegion :: (MonadDOM m) => m VTTRegion
-newVTTRegion = liftDOM (VTTRegion <$> new (jsg "VTTRegion") ())
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.track Mozilla VTTRegion.track documentation> 
-getTrack :: (MonadDOM m) => VTTRegion -> m TextTrack
-getTrack self
-  = liftDOM ((self ^. js "track") >>= fromJSValUnchecked)
+newVTTRegion = liftDOM (((new (jsg "VTTRegion") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.id Mozilla VTTRegion.id documentation> 
+-- | <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 (self ^. jss "id" (toJSVal val))
+setId self val = liftDOM (void (self ^. jss "id" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.id Mozilla VTTRegion.id documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/id MDN VTTRegion.id documentation>
 getId :: (MonadDOM m, FromJSString result) => VTTRegion -> m result
-getId self = liftDOM ((self ^. js "id") >>= fromJSValUnchecked)
+getId self = liftDOM (((self ^. js "id") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.width Mozilla VTTRegion.width documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/width MDN VTTRegion.width documentation>
 setWidth :: (MonadDOM m) => VTTRegion -> Double -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.width Mozilla VTTRegion.width documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/width MDN VTTRegion.width documentation>
 getWidth :: (MonadDOM m) => VTTRegion -> m Double
-getWidth self = liftDOM ((self ^. js "width") >>= valToNumber)
+getWidth self = liftDOM (((self ^. js "width") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.height Mozilla VTTRegion.height documentation> 
-setHeight :: (MonadDOM m) => VTTRegion -> Int -> m ()
-setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/lines MDN VTTRegion.lines documentation>
+setLines :: (MonadDOM m) => VTTRegion -> Word -> m ()
+setLines self val = liftDOM (void (self ^. jss "lines" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.height Mozilla VTTRegion.height documentation> 
-getHeight :: (MonadDOM m) => VTTRegion -> m Int
-getHeight self
-  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/lines MDN VTTRegion.lines documentation>
+getLines :: (MonadDOM m) => VTTRegion -> m Word
+getLines self = liftDOM ((P.round <$> ((self ^. js "lines") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorX Mozilla VTTRegion.regionAnchorX documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/regionAnchorX MDN VTTRegion.regionAnchorX documentation>
 setRegionAnchorX :: (MonadDOM m) => VTTRegion -> Double -> m ()
-setRegionAnchorX self val
-  = liftDOM (self ^. jss "regionAnchorX" (toJSVal val))
+setRegionAnchorX self val = liftDOM (void (self ^. jss "regionAnchorX" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorX Mozilla VTTRegion.regionAnchorX documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/regionAnchorX MDN VTTRegion.regionAnchorX documentation>
 getRegionAnchorX :: (MonadDOM m) => VTTRegion -> m Double
-getRegionAnchorX self
-  = liftDOM ((self ^. js "regionAnchorX") >>= valToNumber)
+getRegionAnchorX self = liftDOM (((self ^. js "regionAnchorX") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorY Mozilla VTTRegion.regionAnchorY documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/regionAnchorY MDN VTTRegion.regionAnchorY documentation>
 setRegionAnchorY :: (MonadDOM m) => VTTRegion -> Double -> m ()
-setRegionAnchorY self val
-  = liftDOM (self ^. jss "regionAnchorY" (toJSVal val))
+setRegionAnchorY self val = liftDOM (void (self ^. jss "regionAnchorY" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorY Mozilla VTTRegion.regionAnchorY documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/regionAnchorY MDN VTTRegion.regionAnchorY documentation>
 getRegionAnchorY :: (MonadDOM m) => VTTRegion -> m Double
-getRegionAnchorY self
-  = liftDOM ((self ^. js "regionAnchorY") >>= valToNumber)
+getRegionAnchorY self = liftDOM (((self ^. js "regionAnchorY") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorX Mozilla VTTRegion.viewportAnchorX documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/viewportAnchorX MDN VTTRegion.viewportAnchorX documentation>
 setViewportAnchorX :: (MonadDOM m) => VTTRegion -> Double -> m ()
-setViewportAnchorX self val
-  = liftDOM (self ^. jss "viewportAnchorX" (toJSVal val))
+setViewportAnchorX self val = liftDOM (void (self ^. jss "viewportAnchorX" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorX Mozilla VTTRegion.viewportAnchorX documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/viewportAnchorX MDN VTTRegion.viewportAnchorX documentation>
 getViewportAnchorX :: (MonadDOM m) => VTTRegion -> m Double
-getViewportAnchorX self
-  = liftDOM ((self ^. js "viewportAnchorX") >>= valToNumber)
+getViewportAnchorX self = liftDOM (((self ^. js "viewportAnchorX") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorY Mozilla VTTRegion.viewportAnchorY documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/viewportAnchorY MDN VTTRegion.viewportAnchorY documentation>
 setViewportAnchorY :: (MonadDOM m) => VTTRegion -> Double -> m ()
-setViewportAnchorY self val
-  = liftDOM (self ^. jss "viewportAnchorY" (toJSVal val))
+setViewportAnchorY self val = liftDOM (void (self ^. jss "viewportAnchorY" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorY Mozilla VTTRegion.viewportAnchorY documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/viewportAnchorY MDN VTTRegion.viewportAnchorY documentation>
 getViewportAnchorY :: (MonadDOM m) => VTTRegion -> m Double
-getViewportAnchorY self
-  = liftDOM ((self ^. js "viewportAnchorY") >>= valToNumber)
+getViewportAnchorY self = liftDOM (((self ^. js "viewportAnchorY") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.scroll Mozilla VTTRegion.scroll documentation> 
-setScroll ::
-          (MonadDOM m, ToJSString val) => VTTRegion -> val -> m ()
-setScroll self val = liftDOM (self ^. jss "scroll" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/scroll MDN VTTRegion.scroll documentation>
+setScroll :: (MonadDOM m) => VTTRegion -> ScrollSetting -> m ()
+setScroll self val = liftDOM (void (self ^. jss "scroll" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.scroll Mozilla VTTRegion.scroll documentation> 
-getScroll ::
-          (MonadDOM m, FromJSString result) => VTTRegion -> m result
-getScroll self
-  = liftDOM ((self ^. js "scroll") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/VTTRegion/scroll MDN VTTRegion.scroll documentation>
+getScroll :: (MonadDOM m) => VTTRegion -> m ScrollSetting
+getScroll self = liftDOM (((self ^. js "scroll") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/VTTRegionList.hs b/src/JSDOM/Generated/VTTRegionList.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/VTTRegionList.hs
+++ /dev/null
@@ -1,83 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.VTTRegionList
-       (item, item_, itemUnsafe, itemUnchecked, getRegionById,
-        getRegionById_, getRegionByIdUnsafe, getRegionByIdUnchecked,
-        getLength, VTTRegionList(..), gTypeVTTRegionList)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.item Mozilla VTTRegionList.item documentation> 
-item ::
-     (MonadDOM m) => VTTRegionList -> Word -> m (Maybe VTTRegion)
-item self index
-  = liftDOM ((self ^. jsf "item" [toJSVal index]) >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.item Mozilla VTTRegionList.item documentation> 
-item_ :: (MonadDOM m) => VTTRegionList -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.item Mozilla VTTRegionList.item documentation> 
-itemUnsafe ::
-           (MonadDOM m, HasCallStack) => VTTRegionList -> Word -> m VTTRegion
-itemUnsafe self index
-  = liftDOM
-      (((self ^. jsf "item" [toJSVal index]) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.item Mozilla VTTRegionList.item documentation> 
-itemUnchecked ::
-              (MonadDOM m) => VTTRegionList -> Word -> m VTTRegion
-itemUnchecked self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.getRegionById Mozilla VTTRegionList.getRegionById documentation> 
-getRegionById ::
-              (MonadDOM m, ToJSString id) =>
-                VTTRegionList -> id -> m (Maybe VTTRegion)
-getRegionById self id
-  = liftDOM
-      ((self ^. jsf "getRegionById" [toJSVal id]) >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.getRegionById Mozilla VTTRegionList.getRegionById documentation> 
-getRegionById_ ::
-               (MonadDOM m, ToJSString id) => VTTRegionList -> id -> m ()
-getRegionById_ self id
-  = liftDOM (void (self ^. jsf "getRegionById" [toJSVal id]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.getRegionById Mozilla VTTRegionList.getRegionById documentation> 
-getRegionByIdUnsafe ::
-                    (MonadDOM m, ToJSString id, HasCallStack) =>
-                      VTTRegionList -> id -> m VTTRegion
-getRegionByIdUnsafe self id
-  = liftDOM
-      (((self ^. jsf "getRegionById" [toJSVal id]) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.getRegionById Mozilla VTTRegionList.getRegionById documentation> 
-getRegionByIdUnchecked ::
-                       (MonadDOM m, ToJSString id) => VTTRegionList -> id -> m VTTRegion
-getRegionByIdUnchecked self id
-  = liftDOM
-      ((self ^. jsf "getRegionById" [toJSVal id]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.length Mozilla VTTRegionList.length documentation> 
-getLength :: (MonadDOM m) => VTTRegionList -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
diff --git a/src/JSDOM/Generated/ValidityState.hs b/src/JSDOM/Generated/ValidityState.hs
--- a/src/JSDOM/Generated/ValidityState.hs
+++ b/src/JSDOM/Generated/ValidityState.hs
@@ -1,74 +1,60 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.ValidityState
-       (getValueMissing, getTypeMismatch, getPatternMismatch, getTooShort,
-        getTooLong, getRangeUnderflow, getRangeOverflow, getStepMismatch,
-        getBadInput, getCustomError, getValid, ValidityState(..),
-        gTypeValidityState)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.valueMissing Mozilla ValidityState.valueMissing documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/valueMissing MDN ValidityState.valueMissing documentation>
 getValueMissing :: (MonadDOM m) => ValidityState -> m Bool
-getValueMissing self
-  = liftDOM ((self ^. js "valueMissing") >>= valToBool)
+getValueMissing self = liftDOM (((self ^. js "valueMissing") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.typeMismatch Mozilla ValidityState.typeMismatch documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/typeMismatch MDN ValidityState.typeMismatch documentation>
 getTypeMismatch :: (MonadDOM m) => ValidityState -> m Bool
-getTypeMismatch self
-  = liftDOM ((self ^. js "typeMismatch") >>= valToBool)
+getTypeMismatch self = liftDOM (((self ^. js "typeMismatch") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.patternMismatch Mozilla ValidityState.patternMismatch documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/patternMismatch MDN ValidityState.patternMismatch documentation>
 getPatternMismatch :: (MonadDOM m) => ValidityState -> m Bool
-getPatternMismatch self
-  = liftDOM ((self ^. js "patternMismatch") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.tooShort Mozilla ValidityState.tooShort documentation> 
-getTooShort :: (MonadDOM m) => ValidityState -> m Bool
-getTooShort self = liftDOM ((self ^. js "tooShort") >>= valToBool)
+getPatternMismatch self = liftDOM (((self ^. js "patternMismatch") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.tooLong Mozilla ValidityState.tooLong documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/tooLong MDN ValidityState.tooLong documentation>
 getTooLong :: (MonadDOM m) => ValidityState -> m Bool
-getTooLong self = liftDOM ((self ^. js "tooLong") >>= valToBool)
+getTooLong self = liftDOM (((self ^. js "tooLong") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.rangeUnderflow Mozilla ValidityState.rangeUnderflow documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/tooShort MDN ValidityState.tooShort documentation>
+getTooShort :: (MonadDOM m) => ValidityState -> m Bool
+getTooShort self = liftDOM (((self ^. js "tooShort") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/rangeUnderflow MDN ValidityState.rangeUnderflow documentation>
 getRangeUnderflow :: (MonadDOM m) => ValidityState -> m Bool
-getRangeUnderflow self
-  = liftDOM ((self ^. js "rangeUnderflow") >>= valToBool)
+getRangeUnderflow self = liftDOM (((self ^. js "rangeUnderflow") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.rangeOverflow Mozilla ValidityState.rangeOverflow documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/rangeOverflow MDN ValidityState.rangeOverflow documentation>
 getRangeOverflow :: (MonadDOM m) => ValidityState -> m Bool
-getRangeOverflow self
-  = liftDOM ((self ^. js "rangeOverflow") >>= valToBool)
+getRangeOverflow self = liftDOM (((self ^. js "rangeOverflow") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.stepMismatch Mozilla ValidityState.stepMismatch documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/stepMismatch MDN ValidityState.stepMismatch documentation>
 getStepMismatch :: (MonadDOM m) => ValidityState -> m Bool
-getStepMismatch self
-  = liftDOM ((self ^. js "stepMismatch") >>= valToBool)
+getStepMismatch self = liftDOM (((self ^. js "stepMismatch") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.badInput Mozilla ValidityState.badInput documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/badInput MDN ValidityState.badInput documentation>
 getBadInput :: (MonadDOM m) => ValidityState -> m Bool
-getBadInput self = liftDOM ((self ^. js "badInput") >>= valToBool)
+getBadInput self = liftDOM (((self ^. js "badInput") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.customError Mozilla ValidityState.customError documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/customError MDN ValidityState.customError documentation>
 getCustomError :: (MonadDOM m) => ValidityState -> m Bool
-getCustomError self
-  = liftDOM ((self ^. js "customError") >>= valToBool)
+getCustomError self = liftDOM (((self ^. js "customError") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.valid Mozilla ValidityState.valid documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/ValidityState/valid MDN ValidityState.valid documentation>
 getValid :: (MonadDOM m) => ValidityState -> m Bool
-getValid self = liftDOM ((self ^. js "valid") >>= valToBool)
+getValid self = liftDOM (((self ^. js "valid") >>= valToBool))
diff --git a/src/JSDOM/Generated/ValidityStateFlags.hs b/src/JSDOM/Generated/ValidityStateFlags.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ValidityStateFlags.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.ValidityStateFlags
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/custom-elements.html#validitystateflags ValidityStateFlags specification>
+newValidityStateFlags :: (MonadDOM m) => m ValidityStateFlags
+newValidityStateFlags = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+setValueMissing :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setValueMissing self val = liftDOM (void (self ^. jss "valueMissing" (toJSVal val)))
+
+getValueMissing :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getValueMissing self = liftDOM (((self ^. js "valueMissing") >>= fromJSValUnchecked))
+
+getValueMissingUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getValueMissingUnsafe self = liftDOM ((((self ^. js "valueMissing") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getValueMissingUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getValueMissingUnchecked self = liftDOM (((self ^. js "valueMissing") >>= valToBool))
+
+setTypeMismatch :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setTypeMismatch self val = liftDOM (void (self ^. jss "typeMismatch" (toJSVal val)))
+
+getTypeMismatch :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getTypeMismatch self = liftDOM (((self ^. js "typeMismatch") >>= fromJSValUnchecked))
+
+getTypeMismatchUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getTypeMismatchUnsafe self = liftDOM ((((self ^. js "typeMismatch") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getTypeMismatchUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getTypeMismatchUnchecked self = liftDOM (((self ^. js "typeMismatch") >>= valToBool))
+
+setPatternMismatch :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setPatternMismatch self val = liftDOM (void (self ^. jss "patternMismatch" (toJSVal val)))
+
+getPatternMismatch :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getPatternMismatch self = liftDOM (((self ^. js "patternMismatch") >>= fromJSValUnchecked))
+
+getPatternMismatchUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getPatternMismatchUnsafe self = liftDOM ((((self ^. js "patternMismatch") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getPatternMismatchUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getPatternMismatchUnchecked self = liftDOM (((self ^. js "patternMismatch") >>= valToBool))
+
+setTooLong :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setTooLong self val = liftDOM (void (self ^. jss "tooLong" (toJSVal val)))
+
+getTooLong :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getTooLong self = liftDOM (((self ^. js "tooLong") >>= fromJSValUnchecked))
+
+getTooLongUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getTooLongUnsafe self = liftDOM ((((self ^. js "tooLong") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getTooLongUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getTooLongUnchecked self = liftDOM (((self ^. js "tooLong") >>= valToBool))
+
+setTooShort :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setTooShort self val = liftDOM (void (self ^. jss "tooShort" (toJSVal val)))
+
+getTooShort :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getTooShort self = liftDOM (((self ^. js "tooShort") >>= fromJSValUnchecked))
+
+getTooShortUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getTooShortUnsafe self = liftDOM ((((self ^. js "tooShort") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getTooShortUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getTooShortUnchecked self = liftDOM (((self ^. js "tooShort") >>= valToBool))
+
+setRangeUnderflow :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setRangeUnderflow self val = liftDOM (void (self ^. jss "rangeUnderflow" (toJSVal val)))
+
+getRangeUnderflow :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getRangeUnderflow self = liftDOM (((self ^. js "rangeUnderflow") >>= fromJSValUnchecked))
+
+getRangeUnderflowUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getRangeUnderflowUnsafe self = liftDOM ((((self ^. js "rangeUnderflow") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getRangeUnderflowUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getRangeUnderflowUnchecked self = liftDOM (((self ^. js "rangeUnderflow") >>= valToBool))
+
+setRangeOverflow :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setRangeOverflow self val = liftDOM (void (self ^. jss "rangeOverflow" (toJSVal val)))
+
+getRangeOverflow :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getRangeOverflow self = liftDOM (((self ^. js "rangeOverflow") >>= fromJSValUnchecked))
+
+getRangeOverflowUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getRangeOverflowUnsafe self = liftDOM ((((self ^. js "rangeOverflow") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getRangeOverflowUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getRangeOverflowUnchecked self = liftDOM (((self ^. js "rangeOverflow") >>= valToBool))
+
+setStepMismatch :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setStepMismatch self val = liftDOM (void (self ^. jss "stepMismatch" (toJSVal val)))
+
+getStepMismatch :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getStepMismatch self = liftDOM (((self ^. js "stepMismatch") >>= fromJSValUnchecked))
+
+getStepMismatchUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getStepMismatchUnsafe self = liftDOM ((((self ^. js "stepMismatch") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getStepMismatchUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getStepMismatchUnchecked self = liftDOM (((self ^. js "stepMismatch") >>= valToBool))
+
+setBadInput :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setBadInput self val = liftDOM (void (self ^. jss "badInput" (toJSVal val)))
+
+getBadInput :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getBadInput self = liftDOM (((self ^. js "badInput") >>= fromJSValUnchecked))
+
+getBadInputUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getBadInputUnsafe self = liftDOM ((((self ^. js "badInput") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getBadInputUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getBadInputUnchecked self = liftDOM (((self ^. js "badInput") >>= valToBool))
+
+setCustomError :: (MonadDOM m) => ValidityStateFlags -> Bool -> m ()
+setCustomError self val = liftDOM (void (self ^. jss "customError" (toJSVal val)))
+
+getCustomError :: (MonadDOM m) => ValidityStateFlags -> m (Maybe Bool)
+getCustomError self = liftDOM (((self ^. js "customError") >>= fromJSValUnchecked))
+
+getCustomErrorUnsafe :: (MonadDOM m, HasCallStack) => ValidityStateFlags -> m Bool
+getCustomErrorUnsafe self = liftDOM ((((self ^. js "customError") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getCustomErrorUnchecked :: (MonadDOM m) => ValidityStateFlags -> m Bool
+getCustomErrorUnchecked self = liftDOM (((self ^. js "customError") >>= valToBool))
diff --git a/src/JSDOM/Generated/VideoColorSpace.hs b/src/JSDOM/Generated/VideoColorSpace.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoColorSpace.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.VideoColorSpace
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/VideoColorSpace MDN VideoColorSpace. documentation>
+newVideoColorSpace :: (MonadDOM m) => Maybe VideoColorSpaceInit -> m VideoColorSpace
+newVideoColorSpace init = liftDOM (((new (jsg "VideoColorSpace") [P.maybe (P.return jsUndefined) toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/toJSON MDN VideoColorSpace.toJSON documentation>
+toJSON :: (MonadDOM m) => VideoColorSpace -> m VideoColorSpaceInit
+toJSON self = liftDOM (((self ^. jsf "toJSON" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/toJSON MDN VideoColorSpace.toJSON documentation>
+toJSON_ :: (MonadDOM m) => VideoColorSpace -> m ()
+toJSON_ self = liftDOM (void (self ^. jsf "toJSON" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/primaries MDN VideoColorSpace.primaries documentation>
+getPrimaries :: (MonadDOM m) => VideoColorSpace -> m (Maybe VideoColorPrimaries)
+getPrimaries self = liftDOM (((self ^. js "primaries") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/primaries MDN VideoColorSpace.primaries documentation>
+getPrimariesUnsafe :: (MonadDOM m, HasCallStack) => VideoColorSpace -> m VideoColorPrimaries
+getPrimariesUnsafe self = liftDOM ((((self ^. js "primaries") >>= 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 (((self ^. js "primaries") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/transfer MDN VideoColorSpace.transfer documentation>
+getTransfer :: (MonadDOM m) => VideoColorSpace -> m (Maybe VideoTransferCharacteristics)
+getTransfer self = liftDOM (((self ^. js "transfer") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/transfer MDN VideoColorSpace.transfer documentation>
+getTransferUnsafe :: (MonadDOM m, HasCallStack) => VideoColorSpace -> m VideoTransferCharacteristics
+getTransferUnsafe self = liftDOM ((((self ^. js "transfer") >>= 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 (((self ^. js "transfer") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/matrix MDN VideoColorSpace.matrix documentation>
+getMatrix :: (MonadDOM m) => VideoColorSpace -> m (Maybe VideoMatrixCoefficients)
+getMatrix self = liftDOM (((self ^. js "matrix") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/matrix MDN VideoColorSpace.matrix documentation>
+getMatrixUnsafe :: (MonadDOM m, HasCallStack) => VideoColorSpace -> m VideoMatrixCoefficients
+getMatrixUnsafe self = liftDOM ((((self ^. js "matrix") >>= 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 (((self ^. js "matrix") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/fullRange MDN VideoColorSpace.fullRange documentation>
+getFullRange :: (MonadDOM m) => VideoColorSpace -> m (Maybe Bool)
+getFullRange self = liftDOM (((self ^. js "fullRange") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoColorSpace/fullRange MDN VideoColorSpace.fullRange documentation>
+getFullRangeUnsafe :: (MonadDOM m, HasCallStack) => VideoColorSpace -> m Bool
+getFullRangeUnsafe self = liftDOM ((((self ^. js "fullRange") >>= 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 (((self ^. js "fullRange") >>= valToBool))
diff --git a/src/JSDOM/Generated/VideoColorSpaceInit.hs b/src/JSDOM/Generated/VideoColorSpaceInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoColorSpaceInit.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.VideoColorSpaceInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-videocolorspaceinit VideoColorSpaceInit specification>
+newVideoColorSpaceInit :: (MonadDOM m) => m VideoColorSpaceInit
+newVideoColorSpaceInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-primaries VideoColorSpaceInit.primaries specification>
+setPrimaries :: (MonadDOM m) => VideoColorSpaceInit -> Maybe VideoColorPrimaries -> m ()
+setPrimaries self val = liftDOM (void (self ^. jss "primaries" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-primaries VideoColorSpaceInit.primaries specification>
+getPrimaries :: (MonadDOM m) => VideoColorSpaceInit -> m (Maybe VideoColorPrimaries)
+getPrimaries self = liftDOM (((self ^. js "primaries") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-primaries VideoColorSpaceInit.primaries specification>
+getPrimariesUnsafe :: (MonadDOM m, HasCallStack) => VideoColorSpaceInit -> m VideoColorPrimaries
+getPrimariesUnsafe self = liftDOM ((((self ^. js "primaries") >>= 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 (((self ^. js "primaries") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-transfer VideoColorSpaceInit.transfer specification>
+setTransfer :: (MonadDOM m) => VideoColorSpaceInit -> Maybe VideoTransferCharacteristics -> m ()
+setTransfer self val = liftDOM (void (self ^. jss "transfer" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-transfer VideoColorSpaceInit.transfer specification>
+getTransfer :: (MonadDOM m) => VideoColorSpaceInit -> m (Maybe VideoTransferCharacteristics)
+getTransfer self = liftDOM (((self ^. js "transfer") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-transfer VideoColorSpaceInit.transfer specification>
+getTransferUnsafe :: (MonadDOM m, HasCallStack) => VideoColorSpaceInit -> m VideoTransferCharacteristics
+getTransferUnsafe self = liftDOM ((((self ^. js "transfer") >>= 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 (((self ^. js "transfer") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-matrix VideoColorSpaceInit.matrix specification>
+setMatrix :: (MonadDOM m) => VideoColorSpaceInit -> Maybe VideoMatrixCoefficients -> m ()
+setMatrix self val = liftDOM (void (self ^. jss "matrix" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-matrix VideoColorSpaceInit.matrix specification>
+getMatrix :: (MonadDOM m) => VideoColorSpaceInit -> m (Maybe VideoMatrixCoefficients)
+getMatrix self = liftDOM (((self ^. js "matrix") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-matrix VideoColorSpaceInit.matrix specification>
+getMatrixUnsafe :: (MonadDOM m, HasCallStack) => VideoColorSpaceInit -> m VideoMatrixCoefficients
+getMatrixUnsafe self = liftDOM ((((self ^. js "matrix") >>= 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 (((self ^. js "matrix") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-fullrange VideoColorSpaceInit.fullRange specification>
+setFullRange :: (MonadDOM m) => VideoColorSpaceInit -> Maybe Bool -> m ()
+setFullRange self val = liftDOM (void (self ^. jss "fullRange" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-fullrange VideoColorSpaceInit.fullRange specification>
+getFullRange :: (MonadDOM m) => VideoColorSpaceInit -> m (Maybe Bool)
+getFullRange self = liftDOM (((self ^. js "fullRange") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videocolorspaceinit-fullrange VideoColorSpaceInit.fullRange specification>
+getFullRangeUnsafe :: (MonadDOM m, HasCallStack) => VideoColorSpaceInit -> m Bool
+getFullRangeUnsafe self = liftDOM ((((self ^. js "fullRange") >>= 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 (((self ^. js "fullRange") >>= valToBool))
diff --git a/src/JSDOM/Generated/VideoConfiguration.hs b/src/JSDOM/Generated/VideoConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoConfiguration.hs
@@ -0,0 +1,156 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-capabilities (webref). Do not edit.
+module JSDOM.Generated.VideoConfiguration
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "contentType" (toJSVal contentType)) P.>> (o ^. jss "width" (toJSVal width)) P.>> (o ^. jss "height" (toJSVal height)) P.>> (o ^. jss "bitrate" (toJSVal bitrate)) P.>> (o ^. jss "framerate" (toJSVal framerate)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "contentType" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-contenttype VideoConfiguration.contentType specification>
+getContentType :: (MonadDOM m, FromJSString result) => VideoConfiguration -> m result
+getContentType self = liftDOM (((self ^. js "contentType") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-width VideoConfiguration.width specification>
+setWidth :: (MonadDOM m) => VideoConfiguration -> Word -> m ()
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-width VideoConfiguration.width specification>
+getWidth :: (MonadDOM m) => VideoConfiguration -> m Word
+getWidth self = liftDOM ((P.round <$> ((self ^. js "width") >>= valToNumber)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-height VideoConfiguration.height specification>
+setHeight :: (MonadDOM m) => VideoConfiguration -> Word -> m ()
+setHeight self val = liftDOM (void (self ^. jss "height" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-height VideoConfiguration.height specification>
+getHeight :: (MonadDOM m) => VideoConfiguration -> m Word
+getHeight self = liftDOM ((P.round <$> ((self ^. js "height") >>= valToNumber)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-bitrate VideoConfiguration.bitrate specification>
+setBitrate :: (MonadDOM m) => VideoConfiguration -> Word53 -> m ()
+setBitrate self val = liftDOM (void (self ^. jss "bitrate" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-bitrate VideoConfiguration.bitrate specification>
+getBitrate :: (MonadDOM m) => VideoConfiguration -> m Word53
+getBitrate self = liftDOM (((self ^. js "bitrate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-framerate VideoConfiguration.framerate specification>
+setFramerate :: (MonadDOM m) => VideoConfiguration -> Double -> m ()
+setFramerate self val = liftDOM (void (self ^. jss "framerate" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-framerate VideoConfiguration.framerate specification>
+getFramerate :: (MonadDOM m) => VideoConfiguration -> m Double
+getFramerate self = liftDOM (((self ^. js "framerate") >>= valToNumber))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-hasalphachannel VideoConfiguration.hasAlphaChannel specification>
+setHasAlphaChannel :: (MonadDOM m) => VideoConfiguration -> Bool -> m ()
+setHasAlphaChannel self val = liftDOM (void (self ^. jss "hasAlphaChannel" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-hasalphachannel VideoConfiguration.hasAlphaChannel specification>
+getHasAlphaChannel :: (MonadDOM m) => VideoConfiguration -> m (Maybe Bool)
+getHasAlphaChannel self = liftDOM (((self ^. js "hasAlphaChannel") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-hasalphachannel VideoConfiguration.hasAlphaChannel specification>
+getHasAlphaChannelUnsafe :: (MonadDOM m, HasCallStack) => VideoConfiguration -> m Bool
+getHasAlphaChannelUnsafe self = liftDOM ((((self ^. js "hasAlphaChannel") >>= 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 (((self ^. js "hasAlphaChannel") >>= valToBool))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-hdrmetadatatype VideoConfiguration.hdrMetadataType specification>
+setHdrMetadataType :: (MonadDOM m) => VideoConfiguration -> HdrMetadataType -> m ()
+setHdrMetadataType self val = liftDOM (void (self ^. jss "hdrMetadataType" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-hdrmetadatatype VideoConfiguration.hdrMetadataType specification>
+getHdrMetadataType :: (MonadDOM m) => VideoConfiguration -> m (Maybe HdrMetadataType)
+getHdrMetadataType self = liftDOM (((self ^. js "hdrMetadataType") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-hdrmetadatatype VideoConfiguration.hdrMetadataType specification>
+getHdrMetadataTypeUnsafe :: (MonadDOM m, HasCallStack) => VideoConfiguration -> m HdrMetadataType
+getHdrMetadataTypeUnsafe self = liftDOM ((((self ^. js "hdrMetadataType") >>= 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 (((self ^. js "hdrMetadataType") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-colorgamut VideoConfiguration.colorGamut specification>
+setColorGamut :: (MonadDOM m) => VideoConfiguration -> ColorGamut -> m ()
+setColorGamut self val = liftDOM (void (self ^. jss "colorGamut" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-colorgamut VideoConfiguration.colorGamut specification>
+getColorGamut :: (MonadDOM m) => VideoConfiguration -> m (Maybe ColorGamut)
+getColorGamut self = liftDOM (((self ^. js "colorGamut") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-colorgamut VideoConfiguration.colorGamut specification>
+getColorGamutUnsafe :: (MonadDOM m, HasCallStack) => VideoConfiguration -> m ColorGamut
+getColorGamutUnsafe self = liftDOM ((((self ^. js "colorGamut") >>= 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 (((self ^. js "colorGamut") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-transferfunction VideoConfiguration.transferFunction specification>
+setTransferFunction :: (MonadDOM m) => VideoConfiguration -> TransferFunction -> m ()
+setTransferFunction self val = liftDOM (void (self ^. jss "transferFunction" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-transferfunction VideoConfiguration.transferFunction specification>
+getTransferFunction :: (MonadDOM m) => VideoConfiguration -> m (Maybe TransferFunction)
+getTransferFunction self = liftDOM (((self ^. js "transferFunction") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-transferfunction VideoConfiguration.transferFunction specification>
+getTransferFunctionUnsafe :: (MonadDOM m, HasCallStack) => VideoConfiguration -> m TransferFunction
+getTransferFunctionUnsafe self = liftDOM ((((self ^. js "transferFunction") >>= 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 (((self ^. js "transferFunction") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "scalabilityMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-scalabilitymode VideoConfiguration.scalabilityMode specification>
+getScalabilityMode :: (MonadDOM m, FromJSString result) => VideoConfiguration -> m (Maybe result)
+getScalabilityMode self = liftDOM (((self ^. js "scalabilityMode") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-scalabilitymode VideoConfiguration.scalabilityMode specification>
+getScalabilityModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => VideoConfiguration -> m result
+getScalabilityModeUnsafe self = liftDOM ((((self ^. js "scalabilityMode") >>= fromMaybeJSString) >>= 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 (((self ^. js "scalabilityMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-spatialscalability VideoConfiguration.spatialScalability specification>
+setSpatialScalability :: (MonadDOM m) => VideoConfiguration -> Bool -> m ()
+setSpatialScalability self val = liftDOM (void (self ^. jss "spatialScalability" (toJSVal val)))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-spatialscalability VideoConfiguration.spatialScalability specification>
+getSpatialScalability :: (MonadDOM m) => VideoConfiguration -> m (Maybe Bool)
+getSpatialScalability self = liftDOM (((self ^. js "spatialScalability") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/media-capabilities/#dom-videoconfiguration-spatialscalability VideoConfiguration.spatialScalability specification>
+getSpatialScalabilityUnsafe :: (MonadDOM m, HasCallStack) => VideoConfiguration -> m Bool
+getSpatialScalabilityUnsafe self = liftDOM ((((self ^. js "spatialScalability") >>= 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 (((self ^. js "spatialScalability") >>= valToBool))
diff --git a/src/JSDOM/Generated/VideoDecoder.hs b/src/JSDOM/Generated/VideoDecoder.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoDecoder.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.VideoDecoder
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/VideoDecoder MDN VideoDecoder. documentation>
+newVideoDecoder :: (MonadDOM m) => VideoDecoderInit -> m VideoDecoder
+newVideoDecoder init = liftDOM (((new (jsg "VideoDecoder") [toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/close MDN VideoDecoder.close documentation>
+close :: (MonadDOM m) => VideoDecoder -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/configure MDN VideoDecoder.configure documentation>
+configure :: (MonadDOM m) => VideoDecoder -> VideoDecoderConfig -> m ()
+configure self config = liftDOM (void (self ^. jsf "configure" [toJSVal config]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/decode MDN VideoDecoder.decode documentation>
+decode :: (MonadDOM m) => VideoDecoder -> EncodedVideoChunk -> m ()
+decode self chunk = liftDOM (void (self ^. jsf "decode" [toJSVal chunk]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/flush MDN VideoDecoder.flush documentation>
+flush :: (MonadDOM m) => VideoDecoder -> m ()
+flush self = liftDOM (void (((self ^. jsf "flush" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/reset MDN VideoDecoder.reset documentation>
+reset :: (MonadDOM m) => VideoDecoder -> m ()
+reset self = liftDOM (void (self ^. jsf "reset" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/isConfigSupported_static MDN VideoDecoder.isConfigSupported documentation>
+isConfigSupported :: (MonadDOM m) => VideoDecoderConfig -> m VideoDecoderSupport
+isConfigSupported config = liftDOM ((((((jsg "VideoDecoder") ^. jsf "isConfigSupported" [toJSVal config]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/isConfigSupported_static MDN VideoDecoder.isConfigSupported documentation>
+isConfigSupported_ :: (MonadDOM m) => VideoDecoderConfig -> m ()
+isConfigSupported_ config = liftDOM (void ((((jsg "VideoDecoder") ^. jsf "isConfigSupported" [toJSVal config]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/state MDN VideoDecoder.state documentation>
+getState :: (MonadDOM m) => VideoDecoder -> m CodecState
+getState self = liftDOM (((self ^. js "state") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoDecoder/decodeQueueSize MDN VideoDecoder.decodeQueueSize documentation>
+getDecodeQueueSize :: (MonadDOM m) => VideoDecoder -> m Word
+getDecodeQueueSize self = liftDOM ((P.round <$> ((self ^. js "decodeQueueSize") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoder-ondequeue dequeue event>
+dequeue :: EventName VideoDecoder Event
+dequeue = unsafeEventName (toJSString "dequeue")
diff --git a/src/JSDOM/Generated/VideoDecoderConfig.hs b/src/JSDOM/Generated/VideoDecoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoDecoderConfig.hs
@@ -0,0 +1,188 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.VideoDecoderConfig
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-videodecoderconfig VideoDecoderConfig specification>
+newVideoDecoderConfig :: (MonadDOM m, ToJSString codec) => codec -> m VideoDecoderConfig
+newVideoDecoderConfig codec = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "codec" (toJSVal codec)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codec VideoDecoderConfig.codec specification>
+setCodec :: (MonadDOM m, ToJSString val) => VideoDecoderConfig -> val -> m ()
+setCodec self val = liftDOM (void (self ^. jss "codec" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codec VideoDecoderConfig.codec specification>
+getCodec :: (MonadDOM m, FromJSString result) => VideoDecoderConfig -> m result
+getCodec self = liftDOM (((self ^. js "codec") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-description VideoDecoderConfig.description specification>
+setDescription :: (MonadDOM m, IsAllowSharedBufferSource val) => VideoDecoderConfig -> val -> m ()
+setDescription self val = liftDOM (void (self ^. jss "description" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-description VideoDecoderConfig.description specification>
+getDescription :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe AllowSharedBufferSource)
+getDescription self = liftDOM (((self ^. js "description") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-description VideoDecoderConfig.description specification>
+getDescriptionUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m AllowSharedBufferSource
+getDescriptionUnsafe self = liftDOM ((((self ^. js "description") >>= 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 (((self ^. js "description") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codedwidth VideoDecoderConfig.codedWidth specification>
+setCodedWidth :: (MonadDOM m) => VideoDecoderConfig -> Word -> m ()
+setCodedWidth self val = liftDOM (void (self ^. jss "codedWidth" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codedwidth VideoDecoderConfig.codedWidth specification>
+getCodedWidth :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe Word)
+getCodedWidth self = liftDOM (((self ^. js "codedWidth") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codedwidth VideoDecoderConfig.codedWidth specification>
+getCodedWidthUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m Word
+getCodedWidthUnsafe self = liftDOM ((((self ^. js "codedWidth") >>= 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 ((P.round <$> ((self ^. js "codedWidth") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codedheight VideoDecoderConfig.codedHeight specification>
+setCodedHeight :: (MonadDOM m) => VideoDecoderConfig -> Word -> m ()
+setCodedHeight self val = liftDOM (void (self ^. jss "codedHeight" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codedheight VideoDecoderConfig.codedHeight specification>
+getCodedHeight :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe Word)
+getCodedHeight self = liftDOM (((self ^. js "codedHeight") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-codedheight VideoDecoderConfig.codedHeight specification>
+getCodedHeightUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m Word
+getCodedHeightUnsafe self = liftDOM ((((self ^. js "codedHeight") >>= 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 ((P.round <$> ((self ^. js "codedHeight") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-displayaspectwidth VideoDecoderConfig.displayAspectWidth specification>
+setDisplayAspectWidth :: (MonadDOM m) => VideoDecoderConfig -> Word -> m ()
+setDisplayAspectWidth self val = liftDOM (void (self ^. jss "displayAspectWidth" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-displayaspectwidth VideoDecoderConfig.displayAspectWidth specification>
+getDisplayAspectWidth :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe Word)
+getDisplayAspectWidth self = liftDOM (((self ^. js "displayAspectWidth") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-displayaspectwidth VideoDecoderConfig.displayAspectWidth specification>
+getDisplayAspectWidthUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m Word
+getDisplayAspectWidthUnsafe self = liftDOM ((((self ^. js "displayAspectWidth") >>= 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 ((P.round <$> ((self ^. js "displayAspectWidth") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-displayaspectheight VideoDecoderConfig.displayAspectHeight specification>
+setDisplayAspectHeight :: (MonadDOM m) => VideoDecoderConfig -> Word -> m ()
+setDisplayAspectHeight self val = liftDOM (void (self ^. jss "displayAspectHeight" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-displayaspectheight VideoDecoderConfig.displayAspectHeight specification>
+getDisplayAspectHeight :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe Word)
+getDisplayAspectHeight self = liftDOM (((self ^. js "displayAspectHeight") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-displayaspectheight VideoDecoderConfig.displayAspectHeight specification>
+getDisplayAspectHeightUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m Word
+getDisplayAspectHeightUnsafe self = liftDOM ((((self ^. js "displayAspectHeight") >>= 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 ((P.round <$> ((self ^. js "displayAspectHeight") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-colorspace VideoDecoderConfig.colorSpace specification>
+setColorSpace :: (MonadDOM m) => VideoDecoderConfig -> VideoColorSpaceInit -> m ()
+setColorSpace self val = liftDOM (void (self ^. jss "colorSpace" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-colorspace VideoDecoderConfig.colorSpace specification>
+getColorSpace :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe VideoColorSpaceInit)
+getColorSpace self = liftDOM (((self ^. js "colorSpace") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-colorspace VideoDecoderConfig.colorSpace specification>
+getColorSpaceUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m VideoColorSpaceInit
+getColorSpaceUnsafe self = liftDOM ((((self ^. js "colorSpace") >>= 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 (((self ^. js "colorSpace") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-hardwareacceleration VideoDecoderConfig.hardwareAcceleration specification>
+setHardwareAcceleration :: (MonadDOM m) => VideoDecoderConfig -> HardwareAcceleration -> m ()
+setHardwareAcceleration self val = liftDOM (void (self ^. jss "hardwareAcceleration" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-hardwareacceleration VideoDecoderConfig.hardwareAcceleration specification>
+getHardwareAcceleration :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe HardwareAcceleration)
+getHardwareAcceleration self = liftDOM (((self ^. js "hardwareAcceleration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-hardwareacceleration VideoDecoderConfig.hardwareAcceleration specification>
+getHardwareAccelerationUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m HardwareAcceleration
+getHardwareAccelerationUnsafe self = liftDOM ((((self ^. js "hardwareAcceleration") >>= 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 (((self ^. js "hardwareAcceleration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-optimizeforlatency VideoDecoderConfig.optimizeForLatency specification>
+setOptimizeForLatency :: (MonadDOM m) => VideoDecoderConfig -> Bool -> m ()
+setOptimizeForLatency self val = liftDOM (void (self ^. jss "optimizeForLatency" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-optimizeforlatency VideoDecoderConfig.optimizeForLatency specification>
+getOptimizeForLatency :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe Bool)
+getOptimizeForLatency self = liftDOM (((self ^. js "optimizeForLatency") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-optimizeforlatency VideoDecoderConfig.optimizeForLatency specification>
+getOptimizeForLatencyUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m Bool
+getOptimizeForLatencyUnsafe self = liftDOM ((((self ^. js "optimizeForLatency") >>= 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 (((self ^. js "optimizeForLatency") >>= valToBool))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-rotation VideoDecoderConfig.rotation specification>
+setRotation :: (MonadDOM m) => VideoDecoderConfig -> Double -> m ()
+setRotation self val = liftDOM (void (self ^. jss "rotation" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-rotation VideoDecoderConfig.rotation specification>
+getRotation :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe Double)
+getRotation self = liftDOM (((self ^. js "rotation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-rotation VideoDecoderConfig.rotation specification>
+getRotationUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m Double
+getRotationUnsafe self = liftDOM ((((self ^. js "rotation") >>= 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 (((self ^. js "rotation") >>= valToNumber))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-flip VideoDecoderConfig.flip specification>
+setFlip :: (MonadDOM m) => VideoDecoderConfig -> Bool -> m ()
+setFlip self val = liftDOM (void (self ^. jss "flip" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-flip VideoDecoderConfig.flip specification>
+getFlip :: (MonadDOM m) => VideoDecoderConfig -> m (Maybe Bool)
+getFlip self = liftDOM (((self ^. js "flip") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderconfig-flip VideoDecoderConfig.flip specification>
+getFlipUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderConfig -> m Bool
+getFlipUnsafe self = liftDOM ((((self ^. js "flip") >>= 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 (((self ^. js "flip") >>= valToBool))
diff --git a/src/JSDOM/Generated/VideoDecoderInit.hs b/src/JSDOM/Generated/VideoDecoderInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoDecoderInit.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.VideoDecoderInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-videodecoderinit VideoDecoderInit specification>
+newVideoDecoderInit :: (MonadDOM m) => VideoFrameOutputCallback -> WebCodecsErrorCallback -> m VideoDecoderInit
+newVideoDecoderInit output error = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "output" (toJSVal output)) P.>> (o ^. jss "error" (toJSVal error)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderinit-output VideoDecoderInit.output specification>
+setOutput :: (MonadDOM m) => VideoDecoderInit -> VideoFrameOutputCallback -> m ()
+setOutput self val = liftDOM (void (self ^. jss "output" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecoderinit-error VideoDecoderInit.error specification>
+setError :: (MonadDOM m) => VideoDecoderInit -> WebCodecsErrorCallback -> m ()
+setError self val = liftDOM (void (self ^. jss "error" (toJSVal val)))
diff --git a/src/JSDOM/Generated/VideoDecoderSupport.hs b/src/JSDOM/Generated/VideoDecoderSupport.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoDecoderSupport.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.VideoDecoderSupport
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-videodecodersupport VideoDecoderSupport specification>
+newVideoDecoderSupport :: (MonadDOM m) => m VideoDecoderSupport
+newVideoDecoderSupport = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecodersupport-supported VideoDecoderSupport.supported specification>
+setSupported :: (MonadDOM m) => VideoDecoderSupport -> Bool -> m ()
+setSupported self val = liftDOM (void (self ^. jss "supported" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecodersupport-supported VideoDecoderSupport.supported specification>
+getSupported :: (MonadDOM m) => VideoDecoderSupport -> m (Maybe Bool)
+getSupported self = liftDOM (((self ^. js "supported") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecodersupport-supported VideoDecoderSupport.supported specification>
+getSupportedUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderSupport -> m Bool
+getSupportedUnsafe self = liftDOM ((((self ^. js "supported") >>= 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 (((self ^. js "supported") >>= valToBool))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecodersupport-config VideoDecoderSupport.config specification>
+setConfig :: (MonadDOM m) => VideoDecoderSupport -> VideoDecoderConfig -> m ()
+setConfig self val = liftDOM (void (self ^. jss "config" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecodersupport-config VideoDecoderSupport.config specification>
+getConfig :: (MonadDOM m) => VideoDecoderSupport -> m (Maybe VideoDecoderConfig)
+getConfig self = liftDOM (((self ^. js "config") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videodecodersupport-config VideoDecoderSupport.config specification>
+getConfigUnsafe :: (MonadDOM m, HasCallStack) => VideoDecoderSupport -> m VideoDecoderConfig
+getConfigUnsafe self = liftDOM ((((self ^. js "config") >>= 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 (((self ^. js "config") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/VideoEncoder.hs b/src/JSDOM/Generated/VideoEncoder.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoEncoder.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.VideoEncoder
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/VideoEncoder MDN VideoEncoder. documentation>
+newVideoEncoder :: (MonadDOM m) => VideoEncoderInit -> m VideoEncoder
+newVideoEncoder init = liftDOM (((new (jsg "VideoEncoder") [toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/close MDN VideoEncoder.close documentation>
+close :: (MonadDOM m) => VideoEncoder -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/configure MDN VideoEncoder.configure documentation>
+configure :: (MonadDOM m) => VideoEncoder -> VideoEncoderConfig -> m ()
+configure self config = liftDOM (void (self ^. jsf "configure" [toJSVal config]))
+
+-- | <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 (self ^. jsf "encode" [toJSVal frame, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/flush MDN VideoEncoder.flush documentation>
+flush :: (MonadDOM m) => VideoEncoder -> m ()
+flush self = liftDOM (void (((self ^. jsf "flush" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/reset MDN VideoEncoder.reset documentation>
+reset :: (MonadDOM m) => VideoEncoder -> m ()
+reset self = liftDOM (void (self ^. jsf "reset" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/isConfigSupported_static MDN VideoEncoder.isConfigSupported documentation>
+isConfigSupported :: (MonadDOM m) => VideoEncoderConfig -> m VideoEncoderSupport
+isConfigSupported config = liftDOM ((((((jsg "VideoEncoder") ^. jsf "isConfigSupported" [toJSVal config]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/isConfigSupported_static MDN VideoEncoder.isConfigSupported documentation>
+isConfigSupported_ :: (MonadDOM m) => VideoEncoderConfig -> m ()
+isConfigSupported_ config = liftDOM (void ((((jsg "VideoEncoder") ^. jsf "isConfigSupported" [toJSVal config]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/state MDN VideoEncoder.state documentation>
+getState :: (MonadDOM m) => VideoEncoder -> m CodecState
+getState self = liftDOM (((self ^. js "state") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoEncoder/encodeQueueSize MDN VideoEncoder.encodeQueueSize documentation>
+getEncodeQueueSize :: (MonadDOM m) => VideoEncoder -> m Word
+getEncodeQueueSize self = liftDOM ((P.round <$> ((self ^. js "encodeQueueSize") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoder-ondequeue dequeue event>
+dequeue :: EventName VideoEncoder Event
+dequeue = unsafeEventName (toJSString "dequeue")
diff --git a/src/JSDOM/Generated/VideoEncoderConfig.hs b/src/JSDOM/Generated/VideoEncoderConfig.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoEncoderConfig.hs
@@ -0,0 +1,236 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.VideoEncoderConfig
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-videoencoderconfig VideoEncoderConfig specification>
+newVideoEncoderConfig :: (MonadDOM m, ToJSString codec) => codec -> Word -> Word -> m VideoEncoderConfig
+newVideoEncoderConfig codec width height = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "codec" (toJSVal codec)) P.>> (o ^. jss "width" (toJSVal width)) P.>> (o ^. jss "height" (toJSVal height)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-codec VideoEncoderConfig.codec specification>
+setCodec :: (MonadDOM m, ToJSString val) => VideoEncoderConfig -> val -> m ()
+setCodec self val = liftDOM (void (self ^. jss "codec" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-codec VideoEncoderConfig.codec specification>
+getCodec :: (MonadDOM m, FromJSString result) => VideoEncoderConfig -> m result
+getCodec self = liftDOM (((self ^. js "codec") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-width VideoEncoderConfig.width specification>
+setWidth :: (MonadDOM m) => VideoEncoderConfig -> Word -> m ()
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-width VideoEncoderConfig.width specification>
+getWidth :: (MonadDOM m) => VideoEncoderConfig -> m Word
+getWidth self = liftDOM ((P.round <$> ((self ^. js "width") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-height VideoEncoderConfig.height specification>
+setHeight :: (MonadDOM m) => VideoEncoderConfig -> Word -> m ()
+setHeight self val = liftDOM (void (self ^. jss "height" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-height VideoEncoderConfig.height specification>
+getHeight :: (MonadDOM m) => VideoEncoderConfig -> m Word
+getHeight self = liftDOM ((P.round <$> ((self ^. js "height") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-displaywidth VideoEncoderConfig.displayWidth specification>
+setDisplayWidth :: (MonadDOM m) => VideoEncoderConfig -> Word -> m ()
+setDisplayWidth self val = liftDOM (void (self ^. jss "displayWidth" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-displaywidth VideoEncoderConfig.displayWidth specification>
+getDisplayWidth :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe Word)
+getDisplayWidth self = liftDOM (((self ^. js "displayWidth") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-displaywidth VideoEncoderConfig.displayWidth specification>
+getDisplayWidthUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m Word
+getDisplayWidthUnsafe self = liftDOM ((((self ^. js "displayWidth") >>= 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 ((P.round <$> ((self ^. js "displayWidth") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-displayheight VideoEncoderConfig.displayHeight specification>
+setDisplayHeight :: (MonadDOM m) => VideoEncoderConfig -> Word -> m ()
+setDisplayHeight self val = liftDOM (void (self ^. jss "displayHeight" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-displayheight VideoEncoderConfig.displayHeight specification>
+getDisplayHeight :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe Word)
+getDisplayHeight self = liftDOM (((self ^. js "displayHeight") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-displayheight VideoEncoderConfig.displayHeight specification>
+getDisplayHeightUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m Word
+getDisplayHeightUnsafe self = liftDOM ((((self ^. js "displayHeight") >>= 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 ((P.round <$> ((self ^. js "displayHeight") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-bitrate VideoEncoderConfig.bitrate specification>
+setBitrate :: (MonadDOM m) => VideoEncoderConfig -> Word53 -> m ()
+setBitrate self val = liftDOM (void (self ^. jss "bitrate" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-bitrate VideoEncoderConfig.bitrate specification>
+getBitrate :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe Word53)
+getBitrate self = liftDOM (((self ^. js "bitrate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-bitrate VideoEncoderConfig.bitrate specification>
+getBitrateUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m Word53
+getBitrateUnsafe self = liftDOM ((((self ^. js "bitrate") >>= 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 (((self ^. js "bitrate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-framerate VideoEncoderConfig.framerate specification>
+setFramerate :: (MonadDOM m) => VideoEncoderConfig -> Double -> m ()
+setFramerate self val = liftDOM (void (self ^. jss "framerate" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-framerate VideoEncoderConfig.framerate specification>
+getFramerate :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe Double)
+getFramerate self = liftDOM (((self ^. js "framerate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-framerate VideoEncoderConfig.framerate specification>
+getFramerateUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m Double
+getFramerateUnsafe self = liftDOM ((((self ^. js "framerate") >>= 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 (((self ^. js "framerate") >>= valToNumber))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-hardwareacceleration VideoEncoderConfig.hardwareAcceleration specification>
+setHardwareAcceleration :: (MonadDOM m) => VideoEncoderConfig -> HardwareAcceleration -> m ()
+setHardwareAcceleration self val = liftDOM (void (self ^. jss "hardwareAcceleration" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-hardwareacceleration VideoEncoderConfig.hardwareAcceleration specification>
+getHardwareAcceleration :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe HardwareAcceleration)
+getHardwareAcceleration self = liftDOM (((self ^. js "hardwareAcceleration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-hardwareacceleration VideoEncoderConfig.hardwareAcceleration specification>
+getHardwareAccelerationUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m HardwareAcceleration
+getHardwareAccelerationUnsafe self = liftDOM ((((self ^. js "hardwareAcceleration") >>= 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 (((self ^. js "hardwareAcceleration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-alpha VideoEncoderConfig.alpha specification>
+setAlpha :: (MonadDOM m) => VideoEncoderConfig -> AlphaOption -> m ()
+setAlpha self val = liftDOM (void (self ^. jss "alpha" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-alpha VideoEncoderConfig.alpha specification>
+getAlpha :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe AlphaOption)
+getAlpha self = liftDOM (((self ^. js "alpha") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-alpha VideoEncoderConfig.alpha specification>
+getAlphaUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m AlphaOption
+getAlphaUnsafe self = liftDOM ((((self ^. js "alpha") >>= 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 (((self ^. js "alpha") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-scalabilitymode VideoEncoderConfig.scalabilityMode specification>
+setScalabilityMode :: (MonadDOM m, ToJSString val) => VideoEncoderConfig -> val -> m ()
+setScalabilityMode self val = liftDOM (void (self ^. jss "scalabilityMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-scalabilitymode VideoEncoderConfig.scalabilityMode specification>
+getScalabilityMode :: (MonadDOM m, FromJSString result) => VideoEncoderConfig -> m (Maybe result)
+getScalabilityMode self = liftDOM (((self ^. js "scalabilityMode") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-scalabilitymode VideoEncoderConfig.scalabilityMode specification>
+getScalabilityModeUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => VideoEncoderConfig -> m result
+getScalabilityModeUnsafe self = liftDOM ((((self ^. js "scalabilityMode") >>= fromMaybeJSString) >>= 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 (((self ^. js "scalabilityMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-bitratemode VideoEncoderConfig.bitrateMode specification>
+setBitrateMode :: (MonadDOM m) => VideoEncoderConfig -> VideoEncoderBitrateMode -> m ()
+setBitrateMode self val = liftDOM (void (self ^. jss "bitrateMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-bitratemode VideoEncoderConfig.bitrateMode specification>
+getBitrateMode :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe VideoEncoderBitrateMode)
+getBitrateMode self = liftDOM (((self ^. js "bitrateMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-bitratemode VideoEncoderConfig.bitrateMode specification>
+getBitrateModeUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m VideoEncoderBitrateMode
+getBitrateModeUnsafe self = liftDOM ((((self ^. js "bitrateMode") >>= 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 (((self ^. js "bitrateMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-latencymode VideoEncoderConfig.latencyMode specification>
+setLatencyMode :: (MonadDOM m) => VideoEncoderConfig -> LatencyMode -> m ()
+setLatencyMode self val = liftDOM (void (self ^. jss "latencyMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-latencymode VideoEncoderConfig.latencyMode specification>
+getLatencyMode :: (MonadDOM m) => VideoEncoderConfig -> m (Maybe LatencyMode)
+getLatencyMode self = liftDOM (((self ^. js "latencyMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-latencymode VideoEncoderConfig.latencyMode specification>
+getLatencyModeUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderConfig -> m LatencyMode
+getLatencyModeUnsafe self = liftDOM ((((self ^. js "latencyMode") >>= 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 (((self ^. js "latencyMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-contenthint VideoEncoderConfig.contentHint specification>
+setContentHint :: (MonadDOM m, ToJSString val) => VideoEncoderConfig -> val -> m ()
+setContentHint self val = liftDOM (void (self ^. jss "contentHint" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-contenthint VideoEncoderConfig.contentHint specification>
+getContentHint :: (MonadDOM m, FromJSString result) => VideoEncoderConfig -> m (Maybe result)
+getContentHint self = liftDOM (((self ^. js "contentHint") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderconfig-contenthint VideoEncoderConfig.contentHint specification>
+getContentHintUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => VideoEncoderConfig -> m result
+getContentHintUnsafe self = liftDOM ((((self ^. js "contentHint") >>= fromMaybeJSString) >>= 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 (((self ^. js "contentHint") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "avc" (toJSVal val)))
+
+-- | <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 (((self ^. js "avc") >>= 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 ((((self ^. js "avc") >>= 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 (((self ^. js "avc") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "hevc" (toJSVal val)))
+
+-- | <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 (((self ^. js "hevc") >>= 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 ((((self ^. js "hevc") >>= 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 (((self ^. js "hevc") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/VideoEncoderEncodeOptions.hs b/src/JSDOM/Generated/VideoEncoderEncodeOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoEncoderEncodeOptions.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.VideoEncoderEncodeOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-videoencoderencodeoptions VideoEncoderEncodeOptions specification>
+newVideoEncoderEncodeOptions :: (MonadDOM m) => m VideoEncoderEncodeOptions
+newVideoEncoderEncodeOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderencodeoptions-keyframe VideoEncoderEncodeOptions.keyFrame specification>
+setKeyFrame :: (MonadDOM m) => VideoEncoderEncodeOptions -> Bool -> m ()
+setKeyFrame self val = liftDOM (void (self ^. jss "keyFrame" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderencodeoptions-keyframe VideoEncoderEncodeOptions.keyFrame specification>
+getKeyFrame :: (MonadDOM m) => VideoEncoderEncodeOptions -> m (Maybe Bool)
+getKeyFrame self = liftDOM (((self ^. js "keyFrame") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderencodeoptions-keyframe VideoEncoderEncodeOptions.keyFrame specification>
+getKeyFrameUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderEncodeOptions -> m Bool
+getKeyFrameUnsafe self = liftDOM ((((self ^. js "keyFrame") >>= 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 (((self ^. js "keyFrame") >>= valToBool))
+
+-- | <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 (self ^. jss "av1" (toJSVal val)))
+
+-- | <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 (((self ^. js "av1") >>= 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 ((((self ^. js "av1") >>= 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 (((self ^. js "av1") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "avc" (toJSVal val)))
+
+-- | <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 (((self ^. js "avc") >>= 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 ((((self ^. js "avc") >>= 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 (((self ^. js "avc") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "hevc" (toJSVal val)))
+
+-- | <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 (((self ^. js "hevc") >>= 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 ((((self ^. js "hevc") >>= 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 (((self ^. js "hevc") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "vp9" (toJSVal val)))
+
+-- | <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 (((self ^. js "vp9") >>= 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 ((((self ^. js "vp9") >>= 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 (((self ^. js "vp9") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/VideoEncoderEncodeOptionsForAv1.hs b/src/JSDOM/Generated/VideoEncoderEncodeOptionsForAv1.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoEncoderEncodeOptionsForAv1.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-av1-codec-registration (webref). Do not edit.
+module JSDOM.Generated.VideoEncoderEncodeOptionsForAv1
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/av1_codec_registration.html#dictdef-videoencoderencodeoptionsforav1 VideoEncoderEncodeOptionsForAv1 specification>
+newVideoEncoderEncodeOptionsForAv1 :: (MonadDOM m) => m VideoEncoderEncodeOptionsForAv1
+newVideoEncoderEncodeOptionsForAv1 = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "quantizer" (toJSVal val)))
+
+-- | <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 (((self ^. js "quantizer") >>= 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 ((((self ^. js "quantizer") >>= 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 ((P.round <$> ((self ^. js "quantizer") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/VideoEncoderEncodeOptionsForAvc.hs b/src/JSDOM/Generated/VideoEncoderEncodeOptionsForAvc.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoEncoderEncodeOptionsForAvc.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-avc-codec-registration (webref). Do not edit.
+module JSDOM.Generated.VideoEncoderEncodeOptionsForAvc
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/avc_codec_registration.html#dictdef-videoencoderencodeoptionsforavc VideoEncoderEncodeOptionsForAvc specification>
+newVideoEncoderEncodeOptionsForAvc :: (MonadDOM m) => m VideoEncoderEncodeOptionsForAvc
+newVideoEncoderEncodeOptionsForAvc = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "quantizer" (toJSVal val)))
+
+-- | <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 (((self ^. js "quantizer") >>= 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 ((((self ^. js "quantizer") >>= 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 ((P.round <$> ((self ^. js "quantizer") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/VideoEncoderEncodeOptionsForHevc.hs b/src/JSDOM/Generated/VideoEncoderEncodeOptionsForHevc.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoEncoderEncodeOptionsForHevc.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-hevc-codec-registration (webref). Do not edit.
+module JSDOM.Generated.VideoEncoderEncodeOptionsForHevc
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/hevc_codec_registration.html#dictdef-videoencoderencodeoptionsforhevc VideoEncoderEncodeOptionsForHevc specification>
+newVideoEncoderEncodeOptionsForHevc :: (MonadDOM m) => m VideoEncoderEncodeOptionsForHevc
+newVideoEncoderEncodeOptionsForHevc = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "quantizer" (toJSVal val)))
+
+-- | <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 (((self ^. js "quantizer") >>= 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 ((((self ^. js "quantizer") >>= 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 ((P.round <$> ((self ^. js "quantizer") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/VideoEncoderEncodeOptionsForVp9.hs b/src/JSDOM/Generated/VideoEncoderEncodeOptionsForVp9.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoEncoderEncodeOptionsForVp9.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs-vp9-codec-registration (webref). Do not edit.
+module JSDOM.Generated.VideoEncoderEncodeOptionsForVp9
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/vp9_codec_registration.html#dictdef-videoencoderencodeoptionsforvp9 VideoEncoderEncodeOptionsForVp9 specification>
+newVideoEncoderEncodeOptionsForVp9 :: (MonadDOM m) => m VideoEncoderEncodeOptionsForVp9
+newVideoEncoderEncodeOptionsForVp9 = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "quantizer" (toJSVal val)))
+
+-- | <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 (((self ^. js "quantizer") >>= 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 ((((self ^. js "quantizer") >>= 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 ((P.round <$> ((self ^. js "quantizer") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/VideoEncoderInit.hs b/src/JSDOM/Generated/VideoEncoderInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoEncoderInit.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.VideoEncoderInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-videoencoderinit VideoEncoderInit specification>
+newVideoEncoderInit :: (MonadDOM m) => EncodedVideoChunkOutputCallback -> WebCodecsErrorCallback -> m VideoEncoderInit
+newVideoEncoderInit output error = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "output" (toJSVal output)) P.>> (o ^. jss "error" (toJSVal error)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderinit-output VideoEncoderInit.output specification>
+setOutput :: (MonadDOM m) => VideoEncoderInit -> EncodedVideoChunkOutputCallback -> m ()
+setOutput self val = liftDOM (void (self ^. jss "output" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencoderinit-error VideoEncoderInit.error specification>
+setError :: (MonadDOM m) => VideoEncoderInit -> WebCodecsErrorCallback -> m ()
+setError self val = liftDOM (void (self ^. jss "error" (toJSVal val)))
diff --git a/src/JSDOM/Generated/VideoEncoderSupport.hs b/src/JSDOM/Generated/VideoEncoderSupport.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoEncoderSupport.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.VideoEncoderSupport
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-videoencodersupport VideoEncoderSupport specification>
+newVideoEncoderSupport :: (MonadDOM m) => m VideoEncoderSupport
+newVideoEncoderSupport = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencodersupport-supported VideoEncoderSupport.supported specification>
+setSupported :: (MonadDOM m) => VideoEncoderSupport -> Bool -> m ()
+setSupported self val = liftDOM (void (self ^. jss "supported" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencodersupport-supported VideoEncoderSupport.supported specification>
+getSupported :: (MonadDOM m) => VideoEncoderSupport -> m (Maybe Bool)
+getSupported self = liftDOM (((self ^. js "supported") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencodersupport-supported VideoEncoderSupport.supported specification>
+getSupportedUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderSupport -> m Bool
+getSupportedUnsafe self = liftDOM ((((self ^. js "supported") >>= 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 (((self ^. js "supported") >>= valToBool))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencodersupport-config VideoEncoderSupport.config specification>
+setConfig :: (MonadDOM m) => VideoEncoderSupport -> VideoEncoderConfig -> m ()
+setConfig self val = liftDOM (void (self ^. jss "config" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencodersupport-config VideoEncoderSupport.config specification>
+getConfig :: (MonadDOM m) => VideoEncoderSupport -> m (Maybe VideoEncoderConfig)
+getConfig self = liftDOM (((self ^. js "config") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoencodersupport-config VideoEncoderSupport.config specification>
+getConfigUnsafe :: (MonadDOM m, HasCallStack) => VideoEncoderSupport -> m VideoEncoderConfig
+getConfigUnsafe self = liftDOM ((((self ^. js "config") >>= 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 (((self ^. js "config") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/VideoFrame.hs b/src/JSDOM/Generated/VideoFrame.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoFrame.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.VideoFrame
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "VideoFrame") [toJSVal image, P.maybe (P.return jsUndefined) toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <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 (((new (jsg "VideoFrame") [toJSVal data', toJSVal init]) >>= fromJSValUnchecked))
+
+-- | <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.round <$> ((self ^. jsf "allocationSize" [P.maybe (P.return jsUndefined) toJSVal options]) >>= valToNumber)))
+
+-- | <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 (self ^. jsf "allocationSize" [P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/clone MDN VideoFrame.clone documentation>
+clone :: (MonadDOM m) => VideoFrame -> m VideoFrame
+clone self = liftDOM (((self ^. jsf "clone" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/clone MDN VideoFrame.clone documentation>
+clone_ :: (MonadDOM m) => VideoFrame -> m ()
+clone_ self = liftDOM (void (self ^. jsf "clone" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/close MDN VideoFrame.close documentation>
+close :: (MonadDOM m) => VideoFrame -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
+
+-- | <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 (((((self ^. jsf "copyTo" [toJSVal destination, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= 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 (((self ^. jsf "copyTo" [toJSVal destination, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/format MDN VideoFrame.format documentation>
+getFormat :: (MonadDOM m) => VideoFrame -> m (Maybe VideoPixelFormat)
+getFormat self = liftDOM (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/format MDN VideoFrame.format documentation>
+getFormatUnsafe :: (MonadDOM m, HasCallStack) => VideoFrame -> m VideoPixelFormat
+getFormatUnsafe self = liftDOM ((((self ^. js "format") >>= 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 (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/codedWidth MDN VideoFrame.codedWidth documentation>
+getCodedWidth :: (MonadDOM m) => VideoFrame -> m Word
+getCodedWidth self = liftDOM ((P.round <$> ((self ^. js "codedWidth") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/codedHeight MDN VideoFrame.codedHeight documentation>
+getCodedHeight :: (MonadDOM m) => VideoFrame -> m Word
+getCodedHeight self = liftDOM ((P.round <$> ((self ^. js "codedHeight") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/codedRect MDN VideoFrame.codedRect documentation>
+getCodedRect :: (MonadDOM m) => VideoFrame -> m (Maybe DOMRectReadOnly)
+getCodedRect self = liftDOM (((self ^. js "codedRect") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/codedRect MDN VideoFrame.codedRect documentation>
+getCodedRectUnsafe :: (MonadDOM m, HasCallStack) => VideoFrame -> m DOMRectReadOnly
+getCodedRectUnsafe self = liftDOM ((((self ^. js "codedRect") >>= 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 (((self ^. js "codedRect") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/visibleRect MDN VideoFrame.visibleRect documentation>
+getVisibleRect :: (MonadDOM m) => VideoFrame -> m (Maybe DOMRectReadOnly)
+getVisibleRect self = liftDOM (((self ^. js "visibleRect") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/visibleRect MDN VideoFrame.visibleRect documentation>
+getVisibleRectUnsafe :: (MonadDOM m, HasCallStack) => VideoFrame -> m DOMRectReadOnly
+getVisibleRectUnsafe self = liftDOM ((((self ^. js "visibleRect") >>= 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 (((self ^. js "visibleRect") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/displayWidth MDN VideoFrame.displayWidth documentation>
+getDisplayWidth :: (MonadDOM m) => VideoFrame -> m Word
+getDisplayWidth self = liftDOM ((P.round <$> ((self ^. js "displayWidth") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/displayHeight MDN VideoFrame.displayHeight documentation>
+getDisplayHeight :: (MonadDOM m) => VideoFrame -> m Word
+getDisplayHeight self = liftDOM ((P.round <$> ((self ^. js "displayHeight") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/duration MDN VideoFrame.duration documentation>
+getDuration :: (MonadDOM m) => VideoFrame -> m (Maybe Word53)
+getDuration self = liftDOM (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/duration MDN VideoFrame.duration documentation>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => VideoFrame -> m Word53
+getDurationUnsafe self = liftDOM ((((self ^. js "duration") >>= 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 (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/timestamp MDN VideoFrame.timestamp documentation>
+getTimestamp :: (MonadDOM m) => VideoFrame -> m Int53
+getTimestamp self = liftDOM (((self ^. js "timestamp") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoFrame/colorSpace MDN VideoFrame.colorSpace documentation>
+getColorSpace :: (MonadDOM m) => VideoFrame -> m VideoColorSpace
+getColorSpace self = liftDOM (((self ^. js "colorSpace") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/VideoFrameBufferInit.hs b/src/JSDOM/Generated/VideoFrameBufferInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoFrameBufferInit.hs
@@ -0,0 +1,212 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.VideoFrameBufferInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-videoframebufferinit VideoFrameBufferInit specification>
+newVideoFrameBufferInit :: (MonadDOM m) => VideoPixelFormat -> Word -> Word -> Int53 -> m VideoFrameBufferInit
+newVideoFrameBufferInit format codedWidth codedHeight timestamp = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "format" (toJSVal format)) P.>> (o ^. jss "codedWidth" (toJSVal codedWidth)) P.>> (o ^. jss "codedHeight" (toJSVal codedHeight)) P.>> (o ^. jss "timestamp" (toJSVal timestamp)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-format VideoFrameBufferInit.format specification>
+setFormat :: (MonadDOM m) => VideoFrameBufferInit -> VideoPixelFormat -> m ()
+setFormat self val = liftDOM (void (self ^. jss "format" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-format VideoFrameBufferInit.format specification>
+getFormat :: (MonadDOM m) => VideoFrameBufferInit -> m VideoPixelFormat
+getFormat self = liftDOM (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-codedwidth VideoFrameBufferInit.codedWidth specification>
+setCodedWidth :: (MonadDOM m) => VideoFrameBufferInit -> Word -> m ()
+setCodedWidth self val = liftDOM (void (self ^. jss "codedWidth" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-codedwidth VideoFrameBufferInit.codedWidth specification>
+getCodedWidth :: (MonadDOM m) => VideoFrameBufferInit -> m Word
+getCodedWidth self = liftDOM ((P.round <$> ((self ^. js "codedWidth") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-codedheight VideoFrameBufferInit.codedHeight specification>
+setCodedHeight :: (MonadDOM m) => VideoFrameBufferInit -> Word -> m ()
+setCodedHeight self val = liftDOM (void (self ^. jss "codedHeight" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-codedheight VideoFrameBufferInit.codedHeight specification>
+getCodedHeight :: (MonadDOM m) => VideoFrameBufferInit -> m Word
+getCodedHeight self = liftDOM ((P.round <$> ((self ^. js "codedHeight") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-timestamp VideoFrameBufferInit.timestamp specification>
+setTimestamp :: (MonadDOM m) => VideoFrameBufferInit -> Int53 -> m ()
+setTimestamp self val = liftDOM (void (self ^. jss "timestamp" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-timestamp VideoFrameBufferInit.timestamp specification>
+getTimestamp :: (MonadDOM m) => VideoFrameBufferInit -> m Int53
+getTimestamp self = liftDOM (((self ^. js "timestamp") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-duration VideoFrameBufferInit.duration specification>
+setDuration :: (MonadDOM m) => VideoFrameBufferInit -> Word53 -> m ()
+setDuration self val = liftDOM (void (self ^. jss "duration" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-duration VideoFrameBufferInit.duration specification>
+getDuration :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe Word53)
+getDuration self = liftDOM (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-duration VideoFrameBufferInit.duration specification>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m Word53
+getDurationUnsafe self = liftDOM ((((self ^. js "duration") >>= 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 (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-layout VideoFrameBufferInit.layout specification>
+setLayout :: (MonadDOM m) => VideoFrameBufferInit -> [PlaneLayout] -> m ()
+setLayout self val = liftDOM (void (self ^. jss "layout" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-layout VideoFrameBufferInit.layout specification>
+getLayout :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe [PlaneLayout])
+getLayout self = liftDOM (((self ^. js "layout") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-layout VideoFrameBufferInit.layout specification>
+getLayoutUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m [PlaneLayout]
+getLayoutUnsafe self = liftDOM ((((self ^. js "layout") >>= 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 (((self ^. js "layout") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-visiblerect VideoFrameBufferInit.visibleRect specification>
+setVisibleRect :: (MonadDOM m) => VideoFrameBufferInit -> DOMRectInit -> m ()
+setVisibleRect self val = liftDOM (void (self ^. jss "visibleRect" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-visiblerect VideoFrameBufferInit.visibleRect specification>
+getVisibleRect :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe DOMRectInit)
+getVisibleRect self = liftDOM (((self ^. js "visibleRect") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-visiblerect VideoFrameBufferInit.visibleRect specification>
+getVisibleRectUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m DOMRectInit
+getVisibleRectUnsafe self = liftDOM ((((self ^. js "visibleRect") >>= 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 (((self ^. js "visibleRect") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-rotation VideoFrameBufferInit.rotation specification>
+setRotation :: (MonadDOM m) => VideoFrameBufferInit -> Double -> m ()
+setRotation self val = liftDOM (void (self ^. jss "rotation" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-rotation VideoFrameBufferInit.rotation specification>
+getRotation :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe Double)
+getRotation self = liftDOM (((self ^. js "rotation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-rotation VideoFrameBufferInit.rotation specification>
+getRotationUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m Double
+getRotationUnsafe self = liftDOM ((((self ^. js "rotation") >>= 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 (((self ^. js "rotation") >>= valToNumber))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-flip VideoFrameBufferInit.flip specification>
+setFlip :: (MonadDOM m) => VideoFrameBufferInit -> Bool -> m ()
+setFlip self val = liftDOM (void (self ^. jss "flip" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-flip VideoFrameBufferInit.flip specification>
+getFlip :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe Bool)
+getFlip self = liftDOM (((self ^. js "flip") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-flip VideoFrameBufferInit.flip specification>
+getFlipUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m Bool
+getFlipUnsafe self = liftDOM ((((self ^. js "flip") >>= 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 (((self ^. js "flip") >>= valToBool))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-displaywidth VideoFrameBufferInit.displayWidth specification>
+setDisplayWidth :: (MonadDOM m) => VideoFrameBufferInit -> Word -> m ()
+setDisplayWidth self val = liftDOM (void (self ^. jss "displayWidth" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-displaywidth VideoFrameBufferInit.displayWidth specification>
+getDisplayWidth :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe Word)
+getDisplayWidth self = liftDOM (((self ^. js "displayWidth") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-displaywidth VideoFrameBufferInit.displayWidth specification>
+getDisplayWidthUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m Word
+getDisplayWidthUnsafe self = liftDOM ((((self ^. js "displayWidth") >>= 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 ((P.round <$> ((self ^. js "displayWidth") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-displayheight VideoFrameBufferInit.displayHeight specification>
+setDisplayHeight :: (MonadDOM m) => VideoFrameBufferInit -> Word -> m ()
+setDisplayHeight self val = liftDOM (void (self ^. jss "displayHeight" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-displayheight VideoFrameBufferInit.displayHeight specification>
+getDisplayHeight :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe Word)
+getDisplayHeight self = liftDOM (((self ^. js "displayHeight") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-displayheight VideoFrameBufferInit.displayHeight specification>
+getDisplayHeightUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m Word
+getDisplayHeightUnsafe self = liftDOM ((((self ^. js "displayHeight") >>= 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 ((P.round <$> ((self ^. js "displayHeight") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-colorspace VideoFrameBufferInit.colorSpace specification>
+setColorSpace :: (MonadDOM m) => VideoFrameBufferInit -> VideoColorSpaceInit -> m ()
+setColorSpace self val = liftDOM (void (self ^. jss "colorSpace" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-colorspace VideoFrameBufferInit.colorSpace specification>
+getColorSpace :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe VideoColorSpaceInit)
+getColorSpace self = liftDOM (((self ^. js "colorSpace") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-colorspace VideoFrameBufferInit.colorSpace specification>
+getColorSpaceUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m VideoColorSpaceInit
+getColorSpaceUnsafe self = liftDOM ((((self ^. js "colorSpace") >>= 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 (((self ^. js "colorSpace") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-transfer VideoFrameBufferInit.transfer specification>
+setTransfer :: (MonadDOM m, IsArrayBuffer val) => VideoFrameBufferInit -> [val] -> m ()
+setTransfer self val = liftDOM (void (self ^. jss "transfer" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-transfer VideoFrameBufferInit.transfer specification>
+getTransfer :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe [ArrayBuffer])
+getTransfer self = liftDOM (((self ^. js "transfer") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-transfer VideoFrameBufferInit.transfer specification>
+getTransferUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m [ArrayBuffer]
+getTransferUnsafe self = liftDOM ((((self ^. js "transfer") >>= 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 (((self ^. js "transfer") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-metadata VideoFrameBufferInit.metadata specification>
+setMetadata :: (MonadDOM m) => VideoFrameBufferInit -> VideoFrameMetadata -> m ()
+setMetadata self val = liftDOM (void (self ^. jss "metadata" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-metadata VideoFrameBufferInit.metadata specification>
+getMetadata :: (MonadDOM m) => VideoFrameBufferInit -> m (Maybe VideoFrameMetadata)
+getMetadata self = liftDOM (((self ^. js "metadata") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframebufferinit-metadata VideoFrameBufferInit.metadata specification>
+getMetadataUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameBufferInit -> m VideoFrameMetadata
+getMetadataUnsafe self = liftDOM ((((self ^. js "metadata") >>= 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 (((self ^. js "metadata") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/VideoFrameCallbackMetadata.hs b/src/JSDOM/Generated/VideoFrameCallbackMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoFrameCallbackMetadata.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from video-rvfc (webref). Do not edit.
+module JSDOM.Generated.VideoFrameCallbackMetadata
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((new (jsg "Object") () >>= \o -> (o ^. jss "presentationTime" (toJSVal presentationTime)) P.>> (o ^. jss "expectedDisplayTime" (toJSVal expectedDisplayTime)) P.>> (o ^. jss "width" (toJSVal width)) P.>> (o ^. jss "height" (toJSVal height)) P.>> (o ^. jss "mediaTime" (toJSVal mediaTime)) P.>> (o ^. jss "presentedFrames" (toJSVal presentedFrames)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-presentationtime VideoFrameCallbackMetadata.presentationTime specification>
+setPresentationTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> Double -> m ()
+setPresentationTime self val = liftDOM (void (self ^. jss "presentationTime" (toJSVal val)))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-presentationtime VideoFrameCallbackMetadata.presentationTime specification>
+getPresentationTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> m Double
+getPresentationTime self = liftDOM (((self ^. js "presentationTime") >>= valToNumber))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-expecteddisplaytime VideoFrameCallbackMetadata.expectedDisplayTime specification>
+setExpectedDisplayTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> Double -> m ()
+setExpectedDisplayTime self val = liftDOM (void (self ^. jss "expectedDisplayTime" (toJSVal val)))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-expecteddisplaytime VideoFrameCallbackMetadata.expectedDisplayTime specification>
+getExpectedDisplayTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> m Double
+getExpectedDisplayTime self = liftDOM (((self ^. js "expectedDisplayTime") >>= valToNumber))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-width VideoFrameCallbackMetadata.width specification>
+setWidth :: (MonadDOM m) => VideoFrameCallbackMetadata -> Word -> m ()
+setWidth self val = liftDOM (void (self ^. jss "width" (toJSVal val)))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-width VideoFrameCallbackMetadata.width specification>
+getWidth :: (MonadDOM m) => VideoFrameCallbackMetadata -> m Word
+getWidth self = liftDOM ((P.round <$> ((self ^. js "width") >>= valToNumber)))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-height VideoFrameCallbackMetadata.height specification>
+setHeight :: (MonadDOM m) => VideoFrameCallbackMetadata -> Word -> m ()
+setHeight self val = liftDOM (void (self ^. jss "height" (toJSVal val)))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-height VideoFrameCallbackMetadata.height specification>
+getHeight :: (MonadDOM m) => VideoFrameCallbackMetadata -> m Word
+getHeight self = liftDOM ((P.round <$> ((self ^. js "height") >>= valToNumber)))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-mediatime VideoFrameCallbackMetadata.mediaTime specification>
+setMediaTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> Double -> m ()
+setMediaTime self val = liftDOM (void (self ^. jss "mediaTime" (toJSVal val)))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-mediatime VideoFrameCallbackMetadata.mediaTime specification>
+getMediaTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> m Double
+getMediaTime self = liftDOM (((self ^. js "mediaTime") >>= valToNumber))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-presentedframes VideoFrameCallbackMetadata.presentedFrames specification>
+setPresentedFrames :: (MonadDOM m) => VideoFrameCallbackMetadata -> Word -> m ()
+setPresentedFrames self val = liftDOM (void (self ^. jss "presentedFrames" (toJSVal val)))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-presentedframes VideoFrameCallbackMetadata.presentedFrames specification>
+getPresentedFrames :: (MonadDOM m) => VideoFrameCallbackMetadata -> m Word
+getPresentedFrames self = liftDOM ((P.round <$> ((self ^. js "presentedFrames") >>= valToNumber)))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-processingduration VideoFrameCallbackMetadata.processingDuration specification>
+setProcessingDuration :: (MonadDOM m) => VideoFrameCallbackMetadata -> Double -> m ()
+setProcessingDuration self val = liftDOM (void (self ^. jss "processingDuration" (toJSVal val)))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-processingduration VideoFrameCallbackMetadata.processingDuration specification>
+getProcessingDuration :: (MonadDOM m) => VideoFrameCallbackMetadata -> m (Maybe Double)
+getProcessingDuration self = liftDOM (((self ^. js "processingDuration") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-processingduration VideoFrameCallbackMetadata.processingDuration specification>
+getProcessingDurationUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameCallbackMetadata -> m Double
+getProcessingDurationUnsafe self = liftDOM ((((self ^. js "processingDuration") >>= 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 (((self ^. js "processingDuration") >>= valToNumber))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-capturetime VideoFrameCallbackMetadata.captureTime specification>
+setCaptureTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> Double -> m ()
+setCaptureTime self val = liftDOM (void (self ^. jss "captureTime" (toJSVal val)))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-capturetime VideoFrameCallbackMetadata.captureTime specification>
+getCaptureTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> m (Maybe Double)
+getCaptureTime self = liftDOM (((self ^. js "captureTime") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-capturetime VideoFrameCallbackMetadata.captureTime specification>
+getCaptureTimeUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameCallbackMetadata -> m Double
+getCaptureTimeUnsafe self = liftDOM ((((self ^. js "captureTime") >>= 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 (((self ^. js "captureTime") >>= valToNumber))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-receivetime VideoFrameCallbackMetadata.receiveTime specification>
+setReceiveTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> Double -> m ()
+setReceiveTime self val = liftDOM (void (self ^. jss "receiveTime" (toJSVal val)))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-receivetime VideoFrameCallbackMetadata.receiveTime specification>
+getReceiveTime :: (MonadDOM m) => VideoFrameCallbackMetadata -> m (Maybe Double)
+getReceiveTime self = liftDOM (((self ^. js "receiveTime") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-receivetime VideoFrameCallbackMetadata.receiveTime specification>
+getReceiveTimeUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameCallbackMetadata -> m Double
+getReceiveTimeUnsafe self = liftDOM ((((self ^. js "receiveTime") >>= 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 (((self ^. js "receiveTime") >>= valToNumber))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-rtptimestamp VideoFrameCallbackMetadata.rtpTimestamp specification>
+setRtpTimestamp :: (MonadDOM m) => VideoFrameCallbackMetadata -> Word -> m ()
+setRtpTimestamp self val = liftDOM (void (self ^. jss "rtpTimestamp" (toJSVal val)))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-rtptimestamp VideoFrameCallbackMetadata.rtpTimestamp specification>
+getRtpTimestamp :: (MonadDOM m) => VideoFrameCallbackMetadata -> m (Maybe Word)
+getRtpTimestamp self = liftDOM (((self ^. js "rtpTimestamp") >>= fromJSValUnchecked))
+
+-- | <https://wicg.github.io/video-rvfc/#dom-videoframecallbackmetadata-rtptimestamp VideoFrameCallbackMetadata.rtpTimestamp specification>
+getRtpTimestampUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameCallbackMetadata -> m Word
+getRtpTimestampUnsafe self = liftDOM ((((self ^. js "rtpTimestamp") >>= 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 ((P.round <$> ((self ^. js "rtpTimestamp") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/VideoFrameCopyToOptions.hs b/src/JSDOM/Generated/VideoFrameCopyToOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoFrameCopyToOptions.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.VideoFrameCopyToOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-videoframecopytooptions VideoFrameCopyToOptions specification>
+newVideoFrameCopyToOptions :: (MonadDOM m) => m VideoFrameCopyToOptions
+newVideoFrameCopyToOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-rect VideoFrameCopyToOptions.rect specification>
+setRect :: (MonadDOM m) => VideoFrameCopyToOptions -> DOMRectInit -> m ()
+setRect self val = liftDOM (void (self ^. jss "rect" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-rect VideoFrameCopyToOptions.rect specification>
+getRect :: (MonadDOM m) => VideoFrameCopyToOptions -> m (Maybe DOMRectInit)
+getRect self = liftDOM (((self ^. js "rect") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-rect VideoFrameCopyToOptions.rect specification>
+getRectUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameCopyToOptions -> m DOMRectInit
+getRectUnsafe self = liftDOM ((((self ^. js "rect") >>= 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 (((self ^. js "rect") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-layout VideoFrameCopyToOptions.layout specification>
+setLayout :: (MonadDOM m) => VideoFrameCopyToOptions -> [PlaneLayout] -> m ()
+setLayout self val = liftDOM (void (self ^. jss "layout" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-layout VideoFrameCopyToOptions.layout specification>
+getLayout :: (MonadDOM m) => VideoFrameCopyToOptions -> m (Maybe [PlaneLayout])
+getLayout self = liftDOM (((self ^. js "layout") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-layout VideoFrameCopyToOptions.layout specification>
+getLayoutUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameCopyToOptions -> m [PlaneLayout]
+getLayoutUnsafe self = liftDOM ((((self ^. js "layout") >>= 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 (((self ^. js "layout") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-format VideoFrameCopyToOptions.format specification>
+setFormat :: (MonadDOM m) => VideoFrameCopyToOptions -> VideoPixelFormat -> m ()
+setFormat self val = liftDOM (void (self ^. jss "format" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-format VideoFrameCopyToOptions.format specification>
+getFormat :: (MonadDOM m) => VideoFrameCopyToOptions -> m (Maybe VideoPixelFormat)
+getFormat self = liftDOM (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-format VideoFrameCopyToOptions.format specification>
+getFormatUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameCopyToOptions -> m VideoPixelFormat
+getFormatUnsafe self = liftDOM ((((self ^. js "format") >>= 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 (((self ^. js "format") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-colorspace VideoFrameCopyToOptions.colorSpace specification>
+setColorSpace :: (MonadDOM m) => VideoFrameCopyToOptions -> PredefinedColorSpace -> m ()
+setColorSpace self val = liftDOM (void (self ^. jss "colorSpace" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-colorspace VideoFrameCopyToOptions.colorSpace specification>
+getColorSpace :: (MonadDOM m) => VideoFrameCopyToOptions -> m (Maybe PredefinedColorSpace)
+getColorSpace self = liftDOM (((self ^. js "colorSpace") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframecopytooptions-colorspace VideoFrameCopyToOptions.colorSpace specification>
+getColorSpaceUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameCopyToOptions -> m PredefinedColorSpace
+getColorSpaceUnsafe self = liftDOM ((((self ^. js "colorSpace") >>= 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 (((self ^. js "colorSpace") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/VideoFrameInit.hs b/src/JSDOM/Generated/VideoFrameInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoFrameInit.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.VideoFrameInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-videoframeinit VideoFrameInit specification>
+newVideoFrameInit :: (MonadDOM m) => m VideoFrameInit
+newVideoFrameInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-duration VideoFrameInit.duration specification>
+setDuration :: (MonadDOM m) => VideoFrameInit -> Word53 -> m ()
+setDuration self val = liftDOM (void (self ^. jss "duration" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-duration VideoFrameInit.duration specification>
+getDuration :: (MonadDOM m) => VideoFrameInit -> m (Maybe Word53)
+getDuration self = liftDOM (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-duration VideoFrameInit.duration specification>
+getDurationUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m Word53
+getDurationUnsafe self = liftDOM ((((self ^. js "duration") >>= 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 (((self ^. js "duration") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-timestamp VideoFrameInit.timestamp specification>
+setTimestamp :: (MonadDOM m) => VideoFrameInit -> Int53 -> m ()
+setTimestamp self val = liftDOM (void (self ^. jss "timestamp" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-timestamp VideoFrameInit.timestamp specification>
+getTimestamp :: (MonadDOM m) => VideoFrameInit -> m (Maybe Int53)
+getTimestamp self = liftDOM (((self ^. js "timestamp") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-timestamp VideoFrameInit.timestamp specification>
+getTimestampUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m Int53
+getTimestampUnsafe self = liftDOM ((((self ^. js "timestamp") >>= 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 (((self ^. js "timestamp") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-alpha VideoFrameInit.alpha specification>
+setAlpha :: (MonadDOM m) => VideoFrameInit -> AlphaOption -> m ()
+setAlpha self val = liftDOM (void (self ^. jss "alpha" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-alpha VideoFrameInit.alpha specification>
+getAlpha :: (MonadDOM m) => VideoFrameInit -> m (Maybe AlphaOption)
+getAlpha self = liftDOM (((self ^. js "alpha") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-alpha VideoFrameInit.alpha specification>
+getAlphaUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m AlphaOption
+getAlphaUnsafe self = liftDOM ((((self ^. js "alpha") >>= 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 (((self ^. js "alpha") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-visiblerect VideoFrameInit.visibleRect specification>
+setVisibleRect :: (MonadDOM m) => VideoFrameInit -> DOMRectInit -> m ()
+setVisibleRect self val = liftDOM (void (self ^. jss "visibleRect" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-visiblerect VideoFrameInit.visibleRect specification>
+getVisibleRect :: (MonadDOM m) => VideoFrameInit -> m (Maybe DOMRectInit)
+getVisibleRect self = liftDOM (((self ^. js "visibleRect") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-visiblerect VideoFrameInit.visibleRect specification>
+getVisibleRectUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m DOMRectInit
+getVisibleRectUnsafe self = liftDOM ((((self ^. js "visibleRect") >>= 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 (((self ^. js "visibleRect") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-rotation VideoFrameInit.rotation specification>
+setRotation :: (MonadDOM m) => VideoFrameInit -> Double -> m ()
+setRotation self val = liftDOM (void (self ^. jss "rotation" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-rotation VideoFrameInit.rotation specification>
+getRotation :: (MonadDOM m) => VideoFrameInit -> m (Maybe Double)
+getRotation self = liftDOM (((self ^. js "rotation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-rotation VideoFrameInit.rotation specification>
+getRotationUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m Double
+getRotationUnsafe self = liftDOM ((((self ^. js "rotation") >>= 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 (((self ^. js "rotation") >>= valToNumber))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-flip VideoFrameInit.flip specification>
+setFlip :: (MonadDOM m) => VideoFrameInit -> Bool -> m ()
+setFlip self val = liftDOM (void (self ^. jss "flip" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-flip VideoFrameInit.flip specification>
+getFlip :: (MonadDOM m) => VideoFrameInit -> m (Maybe Bool)
+getFlip self = liftDOM (((self ^. js "flip") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-flip VideoFrameInit.flip specification>
+getFlipUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m Bool
+getFlipUnsafe self = liftDOM ((((self ^. js "flip") >>= 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 (((self ^. js "flip") >>= valToBool))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-displaywidth VideoFrameInit.displayWidth specification>
+setDisplayWidth :: (MonadDOM m) => VideoFrameInit -> Word -> m ()
+setDisplayWidth self val = liftDOM (void (self ^. jss "displayWidth" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-displaywidth VideoFrameInit.displayWidth specification>
+getDisplayWidth :: (MonadDOM m) => VideoFrameInit -> m (Maybe Word)
+getDisplayWidth self = liftDOM (((self ^. js "displayWidth") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-displaywidth VideoFrameInit.displayWidth specification>
+getDisplayWidthUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m Word
+getDisplayWidthUnsafe self = liftDOM ((((self ^. js "displayWidth") >>= 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 ((P.round <$> ((self ^. js "displayWidth") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-displayheight VideoFrameInit.displayHeight specification>
+setDisplayHeight :: (MonadDOM m) => VideoFrameInit -> Word -> m ()
+setDisplayHeight self val = liftDOM (void (self ^. jss "displayHeight" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-displayheight VideoFrameInit.displayHeight specification>
+getDisplayHeight :: (MonadDOM m) => VideoFrameInit -> m (Maybe Word)
+getDisplayHeight self = liftDOM (((self ^. js "displayHeight") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-displayheight VideoFrameInit.displayHeight specification>
+getDisplayHeightUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m Word
+getDisplayHeightUnsafe self = liftDOM ((((self ^. js "displayHeight") >>= 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 ((P.round <$> ((self ^. js "displayHeight") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-metadata VideoFrameInit.metadata specification>
+setMetadata :: (MonadDOM m) => VideoFrameInit -> VideoFrameMetadata -> m ()
+setMetadata self val = liftDOM (void (self ^. jss "metadata" (toJSVal val)))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-metadata VideoFrameInit.metadata specification>
+getMetadata :: (MonadDOM m) => VideoFrameInit -> m (Maybe VideoFrameMetadata)
+getMetadata self = liftDOM (((self ^. js "metadata") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webcodecs/#dom-videoframeinit-metadata VideoFrameInit.metadata specification>
+getMetadataUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameInit -> m VideoFrameMetadata
+getMetadataUnsafe self = liftDOM ((((self ^. js "metadata") >>= 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 (((self ^. js "metadata") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/VideoFrameMetadata.hs b/src/JSDOM/Generated/VideoFrameMetadata.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoFrameMetadata.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.Generated.VideoFrameMetadata
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webcodecs/#dictdef-videoframemetadata VideoFrameMetadata specification>
+newVideoFrameMetadata :: (MonadDOM m) => m VideoFrameMetadata
+newVideoFrameMetadata = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-segments VideoFrameMetadata.segments specification>
+setSegments :: (MonadDOM m) => VideoFrameMetadata -> [Segment] -> m ()
+setSegments self val = liftDOM (void (self ^. jss "segments" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-segments VideoFrameMetadata.segments specification>
+getSegments :: (MonadDOM m) => VideoFrameMetadata -> m (Maybe [Segment])
+getSegments self = liftDOM (((self ^. js "segments") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-segments VideoFrameMetadata.segments specification>
+getSegmentsUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameMetadata -> m [Segment]
+getSegmentsUnsafe self = liftDOM ((((self ^. js "segments") >>= 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 (((self ^. js "segments") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-backgroundblur VideoFrameMetadata.backgroundBlur specification>
+setBackgroundBlur :: (MonadDOM m) => VideoFrameMetadata -> BackgroundBlur -> m ()
+setBackgroundBlur self val = liftDOM (void (self ^. jss "backgroundBlur" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-backgroundblur VideoFrameMetadata.backgroundBlur specification>
+getBackgroundBlur :: (MonadDOM m) => VideoFrameMetadata -> m (Maybe BackgroundBlur)
+getBackgroundBlur self = liftDOM (((self ^. js "backgroundBlur") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-backgroundblur VideoFrameMetadata.backgroundBlur specification>
+getBackgroundBlurUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameMetadata -> m BackgroundBlur
+getBackgroundBlurUnsafe self = liftDOM ((((self ^. js "backgroundBlur") >>= 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 (((self ^. js "backgroundBlur") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-backgroundsegmentationmask VideoFrameMetadata.backgroundSegmentationMask specification>
+setBackgroundSegmentationMask :: (MonadDOM m) => VideoFrameMetadata -> ImageBitmap -> m ()
+setBackgroundSegmentationMask self val = liftDOM (void (self ^. jss "backgroundSegmentationMask" (toJSVal val)))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-backgroundsegmentationmask VideoFrameMetadata.backgroundSegmentationMask specification>
+getBackgroundSegmentationMask :: (MonadDOM m) => VideoFrameMetadata -> m (Maybe ImageBitmap)
+getBackgroundSegmentationMask self = liftDOM (((self ^. js "backgroundSegmentationMask") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/mediacapture-extensions/#dom-videoframemetadata-backgroundsegmentationmask VideoFrameMetadata.backgroundSegmentationMask specification>
+getBackgroundSegmentationMaskUnsafe :: (MonadDOM m, HasCallStack) => VideoFrameMetadata -> m ImageBitmap
+getBackgroundSegmentationMaskUnsafe self = liftDOM ((((self ^. js "backgroundSegmentationMask") >>= 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 (((self ^. js "backgroundSegmentationMask") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/VideoFrameOutputCallback.hs b/src/JSDOM/Generated/VideoFrameOutputCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoFrameOutputCallback.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newVideoFrameOutputCallback :: (MonadDOM m) => (VideoFrame -> JSM ()) -> m VideoFrameOutputCallback
+newVideoFrameOutputCallback callback = liftDOM (VideoFrameOutputCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (output : _) -> do
+          output' <- fromJSValUnchecked output
+          callback output'))
+
+newVideoFrameOutputCallbackSync :: (MonadDOM m) => (VideoFrame -> JSM ()) -> m VideoFrameOutputCallback
+newVideoFrameOutputCallbackSync callback = liftDOM (VideoFrameOutputCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (output : _) -> do
+          output' <- fromJSValUnchecked output
+          callback output'))
+
+newVideoFrameOutputCallbackAsync :: (MonadDOM m) => (VideoFrame -> JSM ()) -> m VideoFrameOutputCallback
+newVideoFrameOutputCallbackAsync callback = liftDOM (VideoFrameOutputCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (output : _) -> do
+          output' <- fromJSValUnchecked output
+          callback output'))
diff --git a/src/JSDOM/Generated/VideoFrameRequestCallback.hs b/src/JSDOM/Generated/VideoFrameRequestCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VideoFrameRequestCallback.hs
@@ -0,0 +1,33 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from video-rvfc (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newVideoFrameRequestCallback :: (MonadDOM m) => (Double -> VideoFrameCallbackMetadata -> JSM ()) -> m VideoFrameRequestCallback
+newVideoFrameRequestCallback callback = liftDOM (VideoFrameRequestCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (now : metadata : _) -> do
+          now' <- valToNumber now
+          metadata' <- fromJSValUnchecked metadata
+          callback now' metadata'))
+
+newVideoFrameRequestCallbackSync :: (MonadDOM m) => (Double -> VideoFrameCallbackMetadata -> JSM ()) -> m VideoFrameRequestCallback
+newVideoFrameRequestCallbackSync callback = liftDOM (VideoFrameRequestCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (now : metadata : _) -> do
+          now' <- valToNumber now
+          metadata' <- fromJSValUnchecked metadata
+          callback now' metadata'))
+
+newVideoFrameRequestCallbackAsync :: (MonadDOM m) => (Double -> VideoFrameCallbackMetadata -> JSM ()) -> m VideoFrameRequestCallback
+newVideoFrameRequestCallbackAsync callback = liftDOM (VideoFrameRequestCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (now : metadata : _) -> do
+          now' <- valToNumber now
+          metadata' <- fromJSValUnchecked metadata
+          callback now' metadata'))
diff --git a/src/JSDOM/Generated/VideoPlaybackQuality.hs b/src/JSDOM/Generated/VideoPlaybackQuality.hs
--- a/src/JSDOM/Generated/VideoPlaybackQuality.hs
+++ b/src/JSDOM/Generated/VideoPlaybackQuality.hs
@@ -1,54 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from media-playback-quality (webref). Do not edit.
 module JSDOM.Generated.VideoPlaybackQuality
-       (getCreationTime, getTotalVideoFrames, getDroppedVideoFrames,
-        getCorruptedVideoFrames, getTotalFrameDelay,
-        VideoPlaybackQuality(..), gTypeVideoPlaybackQuality)
+       (getCreationTime, getDroppedVideoFrames, getTotalVideoFrames, getCorruptedVideoFrames, VideoPlaybackQuality(..), gTypeVideoPlaybackQuality)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.creationTime Mozilla VideoPlaybackQuality.creationTime documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VideoPlaybackQuality/creationTime MDN VideoPlaybackQuality.creationTime documentation>
 getCreationTime :: (MonadDOM m) => VideoPlaybackQuality -> m Double
-getCreationTime self
-  = liftDOM ((self ^. js "creationTime") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.totalVideoFrames Mozilla VideoPlaybackQuality.totalVideoFrames documentation> 
-getTotalVideoFrames ::
-                    (MonadDOM m) => VideoPlaybackQuality -> m Word
-getTotalVideoFrames self
-  = liftDOM
-      (round <$> ((self ^. js "totalVideoFrames") >>= valToNumber))
+getCreationTime self = liftDOM (((self ^. js "creationTime") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.droppedVideoFrames Mozilla VideoPlaybackQuality.droppedVideoFrames documentation> 
-getDroppedVideoFrames ::
-                      (MonadDOM m) => VideoPlaybackQuality -> m Word
-getDroppedVideoFrames self
-  = liftDOM
-      (round <$> ((self ^. js "droppedVideoFrames") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/VideoPlaybackQuality/droppedVideoFrames MDN VideoPlaybackQuality.droppedVideoFrames documentation>
+getDroppedVideoFrames :: (MonadDOM m) => VideoPlaybackQuality -> m Word
+getDroppedVideoFrames self = liftDOM ((P.round <$> ((self ^. js "droppedVideoFrames") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.corruptedVideoFrames Mozilla VideoPlaybackQuality.corruptedVideoFrames documentation> 
-getCorruptedVideoFrames ::
-                        (MonadDOM m) => VideoPlaybackQuality -> m Word
-getCorruptedVideoFrames self
-  = liftDOM
-      (round <$> ((self ^. js "corruptedVideoFrames") >>= valToNumber))
+-- | <https://developer.mozilla.org/docs/Web/API/VideoPlaybackQuality/totalVideoFrames MDN VideoPlaybackQuality.totalVideoFrames documentation>
+getTotalVideoFrames :: (MonadDOM m) => VideoPlaybackQuality -> m Word
+getTotalVideoFrames self = liftDOM ((P.round <$> ((self ^. js "totalVideoFrames") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.totalFrameDelay Mozilla VideoPlaybackQuality.totalFrameDelay documentation> 
-getTotalFrameDelay ::
-                   (MonadDOM m) => VideoPlaybackQuality -> m Double
-getTotalFrameDelay self
-  = liftDOM ((self ^. js "totalFrameDelay") >>= valToNumber)
+-- | <https://developer.mozilla.org/docs/Web/API/VideoPlaybackQuality/corruptedVideoFrames MDN VideoPlaybackQuality.corruptedVideoFrames documentation>
+getCorruptedVideoFrames :: (MonadDOM m) => VideoPlaybackQuality -> m Word
+getCorruptedVideoFrames self = liftDOM ((P.round <$> ((self ^. js "corruptedVideoFrames") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/VideoTrack.hs b/src/JSDOM/Generated/VideoTrack.hs
--- a/src/JSDOM/Generated/VideoTrack.hs
+++ b/src/JSDOM/Generated/VideoTrack.hs
@@ -1,69 +1,52 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.VideoTrack
-       (getId, setKind, getKind, getLabel, setLanguage, getLanguage,
-        setSelected, getSelected, getSourceBuffer, VideoTrack(..),
-        gTypeVideoTrack)
+       (getId, getKind, getLabel, getLanguage, setSelected, getSelected, getSourceBuffer, getSourceBufferUnsafe, getSourceBufferUnchecked, VideoTrack(..), gTypeVideoTrack)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.id Mozilla VideoTrack.id documentation> 
-getId ::
-      (MonadDOM m, FromJSString result) => VideoTrack -> m result
-getId self = liftDOM ((self ^. js "id") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.kind Mozilla VideoTrack.kind documentation> 
-setKind ::
-        (MonadDOM m, ToJSString val) => VideoTrack -> val -> m ()
-setKind self val = liftDOM (self ^. jss "kind" (toJSVal val))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.kind Mozilla VideoTrack.kind documentation> 
-getKind ::
-        (MonadDOM m, FromJSString result) => VideoTrack -> m result
-getKind self = liftDOM ((self ^. js "kind") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrack/id MDN VideoTrack.id documentation>
+getId :: (MonadDOM m, FromJSString result) => VideoTrack -> m result
+getId self = liftDOM (((self ^. js "id") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.label Mozilla VideoTrack.label documentation> 
-getLabel ::
-         (MonadDOM m, FromJSString result) => VideoTrack -> m result
-getLabel self
-  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrack/kind MDN VideoTrack.kind documentation>
+getKind :: (MonadDOM m, FromJSString result) => VideoTrack -> m result
+getKind self = liftDOM (((self ^. js "kind") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.language Mozilla VideoTrack.language documentation> 
-setLanguage ::
-            (MonadDOM m, ToJSString val) => VideoTrack -> val -> m ()
-setLanguage self val
-  = liftDOM (self ^. jss "language" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrack/label MDN VideoTrack.label documentation>
+getLabel :: (MonadDOM m, FromJSString result) => VideoTrack -> m result
+getLabel self = liftDOM (((self ^. js "label") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.language Mozilla VideoTrack.language documentation> 
-getLanguage ::
-            (MonadDOM m, FromJSString result) => VideoTrack -> m result
-getLanguage self
-  = liftDOM ((self ^. js "language") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrack/language MDN VideoTrack.language documentation>
+getLanguage :: (MonadDOM m, FromJSString result) => VideoTrack -> m result
+getLanguage self = liftDOM (((self ^. js "language") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.selected Mozilla VideoTrack.selected documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrack/selected MDN VideoTrack.selected documentation>
 setSelected :: (MonadDOM m) => VideoTrack -> Bool -> m ()
-setSelected self val
-  = liftDOM (self ^. jss "selected" (toJSVal val))
+setSelected self val = liftDOM (void (self ^. jss "selected" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.selected Mozilla VideoTrack.selected documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrack/selected MDN VideoTrack.selected documentation>
 getSelected :: (MonadDOM m) => VideoTrack -> m Bool
-getSelected self = liftDOM ((self ^. js "selected") >>= valToBool)
+getSelected self = liftDOM (((self ^. js "selected") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.sourceBuffer Mozilla VideoTrack.sourceBuffer documentation> 
-getSourceBuffer :: (MonadDOM m) => VideoTrack -> m SourceBuffer
-getSourceBuffer self
-  = liftDOM ((self ^. js "sourceBuffer") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrack/sourceBuffer MDN VideoTrack.sourceBuffer documentation>
+getSourceBuffer :: (MonadDOM m) => VideoTrack -> m (Maybe SourceBuffer)
+getSourceBuffer self = liftDOM (((self ^. js "sourceBuffer") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrack/sourceBuffer MDN VideoTrack.sourceBuffer documentation>
+getSourceBufferUnsafe :: (MonadDOM m, HasCallStack) => VideoTrack -> m SourceBuffer
+getSourceBufferUnsafe self = liftDOM ((((self ^. js "sourceBuffer") >>= 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 (((self ^. js "sourceBuffer") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/VideoTrackList.hs b/src/JSDOM/Generated/VideoTrackList.hs
--- a/src/JSDOM/Generated/VideoTrackList.hs
+++ b/src/JSDOM/Generated/VideoTrackList.hs
@@ -1,69 +1,52 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.VideoTrackList
-       (item, item_, getTrackById, getTrackById_, getLength,
-        getSelectedIndex, change, addTrack, removeTrack,
-        VideoTrackList(..), gTypeVideoTrackList)
+       (getTrackById, getTrackById_, getTrackByIdUnsafe, getTrackByIdUnchecked, getLength, getSelectedIndex, change, addTrack, removeTrack, VideoTrackList(..), gTypeVideoTrackList)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.item Mozilla VideoTrackList.item documentation> 
-item :: (MonadDOM m) => VideoTrackList -> Word -> m VideoTrack
-item self index
-  = liftDOM
-      ((self ^. jsf "item" [toJSVal index]) >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "getTrackById" [toJSVal id]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.item Mozilla VideoTrackList.item documentation> 
-item_ :: (MonadDOM m) => VideoTrackList -> Word -> m ()
-item_ self index
-  = liftDOM (void (self ^. jsf "item" [toJSVal index]))
+-- | <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 (self ^. jsf "getTrackById" [toJSVal id]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.getTrackById Mozilla VideoTrackList.getTrackById documentation> 
-getTrackById ::
-             (MonadDOM m, ToJSString id) => VideoTrackList -> id -> m VideoTrack
-getTrackById self id
-  = liftDOM
-      ((self ^. jsf "getTrackById" [toJSVal id]) >>= fromJSValUnchecked)
+-- | <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 ((((self ^. jsf "getTrackById" [toJSVal 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_ ::
-              (MonadDOM m, ToJSString id) => VideoTrackList -> id -> m ()
-getTrackById_ self id
-  = liftDOM (void (self ^. jsf "getTrackById" [toJSVal id]))
+-- | <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 (((self ^. jsf "getTrackById" [toJSVal id]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.length Mozilla VideoTrackList.length documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrackList/length MDN VideoTrackList.length documentation>
 getLength :: (MonadDOM m) => VideoTrackList -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.selectedIndex Mozilla VideoTrackList.selectedIndex documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/VideoTrackList/selectedIndex MDN VideoTrackList.selectedIndex documentation>
 getSelectedIndex :: (MonadDOM m) => VideoTrackList -> m Int
-getSelectedIndex self
-  = liftDOM
-      (round <$> ((self ^. js "selectedIndex") >>= valToNumber))
+getSelectedIndex self = liftDOM ((P.round <$> ((self ^. js "selectedIndex") >>= valToNumber)))
 
--- | <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/JSDOM/Generated/ViewTimeline.hs b/src/JSDOM/Generated/ViewTimeline.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ViewTimeline.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scroll-animations-1 (webref). Do not edit.
+module JSDOM.Generated.ViewTimeline
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTimeline/ViewTimeline MDN ViewTimeline. documentation>
+newViewTimeline :: (MonadDOM m) => ViewTimelineOptions -> m ViewTimeline
+newViewTimeline options = liftDOM (((new (jsg "ViewTimeline") [toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTimeline/subject MDN ViewTimeline.subject documentation>
+getSubject :: (MonadDOM m) => ViewTimeline -> m Element
+getSubject self = liftDOM (((self ^. js "subject") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTimeline/startOffset MDN ViewTimeline.startOffset documentation>
+getStartOffset :: (MonadDOM m) => ViewTimeline -> m CSSNumericValue
+getStartOffset self = liftDOM (((self ^. js "startOffset") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTimeline/endOffset MDN ViewTimeline.endOffset documentation>
+getEndOffset :: (MonadDOM m) => ViewTimeline -> m CSSNumericValue
+getEndOffset self = liftDOM (((self ^. js "endOffset") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ViewTimelineOptions.hs b/src/JSDOM/Generated/ViewTimelineOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ViewTimelineOptions.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from scroll-animations-1 (webref). Do not edit.
+module JSDOM.Generated.ViewTimelineOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dictdef-viewtimelineoptions ViewTimelineOptions specification>
+newViewTimelineOptions :: (MonadDOM m, IsElement subject) => subject -> m ViewTimelineOptions
+newViewTimelineOptions subject = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "subject" (toJSVal subject)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "subject" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-viewtimelineoptions-subject ViewTimelineOptions.subject specification>
+getSubject :: (MonadDOM m) => ViewTimelineOptions -> m Element
+getSubject self = liftDOM (((self ^. js "subject") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-viewtimelineoptions-axis ViewTimelineOptions.axis specification>
+setAxis :: (MonadDOM m) => ViewTimelineOptions -> ScrollAxis -> m ()
+setAxis self val = liftDOM (void (self ^. jss "axis" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-viewtimelineoptions-axis ViewTimelineOptions.axis specification>
+getAxis :: (MonadDOM m) => ViewTimelineOptions -> m (Maybe ScrollAxis)
+getAxis self = liftDOM (((self ^. js "axis") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-viewtimelineoptions-axis ViewTimelineOptions.axis specification>
+getAxisUnsafe :: (MonadDOM m, HasCallStack) => ViewTimelineOptions -> m ScrollAxis
+getAxisUnsafe self = liftDOM ((((self ^. js "axis") >>= 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 (((self ^. js "axis") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "inset" (toJSVal val)))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-viewtimelineoptions-inset ViewTimelineOptions.inset specification>
+getInset :: (MonadDOM m) => ViewTimelineOptions -> m (Maybe StringOrSequenceCSSNumericValueOrCSSKeywordValue)
+getInset self = liftDOM (((self ^. js "inset") >>= fromJSValUnchecked))
+
+-- | <https://drafts.csswg.org/scroll-animations-1/#dom-viewtimelineoptions-inset ViewTimelineOptions.inset specification>
+getInsetUnsafe :: (MonadDOM m, HasCallStack) => ViewTimelineOptions -> m StringOrSequenceCSSNumericValueOrCSSKeywordValue
+getInsetUnsafe self = liftDOM ((((self ^. js "inset") >>= 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 (((self ^. js "inset") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ViewTransition.hs b/src/JSDOM/Generated/ViewTransition.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ViewTransition.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-view-transitions-2 (webref). Do not edit.
+module JSDOM.Generated.ViewTransition
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTransition/skipTransition MDN ViewTransition.skipTransition documentation>
+skipTransition :: (MonadDOM m) => ViewTransition -> m ()
+skipTransition self = liftDOM (void (self ^. jsf "skipTransition" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTransition/updateCallbackDone MDN ViewTransition.updateCallbackDone documentation>
+getUpdateCallbackDone :: (MonadDOM m) => ViewTransition -> m ()
+getUpdateCallbackDone self = liftDOM (void (((self ^. js "updateCallbackDone") >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTransition/ready MDN ViewTransition.ready documentation>
+getReady :: (MonadDOM m) => ViewTransition -> m ()
+getReady self = liftDOM (void (((self ^. js "ready") >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTransition/finished MDN ViewTransition.finished documentation>
+getFinished :: (MonadDOM m) => ViewTransition -> m ()
+getFinished self = liftDOM (void (((self ^. js "finished") >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/ViewTransition/types MDN ViewTransition.types documentation>
+getTypes :: (MonadDOM m) => ViewTransition -> m ViewTransitionTypeSet
+getTypes self = liftDOM (((self ^. js "types") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/ViewTransitionTypeSet.hs b/src/JSDOM/Generated/ViewTransitionTypeSet.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ViewTransitionTypeSet.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-view-transitions-2 (webref). Do not edit.
+module JSDOM.Generated.ViewTransitionTypeSet
+       (ViewTransitionTypeSet(..), gTypeViewTransitionTypeSet)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/ViewTransitionUpdateCallback.hs b/src/JSDOM/Generated/ViewTransitionUpdateCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/ViewTransitionUpdateCallback.hs
@@ -0,0 +1,27 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from css-view-transitions-2 (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newViewTransitionUpdateCallback :: (MonadDOM m) => (JSM ()) -> m ViewTransitionUpdateCallback
+newViewTransitionUpdateCallback callback = liftDOM (ViewTransitionUpdateCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        _ -> do
+          callback ))
+
+newViewTransitionUpdateCallbackSync :: (MonadDOM m) => (JSM ()) -> m ViewTransitionUpdateCallback
+newViewTransitionUpdateCallbackSync callback = liftDOM (ViewTransitionUpdateCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        _ -> do
+          callback ))
+
+newViewTransitionUpdateCallbackAsync :: (MonadDOM m) => (JSM ()) -> m ViewTransitionUpdateCallback
+newViewTransitionUpdateCallbackAsync callback = liftDOM (ViewTransitionUpdateCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        _ -> do
+          callback ))
diff --git a/src/JSDOM/Generated/VisualViewport.hs b/src/JSDOM/Generated/VisualViewport.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VisualViewport.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from cssom-view-1 (webref). Do not edit.
+module JSDOM.Generated.VisualViewport
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/VisualViewport/offsetLeft MDN VisualViewport.offsetLeft documentation>
+getOffsetLeft :: (MonadDOM m) => VisualViewport -> m Double
+getOffsetLeft self = liftDOM (((self ^. js "offsetLeft") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VisualViewport/offsetTop MDN VisualViewport.offsetTop documentation>
+getOffsetTop :: (MonadDOM m) => VisualViewport -> m Double
+getOffsetTop self = liftDOM (((self ^. js "offsetTop") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VisualViewport/pageLeft MDN VisualViewport.pageLeft documentation>
+getPageLeft :: (MonadDOM m) => VisualViewport -> m Double
+getPageLeft self = liftDOM (((self ^. js "pageLeft") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VisualViewport/pageTop MDN VisualViewport.pageTop documentation>
+getPageTop :: (MonadDOM m) => VisualViewport -> m Double
+getPageTop self = liftDOM (((self ^. js "pageTop") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VisualViewport/width MDN VisualViewport.width documentation>
+getWidth :: (MonadDOM m) => VisualViewport -> m Double
+getWidth self = liftDOM (((self ^. js "width") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VisualViewport/height MDN VisualViewport.height documentation>
+getHeight :: (MonadDOM m) => VisualViewport -> m Double
+getHeight self = liftDOM (((self ^. js "height") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/VisualViewport/scale MDN VisualViewport.scale documentation>
+getScale :: (MonadDOM m) => VisualViewport -> m Double
+getScale self = liftDOM (((self ^. js "scale") >>= valToNumber))
+
+-- | <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/JSDOM/Generated/VoidCallback.hs b/src/JSDOM/Generated/VoidCallback.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/VoidCallback.hs
+++ /dev/null
@@ -1,39 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.VoidCallback
-       (newVoidCallback, newVoidCallbackSync, newVoidCallbackAsync,
-        VoidCallback)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VoidCallback Mozilla VoidCallback documentation> 
-newVoidCallback :: (MonadDOM m) => JSM () -> m VoidCallback
-newVoidCallback callback
-  = liftDOM
-      (VoidCallback . Callback <$> function (\ _ _ [] -> callback))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VoidCallback Mozilla VoidCallback documentation> 
-newVoidCallbackSync :: (MonadDOM m) => JSM () -> m VoidCallback
-newVoidCallbackSync callback
-  = liftDOM
-      (VoidCallback . Callback <$> function (\ _ _ [] -> callback))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/VoidCallback Mozilla VoidCallback documentation> 
-newVoidCallbackAsync :: (MonadDOM m) => JSM () -> m VoidCallback
-newVoidCallbackAsync callback
-  = liftDOM
-      (VoidCallback . Callback <$> asyncFunction (\ _ _ [] -> callback))
diff --git a/src/JSDOM/Generated/VoidFunction.hs b/src/JSDOM/Generated/VoidFunction.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/VoidFunction.hs
@@ -0,0 +1,27 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webidl (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newVoidFunction :: (MonadDOM m) => (JSM ()) -> m VoidFunction
+newVoidFunction callback = liftDOM (VoidFunction . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        _ -> do
+          callback ))
+
+newVoidFunctionSync :: (MonadDOM m) => (JSM ()) -> m VoidFunction
+newVoidFunctionSync callback = liftDOM (VoidFunction . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        _ -> do
+          callback ))
+
+newVoidFunctionAsync :: (MonadDOM m) => (JSM ()) -> m VoidFunction
+newVoidFunctionAsync callback = liftDOM (VoidFunction . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        _ -> do
+          callback ))
diff --git a/src/JSDOM/Generated/WEBGL_color_buffer_float.hs b/src/JSDOM/Generated/WEBGL_color_buffer_float.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WEBGL_color_buffer_float.hs
@@ -0,0 +1,22 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_color_buffer_float (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+pattern RGBA32F_EXT = 0x8814
+
+pattern FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT = 0x8211
+
+pattern UNSIGNED_NORMALIZED_EXT = 0x8C17
diff --git a/src/JSDOM/Generated/WEBGL_compressed_texture_astc.hs b/src/JSDOM/Generated/WEBGL_compressed_texture_astc.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WEBGL_compressed_texture_astc.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_compressed_texture_astc (webref). Do not edit.
+module JSDOM.Generated.WEBGL_compressed_texture_astc
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "getSupportedProfiles" ()) >>= 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 (self ^. jsf "getSupportedProfiles" ()))
+
+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/JSDOM/Generated/WEBGL_compressed_texture_etc.hs b/src/JSDOM/Generated/WEBGL_compressed_texture_etc.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WEBGL_compressed_texture_etc.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_compressed_texture_etc (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.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/JSDOM/Generated/WEBGL_compressed_texture_etc1.hs b/src/JSDOM/Generated/WEBGL_compressed_texture_etc1.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WEBGL_compressed_texture_etc1.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_compressed_texture_etc1 (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+pattern COMPRESSED_RGB_ETC1_WEBGL = 0x8D64
diff --git a/src/JSDOM/Generated/WEBGL_compressed_texture_pvrtc.hs b/src/JSDOM/Generated/WEBGL_compressed_texture_pvrtc.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WEBGL_compressed_texture_pvrtc.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_compressed_texture_pvrtc (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.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/JSDOM/Generated/WEBGL_compressed_texture_s3tc.hs b/src/JSDOM/Generated/WEBGL_compressed_texture_s3tc.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WEBGL_compressed_texture_s3tc.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_compressed_texture_s3tc (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.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/JSDOM/Generated/WEBGL_compressed_texture_s3tc_srgb.hs b/src/JSDOM/Generated/WEBGL_compressed_texture_s3tc_srgb.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WEBGL_compressed_texture_s3tc_srgb.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# 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 JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.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/JSDOM/Generated/WEBGL_debug_renderer_info.hs b/src/JSDOM/Generated/WEBGL_debug_renderer_info.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WEBGL_debug_renderer_info.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_debug_renderer_info (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+pattern UNMASKED_VENDOR_WEBGL = 0x9245
+
+pattern UNMASKED_RENDERER_WEBGL = 0x9246
diff --git a/src/JSDOM/Generated/WEBGL_debug_shaders.hs b/src/JSDOM/Generated/WEBGL_debug_shaders.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WEBGL_debug_shaders.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_debug_shaders (webref). Do not edit.
+module JSDOM.Generated.WEBGL_debug_shaders
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "getTranslatedShaderSource" [toJSVal shader]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "getTranslatedShaderSource" [toJSVal shader]))
diff --git a/src/JSDOM/Generated/WEBGL_depth_texture.hs b/src/JSDOM/Generated/WEBGL_depth_texture.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WEBGL_depth_texture.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_depth_texture (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+pattern UNSIGNED_INT_24_8_WEBGL = 0x84FA
diff --git a/src/JSDOM/Generated/WEBGL_draw_buffers.hs b/src/JSDOM/Generated/WEBGL_draw_buffers.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WEBGL_draw_buffers.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_draw_buffers (webref). Do not edit.
+module JSDOM.Generated.WEBGL_draw_buffers
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "drawBuffersWEBGL" [toJSVal buffers]))
+
+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/JSDOM/Generated/WEBGL_lose_context.hs b/src/JSDOM/Generated/WEBGL_lose_context.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WEBGL_lose_context.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_lose_context (webref). Do not edit.
+module JSDOM.Generated.WEBGL_lose_context
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "loseContext" ()))
+
+-- | <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 (self ^. jsf "restoreContext" ()))
diff --git a/src/JSDOM/Generated/WEBGL_multi_draw.hs b/src/JSDOM/Generated/WEBGL_multi_draw.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WEBGL_multi_draw.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from WEBGL_multi_draw (webref). Do not edit.
+module JSDOM.Generated.WEBGL_multi_draw
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jsf "multiDrawArraysInstancedWEBGL" [toJSVal mode, toJSVal firstsList, toJSVal firstsOffset, toJSVal countsList, toJSVal countsOffset, toJSVal instanceCountsList, toJSVal instanceCountsOffset, toJSVal drawcount]))
+
+-- | <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 (self ^. jsf "multiDrawArraysWEBGL" [toJSVal mode, toJSVal firstsList, toJSVal firstsOffset, toJSVal countsList, toJSVal countsOffset, toJSVal drawcount]))
+
+-- | <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 (self ^. jsf "multiDrawElementsInstancedWEBGL" [toJSVal mode, toJSVal countsList, toJSVal countsOffset, toJSVal type', toJSVal offsetsList, toJSVal offsetsOffset, toJSVal instanceCountsList, toJSVal instanceCountsOffset, toJSVal drawcount]))
+
+-- | <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 (self ^. jsf "multiDrawElementsWEBGL" [toJSVal mode, toJSVal countsList, toJSVal countsOffset, toJSVal type', toJSVal offsetsList, toJSVal offsetsOffset, toJSVal drawcount]))
diff --git a/src/JSDOM/Generated/WGSLLanguageFeatures.hs b/src/JSDOM/Generated/WGSLLanguageFeatures.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WGSLLanguageFeatures.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgpu (webref). Do not edit.
+module JSDOM.Generated.WGSLLanguageFeatures
+       (WGSLLanguageFeatures(..), gTypeWGSLLanguageFeatures)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WakeLock.hs b/src/JSDOM/Generated/WakeLock.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WakeLock.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from screen-wake-lock (webref). Do not edit.
+module JSDOM.Generated.WakeLock
+       (request, request_, WakeLock(..), gTypeWakeLock)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((((self ^. jsf "request" [P.maybe (P.return jsUndefined) toJSVal type']) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "request" [P.maybe (P.return jsUndefined) toJSVal type']) >>= readPromise)))
diff --git a/src/JSDOM/Generated/WakeLockSentinel.hs b/src/JSDOM/Generated/WakeLockSentinel.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WakeLockSentinel.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from screen-wake-lock (webref). Do not edit.
+module JSDOM.Generated.WakeLockSentinel
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/WakeLockSentinel/release MDN WakeLockSentinel.release documentation>
+release :: (MonadDOM m) => WakeLockSentinel -> m ()
+release self = liftDOM (void (((self ^. jsf "release" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WakeLockSentinel/released MDN WakeLockSentinel.released documentation>
+getReleased :: (MonadDOM m) => WakeLockSentinel -> m Bool
+getReleased self = liftDOM (((self ^. js "released") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WakeLockSentinel/type MDN WakeLockSentinel.type documentation>
+getType :: (MonadDOM m) => WakeLockSentinel -> m WakeLockType
+getType self = liftDOM (((self ^. js "type") >>= 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/JSDOM/Generated/WaveShaperNode.hs b/src/JSDOM/Generated/WaveShaperNode.hs
--- a/src/JSDOM/Generated/WaveShaperNode.hs
+++ b/src/JSDOM/Generated/WaveShaperNode.hs
@@ -1,42 +1,44 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
 module JSDOM.Generated.WaveShaperNode
-       (setCurve, getCurve, setOversample, getOversample,
-        WaveShaperNode(..), gTypeWaveShaperNode)
+       (newWaveShaperNode, setCurve, getCurve, getCurveUnsafe, getCurveUnchecked, setOversample, getOversample, WaveShaperNode(..), gTypeWaveShaperNode)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.curve Mozilla WaveShaperNode.curve documentation> 
-setCurve ::
-         (MonadDOM m, IsFloat32Array val) => WaveShaperNode -> val -> m ()
-setCurve self val = liftDOM (self ^. jss "curve" (toJSVal val))
+-- | <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 (((new (jsg "WaveShaperNode") [toJSVal context, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.curve Mozilla WaveShaperNode.curve documentation> 
-getCurve :: (MonadDOM m) => WaveShaperNode -> m Float32Array
-getCurve self
-  = liftDOM ((self ^. js "curve") >>= fromJSValUnchecked)
+-- | <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 (self ^. jss "curve" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.oversample Mozilla WaveShaperNode.oversample documentation> 
-setOversample ::
-              (MonadDOM m) => WaveShaperNode -> OverSampleType -> m ()
-setOversample self val
-  = liftDOM (self ^. jss "oversample" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/WaveShaperNode/curve MDN WaveShaperNode.curve documentation>
+getCurve :: (MonadDOM m) => WaveShaperNode -> m (Maybe Float32Array)
+getCurve self = liftDOM (((self ^. js "curve") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.oversample Mozilla WaveShaperNode.oversample documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/WaveShaperNode/curve MDN WaveShaperNode.curve documentation>
+getCurveUnsafe :: (MonadDOM m, HasCallStack) => WaveShaperNode -> m Float32Array
+getCurveUnsafe self = liftDOM ((((self ^. js "curve") >>= 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 (((self ^. js "curve") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WaveShaperNode/oversample MDN WaveShaperNode.oversample documentation>
+setOversample :: (MonadDOM m) => WaveShaperNode -> OverSampleType -> m ()
+setOversample self val = liftDOM (void (self ^. jss "oversample" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WaveShaperNode/oversample MDN WaveShaperNode.oversample documentation>
 getOversample :: (MonadDOM m) => WaveShaperNode -> m OverSampleType
-getOversample self
-  = liftDOM ((self ^. js "oversample") >>= fromJSValUnchecked)
+getOversample self = liftDOM (((self ^. js "oversample") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WaveShaperOptions.hs b/src/JSDOM/Generated/WaveShaperOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WaveShaperOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webaudio-1.1 (webref). Do not edit.
+module JSDOM.Generated.WaveShaperOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://webaudio.github.io/web-audio-api/#WaveShaperOptions WaveShaperOptions specification>
+newWaveShaperOptions :: (MonadDOM m) => m WaveShaperOptions
+newWaveShaperOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-waveshaperoptions-curve WaveShaperOptions.curve specification>
+setCurve :: (MonadDOM m) => WaveShaperOptions -> [Float] -> m ()
+setCurve self val = liftDOM (void (self ^. jss "curve" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-waveshaperoptions-curve WaveShaperOptions.curve specification>
+getCurve :: (MonadDOM m) => WaveShaperOptions -> m (Maybe [Float])
+getCurve self = liftDOM (((self ^. js "curve") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-waveshaperoptions-curve WaveShaperOptions.curve specification>
+getCurveUnsafe :: (MonadDOM m, HasCallStack) => WaveShaperOptions -> m [Float]
+getCurveUnsafe self = liftDOM ((((self ^. js "curve") >>= 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 (((self ^. js "curve") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-waveshaperoptions-oversample WaveShaperOptions.oversample specification>
+setOversample :: (MonadDOM m) => WaveShaperOptions -> OverSampleType -> m ()
+setOversample self val = liftDOM (void (self ^. jss "oversample" (toJSVal val)))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-waveshaperoptions-oversample WaveShaperOptions.oversample specification>
+getOversample :: (MonadDOM m) => WaveShaperOptions -> m (Maybe OverSampleType)
+getOversample self = liftDOM (((self ^. js "oversample") >>= fromJSValUnchecked))
+
+-- | <https://webaudio.github.io/web-audio-api/#dom-waveshaperoptions-oversample WaveShaperOptions.oversample specification>
+getOversampleUnsafe :: (MonadDOM m, HasCallStack) => WaveShaperOptions -> m OverSampleType
+getOversampleUnsafe self = liftDOM ((((self ^. js "oversample") >>= 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 (((self ^. js "oversample") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WebCodecsErrorCallback.hs b/src/JSDOM/Generated/WebCodecsErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebCodecsErrorCallback.hs
@@ -0,0 +1,30 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webcodecs (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
+
+newWebCodecsErrorCallback :: (MonadDOM m) => (DOMException -> JSM ()) -> m WebCodecsErrorCallback
+newWebCodecsErrorCallback callback = liftDOM (WebCodecsErrorCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (error : _) -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
+
+newWebCodecsErrorCallbackSync :: (MonadDOM m) => (DOMException -> JSM ()) -> m WebCodecsErrorCallback
+newWebCodecsErrorCallbackSync callback = liftDOM (WebCodecsErrorCallback . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (error : _) -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
+
+newWebCodecsErrorCallbackAsync :: (MonadDOM m) => (DOMException -> JSM ()) -> m WebCodecsErrorCallback
+newWebCodecsErrorCallbackAsync callback = liftDOM (WebCodecsErrorCallback . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (error : _) -> do
+          error' <- fromJSValUnchecked error
+          callback error'))
diff --git a/src/JSDOM/Generated/WebGL2RenderingContext.hs b/src/JSDOM/Generated/WebGL2RenderingContext.hs
--- a/src/JSDOM/Generated/WebGL2RenderingContext.hs
+++ b/src/JSDOM/Generated/WebGL2RenderingContext.hs
@@ -1,1681 +1,17 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGL2RenderingContext
-       (bufferDataPtr, bufferData, bufferSubData, bufferDataView,
-        bufferSubDataView, copyBufferSubData, getBufferSubData,
-        blitFramebuffer, framebufferTextureLayer,
-        getInternalformatParameter, getInternalformatParameter_,
-        invalidateFramebuffer, invalidateSubFramebuffer, readBuffer,
-        renderbufferStorageMultisample, texStorage2D, texStorage3D,
-        texImage3D, texSubImage3DView, texSubImage3D, copyTexSubImage3D,
-        compressedTexImage3D, compressedTexSubImage3D, getFragDataLocation,
-        getFragDataLocation_, uniform1ui, uniform2ui, uniform3ui,
-        uniform4ui, uniform1uiv, uniform2uiv, uniform3uiv, uniform4uiv,
-        uniformMatrix2x3fv, uniformMatrix3x2fv, uniformMatrix2x4fv,
-        uniformMatrix4x2fv, uniformMatrix3x4fv, uniformMatrix4x3fv,
-        vertexAttribI4i, vertexAttribI4iv, vertexAttribI4ui,
-        vertexAttribI4uiv, vertexAttribIPointer, vertexAttribDivisor,
-        drawArraysInstanced, drawElementsInstanced, drawRangeElements,
-        drawBuffers, clearBufferiv, clearBufferuiv, clearBufferfv,
-        clearBufferfi, createQuery, createQuery_, deleteQuery, isQuery,
-        isQuery_, beginQuery, endQuery, getQuery, getQuery_,
-        getQueryParameter, getQueryParameter_, createSampler,
-        createSampler_, deleteSampler, isSampler, isSampler_, bindSampler,
-        samplerParameteri, samplerParameterf, getSamplerParameter,
-        getSamplerParameter_, fenceSync, fenceSync_, isSync, isSync_,
-        deleteSync, clientWaitSync, clientWaitSync_, waitSync,
-        getSyncParameter, getSyncParameter_, createTransformFeedback,
-        createTransformFeedback_, deleteTransformFeedback,
-        isTransformFeedback, isTransformFeedback_, bindTransformFeedback,
-        beginTransformFeedback, endTransformFeedback,
-        transformFeedbackVaryings, getTransformFeedbackVarying,
-        getTransformFeedbackVarying_, pauseTransformFeedback,
-        resumeTransformFeedback, bindBufferBase, bindBufferRange,
-        getIndexedParameter, getIndexedParameter_, getUniformIndices,
-        getUniformIndices_, getActiveUniforms, getActiveUniforms_,
-        getUniformBlockIndex, getUniformBlockIndex_,
-        getActiveUniformBlockParameter, getActiveUniformBlockParameter_,
-        getActiveUniformBlockName, getActiveUniformBlockName_,
-        uniformBlockBinding, createVertexArray, createVertexArray_,
-        deleteVertexArray, isVertexArray, isVertexArray_, 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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bufferData Mozilla WebGL2RenderingContext.bufferData documentation> 
-bufferDataPtr ::
-              (MonadDOM m) =>
-                WebGL2RenderingContext -> GLenum -> GLsizeiptr -> GLenum -> m ()
-bufferDataPtr self target size usage
-  = liftDOM
-      (void
-         (self ^. jsf "bufferData"
-            [toJSVal target, integralToDoubleToJSVal size, toJSVal usage]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bufferData Mozilla WebGL2RenderingContext.bufferData documentation> 
-bufferData ::
-           (MonadDOM m, IsBufferDataSource srcData) =>
-             WebGL2RenderingContext -> GLenum -> Maybe srcData -> GLenum -> m ()
-bufferData self target srcData usage
-  = liftDOM
-      (void
-         (self ^. jsf "bufferData"
-            [toJSVal target, toJSVal srcData, toJSVal usage]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bufferSubData Mozilla WebGL2RenderingContext.bufferSubData documentation> 
-bufferSubData ::
-              (MonadDOM m, IsBufferDataSource srcData) =>
-                WebGL2RenderingContext ->
-                  GLenum -> GLintptr -> Maybe srcData -> m ()
-bufferSubData self target dstByteOffset srcData
-  = liftDOM
-      (void
-         (self ^. jsf "bufferSubData"
-            [toJSVal target, integralToDoubleToJSVal dstByteOffset,
-             toJSVal srcData]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bufferData Mozilla WebGL2RenderingContext.bufferData documentation> 
-bufferDataView ::
-               (MonadDOM m, IsArrayBufferView data') =>
-                 WebGL2RenderingContext ->
-                   GLenum -> data' -> GLenum -> GLuint -> Maybe GLuint -> m ()
-bufferDataView self target data' usage srcOffset length
-  = liftDOM
-      (void
-         (self ^. jsf "bufferData"
-            [toJSVal target, toJSVal data', toJSVal usage, toJSVal srcOffset,
-             toJSVal length]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bufferSubData Mozilla WebGL2RenderingContext.bufferSubData documentation> 
-bufferSubDataView ::
-                  (MonadDOM m, IsArrayBufferView srcData) =>
-                    WebGL2RenderingContext ->
-                      GLenum -> GLintptr -> srcData -> GLuint -> Maybe GLuint -> m ()
-bufferSubDataView self target dstByteOffset srcData srcOffset
-  length
-  = liftDOM
-      (void
-         (self ^. jsf "bufferSubData"
-            [toJSVal target, integralToDoubleToJSVal dstByteOffset,
-             toJSVal srcData, toJSVal srcOffset, toJSVal length]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.copyBufferSubData Mozilla WebGL2RenderingContext.copyBufferSubData documentation> 
-copyBufferSubData ::
-                  (MonadDOM m) =>
-                    WebGL2RenderingContext ->
-                      GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizeiptr -> m ()
-copyBufferSubData self readTarget writeTarget readOffset
-  writeOffset size
-  = liftDOM
-      (void
-         (self ^. jsf "copyBufferSubData"
-            [toJSVal readTarget, toJSVal writeTarget,
-             integralToDoubleToJSVal readOffset,
-             integralToDoubleToJSVal writeOffset,
-             integralToDoubleToJSVal size]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getBufferSubData Mozilla WebGL2RenderingContext.getBufferSubData documentation> 
-getBufferSubData ::
-                 (MonadDOM m, IsArrayBufferView dstData) =>
-                   WebGL2RenderingContext ->
-                     GLenum ->
-                       GLintptr -> dstData -> Maybe GLuint -> Maybe GLuint -> m ()
-getBufferSubData self target srcByteOffset dstData dstOffset length
-  = liftDOM
-      (void
-         (self ^. jsf "getBufferSubData"
-            [toJSVal target, integralToDoubleToJSVal srcByteOffset,
-             toJSVal dstData, toJSVal dstOffset, toJSVal length]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.blitFramebuffer Mozilla WebGL2RenderingContext.blitFramebuffer documentation> 
-blitFramebuffer ::
-                (MonadDOM 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
-  = liftDOM
-      (void
-         (self ^. jsf "blitFramebuffer"
-            [toJSVal srcX0, toJSVal srcY0, toJSVal srcX1, toJSVal srcY1,
-             toJSVal dstX0, toJSVal dstY0, toJSVal dstX1, toJSVal dstY1,
-             toJSVal mask, toJSVal filter]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.framebufferTextureLayer Mozilla WebGL2RenderingContext.framebufferTextureLayer documentation> 
-framebufferTextureLayer ::
-                        (MonadDOM m) =>
-                          WebGL2RenderingContext ->
-                            GLenum -> GLenum -> GLuint -> GLint -> GLint -> m ()
-framebufferTextureLayer self target attachment texture level layer
-  = liftDOM
-      (void
-         (self ^. jsf "framebufferTextureLayer"
-            [toJSVal target, toJSVal attachment, toJSVal texture,
-             toJSVal level, toJSVal layer]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getInternalformatParameter Mozilla WebGL2RenderingContext.getInternalformatParameter documentation> 
-getInternalformatParameter ::
-                           (MonadDOM m) =>
-                             WebGL2RenderingContext -> GLenum -> GLenum -> GLenum -> m JSVal
-getInternalformatParameter self target internalformat pname
-  = liftDOM
-      ((self ^. jsf "getInternalformatParameter"
-          [toJSVal target, toJSVal internalformat, toJSVal pname])
-         >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getInternalformatParameter Mozilla WebGL2RenderingContext.getInternalformatParameter documentation> 
-getInternalformatParameter_ ::
-                            (MonadDOM m) =>
-                              WebGL2RenderingContext -> GLenum -> GLenum -> GLenum -> m ()
-getInternalformatParameter_ self target internalformat pname
-  = liftDOM
-      (void
-         (self ^. jsf "getInternalformatParameter"
-            [toJSVal target, toJSVal internalformat, toJSVal pname]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.invalidateFramebuffer Mozilla WebGL2RenderingContext.invalidateFramebuffer documentation> 
-invalidateFramebuffer ::
-                      (MonadDOM m) =>
-                        WebGL2RenderingContext -> GLenum -> [GLenum] -> m ()
-invalidateFramebuffer self target attachments
-  = liftDOM
-      (void
-         (self ^. jsf "invalidateFramebuffer"
-            [toJSVal target, toJSVal (array attachments)]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.invalidateSubFramebuffer Mozilla WebGL2RenderingContext.invalidateSubFramebuffer documentation> 
-invalidateSubFramebuffer ::
-                         (MonadDOM m) =>
-                           WebGL2RenderingContext ->
-                             GLenum -> [GLenum] -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
-invalidateSubFramebuffer self target attachments x y width height
-  = liftDOM
-      (void
-         (self ^. jsf "invalidateSubFramebuffer"
-            [toJSVal target, toJSVal (array attachments), toJSVal x, toJSVal y,
-             toJSVal width, toJSVal height]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.readBuffer Mozilla WebGL2RenderingContext.readBuffer documentation> 
-readBuffer ::
-           (MonadDOM m) => WebGL2RenderingContext -> GLenum -> m ()
-readBuffer self src
-  = liftDOM (void (self ^. jsf "readBuffer" [toJSVal src]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.renderbufferStorageMultisample Mozilla WebGL2RenderingContext.renderbufferStorageMultisample documentation> 
-renderbufferStorageMultisample ::
-                               (MonadDOM m) =>
-                                 WebGL2RenderingContext ->
-                                   GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
-renderbufferStorageMultisample self target samples internalformat
-  width height
-  = liftDOM
-      (void
-         (self ^. jsf "renderbufferStorageMultisample"
-            [toJSVal target, toJSVal samples, toJSVal internalformat,
-             toJSVal width, toJSVal height]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texStorage2D Mozilla WebGL2RenderingContext.texStorage2D documentation> 
-texStorage2D ::
-             (MonadDOM m) =>
-               WebGL2RenderingContext ->
-                 GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
-texStorage2D self target levels internalformat width height
-  = liftDOM
-      (void
-         (self ^. jsf "texStorage2D"
-            [toJSVal target, toJSVal levels, toJSVal internalformat,
-             toJSVal width, toJSVal height]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texStorage3D Mozilla WebGL2RenderingContext.texStorage3D documentation> 
-texStorage3D ::
-             (MonadDOM m) =>
-               WebGL2RenderingContext ->
-                 GLenum ->
-                   GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> m ()
-texStorage3D self target levels internalformat width height depth
-  = liftDOM
-      (void
-         (self ^. jsf "texStorage3D"
-            [toJSVal target, toJSVal levels, toJSVal internalformat,
-             toJSVal width, toJSVal height, toJSVal depth]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texImage3D Mozilla WebGL2RenderingContext.texImage3D documentation> 
-texImage3D ::
-           (MonadDOM 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
-  = liftDOM
-      (void
-         (self ^. jsf "texImage3D"
-            [toJSVal target, toJSVal level, toJSVal internalformat,
-             toJSVal width, toJSVal height, toJSVal depth, toJSVal border,
-             toJSVal format, toJSVal type', toJSVal pixels]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texSubImage3D Mozilla WebGL2RenderingContext.texSubImage3D documentation> 
-texSubImage3DView ::
-                  (MonadDOM 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
-  = liftDOM
-      (void
-         (self ^. jsf "texSubImage3D"
-            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
-             toJSVal zoffset, toJSVal width, toJSVal height, toJSVal depth,
-             toJSVal format, toJSVal type', toJSVal pixels]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texSubImage3D Mozilla WebGL2RenderingContext.texSubImage3D documentation> 
-texSubImage3D ::
-              (MonadDOM m, IsTexImageSource source) =>
-                WebGL2RenderingContext ->
-                  GLenum ->
-                    GLint ->
-                      GLint -> GLint -> GLint -> GLenum -> GLenum -> source -> m ()
-texSubImage3D self target level xoffset yoffset zoffset format
-  type' source
-  = liftDOM
-      (void
-         (self ^. jsf "texSubImage3D"
-            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
-             toJSVal zoffset, toJSVal format, toJSVal type', toJSVal source]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.copyTexSubImage3D Mozilla WebGL2RenderingContext.copyTexSubImage3D documentation> 
-copyTexSubImage3D ::
-                  (MonadDOM m) =>
-                    WebGL2RenderingContext ->
-                      GLenum ->
-                        GLint ->
-                          GLint ->
-                            GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
-copyTexSubImage3D self target level xoffset yoffset zoffset x y
-  width height
-  = liftDOM
-      (void
-         (self ^. jsf "copyTexSubImage3D"
-            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
-             toJSVal zoffset, toJSVal x, toJSVal y, toJSVal width,
-             toJSVal height]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.compressedTexImage3D Mozilla WebGL2RenderingContext.compressedTexImage3D documentation> 
-compressedTexImage3D ::
-                     (MonadDOM 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'
-  = liftDOM
-      (void
-         (self ^. jsf "compressedTexImage3D"
-            [toJSVal target, toJSVal level, toJSVal internalformat,
-             toJSVal width, toJSVal height, toJSVal depth, toJSVal border,
-             toJSVal imageSize, toJSVal data']))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.compressedTexSubImage3D Mozilla WebGL2RenderingContext.compressedTexSubImage3D documentation> 
-compressedTexSubImage3D ::
-                        (MonadDOM 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'
-  = liftDOM
-      (void
-         (self ^. jsf "compressedTexSubImage3D"
-            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
-             toJSVal zoffset, toJSVal width, toJSVal height, toJSVal depth,
-             toJSVal format, toJSVal imageSize, toJSVal data']))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getFragDataLocation Mozilla WebGL2RenderingContext.getFragDataLocation documentation> 
-getFragDataLocation ::
-                    (MonadDOM m, ToJSString name) =>
-                      WebGL2RenderingContext -> Maybe WebGLProgram -> name -> m GLint
-getFragDataLocation self program name
-  = liftDOM
-      ((self ^. jsf "getFragDataLocation"
-          [toJSVal program, toJSVal name])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getFragDataLocation Mozilla WebGL2RenderingContext.getFragDataLocation documentation> 
-getFragDataLocation_ ::
-                     (MonadDOM m, ToJSString name) =>
-                       WebGL2RenderingContext -> Maybe WebGLProgram -> name -> m ()
-getFragDataLocation_ self program name
-  = liftDOM
-      (void
-         (self ^. jsf "getFragDataLocation"
-            [toJSVal program, toJSVal name]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform1ui Mozilla WebGL2RenderingContext.uniform1ui documentation> 
-uniform1ui ::
-           (MonadDOM m) =>
-             WebGL2RenderingContext ->
-               Maybe WebGLUniformLocation -> GLuint -> m ()
-uniform1ui self location v0
-  = liftDOM
-      (void (self ^. jsf "uniform1ui" [toJSVal location, toJSVal v0]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform2ui Mozilla WebGL2RenderingContext.uniform2ui documentation> 
-uniform2ui ::
-           (MonadDOM m) =>
-             WebGL2RenderingContext ->
-               Maybe WebGLUniformLocation -> GLuint -> GLuint -> m ()
-uniform2ui self location v0 v1
-  = liftDOM
-      (void
-         (self ^. jsf "uniform2ui"
-            [toJSVal location, toJSVal v0, toJSVal v1]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform3ui Mozilla WebGL2RenderingContext.uniform3ui documentation> 
-uniform3ui ::
-           (MonadDOM m) =>
-             WebGL2RenderingContext ->
-               Maybe WebGLUniformLocation -> GLuint -> GLuint -> GLuint -> m ()
-uniform3ui self location v0 v1 v2
-  = liftDOM
-      (void
-         (self ^. jsf "uniform3ui"
-            [toJSVal location, toJSVal v0, toJSVal v1, toJSVal v2]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform4ui Mozilla WebGL2RenderingContext.uniform4ui documentation> 
-uniform4ui ::
-           (MonadDOM m) =>
-             WebGL2RenderingContext ->
-               Maybe WebGLUniformLocation ->
-                 GLuint -> GLuint -> GLuint -> GLuint -> m ()
-uniform4ui self location v0 v1 v2 v3
-  = liftDOM
-      (void
-         (self ^. jsf "uniform4ui"
-            [toJSVal location, toJSVal v0, toJSVal v1, toJSVal v2,
-             toJSVal v3]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform1uiv Mozilla WebGL2RenderingContext.uniform1uiv documentation> 
-uniform1uiv ::
-            (MonadDOM m, IsUint32Array value) =>
-              WebGL2RenderingContext ->
-                Maybe WebGLUniformLocation -> Maybe value -> m ()
-uniform1uiv self location value
-  = liftDOM
-      (void
-         (self ^. jsf "uniform1uiv" [toJSVal location, toJSVal value]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform2uiv Mozilla WebGL2RenderingContext.uniform2uiv documentation> 
-uniform2uiv ::
-            (MonadDOM m, IsUint32Array value) =>
-              WebGL2RenderingContext ->
-                Maybe WebGLUniformLocation -> Maybe value -> m ()
-uniform2uiv self location value
-  = liftDOM
-      (void
-         (self ^. jsf "uniform2uiv" [toJSVal location, toJSVal value]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform3uiv Mozilla WebGL2RenderingContext.uniform3uiv documentation> 
-uniform3uiv ::
-            (MonadDOM m, IsUint32Array value) =>
-              WebGL2RenderingContext ->
-                Maybe WebGLUniformLocation -> Maybe value -> m ()
-uniform3uiv self location value
-  = liftDOM
-      (void
-         (self ^. jsf "uniform3uiv" [toJSVal location, toJSVal value]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform4uiv Mozilla WebGL2RenderingContext.uniform4uiv documentation> 
-uniform4uiv ::
-            (MonadDOM m, IsUint32Array value) =>
-              WebGL2RenderingContext ->
-                Maybe WebGLUniformLocation -> Maybe value -> m ()
-uniform4uiv self location value
-  = liftDOM
-      (void
-         (self ^. jsf "uniform4uiv" [toJSVal location, toJSVal value]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix2x3fv Mozilla WebGL2RenderingContext.uniformMatrix2x3fv documentation> 
-uniformMatrix2x3fv ::
-                   (MonadDOM m, IsFloat32Array value) =>
-                     WebGL2RenderingContext ->
-                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
-uniformMatrix2x3fv self location transpose value
-  = liftDOM
-      (void
-         (self ^. jsf "uniformMatrix2x3fv"
-            [toJSVal location, toJSVal transpose, toJSVal value]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix3x2fv Mozilla WebGL2RenderingContext.uniformMatrix3x2fv documentation> 
-uniformMatrix3x2fv ::
-                   (MonadDOM m, IsFloat32Array value) =>
-                     WebGL2RenderingContext ->
-                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
-uniformMatrix3x2fv self location transpose value
-  = liftDOM
-      (void
-         (self ^. jsf "uniformMatrix3x2fv"
-            [toJSVal location, toJSVal transpose, toJSVal value]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix2x4fv Mozilla WebGL2RenderingContext.uniformMatrix2x4fv documentation> 
-uniformMatrix2x4fv ::
-                   (MonadDOM m, IsFloat32Array value) =>
-                     WebGL2RenderingContext ->
-                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
-uniformMatrix2x4fv self location transpose value
-  = liftDOM
-      (void
-         (self ^. jsf "uniformMatrix2x4fv"
-            [toJSVal location, toJSVal transpose, toJSVal value]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix4x2fv Mozilla WebGL2RenderingContext.uniformMatrix4x2fv documentation> 
-uniformMatrix4x2fv ::
-                   (MonadDOM m, IsFloat32Array value) =>
-                     WebGL2RenderingContext ->
-                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
-uniformMatrix4x2fv self location transpose value
-  = liftDOM
-      (void
-         (self ^. jsf "uniformMatrix4x2fv"
-            [toJSVal location, toJSVal transpose, toJSVal value]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix3x4fv Mozilla WebGL2RenderingContext.uniformMatrix3x4fv documentation> 
-uniformMatrix3x4fv ::
-                   (MonadDOM m, IsFloat32Array value) =>
-                     WebGL2RenderingContext ->
-                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
-uniformMatrix3x4fv self location transpose value
-  = liftDOM
-      (void
-         (self ^. jsf "uniformMatrix3x4fv"
-            [toJSVal location, toJSVal transpose, toJSVal value]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix4x3fv Mozilla WebGL2RenderingContext.uniformMatrix4x3fv documentation> 
-uniformMatrix4x3fv ::
-                   (MonadDOM m, IsFloat32Array value) =>
-                     WebGL2RenderingContext ->
-                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
-uniformMatrix4x3fv self location transpose value
-  = liftDOM
-      (void
-         (self ^. jsf "uniformMatrix4x3fv"
-            [toJSVal location, toJSVal transpose, toJSVal value]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribI4i Mozilla WebGL2RenderingContext.vertexAttribI4i documentation> 
-vertexAttribI4i ::
-                (MonadDOM m) =>
-                  WebGL2RenderingContext ->
-                    GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
-vertexAttribI4i self index x y z w
-  = liftDOM
-      (void
-         (self ^. jsf "vertexAttribI4i"
-            [toJSVal index, toJSVal x, toJSVal y, toJSVal z, toJSVal w]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribI4iv Mozilla WebGL2RenderingContext.vertexAttribI4iv documentation> 
-vertexAttribI4iv ::
-                 (MonadDOM m, IsInt32Array v) =>
-                   WebGL2RenderingContext -> GLuint -> Maybe v -> m ()
-vertexAttribI4iv self index v
-  = liftDOM
-      (void (self ^. jsf "vertexAttribI4iv" [toJSVal index, toJSVal v]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribI4ui Mozilla WebGL2RenderingContext.vertexAttribI4ui documentation> 
-vertexAttribI4ui ::
-                 (MonadDOM m) =>
-                   WebGL2RenderingContext ->
-                     GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
-vertexAttribI4ui self index x y z w
-  = liftDOM
-      (void
-         (self ^. jsf "vertexAttribI4ui"
-            [toJSVal index, toJSVal x, toJSVal y, toJSVal z, toJSVal w]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribI4uiv Mozilla WebGL2RenderingContext.vertexAttribI4uiv documentation> 
-vertexAttribI4uiv ::
-                  (MonadDOM m, IsUint32Array v) =>
-                    WebGL2RenderingContext -> GLuint -> Maybe v -> m ()
-vertexAttribI4uiv self index v
-  = liftDOM
-      (void (self ^. jsf "vertexAttribI4uiv" [toJSVal index, toJSVal v]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribIPointer Mozilla WebGL2RenderingContext.vertexAttribIPointer documentation> 
-vertexAttribIPointer ::
-                     (MonadDOM m) =>
-                       WebGL2RenderingContext ->
-                         GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> m ()
-vertexAttribIPointer self index size type' stride offset
-  = liftDOM
-      (void
-         (self ^. jsf "vertexAttribIPointer"
-            [toJSVal index, toJSVal size, toJSVal type', toJSVal stride,
-             integralToDoubleToJSVal offset]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribDivisor Mozilla WebGL2RenderingContext.vertexAttribDivisor documentation> 
-vertexAttribDivisor ::
-                    (MonadDOM m) => WebGL2RenderingContext -> GLuint -> GLuint -> m ()
-vertexAttribDivisor self index divisor
-  = liftDOM
-      (void
-         (self ^. jsf "vertexAttribDivisor"
-            [toJSVal index, toJSVal divisor]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.drawArraysInstanced Mozilla WebGL2RenderingContext.drawArraysInstanced documentation> 
-drawArraysInstanced ::
-                    (MonadDOM m) =>
-                      WebGL2RenderingContext ->
-                        GLenum -> GLint -> GLsizei -> GLsizei -> m ()
-drawArraysInstanced self mode first count instanceCount
-  = liftDOM
-      (void
-         (self ^. jsf "drawArraysInstanced"
-            [toJSVal mode, toJSVal first, toJSVal count,
-             toJSVal instanceCount]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.drawElementsInstanced Mozilla WebGL2RenderingContext.drawElementsInstanced documentation> 
-drawElementsInstanced ::
-                      (MonadDOM m) =>
-                        WebGL2RenderingContext ->
-                          GLenum -> GLsizei -> GLenum -> GLintptr -> GLsizei -> m ()
-drawElementsInstanced self mode count type' offset instanceCount
-  = liftDOM
-      (void
-         (self ^. jsf "drawElementsInstanced"
-            [toJSVal mode, toJSVal count, toJSVal type',
-             integralToDoubleToJSVal offset, toJSVal instanceCount]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.drawRangeElements Mozilla WebGL2RenderingContext.drawRangeElements documentation> 
-drawRangeElements ::
-                  (MonadDOM m) =>
-                    WebGL2RenderingContext ->
-                      GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> GLintptr -> m ()
-drawRangeElements self mode start end count type' offset
-  = liftDOM
-      (void
-         (self ^. jsf "drawRangeElements"
-            [toJSVal mode, toJSVal start, toJSVal end, toJSVal count,
-             toJSVal type', integralToDoubleToJSVal offset]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.drawBuffers Mozilla WebGL2RenderingContext.drawBuffers documentation> 
-drawBuffers ::
-            (MonadDOM m) => WebGL2RenderingContext -> [GLenum] -> m ()
-drawBuffers self buffers
-  = liftDOM
-      (void (self ^. jsf "drawBuffers" [toJSVal (array buffers)]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clearBufferiv Mozilla WebGL2RenderingContext.clearBufferiv documentation> 
-clearBufferiv ::
-              (MonadDOM m, IsInt32Array value) =>
-                WebGL2RenderingContext -> GLenum -> GLint -> Maybe value -> m ()
-clearBufferiv self buffer drawbuffer value
-  = liftDOM
-      (void
-         (self ^. jsf "clearBufferiv"
-            [toJSVal buffer, toJSVal drawbuffer, toJSVal value]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clearBufferuiv Mozilla WebGL2RenderingContext.clearBufferuiv documentation> 
-clearBufferuiv ::
-               (MonadDOM m, IsUint32Array value) =>
-                 WebGL2RenderingContext -> GLenum -> GLint -> Maybe value -> m ()
-clearBufferuiv self buffer drawbuffer value
-  = liftDOM
-      (void
-         (self ^. jsf "clearBufferuiv"
-            [toJSVal buffer, toJSVal drawbuffer, toJSVal value]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clearBufferfv Mozilla WebGL2RenderingContext.clearBufferfv documentation> 
-clearBufferfv ::
-              (MonadDOM m, IsFloat32Array value) =>
-                WebGL2RenderingContext -> GLenum -> GLint -> Maybe value -> m ()
-clearBufferfv self buffer drawbuffer value
-  = liftDOM
-      (void
-         (self ^. jsf "clearBufferfv"
-            [toJSVal buffer, toJSVal drawbuffer, toJSVal value]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clearBufferfi Mozilla WebGL2RenderingContext.clearBufferfi documentation> 
-clearBufferfi ::
-              (MonadDOM m) =>
-                WebGL2RenderingContext ->
-                  GLenum -> GLint -> GLfloat -> GLint -> m ()
-clearBufferfi self buffer drawbuffer depth stencil
-  = liftDOM
-      (void
-         (self ^. jsf "clearBufferfi"
-            [toJSVal buffer, toJSVal drawbuffer, toJSVal depth,
-             toJSVal stencil]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createQuery Mozilla WebGL2RenderingContext.createQuery documentation> 
-createQuery ::
-            (MonadDOM m) => WebGL2RenderingContext -> m WebGLQuery
-createQuery self
-  = liftDOM ((self ^. jsf "createQuery" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createQuery Mozilla WebGL2RenderingContext.createQuery documentation> 
-createQuery_ :: (MonadDOM m) => WebGL2RenderingContext -> m ()
-createQuery_ self = liftDOM (void (self ^. jsf "createQuery" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteQuery Mozilla WebGL2RenderingContext.deleteQuery documentation> 
-deleteQuery ::
-            (MonadDOM m) => WebGL2RenderingContext -> Maybe WebGLQuery -> m ()
-deleteQuery self query
-  = liftDOM (void (self ^. jsf "deleteQuery" [toJSVal query]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isQuery Mozilla WebGL2RenderingContext.isQuery documentation> 
-isQuery ::
-        (MonadDOM m) =>
-          WebGL2RenderingContext -> Maybe WebGLQuery -> m GLboolean
-isQuery self query
-  = liftDOM
-      ((self ^. jsf "isQuery" [toJSVal query]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isQuery Mozilla WebGL2RenderingContext.isQuery documentation> 
-isQuery_ ::
-         (MonadDOM m) => WebGL2RenderingContext -> Maybe WebGLQuery -> m ()
-isQuery_ self query
-  = liftDOM (void (self ^. jsf "isQuery" [toJSVal query]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.beginQuery Mozilla WebGL2RenderingContext.beginQuery documentation> 
-beginQuery ::
-           (MonadDOM m) =>
-             WebGL2RenderingContext -> GLenum -> Maybe WebGLQuery -> m ()
-beginQuery self target query
-  = liftDOM
-      (void (self ^. jsf "beginQuery" [toJSVal target, toJSVal query]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.endQuery Mozilla WebGL2RenderingContext.endQuery documentation> 
-endQuery ::
-         (MonadDOM m) => WebGL2RenderingContext -> GLenum -> m ()
-endQuery self target
-  = liftDOM (void (self ^. jsf "endQuery" [toJSVal target]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQuery Mozilla WebGL2RenderingContext.getQuery documentation> 
-getQuery ::
-         (MonadDOM m) =>
-           WebGL2RenderingContext -> GLenum -> GLenum -> m WebGLQuery
-getQuery self target pname
-  = liftDOM
-      ((self ^. jsf "getQuery" [toJSVal target, toJSVal pname]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQuery Mozilla WebGL2RenderingContext.getQuery documentation> 
-getQuery_ ::
-          (MonadDOM m) => WebGL2RenderingContext -> GLenum -> GLenum -> m ()
-getQuery_ self target pname
-  = liftDOM
-      (void (self ^. jsf "getQuery" [toJSVal target, toJSVal pname]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQueryParameter Mozilla WebGL2RenderingContext.getQueryParameter documentation> 
-getQueryParameter ::
-                  (MonadDOM m) =>
-                    WebGL2RenderingContext -> Maybe WebGLQuery -> GLenum -> m JSVal
-getQueryParameter self query pname
-  = liftDOM
-      ((self ^. jsf "getQueryParameter" [toJSVal query, toJSVal pname])
-         >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQueryParameter Mozilla WebGL2RenderingContext.getQueryParameter documentation> 
-getQueryParameter_ ::
-                   (MonadDOM m) =>
-                     WebGL2RenderingContext -> Maybe WebGLQuery -> GLenum -> m ()
-getQueryParameter_ self query pname
-  = liftDOM
-      (void
-         (self ^. jsf "getQueryParameter" [toJSVal query, toJSVal pname]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createSampler Mozilla WebGL2RenderingContext.createSampler documentation> 
-createSampler ::
-              (MonadDOM m) => WebGL2RenderingContext -> m WebGLSampler
-createSampler self
-  = liftDOM ((self ^. jsf "createSampler" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createSampler Mozilla WebGL2RenderingContext.createSampler documentation> 
-createSampler_ :: (MonadDOM m) => WebGL2RenderingContext -> m ()
-createSampler_ self
-  = liftDOM (void (self ^. jsf "createSampler" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteSampler Mozilla WebGL2RenderingContext.deleteSampler documentation> 
-deleteSampler ::
-              (MonadDOM m) =>
-                WebGL2RenderingContext -> Maybe WebGLSampler -> m ()
-deleteSampler self sampler
-  = liftDOM (void (self ^. jsf "deleteSampler" [toJSVal sampler]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isSampler Mozilla WebGL2RenderingContext.isSampler documentation> 
-isSampler ::
-          (MonadDOM m) =>
-            WebGL2RenderingContext -> Maybe WebGLSampler -> m GLboolean
-isSampler self sampler
-  = liftDOM
-      ((self ^. jsf "isSampler" [toJSVal sampler]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isSampler Mozilla WebGL2RenderingContext.isSampler documentation> 
-isSampler_ ::
-           (MonadDOM m) =>
-             WebGL2RenderingContext -> Maybe WebGLSampler -> m ()
-isSampler_ self sampler
-  = liftDOM (void (self ^. jsf "isSampler" [toJSVal sampler]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindSampler Mozilla WebGL2RenderingContext.bindSampler documentation> 
-bindSampler ::
-            (MonadDOM m) =>
-              WebGL2RenderingContext -> GLuint -> Maybe WebGLSampler -> m ()
-bindSampler self unit sampler
-  = liftDOM
-      (void (self ^. jsf "bindSampler" [toJSVal unit, toJSVal sampler]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.samplerParameteri Mozilla WebGL2RenderingContext.samplerParameteri documentation> 
-samplerParameteri ::
-                  (MonadDOM m) =>
-                    WebGL2RenderingContext ->
-                      Maybe WebGLSampler -> GLenum -> GLint -> m ()
-samplerParameteri self sampler pname param
-  = liftDOM
-      (void
-         (self ^. jsf "samplerParameteri"
-            [toJSVal sampler, toJSVal pname, toJSVal param]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.samplerParameterf Mozilla WebGL2RenderingContext.samplerParameterf documentation> 
-samplerParameterf ::
-                  (MonadDOM m) =>
-                    WebGL2RenderingContext ->
-                      Maybe WebGLSampler -> GLenum -> GLfloat -> m ()
-samplerParameterf self sampler pname param
-  = liftDOM
-      (void
-         (self ^. jsf "samplerParameterf"
-            [toJSVal sampler, toJSVal pname, toJSVal param]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getSamplerParameter Mozilla WebGL2RenderingContext.getSamplerParameter documentation> 
-getSamplerParameter ::
-                    (MonadDOM m) =>
-                      WebGL2RenderingContext -> Maybe WebGLSampler -> GLenum -> m JSVal
-getSamplerParameter self sampler pname
-  = liftDOM
-      ((self ^. jsf "getSamplerParameter"
-          [toJSVal sampler, toJSVal pname])
-         >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getSamplerParameter Mozilla WebGL2RenderingContext.getSamplerParameter documentation> 
-getSamplerParameter_ ::
-                     (MonadDOM m) =>
-                       WebGL2RenderingContext -> Maybe WebGLSampler -> GLenum -> m ()
-getSamplerParameter_ self sampler pname
-  = liftDOM
-      (void
-         (self ^. jsf "getSamplerParameter"
-            [toJSVal sampler, toJSVal pname]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.fenceSync Mozilla WebGL2RenderingContext.fenceSync documentation> 
-fenceSync ::
-          (MonadDOM m) =>
-            WebGL2RenderingContext -> GLenum -> GLbitfield -> m WebGLSync
-fenceSync self condition flags
-  = liftDOM
-      ((self ^. jsf "fenceSync" [toJSVal condition, toJSVal flags]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.fenceSync Mozilla WebGL2RenderingContext.fenceSync documentation> 
-fenceSync_ ::
-           (MonadDOM m) =>
-             WebGL2RenderingContext -> GLenum -> GLbitfield -> m ()
-fenceSync_ self condition flags
-  = liftDOM
-      (void (self ^. jsf "fenceSync" [toJSVal condition, toJSVal flags]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isSync Mozilla WebGL2RenderingContext.isSync documentation> 
-isSync ::
-       (MonadDOM m) =>
-         WebGL2RenderingContext -> Maybe WebGLSync -> m GLboolean
-isSync self sync
-  = liftDOM
-      ((self ^. jsf "isSync" [toJSVal sync]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isSync Mozilla WebGL2RenderingContext.isSync documentation> 
-isSync_ ::
-        (MonadDOM m) => WebGL2RenderingContext -> Maybe WebGLSync -> m ()
-isSync_ self sync
-  = liftDOM (void (self ^. jsf "isSync" [toJSVal sync]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteSync Mozilla WebGL2RenderingContext.deleteSync documentation> 
-deleteSync ::
-           (MonadDOM m) => WebGL2RenderingContext -> Maybe WebGLSync -> m ()
-deleteSync self sync
-  = liftDOM (void (self ^. jsf "deleteSync" [toJSVal sync]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clientWaitSync Mozilla WebGL2RenderingContext.clientWaitSync documentation> 
-clientWaitSync ::
-               (MonadDOM m) =>
-                 WebGL2RenderingContext ->
-                   Maybe WebGLSync -> GLbitfield -> GLuint64 -> m GLenum
-clientWaitSync self sync flags timeout
-  = liftDOM
-      ((self ^. jsf "clientWaitSync"
-          [toJSVal sync, toJSVal flags, integralToDoubleToJSVal timeout])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clientWaitSync Mozilla WebGL2RenderingContext.clientWaitSync documentation> 
-clientWaitSync_ ::
-                (MonadDOM m) =>
-                  WebGL2RenderingContext ->
-                    Maybe WebGLSync -> GLbitfield -> GLuint64 -> m ()
-clientWaitSync_ self sync flags timeout
-  = liftDOM
-      (void
-         (self ^. jsf "clientWaitSync"
-            [toJSVal sync, toJSVal flags, integralToDoubleToJSVal timeout]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.waitSync Mozilla WebGL2RenderingContext.waitSync documentation> 
-waitSync ::
-         (MonadDOM m) =>
-           WebGL2RenderingContext ->
-             Maybe WebGLSync -> GLbitfield -> GLuint64 -> m ()
-waitSync self sync flags timeout
-  = liftDOM
-      (void
-         (self ^. jsf "waitSync"
-            [toJSVal sync, toJSVal flags, integralToDoubleToJSVal timeout]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getSyncParameter Mozilla WebGL2RenderingContext.getSyncParameter documentation> 
-getSyncParameter ::
-                 (MonadDOM m) =>
-                   WebGL2RenderingContext -> Maybe WebGLSync -> GLenum -> m JSVal
-getSyncParameter self sync pname
-  = liftDOM
-      ((self ^. jsf "getSyncParameter" [toJSVal sync, toJSVal pname]) >>=
-         toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getSyncParameter Mozilla WebGL2RenderingContext.getSyncParameter documentation> 
-getSyncParameter_ ::
-                  (MonadDOM m) =>
-                    WebGL2RenderingContext -> Maybe WebGLSync -> GLenum -> m ()
-getSyncParameter_ self sync pname
-  = liftDOM
-      (void
-         (self ^. jsf "getSyncParameter" [toJSVal sync, toJSVal pname]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createTransformFeedback Mozilla WebGL2RenderingContext.createTransformFeedback documentation> 
-createTransformFeedback ::
-                        (MonadDOM m) => WebGL2RenderingContext -> m WebGLTransformFeedback
-createTransformFeedback self
-  = liftDOM
-      ((self ^. jsf "createTransformFeedback" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createTransformFeedback Mozilla WebGL2RenderingContext.createTransformFeedback documentation> 
-createTransformFeedback_ ::
-                         (MonadDOM m) => WebGL2RenderingContext -> m ()
-createTransformFeedback_ self
-  = liftDOM (void (self ^. jsf "createTransformFeedback" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteTransformFeedback Mozilla WebGL2RenderingContext.deleteTransformFeedback documentation> 
-deleteTransformFeedback ::
-                        (MonadDOM m) =>
-                          WebGL2RenderingContext -> Maybe WebGLTransformFeedback -> m ()
-deleteTransformFeedback self id
-  = liftDOM
-      (void (self ^. jsf "deleteTransformFeedback" [toJSVal id]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isTransformFeedback Mozilla WebGL2RenderingContext.isTransformFeedback documentation> 
-isTransformFeedback ::
-                    (MonadDOM m) =>
-                      WebGL2RenderingContext ->
-                        Maybe WebGLTransformFeedback -> m GLboolean
-isTransformFeedback self id
-  = liftDOM
-      ((self ^. jsf "isTransformFeedback" [toJSVal id]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isTransformFeedback Mozilla WebGL2RenderingContext.isTransformFeedback documentation> 
-isTransformFeedback_ ::
-                     (MonadDOM m) =>
-                       WebGL2RenderingContext -> Maybe WebGLTransformFeedback -> m ()
-isTransformFeedback_ self id
-  = liftDOM (void (self ^. jsf "isTransformFeedback" [toJSVal id]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindTransformFeedback Mozilla WebGL2RenderingContext.bindTransformFeedback documentation> 
-bindTransformFeedback ::
-                      (MonadDOM m) =>
-                        WebGL2RenderingContext ->
-                          GLenum -> Maybe WebGLTransformFeedback -> m ()
-bindTransformFeedback self target id
-  = liftDOM
-      (void
-         (self ^. jsf "bindTransformFeedback" [toJSVal target, toJSVal id]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.beginTransformFeedback Mozilla WebGL2RenderingContext.beginTransformFeedback documentation> 
-beginTransformFeedback ::
-                       (MonadDOM m) => WebGL2RenderingContext -> GLenum -> m ()
-beginTransformFeedback self primitiveMode
-  = liftDOM
-      (void
-         (self ^. jsf "beginTransformFeedback" [toJSVal primitiveMode]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.endTransformFeedback Mozilla WebGL2RenderingContext.endTransformFeedback documentation> 
-endTransformFeedback ::
-                     (MonadDOM m) => WebGL2RenderingContext -> m ()
-endTransformFeedback self
-  = liftDOM (void (self ^. jsf "endTransformFeedback" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.transformFeedbackVaryings Mozilla WebGL2RenderingContext.transformFeedbackVaryings documentation> 
-transformFeedbackVaryings ::
-                          (MonadDOM m, ToJSString varyings) =>
-                            WebGL2RenderingContext ->
-                              Maybe WebGLProgram -> [varyings] -> GLenum -> m ()
-transformFeedbackVaryings self program varyings bufferMode
-  = liftDOM
-      (void
-         (self ^. jsf "transformFeedbackVaryings"
-            [toJSVal program, toJSVal (array varyings), toJSVal bufferMode]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getTransformFeedbackVarying Mozilla WebGL2RenderingContext.getTransformFeedbackVarying documentation> 
-getTransformFeedbackVarying ::
-                            (MonadDOM m) =>
-                              WebGL2RenderingContext ->
-                                Maybe WebGLProgram -> GLuint -> m WebGLActiveInfo
-getTransformFeedbackVarying self program index
-  = liftDOM
-      ((self ^. jsf "getTransformFeedbackVarying"
-          [toJSVal program, toJSVal index])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getTransformFeedbackVarying Mozilla WebGL2RenderingContext.getTransformFeedbackVarying documentation> 
-getTransformFeedbackVarying_ ::
-                             (MonadDOM m) =>
-                               WebGL2RenderingContext -> Maybe WebGLProgram -> GLuint -> m ()
-getTransformFeedbackVarying_ self program index
-  = liftDOM
-      (void
-         (self ^. jsf "getTransformFeedbackVarying"
-            [toJSVal program, toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.pauseTransformFeedback Mozilla WebGL2RenderingContext.pauseTransformFeedback documentation> 
-pauseTransformFeedback ::
-                       (MonadDOM m) => WebGL2RenderingContext -> m ()
-pauseTransformFeedback self
-  = liftDOM (void (self ^. jsf "pauseTransformFeedback" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.resumeTransformFeedback Mozilla WebGL2RenderingContext.resumeTransformFeedback documentation> 
-resumeTransformFeedback ::
-                        (MonadDOM m) => WebGL2RenderingContext -> m ()
-resumeTransformFeedback self
-  = liftDOM (void (self ^. jsf "resumeTransformFeedback" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindBufferBase Mozilla WebGL2RenderingContext.bindBufferBase documentation> 
-bindBufferBase ::
-               (MonadDOM m) =>
-                 WebGL2RenderingContext ->
-                   GLenum -> GLuint -> Maybe WebGLBuffer -> m ()
-bindBufferBase self target index buffer
-  = liftDOM
-      (void
-         (self ^. jsf "bindBufferBase"
-            [toJSVal target, toJSVal index, toJSVal buffer]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindBufferRange Mozilla WebGL2RenderingContext.bindBufferRange documentation> 
-bindBufferRange ::
-                (MonadDOM m) =>
-                  WebGL2RenderingContext ->
-                    GLenum ->
-                      GLuint -> Maybe WebGLBuffer -> GLintptr -> GLsizeiptr -> m ()
-bindBufferRange self target index buffer offset size
-  = liftDOM
-      (void
-         (self ^. jsf "bindBufferRange"
-            [toJSVal target, toJSVal index, toJSVal buffer,
-             integralToDoubleToJSVal offset, integralToDoubleToJSVal size]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getIndexedParameter Mozilla WebGL2RenderingContext.getIndexedParameter documentation> 
-getIndexedParameter ::
-                    (MonadDOM m) =>
-                      WebGL2RenderingContext -> GLenum -> GLuint -> m JSVal
-getIndexedParameter self target index
-  = liftDOM
-      ((self ^. jsf "getIndexedParameter"
-          [toJSVal target, toJSVal index])
-         >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getIndexedParameter Mozilla WebGL2RenderingContext.getIndexedParameter documentation> 
-getIndexedParameter_ ::
-                     (MonadDOM m) => WebGL2RenderingContext -> GLenum -> GLuint -> m ()
-getIndexedParameter_ self target index
-  = liftDOM
-      (void
-         (self ^. jsf "getIndexedParameter"
-            [toJSVal target, toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getUniformIndices Mozilla WebGL2RenderingContext.getUniformIndices documentation> 
-getUniformIndices ::
-                  (MonadDOM m, ToJSString uniformNames) =>
-                    WebGL2RenderingContext ->
-                      Maybe WebGLProgram -> [uniformNames] -> m Uint32Array
-getUniformIndices self program uniformNames
-  = liftDOM
-      ((self ^. jsf "getUniformIndices"
-          [toJSVal program, toJSVal (array uniformNames)])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getUniformIndices Mozilla WebGL2RenderingContext.getUniformIndices documentation> 
-getUniformIndices_ ::
-                   (MonadDOM m, ToJSString uniformNames) =>
-                     WebGL2RenderingContext ->
-                       Maybe WebGLProgram -> [uniformNames] -> m ()
-getUniformIndices_ self program uniformNames
-  = liftDOM
-      (void
-         (self ^. jsf "getUniformIndices"
-            [toJSVal program, toJSVal (array uniformNames)]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniforms Mozilla WebGL2RenderingContext.getActiveUniforms documentation> 
-getActiveUniforms ::
-                  (MonadDOM m, IsUint32Array uniformIndices) =>
-                    WebGL2RenderingContext ->
-                      Maybe WebGLProgram ->
-                        Maybe uniformIndices -> GLenum -> m Int32Array
-getActiveUniforms self program uniformIndices pname
-  = liftDOM
-      ((self ^. jsf "getActiveUniforms"
-          [toJSVal program, toJSVal uniformIndices, toJSVal pname])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniforms Mozilla WebGL2RenderingContext.getActiveUniforms documentation> 
-getActiveUniforms_ ::
-                   (MonadDOM m, IsUint32Array uniformIndices) =>
-                     WebGL2RenderingContext ->
-                       Maybe WebGLProgram -> Maybe uniformIndices -> GLenum -> m ()
-getActiveUniforms_ self program uniformIndices pname
-  = liftDOM
-      (void
-         (self ^. jsf "getActiveUniforms"
-            [toJSVal program, toJSVal uniformIndices, toJSVal pname]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getUniformBlockIndex Mozilla WebGL2RenderingContext.getUniformBlockIndex documentation> 
-getUniformBlockIndex ::
-                     (MonadDOM m, ToJSString uniformBlockName) =>
-                       WebGL2RenderingContext ->
-                         Maybe WebGLProgram -> uniformBlockName -> m GLuint
-getUniformBlockIndex self program uniformBlockName
-  = liftDOM
-      ((self ^. jsf "getUniformBlockIndex"
-          [toJSVal program, toJSVal uniformBlockName])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getUniformBlockIndex Mozilla WebGL2RenderingContext.getUniformBlockIndex documentation> 
-getUniformBlockIndex_ ::
-                      (MonadDOM m, ToJSString uniformBlockName) =>
-                        WebGL2RenderingContext ->
-                          Maybe WebGLProgram -> uniformBlockName -> m ()
-getUniformBlockIndex_ self program uniformBlockName
-  = liftDOM
-      (void
-         (self ^. jsf "getUniformBlockIndex"
-            [toJSVal program, toJSVal uniformBlockName]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniformBlockParameter Mozilla WebGL2RenderingContext.getActiveUniformBlockParameter documentation> 
-getActiveUniformBlockParameter ::
-                               (MonadDOM m) =>
-                                 WebGL2RenderingContext ->
-                                   Maybe WebGLProgram -> GLuint -> GLenum -> m JSVal
-getActiveUniformBlockParameter self program uniformBlockIndex pname
-  = liftDOM
-      ((self ^. jsf "getActiveUniformBlockParameter"
-          [toJSVal program, toJSVal uniformBlockIndex, toJSVal pname])
-         >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniformBlockParameter Mozilla WebGL2RenderingContext.getActiveUniformBlockParameter documentation> 
-getActiveUniformBlockParameter_ ::
-                                (MonadDOM m) =>
-                                  WebGL2RenderingContext ->
-                                    Maybe WebGLProgram -> GLuint -> GLenum -> m ()
-getActiveUniformBlockParameter_ self program uniformBlockIndex
-  pname
-  = liftDOM
-      (void
-         (self ^. jsf "getActiveUniformBlockParameter"
-            [toJSVal program, toJSVal uniformBlockIndex, toJSVal pname]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniformBlockName Mozilla WebGL2RenderingContext.getActiveUniformBlockName documentation> 
-getActiveUniformBlockName ::
-                          (MonadDOM m) =>
-                            WebGL2RenderingContext -> Maybe WebGLProgram -> GLuint -> m JSVal
-getActiveUniformBlockName self program uniformBlockIndex
-  = liftDOM
-      ((self ^. jsf "getActiveUniformBlockName"
-          [toJSVal program, toJSVal uniformBlockIndex])
-         >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniformBlockName Mozilla WebGL2RenderingContext.getActiveUniformBlockName documentation> 
-getActiveUniformBlockName_ ::
-                           (MonadDOM m) =>
-                             WebGL2RenderingContext -> Maybe WebGLProgram -> GLuint -> m ()
-getActiveUniformBlockName_ self program uniformBlockIndex
-  = liftDOM
-      (void
-         (self ^. jsf "getActiveUniformBlockName"
-            [toJSVal program, toJSVal uniformBlockIndex]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformBlockBinding Mozilla WebGL2RenderingContext.uniformBlockBinding documentation> 
-uniformBlockBinding ::
-                    (MonadDOM m) =>
-                      WebGL2RenderingContext ->
-                        Maybe WebGLProgram -> GLuint -> GLuint -> m ()
-uniformBlockBinding self program uniformBlockIndex
-  uniformBlockBinding
-  = liftDOM
-      (void
-         (self ^. jsf "uniformBlockBinding"
-            [toJSVal program, toJSVal uniformBlockIndex,
-             toJSVal uniformBlockBinding]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createVertexArray Mozilla WebGL2RenderingContext.createVertexArray documentation> 
-createVertexArray ::
-                  (MonadDOM m) => WebGL2RenderingContext -> m WebGLVertexArrayObject
-createVertexArray self
-  = liftDOM
-      ((self ^. jsf "createVertexArray" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createVertexArray Mozilla WebGL2RenderingContext.createVertexArray documentation> 
-createVertexArray_ ::
-                   (MonadDOM m) => WebGL2RenderingContext -> m ()
-createVertexArray_ self
-  = liftDOM (void (self ^. jsf "createVertexArray" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteVertexArray Mozilla WebGL2RenderingContext.deleteVertexArray documentation> 
-deleteVertexArray ::
-                  (MonadDOM m) =>
-                    WebGL2RenderingContext -> Maybe WebGLVertexArrayObject -> m ()
-deleteVertexArray self vertexArray
-  = liftDOM
-      (void (self ^. jsf "deleteVertexArray" [toJSVal vertexArray]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isVertexArray Mozilla WebGL2RenderingContext.isVertexArray documentation> 
-isVertexArray ::
-              (MonadDOM m) =>
-                WebGL2RenderingContext ->
-                  Maybe WebGLVertexArrayObject -> m GLboolean
-isVertexArray self vertexArray
-  = liftDOM
-      ((self ^. jsf "isVertexArray" [toJSVal vertexArray]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isVertexArray Mozilla WebGL2RenderingContext.isVertexArray documentation> 
-isVertexArray_ ::
-               (MonadDOM m) =>
-                 WebGL2RenderingContext -> Maybe WebGLVertexArrayObject -> m ()
-isVertexArray_ self vertexArray
-  = liftDOM
-      (void (self ^. jsf "isVertexArray" [toJSVal vertexArray]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindVertexArray Mozilla WebGL2RenderingContext.bindVertexArray documentation> 
-bindVertexArray ::
-                (MonadDOM m) =>
-                  WebGL2RenderingContext -> Maybe WebGLVertexArrayObject -> m ()
-bindVertexArray self vertexArray
-  = liftDOM
-      (void (self ^. jsf "bindVertexArray" [toJSVal 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 ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl2 (webref). Do not edit.
+module JSDOM.Generated.WebGL2RenderingContext
+       (WebGL2RenderingContext(..), gTypeWebGL2RenderingContext)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WebGL2RenderingContextBase.hs b/src/JSDOM/Generated/WebGL2RenderingContextBase.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGL2RenderingContextBase.hs
@@ -0,0 +1,1108 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl2 (webref). Do not edit.
+module JSDOM.Generated.WebGL2RenderingContextBase
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "beginQuery" [toJSVal target, toJSVal query]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "beginTransformFeedback" [toJSVal primitiveMode]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "bindBufferBase" [toJSVal target, toJSVal index, toJSVal buffer]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "bindBufferRange" [toJSVal target, toJSVal index, toJSVal buffer, toJSVal offset, toJSVal size]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "bindSampler" [toJSVal unit, toJSVal sampler]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "bindTransformFeedback" [toJSVal target, toJSVal tf]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "bindVertexArray" [toJSVal array]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "blitFramebuffer" [toJSVal srcX0, toJSVal srcY0, toJSVal srcX1, toJSVal srcY1, toJSVal dstX0, toJSVal dstY0, toJSVal dstX1, toJSVal dstY1, toJSVal mask, toJSVal filter]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "clearBufferfi" [toJSVal buffer, toJSVal drawbuffer, toJSVal depth, toJSVal stencil]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "clearBufferfv" [toJSVal buffer, toJSVal drawbuffer, toJSVal values]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "clearBufferfv" [toJSVal buffer, toJSVal drawbuffer, toJSVal values, P.maybe (P.return jsUndefined) toJSVal srcOffset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "clearBufferiv" [toJSVal buffer, toJSVal drawbuffer, toJSVal values]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "clearBufferiv" [toJSVal buffer, toJSVal drawbuffer, toJSVal values, P.maybe (P.return jsUndefined) toJSVal srcOffset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "clearBufferuiv" [toJSVal buffer, toJSVal drawbuffer, toJSVal values]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "clearBufferuiv" [toJSVal buffer, toJSVal drawbuffer, toJSVal values, P.maybe (P.return jsUndefined) toJSVal srcOffset]))
+
+-- | <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 ((P.round <$> (((Types.toWebGL2RenderingContextBase self) ^. jsf "clientWaitSync" [toJSVal sync, toJSVal flags, toJSVal timeout]) >>= valToNumber)))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "clientWaitSync" [toJSVal sync, toJSVal flags, toJSVal timeout]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "compressedTexImage3D" [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal width, toJSVal height, toJSVal depth, toJSVal border, toJSVal imageSize, toJSVal offset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "compressedTexImage3D" [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal width, toJSVal height, toJSVal depth, toJSVal border, toJSVal srcData, P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLengthOverride]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "compressedTexSubImage3D" [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset, toJSVal zoffset, toJSVal width, toJSVal height, toJSVal depth, toJSVal format, toJSVal imageSize, toJSVal offset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "compressedTexSubImage3D" [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset, toJSVal zoffset, toJSVal width, toJSVal height, toJSVal depth, toJSVal format, toJSVal srcData, P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLengthOverride]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "copyBufferSubData" [toJSVal readTarget, toJSVal writeTarget, toJSVal readOffset, toJSVal writeOffset, toJSVal size]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "copyTexSubImage3D" [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset, toJSVal zoffset, toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/createQuery MDN WebGL2RenderingContextBase.createQuery documentation>
+createQuery :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m WebGLQuery
+createQuery self = liftDOM ((((Types.toWebGL2RenderingContextBase self) ^. jsf "createQuery" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/createQuery MDN WebGL2RenderingContextBase.createQuery documentation>
+createQuery_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m ()
+createQuery_ self = liftDOM (void ((Types.toWebGL2RenderingContextBase self) ^. jsf "createQuery" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/createSampler MDN WebGL2RenderingContextBase.createSampler documentation>
+createSampler :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m WebGLSampler
+createSampler self = liftDOM ((((Types.toWebGL2RenderingContextBase self) ^. jsf "createSampler" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/createSampler MDN WebGL2RenderingContextBase.createSampler documentation>
+createSampler_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m ()
+createSampler_ self = liftDOM (void ((Types.toWebGL2RenderingContextBase self) ^. jsf "createSampler" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/createTransformFeedback MDN WebGL2RenderingContextBase.createTransformFeedback documentation>
+createTransformFeedback :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m WebGLTransformFeedback
+createTransformFeedback self = liftDOM ((((Types.toWebGL2RenderingContextBase self) ^. jsf "createTransformFeedback" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/createTransformFeedback MDN WebGL2RenderingContextBase.createTransformFeedback documentation>
+createTransformFeedback_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m ()
+createTransformFeedback_ self = liftDOM (void ((Types.toWebGL2RenderingContextBase self) ^. jsf "createTransformFeedback" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/createVertexArray MDN WebGL2RenderingContextBase.createVertexArray documentation>
+createVertexArray :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m WebGLVertexArrayObject
+createVertexArray self = liftDOM ((((Types.toWebGL2RenderingContextBase self) ^. jsf "createVertexArray" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/createVertexArray MDN WebGL2RenderingContextBase.createVertexArray documentation>
+createVertexArray_ :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m ()
+createVertexArray_ self = liftDOM (void ((Types.toWebGL2RenderingContextBase self) ^. jsf "createVertexArray" ()))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "deleteQuery" [toJSVal query]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "deleteSampler" [toJSVal sampler]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "deleteSync" [toJSVal sync]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "deleteTransformFeedback" [toJSVal tf]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "deleteVertexArray" [toJSVal vertexArray]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "drawArraysInstanced" [toJSVal mode, toJSVal first, toJSVal count, toJSVal instanceCount]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "drawBuffers" [toJSVal buffers]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "drawElementsInstanced" [toJSVal mode, toJSVal count, toJSVal type', toJSVal offset, toJSVal instanceCount]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "drawRangeElements" [toJSVal mode, toJSVal start, toJSVal end, toJSVal count, toJSVal type', toJSVal offset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "endQuery" [toJSVal target]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/endTransformFeedback MDN WebGL2RenderingContextBase.endTransformFeedback documentation>
+endTransformFeedback :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m ()
+endTransformFeedback self = liftDOM (void ((Types.toWebGL2RenderingContextBase self) ^. jsf "endTransformFeedback" ()))
+
+-- | <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 ((((Types.toWebGL2RenderingContextBase self) ^. jsf "fenceSync" [toJSVal condition, toJSVal 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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "fenceSync" [toJSVal condition, toJSVal 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 (((((Types.toWebGL2RenderingContextBase self) ^. jsf "fenceSync" [toJSVal condition, toJSVal 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 ((((Types.toWebGL2RenderingContextBase self) ^. jsf "fenceSync" [toJSVal condition, toJSVal flags]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "framebufferTextureLayer" [toJSVal target, toJSVal attachment, toJSVal texture, toJSVal level, toJSVal layer]))
+
+-- | <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 ((((Types.toWebGL2RenderingContextBase self) ^. jsf "getActiveUniformBlockName" [toJSVal program, toJSVal uniformBlockIndex]) >>= fromMaybeJSString))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getActiveUniformBlockName" [toJSVal program, toJSVal 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 (((((Types.toWebGL2RenderingContextBase self) ^. jsf "getActiveUniformBlockName" [toJSVal program, toJSVal uniformBlockIndex]) >>= fromMaybeJSString) >>= 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 ((((Types.toWebGL2RenderingContextBase self) ^. jsf "getActiveUniformBlockName" [toJSVal program, toJSVal uniformBlockIndex]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getActiveUniformBlockParameter" [toJSVal program, toJSVal uniformBlockIndex, toJSVal 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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getActiveUniformBlockParameter" [toJSVal program, toJSVal uniformBlockIndex, toJSVal pname]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getActiveUniforms" [toJSVal program, toJSVal uniformIndices, toJSVal 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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getActiveUniforms" [toJSVal program, toJSVal uniformIndices, toJSVal pname]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getBufferSubData" [toJSVal target, toJSVal srcByteOffset, toJSVal dstBuffer, P.maybe (P.return jsUndefined) toJSVal dstOffset, P.maybe (P.return jsUndefined) toJSVal length]))
+
+-- | <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 ((P.round <$> (((Types.toWebGL2RenderingContextBase self) ^. jsf "getFragDataLocation" [toJSVal program, toJSVal name]) >>= valToNumber)))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getFragDataLocation" [toJSVal program, toJSVal name]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getIndexedParameter" [toJSVal target, toJSVal 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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getIndexedParameter" [toJSVal target, toJSVal index]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getInternalformatParameter" [toJSVal target, toJSVal internalformat, toJSVal 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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getInternalformatParameter" [toJSVal target, toJSVal internalformat, toJSVal pname]))
+
+-- | <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 ((((Types.toWebGL2RenderingContextBase self) ^. jsf "getQuery" [toJSVal target, toJSVal 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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getQuery" [toJSVal target, toJSVal 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 (((((Types.toWebGL2RenderingContextBase self) ^. jsf "getQuery" [toJSVal target, toJSVal 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 ((((Types.toWebGL2RenderingContextBase self) ^. jsf "getQuery" [toJSVal target, toJSVal pname]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getQueryParameter" [toJSVal query, toJSVal 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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getQueryParameter" [toJSVal query, toJSVal pname]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getSamplerParameter" [toJSVal sampler, toJSVal 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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getSamplerParameter" [toJSVal sampler, toJSVal pname]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getSyncParameter" [toJSVal sync, toJSVal 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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getSyncParameter" [toJSVal sync, toJSVal pname]))
+
+-- | <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 ((((Types.toWebGL2RenderingContextBase self) ^. jsf "getTransformFeedbackVarying" [toJSVal program, toJSVal 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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getTransformFeedbackVarying" [toJSVal program, toJSVal 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 (((((Types.toWebGL2RenderingContextBase self) ^. jsf "getTransformFeedbackVarying" [toJSVal program, toJSVal 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 ((((Types.toWebGL2RenderingContextBase self) ^. jsf "getTransformFeedbackVarying" [toJSVal program, toJSVal index]) >>= fromJSValUnchecked))
+
+-- | <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 ((P.round <$> (((Types.toWebGL2RenderingContextBase self) ^. jsf "getUniformBlockIndex" [toJSVal program, toJSVal uniformBlockName]) >>= valToNumber)))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getUniformBlockIndex" [toJSVal program, toJSVal uniformBlockName]))
+
+-- | <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 ((((Types.toWebGL2RenderingContextBase self) ^. jsf "getUniformIndices" [toJSVal program, toJSVal uniformNames]) >>= 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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "getUniformIndices" [toJSVal program, toJSVal uniformNames]))
+
+-- | <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 (((((Types.toWebGL2RenderingContextBase self) ^. jsf "getUniformIndices" [toJSVal program, toJSVal uniformNames]) >>= 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 ((((Types.toWebGL2RenderingContextBase self) ^. jsf "getUniformIndices" [toJSVal program, toJSVal uniformNames]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "invalidateFramebuffer" [toJSVal target, toJSVal attachments]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "invalidateSubFramebuffer" [toJSVal target, toJSVal attachments, toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
+
+-- | <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 ((((Types.toWebGL2RenderingContextBase self) ^. jsf "isQuery" [toJSVal query]) >>= valToBool))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "isQuery" [toJSVal query]))
+
+-- | <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 ((((Types.toWebGL2RenderingContextBase self) ^. jsf "isSampler" [toJSVal sampler]) >>= valToBool))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "isSampler" [toJSVal sampler]))
+
+-- | <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 ((((Types.toWebGL2RenderingContextBase self) ^. jsf "isSync" [toJSVal sync]) >>= valToBool))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "isSync" [toJSVal sync]))
+
+-- | <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 ((((Types.toWebGL2RenderingContextBase self) ^. jsf "isTransformFeedback" [toJSVal tf]) >>= valToBool))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "isTransformFeedback" [toJSVal tf]))
+
+-- | <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 ((((Types.toWebGL2RenderingContextBase self) ^. jsf "isVertexArray" [toJSVal vertexArray]) >>= valToBool))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "isVertexArray" [toJSVal vertexArray]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/pauseTransformFeedback MDN WebGL2RenderingContextBase.pauseTransformFeedback documentation>
+pauseTransformFeedback :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m ()
+pauseTransformFeedback self = liftDOM (void ((Types.toWebGL2RenderingContextBase self) ^. jsf "pauseTransformFeedback" ()))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "readBuffer" [toJSVal src]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "renderbufferStorageMultisample" [toJSVal target, toJSVal samples, toJSVal internalformat, toJSVal width, toJSVal height]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/resumeTransformFeedback MDN WebGL2RenderingContextBase.resumeTransformFeedback documentation>
+resumeTransformFeedback :: (MonadDOM m, IsWebGL2RenderingContextBase self) => self -> m ()
+resumeTransformFeedback self = liftDOM (void ((Types.toWebGL2RenderingContextBase self) ^. jsf "resumeTransformFeedback" ()))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "samplerParameterf" [toJSVal sampler, toJSVal pname, toJSVal param]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "samplerParameteri" [toJSVal sampler, toJSVal pname, toJSVal param]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "texImage3D" [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal width, toJSVal height, toJSVal depth, toJSVal border, toJSVal format, toJSVal type', toJSVal pboOffset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "texImage3D" [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal width, toJSVal height, toJSVal depth, toJSVal border, toJSVal format, toJSVal type', toJSVal source]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "texImage3D" [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal width, toJSVal height, toJSVal depth, toJSVal border, toJSVal format, toJSVal type', toJSVal srcData]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "texImage3D" [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal width, toJSVal height, toJSVal depth, toJSVal border, toJSVal format, toJSVal type', toJSVal srcData, toJSVal srcOffset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "texStorage2D" [toJSVal target, toJSVal levels, toJSVal internalformat, toJSVal width, toJSVal height]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "texStorage3D" [toJSVal target, toJSVal levels, toJSVal internalformat, toJSVal width, toJSVal height, toJSVal depth]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "texSubImage3D" [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset, toJSVal zoffset, toJSVal width, toJSVal height, toJSVal depth, toJSVal format, toJSVal type', toJSVal pboOffset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "texSubImage3D" [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset, toJSVal zoffset, toJSVal width, toJSVal height, toJSVal depth, toJSVal format, toJSVal type', toJSVal source]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "texSubImage3D" [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset, toJSVal zoffset, toJSVal width, toJSVal height, toJSVal depth, toJSVal format, toJSVal type', toJSVal srcData, P.maybe (P.return jsUndefined) toJSVal srcOffset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "transformFeedbackVaryings" [toJSVal program, toJSVal varyings, toJSVal bufferMode]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniform1ui" [toJSVal location, toJSVal v0]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniform1uiv" [toJSVal location, toJSVal data']))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniform1uiv" [toJSVal location, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniform2ui" [toJSVal location, toJSVal v0, toJSVal v1]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniform2uiv" [toJSVal location, toJSVal data']))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniform2uiv" [toJSVal location, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniform3ui" [toJSVal location, toJSVal v0, toJSVal v1, toJSVal v2]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniform3uiv" [toJSVal location, toJSVal data']))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniform3uiv" [toJSVal location, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniform4ui" [toJSVal location, toJSVal v0, toJSVal v1, toJSVal v2, toJSVal v3]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniform4uiv" [toJSVal location, toJSVal data']))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniform4uiv" [toJSVal location, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniformBlockBinding" [toJSVal program, toJSVal uniformBlockIndex, toJSVal uniformBlockBinding]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniformMatrix2x3fv" [toJSVal location, toJSVal transpose, toJSVal data']))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniformMatrix2x3fv" [toJSVal location, toJSVal transpose, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniformMatrix2x4fv" [toJSVal location, toJSVal transpose, toJSVal data']))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniformMatrix2x4fv" [toJSVal location, toJSVal transpose, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniformMatrix3x2fv" [toJSVal location, toJSVal transpose, toJSVal data']))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniformMatrix3x2fv" [toJSVal location, toJSVal transpose, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniformMatrix3x4fv" [toJSVal location, toJSVal transpose, toJSVal data']))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniformMatrix3x4fv" [toJSVal location, toJSVal transpose, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniformMatrix4x2fv" [toJSVal location, toJSVal transpose, toJSVal data']))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniformMatrix4x2fv" [toJSVal location, toJSVal transpose, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniformMatrix4x3fv" [toJSVal location, toJSVal transpose, toJSVal data']))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "uniformMatrix4x3fv" [toJSVal location, toJSVal transpose, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "vertexAttribDivisor" [toJSVal index, toJSVal divisor]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "vertexAttribI4i" [toJSVal index, toJSVal x, toJSVal y, toJSVal z, toJSVal w]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "vertexAttribI4iv" [toJSVal index, toJSVal values]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "vertexAttribI4ui" [toJSVal index, toJSVal x, toJSVal y, toJSVal z, toJSVal w]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "vertexAttribI4uiv" [toJSVal index, toJSVal values]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "vertexAttribIPointer" [toJSVal index, toJSVal size, toJSVal type', toJSVal stride, toJSVal offset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextBase self) ^. jsf "waitSync" [toJSVal sync, toJSVal flags, toJSVal timeout]))
+
+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/JSDOM/Generated/WebGL2RenderingContextOverloads.hs b/src/JSDOM/Generated/WebGL2RenderingContextOverloads.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGL2RenderingContextOverloads.hs
@@ -0,0 +1,148 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl2 (webref). Do not edit.
+module JSDOM.Generated.WebGL2RenderingContextOverloads
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "bufferData" [toJSVal target, toJSVal size, toJSVal usage]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "bufferData" [toJSVal target, toJSVal srcData, toJSVal usage]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "bufferData" [toJSVal target, toJSVal srcData, toJSVal usage, toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal length]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "bufferSubData" [toJSVal target, toJSVal dstByteOffset, toJSVal srcData]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "bufferSubData" [toJSVal target, toJSVal dstByteOffset, toJSVal srcData, toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal length]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "compressedTexImage2D" [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal width, toJSVal height, toJSVal border, toJSVal imageSize, toJSVal offset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "compressedTexImage2D" [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal width, toJSVal height, toJSVal border, toJSVal srcData, P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLengthOverride]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "compressedTexSubImage2D" [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset, toJSVal width, toJSVal height, toJSVal format, toJSVal imageSize, toJSVal offset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "compressedTexSubImage2D" [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset, toJSVal width, toJSVal height, toJSVal format, toJSVal srcData, P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLengthOverride]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "readPixels" [toJSVal x, toJSVal y, toJSVal width, toJSVal height, toJSVal format, toJSVal type', toJSVal dstData]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "readPixels" [toJSVal x, toJSVal y, toJSVal width, toJSVal height, toJSVal format, toJSVal type', toJSVal offset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "readPixels" [toJSVal x, toJSVal y, toJSVal width, toJSVal height, toJSVal format, toJSVal type', toJSVal dstData, toJSVal dstOffset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "texImage2D" [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal width, toJSVal height, toJSVal border, toJSVal format, toJSVal type', toJSVal pixels]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "texImage2D" [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal format, toJSVal type', toJSVal source]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "texImage2D" [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal width, toJSVal height, toJSVal border, toJSVal format, toJSVal type', toJSVal pboOffset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "texImage2D" [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal width, toJSVal height, toJSVal border, toJSVal format, toJSVal type', toJSVal source]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "texImage2D" [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal width, toJSVal height, toJSVal border, toJSVal format, toJSVal type', toJSVal srcData, toJSVal srcOffset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "texSubImage2D" [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset, toJSVal width, toJSVal height, toJSVal format, toJSVal type', toJSVal pixels]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "texSubImage2D" [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset, toJSVal format, toJSVal type', toJSVal source]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "texSubImage2D" [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset, toJSVal width, toJSVal height, toJSVal format, toJSVal type', toJSVal pboOffset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "texSubImage2D" [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset, toJSVal width, toJSVal height, toJSVal format, toJSVal type', toJSVal source]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "texSubImage2D" [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset, toJSVal width, toJSVal height, toJSVal format, toJSVal type', toJSVal srcData, toJSVal srcOffset]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "uniform1fv" [toJSVal location, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "uniform1iv" [toJSVal location, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "uniform2fv" [toJSVal location, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "uniform2iv" [toJSVal location, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "uniform3fv" [toJSVal location, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "uniform3iv" [toJSVal location, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "uniform4fv" [toJSVal location, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "uniform4iv" [toJSVal location, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "uniformMatrix2fv" [toJSVal location, toJSVal transpose, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "uniformMatrix3fv" [toJSVal location, toJSVal transpose, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
+
+-- | <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 ((Types.toWebGL2RenderingContextOverloads self) ^. jsf "uniformMatrix4fv" [toJSVal location, toJSVal transpose, toJSVal data', P.maybe (P.return jsUndefined) toJSVal srcOffset, P.maybe (P.return jsUndefined) toJSVal srcLength]))
diff --git a/src/JSDOM/Generated/WebGLActiveInfo.hs b/src/JSDOM/Generated/WebGLActiveInfo.hs
--- a/src/JSDOM/Generated/WebGLActiveInfo.hs
+++ b/src/JSDOM/Generated/WebGLActiveInfo.hs
@@ -1,36 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
 module JSDOM.Generated.WebGLActiveInfo
-       (getSize, getType, getName, WebGLActiveInfo(..),
-        gTypeWebGLActiveInfo)
+       (getSize, getType, getName, WebGLActiveInfo(..), gTypeWebGLActiveInfo)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo.size Mozilla WebGLActiveInfo.size documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLActiveInfo/size MDN WebGLActiveInfo.size documentation>
 getSize :: (MonadDOM m) => WebGLActiveInfo -> m Int
-getSize self
-  = liftDOM (round <$> ((self ^. js "size") >>= valToNumber))
+getSize self = liftDOM ((P.round <$> ((self ^. js "size") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo.type Mozilla WebGLActiveInfo.type documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLActiveInfo/type MDN WebGLActiveInfo.type documentation>
 getType :: (MonadDOM m) => WebGLActiveInfo -> m Word
-getType self
-  = liftDOM (round <$> ((self ^. js "type") >>= valToNumber))
+getType self = liftDOM ((P.round <$> ((self ^. js "type") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo.name Mozilla WebGLActiveInfo.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => WebGLActiveInfo -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLActiveInfo/name MDN WebGLActiveInfo.name documentation>
+getName :: (MonadDOM m, FromJSString result) => WebGLActiveInfo -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WebGLBuffer.hs b/src/JSDOM/Generated/WebGLBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLBuffer.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module JSDOM.Generated.WebGLBuffer
+       (WebGLBuffer(..), gTypeWebGLBuffer)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WebGLCompressedTextureATC.hs b/src/JSDOM/Generated/WebGLCompressedTextureATC.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGLCompressedTextureATC.hs
+++ /dev/null
@@ -1,26 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.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/JSDOM/Generated/WebGLCompressedTexturePVRTC.hs b/src/JSDOM/Generated/WebGLCompressedTexturePVRTC.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGLCompressedTexturePVRTC.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.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/JSDOM/Generated/WebGLCompressedTextureS3TC.hs b/src/JSDOM/Generated/WebGLCompressedTextureS3TC.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGLCompressedTextureS3TC.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.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/JSDOM/Generated/WebGLContextAttributes.hs b/src/JSDOM/Generated/WebGLContextAttributes.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLContextAttributes.hs
@@ -0,0 +1,144 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module JSDOM.Generated.WebGLContextAttributes
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://registry.khronos.org/webgl/specs/latest/1.0/#WebGLContextAttributes WebGLContextAttributes specification>
+newWebGLContextAttributes :: (MonadDOM m) => m WebGLContextAttributes
+newWebGLContextAttributes = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+setAlpha :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setAlpha self val = liftDOM (void (self ^. jss "alpha" (toJSVal val)))
+
+getAlpha :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getAlpha self = liftDOM (((self ^. js "alpha") >>= fromJSValUnchecked))
+
+getAlphaUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getAlphaUnsafe self = liftDOM ((((self ^. js "alpha") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getAlphaUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getAlphaUnchecked self = liftDOM (((self ^. js "alpha") >>= valToBool))
+
+setDepth :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setDepth self val = liftDOM (void (self ^. jss "depth" (toJSVal val)))
+
+getDepth :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getDepth self = liftDOM (((self ^. js "depth") >>= fromJSValUnchecked))
+
+getDepthUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getDepthUnsafe self = liftDOM ((((self ^. js "depth") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getDepthUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getDepthUnchecked self = liftDOM (((self ^. js "depth") >>= valToBool))
+
+setStencil :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setStencil self val = liftDOM (void (self ^. jss "stencil" (toJSVal val)))
+
+getStencil :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getStencil self = liftDOM (((self ^. js "stencil") >>= fromJSValUnchecked))
+
+getStencilUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getStencilUnsafe self = liftDOM ((((self ^. js "stencil") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getStencilUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getStencilUnchecked self = liftDOM (((self ^. js "stencil") >>= valToBool))
+
+setAntialias :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setAntialias self val = liftDOM (void (self ^. jss "antialias" (toJSVal val)))
+
+getAntialias :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getAntialias self = liftDOM (((self ^. js "antialias") >>= fromJSValUnchecked))
+
+getAntialiasUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getAntialiasUnsafe self = liftDOM ((((self ^. js "antialias") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getAntialiasUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getAntialiasUnchecked self = liftDOM (((self ^. js "antialias") >>= valToBool))
+
+setPremultipliedAlpha :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setPremultipliedAlpha self val = liftDOM (void (self ^. jss "premultipliedAlpha" (toJSVal val)))
+
+getPremultipliedAlpha :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getPremultipliedAlpha self = liftDOM (((self ^. js "premultipliedAlpha") >>= fromJSValUnchecked))
+
+getPremultipliedAlphaUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getPremultipliedAlphaUnsafe self = liftDOM ((((self ^. js "premultipliedAlpha") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getPremultipliedAlphaUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getPremultipliedAlphaUnchecked self = liftDOM (((self ^. js "premultipliedAlpha") >>= valToBool))
+
+setPreserveDrawingBuffer :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setPreserveDrawingBuffer self val = liftDOM (void (self ^. jss "preserveDrawingBuffer" (toJSVal val)))
+
+getPreserveDrawingBuffer :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getPreserveDrawingBuffer self = liftDOM (((self ^. js "preserveDrawingBuffer") >>= fromJSValUnchecked))
+
+getPreserveDrawingBufferUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getPreserveDrawingBufferUnsafe self = liftDOM ((((self ^. js "preserveDrawingBuffer") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getPreserveDrawingBufferUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getPreserveDrawingBufferUnchecked self = liftDOM (((self ^. js "preserveDrawingBuffer") >>= valToBool))
+
+setPowerPreference :: (MonadDOM m) => WebGLContextAttributes -> WebGLPowerPreference -> m ()
+setPowerPreference self val = liftDOM (void (self ^. jss "powerPreference" (toJSVal val)))
+
+getPowerPreference :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe WebGLPowerPreference)
+getPowerPreference self = liftDOM (((self ^. js "powerPreference") >>= fromJSValUnchecked))
+
+getPowerPreferenceUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m WebGLPowerPreference
+getPowerPreferenceUnsafe self = liftDOM ((((self ^. js "powerPreference") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getPowerPreferenceUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m WebGLPowerPreference
+getPowerPreferenceUnchecked self = liftDOM (((self ^. js "powerPreference") >>= fromJSValUnchecked))
+
+setFailIfMajorPerformanceCaveat :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setFailIfMajorPerformanceCaveat self val = liftDOM (void (self ^. jss "failIfMajorPerformanceCaveat" (toJSVal val)))
+
+getFailIfMajorPerformanceCaveat :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getFailIfMajorPerformanceCaveat self = liftDOM (((self ^. js "failIfMajorPerformanceCaveat") >>= fromJSValUnchecked))
+
+getFailIfMajorPerformanceCaveatUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getFailIfMajorPerformanceCaveatUnsafe self = liftDOM ((((self ^. js "failIfMajorPerformanceCaveat") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getFailIfMajorPerformanceCaveatUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getFailIfMajorPerformanceCaveatUnchecked self = liftDOM (((self ^. js "failIfMajorPerformanceCaveat") >>= valToBool))
+
+setDesynchronized :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setDesynchronized self val = liftDOM (void (self ^. jss "desynchronized" (toJSVal val)))
+
+getDesynchronized :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getDesynchronized self = liftDOM (((self ^. js "desynchronized") >>= fromJSValUnchecked))
+
+getDesynchronizedUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getDesynchronizedUnsafe self = liftDOM ((((self ^. js "desynchronized") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getDesynchronizedUnchecked :: (MonadDOM m) => WebGLContextAttributes -> m Bool
+getDesynchronizedUnchecked self = liftDOM (((self ^. js "desynchronized") >>= valToBool))
+
+-- | <https://immersive-web.github.io/webxr/#dom-webglcontextattributes-xrcompatible WebGLContextAttributes.xrCompatible specification>
+setXrCompatible :: (MonadDOM m) => WebGLContextAttributes -> Bool -> m ()
+setXrCompatible self val = liftDOM (void (self ^. jss "xrCompatible" (toJSVal val)))
+
+-- | <https://immersive-web.github.io/webxr/#dom-webglcontextattributes-xrcompatible WebGLContextAttributes.xrCompatible specification>
+getXrCompatible :: (MonadDOM m) => WebGLContextAttributes -> m (Maybe Bool)
+getXrCompatible self = liftDOM (((self ^. js "xrCompatible") >>= fromJSValUnchecked))
+
+-- | <https://immersive-web.github.io/webxr/#dom-webglcontextattributes-xrcompatible WebGLContextAttributes.xrCompatible specification>
+getXrCompatibleUnsafe :: (MonadDOM m, HasCallStack) => WebGLContextAttributes -> m Bool
+getXrCompatibleUnsafe self = liftDOM ((((self ^. js "xrCompatible") >>= 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 (((self ^. js "xrCompatible") >>= valToBool))
diff --git a/src/JSDOM/Generated/WebGLContextEvent.hs b/src/JSDOM/Generated/WebGLContextEvent.hs
--- a/src/JSDOM/Generated/WebGLContextEvent.hs
+++ b/src/JSDOM/Generated/WebGLContextEvent.hs
@@ -1,36 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
 module JSDOM.Generated.WebGLContextEvent
-       (newWebGLContextEvent, getStatusMessage, WebGLContextEvent(..),
-        gTypeWebGLContextEvent)
+       (newWebGLContextEvent, getStatusMessage, WebGLContextEvent(..), gTypeWebGLContextEvent)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextEvent Mozilla WebGLContextEvent documentation> 
-newWebGLContextEvent ::
-                     (MonadDOM m, ToJSString type') =>
-                       type' -> Maybe WebGLContextEventInit -> m WebGLContextEvent
-newWebGLContextEvent type' eventInit
-  = liftDOM
-      (WebGLContextEvent <$>
-         new (jsg "WebGLContextEvent") [toJSVal type', toJSVal eventInit])
+-- | <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 (((new (jsg "WebGLContextEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInit]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextEvent.statusMessage Mozilla WebGLContextEvent.statusMessage documentation> 
-getStatusMessage ::
-                 (MonadDOM m, FromJSString result) => WebGLContextEvent -> m result
-getStatusMessage self
-  = liftDOM ((self ^. js "statusMessage") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLContextEvent/statusMessage MDN WebGLContextEvent.statusMessage documentation>
+getStatusMessage :: (MonadDOM m, FromJSString result) => WebGLContextEvent -> m result
+getStatusMessage self = liftDOM (((self ^. js "statusMessage") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WebGLContextEventInit.hs b/src/JSDOM/Generated/WebGLContextEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLContextEventInit.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module JSDOM.Generated.WebGLContextEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+newWebGLContextEventInit :: (MonadDOM m) => m WebGLContextEventInit
+newWebGLContextEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+setStatusMessage :: (MonadDOM m, ToJSString val) => WebGLContextEventInit -> val -> m ()
+setStatusMessage self val = liftDOM (void (self ^. jss "statusMessage" (toJSVal val)))
+
+getStatusMessage :: (MonadDOM m, FromJSString result) => WebGLContextEventInit -> m (Maybe result)
+getStatusMessage self = liftDOM (((self ^. js "statusMessage") >>= fromMaybeJSString))
+
+getStatusMessageUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => WebGLContextEventInit -> m result
+getStatusMessageUnsafe self = liftDOM ((((self ^. js "statusMessage") >>= fromMaybeJSString) >>= P.maybe (P.error "Nothing to return") P.return))
+
+getStatusMessageUnchecked :: (MonadDOM m, FromJSString result) => WebGLContextEventInit -> m result
+getStatusMessageUnchecked self = liftDOM (((self ^. js "statusMessage") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WebGLDebugRendererInfo.hs b/src/JSDOM/Generated/WebGLDebugRendererInfo.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGLDebugRendererInfo.hs
+++ /dev/null
@@ -1,23 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-pattern UNMASKED_VENDOR_WEBGL = 37445
-pattern UNMASKED_RENDERER_WEBGL = 37446
diff --git a/src/JSDOM/Generated/WebGLDebugShaders.hs b/src/JSDOM/Generated/WebGLDebugShaders.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGLDebugShaders.hs
+++ /dev/null
@@ -1,58 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGLDebugShaders
-       (getTranslatedShaderSource, getTranslatedShaderSource_,
-        getTranslatedShaderSourceUnsafe,
-        getTranslatedShaderSourceUnchecked, WebGLDebugShaders(..),
-        gTypeWebGLDebugShaders)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
-getTranslatedShaderSource ::
-                          (MonadDOM m, FromJSString result) =>
-                            WebGLDebugShaders -> Maybe WebGLShader -> m (Maybe result)
-getTranslatedShaderSource self shader
-  = liftDOM
-      ((self ^. jsf "getTranslatedShaderSource" [toJSVal shader]) >>=
-         fromMaybeJSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
-getTranslatedShaderSource_ ::
-                           (MonadDOM m) => WebGLDebugShaders -> Maybe WebGLShader -> m ()
-getTranslatedShaderSource_ self shader
-  = liftDOM
-      (void (self ^. jsf "getTranslatedShaderSource" [toJSVal shader]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
-getTranslatedShaderSourceUnsafe ::
-                                (MonadDOM m, HasCallStack, FromJSString result) =>
-                                  WebGLDebugShaders -> Maybe WebGLShader -> m result
-getTranslatedShaderSourceUnsafe self shader
-  = liftDOM
-      (((self ^. jsf "getTranslatedShaderSource" [toJSVal shader]) >>=
-          fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
-getTranslatedShaderSourceUnchecked ::
-                                   (MonadDOM m, FromJSString result) =>
-                                     WebGLDebugShaders -> Maybe WebGLShader -> m result
-getTranslatedShaderSourceUnchecked self shader
-  = liftDOM
-      ((self ^. jsf "getTranslatedShaderSource" [toJSVal shader]) >>=
-         fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/WebGLDepthTexture.hs b/src/JSDOM/Generated/WebGLDepthTexture.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGLDepthTexture.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGLDepthTexture
-       (pattern UNSIGNED_INT_24_8_WEBGL, WebGLDepthTexture(..),
-        gTypeWebGLDepthTexture)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-pattern UNSIGNED_INT_24_8_WEBGL = 34042
diff --git a/src/JSDOM/Generated/WebGLDrawBuffers.hs b/src/JSDOM/Generated/WebGLDrawBuffers.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGLDrawBuffers.hs
+++ /dev/null
@@ -1,79 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGLDrawBuffers
-       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDrawBuffers.drawBuffersWEBGL Mozilla WebGLDrawBuffers.drawBuffersWEBGL documentation> 
-drawBuffersWEBGL ::
-                 (MonadDOM m) => WebGLDrawBuffers -> [GLenum] -> m ()
-drawBuffersWEBGL self buffers
-  = liftDOM
-      (void (self ^. jsf "drawBuffersWEBGL" [toJSVal (array 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/JSDOM/Generated/WebGLFramebuffer.hs b/src/JSDOM/Generated/WebGLFramebuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLFramebuffer.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module JSDOM.Generated.WebGLFramebuffer
+       (WebGLFramebuffer(..), gTypeWebGLFramebuffer)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WebGLLoseContext.hs b/src/JSDOM/Generated/WebGLLoseContext.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGLLoseContext.hs
+++ /dev/null
@@ -1,30 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGLLoseContext
-       (loseContext, restoreContext, WebGLLoseContext(..),
-        gTypeWebGLLoseContext)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLLoseContext.loseContext Mozilla WebGLLoseContext.loseContext documentation> 
-loseContext :: (MonadDOM m) => WebGLLoseContext -> m ()
-loseContext self = liftDOM (void (self ^. jsf "loseContext" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLLoseContext.restoreContext Mozilla WebGLLoseContext.restoreContext documentation> 
-restoreContext :: (MonadDOM m) => WebGLLoseContext -> m ()
-restoreContext self
-  = liftDOM (void (self ^. jsf "restoreContext" ()))
diff --git a/src/JSDOM/Generated/WebGLObject.hs b/src/JSDOM/Generated/WebGLObject.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLObject.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WebGLProgram.hs b/src/JSDOM/Generated/WebGLProgram.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLProgram.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module JSDOM.Generated.WebGLProgram
+       (WebGLProgram(..), gTypeWebGLProgram)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WebGLQuery.hs b/src/JSDOM/Generated/WebGLQuery.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLQuery.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl2 (webref). Do not edit.
+module JSDOM.Generated.WebGLQuery
+       (WebGLQuery(..), gTypeWebGLQuery)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WebGLRenderbuffer.hs b/src/JSDOM/Generated/WebGLRenderbuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLRenderbuffer.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module JSDOM.Generated.WebGLRenderbuffer
+       (WebGLRenderbuffer(..), gTypeWebGLRenderbuffer)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WebGLRenderingContext.hs b/src/JSDOM/Generated/WebGLRenderingContext.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLRenderingContext.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module JSDOM.Generated.WebGLRenderingContext
+       (WebGLRenderingContext(..), gTypeWebGLRenderingContext)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WebGLRenderingContextBase.hs b/src/JSDOM/Generated/WebGLRenderingContextBase.hs
--- a/src/JSDOM/Generated/WebGLRenderingContextBase.hs
+++ b/src/JSDOM/Generated/WebGLRenderingContextBase.hs
@@ -1,2487 +1,1358 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGLRenderingContextBase
-       (activeTexture, attachShader, bindAttribLocation, bindBuffer,
-        bindFramebuffer, bindRenderbuffer, bindTexture, blendColor,
-        blendEquation, blendEquationSeparate, blendFunc, blendFuncSeparate,
-        bufferData, bufferDataPtr, bufferSubData, checkFramebufferStatus,
-        checkFramebufferStatus_, clear, clearColor, clearDepth,
-        clearStencil, colorMask, compileShader, compressedTexImage2D,
-        compressedTexSubImage2D, copyTexImage2D, copyTexSubImage2D,
-        createBuffer, createBuffer_, createFramebuffer, createFramebuffer_,
-        createProgram, createProgram_, createRenderbuffer,
-        createRenderbuffer_, createShader, createShader_, 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_, getActiveUniform, getActiveUniform_,
-        getAttachedShaders, getAttachedShaders_, getAttribLocation,
-        getAttribLocation_, getBufferParameter, getBufferParameter_,
-        getContextAttributes, getContextAttributes_,
-        getContextAttributesUnsafe, getContextAttributesUnchecked,
-        getError, getError_, getSupportedExtensions,
-        getSupportedExtensions_, getExtension, getExtension_,
-        getExtensionUnsafe, getExtensionUnchecked,
-        getFramebufferAttachmentParameter,
-        getFramebufferAttachmentParameter_, getParameter, getParameter_,
-        getProgramParameter, getProgramParameter_, getProgramInfoLog,
-        getProgramInfoLog_, getProgramInfoLogUnsafe,
-        getProgramInfoLogUnchecked, getRenderbufferParameter,
-        getRenderbufferParameter_, getShaderParameter, getShaderParameter_,
-        getShaderInfoLog, getShaderInfoLog_, getShaderInfoLogUnsafe,
-        getShaderInfoLogUnchecked, getShaderPrecisionFormat,
-        getShaderPrecisionFormat_, getShaderSource, getShaderSource_,
-        getShaderSourceUnsafe, getShaderSourceUnchecked, getTexParameter,
-        getTexParameter_, getUniform, getUniform_, getUniformLocation,
-        getUniformLocation_, 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,
-        readPixels, releaseShaderCompiler, renderbufferStorage,
-        sampleCoverage, scissor, shaderSource, stencilFunc,
-        stencilFuncSeparate, stencilMask, stencilMaskSeparate, stencilOp,
-        stencilOpSeparate, texParameterf, texParameteri, texImage2DView,
-        texImage2D, texSubImage2DView, texSubImage2D, uniform1f, uniform2f,
-        uniform3f, uniform4f, uniform1i, uniform2i, uniform3i, uniform4i,
-        uniform1fv, uniform2fv, uniform3fv, uniform4fv, uniform1iv,
-        uniform2iv, uniform3iv, uniform4iv, uniformMatrix2fv,
-        uniformMatrix3fv, uniformMatrix4fv, useProgram, validateProgram,
-        vertexAttrib1f, vertexAttrib2f, vertexAttrib3f, vertexAttrib4f,
-        vertexAttrib1fv, vertexAttrib2fv, vertexAttrib3fv, vertexAttrib4fv,
-        vertexAttribPointer, 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, getCanvas, getDrawingBufferWidth,
-        getDrawingBufferHeight, WebGLRenderingContextBase(..),
-        gTypeWebGLRenderingContextBase, IsWebGLRenderingContextBase,
-        toWebGLRenderingContextBase)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.activeTexture Mozilla WebGLRenderingContextBase.activeTexture documentation> 
-activeTexture ::
-              (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                self -> GLenum -> m ()
-activeTexture self texture
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "activeTexture"
-            [toJSVal texture]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.attachShader Mozilla WebGLRenderingContextBase.attachShader documentation> 
-attachShader ::
-             (MonadDOM m, IsWebGLRenderingContextBase self) =>
-               self -> Maybe WebGLProgram -> Maybe WebGLShader -> m ()
-attachShader self program shader
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "attachShader"
-            [toJSVal program, toJSVal shader]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindAttribLocation Mozilla WebGLRenderingContextBase.bindAttribLocation documentation> 
-bindAttribLocation ::
-                   (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) =>
-                     self -> Maybe WebGLProgram -> GLuint -> name -> m ()
-bindAttribLocation self program index name
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "bindAttribLocation"
-            [toJSVal program, toJSVal index, toJSVal name]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindBuffer Mozilla WebGLRenderingContextBase.bindBuffer documentation> 
-bindBuffer ::
-           (MonadDOM m, IsWebGLRenderingContextBase self) =>
-             self -> GLenum -> Maybe WebGLBuffer -> m ()
-bindBuffer self target buffer
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "bindBuffer"
-            [toJSVal target, toJSVal buffer]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindFramebuffer Mozilla WebGLRenderingContextBase.bindFramebuffer documentation> 
-bindFramebuffer ::
-                (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                  self -> GLenum -> Maybe WebGLFramebuffer -> m ()
-bindFramebuffer self target framebuffer
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "bindFramebuffer"
-            [toJSVal target, toJSVal framebuffer]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindRenderbuffer Mozilla WebGLRenderingContextBase.bindRenderbuffer documentation> 
-bindRenderbuffer ::
-                 (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                   self -> GLenum -> Maybe WebGLRenderbuffer -> m ()
-bindRenderbuffer self target renderbuffer
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "bindRenderbuffer"
-            [toJSVal target, toJSVal renderbuffer]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindTexture Mozilla WebGLRenderingContextBase.bindTexture documentation> 
-bindTexture ::
-            (MonadDOM m, IsWebGLRenderingContextBase self) =>
-              self -> GLenum -> Maybe WebGLTexture -> m ()
-bindTexture self target texture
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "bindTexture"
-            [toJSVal target, toJSVal texture]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendColor Mozilla WebGLRenderingContextBase.blendColor documentation> 
-blendColor ::
-           (MonadDOM m, IsWebGLRenderingContextBase self) =>
-             self -> GLclampf -> GLclampf -> GLclampf -> GLclampf -> m ()
-blendColor self red green blue alpha
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "blendColor"
-            [toJSVal red, toJSVal green, toJSVal blue, toJSVal alpha]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendEquation Mozilla WebGLRenderingContextBase.blendEquation documentation> 
-blendEquation ::
-              (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                self -> GLenum -> m ()
-blendEquation self mode
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "blendEquation"
-            [toJSVal mode]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendEquationSeparate Mozilla WebGLRenderingContextBase.blendEquationSeparate documentation> 
-blendEquationSeparate ::
-                      (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                        self -> GLenum -> GLenum -> m ()
-blendEquationSeparate self modeRGB modeAlpha
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "blendEquationSeparate"
-            [toJSVal modeRGB, toJSVal modeAlpha]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendFunc Mozilla WebGLRenderingContextBase.blendFunc documentation> 
-blendFunc ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self -> GLenum -> GLenum -> m ()
-blendFunc self sfactor dfactor
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "blendFunc"
-            [toJSVal sfactor, toJSVal dfactor]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendFuncSeparate Mozilla WebGLRenderingContextBase.blendFuncSeparate documentation> 
-blendFuncSeparate ::
-                  (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                    self -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
-blendFuncSeparate self srcRGB dstRGB srcAlpha dstAlpha
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "blendFuncSeparate"
-            [toJSVal srcRGB, toJSVal dstRGB, toJSVal srcAlpha,
-             toJSVal dstAlpha]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferData Mozilla WebGLRenderingContextBase.bufferData documentation> 
-bufferData ::
-           (MonadDOM m, IsWebGLRenderingContextBase self,
-            IsBufferDataSource data') =>
-             self -> GLenum -> Maybe data' -> GLenum -> m ()
-bufferData self target data' usage
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "bufferData"
-            [toJSVal target, toJSVal data', toJSVal usage]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferData Mozilla WebGLRenderingContextBase.bufferData documentation> 
-bufferDataPtr ::
-              (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                self -> GLenum -> GLsizeiptr -> GLenum -> m ()
-bufferDataPtr self target size usage
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "bufferData"
-            [toJSVal target, integralToDoubleToJSVal size, toJSVal usage]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferSubData Mozilla WebGLRenderingContextBase.bufferSubData documentation> 
-bufferSubData ::
-              (MonadDOM m, IsWebGLRenderingContextBase self,
-               IsBufferDataSource data') =>
-                self -> GLenum -> GLintptr -> Maybe data' -> m ()
-bufferSubData self target offset data'
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "bufferSubData"
-            [toJSVal target, integralToDoubleToJSVal offset, toJSVal data']))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.checkFramebufferStatus Mozilla WebGLRenderingContextBase.checkFramebufferStatus documentation> 
-checkFramebufferStatus ::
-                       (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                         self -> GLenum -> m GLenum
-checkFramebufferStatus self target
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^.
-          jsf "checkFramebufferStatus"
-          [toJSVal target])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.checkFramebufferStatus Mozilla WebGLRenderingContextBase.checkFramebufferStatus documentation> 
-checkFramebufferStatus_ ::
-                        (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                          self -> GLenum -> m ()
-checkFramebufferStatus_ self target
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "checkFramebufferStatus"
-            [toJSVal target]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.clear Mozilla WebGLRenderingContextBase.clear documentation> 
-clear ::
-      (MonadDOM m, IsWebGLRenderingContextBase self) =>
-        self -> GLbitfield -> m ()
-clear self mask
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "clear" [toJSVal mask]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.clearColor Mozilla WebGLRenderingContextBase.clearColor documentation> 
-clearColor ::
-           (MonadDOM m, IsWebGLRenderingContextBase self) =>
-             self -> GLclampf -> GLclampf -> GLclampf -> GLclampf -> m ()
-clearColor self red green blue alpha
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "clearColor"
-            [toJSVal red, toJSVal green, toJSVal blue, toJSVal alpha]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.clearDepth Mozilla WebGLRenderingContextBase.clearDepth documentation> 
-clearDepth ::
-           (MonadDOM m, IsWebGLRenderingContextBase self) =>
-             self -> GLclampf -> m ()
-clearDepth self depth
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "clearDepth"
-            [toJSVal depth]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.clearStencil Mozilla WebGLRenderingContextBase.clearStencil documentation> 
-clearStencil ::
-             (MonadDOM m, IsWebGLRenderingContextBase self) =>
-               self -> GLint -> m ()
-clearStencil self s
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "clearStencil"
-            [toJSVal s]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.colorMask Mozilla WebGLRenderingContextBase.colorMask documentation> 
-colorMask ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> m ()
-colorMask self red green blue alpha
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "colorMask"
-            [toJSVal red, toJSVal green, toJSVal blue, toJSVal alpha]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.compileShader Mozilla WebGLRenderingContextBase.compileShader documentation> 
-compileShader ::
-              (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                self -> Maybe WebGLShader -> m ()
-compileShader self shader
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "compileShader"
-            [toJSVal shader]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.compressedTexImage2D Mozilla WebGLRenderingContextBase.compressedTexImage2D documentation> 
-compressedTexImage2D ::
-                     (MonadDOM m, IsWebGLRenderingContextBase self,
-                      IsArrayBufferView data') =>
-                       self ->
-                         GLenum ->
-                           GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> data' -> m ()
-compressedTexImage2D self target level internalformat width height
-  border data'
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "compressedTexImage2D"
-            [toJSVal target, toJSVal level, toJSVal internalformat,
-             toJSVal width, toJSVal height, toJSVal border, toJSVal data']))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.compressedTexSubImage2D Mozilla WebGLRenderingContextBase.compressedTexSubImage2D documentation> 
-compressedTexSubImage2D ::
-                        (MonadDOM 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'
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^.
-            jsf "compressedTexSubImage2D"
-            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
-             toJSVal width, toJSVal height, toJSVal format, toJSVal data']))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.copyTexImage2D Mozilla WebGLRenderingContextBase.copyTexImage2D documentation> 
-copyTexImage2D ::
-               (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                 self ->
-                   GLenum ->
-                     GLint ->
-                       GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> m ()
-copyTexImage2D self target level internalformat x y width height
-  border
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "copyTexImage2D"
-            [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal x,
-             toJSVal y, toJSVal width, toJSVal height, toJSVal border]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.copyTexSubImage2D Mozilla WebGLRenderingContextBase.copyTexSubImage2D documentation> 
-copyTexSubImage2D ::
-                  (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                    self ->
-                      GLenum ->
-                        GLint ->
-                          GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
-copyTexSubImage2D self target level xoffset yoffset x y width
-  height
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "copyTexSubImage2D"
-            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
-             toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createBuffer Mozilla WebGLRenderingContextBase.createBuffer documentation> 
-createBuffer ::
-             (MonadDOM m, IsWebGLRenderingContextBase self) =>
-               self -> m WebGLBuffer
-createBuffer self
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "createBuffer" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createBuffer Mozilla WebGLRenderingContextBase.createBuffer documentation> 
-createBuffer_ ::
-              (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
-createBuffer_ self
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "createBuffer" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createFramebuffer Mozilla WebGLRenderingContextBase.createFramebuffer documentation> 
-createFramebuffer ::
-                  (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                    self -> m WebGLFramebuffer
-createFramebuffer self
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "createFramebuffer" ())
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createFramebuffer Mozilla WebGLRenderingContextBase.createFramebuffer documentation> 
-createFramebuffer_ ::
-                   (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
-createFramebuffer_ self
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "createFramebuffer" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createProgram Mozilla WebGLRenderingContextBase.createProgram documentation> 
-createProgram ::
-              (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                self -> m WebGLProgram
-createProgram self
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "createProgram" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createProgram Mozilla WebGLRenderingContextBase.createProgram documentation> 
-createProgram_ ::
-               (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
-createProgram_ self
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "createProgram" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createRenderbuffer Mozilla WebGLRenderingContextBase.createRenderbuffer documentation> 
-createRenderbuffer ::
-                   (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                     self -> m WebGLRenderbuffer
-createRenderbuffer self
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "createRenderbuffer"
-          ())
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createRenderbuffer Mozilla WebGLRenderingContextBase.createRenderbuffer documentation> 
-createRenderbuffer_ ::
-                    (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
-createRenderbuffer_ self
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "createRenderbuffer"
-            ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createShader Mozilla WebGLRenderingContextBase.createShader documentation> 
-createShader ::
-             (MonadDOM m, IsWebGLRenderingContextBase self) =>
-               self -> GLenum -> m WebGLShader
-createShader self type'
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "createShader"
-          [toJSVal type'])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createShader Mozilla WebGLRenderingContextBase.createShader documentation> 
-createShader_ ::
-              (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                self -> GLenum -> m ()
-createShader_ self type'
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "createShader"
-            [toJSVal type']))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createTexture Mozilla WebGLRenderingContextBase.createTexture documentation> 
-createTexture ::
-              (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                self -> m WebGLTexture
-createTexture self
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "createTexture" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createTexture Mozilla WebGLRenderingContextBase.createTexture documentation> 
-createTexture_ ::
-               (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
-createTexture_ self
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "createTexture" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.cullFace Mozilla WebGLRenderingContextBase.cullFace documentation> 
-cullFace ::
-         (MonadDOM m, IsWebGLRenderingContextBase self) =>
-           self -> GLenum -> m ()
-cullFace self mode
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "cullFace"
-            [toJSVal mode]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteBuffer Mozilla WebGLRenderingContextBase.deleteBuffer documentation> 
-deleteBuffer ::
-             (MonadDOM m, IsWebGLRenderingContextBase self) =>
-               self -> Maybe WebGLBuffer -> m ()
-deleteBuffer self buffer
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "deleteBuffer"
-            [toJSVal buffer]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteFramebuffer Mozilla WebGLRenderingContextBase.deleteFramebuffer documentation> 
-deleteFramebuffer ::
-                  (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                    self -> Maybe WebGLFramebuffer -> m ()
-deleteFramebuffer self framebuffer
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "deleteFramebuffer"
-            [toJSVal framebuffer]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteProgram Mozilla WebGLRenderingContextBase.deleteProgram documentation> 
-deleteProgram ::
-              (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                self -> Maybe WebGLProgram -> m ()
-deleteProgram self program
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "deleteProgram"
-            [toJSVal program]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteRenderbuffer Mozilla WebGLRenderingContextBase.deleteRenderbuffer documentation> 
-deleteRenderbuffer ::
-                   (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                     self -> Maybe WebGLRenderbuffer -> m ()
-deleteRenderbuffer self renderbuffer
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "deleteRenderbuffer"
-            [toJSVal renderbuffer]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteShader Mozilla WebGLRenderingContextBase.deleteShader documentation> 
-deleteShader ::
-             (MonadDOM m, IsWebGLRenderingContextBase self) =>
-               self -> Maybe WebGLShader -> m ()
-deleteShader self shader
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "deleteShader"
-            [toJSVal shader]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteTexture Mozilla WebGLRenderingContextBase.deleteTexture documentation> 
-deleteTexture ::
-              (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                self -> Maybe WebGLTexture -> m ()
-deleteTexture self texture
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "deleteTexture"
-            [toJSVal texture]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.depthFunc Mozilla WebGLRenderingContextBase.depthFunc documentation> 
-depthFunc ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self -> GLenum -> m ()
-depthFunc self func
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "depthFunc"
-            [toJSVal func]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.depthMask Mozilla WebGLRenderingContextBase.depthMask documentation> 
-depthMask ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self -> GLboolean -> m ()
-depthMask self flag
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "depthMask"
-            [toJSVal flag]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.depthRange Mozilla WebGLRenderingContextBase.depthRange documentation> 
-depthRange ::
-           (MonadDOM m, IsWebGLRenderingContextBase self) =>
-             self -> GLclampf -> GLclampf -> m ()
-depthRange self zNear zFar
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "depthRange"
-            [toJSVal zNear, toJSVal zFar]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.detachShader Mozilla WebGLRenderingContextBase.detachShader documentation> 
-detachShader ::
-             (MonadDOM m, IsWebGLRenderingContextBase self) =>
-               self -> Maybe WebGLProgram -> Maybe WebGLShader -> m ()
-detachShader self program shader
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "detachShader"
-            [toJSVal program, toJSVal shader]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.disable Mozilla WebGLRenderingContextBase.disable documentation> 
-disable ::
-        (MonadDOM m, IsWebGLRenderingContextBase self) =>
-          self -> GLenum -> m ()
-disable self cap
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "disable"
-            [toJSVal cap]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.disableVertexAttribArray Mozilla WebGLRenderingContextBase.disableVertexAttribArray documentation> 
-disableVertexAttribArray ::
-                         (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                           self -> GLuint -> m ()
-disableVertexAttribArray self index
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^.
-            jsf "disableVertexAttribArray"
-            [toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.drawArrays Mozilla WebGLRenderingContextBase.drawArrays documentation> 
-drawArrays ::
-           (MonadDOM m, IsWebGLRenderingContextBase self) =>
-             self -> GLenum -> GLint -> GLsizei -> m ()
-drawArrays self mode first count
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "drawArrays"
-            [toJSVal mode, toJSVal first, toJSVal count]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.drawElements Mozilla WebGLRenderingContextBase.drawElements documentation> 
-drawElements ::
-             (MonadDOM m, IsWebGLRenderingContextBase self) =>
-               self -> GLenum -> GLsizei -> GLenum -> GLintptr -> m ()
-drawElements self mode count type' offset
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "drawElements"
-            [toJSVal mode, toJSVal count, toJSVal type',
-             integralToDoubleToJSVal offset]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.enable Mozilla WebGLRenderingContextBase.enable documentation> 
-enable ::
-       (MonadDOM m, IsWebGLRenderingContextBase self) =>
-         self -> GLenum -> m ()
-enable self cap
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "enable" [toJSVal cap]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.enableVertexAttribArray Mozilla WebGLRenderingContextBase.enableVertexAttribArray documentation> 
-enableVertexAttribArray ::
-                        (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                          self -> GLuint -> m ()
-enableVertexAttribArray self index
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^.
-            jsf "enableVertexAttribArray"
-            [toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.finish Mozilla WebGLRenderingContextBase.finish documentation> 
-finish ::
-       (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
-finish self
-  = liftDOM
-      (void ((toWebGLRenderingContextBase self) ^. jsf "finish" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.flush Mozilla WebGLRenderingContextBase.flush documentation> 
-flush ::
-      (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
-flush self
-  = liftDOM
-      (void ((toWebGLRenderingContextBase self) ^. jsf "flush" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.framebufferRenderbuffer Mozilla WebGLRenderingContextBase.framebufferRenderbuffer documentation> 
-framebufferRenderbuffer ::
-                        (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                          self ->
-                            GLenum -> GLenum -> GLenum -> Maybe WebGLRenderbuffer -> m ()
-framebufferRenderbuffer self target attachment renderbuffertarget
-  renderbuffer
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^.
-            jsf "framebufferRenderbuffer"
-            [toJSVal target, toJSVal attachment, toJSVal renderbuffertarget,
-             toJSVal renderbuffer]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.framebufferTexture2D Mozilla WebGLRenderingContextBase.framebufferTexture2D documentation> 
-framebufferTexture2D ::
-                     (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                       self ->
-                         GLenum -> GLenum -> GLenum -> Maybe WebGLTexture -> GLint -> m ()
-framebufferTexture2D self target attachment textarget texture level
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "framebufferTexture2D"
-            [toJSVal target, toJSVal attachment, toJSVal textarget,
-             toJSVal texture, toJSVal level]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.frontFace Mozilla WebGLRenderingContextBase.frontFace documentation> 
-frontFace ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self -> GLenum -> m ()
-frontFace self mode
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "frontFace"
-            [toJSVal mode]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.generateMipmap Mozilla WebGLRenderingContextBase.generateMipmap documentation> 
-generateMipmap ::
-               (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                 self -> GLenum -> m ()
-generateMipmap self target
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "generateMipmap"
-            [toJSVal target]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveAttrib Mozilla WebGLRenderingContextBase.getActiveAttrib documentation> 
-getActiveAttrib ::
-                (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                  self -> Maybe WebGLProgram -> GLuint -> m WebGLActiveInfo
-getActiveAttrib self program index
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getActiveAttrib"
-          [toJSVal program, toJSVal index])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveAttrib Mozilla WebGLRenderingContextBase.getActiveAttrib documentation> 
-getActiveAttrib_ ::
-                 (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                   self -> Maybe WebGLProgram -> GLuint -> m ()
-getActiveAttrib_ self program index
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getActiveAttrib"
-            [toJSVal program, toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveUniform Mozilla WebGLRenderingContextBase.getActiveUniform documentation> 
-getActiveUniform ::
-                 (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                   self -> Maybe WebGLProgram -> GLuint -> m WebGLActiveInfo
-getActiveUniform self program index
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getActiveUniform"
-          [toJSVal program, toJSVal index])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveUniform Mozilla WebGLRenderingContextBase.getActiveUniform documentation> 
-getActiveUniform_ ::
-                  (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                    self -> Maybe WebGLProgram -> GLuint -> m ()
-getActiveUniform_ self program index
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getActiveUniform"
-            [toJSVal program, toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getAttachedShaders Mozilla WebGLRenderingContextBase.getAttachedShaders documentation> 
-getAttachedShaders ::
-                   (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                     self -> Maybe WebGLProgram -> m (Maybe [WebGLShader])
-getAttachedShaders self program
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getAttachedShaders"
-          [toJSVal program])
-         >>= maybeNullOrUndefined' fromJSArrayUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getAttachedShaders Mozilla WebGLRenderingContextBase.getAttachedShaders documentation> 
-getAttachedShaders_ ::
-                    (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                      self -> Maybe WebGLProgram -> m ()
-getAttachedShaders_ self program
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getAttachedShaders"
-            [toJSVal program]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getAttribLocation Mozilla WebGLRenderingContextBase.getAttribLocation documentation> 
-getAttribLocation ::
-                  (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) =>
-                    self -> Maybe WebGLProgram -> name -> m GLint
-getAttribLocation self program name
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getAttribLocation"
-          [toJSVal program, toJSVal name])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getAttribLocation Mozilla WebGLRenderingContextBase.getAttribLocation documentation> 
-getAttribLocation_ ::
-                   (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) =>
-                     self -> Maybe WebGLProgram -> name -> m ()
-getAttribLocation_ self program name
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getAttribLocation"
-            [toJSVal program, toJSVal name]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getBufferParameter Mozilla WebGLRenderingContextBase.getBufferParameter documentation> 
-getBufferParameter ::
-                   (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                     self -> GLenum -> GLenum -> m JSVal
-getBufferParameter self target pname
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getBufferParameter"
-          [toJSVal target, toJSVal pname])
-         >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getBufferParameter Mozilla WebGLRenderingContextBase.getBufferParameter documentation> 
-getBufferParameter_ ::
-                    (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                      self -> GLenum -> GLenum -> m ()
-getBufferParameter_ self target pname
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getBufferParameter"
-            [toJSVal target, toJSVal pname]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getContextAttributes Mozilla WebGLRenderingContextBase.getContextAttributes documentation> 
-getContextAttributes ::
-                     (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                       self -> m (Maybe WebGLContextAttributes)
-getContextAttributes self
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getContextAttributes"
-          ())
-         >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getContextAttributes Mozilla WebGLRenderingContextBase.getContextAttributes documentation> 
-getContextAttributes_ ::
-                      (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
-getContextAttributes_ self
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getContextAttributes"
-            ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getContextAttributes Mozilla WebGLRenderingContextBase.getContextAttributes documentation> 
-getContextAttributesUnsafe ::
-                           (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack) =>
-                             self -> m WebGLContextAttributes
-getContextAttributesUnsafe self
-  = liftDOM
-      ((((toWebGLRenderingContextBase self) ^. jsf "getContextAttributes"
-           ())
-          >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getContextAttributes Mozilla WebGLRenderingContextBase.getContextAttributes documentation> 
-getContextAttributesUnchecked ::
-                              (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                                self -> m WebGLContextAttributes
-getContextAttributesUnchecked self
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getContextAttributes"
-          ())
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getError Mozilla WebGLRenderingContextBase.getError documentation> 
-getError ::
-         (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m GLenum
-getError self
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getError" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getError Mozilla WebGLRenderingContextBase.getError documentation> 
-getError_ ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
-getError_ self
-  = liftDOM
-      (void ((toWebGLRenderingContextBase self) ^. jsf "getError" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getSupportedExtensions Mozilla WebGLRenderingContextBase.getSupportedExtensions documentation> 
-getSupportedExtensions ::
-                       (MonadDOM m, IsWebGLRenderingContextBase self,
-                        FromJSString result) =>
-                         self -> m (Maybe [result])
-getSupportedExtensions self
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^.
-          jsf "getSupportedExtensions"
-          ())
-         >>= maybeNullOrUndefined' fromJSArrayUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getSupportedExtensions Mozilla WebGLRenderingContextBase.getSupportedExtensions documentation> 
-getSupportedExtensions_ ::
-                        (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
-getSupportedExtensions_ self
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getSupportedExtensions"
-            ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getExtension Mozilla WebGLRenderingContextBase.getExtension documentation> 
-getExtension ::
-             (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) =>
-               self -> name -> m (Maybe GObject)
-getExtension self name
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getExtension"
-          [toJSVal name])
-         >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getExtension Mozilla WebGLRenderingContextBase.getExtension documentation> 
-getExtension_ ::
-              (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) =>
-                self -> name -> m ()
-getExtension_ self name
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getExtension"
-            [toJSVal name]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getExtension Mozilla WebGLRenderingContextBase.getExtension documentation> 
-getExtensionUnsafe ::
-                   (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name,
-                    HasCallStack) =>
-                     self -> name -> m GObject
-getExtensionUnsafe self name
-  = liftDOM
-      ((((toWebGLRenderingContextBase self) ^. jsf "getExtension"
-           [toJSVal name])
-          >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getExtension Mozilla WebGLRenderingContextBase.getExtension documentation> 
-getExtensionUnchecked ::
-                      (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) =>
-                        self -> name -> m GObject
-getExtensionUnchecked self name
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getExtension"
-          [toJSVal name])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getFramebufferAttachmentParameter Mozilla WebGLRenderingContextBase.getFramebufferAttachmentParameter documentation> 
-getFramebufferAttachmentParameter ::
-                                  (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                                    self -> GLenum -> GLenum -> GLenum -> m JSVal
-getFramebufferAttachmentParameter self target attachment pname
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^.
-          jsf "getFramebufferAttachmentParameter"
-          [toJSVal target, toJSVal attachment, toJSVal pname])
-         >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getFramebufferAttachmentParameter Mozilla WebGLRenderingContextBase.getFramebufferAttachmentParameter documentation> 
-getFramebufferAttachmentParameter_ ::
-                                   (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                                     self -> GLenum -> GLenum -> GLenum -> m ()
-getFramebufferAttachmentParameter_ self target attachment pname
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^.
-            jsf "getFramebufferAttachmentParameter"
-            [toJSVal target, toJSVal attachment, toJSVal pname]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getParameter Mozilla WebGLRenderingContextBase.getParameter documentation> 
-getParameter ::
-             (MonadDOM m, IsWebGLRenderingContextBase self) =>
-               self -> GLenum -> m JSVal
-getParameter self pname
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getParameter"
-          [toJSVal pname])
-         >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getParameter Mozilla WebGLRenderingContextBase.getParameter documentation> 
-getParameter_ ::
-              (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                self -> GLenum -> m ()
-getParameter_ self pname
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getParameter"
-            [toJSVal pname]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramParameter Mozilla WebGLRenderingContextBase.getProgramParameter documentation> 
-getProgramParameter ::
-                    (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                      self -> Maybe WebGLProgram -> GLenum -> m JSVal
-getProgramParameter self program pname
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getProgramParameter"
-          [toJSVal program, toJSVal pname])
-         >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramParameter Mozilla WebGLRenderingContextBase.getProgramParameter documentation> 
-getProgramParameter_ ::
-                     (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                       self -> Maybe WebGLProgram -> GLenum -> m ()
-getProgramParameter_ self program pname
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getProgramParameter"
-            [toJSVal program, toJSVal pname]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramInfoLog Mozilla WebGLRenderingContextBase.getProgramInfoLog documentation> 
-getProgramInfoLog ::
-                  (MonadDOM m, IsWebGLRenderingContextBase self,
-                   FromJSString result) =>
-                    self -> Maybe WebGLProgram -> m (Maybe result)
-getProgramInfoLog self program
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getProgramInfoLog"
-          [toJSVal program])
-         >>= fromMaybeJSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramInfoLog Mozilla WebGLRenderingContextBase.getProgramInfoLog documentation> 
-getProgramInfoLog_ ::
-                   (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                     self -> Maybe WebGLProgram -> m ()
-getProgramInfoLog_ self program
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getProgramInfoLog"
-            [toJSVal program]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramInfoLog Mozilla WebGLRenderingContextBase.getProgramInfoLog documentation> 
-getProgramInfoLogUnsafe ::
-                        (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack,
-                         FromJSString result) =>
-                          self -> Maybe WebGLProgram -> m result
-getProgramInfoLogUnsafe self program
-  = liftDOM
-      ((((toWebGLRenderingContextBase self) ^. jsf "getProgramInfoLog"
-           [toJSVal program])
-          >>= fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramInfoLog Mozilla WebGLRenderingContextBase.getProgramInfoLog documentation> 
-getProgramInfoLogUnchecked ::
-                           (MonadDOM m, IsWebGLRenderingContextBase self,
-                            FromJSString result) =>
-                             self -> Maybe WebGLProgram -> m result
-getProgramInfoLogUnchecked self program
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getProgramInfoLog"
-          [toJSVal program])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getRenderbufferParameter Mozilla WebGLRenderingContextBase.getRenderbufferParameter documentation> 
-getRenderbufferParameter ::
-                         (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                           self -> GLenum -> GLenum -> m JSVal
-getRenderbufferParameter self target pname
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^.
-          jsf "getRenderbufferParameter"
-          [toJSVal target, toJSVal pname])
-         >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getRenderbufferParameter Mozilla WebGLRenderingContextBase.getRenderbufferParameter documentation> 
-getRenderbufferParameter_ ::
-                          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                            self -> GLenum -> GLenum -> m ()
-getRenderbufferParameter_ self target pname
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^.
-            jsf "getRenderbufferParameter"
-            [toJSVal target, toJSVal pname]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderParameter Mozilla WebGLRenderingContextBase.getShaderParameter documentation> 
-getShaderParameter ::
-                   (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                     self -> Maybe WebGLShader -> GLenum -> m JSVal
-getShaderParameter self shader pname
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getShaderParameter"
-          [toJSVal shader, toJSVal pname])
-         >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderParameter Mozilla WebGLRenderingContextBase.getShaderParameter documentation> 
-getShaderParameter_ ::
-                    (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                      self -> Maybe WebGLShader -> GLenum -> m ()
-getShaderParameter_ self shader pname
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getShaderParameter"
-            [toJSVal shader, toJSVal pname]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderInfoLog Mozilla WebGLRenderingContextBase.getShaderInfoLog documentation> 
-getShaderInfoLog ::
-                 (MonadDOM m, IsWebGLRenderingContextBase self,
-                  FromJSString result) =>
-                   self -> Maybe WebGLShader -> m (Maybe result)
-getShaderInfoLog self shader
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getShaderInfoLog"
-          [toJSVal shader])
-         >>= fromMaybeJSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderInfoLog Mozilla WebGLRenderingContextBase.getShaderInfoLog documentation> 
-getShaderInfoLog_ ::
-                  (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                    self -> Maybe WebGLShader -> m ()
-getShaderInfoLog_ self shader
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getShaderInfoLog"
-            [toJSVal shader]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderInfoLog Mozilla WebGLRenderingContextBase.getShaderInfoLog documentation> 
-getShaderInfoLogUnsafe ::
-                       (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack,
-                        FromJSString result) =>
-                         self -> Maybe WebGLShader -> m result
-getShaderInfoLogUnsafe self shader
-  = liftDOM
-      ((((toWebGLRenderingContextBase self) ^. jsf "getShaderInfoLog"
-           [toJSVal shader])
-          >>= fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderInfoLog Mozilla WebGLRenderingContextBase.getShaderInfoLog documentation> 
-getShaderInfoLogUnchecked ::
-                          (MonadDOM m, IsWebGLRenderingContextBase self,
-                           FromJSString result) =>
-                            self -> Maybe WebGLShader -> m result
-getShaderInfoLogUnchecked self shader
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getShaderInfoLog"
-          [toJSVal shader])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderPrecisionFormat Mozilla WebGLRenderingContextBase.getShaderPrecisionFormat documentation> 
-getShaderPrecisionFormat ::
-                         (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                           self -> GLenum -> GLenum -> m WebGLShaderPrecisionFormat
-getShaderPrecisionFormat self shadertype precisiontype
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^.
-          jsf "getShaderPrecisionFormat"
-          [toJSVal shadertype, toJSVal precisiontype])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderPrecisionFormat Mozilla WebGLRenderingContextBase.getShaderPrecisionFormat documentation> 
-getShaderPrecisionFormat_ ::
-                          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                            self -> GLenum -> GLenum -> m ()
-getShaderPrecisionFormat_ self shadertype precisiontype
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^.
-            jsf "getShaderPrecisionFormat"
-            [toJSVal shadertype, toJSVal precisiontype]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderSource Mozilla WebGLRenderingContextBase.getShaderSource documentation> 
-getShaderSource ::
-                (MonadDOM m, IsWebGLRenderingContextBase self,
-                 FromJSString result) =>
-                  self -> Maybe WebGLShader -> m (Maybe result)
-getShaderSource self shader
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getShaderSource"
-          [toJSVal shader])
-         >>= fromMaybeJSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderSource Mozilla WebGLRenderingContextBase.getShaderSource documentation> 
-getShaderSource_ ::
-                 (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                   self -> Maybe WebGLShader -> m ()
-getShaderSource_ self shader
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getShaderSource"
-            [toJSVal shader]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderSource Mozilla WebGLRenderingContextBase.getShaderSource documentation> 
-getShaderSourceUnsafe ::
-                      (MonadDOM m, IsWebGLRenderingContextBase self, HasCallStack,
-                       FromJSString result) =>
-                        self -> Maybe WebGLShader -> m result
-getShaderSourceUnsafe self shader
-  = liftDOM
-      ((((toWebGLRenderingContextBase self) ^. jsf "getShaderSource"
-           [toJSVal shader])
-          >>= fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderSource Mozilla WebGLRenderingContextBase.getShaderSource documentation> 
-getShaderSourceUnchecked ::
-                         (MonadDOM m, IsWebGLRenderingContextBase self,
-                          FromJSString result) =>
-                           self -> Maybe WebGLShader -> m result
-getShaderSourceUnchecked self shader
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getShaderSource"
-          [toJSVal shader])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getTexParameter Mozilla WebGLRenderingContextBase.getTexParameter documentation> 
-getTexParameter ::
-                (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                  self -> GLenum -> GLenum -> m JSVal
-getTexParameter self target pname
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getTexParameter"
-          [toJSVal target, toJSVal pname])
-         >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getTexParameter Mozilla WebGLRenderingContextBase.getTexParameter documentation> 
-getTexParameter_ ::
-                 (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                   self -> GLenum -> GLenum -> m ()
-getTexParameter_ self target pname
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getTexParameter"
-            [toJSVal target, toJSVal pname]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getUniform Mozilla WebGLRenderingContextBase.getUniform documentation> 
-getUniform ::
-           (MonadDOM m, IsWebGLRenderingContextBase self) =>
-             self -> Maybe WebGLProgram -> Maybe WebGLUniformLocation -> m JSVal
-getUniform self program location
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getUniform"
-          [toJSVal program, toJSVal location])
-         >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getUniform Mozilla WebGLRenderingContextBase.getUniform documentation> 
-getUniform_ ::
-            (MonadDOM m, IsWebGLRenderingContextBase self) =>
-              self -> Maybe WebGLProgram -> Maybe WebGLUniformLocation -> m ()
-getUniform_ self program location
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getUniform"
-            [toJSVal program, toJSVal location]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getUniformLocation Mozilla WebGLRenderingContextBase.getUniformLocation documentation> 
-getUniformLocation ::
-                   (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) =>
-                     self -> Maybe WebGLProgram -> name -> m WebGLUniformLocation
-getUniformLocation self program name
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getUniformLocation"
-          [toJSVal program, toJSVal name])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getUniformLocation Mozilla WebGLRenderingContextBase.getUniformLocation documentation> 
-getUniformLocation_ ::
-                    (MonadDOM m, IsWebGLRenderingContextBase self, ToJSString name) =>
-                      self -> Maybe WebGLProgram -> name -> m ()
-getUniformLocation_ self program name
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getUniformLocation"
-            [toJSVal program, toJSVal name]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getVertexAttrib Mozilla WebGLRenderingContextBase.getVertexAttrib documentation> 
-getVertexAttrib ::
-                (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                  self -> GLuint -> GLenum -> m JSVal
-getVertexAttrib self index pname
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getVertexAttrib"
-          [toJSVal index, toJSVal pname])
-         >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getVertexAttrib Mozilla WebGLRenderingContextBase.getVertexAttrib documentation> 
-getVertexAttrib_ ::
-                 (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                   self -> GLuint -> GLenum -> m ()
-getVertexAttrib_ self index pname
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getVertexAttrib"
-            [toJSVal index, toJSVal pname]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getVertexAttribOffset Mozilla WebGLRenderingContextBase.getVertexAttribOffset documentation> 
-getVertexAttribOffset ::
-                      (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                        self -> GLuint -> GLenum -> m GLsizeiptr
-getVertexAttribOffset self index pname
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "getVertexAttribOffset"
-          [toJSVal index, toJSVal pname])
-         >>= integralFromDoubleFromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getVertexAttribOffset Mozilla WebGLRenderingContextBase.getVertexAttribOffset documentation> 
-getVertexAttribOffset_ ::
-                       (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                         self -> GLuint -> GLenum -> m ()
-getVertexAttribOffset_ self index pname
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "getVertexAttribOffset"
-            [toJSVal index, toJSVal pname]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.hint Mozilla WebGLRenderingContextBase.hint documentation> 
-hint ::
-     (MonadDOM m, IsWebGLRenderingContextBase self) =>
-       self -> GLenum -> GLenum -> m ()
-hint self target mode
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "hint"
-            [toJSVal target, toJSVal mode]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isBuffer Mozilla WebGLRenderingContextBase.isBuffer documentation> 
-isBuffer ::
-         (MonadDOM m, IsWebGLRenderingContextBase self) =>
-           self -> Maybe WebGLBuffer -> m GLboolean
-isBuffer self buffer
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "isBuffer"
-          [toJSVal buffer])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isBuffer Mozilla WebGLRenderingContextBase.isBuffer documentation> 
-isBuffer_ ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self -> Maybe WebGLBuffer -> m ()
-isBuffer_ self buffer
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "isBuffer"
-            [toJSVal buffer]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isContextLost Mozilla WebGLRenderingContextBase.isContextLost documentation> 
-isContextLost ::
-              (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                self -> m GLboolean
-isContextLost self
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "isContextLost" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isContextLost Mozilla WebGLRenderingContextBase.isContextLost documentation> 
-isContextLost_ ::
-               (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
-isContextLost_ self
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "isContextLost" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isEnabled Mozilla WebGLRenderingContextBase.isEnabled documentation> 
-isEnabled ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self -> GLenum -> m GLboolean
-isEnabled self cap
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "isEnabled"
-          [toJSVal cap])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isEnabled Mozilla WebGLRenderingContextBase.isEnabled documentation> 
-isEnabled_ ::
-           (MonadDOM m, IsWebGLRenderingContextBase self) =>
-             self -> GLenum -> m ()
-isEnabled_ self cap
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "isEnabled"
-            [toJSVal cap]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isFramebuffer Mozilla WebGLRenderingContextBase.isFramebuffer documentation> 
-isFramebuffer ::
-              (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                self -> Maybe WebGLFramebuffer -> m GLboolean
-isFramebuffer self framebuffer
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "isFramebuffer"
-          [toJSVal framebuffer])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isFramebuffer Mozilla WebGLRenderingContextBase.isFramebuffer documentation> 
-isFramebuffer_ ::
-               (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                 self -> Maybe WebGLFramebuffer -> m ()
-isFramebuffer_ self framebuffer
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "isFramebuffer"
-            [toJSVal framebuffer]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isProgram Mozilla WebGLRenderingContextBase.isProgram documentation> 
-isProgram ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self -> Maybe WebGLProgram -> m GLboolean
-isProgram self program
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "isProgram"
-          [toJSVal program])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isProgram Mozilla WebGLRenderingContextBase.isProgram documentation> 
-isProgram_ ::
-           (MonadDOM m, IsWebGLRenderingContextBase self) =>
-             self -> Maybe WebGLProgram -> m ()
-isProgram_ self program
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "isProgram"
-            [toJSVal program]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isRenderbuffer Mozilla WebGLRenderingContextBase.isRenderbuffer documentation> 
-isRenderbuffer ::
-               (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                 self -> Maybe WebGLRenderbuffer -> m GLboolean
-isRenderbuffer self renderbuffer
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "isRenderbuffer"
-          [toJSVal renderbuffer])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isRenderbuffer Mozilla WebGLRenderingContextBase.isRenderbuffer documentation> 
-isRenderbuffer_ ::
-                (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                  self -> Maybe WebGLRenderbuffer -> m ()
-isRenderbuffer_ self renderbuffer
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "isRenderbuffer"
-            [toJSVal renderbuffer]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isShader Mozilla WebGLRenderingContextBase.isShader documentation> 
-isShader ::
-         (MonadDOM m, IsWebGLRenderingContextBase self) =>
-           self -> Maybe WebGLShader -> m GLboolean
-isShader self shader
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "isShader"
-          [toJSVal shader])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isShader Mozilla WebGLRenderingContextBase.isShader documentation> 
-isShader_ ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self -> Maybe WebGLShader -> m ()
-isShader_ self shader
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "isShader"
-            [toJSVal shader]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isTexture Mozilla WebGLRenderingContextBase.isTexture documentation> 
-isTexture ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self -> Maybe WebGLTexture -> m GLboolean
-isTexture self texture
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. jsf "isTexture"
-          [toJSVal texture])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isTexture Mozilla WebGLRenderingContextBase.isTexture documentation> 
-isTexture_ ::
-           (MonadDOM m, IsWebGLRenderingContextBase self) =>
-             self -> Maybe WebGLTexture -> m ()
-isTexture_ self texture
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "isTexture"
-            [toJSVal texture]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.lineWidth Mozilla WebGLRenderingContextBase.lineWidth documentation> 
-lineWidth ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self -> GLfloat -> m ()
-lineWidth self width
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "lineWidth"
-            [toJSVal width]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.linkProgram Mozilla WebGLRenderingContextBase.linkProgram documentation> 
-linkProgram ::
-            (MonadDOM m, IsWebGLRenderingContextBase self) =>
-              self -> Maybe WebGLProgram -> m ()
-linkProgram self program
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "linkProgram"
-            [toJSVal program]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.pixelStorei Mozilla WebGLRenderingContextBase.pixelStorei documentation> 
-pixelStorei ::
-            (MonadDOM m, IsWebGLRenderingContextBase self) =>
-              self -> GLenum -> GLint -> m ()
-pixelStorei self pname param
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "pixelStorei"
-            [toJSVal pname, toJSVal param]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.polygonOffset Mozilla WebGLRenderingContextBase.polygonOffset documentation> 
-polygonOffset ::
-              (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                self -> GLfloat -> GLfloat -> m ()
-polygonOffset self factor units
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "polygonOffset"
-            [toJSVal factor, toJSVal units]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.readPixels Mozilla WebGLRenderingContextBase.readPixels documentation> 
-readPixels ::
-           (MonadDOM m, IsWebGLRenderingContextBase self,
-            IsArrayBufferView pixels) =>
-             self ->
-               GLint ->
-                 GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> pixels -> m ()
-readPixels self x y width height format type' pixels
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "readPixels"
-            [toJSVal x, toJSVal y, toJSVal width, toJSVal height,
-             toJSVal format, toJSVal type', toJSVal pixels]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.releaseShaderCompiler Mozilla WebGLRenderingContextBase.releaseShaderCompiler documentation> 
-releaseShaderCompiler ::
-                      (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
-releaseShaderCompiler self
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "releaseShaderCompiler"
-            ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.renderbufferStorage Mozilla WebGLRenderingContextBase.renderbufferStorage documentation> 
-renderbufferStorage ::
-                    (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                      self -> GLenum -> GLenum -> GLsizei -> GLsizei -> m ()
-renderbufferStorage self target internalformat width height
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "renderbufferStorage"
-            [toJSVal target, toJSVal internalformat, toJSVal width,
-             toJSVal height]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.sampleCoverage Mozilla WebGLRenderingContextBase.sampleCoverage documentation> 
-sampleCoverage ::
-               (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                 self -> GLclampf -> GLboolean -> m ()
-sampleCoverage self value invert
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "sampleCoverage"
-            [toJSVal value, toJSVal invert]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.scissor Mozilla WebGLRenderingContextBase.scissor documentation> 
-scissor ::
-        (MonadDOM m, IsWebGLRenderingContextBase self) =>
-          self -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
-scissor self x y width height
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "scissor"
-            [toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.shaderSource Mozilla WebGLRenderingContextBase.shaderSource documentation> 
-shaderSource ::
-             (MonadDOM m, IsWebGLRenderingContextBase self,
-              ToJSString string) =>
-               self -> Maybe WebGLShader -> string -> m ()
-shaderSource self shader string
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "shaderSource"
-            [toJSVal shader, toJSVal string]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilFunc Mozilla WebGLRenderingContextBase.stencilFunc documentation> 
-stencilFunc ::
-            (MonadDOM m, IsWebGLRenderingContextBase self) =>
-              self -> GLenum -> GLint -> GLuint -> m ()
-stencilFunc self func ref mask
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "stencilFunc"
-            [toJSVal func, toJSVal ref, toJSVal mask]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilFuncSeparate Mozilla WebGLRenderingContextBase.stencilFuncSeparate documentation> 
-stencilFuncSeparate ::
-                    (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                      self -> GLenum -> GLenum -> GLint -> GLuint -> m ()
-stencilFuncSeparate self face func ref mask
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "stencilFuncSeparate"
-            [toJSVal face, toJSVal func, toJSVal ref, toJSVal mask]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilMask Mozilla WebGLRenderingContextBase.stencilMask documentation> 
-stencilMask ::
-            (MonadDOM m, IsWebGLRenderingContextBase self) =>
-              self -> GLuint -> m ()
-stencilMask self mask
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "stencilMask"
-            [toJSVal mask]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilMaskSeparate Mozilla WebGLRenderingContextBase.stencilMaskSeparate documentation> 
-stencilMaskSeparate ::
-                    (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                      self -> GLenum -> GLuint -> m ()
-stencilMaskSeparate self face mask
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "stencilMaskSeparate"
-            [toJSVal face, toJSVal mask]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilOp Mozilla WebGLRenderingContextBase.stencilOp documentation> 
-stencilOp ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self -> GLenum -> GLenum -> GLenum -> m ()
-stencilOp self fail zfail zpass
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "stencilOp"
-            [toJSVal fail, toJSVal zfail, toJSVal zpass]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilOpSeparate Mozilla WebGLRenderingContextBase.stencilOpSeparate documentation> 
-stencilOpSeparate ::
-                  (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                    self -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
-stencilOpSeparate self face fail zfail zpass
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "stencilOpSeparate"
-            [toJSVal face, toJSVal fail, toJSVal zfail, toJSVal zpass]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texParameterf Mozilla WebGLRenderingContextBase.texParameterf documentation> 
-texParameterf ::
-              (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                self -> GLenum -> GLenum -> GLfloat -> m ()
-texParameterf self target pname param
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "texParameterf"
-            [toJSVal target, toJSVal pname, toJSVal param]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texParameteri Mozilla WebGLRenderingContextBase.texParameteri documentation> 
-texParameteri ::
-              (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                self -> GLenum -> GLenum -> GLint -> m ()
-texParameteri self target pname param
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "texParameteri"
-            [toJSVal target, toJSVal pname, toJSVal param]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texImage2D Mozilla WebGLRenderingContextBase.texImage2D documentation> 
-texImage2DView ::
-               (MonadDOM 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
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "texImage2D"
-            [toJSVal target, toJSVal level, toJSVal internalformat,
-             toJSVal width, toJSVal height, toJSVal border, toJSVal format,
-             toJSVal type', toJSVal pixels]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texImage2D Mozilla WebGLRenderingContextBase.texImage2D documentation> 
-texImage2D ::
-           (MonadDOM m, IsWebGLRenderingContextBase self,
-            IsTexImageSource source) =>
-             self ->
-               GLenum ->
-                 GLint -> GLenum -> GLenum -> GLenum -> Maybe source -> m ()
-texImage2D self target level internalformat format type' source
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "texImage2D"
-            [toJSVal target, toJSVal level, toJSVal internalformat,
-             toJSVal format, toJSVal type', toJSVal source]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texSubImage2D Mozilla WebGLRenderingContextBase.texSubImage2D documentation> 
-texSubImage2DView ::
-                  (MonadDOM 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
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "texSubImage2D"
-            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
-             toJSVal width, toJSVal height, toJSVal format, toJSVal type',
-             toJSVal pixels]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texSubImage2D Mozilla WebGLRenderingContextBase.texSubImage2D documentation> 
-texSubImage2D ::
-              (MonadDOM m, IsWebGLRenderingContextBase self,
-               IsTexImageSource source) =>
-                self ->
-                  GLenum ->
-                    GLint -> GLint -> GLint -> GLenum -> GLenum -> Maybe source -> m ()
-texSubImage2D self target level xoffset yoffset format type' source
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "texSubImage2D"
-            [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset,
-             toJSVal format, toJSVal type', toJSVal source]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1f Mozilla WebGLRenderingContextBase.uniform1f documentation> 
-uniform1f ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self -> Maybe WebGLUniformLocation -> GLfloat -> m ()
-uniform1f self location x
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniform1f"
-            [toJSVal location, toJSVal x]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2f Mozilla WebGLRenderingContextBase.uniform2f documentation> 
-uniform2f ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self -> Maybe WebGLUniformLocation -> GLfloat -> GLfloat -> m ()
-uniform2f self location x y
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniform2f"
-            [toJSVal location, toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3f Mozilla WebGLRenderingContextBase.uniform3f documentation> 
-uniform3f ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self ->
-              Maybe WebGLUniformLocation -> GLfloat -> GLfloat -> GLfloat -> m ()
-uniform3f self location x y z
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniform3f"
-            [toJSVal location, toJSVal x, toJSVal y, toJSVal z]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4f Mozilla WebGLRenderingContextBase.uniform4f documentation> 
-uniform4f ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self ->
-              Maybe WebGLUniformLocation ->
-                GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
-uniform4f self location x y z w
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniform4f"
-            [toJSVal location, toJSVal x, toJSVal y, toJSVal z, toJSVal w]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1i Mozilla WebGLRenderingContextBase.uniform1i documentation> 
-uniform1i ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self -> Maybe WebGLUniformLocation -> GLint -> m ()
-uniform1i self location x
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniform1i"
-            [toJSVal location, toJSVal x]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2i Mozilla WebGLRenderingContextBase.uniform2i documentation> 
-uniform2i ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self -> Maybe WebGLUniformLocation -> GLint -> GLint -> m ()
-uniform2i self location x y
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniform2i"
-            [toJSVal location, toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3i Mozilla WebGLRenderingContextBase.uniform3i documentation> 
-uniform3i ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self ->
-              Maybe WebGLUniformLocation -> GLint -> GLint -> GLint -> m ()
-uniform3i self location x y z
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniform3i"
-            [toJSVal location, toJSVal x, toJSVal y, toJSVal z]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4i Mozilla WebGLRenderingContextBase.uniform4i documentation> 
-uniform4i ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self ->
-              Maybe WebGLUniformLocation ->
-                GLint -> GLint -> GLint -> GLint -> m ()
-uniform4i self location x y z w
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniform4i"
-            [toJSVal location, toJSVal x, toJSVal y, toJSVal z, toJSVal w]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1fv Mozilla WebGLRenderingContextBase.uniform1fv documentation> 
-uniform1fv ::
-           (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32List v) =>
-             self -> Maybe WebGLUniformLocation -> v -> m ()
-uniform1fv self location v
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniform1fv"
-            [toJSVal location, toJSVal v]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2fv Mozilla WebGLRenderingContextBase.uniform2fv documentation> 
-uniform2fv ::
-           (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32List v) =>
-             self -> Maybe WebGLUniformLocation -> v -> m ()
-uniform2fv self location v
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniform2fv"
-            [toJSVal location, toJSVal v]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3fv Mozilla WebGLRenderingContextBase.uniform3fv documentation> 
-uniform3fv ::
-           (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32List v) =>
-             self -> Maybe WebGLUniformLocation -> v -> m ()
-uniform3fv self location v
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniform3fv"
-            [toJSVal location, toJSVal v]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4fv Mozilla WebGLRenderingContextBase.uniform4fv documentation> 
-uniform4fv ::
-           (MonadDOM m, IsWebGLRenderingContextBase self, IsFloat32List v) =>
-             self -> Maybe WebGLUniformLocation -> v -> m ()
-uniform4fv self location v
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniform4fv"
-            [toJSVal location, toJSVal v]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1iv Mozilla WebGLRenderingContextBase.uniform1iv documentation> 
-uniform1iv ::
-           (MonadDOM m, IsWebGLRenderingContextBase self, IsInt32List v) =>
-             self -> Maybe WebGLUniformLocation -> v -> m ()
-uniform1iv self location v
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniform1iv"
-            [toJSVal location, toJSVal v]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2iv Mozilla WebGLRenderingContextBase.uniform2iv documentation> 
-uniform2iv ::
-           (MonadDOM m, IsWebGLRenderingContextBase self, IsInt32List v) =>
-             self -> Maybe WebGLUniformLocation -> v -> m ()
-uniform2iv self location v
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniform2iv"
-            [toJSVal location, toJSVal v]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3iv Mozilla WebGLRenderingContextBase.uniform3iv documentation> 
-uniform3iv ::
-           (MonadDOM m, IsWebGLRenderingContextBase self, IsInt32List v) =>
-             self -> Maybe WebGLUniformLocation -> v -> m ()
-uniform3iv self location v
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniform3iv"
-            [toJSVal location, toJSVal v]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4iv Mozilla WebGLRenderingContextBase.uniform4iv documentation> 
-uniform4iv ::
-           (MonadDOM m, IsWebGLRenderingContextBase self, IsInt32List v) =>
-             self -> Maybe WebGLUniformLocation -> v -> m ()
-uniform4iv self location v
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniform4iv"
-            [toJSVal location, toJSVal v]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniformMatrix2fv Mozilla WebGLRenderingContextBase.uniformMatrix2fv documentation> 
-uniformMatrix2fv ::
-                 (MonadDOM m, IsWebGLRenderingContextBase self,
-                  IsFloat32List array) =>
-                   self -> Maybe WebGLUniformLocation -> GLboolean -> array -> m ()
-uniformMatrix2fv self location transpose array
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniformMatrix2fv"
-            [toJSVal location, toJSVal transpose, toJSVal array]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniformMatrix3fv Mozilla WebGLRenderingContextBase.uniformMatrix3fv documentation> 
-uniformMatrix3fv ::
-                 (MonadDOM m, IsWebGLRenderingContextBase self,
-                  IsFloat32List array) =>
-                   self -> Maybe WebGLUniformLocation -> GLboolean -> array -> m ()
-uniformMatrix3fv self location transpose array
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniformMatrix3fv"
-            [toJSVal location, toJSVal transpose, toJSVal array]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniformMatrix4fv Mozilla WebGLRenderingContextBase.uniformMatrix4fv documentation> 
-uniformMatrix4fv ::
-                 (MonadDOM m, IsWebGLRenderingContextBase self,
-                  IsFloat32List array) =>
-                   self -> Maybe WebGLUniformLocation -> GLboolean -> array -> m ()
-uniformMatrix4fv self location transpose array
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "uniformMatrix4fv"
-            [toJSVal location, toJSVal transpose, toJSVal array]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.useProgram Mozilla WebGLRenderingContextBase.useProgram documentation> 
-useProgram ::
-           (MonadDOM m, IsWebGLRenderingContextBase self) =>
-             self -> Maybe WebGLProgram -> m ()
-useProgram self program
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "useProgram"
-            [toJSVal program]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.validateProgram Mozilla WebGLRenderingContextBase.validateProgram documentation> 
-validateProgram ::
-                (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                  self -> Maybe WebGLProgram -> m ()
-validateProgram self program
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "validateProgram"
-            [toJSVal program]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib1f Mozilla WebGLRenderingContextBase.vertexAttrib1f documentation> 
-vertexAttrib1f ::
-               (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                 self -> GLuint -> GLfloat -> m ()
-vertexAttrib1f self index x
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttrib1f"
-            [toJSVal index, toJSVal x]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib2f Mozilla WebGLRenderingContextBase.vertexAttrib2f documentation> 
-vertexAttrib2f ::
-               (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                 self -> GLuint -> GLfloat -> GLfloat -> m ()
-vertexAttrib2f self index x y
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttrib2f"
-            [toJSVal index, toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib3f Mozilla WebGLRenderingContextBase.vertexAttrib3f documentation> 
-vertexAttrib3f ::
-               (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                 self -> GLuint -> GLfloat -> GLfloat -> GLfloat -> m ()
-vertexAttrib3f self index x y z
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttrib3f"
-            [toJSVal index, toJSVal x, toJSVal y, toJSVal z]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib4f Mozilla WebGLRenderingContextBase.vertexAttrib4f documentation> 
-vertexAttrib4f ::
-               (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                 self -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
-vertexAttrib4f self index x y z w
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttrib4f"
-            [toJSVal index, toJSVal x, toJSVal y, toJSVal z, toJSVal w]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib1fv Mozilla WebGLRenderingContextBase.vertexAttrib1fv documentation> 
-vertexAttrib1fv ::
-                (MonadDOM m, IsWebGLRenderingContextBase self,
-                 IsFloat32List values) =>
-                  self -> GLuint -> values -> m ()
-vertexAttrib1fv self index values
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttrib1fv"
-            [toJSVal index, toJSVal values]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib2fv Mozilla WebGLRenderingContextBase.vertexAttrib2fv documentation> 
-vertexAttrib2fv ::
-                (MonadDOM m, IsWebGLRenderingContextBase self,
-                 IsFloat32List values) =>
-                  self -> GLuint -> values -> m ()
-vertexAttrib2fv self index values
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttrib2fv"
-            [toJSVal index, toJSVal values]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib3fv Mozilla WebGLRenderingContextBase.vertexAttrib3fv documentation> 
-vertexAttrib3fv ::
-                (MonadDOM m, IsWebGLRenderingContextBase self,
-                 IsFloat32List values) =>
-                  self -> GLuint -> values -> m ()
-vertexAttrib3fv self index values
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttrib3fv"
-            [toJSVal index, toJSVal values]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib4fv Mozilla WebGLRenderingContextBase.vertexAttrib4fv documentation> 
-vertexAttrib4fv ::
-                (MonadDOM m, IsWebGLRenderingContextBase self,
-                 IsFloat32List values) =>
-                  self -> GLuint -> values -> m ()
-vertexAttrib4fv self index values
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttrib4fv"
-            [toJSVal index, toJSVal values]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttribPointer Mozilla WebGLRenderingContextBase.vertexAttribPointer documentation> 
-vertexAttribPointer ::
-                    (MonadDOM m, IsWebGLRenderingContextBase self) =>
-                      self ->
-                        GLuint ->
-                          GLint -> GLenum -> GLboolean -> GLsizei -> GLintptr -> m ()
-vertexAttribPointer self indx size type' normalized stride offset
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "vertexAttribPointer"
-            [toJSVal indx, toJSVal size, toJSVal type', toJSVal normalized,
-             toJSVal stride, integralToDoubleToJSVal offset]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.viewport Mozilla WebGLRenderingContextBase.viewport documentation> 
-viewport ::
-         (MonadDOM m, IsWebGLRenderingContextBase self) =>
-           self -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
-viewport self x y width height
-  = liftDOM
-      (void
-         ((toWebGLRenderingContextBase self) ^. jsf "viewport"
-            [toJSVal x, toJSVal y, toJSVal width, toJSVal 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
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.canvas Mozilla WebGLRenderingContextBase.canvas documentation> 
-getCanvas ::
-          (MonadDOM m, IsWebGLRenderingContextBase self) =>
-            self -> m HTMLCanvasElement
-getCanvas self
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. js "canvas") >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.drawingBufferWidth Mozilla WebGLRenderingContextBase.drawingBufferWidth documentation> 
-getDrawingBufferWidth ::
-                      (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m GLsizei
-getDrawingBufferWidth self
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. js "drawingBufferWidth")
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.drawingBufferHeight Mozilla WebGLRenderingContextBase.drawingBufferHeight documentation> 
-getDrawingBufferHeight ::
-                       (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m GLsizei
-getDrawingBufferHeight self
-  = liftDOM
-      (((toWebGLRenderingContextBase self) ^. js "drawingBufferHeight")
-         >>= fromJSValUnchecked)
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module JSDOM.Generated.WebGLRenderingContextBase
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "activeTexture" [toJSVal texture]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "attachShader" [toJSVal program, toJSVal shader]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "bindAttribLocation" [toJSVal program, toJSVal index, toJSVal name]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "bindBuffer" [toJSVal target, toJSVal buffer]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "bindFramebuffer" [toJSVal target, toJSVal framebuffer]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "bindRenderbuffer" [toJSVal target, toJSVal renderbuffer]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "bindTexture" [toJSVal target, toJSVal texture]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "blendColor" [toJSVal red, toJSVal green, toJSVal blue, toJSVal alpha]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "blendEquation" [toJSVal mode]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "blendEquationSeparate" [toJSVal modeRGB, toJSVal modeAlpha]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "blendFunc" [toJSVal sfactor, toJSVal dfactor]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "blendFuncSeparate" [toJSVal srcRGB, toJSVal dstRGB, toJSVal srcAlpha, toJSVal dstAlpha]))
+
+-- | <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 ((P.round <$> (((Types.toWebGLRenderingContextBase self) ^. jsf "checkFramebufferStatus" [toJSVal target]) >>= valToNumber)))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "checkFramebufferStatus" [toJSVal target]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "clear" [toJSVal mask]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "clearColor" [toJSVal red, toJSVal green, toJSVal blue, toJSVal alpha]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "clearDepth" [toJSVal depth]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "clearStencil" [toJSVal s]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "colorMask" [toJSVal red, toJSVal green, toJSVal blue, toJSVal alpha]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "compileShader" [toJSVal shader]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "copyTexImage2D" [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal x, toJSVal y, toJSVal width, toJSVal height, toJSVal border]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "copyTexSubImage2D" [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset, toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createBuffer MDN WebGLRenderingContextBase.createBuffer documentation>
+createBuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m WebGLBuffer
+createBuffer self = liftDOM ((((Types.toWebGLRenderingContextBase self) ^. jsf "createBuffer" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createBuffer MDN WebGLRenderingContextBase.createBuffer documentation>
+createBuffer_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+createBuffer_ self = liftDOM (void ((Types.toWebGLRenderingContextBase self) ^. jsf "createBuffer" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createFramebuffer MDN WebGLRenderingContextBase.createFramebuffer documentation>
+createFramebuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m WebGLFramebuffer
+createFramebuffer self = liftDOM ((((Types.toWebGLRenderingContextBase self) ^. jsf "createFramebuffer" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createFramebuffer MDN WebGLRenderingContextBase.createFramebuffer documentation>
+createFramebuffer_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+createFramebuffer_ self = liftDOM (void ((Types.toWebGLRenderingContextBase self) ^. jsf "createFramebuffer" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createProgram MDN WebGLRenderingContextBase.createProgram documentation>
+createProgram :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m WebGLProgram
+createProgram self = liftDOM ((((Types.toWebGLRenderingContextBase self) ^. jsf "createProgram" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createProgram MDN WebGLRenderingContextBase.createProgram documentation>
+createProgram_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+createProgram_ self = liftDOM (void ((Types.toWebGLRenderingContextBase self) ^. jsf "createProgram" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createRenderbuffer MDN WebGLRenderingContextBase.createRenderbuffer documentation>
+createRenderbuffer :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m WebGLRenderbuffer
+createRenderbuffer self = liftDOM ((((Types.toWebGLRenderingContextBase self) ^. jsf "createRenderbuffer" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createRenderbuffer MDN WebGLRenderingContextBase.createRenderbuffer documentation>
+createRenderbuffer_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+createRenderbuffer_ self = liftDOM (void ((Types.toWebGLRenderingContextBase self) ^. jsf "createRenderbuffer" ()))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "createShader" [toJSVal 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "createShader" [toJSVal 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 (((((Types.toWebGLRenderingContextBase self) ^. jsf "createShader" [toJSVal 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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "createShader" [toJSVal type']) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createTexture MDN WebGLRenderingContextBase.createTexture documentation>
+createTexture :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m WebGLTexture
+createTexture self = liftDOM ((((Types.toWebGLRenderingContextBase self) ^. jsf "createTexture" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/createTexture MDN WebGLRenderingContextBase.createTexture documentation>
+createTexture_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+createTexture_ self = liftDOM (void ((Types.toWebGLRenderingContextBase self) ^. jsf "createTexture" ()))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "cullFace" [toJSVal mode]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "deleteBuffer" [toJSVal buffer]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "deleteFramebuffer" [toJSVal framebuffer]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "deleteProgram" [toJSVal program]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "deleteRenderbuffer" [toJSVal renderbuffer]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "deleteShader" [toJSVal shader]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "deleteTexture" [toJSVal texture]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "depthFunc" [toJSVal func]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "depthMask" [toJSVal flag]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "depthRange" [toJSVal zNear, toJSVal zFar]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "detachShader" [toJSVal program, toJSVal shader]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "disable" [toJSVal cap]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "disableVertexAttribArray" [toJSVal index]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "drawArrays" [toJSVal mode, toJSVal first, toJSVal count]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "drawElements" [toJSVal mode, toJSVal count, toJSVal type', toJSVal offset]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "enable" [toJSVal cap]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "enableVertexAttribArray" [toJSVal index]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/finish MDN WebGLRenderingContextBase.finish documentation>
+finish :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+finish self = liftDOM (void ((Types.toWebGLRenderingContextBase self) ^. jsf "finish" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/flush MDN WebGLRenderingContextBase.flush documentation>
+flush :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+flush self = liftDOM (void ((Types.toWebGLRenderingContextBase self) ^. jsf "flush" ()))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "framebufferRenderbuffer" [toJSVal target, toJSVal attachment, toJSVal renderbuffertarget, toJSVal renderbuffer]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "framebufferTexture2D" [toJSVal target, toJSVal attachment, toJSVal textarget, toJSVal texture, toJSVal level]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "frontFace" [toJSVal mode]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "generateMipmap" [toJSVal target]))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getActiveAttrib" [toJSVal program, toJSVal 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getActiveAttrib" [toJSVal program, toJSVal 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 (((((Types.toWebGLRenderingContextBase self) ^. jsf "getActiveAttrib" [toJSVal program, toJSVal 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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getActiveAttrib" [toJSVal program, toJSVal index]) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getActiveUniform" [toJSVal program, toJSVal 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getActiveUniform" [toJSVal program, toJSVal 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 (((((Types.toWebGLRenderingContextBase self) ^. jsf "getActiveUniform" [toJSVal program, toJSVal 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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getActiveUniform" [toJSVal program, toJSVal index]) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getAttachedShaders" [toJSVal 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getAttachedShaders" [toJSVal 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 (((((Types.toWebGLRenderingContextBase self) ^. jsf "getAttachedShaders" [toJSVal 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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getAttachedShaders" [toJSVal program]) >>= fromJSValUnchecked))
+
+-- | <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 ((P.round <$> (((Types.toWebGLRenderingContextBase self) ^. jsf "getAttribLocation" [toJSVal program, toJSVal name]) >>= valToNumber)))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getAttribLocation" [toJSVal program, toJSVal name]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getBufferParameter" [toJSVal target, toJSVal 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getBufferParameter" [toJSVal target, toJSVal pname]))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getContextAttributes" ()) >>= 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getContextAttributes" ()))
+
+-- | <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 (((((Types.toWebGLRenderingContextBase self) ^. jsf "getContextAttributes" ()) >>= 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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getContextAttributes" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getError MDN WebGLRenderingContextBase.getError documentation>
+getError :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m Word
+getError self = liftDOM ((P.round <$> (((Types.toWebGLRenderingContextBase self) ^. jsf "getError" ()) >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/getError MDN WebGLRenderingContextBase.getError documentation>
+getError_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+getError_ self = liftDOM (void ((Types.toWebGLRenderingContextBase self) ^. jsf "getError" ()))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getExtension" [toJSVal 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getExtension" [toJSVal 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 (((((Types.toWebGLRenderingContextBase self) ^. jsf "getExtension" [toJSVal 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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getExtension" [toJSVal name]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getFramebufferAttachmentParameter" [toJSVal target, toJSVal attachment, toJSVal 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getFramebufferAttachmentParameter" [toJSVal target, toJSVal attachment, toJSVal pname]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getParameter" [toJSVal 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getParameter" [toJSVal pname]))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getProgramInfoLog" [toJSVal program]) >>= fromMaybeJSString))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getProgramInfoLog" [toJSVal 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 (((((Types.toWebGLRenderingContextBase self) ^. jsf "getProgramInfoLog" [toJSVal program]) >>= fromMaybeJSString) >>= 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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getProgramInfoLog" [toJSVal program]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getProgramParameter" [toJSVal program, toJSVal 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getProgramParameter" [toJSVal program, toJSVal pname]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getRenderbufferParameter" [toJSVal target, toJSVal 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getRenderbufferParameter" [toJSVal target, toJSVal pname]))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getShaderInfoLog" [toJSVal shader]) >>= fromMaybeJSString))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getShaderInfoLog" [toJSVal 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 (((((Types.toWebGLRenderingContextBase self) ^. jsf "getShaderInfoLog" [toJSVal shader]) >>= fromMaybeJSString) >>= 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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getShaderInfoLog" [toJSVal shader]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getShaderParameter" [toJSVal shader, toJSVal 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getShaderParameter" [toJSVal shader, toJSVal pname]))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getShaderPrecisionFormat" [toJSVal shadertype, toJSVal 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getShaderPrecisionFormat" [toJSVal shadertype, toJSVal 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 (((((Types.toWebGLRenderingContextBase self) ^. jsf "getShaderPrecisionFormat" [toJSVal shadertype, toJSVal 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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getShaderPrecisionFormat" [toJSVal shadertype, toJSVal precisiontype]) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getShaderSource" [toJSVal shader]) >>= fromMaybeJSString))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getShaderSource" [toJSVal 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 (((((Types.toWebGLRenderingContextBase self) ^. jsf "getShaderSource" [toJSVal shader]) >>= fromMaybeJSString) >>= 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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getShaderSource" [toJSVal shader]) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getSupportedExtensions" ()) >>= 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getSupportedExtensions" ()))
+
+-- | <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 (((((Types.toWebGLRenderingContextBase self) ^. jsf "getSupportedExtensions" ()) >>= 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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getSupportedExtensions" ()) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getTexParameter" [toJSVal target, toJSVal 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getTexParameter" [toJSVal target, toJSVal pname]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getUniform" [toJSVal program, toJSVal 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getUniform" [toJSVal program, toJSVal location]))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getUniformLocation" [toJSVal program, toJSVal 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getUniformLocation" [toJSVal program, toJSVal 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 (((((Types.toWebGLRenderingContextBase self) ^. jsf "getUniformLocation" [toJSVal program, toJSVal 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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getUniformLocation" [toJSVal program, toJSVal name]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getVertexAttrib" [toJSVal index, toJSVal 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getVertexAttrib" [toJSVal index, toJSVal pname]))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "getVertexAttribOffset" [toJSVal index, toJSVal 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 ((Types.toWebGLRenderingContextBase self) ^. jsf "getVertexAttribOffset" [toJSVal index, toJSVal pname]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "hint" [toJSVal target, toJSVal mode]))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "isBuffer" [toJSVal buffer]) >>= valToBool))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "isBuffer" [toJSVal buffer]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isContextLost MDN WebGLRenderingContextBase.isContextLost documentation>
+isContextLost :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m Bool
+isContextLost self = liftDOM ((((Types.toWebGLRenderingContextBase self) ^. jsf "isContextLost" ()) >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/isContextLost MDN WebGLRenderingContextBase.isContextLost documentation>
+isContextLost_ :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m ()
+isContextLost_ self = liftDOM (void ((Types.toWebGLRenderingContextBase self) ^. jsf "isContextLost" ()))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "isEnabled" [toJSVal cap]) >>= valToBool))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "isEnabled" [toJSVal cap]))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "isFramebuffer" [toJSVal framebuffer]) >>= valToBool))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "isFramebuffer" [toJSVal framebuffer]))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "isProgram" [toJSVal program]) >>= valToBool))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "isProgram" [toJSVal program]))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "isRenderbuffer" [toJSVal renderbuffer]) >>= valToBool))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "isRenderbuffer" [toJSVal renderbuffer]))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "isShader" [toJSVal shader]) >>= valToBool))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "isShader" [toJSVal shader]))
+
+-- | <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 ((((Types.toWebGLRenderingContextBase self) ^. jsf "isTexture" [toJSVal texture]) >>= valToBool))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "isTexture" [toJSVal texture]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "lineWidth" [toJSVal width]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "linkProgram" [toJSVal program]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "pixelStorei" [toJSVal pname, toJSVal param]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "polygonOffset" [toJSVal factor, toJSVal units]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "renderbufferStorage" [toJSVal target, toJSVal internalformat, toJSVal width, toJSVal height]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "sampleCoverage" [toJSVal value, toJSVal invert]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "scissor" [toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "shaderSource" [toJSVal shader, toJSVal source]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "stencilFunc" [toJSVal func, toJSVal ref, toJSVal mask]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "stencilFuncSeparate" [toJSVal face, toJSVal func, toJSVal ref, toJSVal mask]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "stencilMask" [toJSVal mask]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "stencilMaskSeparate" [toJSVal face, toJSVal mask]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "stencilOp" [toJSVal fail, toJSVal zfail, toJSVal zpass]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "stencilOpSeparate" [toJSVal face, toJSVal fail, toJSVal zfail, toJSVal zpass]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "texParameterf" [toJSVal target, toJSVal pname, toJSVal param]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "texParameteri" [toJSVal target, toJSVal pname, toJSVal param]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "uniform1f" [toJSVal location, toJSVal x]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "uniform1i" [toJSVal location, toJSVal x]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "uniform2f" [toJSVal location, toJSVal x, toJSVal y]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "uniform2i" [toJSVal location, toJSVal x, toJSVal y]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "uniform3f" [toJSVal location, toJSVal x, toJSVal y, toJSVal z]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "uniform3i" [toJSVal location, toJSVal x, toJSVal y, toJSVal z]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "uniform4f" [toJSVal location, toJSVal x, toJSVal y, toJSVal z, toJSVal w]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "uniform4i" [toJSVal location, toJSVal x, toJSVal y, toJSVal z, toJSVal w]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "useProgram" [toJSVal program]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "validateProgram" [toJSVal program]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "vertexAttrib1f" [toJSVal index, toJSVal x]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "vertexAttrib1fv" [toJSVal index, toJSVal values]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "vertexAttrib2f" [toJSVal index, toJSVal x, toJSVal y]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "vertexAttrib2fv" [toJSVal index, toJSVal values]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "vertexAttrib3f" [toJSVal index, toJSVal x, toJSVal y, toJSVal z]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "vertexAttrib3fv" [toJSVal index, toJSVal values]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "vertexAttrib4f" [toJSVal index, toJSVal x, toJSVal y, toJSVal z, toJSVal w]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "vertexAttrib4fv" [toJSVal index, toJSVal values]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "vertexAttribPointer" [toJSVal index, toJSVal size, toJSVal type', toJSVal normalized, toJSVal stride, toJSVal offset]))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jsf "viewport" [toJSVal x, toJSVal y, toJSVal width, toJSVal height]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/canvas MDN WebGLRenderingContextBase.canvas documentation>
+getCanvas :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m HTMLCanvasElementOrOffscreenCanvas
+getCanvas self = liftDOM ((((Types.toWebGLRenderingContextBase self) ^. js "canvas") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/drawingBufferWidth MDN WebGLRenderingContextBase.drawingBufferWidth documentation>
+getDrawingBufferWidth :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m Int
+getDrawingBufferWidth self = liftDOM ((P.round <$> (((Types.toWebGLRenderingContextBase self) ^. js "drawingBufferWidth") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLRenderingContext/drawingBufferHeight MDN WebGLRenderingContextBase.drawingBufferHeight documentation>
+getDrawingBufferHeight :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m Int
+getDrawingBufferHeight self = liftDOM ((P.round <$> (((Types.toWebGLRenderingContextBase self) ^. js "drawingBufferHeight") >>= valToNumber)))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jss "drawingBufferColorSpace" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/drawingBufferColorSpace MDN WebGLRenderingContextBase.drawingBufferColorSpace documentation>
+getDrawingBufferColorSpace :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m PredefinedColorSpace
+getDrawingBufferColorSpace self = liftDOM ((((Types.toWebGLRenderingContextBase self) ^. js "drawingBufferColorSpace") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toWebGLRenderingContextBase self) ^. jss "unpackColorSpace" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebGL2RenderingContext/unpackColorSpace MDN WebGLRenderingContextBase.unpackColorSpace documentation>
+getUnpackColorSpace :: (MonadDOM m, IsWebGLRenderingContextBase self) => self -> m PredefinedColorSpace
+getUnpackColorSpace self = liftDOM ((((Types.toWebGLRenderingContextBase self) ^. js "unpackColorSpace") >>= 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/JSDOM/Generated/WebGLRenderingContextOverloads.hs b/src/JSDOM/Generated/WebGLRenderingContextOverloads.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLRenderingContextOverloads.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module JSDOM.Generated.WebGLRenderingContextOverloads
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "bufferData" [toJSVal target, toJSVal size, toJSVal usage]))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "bufferData" [toJSVal target, toJSVal data', toJSVal usage]))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "bufferSubData" [toJSVal target, toJSVal offset, toJSVal data']))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "compressedTexImage2D" [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal width, toJSVal height, toJSVal border, toJSVal data']))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "compressedTexSubImage2D" [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset, toJSVal width, toJSVal height, toJSVal format, toJSVal data']))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "readPixels" [toJSVal x, toJSVal y, toJSVal width, toJSVal height, toJSVal format, toJSVal type', toJSVal pixels]))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "texImage2D" [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal width, toJSVal height, toJSVal border, toJSVal format, toJSVal type', toJSVal pixels]))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "texImage2D" [toJSVal target, toJSVal level, toJSVal internalformat, toJSVal format, toJSVal type', toJSVal source]))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "texSubImage2D" [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset, toJSVal width, toJSVal height, toJSVal format, toJSVal type', toJSVal pixels]))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "texSubImage2D" [toJSVal target, toJSVal level, toJSVal xoffset, toJSVal yoffset, toJSVal format, toJSVal type', toJSVal source]))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "uniform1fv" [toJSVal location, toJSVal v]))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "uniform1iv" [toJSVal location, toJSVal v]))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "uniform2fv" [toJSVal location, toJSVal v]))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "uniform2iv" [toJSVal location, toJSVal v]))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "uniform3fv" [toJSVal location, toJSVal v]))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "uniform3iv" [toJSVal location, toJSVal v]))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "uniform4fv" [toJSVal location, toJSVal v]))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "uniform4iv" [toJSVal location, toJSVal v]))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "uniformMatrix2fv" [toJSVal location, toJSVal transpose, toJSVal value]))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "uniformMatrix3fv" [toJSVal location, toJSVal transpose, toJSVal value]))
+
+-- | <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 ((Types.toWebGLRenderingContextOverloads self) ^. jsf "uniformMatrix4fv" [toJSVal location, toJSVal transpose, toJSVal value]))
diff --git a/src/JSDOM/Generated/WebGLSampler.hs b/src/JSDOM/Generated/WebGLSampler.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLSampler.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl2 (webref). Do not edit.
+module JSDOM.Generated.WebGLSampler
+       (WebGLSampler(..), gTypeWebGLSampler)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WebGLShader.hs b/src/JSDOM/Generated/WebGLShader.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLShader.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module JSDOM.Generated.WebGLShader
+       (WebGLShader(..), gTypeWebGLShader)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WebGLShaderPrecisionFormat.hs b/src/JSDOM/Generated/WebGLShaderPrecisionFormat.hs
--- a/src/JSDOM/Generated/WebGLShaderPrecisionFormat.hs
+++ b/src/JSDOM/Generated/WebGLShaderPrecisionFormat.hs
@@ -1,36 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
 module JSDOM.Generated.WebGLShaderPrecisionFormat
-       (getRangeMin, getRangeMax, getPrecision,
-        WebGLShaderPrecisionFormat(..), gTypeWebGLShaderPrecisionFormat)
+       (getRangeMin, getRangeMax, getPrecision, WebGLShaderPrecisionFormat(..), gTypeWebGLShaderPrecisionFormat)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat.rangeMin Mozilla WebGLShaderPrecisionFormat.rangeMin documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLShaderPrecisionFormat/rangeMin MDN WebGLShaderPrecisionFormat.rangeMin documentation>
 getRangeMin :: (MonadDOM m) => WebGLShaderPrecisionFormat -> m Int
-getRangeMin self
-  = liftDOM (round <$> ((self ^. js "rangeMin") >>= valToNumber))
+getRangeMin self = liftDOM ((P.round <$> ((self ^. js "rangeMin") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat.rangeMax Mozilla WebGLShaderPrecisionFormat.rangeMax documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLShaderPrecisionFormat/rangeMax MDN WebGLShaderPrecisionFormat.rangeMax documentation>
 getRangeMax :: (MonadDOM m) => WebGLShaderPrecisionFormat -> m Int
-getRangeMax self
-  = liftDOM (round <$> ((self ^. js "rangeMax") >>= valToNumber))
+getRangeMax self = liftDOM ((P.round <$> ((self ^. js "rangeMax") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat.precision Mozilla WebGLShaderPrecisionFormat.precision documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/WebGLShaderPrecisionFormat/precision MDN WebGLShaderPrecisionFormat.precision documentation>
 getPrecision :: (MonadDOM m) => WebGLShaderPrecisionFormat -> m Int
-getPrecision self
-  = liftDOM (round <$> ((self ^. js "precision") >>= valToNumber))
+getPrecision self = liftDOM ((P.round <$> ((self ^. js "precision") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/WebGLSync.hs b/src/JSDOM/Generated/WebGLSync.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLSync.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl2 (webref). Do not edit.
+module JSDOM.Generated.WebGLSync
+       (WebGLSync(..), gTypeWebGLSync)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WebGLTexture.hs b/src/JSDOM/Generated/WebGLTexture.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLTexture.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module JSDOM.Generated.WebGLTexture
+       (WebGLTexture(..), gTypeWebGLTexture)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WebGLTransformFeedback.hs b/src/JSDOM/Generated/WebGLTransformFeedback.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLTransformFeedback.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl2 (webref). Do not edit.
+module JSDOM.Generated.WebGLTransformFeedback
+       (WebGLTransformFeedback(..), gTypeWebGLTransformFeedback)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WebGLUniformLocation.hs b/src/JSDOM/Generated/WebGLUniformLocation.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLUniformLocation.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl1 (webref). Do not edit.
+module JSDOM.Generated.WebGLUniformLocation
+       (WebGLUniformLocation(..), gTypeWebGLUniformLocation)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WebGLVertexArrayObject.hs b/src/JSDOM/Generated/WebGLVertexArrayObject.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLVertexArrayObject.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webgl2 (webref). Do not edit.
+module JSDOM.Generated.WebGLVertexArrayObject
+       (WebGLVertexArrayObject(..), gTypeWebGLVertexArrayObject)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WebGLVertexArrayObjectOES.hs b/src/JSDOM/Generated/WebGLVertexArrayObjectOES.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebGLVertexArrayObjectOES.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from OES_vertex_array_object (webref). Do not edit.
+module JSDOM.Generated.WebGLVertexArrayObjectOES
+       (WebGLVertexArrayObjectOES(..), gTypeWebGLVertexArrayObjectOES)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WebGPUBuffer.hs b/src/JSDOM/Generated/WebGPUBuffer.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPUBuffer.hs
+++ /dev/null
@@ -1,29 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPUBuffer
-       (getLength, getContents, WebGPUBuffer(..), gTypeWebGPUBuffer) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUBuffer.length Mozilla WebGPUBuffer.length documentation> 
-getLength :: (MonadDOM m) => WebGPUBuffer -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUBuffer.contents Mozilla WebGPUBuffer.contents documentation> 
-getContents :: (MonadDOM m) => WebGPUBuffer -> m ArrayBufferView
-getContents self
-  = liftDOM ((self ^. js "contents") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/WebGPUCommandBuffer.hs b/src/JSDOM/Generated/WebGPUCommandBuffer.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPUCommandBuffer.hs
+++ /dev/null
@@ -1,77 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPUCommandBuffer
-       (createRenderCommandEncoderWithDescriptor,
-        createRenderCommandEncoderWithDescriptor_,
-        createComputeCommandEncoder, createComputeCommandEncoder_, commit,
-        presentDrawable, getCompleted, WebGPUCommandBuffer(..),
-        gTypeWebGPUCommandBuffer)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor Mozilla WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor documentation> 
-createRenderCommandEncoderWithDescriptor ::
-                                         (MonadDOM m) =>
-                                           WebGPUCommandBuffer ->
-                                             WebGPURenderPassDescriptor ->
-                                               m WebGPURenderCommandEncoder
-createRenderCommandEncoderWithDescriptor self descriptor
-  = liftDOM
-      ((self ^. jsf "createRenderCommandEncoderWithDescriptor"
-          [toJSVal descriptor])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor Mozilla WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor documentation> 
-createRenderCommandEncoderWithDescriptor_ ::
-                                          (MonadDOM m) =>
-                                            WebGPUCommandBuffer ->
-                                              WebGPURenderPassDescriptor -> m ()
-createRenderCommandEncoderWithDescriptor_ self descriptor
-  = liftDOM
-      (void
-         (self ^. jsf "createRenderCommandEncoderWithDescriptor"
-            [toJSVal descriptor]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.createComputeCommandEncoder Mozilla WebGPUCommandBuffer.createComputeCommandEncoder documentation> 
-createComputeCommandEncoder ::
-                            (MonadDOM m) =>
-                              WebGPUCommandBuffer -> m WebGPUComputeCommandEncoder
-createComputeCommandEncoder self
-  = liftDOM
-      ((self ^. jsf "createComputeCommandEncoder" ()) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.createComputeCommandEncoder Mozilla WebGPUCommandBuffer.createComputeCommandEncoder documentation> 
-createComputeCommandEncoder_ ::
-                             (MonadDOM m) => WebGPUCommandBuffer -> m ()
-createComputeCommandEncoder_ self
-  = liftDOM (void (self ^. jsf "createComputeCommandEncoder" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.commit Mozilla WebGPUCommandBuffer.commit documentation> 
-commit :: (MonadDOM m) => WebGPUCommandBuffer -> m ()
-commit self = liftDOM (void (self ^. jsf "commit" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.presentDrawable Mozilla WebGPUCommandBuffer.presentDrawable documentation> 
-presentDrawable ::
-                (MonadDOM m) => WebGPUCommandBuffer -> WebGPUDrawable -> m ()
-presentDrawable self drawable
-  = liftDOM (void (self ^. jsf "presentDrawable" [toJSVal drawable]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.completed Mozilla WebGPUCommandBuffer.completed documentation> 
-getCompleted :: (MonadDOM m) => WebGPUCommandBuffer -> m ()
-getCompleted self
-  = liftDOM (void ((self ^. js "completed") >>= readPromise))
diff --git a/src/JSDOM/Generated/WebGPUCommandQueue.hs b/src/JSDOM/Generated/WebGPUCommandQueue.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPUCommandQueue.hs
+++ /dev/null
@@ -1,60 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPUCommandQueue
-       (createCommandBuffer, createCommandBuffer_,
-        createCommandBufferUnsafe, createCommandBufferUnchecked, setLabel,
-        getLabel, WebGPUCommandQueue(..), gTypeWebGPUCommandQueue)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.createCommandBuffer Mozilla WebGPUCommandQueue.createCommandBuffer documentation> 
-createCommandBuffer ::
-                    (MonadDOM m) => WebGPUCommandQueue -> m (Maybe WebGPUCommandBuffer)
-createCommandBuffer self
-  = liftDOM ((self ^. jsf "createCommandBuffer" ()) >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.createCommandBuffer Mozilla WebGPUCommandQueue.createCommandBuffer documentation> 
-createCommandBuffer_ :: (MonadDOM m) => WebGPUCommandQueue -> m ()
-createCommandBuffer_ self
-  = liftDOM (void (self ^. jsf "createCommandBuffer" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.createCommandBuffer Mozilla WebGPUCommandQueue.createCommandBuffer documentation> 
-createCommandBufferUnsafe ::
-                          (MonadDOM m, HasCallStack) =>
-                            WebGPUCommandQueue -> m WebGPUCommandBuffer
-createCommandBufferUnsafe self
-  = liftDOM
-      (((self ^. jsf "createCommandBuffer" ()) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.createCommandBuffer Mozilla WebGPUCommandQueue.createCommandBuffer documentation> 
-createCommandBufferUnchecked ::
-                             (MonadDOM m) => WebGPUCommandQueue -> m WebGPUCommandBuffer
-createCommandBufferUnchecked self
-  = liftDOM
-      ((self ^. jsf "createCommandBuffer" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.label Mozilla WebGPUCommandQueue.label documentation> 
-setLabel ::
-         (MonadDOM m, ToJSString val) => WebGPUCommandQueue -> val -> m ()
-setLabel self val = liftDOM (self ^. jss "label" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.label Mozilla WebGPUCommandQueue.label documentation> 
-getLabel ::
-         (MonadDOM m, FromJSString result) => WebGPUCommandQueue -> m result
-getLabel self
-  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/WebGPUComputeCommandEncoder.hs b/src/JSDOM/Generated/WebGPUComputeCommandEncoder.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPUComputeCommandEncoder.hs
+++ /dev/null
@@ -1,54 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPUComputeCommandEncoder
-       (setComputePipelineState, setBuffer, dispatch, endEncoding,
-        WebGPUComputeCommandEncoder(..), gTypeWebGPUComputeCommandEncoder)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUComputeCommandEncoder.setComputePipelineState Mozilla WebGPUComputeCommandEncoder.setComputePipelineState documentation> 
-setComputePipelineState ::
-                        (MonadDOM m) =>
-                          WebGPUComputeCommandEncoder -> WebGPUComputePipelineState -> m ()
-setComputePipelineState self pipelineState
-  = liftDOM
-      (void
-         (self ^. jsf "setComputePipelineState" [toJSVal pipelineState]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUComputeCommandEncoder.setBuffer Mozilla WebGPUComputeCommandEncoder.setBuffer documentation> 
-setBuffer ::
-          (MonadDOM m) =>
-            WebGPUComputeCommandEncoder -> WebGPUBuffer -> Word -> Word -> m ()
-setBuffer self buffer offset index
-  = liftDOM
-      (void
-         (self ^. jsf "setBuffer"
-            [toJSVal buffer, toJSVal offset, toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUComputeCommandEncoder.dispatch Mozilla WebGPUComputeCommandEncoder.dispatch documentation> 
-dispatch ::
-         (MonadDOM m) =>
-           WebGPUComputeCommandEncoder -> WebGPUSize -> WebGPUSize -> m ()
-dispatch self threadgroupsPerGrid threadsPerThreadgroup
-  = liftDOM
-      (void
-         (self ^. jsf "dispatch"
-            [toJSVal threadgroupsPerGrid, toJSVal threadsPerThreadgroup]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUComputeCommandEncoder.endEncoding Mozilla WebGPUComputeCommandEncoder.endEncoding documentation> 
-endEncoding :: (MonadDOM m) => WebGPUComputeCommandEncoder -> m ()
-endEncoding self = liftDOM (void (self ^. jsf "endEncoding" ()))
diff --git a/src/JSDOM/Generated/WebGPUDepthStencilDescriptor.hs b/src/JSDOM/Generated/WebGPUDepthStencilDescriptor.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPUDepthStencilDescriptor.hs
+++ /dev/null
@@ -1,58 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPUDepthStencilDescriptor
-       (newWebGPUDepthStencilDescriptor, setDepthCompareFunction,
-        getDepthCompareFunction, setDepthWriteEnabled,
-        getDepthWriteEnabled, WebGPUDepthStencilDescriptor(..),
-        gTypeWebGPUDepthStencilDescriptor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilDescriptor Mozilla WebGPUDepthStencilDescriptor documentation> 
-newWebGPUDepthStencilDescriptor ::
-                                (MonadDOM m) => m WebGPUDepthStencilDescriptor
-newWebGPUDepthStencilDescriptor
-  = liftDOM
-      (WebGPUDepthStencilDescriptor <$>
-         new (jsg "WebGPUDepthStencilDescriptor") ())
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilDescriptor.depthCompareFunction Mozilla WebGPUDepthStencilDescriptor.depthCompareFunction documentation> 
-setDepthCompareFunction ::
-                        (MonadDOM m) =>
-                          WebGPUDepthStencilDescriptor -> WebGPUCompareFunction -> m ()
-setDepthCompareFunction self val
-  = liftDOM (self ^. jss "depthCompareFunction" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilDescriptor.depthCompareFunction Mozilla WebGPUDepthStencilDescriptor.depthCompareFunction documentation> 
-getDepthCompareFunction ::
-                        (MonadDOM m) =>
-                          WebGPUDepthStencilDescriptor -> m WebGPUCompareFunction
-getDepthCompareFunction self
-  = liftDOM
-      ((self ^. js "depthCompareFunction") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilDescriptor.depthWriteEnabled Mozilla WebGPUDepthStencilDescriptor.depthWriteEnabled documentation> 
-setDepthWriteEnabled ::
-                     (MonadDOM m) => WebGPUDepthStencilDescriptor -> Bool -> m ()
-setDepthWriteEnabled self val
-  = liftDOM (self ^. jss "depthWriteEnabled" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilDescriptor.depthWriteEnabled Mozilla WebGPUDepthStencilDescriptor.depthWriteEnabled documentation> 
-getDepthWriteEnabled ::
-                     (MonadDOM m) => WebGPUDepthStencilDescriptor -> m Bool
-getDepthWriteEnabled self
-  = liftDOM ((self ^. js "depthWriteEnabled") >>= valToBool)
diff --git a/src/JSDOM/Generated/WebGPUDepthStencilState.hs b/src/JSDOM/Generated/WebGPUDepthStencilState.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPUDepthStencilState.hs
+++ /dev/null
@@ -1,34 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPUDepthStencilState
-       (setLabel, getLabel, WebGPUDepthStencilState(..),
-        gTypeWebGPUDepthStencilState)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilState.label Mozilla WebGPUDepthStencilState.label documentation> 
-setLabel ::
-         (MonadDOM m, ToJSString val) =>
-           WebGPUDepthStencilState -> val -> m ()
-setLabel self val = liftDOM (self ^. jss "label" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilState.label Mozilla WebGPUDepthStencilState.label documentation> 
-getLabel ::
-         (MonadDOM m, FromJSString result) =>
-           WebGPUDepthStencilState -> m result
-getLabel self
-  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/WebGPUDrawable.hs b/src/JSDOM/Generated/WebGPUDrawable.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPUDrawable.hs
+++ /dev/null
@@ -1,24 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPUDrawable
-       (getTexture, WebGPUDrawable(..), gTypeWebGPUDrawable) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDrawable.texture Mozilla WebGPUDrawable.texture documentation> 
-getTexture :: (MonadDOM m) => WebGPUDrawable -> m WebGPUTexture
-getTexture self
-  = liftDOM ((self ^. js "texture") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/WebGPUFunction.hs b/src/JSDOM/Generated/WebGPUFunction.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPUFunction.hs
+++ /dev/null
@@ -1,24 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPUFunction
-       (getName, WebGPUFunction(..), gTypeWebGPUFunction) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUFunction.name Mozilla WebGPUFunction.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => WebGPUFunction -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/WebGPULibrary.hs b/src/JSDOM/Generated/WebGPULibrary.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPULibrary.hs
+++ /dev/null
@@ -1,77 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPULibrary
-       (functionWithName, functionWithName_, functionWithNameUnsafe,
-        functionWithNameUnchecked, getSourceCode, setLabel, getLabel,
-        getFunctionNames, WebGPULibrary(..), gTypeWebGPULibrary)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.functionWithName Mozilla WebGPULibrary.functionWithName documentation> 
-functionWithName ::
-                 (MonadDOM m, ToJSString name) =>
-                   WebGPULibrary -> name -> m (Maybe WebGPUFunction)
-functionWithName self name
-  = liftDOM
-      ((self ^. jsf "functionWithName" [toJSVal name]) >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.functionWithName Mozilla WebGPULibrary.functionWithName documentation> 
-functionWithName_ ::
-                  (MonadDOM m, ToJSString name) => WebGPULibrary -> name -> m ()
-functionWithName_ self name
-  = liftDOM (void (self ^. jsf "functionWithName" [toJSVal name]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.functionWithName Mozilla WebGPULibrary.functionWithName documentation> 
-functionWithNameUnsafe ::
-                       (MonadDOM m, ToJSString name, HasCallStack) =>
-                         WebGPULibrary -> name -> m WebGPUFunction
-functionWithNameUnsafe self name
-  = liftDOM
-      (((self ^. jsf "functionWithName" [toJSVal name]) >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.functionWithName Mozilla WebGPULibrary.functionWithName documentation> 
-functionWithNameUnchecked ::
-                          (MonadDOM m, ToJSString name) =>
-                            WebGPULibrary -> name -> m WebGPUFunction
-functionWithNameUnchecked self name
-  = liftDOM
-      ((self ^. jsf "functionWithName" [toJSVal name]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.sourceCode Mozilla WebGPULibrary.sourceCode documentation> 
-getSourceCode ::
-              (MonadDOM m, FromJSString result) => WebGPULibrary -> m result
-getSourceCode self
-  = liftDOM ((self ^. js "sourceCode") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.label Mozilla WebGPULibrary.label documentation> 
-setLabel ::
-         (MonadDOM m, ToJSString val) => WebGPULibrary -> val -> m ()
-setLabel self val = liftDOM (self ^. jss "label" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.label Mozilla WebGPULibrary.label documentation> 
-getLabel ::
-         (MonadDOM m, FromJSString result) => WebGPULibrary -> m result
-getLabel self
-  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.functionNames Mozilla WebGPULibrary.functionNames documentation> 
-getFunctionNames ::
-                 (MonadDOM m, FromJSString result) => WebGPULibrary -> m [result]
-getFunctionNames self
-  = liftDOM ((self ^. js "functionNames") >>= fromJSArrayUnchecked)
diff --git a/src/JSDOM/Generated/WebGPURenderCommandEncoder.hs b/src/JSDOM/Generated/WebGPURenderCommandEncoder.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPURenderCommandEncoder.hs
+++ /dev/null
@@ -1,74 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPURenderCommandEncoder
-       (setRenderPipelineState, setDepthStencilState, setVertexBuffer,
-        setFragmentBuffer, drawPrimitives, endEncoding,
-        WebGPURenderCommandEncoder(..), gTypeWebGPURenderCommandEncoder)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.setRenderPipelineState Mozilla WebGPURenderCommandEncoder.setRenderPipelineState documentation> 
-setRenderPipelineState ::
-                       (MonadDOM m) =>
-                         WebGPURenderCommandEncoder -> WebGPURenderPipelineState -> m ()
-setRenderPipelineState self pipelineState
-  = liftDOM
-      (void
-         (self ^. jsf "setRenderPipelineState" [toJSVal pipelineState]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.setDepthStencilState Mozilla WebGPURenderCommandEncoder.setDepthStencilState documentation> 
-setDepthStencilState ::
-                     (MonadDOM m) =>
-                       WebGPURenderCommandEncoder -> WebGPUDepthStencilState -> m ()
-setDepthStencilState self depthStencilState
-  = liftDOM
-      (void
-         (self ^. jsf "setDepthStencilState" [toJSVal depthStencilState]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.setVertexBuffer Mozilla WebGPURenderCommandEncoder.setVertexBuffer documentation> 
-setVertexBuffer ::
-                (MonadDOM m) =>
-                  WebGPURenderCommandEncoder -> WebGPUBuffer -> Word -> Word -> m ()
-setVertexBuffer self buffer offset index
-  = liftDOM
-      (void
-         (self ^. jsf "setVertexBuffer"
-            [toJSVal buffer, toJSVal offset, toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.setFragmentBuffer Mozilla WebGPURenderCommandEncoder.setFragmentBuffer documentation> 
-setFragmentBuffer ::
-                  (MonadDOM m) =>
-                    WebGPURenderCommandEncoder -> WebGPUBuffer -> Word -> Word -> m ()
-setFragmentBuffer self buffer offset index
-  = liftDOM
-      (void
-         (self ^. jsf "setFragmentBuffer"
-            [toJSVal buffer, toJSVal offset, toJSVal index]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.drawPrimitives Mozilla WebGPURenderCommandEncoder.drawPrimitives documentation> 
-drawPrimitives ::
-               (MonadDOM m) =>
-                 WebGPURenderCommandEncoder -> Word -> Word -> Word -> m ()
-drawPrimitives self type' start count
-  = liftDOM
-      (void
-         (self ^. jsf "drawPrimitives"
-            [toJSVal type', toJSVal start, toJSVal count]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.endEncoding Mozilla WebGPURenderCommandEncoder.endEncoding documentation> 
-endEncoding :: (MonadDOM m) => WebGPURenderCommandEncoder -> m ()
-endEncoding self = liftDOM (void (self ^. jsf "endEncoding" ()))
diff --git a/src/JSDOM/Generated/WebGPURenderPassAttachmentDescriptor.hs b/src/JSDOM/Generated/WebGPURenderPassAttachmentDescriptor.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPURenderPassAttachmentDescriptor.hs
+++ /dev/null
@@ -1,102 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPURenderPassAttachmentDescriptor
-       (setTexture, getTexture, getTextureUnsafe, getTextureUnchecked,
-        setLoadAction, getLoadAction, setStoreAction, getStoreAction,
-        WebGPURenderPassAttachmentDescriptor(..),
-        gTypeWebGPURenderPassAttachmentDescriptor,
-        IsWebGPURenderPassAttachmentDescriptor,
-        toWebGPURenderPassAttachmentDescriptor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.texture Mozilla WebGPURenderPassAttachmentDescriptor.texture documentation> 
-setTexture ::
-           (MonadDOM m, IsWebGPURenderPassAttachmentDescriptor self) =>
-             self -> Maybe WebGPUTexture -> m ()
-setTexture self val
-  = liftDOM
-      ((toWebGPURenderPassAttachmentDescriptor self) ^. jss "texture"
-         (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.texture Mozilla WebGPURenderPassAttachmentDescriptor.texture documentation> 
-getTexture ::
-           (MonadDOM m, IsWebGPURenderPassAttachmentDescriptor self) =>
-             self -> m (Maybe WebGPUTexture)
-getTexture self
-  = liftDOM
-      (((toWebGPURenderPassAttachmentDescriptor self) ^. js "texture")
-         >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.texture Mozilla WebGPURenderPassAttachmentDescriptor.texture documentation> 
-getTextureUnsafe ::
-                 (MonadDOM m, IsWebGPURenderPassAttachmentDescriptor self,
-                  HasCallStack) =>
-                   self -> m WebGPUTexture
-getTextureUnsafe self
-  = liftDOM
-      ((((toWebGPURenderPassAttachmentDescriptor self) ^. js "texture")
-          >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.texture Mozilla WebGPURenderPassAttachmentDescriptor.texture documentation> 
-getTextureUnchecked ::
-                    (MonadDOM m, IsWebGPURenderPassAttachmentDescriptor self) =>
-                      self -> m WebGPUTexture
-getTextureUnchecked self
-  = liftDOM
-      (((toWebGPURenderPassAttachmentDescriptor self) ^. js "texture")
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.loadAction Mozilla WebGPURenderPassAttachmentDescriptor.loadAction documentation> 
-setLoadAction ::
-              (MonadDOM m, IsWebGPURenderPassAttachmentDescriptor self) =>
-                self -> Word -> m ()
-setLoadAction self val
-  = liftDOM
-      ((toWebGPURenderPassAttachmentDescriptor self) ^. jss "loadAction"
-         (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.loadAction Mozilla WebGPURenderPassAttachmentDescriptor.loadAction documentation> 
-getLoadAction ::
-              (MonadDOM m, IsWebGPURenderPassAttachmentDescriptor self) =>
-                self -> m Word
-getLoadAction self
-  = liftDOM
-      (round <$>
-         (((toWebGPURenderPassAttachmentDescriptor self) ^. js "loadAction")
-            >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.storeAction Mozilla WebGPURenderPassAttachmentDescriptor.storeAction documentation> 
-setStoreAction ::
-               (MonadDOM m, IsWebGPURenderPassAttachmentDescriptor self) =>
-                 self -> Word -> m ()
-setStoreAction self val
-  = liftDOM
-      ((toWebGPURenderPassAttachmentDescriptor self) ^. jss "storeAction"
-         (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.storeAction Mozilla WebGPURenderPassAttachmentDescriptor.storeAction documentation> 
-getStoreAction ::
-               (MonadDOM m, IsWebGPURenderPassAttachmentDescriptor self) =>
-                 self -> m Word
-getStoreAction self
-  = liftDOM
-      (round <$>
-         (((toWebGPURenderPassAttachmentDescriptor self) ^.
-             js "storeAction")
-            >>= valToNumber))
diff --git a/src/JSDOM/Generated/WebGPURenderPassColorAttachmentDescriptor.hs b/src/JSDOM/Generated/WebGPURenderPassColorAttachmentDescriptor.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPURenderPassColorAttachmentDescriptor.hs
+++ /dev/null
@@ -1,36 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPURenderPassColorAttachmentDescriptor
-       (setClearColor, getClearColor,
-        WebGPURenderPassColorAttachmentDescriptor(..),
-        gTypeWebGPURenderPassColorAttachmentDescriptor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassColorAttachmentDescriptor.clearColor Mozilla WebGPURenderPassColorAttachmentDescriptor.clearColor documentation> 
-setClearColor ::
-              (MonadDOM m) =>
-                WebGPURenderPassColorAttachmentDescriptor -> [Float] -> m ()
-setClearColor self val
-  = liftDOM (self ^. jss "clearColor" (toJSVal (array val)))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassColorAttachmentDescriptor.clearColor Mozilla WebGPURenderPassColorAttachmentDescriptor.clearColor documentation> 
-getClearColor ::
-              (MonadDOM m) =>
-                WebGPURenderPassColorAttachmentDescriptor -> m [Float]
-getClearColor self
-  = liftDOM ((self ^. js "clearColor") >>= fromJSArrayUnchecked)
diff --git a/src/JSDOM/Generated/WebGPURenderPassDepthAttachmentDescriptor.hs b/src/JSDOM/Generated/WebGPURenderPassDepthAttachmentDescriptor.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPURenderPassDepthAttachmentDescriptor.hs
+++ /dev/null
@@ -1,36 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPURenderPassDepthAttachmentDescriptor
-       (setClearDepth, getClearDepth,
-        WebGPURenderPassDepthAttachmentDescriptor(..),
-        gTypeWebGPURenderPassDepthAttachmentDescriptor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDepthAttachmentDescriptor.clearDepth Mozilla WebGPURenderPassDepthAttachmentDescriptor.clearDepth documentation> 
-setClearDepth ::
-              (MonadDOM m) =>
-                WebGPURenderPassDepthAttachmentDescriptor -> Double -> m ()
-setClearDepth self val
-  = liftDOM (self ^. jss "clearDepth" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDepthAttachmentDescriptor.clearDepth Mozilla WebGPURenderPassDepthAttachmentDescriptor.clearDepth documentation> 
-getClearDepth ::
-              (MonadDOM m) =>
-                WebGPURenderPassDepthAttachmentDescriptor -> m Double
-getClearDepth self
-  = liftDOM ((self ^. js "clearDepth") >>= valToNumber)
diff --git a/src/JSDOM/Generated/WebGPURenderPassDescriptor.hs b/src/JSDOM/Generated/WebGPURenderPassDescriptor.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPURenderPassDescriptor.hs
+++ /dev/null
@@ -1,47 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPURenderPassDescriptor
-       (newWebGPURenderPassDescriptor, getColorAttachments,
-        getDepthAttachment, WebGPURenderPassDescriptor(..),
-        gTypeWebGPURenderPassDescriptor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDescriptor Mozilla WebGPURenderPassDescriptor documentation> 
-newWebGPURenderPassDescriptor ::
-                              (MonadDOM m) => m WebGPURenderPassDescriptor
-newWebGPURenderPassDescriptor
-  = liftDOM
-      (WebGPURenderPassDescriptor <$>
-         new (jsg "WebGPURenderPassDescriptor") ())
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDescriptor.colorAttachments Mozilla WebGPURenderPassDescriptor.colorAttachments documentation> 
-getColorAttachments ::
-                    (MonadDOM m) =>
-                      WebGPURenderPassDescriptor ->
-                        m [WebGPURenderPassColorAttachmentDescriptor]
-getColorAttachments self
-  = liftDOM
-      ((self ^. js "colorAttachments") >>= fromJSArrayUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDescriptor.depthAttachment Mozilla WebGPURenderPassDescriptor.depthAttachment documentation> 
-getDepthAttachment ::
-                   (MonadDOM m) =>
-                     WebGPURenderPassDescriptor ->
-                       m WebGPURenderPassDepthAttachmentDescriptor
-getDepthAttachment self
-  = liftDOM ((self ^. js "depthAttachment") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/WebGPURenderPipelineColorAttachmentDescriptor.hs b/src/JSDOM/Generated/WebGPURenderPipelineColorAttachmentDescriptor.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPURenderPipelineColorAttachmentDescriptor.hs
+++ /dev/null
@@ -1,36 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPURenderPipelineColorAttachmentDescriptor
-       (setPixelFormat, getPixelFormat,
-        WebGPURenderPipelineColorAttachmentDescriptor(..),
-        gTypeWebGPURenderPipelineColorAttachmentDescriptor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineColorAttachmentDescriptor.pixelFormat Mozilla WebGPURenderPipelineColorAttachmentDescriptor.pixelFormat documentation> 
-setPixelFormat ::
-               (MonadDOM m) =>
-                 WebGPURenderPipelineColorAttachmentDescriptor -> Word -> m ()
-setPixelFormat self val
-  = liftDOM (self ^. jss "pixelFormat" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineColorAttachmentDescriptor.pixelFormat Mozilla WebGPURenderPipelineColorAttachmentDescriptor.pixelFormat documentation> 
-getPixelFormat ::
-               (MonadDOM m) =>
-                 WebGPURenderPipelineColorAttachmentDescriptor -> m Word
-getPixelFormat self
-  = liftDOM (round <$> ((self ^. js "pixelFormat") >>= valToNumber))
diff --git a/src/JSDOM/Generated/WebGPURenderPipelineDescriptor.hs b/src/JSDOM/Generated/WebGPURenderPipelineDescriptor.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPURenderPipelineDescriptor.hs
+++ /dev/null
@@ -1,120 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPURenderPipelineDescriptor
-       (newWebGPURenderPipelineDescriptor, reset, setVertexFunction,
-        getVertexFunction, getVertexFunctionUnsafe,
-        getVertexFunctionUnchecked, setFragmentFunction,
-        getFragmentFunction, getFragmentFunctionUnsafe,
-        getFragmentFunctionUnchecked, getColorAttachments,
-        setDepthAttachmentPixelFormat, getDepthAttachmentPixelFormat,
-        WebGPURenderPipelineDescriptor(..),
-        gTypeWebGPURenderPipelineDescriptor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor Mozilla WebGPURenderPipelineDescriptor documentation> 
-newWebGPURenderPipelineDescriptor ::
-                                  (MonadDOM m) => m WebGPURenderPipelineDescriptor
-newWebGPURenderPipelineDescriptor
-  = liftDOM
-      (WebGPURenderPipelineDescriptor <$>
-         new (jsg "WebGPURenderPipelineDescriptor") ())
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.reset Mozilla WebGPURenderPipelineDescriptor.reset documentation> 
-reset :: (MonadDOM m) => WebGPURenderPipelineDescriptor -> m ()
-reset self = liftDOM (void (self ^. jsf "reset" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.vertexFunction Mozilla WebGPURenderPipelineDescriptor.vertexFunction documentation> 
-setVertexFunction ::
-                  (MonadDOM m) =>
-                    WebGPURenderPipelineDescriptor -> Maybe WebGPUFunction -> m ()
-setVertexFunction self val
-  = liftDOM (self ^. jss "vertexFunction" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.vertexFunction Mozilla WebGPURenderPipelineDescriptor.vertexFunction documentation> 
-getVertexFunction ::
-                  (MonadDOM m) =>
-                    WebGPURenderPipelineDescriptor -> m (Maybe WebGPUFunction)
-getVertexFunction self
-  = liftDOM ((self ^. js "vertexFunction") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.vertexFunction Mozilla WebGPURenderPipelineDescriptor.vertexFunction documentation> 
-getVertexFunctionUnsafe ::
-                        (MonadDOM m, HasCallStack) =>
-                          WebGPURenderPipelineDescriptor -> m WebGPUFunction
-getVertexFunctionUnsafe self
-  = liftDOM
-      (((self ^. js "vertexFunction") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.vertexFunction Mozilla WebGPURenderPipelineDescriptor.vertexFunction documentation> 
-getVertexFunctionUnchecked ::
-                           (MonadDOM m) => WebGPURenderPipelineDescriptor -> m WebGPUFunction
-getVertexFunctionUnchecked self
-  = liftDOM ((self ^. js "vertexFunction") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.fragmentFunction Mozilla WebGPURenderPipelineDescriptor.fragmentFunction documentation> 
-setFragmentFunction ::
-                    (MonadDOM m) =>
-                      WebGPURenderPipelineDescriptor -> Maybe WebGPUFunction -> m ()
-setFragmentFunction self val
-  = liftDOM (self ^. jss "fragmentFunction" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.fragmentFunction Mozilla WebGPURenderPipelineDescriptor.fragmentFunction documentation> 
-getFragmentFunction ::
-                    (MonadDOM m) =>
-                      WebGPURenderPipelineDescriptor -> m (Maybe WebGPUFunction)
-getFragmentFunction self
-  = liftDOM ((self ^. js "fragmentFunction") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.fragmentFunction Mozilla WebGPURenderPipelineDescriptor.fragmentFunction documentation> 
-getFragmentFunctionUnsafe ::
-                          (MonadDOM m, HasCallStack) =>
-                            WebGPURenderPipelineDescriptor -> m WebGPUFunction
-getFragmentFunctionUnsafe self
-  = liftDOM
-      (((self ^. js "fragmentFunction") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.fragmentFunction Mozilla WebGPURenderPipelineDescriptor.fragmentFunction documentation> 
-getFragmentFunctionUnchecked ::
-                             (MonadDOM m) => WebGPURenderPipelineDescriptor -> m WebGPUFunction
-getFragmentFunctionUnchecked self
-  = liftDOM ((self ^. js "fragmentFunction") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.colorAttachments Mozilla WebGPURenderPipelineDescriptor.colorAttachments documentation> 
-getColorAttachments ::
-                    (MonadDOM m) =>
-                      WebGPURenderPipelineDescriptor ->
-                        m [WebGPURenderPipelineColorAttachmentDescriptor]
-getColorAttachments self
-  = liftDOM
-      ((self ^. js "colorAttachments") >>= fromJSArrayUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.depthAttachmentPixelFormat Mozilla WebGPURenderPipelineDescriptor.depthAttachmentPixelFormat documentation> 
-setDepthAttachmentPixelFormat ::
-                              (MonadDOM m) => WebGPURenderPipelineDescriptor -> Word -> m ()
-setDepthAttachmentPixelFormat self val
-  = liftDOM (self ^. jss "depthAttachmentPixelFormat" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.depthAttachmentPixelFormat Mozilla WebGPURenderPipelineDescriptor.depthAttachmentPixelFormat documentation> 
-getDepthAttachmentPixelFormat ::
-                              (MonadDOM m) => WebGPURenderPipelineDescriptor -> m Word
-getDepthAttachmentPixelFormat self
-  = liftDOM
-      (round <$>
-         ((self ^. js "depthAttachmentPixelFormat") >>= valToNumber))
diff --git a/src/JSDOM/Generated/WebGPURenderPipelineState.hs b/src/JSDOM/Generated/WebGPURenderPipelineState.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPURenderPipelineState.hs
+++ /dev/null
@@ -1,34 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPURenderPipelineState
-       (setLabel, getLabel, WebGPURenderPipelineState(..),
-        gTypeWebGPURenderPipelineState)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineState.label Mozilla WebGPURenderPipelineState.label documentation> 
-setLabel ::
-         (MonadDOM m, ToJSString val) =>
-           WebGPURenderPipelineState -> val -> m ()
-setLabel self val = liftDOM (self ^. jss "label" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineState.label Mozilla WebGPURenderPipelineState.label documentation> 
-getLabel ::
-         (MonadDOM m, FromJSString result) =>
-           WebGPURenderPipelineState -> m result
-getLabel self
-  = liftDOM ((self ^. js "label") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/WebGPURenderingContext.hs b/src/JSDOM/Generated/WebGPURenderingContext.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPURenderingContext.hs
+++ /dev/null
@@ -1,350 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPURenderingContext
-       (createLibrary, createLibrary_, createRenderPipelineState,
-        createRenderPipelineState_, createRenderPipelineStateUnsafe,
-        createRenderPipelineStateUnchecked, createDepthStencilState,
-        createDepthStencilState_, createDepthStencilStateUnsafe,
-        createDepthStencilStateUnchecked, createComputePipelineState,
-        createComputePipelineState_, createComputePipelineStateUnsafe,
-        createComputePipelineStateUnchecked, createCommandQueue,
-        createCommandQueue_, createCommandQueueUnsafe,
-        createCommandQueueUnchecked, nextDrawable, nextDrawable_,
-        nextDrawableUnsafe, nextDrawableUnchecked, createBuffer,
-        createBuffer_, createBufferUnsafe, createBufferUnchecked,
-        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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createLibrary Mozilla WebGPURenderingContext.createLibrary documentation> 
-createLibrary ::
-              (MonadDOM m, ToJSString sourceCode) =>
-                WebGPURenderingContext -> sourceCode -> m WebGPULibrary
-createLibrary self sourceCode
-  = liftDOM
-      ((self ^. jsf "createLibrary" [toJSVal sourceCode]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createLibrary Mozilla WebGPURenderingContext.createLibrary documentation> 
-createLibrary_ ::
-               (MonadDOM m, ToJSString sourceCode) =>
-                 WebGPURenderingContext -> sourceCode -> m ()
-createLibrary_ self sourceCode
-  = liftDOM (void (self ^. jsf "createLibrary" [toJSVal sourceCode]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createRenderPipelineState Mozilla WebGPURenderingContext.createRenderPipelineState documentation> 
-createRenderPipelineState ::
-                          (MonadDOM m) =>
-                            WebGPURenderingContext ->
-                              WebGPURenderPipelineDescriptor ->
-                                m (Maybe WebGPURenderPipelineState)
-createRenderPipelineState self descriptor
-  = liftDOM
-      ((self ^. jsf "createRenderPipelineState" [toJSVal descriptor]) >>=
-         fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createRenderPipelineState Mozilla WebGPURenderingContext.createRenderPipelineState documentation> 
-createRenderPipelineState_ ::
-                           (MonadDOM m) =>
-                             WebGPURenderingContext -> WebGPURenderPipelineDescriptor -> m ()
-createRenderPipelineState_ self descriptor
-  = liftDOM
-      (void
-         (self ^. jsf "createRenderPipelineState" [toJSVal descriptor]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createRenderPipelineState Mozilla WebGPURenderingContext.createRenderPipelineState documentation> 
-createRenderPipelineStateUnsafe ::
-                                (MonadDOM m, HasCallStack) =>
-                                  WebGPURenderingContext ->
-                                    WebGPURenderPipelineDescriptor -> m WebGPURenderPipelineState
-createRenderPipelineStateUnsafe self descriptor
-  = liftDOM
-      (((self ^. jsf "createRenderPipelineState" [toJSVal descriptor])
-          >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createRenderPipelineState Mozilla WebGPURenderingContext.createRenderPipelineState documentation> 
-createRenderPipelineStateUnchecked ::
-                                   (MonadDOM m) =>
-                                     WebGPURenderingContext ->
-                                       WebGPURenderPipelineDescriptor -> m WebGPURenderPipelineState
-createRenderPipelineStateUnchecked self descriptor
-  = liftDOM
-      ((self ^. jsf "createRenderPipelineState" [toJSVal descriptor]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createDepthStencilState Mozilla WebGPURenderingContext.createDepthStencilState documentation> 
-createDepthStencilState ::
-                        (MonadDOM m) =>
-                          WebGPURenderingContext ->
-                            WebGPUDepthStencilDescriptor -> m (Maybe WebGPUDepthStencilState)
-createDepthStencilState self descriptor
-  = liftDOM
-      ((self ^. jsf "createDepthStencilState" [toJSVal descriptor]) >>=
-         fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createDepthStencilState Mozilla WebGPURenderingContext.createDepthStencilState documentation> 
-createDepthStencilState_ ::
-                         (MonadDOM m) =>
-                           WebGPURenderingContext -> WebGPUDepthStencilDescriptor -> m ()
-createDepthStencilState_ self descriptor
-  = liftDOM
-      (void (self ^. jsf "createDepthStencilState" [toJSVal descriptor]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createDepthStencilState Mozilla WebGPURenderingContext.createDepthStencilState documentation> 
-createDepthStencilStateUnsafe ::
-                              (MonadDOM m, HasCallStack) =>
-                                WebGPURenderingContext ->
-                                  WebGPUDepthStencilDescriptor -> m WebGPUDepthStencilState
-createDepthStencilStateUnsafe self descriptor
-  = liftDOM
-      (((self ^. jsf "createDepthStencilState" [toJSVal descriptor]) >>=
-          fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createDepthStencilState Mozilla WebGPURenderingContext.createDepthStencilState documentation> 
-createDepthStencilStateUnchecked ::
-                                 (MonadDOM m) =>
-                                   WebGPURenderingContext ->
-                                     WebGPUDepthStencilDescriptor -> m WebGPUDepthStencilState
-createDepthStencilStateUnchecked self descriptor
-  = liftDOM
-      ((self ^. jsf "createDepthStencilState" [toJSVal descriptor]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createComputePipelineState Mozilla WebGPURenderingContext.createComputePipelineState documentation> 
-createComputePipelineState ::
-                           (MonadDOM m) =>
-                             WebGPURenderingContext ->
-                               WebGPUFunction -> m (Maybe WebGPUComputePipelineState)
-createComputePipelineState self function
-  = liftDOM
-      ((self ^. jsf "createComputePipelineState" [toJSVal function]) >>=
-         fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createComputePipelineState Mozilla WebGPURenderingContext.createComputePipelineState documentation> 
-createComputePipelineState_ ::
-                            (MonadDOM m) => WebGPURenderingContext -> WebGPUFunction -> m ()
-createComputePipelineState_ self function
-  = liftDOM
-      (void
-         (self ^. jsf "createComputePipelineState" [toJSVal function]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createComputePipelineState Mozilla WebGPURenderingContext.createComputePipelineState documentation> 
-createComputePipelineStateUnsafe ::
-                                 (MonadDOM m, HasCallStack) =>
-                                   WebGPURenderingContext ->
-                                     WebGPUFunction -> m WebGPUComputePipelineState
-createComputePipelineStateUnsafe self function
-  = liftDOM
-      (((self ^. jsf "createComputePipelineState" [toJSVal function]) >>=
-          fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createComputePipelineState Mozilla WebGPURenderingContext.createComputePipelineState documentation> 
-createComputePipelineStateUnchecked ::
-                                    (MonadDOM m) =>
-                                      WebGPURenderingContext ->
-                                        WebGPUFunction -> m WebGPUComputePipelineState
-createComputePipelineStateUnchecked self function
-  = liftDOM
-      ((self ^. jsf "createComputePipelineState" [toJSVal function]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createCommandQueue Mozilla WebGPURenderingContext.createCommandQueue documentation> 
-createCommandQueue ::
-                   (MonadDOM m) =>
-                     WebGPURenderingContext -> m (Maybe WebGPUCommandQueue)
-createCommandQueue self
-  = liftDOM ((self ^. jsf "createCommandQueue" ()) >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createCommandQueue Mozilla WebGPURenderingContext.createCommandQueue documentation> 
-createCommandQueue_ ::
-                    (MonadDOM m) => WebGPURenderingContext -> m ()
-createCommandQueue_ self
-  = liftDOM (void (self ^. jsf "createCommandQueue" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createCommandQueue Mozilla WebGPURenderingContext.createCommandQueue documentation> 
-createCommandQueueUnsafe ::
-                         (MonadDOM m, HasCallStack) =>
-                           WebGPURenderingContext -> m WebGPUCommandQueue
-createCommandQueueUnsafe self
-  = liftDOM
-      (((self ^. jsf "createCommandQueue" ()) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createCommandQueue Mozilla WebGPURenderingContext.createCommandQueue documentation> 
-createCommandQueueUnchecked ::
-                            (MonadDOM m) => WebGPURenderingContext -> m WebGPUCommandQueue
-createCommandQueueUnchecked self
-  = liftDOM
-      ((self ^. jsf "createCommandQueue" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.nextDrawable Mozilla WebGPURenderingContext.nextDrawable documentation> 
-nextDrawable ::
-             (MonadDOM m) => WebGPURenderingContext -> m (Maybe WebGPUDrawable)
-nextDrawable self
-  = liftDOM ((self ^. jsf "nextDrawable" ()) >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.nextDrawable Mozilla WebGPURenderingContext.nextDrawable documentation> 
-nextDrawable_ :: (MonadDOM m) => WebGPURenderingContext -> m ()
-nextDrawable_ self = liftDOM (void (self ^. jsf "nextDrawable" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.nextDrawable Mozilla WebGPURenderingContext.nextDrawable documentation> 
-nextDrawableUnsafe ::
-                   (MonadDOM m, HasCallStack) =>
-                     WebGPURenderingContext -> m WebGPUDrawable
-nextDrawableUnsafe self
-  = liftDOM
-      (((self ^. jsf "nextDrawable" ()) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.nextDrawable Mozilla WebGPURenderingContext.nextDrawable documentation> 
-nextDrawableUnchecked ::
-                      (MonadDOM m) => WebGPURenderingContext -> m WebGPUDrawable
-nextDrawableUnchecked self
-  = liftDOM ((self ^. jsf "nextDrawable" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createBuffer Mozilla WebGPURenderingContext.createBuffer documentation> 
-createBuffer ::
-             (MonadDOM m, IsArrayBufferView data') =>
-               WebGPURenderingContext -> data' -> m (Maybe WebGPUBuffer)
-createBuffer self data'
-  = liftDOM
-      ((self ^. jsf "createBuffer" [toJSVal data']) >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createBuffer Mozilla WebGPURenderingContext.createBuffer documentation> 
-createBuffer_ ::
-              (MonadDOM m, IsArrayBufferView data') =>
-                WebGPURenderingContext -> data' -> m ()
-createBuffer_ self data'
-  = liftDOM (void (self ^. jsf "createBuffer" [toJSVal data']))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createBuffer Mozilla WebGPURenderingContext.createBuffer documentation> 
-createBufferUnsafe ::
-                   (MonadDOM m, IsArrayBufferView data', HasCallStack) =>
-                     WebGPURenderingContext -> data' -> m WebGPUBuffer
-createBufferUnsafe self data'
-  = liftDOM
-      (((self ^. jsf "createBuffer" [toJSVal data']) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createBuffer Mozilla WebGPURenderingContext.createBuffer documentation> 
-createBufferUnchecked ::
-                      (MonadDOM m, IsArrayBufferView data') =>
-                        WebGPURenderingContext -> data' -> m WebGPUBuffer
-createBufferUnchecked self data'
-  = liftDOM
-      ((self ^. jsf "createBuffer" [toJSVal data']) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createTexture Mozilla WebGPURenderingContext.createTexture documentation> 
-createTexture ::
-              (MonadDOM m) =>
-                WebGPURenderingContext ->
-                  WebGPUTextureDescriptor -> m (Maybe WebGPUTexture)
-createTexture self descriptor
-  = liftDOM
-      ((self ^. jsf "createTexture" [toJSVal descriptor]) >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createTexture Mozilla WebGPURenderingContext.createTexture documentation> 
-createTexture_ ::
-               (MonadDOM m) =>
-                 WebGPURenderingContext -> WebGPUTextureDescriptor -> m ()
-createTexture_ self descriptor
-  = liftDOM (void (self ^. jsf "createTexture" [toJSVal descriptor]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createTexture Mozilla WebGPURenderingContext.createTexture documentation> 
-createTextureUnsafe ::
-                    (MonadDOM m, HasCallStack) =>
-                      WebGPURenderingContext ->
-                        WebGPUTextureDescriptor -> m WebGPUTexture
-createTextureUnsafe self descriptor
-  = liftDOM
-      (((self ^. jsf "createTexture" [toJSVal descriptor]) >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createTexture Mozilla WebGPURenderingContext.createTexture documentation> 
-createTextureUnchecked ::
-                       (MonadDOM m) =>
-                         WebGPURenderingContext ->
-                           WebGPUTextureDescriptor -> m WebGPUTexture
-createTextureUnchecked self descriptor
-  = liftDOM
-      ((self ^. jsf "createTexture" [toJSVal descriptor]) >>=
-         fromJSValUnchecked)
-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/JSDOM/Generated/WebGPUTexture.hs b/src/JSDOM/Generated/WebGPUTexture.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPUTexture.hs
+++ /dev/null
@@ -1,29 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPUTexture
-       (getWidth, getHeight, WebGPUTexture(..), gTypeWebGPUTexture) where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTexture.width Mozilla WebGPUTexture.width documentation> 
-getWidth :: (MonadDOM m) => WebGPUTexture -> m Word
-getWidth self
-  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTexture.height Mozilla WebGPUTexture.height documentation> 
-getHeight :: (MonadDOM m) => WebGPUTexture -> m Word
-getHeight self
-  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
diff --git a/src/JSDOM/Generated/WebGPUTextureDescriptor.hs b/src/JSDOM/Generated/WebGPUTextureDescriptor.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebGPUTextureDescriptor.hs
+++ /dev/null
@@ -1,95 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebGPUTextureDescriptor
-       (newWebGPUTextureDescriptor, setTextureType, getTextureType,
-        setWidth, getWidth, setHeight, getHeight, setSampleCount,
-        getSampleCount, setStorageMode, getStorageMode, setUsage, getUsage,
-        WebGPUTextureDescriptor(..), gTypeWebGPUTextureDescriptor)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor Mozilla WebGPUTextureDescriptor documentation> 
-newWebGPUTextureDescriptor ::
-                           (MonadDOM m) =>
-                             Word -> Word -> Word -> Bool -> m WebGPUTextureDescriptor
-newWebGPUTextureDescriptor pixelFormat width height mipmapped
-  = liftDOM
-      (WebGPUTextureDescriptor <$>
-         new (jsg "WebGPUTextureDescriptor")
-           [toJSVal pixelFormat, toJSVal width, toJSVal height,
-            toJSVal mipmapped])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.textureType Mozilla WebGPUTextureDescriptor.textureType documentation> 
-setTextureType ::
-               (MonadDOM m) => WebGPUTextureDescriptor -> Word -> m ()
-setTextureType self val
-  = liftDOM (self ^. jss "textureType" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.textureType Mozilla WebGPUTextureDescriptor.textureType documentation> 
-getTextureType :: (MonadDOM m) => WebGPUTextureDescriptor -> m Word
-getTextureType self
-  = liftDOM (round <$> ((self ^. js "textureType") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.width Mozilla WebGPUTextureDescriptor.width documentation> 
-setWidth :: (MonadDOM m) => WebGPUTextureDescriptor -> Word -> m ()
-setWidth self val = liftDOM (self ^. jss "width" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.width Mozilla WebGPUTextureDescriptor.width documentation> 
-getWidth :: (MonadDOM m) => WebGPUTextureDescriptor -> m Word
-getWidth self
-  = liftDOM (round <$> ((self ^. js "width") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.height Mozilla WebGPUTextureDescriptor.height documentation> 
-setHeight ::
-          (MonadDOM m) => WebGPUTextureDescriptor -> Word -> m ()
-setHeight self val = liftDOM (self ^. jss "height" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.height Mozilla WebGPUTextureDescriptor.height documentation> 
-getHeight :: (MonadDOM m) => WebGPUTextureDescriptor -> m Word
-getHeight self
-  = liftDOM (round <$> ((self ^. js "height") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.sampleCount Mozilla WebGPUTextureDescriptor.sampleCount documentation> 
-setSampleCount ::
-               (MonadDOM m) => WebGPUTextureDescriptor -> Word -> m ()
-setSampleCount self val
-  = liftDOM (self ^. jss "sampleCount" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.sampleCount Mozilla WebGPUTextureDescriptor.sampleCount documentation> 
-getSampleCount :: (MonadDOM m) => WebGPUTextureDescriptor -> m Word
-getSampleCount self
-  = liftDOM (round <$> ((self ^. js "sampleCount") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.storageMode Mozilla WebGPUTextureDescriptor.storageMode documentation> 
-setStorageMode ::
-               (MonadDOM m) => WebGPUTextureDescriptor -> Word -> m ()
-setStorageMode self val
-  = liftDOM (self ^. jss "storageMode" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.storageMode Mozilla WebGPUTextureDescriptor.storageMode documentation> 
-getStorageMode :: (MonadDOM m) => WebGPUTextureDescriptor -> m Word
-getStorageMode self
-  = liftDOM (round <$> ((self ^. js "storageMode") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.usage Mozilla WebGPUTextureDescriptor.usage documentation> 
-setUsage :: (MonadDOM m) => WebGPUTextureDescriptor -> Word -> m ()
-setUsage self val = liftDOM (self ^. jss "usage" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.usage Mozilla WebGPUTextureDescriptor.usage documentation> 
-getUsage :: (MonadDOM m) => WebGPUTextureDescriptor -> m Word
-getUsage self
-  = liftDOM (round <$> ((self ^. js "usage") >>= valToNumber))
diff --git a/src/JSDOM/Generated/WebKitAnimationEvent.hs b/src/JSDOM/Generated/WebKitAnimationEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebKitAnimationEvent.hs
+++ /dev/null
@@ -1,43 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebKitAnimationEvent
-       (newWebKitAnimationEvent, getAnimationName, getElapsedTime,
-        WebKitAnimationEvent(..), gTypeWebKitAnimationEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEvent Mozilla WebKitAnimationEvent documentation> 
-newWebKitAnimationEvent ::
-                        (MonadDOM m, ToJSString type') =>
-                          type' -> Maybe WebKitAnimationEventInit -> m WebKitAnimationEvent
-newWebKitAnimationEvent type' eventInitDict
-  = liftDOM
-      (WebKitAnimationEvent <$>
-         new (jsg "WebKitAnimationEvent")
-           [toJSVal type', toJSVal eventInitDict])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEvent.animationName Mozilla WebKitAnimationEvent.animationName documentation> 
-getAnimationName ::
-                 (MonadDOM m, FromJSString result) =>
-                   WebKitAnimationEvent -> m result
-getAnimationName self
-  = liftDOM ((self ^. js "animationName") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEvent.elapsedTime Mozilla WebKitAnimationEvent.elapsedTime documentation> 
-getElapsedTime :: (MonadDOM m) => WebKitAnimationEvent -> m Double
-getElapsedTime self
-  = liftDOM ((self ^. js "elapsedTime") >>= valToNumber)
diff --git a/src/JSDOM/Generated/WebKitCSSMatrix.hs b/src/JSDOM/Generated/WebKitCSSMatrix.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebKitCSSMatrix.hs
+++ /dev/null
@@ -1,366 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebKitCSSMatrix
-       (newWebKitCSSMatrix, setMatrixValue, multiply, multiply_, inverse,
-        inverse_, translate, translate_, scale, scale_, rotate, rotate_,
-        rotateAxisAngle, rotateAxisAngle_, skewX, skewX_, skewY, skewY_,
-        toString, toString_, 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, WebKitCSSMatrix(..),
-        gTypeWebKitCSSMatrix)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix Mozilla WebKitCSSMatrix documentation> 
-newWebKitCSSMatrix ::
-                   (MonadDOM m, ToJSString cssValue) =>
-                     Maybe cssValue -> m WebKitCSSMatrix
-newWebKitCSSMatrix cssValue
-  = liftDOM
-      (WebKitCSSMatrix <$>
-         new (jsg "WebKitCSSMatrix") [toJSVal cssValue])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.setMatrixValue Mozilla WebKitCSSMatrix.setMatrixValue documentation> 
-setMatrixValue ::
-               (MonadDOM m, ToJSString string) =>
-                 WebKitCSSMatrix -> Maybe string -> m ()
-setMatrixValue self string
-  = liftDOM (void (self ^. jsf "setMatrixValue" [toJSVal string]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.multiply Mozilla WebKitCSSMatrix.multiply documentation> 
-multiply ::
-         (MonadDOM m) =>
-           WebKitCSSMatrix -> Maybe WebKitCSSMatrix -> m WebKitCSSMatrix
-multiply self secondMatrix
-  = liftDOM
-      ((self ^. jsf "multiply" [toJSVal secondMatrix]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.multiply Mozilla WebKitCSSMatrix.multiply documentation> 
-multiply_ ::
-          (MonadDOM m) => WebKitCSSMatrix -> Maybe WebKitCSSMatrix -> m ()
-multiply_ self secondMatrix
-  = liftDOM (void (self ^. jsf "multiply" [toJSVal secondMatrix]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.inverse Mozilla WebKitCSSMatrix.inverse documentation> 
-inverse :: (MonadDOM m) => WebKitCSSMatrix -> m WebKitCSSMatrix
-inverse self
-  = liftDOM ((self ^. jsf "inverse" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.inverse Mozilla WebKitCSSMatrix.inverse documentation> 
-inverse_ :: (MonadDOM m) => WebKitCSSMatrix -> m ()
-inverse_ self = liftDOM (void (self ^. jsf "inverse" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.translate Mozilla WebKitCSSMatrix.translate documentation> 
-translate ::
-          (MonadDOM m) =>
-            WebKitCSSMatrix ->
-              Maybe Double -> Maybe Double -> Maybe Double -> m WebKitCSSMatrix
-translate self x y z
-  = liftDOM
-      ((self ^. jsf "translate" [toJSVal x, toJSVal y, toJSVal z]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.translate Mozilla WebKitCSSMatrix.translate documentation> 
-translate_ ::
-           (MonadDOM m) =>
-             WebKitCSSMatrix ->
-               Maybe Double -> Maybe Double -> Maybe Double -> m ()
-translate_ self x y z
-  = liftDOM
-      (void (self ^. jsf "translate" [toJSVal x, toJSVal y, toJSVal z]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.scale Mozilla WebKitCSSMatrix.scale documentation> 
-scale ::
-      (MonadDOM m) =>
-        WebKitCSSMatrix ->
-          Maybe Double -> Maybe Double -> Maybe Double -> m WebKitCSSMatrix
-scale self scaleX scaleY scaleZ
-  = liftDOM
-      ((self ^. jsf "scale"
-          [toJSVal scaleX, toJSVal scaleY, toJSVal scaleZ])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.scale Mozilla WebKitCSSMatrix.scale documentation> 
-scale_ ::
-       (MonadDOM m) =>
-         WebKitCSSMatrix ->
-           Maybe Double -> Maybe Double -> Maybe Double -> m ()
-scale_ self scaleX scaleY scaleZ
-  = liftDOM
-      (void
-         (self ^. jsf "scale"
-            [toJSVal scaleX, toJSVal scaleY, toJSVal scaleZ]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotate Mozilla WebKitCSSMatrix.rotate documentation> 
-rotate ::
-       (MonadDOM m) =>
-         WebKitCSSMatrix ->
-           Maybe Double -> Maybe Double -> Maybe Double -> m WebKitCSSMatrix
-rotate self rotX rotY rotZ
-  = liftDOM
-      ((self ^. jsf "rotate" [toJSVal rotX, toJSVal rotY, toJSVal rotZ])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotate Mozilla WebKitCSSMatrix.rotate documentation> 
-rotate_ ::
-        (MonadDOM m) =>
-          WebKitCSSMatrix ->
-            Maybe Double -> Maybe Double -> Maybe Double -> m ()
-rotate_ self rotX rotY rotZ
-  = liftDOM
-      (void
-         (self ^. jsf "rotate" [toJSVal rotX, toJSVal rotY, toJSVal rotZ]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotateAxisAngle Mozilla WebKitCSSMatrix.rotateAxisAngle documentation> 
-rotateAxisAngle ::
-                (MonadDOM m) =>
-                  WebKitCSSMatrix ->
-                    Maybe Double ->
-                      Maybe Double -> Maybe Double -> Maybe Double -> m WebKitCSSMatrix
-rotateAxisAngle self x y z angle
-  = liftDOM
-      ((self ^. jsf "rotateAxisAngle"
-          [toJSVal x, toJSVal y, toJSVal z, toJSVal angle])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotateAxisAngle Mozilla WebKitCSSMatrix.rotateAxisAngle documentation> 
-rotateAxisAngle_ ::
-                 (MonadDOM m) =>
-                   WebKitCSSMatrix ->
-                     Maybe Double ->
-                       Maybe Double -> Maybe Double -> Maybe Double -> m ()
-rotateAxisAngle_ self x y z angle
-  = liftDOM
-      (void
-         (self ^. jsf "rotateAxisAngle"
-            [toJSVal x, toJSVal y, toJSVal z, toJSVal angle]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewX Mozilla WebKitCSSMatrix.skewX documentation> 
-skewX ::
-      (MonadDOM m) =>
-        WebKitCSSMatrix -> Maybe Double -> m WebKitCSSMatrix
-skewX self angle
-  = liftDOM
-      ((self ^. jsf "skewX" [toJSVal angle]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewX Mozilla WebKitCSSMatrix.skewX documentation> 
-skewX_ :: (MonadDOM m) => WebKitCSSMatrix -> Maybe Double -> m ()
-skewX_ self angle
-  = liftDOM (void (self ^. jsf "skewX" [toJSVal angle]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewY Mozilla WebKitCSSMatrix.skewY documentation> 
-skewY ::
-      (MonadDOM m) =>
-        WebKitCSSMatrix -> Maybe Double -> m WebKitCSSMatrix
-skewY self angle
-  = liftDOM
-      ((self ^. jsf "skewY" [toJSVal angle]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewY Mozilla WebKitCSSMatrix.skewY documentation> 
-skewY_ :: (MonadDOM m) => WebKitCSSMatrix -> Maybe Double -> m ()
-skewY_ self angle
-  = liftDOM (void (self ^. jsf "skewY" [toJSVal angle]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.toString Mozilla WebKitCSSMatrix.toString documentation> 
-toString ::
-         (MonadDOM m, FromJSString result) => WebKitCSSMatrix -> m result
-toString self
-  = liftDOM ((self ^. jsf "toString" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.toString Mozilla WebKitCSSMatrix.toString documentation> 
-toString_ :: (MonadDOM m) => WebKitCSSMatrix -> m ()
-toString_ self = liftDOM (void (self ^. jsf "toString" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.a Mozilla WebKitCSSMatrix.a documentation> 
-setA :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setA self val = liftDOM (self ^. jss "a" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.a Mozilla WebKitCSSMatrix.a documentation> 
-getA :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getA self = liftDOM ((self ^. js "a") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.b Mozilla WebKitCSSMatrix.b documentation> 
-setB :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setB self val = liftDOM (self ^. jss "b" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.b Mozilla WebKitCSSMatrix.b documentation> 
-getB :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getB self = liftDOM ((self ^. js "b") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.c Mozilla WebKitCSSMatrix.c documentation> 
-setC :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setC self val = liftDOM (self ^. jss "c" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.c Mozilla WebKitCSSMatrix.c documentation> 
-getC :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getC self = liftDOM ((self ^. js "c") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.d Mozilla WebKitCSSMatrix.d documentation> 
-setD :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setD self val = liftDOM (self ^. jss "d" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.d Mozilla WebKitCSSMatrix.d documentation> 
-getD :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getD self = liftDOM ((self ^. js "d") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.e Mozilla WebKitCSSMatrix.e documentation> 
-setE :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setE self val = liftDOM (self ^. jss "e" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.e Mozilla WebKitCSSMatrix.e documentation> 
-getE :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getE self = liftDOM ((self ^. js "e") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.f Mozilla WebKitCSSMatrix.f documentation> 
-setF :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setF self val = liftDOM (self ^. jss "f" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.f Mozilla WebKitCSSMatrix.f documentation> 
-getF :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getF self = liftDOM ((self ^. js "f") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m11 Mozilla WebKitCSSMatrix.m11 documentation> 
-setM11 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setM11 self val = liftDOM (self ^. jss "m11" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m11 Mozilla WebKitCSSMatrix.m11 documentation> 
-getM11 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getM11 self = liftDOM ((self ^. js "m11") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m12 Mozilla WebKitCSSMatrix.m12 documentation> 
-setM12 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setM12 self val = liftDOM (self ^. jss "m12" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m12 Mozilla WebKitCSSMatrix.m12 documentation> 
-getM12 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getM12 self = liftDOM ((self ^. js "m12") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m13 Mozilla WebKitCSSMatrix.m13 documentation> 
-setM13 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setM13 self val = liftDOM (self ^. jss "m13" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m13 Mozilla WebKitCSSMatrix.m13 documentation> 
-getM13 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getM13 self = liftDOM ((self ^. js "m13") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m14 Mozilla WebKitCSSMatrix.m14 documentation> 
-setM14 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setM14 self val = liftDOM (self ^. jss "m14" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m14 Mozilla WebKitCSSMatrix.m14 documentation> 
-getM14 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getM14 self = liftDOM ((self ^. js "m14") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m21 Mozilla WebKitCSSMatrix.m21 documentation> 
-setM21 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setM21 self val = liftDOM (self ^. jss "m21" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m21 Mozilla WebKitCSSMatrix.m21 documentation> 
-getM21 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getM21 self = liftDOM ((self ^. js "m21") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m22 Mozilla WebKitCSSMatrix.m22 documentation> 
-setM22 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setM22 self val = liftDOM (self ^. jss "m22" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m22 Mozilla WebKitCSSMatrix.m22 documentation> 
-getM22 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getM22 self = liftDOM ((self ^. js "m22") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m23 Mozilla WebKitCSSMatrix.m23 documentation> 
-setM23 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setM23 self val = liftDOM (self ^. jss "m23" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m23 Mozilla WebKitCSSMatrix.m23 documentation> 
-getM23 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getM23 self = liftDOM ((self ^. js "m23") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m24 Mozilla WebKitCSSMatrix.m24 documentation> 
-setM24 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setM24 self val = liftDOM (self ^. jss "m24" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m24 Mozilla WebKitCSSMatrix.m24 documentation> 
-getM24 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getM24 self = liftDOM ((self ^. js "m24") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m31 Mozilla WebKitCSSMatrix.m31 documentation> 
-setM31 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setM31 self val = liftDOM (self ^. jss "m31" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m31 Mozilla WebKitCSSMatrix.m31 documentation> 
-getM31 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getM31 self = liftDOM ((self ^. js "m31") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m32 Mozilla WebKitCSSMatrix.m32 documentation> 
-setM32 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setM32 self val = liftDOM (self ^. jss "m32" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m32 Mozilla WebKitCSSMatrix.m32 documentation> 
-getM32 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getM32 self = liftDOM ((self ^. js "m32") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m33 Mozilla WebKitCSSMatrix.m33 documentation> 
-setM33 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setM33 self val = liftDOM (self ^. jss "m33" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m33 Mozilla WebKitCSSMatrix.m33 documentation> 
-getM33 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getM33 self = liftDOM ((self ^. js "m33") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m34 Mozilla WebKitCSSMatrix.m34 documentation> 
-setM34 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setM34 self val = liftDOM (self ^. jss "m34" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m34 Mozilla WebKitCSSMatrix.m34 documentation> 
-getM34 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getM34 self = liftDOM ((self ^. js "m34") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m41 Mozilla WebKitCSSMatrix.m41 documentation> 
-setM41 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setM41 self val = liftDOM (self ^. jss "m41" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m41 Mozilla WebKitCSSMatrix.m41 documentation> 
-getM41 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getM41 self = liftDOM ((self ^. js "m41") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m42 Mozilla WebKitCSSMatrix.m42 documentation> 
-setM42 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setM42 self val = liftDOM (self ^. jss "m42" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m42 Mozilla WebKitCSSMatrix.m42 documentation> 
-getM42 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getM42 self = liftDOM ((self ^. js "m42") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m43 Mozilla WebKitCSSMatrix.m43 documentation> 
-setM43 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setM43 self val = liftDOM (self ^. jss "m43" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m43 Mozilla WebKitCSSMatrix.m43 documentation> 
-getM43 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getM43 self = liftDOM ((self ^. js "m43") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m44 Mozilla WebKitCSSMatrix.m44 documentation> 
-setM44 :: (MonadDOM m) => WebKitCSSMatrix -> Double -> m ()
-setM44 self val = liftDOM (self ^. jss "m44" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m44 Mozilla WebKitCSSMatrix.m44 documentation> 
-getM44 :: (MonadDOM m) => WebKitCSSMatrix -> m Double
-getM44 self = liftDOM ((self ^. js "m44") >>= valToNumber)
diff --git a/src/JSDOM/Generated/WebKitCSSRegionRule.hs b/src/JSDOM/Generated/WebKitCSSRegionRule.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebKitCSSRegionRule.hs
+++ /dev/null
@@ -1,25 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebKitCSSRegionRule
-       (getCssRules, WebKitCSSRegionRule(..), gTypeWebKitCSSRegionRule)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSRegionRule.cssRules Mozilla WebKitCSSRegionRule.cssRules documentation> 
-getCssRules :: (MonadDOM m) => WebKitCSSRegionRule -> m CSSRuleList
-getCssRules self
-  = liftDOM ((self ^. js "cssRules") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/WebKitCSSViewportRule.hs b/src/JSDOM/Generated/WebKitCSSViewportRule.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebKitCSSViewportRule.hs
+++ /dev/null
@@ -1,26 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebKitCSSViewportRule
-       (getStyle, WebKitCSSViewportRule(..), gTypeWebKitCSSViewportRule)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSViewportRule.style Mozilla WebKitCSSViewportRule.style documentation> 
-getStyle ::
-         (MonadDOM m) => WebKitCSSViewportRule -> m CSSStyleDeclaration
-getStyle self
-  = liftDOM ((self ^. js "style") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/WebKitMediaKeyError.hs b/src/JSDOM/Generated/WebKitMediaKeyError.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebKitMediaKeyError.hs
+++ /dev/null
@@ -1,40 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.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,
-        getCode, getSystemCode, WebKitMediaKeyError(..),
-        gTypeWebKitMediaKeyError)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.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
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyError.code Mozilla WebKitMediaKeyError.code documentation> 
-getCode :: (MonadDOM m) => WebKitMediaKeyError -> m Word
-getCode self
-  = liftDOM (round <$> ((self ^. js "code") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyError.systemCode Mozilla WebKitMediaKeyError.systemCode documentation> 
-getSystemCode :: (MonadDOM m) => WebKitMediaKeyError -> m Word
-getSystemCode self
-  = liftDOM (round <$> ((self ^. js "systemCode") >>= valToNumber))
diff --git a/src/JSDOM/Generated/WebKitMediaKeyMessageEvent.hs b/src/JSDOM/Generated/WebKitMediaKeyMessageEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebKitMediaKeyMessageEvent.hs
+++ /dev/null
@@ -1,46 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebKitMediaKeyMessageEvent
-       (newWebKitMediaKeyMessageEvent, getMessage, getDestinationURL,
-        WebKitMediaKeyMessageEvent(..), gTypeWebKitMediaKeyMessageEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent Mozilla WebKitMediaKeyMessageEvent documentation> 
-newWebKitMediaKeyMessageEvent ::
-                              (MonadDOM m, ToJSString type') =>
-                                type' ->
-                                  Maybe WebKitMediaKeyMessageEventInit ->
-                                    m WebKitMediaKeyMessageEvent
-newWebKitMediaKeyMessageEvent type' eventInitDict
-  = liftDOM
-      (WebKitMediaKeyMessageEvent <$>
-         new (jsg "WebKitMediaKeyMessageEvent")
-           [toJSVal type', toJSVal eventInitDict])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.message Mozilla WebKitMediaKeyMessageEvent.message documentation> 
-getMessage ::
-           (MonadDOM m) => WebKitMediaKeyMessageEvent -> m Uint8Array
-getMessage self
-  = liftDOM ((self ^. js "message") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.destinationURL Mozilla WebKitMediaKeyMessageEvent.destinationURL documentation> 
-getDestinationURL ::
-                  (MonadDOM m, FromJSString result) =>
-                    WebKitMediaKeyMessageEvent -> m result
-getDestinationURL self
-  = liftDOM ((self ^. js "destinationURL") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/WebKitMediaKeyNeededEvent.hs b/src/JSDOM/Generated/WebKitMediaKeyNeededEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebKitMediaKeyNeededEvent.hs
+++ /dev/null
@@ -1,38 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebKitMediaKeyNeededEvent
-       (newWebKitMediaKeyNeededEvent, getInitData,
-        WebKitMediaKeyNeededEvent(..), gTypeWebKitMediaKeyNeededEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyNeededEvent Mozilla WebKitMediaKeyNeededEvent documentation> 
-newWebKitMediaKeyNeededEvent ::
-                             (MonadDOM m, ToJSString type') =>
-                               type' ->
-                                 Maybe WebKitMediaKeyNeededEventInit -> m WebKitMediaKeyNeededEvent
-newWebKitMediaKeyNeededEvent type' eventInitDict
-  = liftDOM
-      (WebKitMediaKeyNeededEvent <$>
-         new (jsg "WebKitMediaKeyNeededEvent")
-           [toJSVal type', toJSVal eventInitDict])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyNeededEvent.initData Mozilla WebKitMediaKeyNeededEvent.initData documentation> 
-getInitData ::
-            (MonadDOM m) => WebKitMediaKeyNeededEvent -> m Uint8Array
-getInitData self
-  = liftDOM ((self ^. js "initData") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/WebKitMediaKeySession.hs b/src/JSDOM/Generated/WebKitMediaKeySession.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebKitMediaKeySession.hs
+++ /dev/null
@@ -1,65 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebKitMediaKeySession
-       (update, close, getError, getKeySystem, getSessionId,
-        webKitKeyAdded, webKitKeyError, webKitKeyMessage,
-        WebKitMediaKeySession(..), gTypeWebKitMediaKeySession)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.update Mozilla WebKitMediaKeySession.update documentation> 
-update ::
-       (MonadDOM m, IsUint8Array key) =>
-         WebKitMediaKeySession -> key -> m ()
-update self key
-  = liftDOM (void (self ^. jsf "update" [toJSVal key]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.close Mozilla WebKitMediaKeySession.close documentation> 
-close :: (MonadDOM m) => WebKitMediaKeySession -> m ()
-close self = liftDOM (void (self ^. jsf "close" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.error Mozilla WebKitMediaKeySession.error documentation> 
-getError ::
-         (MonadDOM m) => WebKitMediaKeySession -> m WebKitMediaKeyError
-getError self
-  = liftDOM ((self ^. js "error") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.keySystem Mozilla WebKitMediaKeySession.keySystem documentation> 
-getKeySystem ::
-             (MonadDOM m, FromJSString result) =>
-               WebKitMediaKeySession -> m result
-getKeySystem self
-  = liftDOM ((self ^. js "keySystem") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.sessionId Mozilla WebKitMediaKeySession.sessionId documentation> 
-getSessionId ::
-             (MonadDOM m, FromJSString result) =>
-               WebKitMediaKeySession -> m result
-getSessionId self
-  = liftDOM ((self ^. js "sessionId") >>= fromJSValUnchecked)
-
--- | <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/JSDOM/Generated/WebKitMediaKeys.hs b/src/JSDOM/Generated/WebKitMediaKeys.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebKitMediaKeys.hs
+++ /dev/null
@@ -1,75 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebKitMediaKeys
-       (newWebKitMediaKeys, createSession, createSession_,
-        isTypeSupported, isTypeSupported_, getKeySystem,
-        WebKitMediaKeys(..), gTypeWebKitMediaKeys)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys Mozilla WebKitMediaKeys documentation> 
-newWebKitMediaKeys ::
-                   (MonadDOM m, ToJSString keySystem) =>
-                     keySystem -> m WebKitMediaKeys
-newWebKitMediaKeys keySystem
-  = liftDOM
-      (WebKitMediaKeys <$>
-         new (jsg "WebKitMediaKeys") [toJSVal keySystem])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.createSession Mozilla WebKitMediaKeys.createSession documentation> 
-createSession ::
-              (MonadDOM m, ToJSString type', IsUint8Array initData) =>
-                WebKitMediaKeys -> type' -> initData -> m WebKitMediaKeySession
-createSession self type' initData
-  = liftDOM
-      ((self ^. jsf "createSession" [toJSVal type', toJSVal initData])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.createSession Mozilla WebKitMediaKeys.createSession documentation> 
-createSession_ ::
-               (MonadDOM m, ToJSString type', IsUint8Array initData) =>
-                 WebKitMediaKeys -> type' -> initData -> m ()
-createSession_ self type' initData
-  = liftDOM
-      (void
-         (self ^. jsf "createSession" [toJSVal type', toJSVal initData]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.isTypeSupported Mozilla WebKitMediaKeys.isTypeSupported documentation> 
-isTypeSupported ::
-                (MonadDOM m, ToJSString keySystem, ToJSString type') =>
-                  keySystem -> Maybe type' -> m Bool
-isTypeSupported keySystem type'
-  = liftDOM
-      (((jsg "WebKitMediaKeys") ^. jsf "isTypeSupported"
-          [toJSVal keySystem, toJSVal type'])
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.isTypeSupported Mozilla WebKitMediaKeys.isTypeSupported documentation> 
-isTypeSupported_ ::
-                 (MonadDOM m, ToJSString keySystem, ToJSString type') =>
-                   keySystem -> Maybe type' -> m ()
-isTypeSupported_ keySystem type'
-  = liftDOM
-      (void
-         ((jsg "WebKitMediaKeys") ^. jsf "isTypeSupported"
-            [toJSVal keySystem, toJSVal type']))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.keySystem Mozilla WebKitMediaKeys.keySystem documentation> 
-getKeySystem ::
-             (MonadDOM m, FromJSString result) => WebKitMediaKeys -> m result
-getKeySystem self
-  = liftDOM ((self ^. js "keySystem") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/WebKitNamedFlow.hs b/src/JSDOM/Generated/WebKitNamedFlow.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebKitNamedFlow.hs
+++ /dev/null
@@ -1,74 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebKitNamedFlow
-       (getRegionsByContent, getRegionsByContent_, getRegions,
-        getRegions_, getContent, getContent_, getName, getOverset,
-        getFirstEmptyRegionIndex, WebKitNamedFlow(..),
-        gTypeWebKitNamedFlow)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegionsByContent Mozilla WebKitNamedFlow.getRegionsByContent documentation> 
-getRegionsByContent ::
-                    (MonadDOM m, IsNode contentNode) =>
-                      WebKitNamedFlow -> Maybe contentNode -> m NodeList
-getRegionsByContent self contentNode
-  = liftDOM
-      ((self ^. jsf "getRegionsByContent" [toJSVal contentNode]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegionsByContent Mozilla WebKitNamedFlow.getRegionsByContent documentation> 
-getRegionsByContent_ ::
-                     (MonadDOM m, IsNode contentNode) =>
-                       WebKitNamedFlow -> Maybe contentNode -> m ()
-getRegionsByContent_ self contentNode
-  = liftDOM
-      (void (self ^. jsf "getRegionsByContent" [toJSVal contentNode]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegions Mozilla WebKitNamedFlow.getRegions documentation> 
-getRegions :: (MonadDOM m) => WebKitNamedFlow -> m NodeList
-getRegions self
-  = liftDOM ((self ^. jsf "getRegions" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegions Mozilla WebKitNamedFlow.getRegions documentation> 
-getRegions_ :: (MonadDOM m) => WebKitNamedFlow -> m ()
-getRegions_ self = liftDOM (void (self ^. jsf "getRegions" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getContent Mozilla WebKitNamedFlow.getContent documentation> 
-getContent :: (MonadDOM m) => WebKitNamedFlow -> m NodeList
-getContent self
-  = liftDOM ((self ^. jsf "getContent" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getContent Mozilla WebKitNamedFlow.getContent documentation> 
-getContent_ :: (MonadDOM m) => WebKitNamedFlow -> m ()
-getContent_ self = liftDOM (void (self ^. jsf "getContent" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.name Mozilla WebKitNamedFlow.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => WebKitNamedFlow -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.overset Mozilla WebKitNamedFlow.overset documentation> 
-getOverset :: (MonadDOM m) => WebKitNamedFlow -> m Bool
-getOverset self = liftDOM ((self ^. js "overset") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.firstEmptyRegionIndex Mozilla WebKitNamedFlow.firstEmptyRegionIndex documentation> 
-getFirstEmptyRegionIndex ::
-                         (MonadDOM m) => WebKitNamedFlow -> m Int
-getFirstEmptyRegionIndex self
-  = liftDOM
-      (round <$> ((self ^. js "firstEmptyRegionIndex") >>= valToNumber))
diff --git a/src/JSDOM/Generated/WebKitNamespace.hs b/src/JSDOM/Generated/WebKitNamespace.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebKitNamespace.hs
+++ /dev/null
@@ -1,26 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebKitNamespace
-       (getMessageHandlers, WebKitNamespace(..), gTypeWebKitNamespace)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamespace.messageHandlers Mozilla WebKitNamespace.messageHandlers documentation> 
-getMessageHandlers ::
-                   (MonadDOM m) => WebKitNamespace -> m UserMessageHandlersNamespace
-getMessageHandlers self
-  = liftDOM ((self ^. js "messageHandlers") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/WebKitPlaybackTargetAvailabilityEvent.hs b/src/JSDOM/Generated/WebKitPlaybackTargetAvailabilityEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebKitPlaybackTargetAvailabilityEvent.hs
+++ /dev/null
@@ -1,41 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebKitPlaybackTargetAvailabilityEvent
-       (newWebKitPlaybackTargetAvailabilityEvent, getAvailability,
-        WebKitPlaybackTargetAvailabilityEvent(..),
-        gTypeWebKitPlaybackTargetAvailabilityEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPlaybackTargetAvailabilityEvent Mozilla WebKitPlaybackTargetAvailabilityEvent documentation> 
-newWebKitPlaybackTargetAvailabilityEvent ::
-                                         (MonadDOM m, ToJSString type') =>
-                                           type' ->
-                                             Maybe WebKitPlaybackTargetAvailabilityEventInit ->
-                                               m WebKitPlaybackTargetAvailabilityEvent
-newWebKitPlaybackTargetAvailabilityEvent type' eventInitDict
-  = liftDOM
-      (WebKitPlaybackTargetAvailabilityEvent <$>
-         new (jsg "WebKitPlaybackTargetAvailabilityEvent")
-           [toJSVal type', toJSVal eventInitDict])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPlaybackTargetAvailabilityEvent.availability Mozilla WebKitPlaybackTargetAvailabilityEvent.availability documentation> 
-getAvailability ::
-                (MonadDOM m, FromJSString result) =>
-                  WebKitPlaybackTargetAvailabilityEvent -> m result
-getAvailability self
-  = liftDOM ((self ^. js "availability") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/WebKitPoint.hs b/src/JSDOM/Generated/WebKitPoint.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebKitPoint.hs
+++ /dev/null
@@ -1,46 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebKitPoint
-       (newWebKitPoint, setX, getX, setY, getY, WebKitPoint(..),
-        gTypeWebKitPoint)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint Mozilla WebKitPoint documentation> 
-newWebKitPoint ::
-               (MonadDOM m) => Maybe Float -> Maybe Float -> m WebKitPoint
-newWebKitPoint x y
-  = liftDOM
-      (WebKitPoint <$> new (jsg "WebKitPoint") [toJSVal x, toJSVal y])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint.x Mozilla WebKitPoint.x documentation> 
-setX :: (MonadDOM m) => WebKitPoint -> Float -> m ()
-setX self val = liftDOM (self ^. jss "x" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint.x Mozilla WebKitPoint.x documentation> 
-getX :: (MonadDOM m) => WebKitPoint -> m Float
-getX self
-  = liftDOM (realToFrac <$> ((self ^. js "x") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint.y Mozilla WebKitPoint.y documentation> 
-setY :: (MonadDOM m) => WebKitPoint -> Float -> m ()
-setY self val = liftDOM (self ^. jss "y" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint.y Mozilla WebKitPoint.y documentation> 
-getY :: (MonadDOM m) => WebKitPoint -> m Float
-getY self
-  = liftDOM (realToFrac <$> ((self ^. js "y") >>= valToNumber))
diff --git a/src/JSDOM/Generated/WebKitSubtleCrypto.hs b/src/JSDOM/Generated/WebKitSubtleCrypto.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebKitSubtleCrypto.hs
+++ /dev/null
@@ -1,272 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebKitSubtleCrypto
-       (encrypt, encrypt_, decrypt, decrypt_, sign, sign_, verify,
-        verify_, digest, digest_, generateKey, generateKey_, importKey,
-        importKey_, exportKey, exportKey_, wrapKey, wrapKey_, unwrapKey,
-        unwrapKey_, WebKitSubtleCrypto(..), gTypeWebKitSubtleCrypto)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
-encrypt ::
-        (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
-          WebKitSubtleCrypto ->
-            algorithm -> CryptoKey -> [data'] -> m ArrayBuffer
-encrypt self algorithm key data'
-  = liftDOM
-      (((self ^. jsf "encrypt"
-           [toJSVal algorithm, toJSVal key, toJSVal (array data')])
-          >>= readPromise)
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
-encrypt_ ::
-         (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
-           WebKitSubtleCrypto -> algorithm -> CryptoKey -> [data'] -> m ()
-encrypt_ self algorithm key data'
-  = liftDOM
-      (void
-         (self ^. jsf "encrypt"
-            [toJSVal algorithm, toJSVal key, toJSVal (array data')]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
-decrypt ::
-        (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
-          WebKitSubtleCrypto ->
-            algorithm -> CryptoKey -> [data'] -> m ArrayBuffer
-decrypt self algorithm key data'
-  = liftDOM
-      (((self ^. jsf "decrypt"
-           [toJSVal algorithm, toJSVal key, toJSVal (array data')])
-          >>= readPromise)
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
-decrypt_ ::
-         (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
-           WebKitSubtleCrypto -> algorithm -> CryptoKey -> [data'] -> m ()
-decrypt_ self algorithm key data'
-  = liftDOM
-      (void
-         (self ^. jsf "decrypt"
-            [toJSVal algorithm, toJSVal key, toJSVal (array data')]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
-sign ::
-     (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
-       WebKitSubtleCrypto ->
-         algorithm -> CryptoKey -> [data'] -> m ArrayBuffer
-sign self algorithm key data'
-  = liftDOM
-      (((self ^. jsf "sign"
-           [toJSVal algorithm, toJSVal key, toJSVal (array data')])
-          >>= readPromise)
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
-sign_ ::
-      (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
-        WebKitSubtleCrypto -> algorithm -> CryptoKey -> [data'] -> m ()
-sign_ self algorithm key data'
-  = liftDOM
-      (void
-         (self ^. jsf "sign"
-            [toJSVal algorithm, toJSVal key, toJSVal (array data')]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
-verify ::
-       (MonadDOM m, ToJSString algorithm, IsCryptoOperationData signature,
-        IsCryptoOperationData data') =>
-         WebKitSubtleCrypto ->
-           algorithm -> CryptoKey -> signature -> [data'] -> m Bool
-verify self algorithm key signature data'
-  = liftDOM
-      (((self ^. jsf "verify"
-           [toJSVal algorithm, toJSVal key, toJSVal signature,
-            toJSVal (array data')])
-          >>= readPromise)
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
-verify_ ::
-        (MonadDOM m, ToJSString algorithm, IsCryptoOperationData signature,
-         IsCryptoOperationData data') =>
-          WebKitSubtleCrypto ->
-            algorithm -> CryptoKey -> signature -> [data'] -> m ()
-verify_ self algorithm key signature data'
-  = liftDOM
-      (void
-         (self ^. jsf "verify"
-            [toJSVal algorithm, toJSVal key, toJSVal signature,
-             toJSVal (array data')]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
-digest ::
-       (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
-         WebKitSubtleCrypto -> algorithm -> [data'] -> m ArrayBuffer
-digest self algorithm data'
-  = liftDOM
-      (((self ^. jsf "digest" [toJSVal algorithm, toJSVal (array data')])
-          >>= readPromise)
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
-digest_ ::
-        (MonadDOM m, ToJSString algorithm, IsCryptoOperationData data') =>
-          WebKitSubtleCrypto -> algorithm -> [data'] -> m ()
-digest_ self algorithm data'
-  = liftDOM
-      (void
-         (self ^. jsf "digest" [toJSVal algorithm, toJSVal (array data')]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
-generateKey ::
-            (MonadDOM m, ToJSString algorithm) =>
-              WebKitSubtleCrypto ->
-                algorithm -> Bool -> [CryptoKeyUsage] -> m CryptoKeyOrKeyPair
-generateKey self algorithm extractable keyUsages
-  = liftDOM
-      (((self ^. jsf "generateKey"
-           [toJSVal algorithm, toJSVal extractable,
-            toJSVal (array keyUsages)])
-          >>= readPromise)
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
-generateKey_ ::
-             (MonadDOM m, ToJSString algorithm) =>
-               WebKitSubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m ()
-generateKey_ self algorithm extractable keyUsages
-  = liftDOM
-      (void
-         (self ^. jsf "generateKey"
-            [toJSVal algorithm, toJSVal extractable,
-             toJSVal (array keyUsages)]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
-importKey ::
-          (MonadDOM m, ToJSString format, IsCryptoOperationData keyData,
-           ToJSString algorithm) =>
-            WebKitSubtleCrypto ->
-              format ->
-                keyData ->
-                  Maybe algorithm -> Bool -> [CryptoKeyUsage] -> m CryptoKey
-importKey self format keyData algorithm extractable keyUsages
-  = liftDOM
-      (((self ^. jsf "importKey"
-           [toJSVal format, toJSVal keyData, toJSVal algorithm,
-            toJSVal extractable, toJSVal (array keyUsages)])
-          >>= readPromise)
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
-importKey_ ::
-           (MonadDOM m, ToJSString format, IsCryptoOperationData keyData,
-            ToJSString algorithm) =>
-             WebKitSubtleCrypto ->
-               format ->
-                 keyData -> Maybe algorithm -> Bool -> [CryptoKeyUsage] -> m ()
-importKey_ self format keyData algorithm extractable keyUsages
-  = liftDOM
-      (void
-         (self ^. jsf "importKey"
-            [toJSVal format, toJSVal keyData, toJSVal algorithm,
-             toJSVal extractable, toJSVal (array keyUsages)]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
-exportKey ::
-          (MonadDOM m, ToJSString format) =>
-            WebKitSubtleCrypto -> format -> CryptoKey -> m ArrayBuffer
-exportKey self format key
-  = liftDOM
-      (((self ^. jsf "exportKey" [toJSVal format, toJSVal key]) >>=
-          readPromise)
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
-exportKey_ ::
-           (MonadDOM m, ToJSString format) =>
-             WebKitSubtleCrypto -> format -> CryptoKey -> m ()
-exportKey_ self format key
-  = liftDOM
-      (void (self ^. jsf "exportKey" [toJSVal format, toJSVal key]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
-wrapKey ::
-        (MonadDOM m, ToJSString format, ToJSString wrapAlgorithm) =>
-          WebKitSubtleCrypto ->
-            format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ArrayBuffer
-wrapKey self format key wrappingKey wrapAlgorithm
-  = liftDOM
-      (((self ^. jsf "wrapKey"
-           [toJSVal format, toJSVal key, toJSVal wrappingKey,
-            toJSVal wrapAlgorithm])
-          >>= readPromise)
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
-wrapKey_ ::
-         (MonadDOM m, ToJSString format, ToJSString wrapAlgorithm) =>
-           WebKitSubtleCrypto ->
-             format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ()
-wrapKey_ self format key wrappingKey wrapAlgorithm
-  = liftDOM
-      (void
-         (self ^. jsf "wrapKey"
-            [toJSVal format, toJSVal key, toJSVal wrappingKey,
-             toJSVal wrapAlgorithm]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.unwrapKey Mozilla WebKitSubtleCrypto.unwrapKey documentation> 
-unwrapKey ::
-          (MonadDOM 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
-  = liftDOM
-      (((self ^. jsf "unwrapKey"
-           [toJSVal format, toJSVal wrappedKey, toJSVal unwrappingKey,
-            toJSVal unwrapAlgorithm, toJSVal unwrappedKeyAlgorithm,
-            toJSVal extractable, toJSVal (array keyUsages)])
-          >>= readPromise)
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.unwrapKey Mozilla WebKitSubtleCrypto.unwrapKey documentation> 
-unwrapKey_ ::
-           (MonadDOM 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
-  = liftDOM
-      (void
-         (self ^. jsf "unwrapKey"
-            [toJSVal format, toJSVal wrappedKey, toJSVal unwrappingKey,
-             toJSVal unwrapAlgorithm, toJSVal unwrappedKeyAlgorithm,
-             toJSVal extractable, toJSVal (array keyUsages)]))
diff --git a/src/JSDOM/Generated/WebKitTransitionEvent.hs b/src/JSDOM/Generated/WebKitTransitionEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/WebKitTransitionEvent.hs
+++ /dev/null
@@ -1,51 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.WebKitTransitionEvent
-       (newWebKitTransitionEvent, getPropertyName, getElapsedTime,
-        getPseudoElement, WebKitTransitionEvent(..),
-        gTypeWebKitTransitionEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent Mozilla WebKitTransitionEvent documentation> 
-newWebKitTransitionEvent ::
-                         (MonadDOM m, ToJSString type') =>
-                           type' -> Maybe WebKitTransitionEventInit -> m WebKitTransitionEvent
-newWebKitTransitionEvent type' eventInitDict
-  = liftDOM
-      (WebKitTransitionEvent <$>
-         new (jsg "WebKitTransitionEvent")
-           [toJSVal type', toJSVal eventInitDict])
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent.propertyName Mozilla WebKitTransitionEvent.propertyName documentation> 
-getPropertyName ::
-                (MonadDOM m, FromJSString result) =>
-                  WebKitTransitionEvent -> m result
-getPropertyName self
-  = liftDOM ((self ^. js "propertyName") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent.elapsedTime Mozilla WebKitTransitionEvent.elapsedTime documentation> 
-getElapsedTime :: (MonadDOM m) => WebKitTransitionEvent -> m Double
-getElapsedTime self
-  = liftDOM ((self ^. js "elapsedTime") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent.pseudoElement Mozilla WebKitTransitionEvent.pseudoElement documentation> 
-getPseudoElement ::
-                 (MonadDOM m, FromJSString result) =>
-                   WebKitTransitionEvent -> m result
-getPseudoElement self
-  = liftDOM ((self ^. js "pseudoElement") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/WebSocket.hs b/src/JSDOM/Generated/WebSocket.hs
--- a/src/JSDOM/Generated/WebSocket.hs
+++ b/src/JSDOM/Generated/WebSocket.hs
@@ -1,166 +1,80 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from websockets (webref). Do not edit.
 module JSDOM.Generated.WebSocket
-       (newWebSocket, newWebSocket', send, sendView, sendBlob, sendString,
-        close, pattern CONNECTING, pattern OPEN, pattern CLOSING,
-        pattern CLOSED, getUrl, getReadyState, getBufferedAmount, open,
-        message, error, closeEvent, getProtocol, getProtocolUnsafe,
-        getProtocolUnchecked, getExtensions, getExtensionsUnsafe,
-        getExtensionsUnchecked, setBinaryType, getBinaryType,
-        WebSocket(..), gTypeWebSocket)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket Mozilla WebSocket documentation> 
-newWebSocket ::
-             (MonadDOM m, ToJSString url, ToJSString protocols) =>
-               url -> [protocols] -> m WebSocket
-newWebSocket url protocols
-  = liftDOM
-      (WebSocket <$>
-         new (jsg "WebSocket") [toJSVal url, toJSVal (array protocols)])
+-- | <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 (((new (jsg "WebSocket") [toJSVal url, P.maybe (P.return jsUndefined) toJSVal protocols]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket Mozilla WebSocket documentation> 
-newWebSocket' ::
-              (MonadDOM m, ToJSString url, ToJSString protocol) =>
-                url -> protocol -> m WebSocket
-newWebSocket' url protocol
-  = liftDOM
-      (WebSocket <$>
-         new (jsg "WebSocket") [toJSVal url, toJSVal protocol])
+-- | <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 (self ^. jsf "close" [P.maybe (P.return jsUndefined) toJSVal code, P.maybe (P.return jsUndefined) toJSVal reason]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
-send ::
-     (MonadDOM m, IsArrayBuffer data') => WebSocket -> data' -> m ()
-send self data'
-  = liftDOM (void (self ^. jsf "send" [toJSVal data']))
+-- | <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 (self ^. jsf "send" [toJSVal data']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
-sendView ::
-         (MonadDOM m, IsArrayBufferView data') => WebSocket -> data' -> m ()
-sendView self data'
-  = liftDOM (void (self ^. jsf "send" [toJSVal data']))
+-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/url MDN WebSocket.url documentation>
+getUrl :: (MonadDOM m, FromJSString result) => WebSocket -> m result
+getUrl self = liftDOM (((self ^. js "url") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
-sendBlob ::
-         (MonadDOM m, IsBlob data') => WebSocket -> data' -> m ()
-sendBlob self data'
-  = liftDOM (void (self ^. jsf "send" [toJSVal data']))
+-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/readyState MDN WebSocket.readyState documentation>
+getReadyState :: (MonadDOM m) => WebSocket -> m Word
+getReadyState self = liftDOM ((P.round <$> ((self ^. js "readyState") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
-sendString ::
-           (MonadDOM m, ToJSString data') => WebSocket -> data' -> m ()
-sendString self data'
-  = liftDOM (void (self ^. jsf "send" [toJSVal data']))
+-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/bufferedAmount MDN WebSocket.bufferedAmount documentation>
+getBufferedAmount :: (MonadDOM m) => WebSocket -> m Word53
+getBufferedAmount self = liftDOM (((self ^. js "bufferedAmount") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.close Mozilla WebSocket.close documentation> 
-close ::
-      (MonadDOM m, ToJSString reason) =>
-        WebSocket -> Maybe Word -> Maybe reason -> m ()
-close self code reason
-  = liftDOM
-      (void (self ^. jsf "close" [toJSVal code, toJSVal reason]))
+-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/extensions MDN WebSocket.extensions documentation>
+getExtensions :: (MonadDOM m, FromJSString result) => WebSocket -> m result
+getExtensions self = liftDOM (((self ^. js "extensions") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/protocol MDN WebSocket.protocol documentation>
+getProtocol :: (MonadDOM m, FromJSString result) => WebSocket -> m result
+getProtocol self = liftDOM (((self ^. js "protocol") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/binaryType MDN WebSocket.binaryType documentation>
+setBinaryType :: (MonadDOM m) => WebSocket -> BinaryType -> m ()
+setBinaryType self val = liftDOM (void (self ^. jss "binaryType" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebSocket/binaryType MDN WebSocket.binaryType documentation>
+getBinaryType :: (MonadDOM m) => WebSocket -> m BinaryType
+getBinaryType self = liftDOM (((self ^. js "binaryType") >>= fromJSValUnchecked))
+
 pattern CONNECTING = 0
-pattern OPEN = 1
-pattern CLOSING = 2
-pattern CLOSED = 3
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.url Mozilla WebSocket.url documentation> 
-getUrl ::
-       (MonadDOM m, FromJSString result) => WebSocket -> m result
-getUrl self = liftDOM ((self ^. js "url") >>= fromJSValUnchecked)
+pattern OPEN = 1
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.readyState Mozilla WebSocket.readyState documentation> 
-getReadyState :: (MonadDOM m) => WebSocket -> m Word
-getReadyState self
-  = liftDOM (round <$> ((self ^. js "readyState") >>= valToNumber))
+pattern CLOSING = 2
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.bufferedAmount Mozilla WebSocket.bufferedAmount documentation> 
-getBufferedAmount :: (MonadDOM m) => WebSocket -> m Word
-getBufferedAmount self
-  = liftDOM
-      (round <$> ((self ^. js "bufferedAmount") >>= valToNumber))
+pattern CLOSED = 3
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onopen Mozilla WebSocket.onopen documentation> 
+-- | <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.onmessage Mozilla WebSocket.onmessage documentation> 
-message :: EventName WebSocket MessageEvent
-message = unsafeEventNameAsync (toJSString "message")
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onerror Mozilla WebSocket.onerror documentation> 
-error :: EventName WebSocket UIEvent
+-- | <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.onclose Mozilla WebSocket.onclose documentation> 
+-- | <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.protocol Mozilla WebSocket.protocol documentation> 
-getProtocol ::
-            (MonadDOM m, FromJSString result) => WebSocket -> m (Maybe result)
-getProtocol self
-  = liftDOM ((self ^. js "protocol") >>= fromMaybeJSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.protocol Mozilla WebSocket.protocol documentation> 
-getProtocolUnsafe ::
-                  (MonadDOM m, HasCallStack, FromJSString result) =>
-                    WebSocket -> m result
-getProtocolUnsafe self
-  = liftDOM
-      (((self ^. js "protocol") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.protocol Mozilla WebSocket.protocol documentation> 
-getProtocolUnchecked ::
-                     (MonadDOM m, FromJSString result) => WebSocket -> m result
-getProtocolUnchecked self
-  = liftDOM ((self ^. js "protocol") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.extensions Mozilla WebSocket.extensions documentation> 
-getExtensions ::
-              (MonadDOM m, FromJSString result) => WebSocket -> m (Maybe result)
-getExtensions self
-  = liftDOM ((self ^. js "extensions") >>= fromMaybeJSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.extensions Mozilla WebSocket.extensions documentation> 
-getExtensionsUnsafe ::
-                    (MonadDOM m, HasCallStack, FromJSString result) =>
-                      WebSocket -> m result
-getExtensionsUnsafe self
-  = liftDOM
-      (((self ^. js "extensions") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.extensions Mozilla WebSocket.extensions documentation> 
-getExtensionsUnchecked ::
-                       (MonadDOM m, FromJSString result) => WebSocket -> m result
-getExtensionsUnchecked self
-  = liftDOM ((self ^. js "extensions") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.binaryType Mozilla WebSocket.binaryType documentation> 
-setBinaryType ::
-              (MonadDOM m, ToJSString val) => WebSocket -> val -> m ()
-setBinaryType self val
-  = liftDOM (self ^. jss "binaryType" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.binaryType Mozilla WebSocket.binaryType documentation> 
-getBinaryType ::
-              (MonadDOM m, FromJSString result) => WebSocket -> m result
-getBinaryType self
-  = liftDOM ((self ^. js "binaryType") >>= fromJSValUnchecked)
+-- | <https://websockets.spec.whatwg.org/#dom-websocket-onmessage message event>
+message :: EventName WebSocket MessageEvent
+message = unsafeEventNameAsync (toJSString "message")
diff --git a/src/JSDOM/Generated/WebTransport.hs b/src/JSDOM/Generated/WebTransport.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransport.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransport
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "WebTransport") [toJSVal url, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "close" [P.maybe (P.return jsUndefined) toJSVal closeInfo]))
+
+-- | <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 (((((self ^. jsf "createBidirectionalStream" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "createBidirectionalStream" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/createSendGroup MDN WebTransport.createSendGroup documentation>
+createSendGroup :: (MonadDOM m) => WebTransport -> m WebTransportSendGroup
+createSendGroup self = liftDOM (((self ^. jsf "createSendGroup" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/createSendGroup MDN WebTransport.createSendGroup documentation>
+createSendGroup_ :: (MonadDOM m) => WebTransport -> m ()
+createSendGroup_ self = liftDOM (void (self ^. jsf "createSendGroup" ()))
+
+-- | <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 (((((self ^. jsf "createUnidirectionalStream" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "createUnidirectionalStream" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/getStats MDN WebTransport.getStats documentation>
+getStats :: (MonadDOM m) => WebTransport -> m WebTransportConnectionStats
+getStats self = liftDOM (((((self ^. jsf "getStats" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/getStats MDN WebTransport.getStats documentation>
+getStats_ :: (MonadDOM m) => WebTransport -> m ()
+getStats_ self = liftDOM (void (((self ^. jsf "getStats" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/ready MDN WebTransport.ready documentation>
+getReady :: (MonadDOM m) => WebTransport -> m ()
+getReady self = liftDOM (void (((self ^. js "ready") >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/reliability MDN WebTransport.reliability documentation>
+getReliability :: (MonadDOM m) => WebTransport -> m WebTransportReliabilityMode
+getReliability self = liftDOM (((self ^. js "reliability") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/congestionControl MDN WebTransport.congestionControl documentation>
+getCongestionControl :: (MonadDOM m) => WebTransport -> m WebTransportCongestionControl
+getCongestionControl self = liftDOM (((self ^. js "congestionControl") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-anticipatedconcurrentincomingunidirectionalstreams WebTransport.anticipatedConcurrentIncomingUnidirectionalStreams specification>
+setAnticipatedConcurrentIncomingUnidirectionalStreams :: (MonadDOM m) => WebTransport -> Maybe Word -> m ()
+setAnticipatedConcurrentIncomingUnidirectionalStreams self val = liftDOM (void (self ^. jss "anticipatedConcurrentIncomingUnidirectionalStreams" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-anticipatedconcurrentincomingunidirectionalstreams WebTransport.anticipatedConcurrentIncomingUnidirectionalStreams specification>
+getAnticipatedConcurrentIncomingUnidirectionalStreams :: (MonadDOM m) => WebTransport -> m (Maybe Word)
+getAnticipatedConcurrentIncomingUnidirectionalStreams self = liftDOM (((self ^. js "anticipatedConcurrentIncomingUnidirectionalStreams") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-anticipatedconcurrentincomingunidirectionalstreams WebTransport.anticipatedConcurrentIncomingUnidirectionalStreams specification>
+getAnticipatedConcurrentIncomingUnidirectionalStreamsUnsafe :: (MonadDOM m, HasCallStack) => WebTransport -> m Word
+getAnticipatedConcurrentIncomingUnidirectionalStreamsUnsafe self = liftDOM ((((self ^. js "anticipatedConcurrentIncomingUnidirectionalStreams") >>= 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 ((P.round <$> ((self ^. js "anticipatedConcurrentIncomingUnidirectionalStreams") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-anticipatedconcurrentincomingbidirectionalstreams WebTransport.anticipatedConcurrentIncomingBidirectionalStreams specification>
+setAnticipatedConcurrentIncomingBidirectionalStreams :: (MonadDOM m) => WebTransport -> Maybe Word -> m ()
+setAnticipatedConcurrentIncomingBidirectionalStreams self val = liftDOM (void (self ^. jss "anticipatedConcurrentIncomingBidirectionalStreams" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-anticipatedconcurrentincomingbidirectionalstreams WebTransport.anticipatedConcurrentIncomingBidirectionalStreams specification>
+getAnticipatedConcurrentIncomingBidirectionalStreams :: (MonadDOM m) => WebTransport -> m (Maybe Word)
+getAnticipatedConcurrentIncomingBidirectionalStreams self = liftDOM (((self ^. js "anticipatedConcurrentIncomingBidirectionalStreams") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-anticipatedconcurrentincomingbidirectionalstreams WebTransport.anticipatedConcurrentIncomingBidirectionalStreams specification>
+getAnticipatedConcurrentIncomingBidirectionalStreamsUnsafe :: (MonadDOM m, HasCallStack) => WebTransport -> m Word
+getAnticipatedConcurrentIncomingBidirectionalStreamsUnsafe self = liftDOM ((((self ^. js "anticipatedConcurrentIncomingBidirectionalStreams") >>= 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 ((P.round <$> ((self ^. js "anticipatedConcurrentIncomingBidirectionalStreams") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-responseheaders WebTransport.responseHeaders specification>
+getResponseHeaders :: (MonadDOM m) => WebTransport -> m (Maybe Headers)
+getResponseHeaders self = liftDOM (((self ^. js "responseHeaders") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransport-responseheaders WebTransport.responseHeaders specification>
+getResponseHeadersUnsafe :: (MonadDOM m, HasCallStack) => WebTransport -> m Headers
+getResponseHeadersUnsafe self = liftDOM ((((self ^. js "responseHeaders") >>= 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 (((self ^. js "responseHeaders") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/protocol MDN WebTransport.protocol documentation>
+getProtocol :: (MonadDOM m, FromJSString result) => WebTransport -> m result
+getProtocol self = liftDOM (((self ^. js "protocol") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/closed MDN WebTransport.closed documentation>
+getClosed :: (MonadDOM m) => WebTransport -> m WebTransportCloseInfo
+getClosed self = liftDOM (((((self ^. js "closed") >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/draining MDN WebTransport.draining documentation>
+getDraining :: (MonadDOM m) => WebTransport -> m ()
+getDraining self = liftDOM (void (((self ^. js "draining") >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/datagrams MDN WebTransport.datagrams documentation>
+getDatagrams :: (MonadDOM m) => WebTransport -> m WebTransportDatagramDuplexStream
+getDatagrams self = liftDOM (((self ^. js "datagrams") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/incomingBidirectionalStreams MDN WebTransport.incomingBidirectionalStreams documentation>
+getIncomingBidirectionalStreams :: (MonadDOM m) => WebTransport -> m ReadableStream
+getIncomingBidirectionalStreams self = liftDOM (((self ^. js "incomingBidirectionalStreams") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/incomingUnidirectionalStreams MDN WebTransport.incomingUnidirectionalStreams documentation>
+getIncomingUnidirectionalStreams :: (MonadDOM m) => WebTransport -> m ReadableStream
+getIncomingUnidirectionalStreams self = liftDOM (((self ^. js "incomingUnidirectionalStreams") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransport/supportsReliableOnly_static MDN WebTransport.supportsReliableOnly documentation>
+getSupportsReliableOnlyStatic :: (MonadDOM m) => m Bool
+getSupportsReliableOnlyStatic = liftDOM ((((jsg "WebTransport") ^. js "supportsReliableOnly") >>= valToBool))
diff --git a/src/JSDOM/Generated/WebTransportBidirectionalStream.hs b/src/JSDOM/Generated/WebTransportBidirectionalStream.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportBidirectionalStream.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportBidirectionalStream
+       (getReadable, getWritable, WebTransportBidirectionalStream(..), gTypeWebTransportBidirectionalStream)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportBidirectionalStream/readable MDN WebTransportBidirectionalStream.readable documentation>
+getReadable :: (MonadDOM m) => WebTransportBidirectionalStream -> m WebTransportReceiveStream
+getReadable self = liftDOM (((self ^. js "readable") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportBidirectionalStream/writable MDN WebTransportBidirectionalStream.writable documentation>
+getWritable :: (MonadDOM m) => WebTransportBidirectionalStream -> m WebTransportSendStream
+getWritable self = liftDOM (((self ^. js "writable") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WebTransportCloseInfo.hs b/src/JSDOM/Generated/WebTransportCloseInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportCloseInfo.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportCloseInfo
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransportcloseinfo WebTransportCloseInfo specification>
+newWebTransportCloseInfo :: (MonadDOM m) => m WebTransportCloseInfo
+newWebTransportCloseInfo = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportcloseinfo-closecode WebTransportCloseInfo.closeCode specification>
+setCloseCode :: (MonadDOM m) => WebTransportCloseInfo -> Word -> m ()
+setCloseCode self val = liftDOM (void (self ^. jss "closeCode" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportcloseinfo-closecode WebTransportCloseInfo.closeCode specification>
+getCloseCode :: (MonadDOM m) => WebTransportCloseInfo -> m (Maybe Word)
+getCloseCode self = liftDOM (((self ^. js "closeCode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportcloseinfo-closecode WebTransportCloseInfo.closeCode specification>
+getCloseCodeUnsafe :: (MonadDOM m, HasCallStack) => WebTransportCloseInfo -> m Word
+getCloseCodeUnsafe self = liftDOM ((((self ^. js "closeCode") >>= 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 ((P.round <$> ((self ^. js "closeCode") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportcloseinfo-reason WebTransportCloseInfo.reason specification>
+setReason :: (MonadDOM m, ToJSString val) => WebTransportCloseInfo -> val -> m ()
+setReason self val = liftDOM (void (self ^. jss "reason" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportcloseinfo-reason WebTransportCloseInfo.reason specification>
+getReason :: (MonadDOM m, FromJSString result) => WebTransportCloseInfo -> m (Maybe result)
+getReason self = liftDOM (((self ^. js "reason") >>= fromMaybeJSString))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportcloseinfo-reason WebTransportCloseInfo.reason specification>
+getReasonUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => WebTransportCloseInfo -> m result
+getReasonUnsafe self = liftDOM ((((self ^. js "reason") >>= fromMaybeJSString) >>= 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 (((self ^. js "reason") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WebTransportConnectionStats.hs b/src/JSDOM/Generated/WebTransportConnectionStats.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportConnectionStats.hs
@@ -0,0 +1,236 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportConnectionStats
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransportconnectionstats WebTransportConnectionStats specification>
+newWebTransportConnectionStats :: (MonadDOM m) => WebTransportDatagramStats -> m WebTransportConnectionStats
+newWebTransportConnectionStats datagrams = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "datagrams" (toJSVal datagrams)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytessent WebTransportConnectionStats.bytesSent specification>
+setBytesSent :: (MonadDOM m) => WebTransportConnectionStats -> Word53 -> m ()
+setBytesSent self val = liftDOM (void (self ^. jss "bytesSent" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytessent WebTransportConnectionStats.bytesSent specification>
+getBytesSent :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getBytesSent self = liftDOM (((self ^. js "bytesSent") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytessent WebTransportConnectionStats.bytesSent specification>
+getBytesSentUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getBytesSentUnsafe self = liftDOM ((((self ^. js "bytesSent") >>= 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 (((self ^. js "bytesSent") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytessentoverhead WebTransportConnectionStats.bytesSentOverhead specification>
+setBytesSentOverhead :: (MonadDOM m) => WebTransportConnectionStats -> Word53 -> m ()
+setBytesSentOverhead self val = liftDOM (void (self ^. jss "bytesSentOverhead" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytessentoverhead WebTransportConnectionStats.bytesSentOverhead specification>
+getBytesSentOverhead :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getBytesSentOverhead self = liftDOM (((self ^. js "bytesSentOverhead") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytessentoverhead WebTransportConnectionStats.bytesSentOverhead specification>
+getBytesSentOverheadUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getBytesSentOverheadUnsafe self = liftDOM ((((self ^. js "bytesSentOverhead") >>= 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 (((self ^. js "bytesSentOverhead") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytesacknowledged WebTransportConnectionStats.bytesAcknowledged specification>
+setBytesAcknowledged :: (MonadDOM m) => WebTransportConnectionStats -> Word53 -> m ()
+setBytesAcknowledged self val = liftDOM (void (self ^. jss "bytesAcknowledged" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytesacknowledged WebTransportConnectionStats.bytesAcknowledged specification>
+getBytesAcknowledged :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getBytesAcknowledged self = liftDOM (((self ^. js "bytesAcknowledged") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytesacknowledged WebTransportConnectionStats.bytesAcknowledged specification>
+getBytesAcknowledgedUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getBytesAcknowledgedUnsafe self = liftDOM ((((self ^. js "bytesAcknowledged") >>= 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 (((self ^. js "bytesAcknowledged") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetssent WebTransportConnectionStats.packetsSent specification>
+setPacketsSent :: (MonadDOM m) => WebTransportConnectionStats -> Word53 -> m ()
+setPacketsSent self val = liftDOM (void (self ^. jss "packetsSent" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetssent WebTransportConnectionStats.packetsSent specification>
+getPacketsSent :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getPacketsSent self = liftDOM (((self ^. js "packetsSent") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetssent WebTransportConnectionStats.packetsSent specification>
+getPacketsSentUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getPacketsSentUnsafe self = liftDOM ((((self ^. js "packetsSent") >>= 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 (((self ^. js "packetsSent") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-byteslost WebTransportConnectionStats.bytesLost specification>
+setBytesLost :: (MonadDOM m) => WebTransportConnectionStats -> Word53 -> m ()
+setBytesLost self val = liftDOM (void (self ^. jss "bytesLost" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-byteslost WebTransportConnectionStats.bytesLost specification>
+getBytesLost :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getBytesLost self = liftDOM (((self ^. js "bytesLost") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-byteslost WebTransportConnectionStats.bytesLost specification>
+getBytesLostUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getBytesLostUnsafe self = liftDOM ((((self ^. js "bytesLost") >>= 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 (((self ^. js "bytesLost") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetslost WebTransportConnectionStats.packetsLost specification>
+setPacketsLost :: (MonadDOM m) => WebTransportConnectionStats -> Word53 -> m ()
+setPacketsLost self val = liftDOM (void (self ^. jss "packetsLost" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetslost WebTransportConnectionStats.packetsLost specification>
+getPacketsLost :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getPacketsLost self = liftDOM (((self ^. js "packetsLost") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetslost WebTransportConnectionStats.packetsLost specification>
+getPacketsLostUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getPacketsLostUnsafe self = liftDOM ((((self ^. js "packetsLost") >>= 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 (((self ^. js "packetsLost") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytesreceived WebTransportConnectionStats.bytesReceived specification>
+setBytesReceived :: (MonadDOM m) => WebTransportConnectionStats -> Word53 -> m ()
+setBytesReceived self val = liftDOM (void (self ^. jss "bytesReceived" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytesreceived WebTransportConnectionStats.bytesReceived specification>
+getBytesReceived :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getBytesReceived self = liftDOM (((self ^. js "bytesReceived") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-bytesreceived WebTransportConnectionStats.bytesReceived specification>
+getBytesReceivedUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getBytesReceivedUnsafe self = liftDOM ((((self ^. js "bytesReceived") >>= 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 (((self ^. js "bytesReceived") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetsreceived WebTransportConnectionStats.packetsReceived specification>
+setPacketsReceived :: (MonadDOM m) => WebTransportConnectionStats -> Word53 -> m ()
+setPacketsReceived self val = liftDOM (void (self ^. jss "packetsReceived" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetsreceived WebTransportConnectionStats.packetsReceived specification>
+getPacketsReceived :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getPacketsReceived self = liftDOM (((self ^. js "packetsReceived") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-packetsreceived WebTransportConnectionStats.packetsReceived specification>
+getPacketsReceivedUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getPacketsReceivedUnsafe self = liftDOM ((((self ^. js "packetsReceived") >>= 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 (((self ^. js "packetsReceived") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-smoothedrtt WebTransportConnectionStats.smoothedRtt specification>
+setSmoothedRtt :: (MonadDOM m) => WebTransportConnectionStats -> Double -> m ()
+setSmoothedRtt self val = liftDOM (void (self ^. jss "smoothedRtt" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-smoothedrtt WebTransportConnectionStats.smoothedRtt specification>
+getSmoothedRtt :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Double)
+getSmoothedRtt self = liftDOM (((self ^. js "smoothedRtt") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-smoothedrtt WebTransportConnectionStats.smoothedRtt specification>
+getSmoothedRttUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Double
+getSmoothedRttUnsafe self = liftDOM ((((self ^. js "smoothedRtt") >>= 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 (((self ^. js "smoothedRtt") >>= valToNumber))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-rttvariation WebTransportConnectionStats.rttVariation specification>
+setRttVariation :: (MonadDOM m) => WebTransportConnectionStats -> Double -> m ()
+setRttVariation self val = liftDOM (void (self ^. jss "rttVariation" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-rttvariation WebTransportConnectionStats.rttVariation specification>
+getRttVariation :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Double)
+getRttVariation self = liftDOM (((self ^. js "rttVariation") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-rttvariation WebTransportConnectionStats.rttVariation specification>
+getRttVariationUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Double
+getRttVariationUnsafe self = liftDOM ((((self ^. js "rttVariation") >>= 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 (((self ^. js "rttVariation") >>= valToNumber))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-minrtt WebTransportConnectionStats.minRtt specification>
+setMinRtt :: (MonadDOM m) => WebTransportConnectionStats -> Double -> m ()
+setMinRtt self val = liftDOM (void (self ^. jss "minRtt" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-minrtt WebTransportConnectionStats.minRtt specification>
+getMinRtt :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Double)
+getMinRtt self = liftDOM (((self ^. js "minRtt") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-minrtt WebTransportConnectionStats.minRtt specification>
+getMinRttUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Double
+getMinRttUnsafe self = liftDOM ((((self ^. js "minRtt") >>= 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 (((self ^. js "minRtt") >>= valToNumber))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-datagrams WebTransportConnectionStats.datagrams specification>
+setDatagrams :: (MonadDOM m) => WebTransportConnectionStats -> WebTransportDatagramStats -> m ()
+setDatagrams self val = liftDOM (void (self ^. jss "datagrams" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-datagrams WebTransportConnectionStats.datagrams specification>
+getDatagrams :: (MonadDOM m) => WebTransportConnectionStats -> m WebTransportDatagramStats
+getDatagrams self = liftDOM (((self ^. js "datagrams") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-estimatedsendrate WebTransportConnectionStats.estimatedSendRate specification>
+setEstimatedSendRate :: (MonadDOM m) => WebTransportConnectionStats -> Maybe Word53 -> m ()
+setEstimatedSendRate self val = liftDOM (void (self ^. jss "estimatedSendRate" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-estimatedsendrate WebTransportConnectionStats.estimatedSendRate specification>
+getEstimatedSendRate :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Word53)
+getEstimatedSendRate self = liftDOM (((self ^. js "estimatedSendRate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-estimatedsendrate WebTransportConnectionStats.estimatedSendRate specification>
+getEstimatedSendRateUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Word53
+getEstimatedSendRateUnsafe self = liftDOM ((((self ^. js "estimatedSendRate") >>= 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 (((self ^. js "estimatedSendRate") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-atsendcapacity WebTransportConnectionStats.atSendCapacity specification>
+setAtSendCapacity :: (MonadDOM m) => WebTransportConnectionStats -> Bool -> m ()
+setAtSendCapacity self val = liftDOM (void (self ^. jss "atSendCapacity" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-atsendcapacity WebTransportConnectionStats.atSendCapacity specification>
+getAtSendCapacity :: (MonadDOM m) => WebTransportConnectionStats -> m (Maybe Bool)
+getAtSendCapacity self = liftDOM (((self ^. js "atSendCapacity") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportconnectionstats-atsendcapacity WebTransportConnectionStats.atSendCapacity specification>
+getAtSendCapacityUnsafe :: (MonadDOM m, HasCallStack) => WebTransportConnectionStats -> m Bool
+getAtSendCapacityUnsafe self = liftDOM ((((self ^. js "atSendCapacity") >>= 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 (((self ^. js "atSendCapacity") >>= valToBool))
diff --git a/src/JSDOM/Generated/WebTransportDatagramDuplexStream.hs b/src/JSDOM/Generated/WebTransportDatagramDuplexStream.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportDatagramDuplexStream.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportDatagramDuplexStream
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((self ^. jsf "createWritable" [P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "createWritable" [P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/readable MDN WebTransportDatagramDuplexStream.readable documentation>
+getReadable :: (MonadDOM m) => WebTransportDatagramDuplexStream -> m ReadableStream
+getReadable self = liftDOM (((self ^. js "readable") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/maxDatagramSize MDN WebTransportDatagramDuplexStream.maxDatagramSize documentation>
+getMaxDatagramSize :: (MonadDOM m) => WebTransportDatagramDuplexStream -> m Word
+getMaxDatagramSize self = liftDOM ((P.round <$> ((self ^. js "maxDatagramSize") >>= valToNumber)))
+
+-- | <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 (self ^. jss "incomingMaxAge" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/incomingMaxAge MDN WebTransportDatagramDuplexStream.incomingMaxAge documentation>
+getIncomingMaxAge :: (MonadDOM m) => WebTransportDatagramDuplexStream -> m (Maybe Double)
+getIncomingMaxAge self = liftDOM (((self ^. js "incomingMaxAge") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/incomingMaxAge MDN WebTransportDatagramDuplexStream.incomingMaxAge documentation>
+getIncomingMaxAgeUnsafe :: (MonadDOM m, HasCallStack) => WebTransportDatagramDuplexStream -> m Double
+getIncomingMaxAgeUnsafe self = liftDOM ((((self ^. js "incomingMaxAge") >>= 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 (((self ^. js "incomingMaxAge") >>= valToNumber))
+
+-- | <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 (self ^. jss "outgoingMaxAge" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/outgoingMaxAge MDN WebTransportDatagramDuplexStream.outgoingMaxAge documentation>
+getOutgoingMaxAge :: (MonadDOM m) => WebTransportDatagramDuplexStream -> m (Maybe Double)
+getOutgoingMaxAge self = liftDOM (((self ^. js "outgoingMaxAge") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramDuplexStream/outgoingMaxAge MDN WebTransportDatagramDuplexStream.outgoingMaxAge documentation>
+getOutgoingMaxAgeUnsafe :: (MonadDOM m, HasCallStack) => WebTransportDatagramDuplexStream -> m Double
+getOutgoingMaxAgeUnsafe self = liftDOM ((((self ^. js "outgoingMaxAge") >>= 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 (((self ^. js "outgoingMaxAge") >>= valToNumber))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramduplexstream-incomingmaxbuffereddatagrams WebTransportDatagramDuplexStream.incomingMaxBufferedDatagrams specification>
+setIncomingMaxBufferedDatagrams :: (MonadDOM m) => WebTransportDatagramDuplexStream -> Word -> m ()
+setIncomingMaxBufferedDatagrams self val = liftDOM (void (self ^. jss "incomingMaxBufferedDatagrams" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramduplexstream-incomingmaxbuffereddatagrams WebTransportDatagramDuplexStream.incomingMaxBufferedDatagrams specification>
+getIncomingMaxBufferedDatagrams :: (MonadDOM m) => WebTransportDatagramDuplexStream -> m Word
+getIncomingMaxBufferedDatagrams self = liftDOM ((P.round <$> ((self ^. js "incomingMaxBufferedDatagrams") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramduplexstream-outgoingmaxbuffereddatagrams WebTransportDatagramDuplexStream.outgoingMaxBufferedDatagrams specification>
+setOutgoingMaxBufferedDatagrams :: (MonadDOM m) => WebTransportDatagramDuplexStream -> Word -> m ()
+setOutgoingMaxBufferedDatagrams self val = liftDOM (void (self ^. jss "outgoingMaxBufferedDatagrams" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramduplexstream-outgoingmaxbuffereddatagrams WebTransportDatagramDuplexStream.outgoingMaxBufferedDatagrams specification>
+getOutgoingMaxBufferedDatagrams :: (MonadDOM m) => WebTransportDatagramDuplexStream -> m Word
+getOutgoingMaxBufferedDatagrams self = liftDOM ((P.round <$> ((self ^. js "outgoingMaxBufferedDatagrams") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/WebTransportDatagramStats.hs b/src/JSDOM/Generated/WebTransportDatagramStats.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportDatagramStats.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportDatagramStats
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransportdatagramstats WebTransportDatagramStats specification>
+newWebTransportDatagramStats :: (MonadDOM m) => m WebTransportDatagramStats
+newWebTransportDatagramStats = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-droppedincoming WebTransportDatagramStats.droppedIncoming specification>
+setDroppedIncoming :: (MonadDOM m) => WebTransportDatagramStats -> Word53 -> m ()
+setDroppedIncoming self val = liftDOM (void (self ^. jss "droppedIncoming" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-droppedincoming WebTransportDatagramStats.droppedIncoming specification>
+getDroppedIncoming :: (MonadDOM m) => WebTransportDatagramStats -> m (Maybe Word53)
+getDroppedIncoming self = liftDOM (((self ^. js "droppedIncoming") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-droppedincoming WebTransportDatagramStats.droppedIncoming specification>
+getDroppedIncomingUnsafe :: (MonadDOM m, HasCallStack) => WebTransportDatagramStats -> m Word53
+getDroppedIncomingUnsafe self = liftDOM ((((self ^. js "droppedIncoming") >>= 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 (((self ^. js "droppedIncoming") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-expiredincoming WebTransportDatagramStats.expiredIncoming specification>
+setExpiredIncoming :: (MonadDOM m) => WebTransportDatagramStats -> Word53 -> m ()
+setExpiredIncoming self val = liftDOM (void (self ^. jss "expiredIncoming" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-expiredincoming WebTransportDatagramStats.expiredIncoming specification>
+getExpiredIncoming :: (MonadDOM m) => WebTransportDatagramStats -> m (Maybe Word53)
+getExpiredIncoming self = liftDOM (((self ^. js "expiredIncoming") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-expiredincoming WebTransportDatagramStats.expiredIncoming specification>
+getExpiredIncomingUnsafe :: (MonadDOM m, HasCallStack) => WebTransportDatagramStats -> m Word53
+getExpiredIncomingUnsafe self = liftDOM ((((self ^. js "expiredIncoming") >>= 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 (((self ^. js "expiredIncoming") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-expiredoutgoing WebTransportDatagramStats.expiredOutgoing specification>
+setExpiredOutgoing :: (MonadDOM m) => WebTransportDatagramStats -> Word53 -> m ()
+setExpiredOutgoing self val = liftDOM (void (self ^. jss "expiredOutgoing" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-expiredoutgoing WebTransportDatagramStats.expiredOutgoing specification>
+getExpiredOutgoing :: (MonadDOM m) => WebTransportDatagramStats -> m (Maybe Word53)
+getExpiredOutgoing self = liftDOM (((self ^. js "expiredOutgoing") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-expiredoutgoing WebTransportDatagramStats.expiredOutgoing specification>
+getExpiredOutgoingUnsafe :: (MonadDOM m, HasCallStack) => WebTransportDatagramStats -> m Word53
+getExpiredOutgoingUnsafe self = liftDOM ((((self ^. js "expiredOutgoing") >>= 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 (((self ^. js "expiredOutgoing") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-lostoutgoing WebTransportDatagramStats.lostOutgoing specification>
+setLostOutgoing :: (MonadDOM m) => WebTransportDatagramStats -> Word53 -> m ()
+setLostOutgoing self val = liftDOM (void (self ^. jss "lostOutgoing" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-lostoutgoing WebTransportDatagramStats.lostOutgoing specification>
+getLostOutgoing :: (MonadDOM m) => WebTransportDatagramStats -> m (Maybe Word53)
+getLostOutgoing self = liftDOM (((self ^. js "lostOutgoing") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportdatagramstats-lostoutgoing WebTransportDatagramStats.lostOutgoing specification>
+getLostOutgoingUnsafe :: (MonadDOM m, HasCallStack) => WebTransportDatagramStats -> m Word53
+getLostOutgoingUnsafe self = liftDOM ((((self ^. js "lostOutgoing") >>= 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 (((self ^. js "lostOutgoing") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WebTransportDatagramsWritable.hs b/src/JSDOM/Generated/WebTransportDatagramsWritable.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportDatagramsWritable.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportDatagramsWritable
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (self ^. jss "sendGroup" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramsWritable/sendGroup MDN WebTransportDatagramsWritable.sendGroup documentation>
+getSendGroup :: (MonadDOM m) => WebTransportDatagramsWritable -> m (Maybe WebTransportSendGroup)
+getSendGroup self = liftDOM (((self ^. js "sendGroup") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramsWritable/sendGroup MDN WebTransportDatagramsWritable.sendGroup documentation>
+getSendGroupUnsafe :: (MonadDOM m, HasCallStack) => WebTransportDatagramsWritable -> m WebTransportSendGroup
+getSendGroupUnsafe self = liftDOM ((((self ^. js "sendGroup") >>= 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 (((self ^. js "sendGroup") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramsWritable/sendOrder MDN WebTransportDatagramsWritable.sendOrder documentation>
+setSendOrder :: (MonadDOM m) => WebTransportDatagramsWritable -> Int53 -> m ()
+setSendOrder self val = liftDOM (void (self ^. jss "sendOrder" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportDatagramsWritable/sendOrder MDN WebTransportDatagramsWritable.sendOrder documentation>
+getSendOrder :: (MonadDOM m) => WebTransportDatagramsWritable -> m Int53
+getSendOrder self = liftDOM (((self ^. js "sendOrder") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WebTransportError.hs b/src/JSDOM/Generated/WebTransportError.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportError.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportError
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 (((new (jsg "WebTransportError") [P.maybe (P.return jsUndefined) toJSVal message, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportError/source MDN WebTransportError.source documentation>
+getSource :: (MonadDOM m) => WebTransportError -> m WebTransportErrorSource
+getSource self = liftDOM (((self ^. js "source") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportError/streamErrorCode MDN WebTransportError.streamErrorCode documentation>
+getStreamErrorCode :: (MonadDOM m) => WebTransportError -> m (Maybe Word)
+getStreamErrorCode self = liftDOM (((self ^. js "streamErrorCode") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportError/streamErrorCode MDN WebTransportError.streamErrorCode documentation>
+getStreamErrorCodeUnsafe :: (MonadDOM m, HasCallStack) => WebTransportError -> m Word
+getStreamErrorCodeUnsafe self = liftDOM ((((self ^. js "streamErrorCode") >>= 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 ((P.round <$> ((self ^. js "streamErrorCode") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/WebTransportErrorOptions.hs b/src/JSDOM/Generated/WebTransportErrorOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportErrorOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportErrorOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransporterroroptions WebTransportErrorOptions specification>
+newWebTransportErrorOptions :: (MonadDOM m) => m WebTransportErrorOptions
+newWebTransportErrorOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransporterroroptions-source WebTransportErrorOptions.source specification>
+setSource :: (MonadDOM m) => WebTransportErrorOptions -> WebTransportErrorSource -> m ()
+setSource self val = liftDOM (void (self ^. jss "source" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransporterroroptions-source WebTransportErrorOptions.source specification>
+getSource :: (MonadDOM m) => WebTransportErrorOptions -> m (Maybe WebTransportErrorSource)
+getSource self = liftDOM (((self ^. js "source") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransporterroroptions-source WebTransportErrorOptions.source specification>
+getSourceUnsafe :: (MonadDOM m, HasCallStack) => WebTransportErrorOptions -> m WebTransportErrorSource
+getSourceUnsafe self = liftDOM ((((self ^. js "source") >>= 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 (((self ^. js "source") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransporterroroptions-streamerrorcode WebTransportErrorOptions.streamErrorCode specification>
+setStreamErrorCode :: (MonadDOM m) => WebTransportErrorOptions -> Maybe Word -> m ()
+setStreamErrorCode self val = liftDOM (void (self ^. jss "streamErrorCode" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransporterroroptions-streamerrorcode WebTransportErrorOptions.streamErrorCode specification>
+getStreamErrorCode :: (MonadDOM m) => WebTransportErrorOptions -> m (Maybe Word)
+getStreamErrorCode self = liftDOM (((self ^. js "streamErrorCode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransporterroroptions-streamerrorcode WebTransportErrorOptions.streamErrorCode specification>
+getStreamErrorCodeUnsafe :: (MonadDOM m, HasCallStack) => WebTransportErrorOptions -> m Word
+getStreamErrorCodeUnsafe self = liftDOM ((((self ^. js "streamErrorCode") >>= 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 ((P.round <$> ((self ^. js "streamErrorCode") >>= valToNumber)))
diff --git a/src/JSDOM/Generated/WebTransportHash.hs b/src/JSDOM/Generated/WebTransportHash.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportHash.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportHash
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransporthash WebTransportHash specification>
+newWebTransportHash :: (MonadDOM m, ToJSString algorithm, IsBufferSource value) => algorithm -> value -> m WebTransportHash
+newWebTransportHash algorithm value = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "algorithm" (toJSVal algorithm)) P.>> (o ^. jss "value" (toJSVal value)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransporthash-algorithm WebTransportHash.algorithm specification>
+setAlgorithm :: (MonadDOM m, ToJSString val) => WebTransportHash -> val -> m ()
+setAlgorithm self val = liftDOM (void (self ^. jss "algorithm" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransporthash-algorithm WebTransportHash.algorithm specification>
+getAlgorithm :: (MonadDOM m, FromJSString result) => WebTransportHash -> m result
+getAlgorithm self = liftDOM (((self ^. js "algorithm") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransporthash-value WebTransportHash.value specification>
+setValue :: (MonadDOM m, IsBufferSource val) => WebTransportHash -> val -> m ()
+setValue self val = liftDOM (void (self ^. jss "value" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransporthash-value WebTransportHash.value specification>
+getValue :: (MonadDOM m) => WebTransportHash -> m BufferSource
+getValue self = liftDOM (((self ^. js "value") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WebTransportOptions.hs b/src/JSDOM/Generated/WebTransportOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportOptions.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransportoptions WebTransportOptions specification>
+newWebTransportOptions :: (MonadDOM m) => m WebTransportOptions
+newWebTransportOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-allowpooling WebTransportOptions.allowPooling specification>
+setAllowPooling :: (MonadDOM m) => WebTransportOptions -> Bool -> m ()
+setAllowPooling self val = liftDOM (void (self ^. jss "allowPooling" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-allowpooling WebTransportOptions.allowPooling specification>
+getAllowPooling :: (MonadDOM m) => WebTransportOptions -> m (Maybe Bool)
+getAllowPooling self = liftDOM (((self ^. js "allowPooling") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-allowpooling WebTransportOptions.allowPooling specification>
+getAllowPoolingUnsafe :: (MonadDOM m, HasCallStack) => WebTransportOptions -> m Bool
+getAllowPoolingUnsafe self = liftDOM ((((self ^. js "allowPooling") >>= 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 (((self ^. js "allowPooling") >>= valToBool))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-requireunreliable WebTransportOptions.requireUnreliable specification>
+setRequireUnreliable :: (MonadDOM m) => WebTransportOptions -> Bool -> m ()
+setRequireUnreliable self val = liftDOM (void (self ^. jss "requireUnreliable" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-requireunreliable WebTransportOptions.requireUnreliable specification>
+getRequireUnreliable :: (MonadDOM m) => WebTransportOptions -> m (Maybe Bool)
+getRequireUnreliable self = liftDOM (((self ^. js "requireUnreliable") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-requireunreliable WebTransportOptions.requireUnreliable specification>
+getRequireUnreliableUnsafe :: (MonadDOM m, HasCallStack) => WebTransportOptions -> m Bool
+getRequireUnreliableUnsafe self = liftDOM ((((self ^. js "requireUnreliable") >>= 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 (((self ^. js "requireUnreliable") >>= valToBool))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-headers WebTransportOptions.headers specification>
+setHeaders :: (MonadDOM m, IsHeadersInit val) => WebTransportOptions -> val -> m ()
+setHeaders self val = liftDOM (void (self ^. jss "headers" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-headers WebTransportOptions.headers specification>
+getHeaders :: (MonadDOM m) => WebTransportOptions -> m (Maybe HeadersInit)
+getHeaders self = liftDOM (((self ^. js "headers") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-headers WebTransportOptions.headers specification>
+getHeadersUnsafe :: (MonadDOM m, HasCallStack) => WebTransportOptions -> m HeadersInit
+getHeadersUnsafe self = liftDOM ((((self ^. js "headers") >>= 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 (((self ^. js "headers") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-servercertificatehashes WebTransportOptions.serverCertificateHashes specification>
+setServerCertificateHashes :: (MonadDOM m) => WebTransportOptions -> [WebTransportHash] -> m ()
+setServerCertificateHashes self val = liftDOM (void (self ^. jss "serverCertificateHashes" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-servercertificatehashes WebTransportOptions.serverCertificateHashes specification>
+getServerCertificateHashes :: (MonadDOM m) => WebTransportOptions -> m (Maybe [WebTransportHash])
+getServerCertificateHashes self = liftDOM (((self ^. js "serverCertificateHashes") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-servercertificatehashes WebTransportOptions.serverCertificateHashes specification>
+getServerCertificateHashesUnsafe :: (MonadDOM m, HasCallStack) => WebTransportOptions -> m [WebTransportHash]
+getServerCertificateHashesUnsafe self = liftDOM ((((self ^. js "serverCertificateHashes") >>= 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 (((self ^. js "serverCertificateHashes") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-congestioncontrol WebTransportOptions.congestionControl specification>
+setCongestionControl :: (MonadDOM m) => WebTransportOptions -> WebTransportCongestionControl -> m ()
+setCongestionControl self val = liftDOM (void (self ^. jss "congestionControl" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-congestioncontrol WebTransportOptions.congestionControl specification>
+getCongestionControl :: (MonadDOM m) => WebTransportOptions -> m (Maybe WebTransportCongestionControl)
+getCongestionControl self = liftDOM (((self ^. js "congestionControl") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-congestioncontrol WebTransportOptions.congestionControl specification>
+getCongestionControlUnsafe :: (MonadDOM m, HasCallStack) => WebTransportOptions -> m WebTransportCongestionControl
+getCongestionControlUnsafe self = liftDOM ((((self ^. js "congestionControl") >>= 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 (((self ^. js "congestionControl") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-anticipatedconcurrentincomingunidirectionalstreams WebTransportOptions.anticipatedConcurrentIncomingUnidirectionalStreams specification>
+setAnticipatedConcurrentIncomingUnidirectionalStreams :: (MonadDOM m) => WebTransportOptions -> Maybe Word -> m ()
+setAnticipatedConcurrentIncomingUnidirectionalStreams self val = liftDOM (void (self ^. jss "anticipatedConcurrentIncomingUnidirectionalStreams" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-anticipatedconcurrentincomingunidirectionalstreams WebTransportOptions.anticipatedConcurrentIncomingUnidirectionalStreams specification>
+getAnticipatedConcurrentIncomingUnidirectionalStreams :: (MonadDOM m) => WebTransportOptions -> m (Maybe Word)
+getAnticipatedConcurrentIncomingUnidirectionalStreams self = liftDOM (((self ^. js "anticipatedConcurrentIncomingUnidirectionalStreams") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-anticipatedconcurrentincomingunidirectionalstreams WebTransportOptions.anticipatedConcurrentIncomingUnidirectionalStreams specification>
+getAnticipatedConcurrentIncomingUnidirectionalStreamsUnsafe :: (MonadDOM m, HasCallStack) => WebTransportOptions -> m Word
+getAnticipatedConcurrentIncomingUnidirectionalStreamsUnsafe self = liftDOM ((((self ^. js "anticipatedConcurrentIncomingUnidirectionalStreams") >>= 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 ((P.round <$> ((self ^. js "anticipatedConcurrentIncomingUnidirectionalStreams") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-anticipatedconcurrentincomingbidirectionalstreams WebTransportOptions.anticipatedConcurrentIncomingBidirectionalStreams specification>
+setAnticipatedConcurrentIncomingBidirectionalStreams :: (MonadDOM m) => WebTransportOptions -> Maybe Word -> m ()
+setAnticipatedConcurrentIncomingBidirectionalStreams self val = liftDOM (void (self ^. jss "anticipatedConcurrentIncomingBidirectionalStreams" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-anticipatedconcurrentincomingbidirectionalstreams WebTransportOptions.anticipatedConcurrentIncomingBidirectionalStreams specification>
+getAnticipatedConcurrentIncomingBidirectionalStreams :: (MonadDOM m) => WebTransportOptions -> m (Maybe Word)
+getAnticipatedConcurrentIncomingBidirectionalStreams self = liftDOM (((self ^. js "anticipatedConcurrentIncomingBidirectionalStreams") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-anticipatedconcurrentincomingbidirectionalstreams WebTransportOptions.anticipatedConcurrentIncomingBidirectionalStreams specification>
+getAnticipatedConcurrentIncomingBidirectionalStreamsUnsafe :: (MonadDOM m, HasCallStack) => WebTransportOptions -> m Word
+getAnticipatedConcurrentIncomingBidirectionalStreamsUnsafe self = liftDOM ((((self ^. js "anticipatedConcurrentIncomingBidirectionalStreams") >>= 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 ((P.round <$> ((self ^. js "anticipatedConcurrentIncomingBidirectionalStreams") >>= valToNumber)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-protocols WebTransportOptions.protocols specification>
+setProtocols :: (MonadDOM m, ToJSString val) => WebTransportOptions -> [val] -> m ()
+setProtocols self val = liftDOM (void (self ^. jss "protocols" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-protocols WebTransportOptions.protocols specification>
+getProtocols :: (MonadDOM m, FromJSString result) => WebTransportOptions -> m (Maybe [result])
+getProtocols self = liftDOM (((self ^. js "protocols") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-protocols WebTransportOptions.protocols specification>
+getProtocolsUnsafe :: (MonadDOM m, HasCallStack, FromJSString result) => WebTransportOptions -> m [result]
+getProtocolsUnsafe self = liftDOM ((((self ^. js "protocols") >>= 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 (((self ^. js "protocols") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-datagramsreadabletype WebTransportOptions.datagramsReadableType specification>
+setDatagramsReadableType :: (MonadDOM m) => WebTransportOptions -> ReadableStreamType -> m ()
+setDatagramsReadableType self val = liftDOM (void (self ^. jss "datagramsReadableType" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-datagramsreadabletype WebTransportOptions.datagramsReadableType specification>
+getDatagramsReadableType :: (MonadDOM m) => WebTransportOptions -> m (Maybe ReadableStreamType)
+getDatagramsReadableType self = liftDOM (((self ^. js "datagramsReadableType") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportoptions-datagramsreadabletype WebTransportOptions.datagramsReadableType specification>
+getDatagramsReadableTypeUnsafe :: (MonadDOM m, HasCallStack) => WebTransportOptions -> m ReadableStreamType
+getDatagramsReadableTypeUnsafe self = liftDOM ((((self ^. js "datagramsReadableType") >>= 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 (((self ^. js "datagramsReadableType") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WebTransportReceiveStream.hs b/src/JSDOM/Generated/WebTransportReceiveStream.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportReceiveStream.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportReceiveStream
+       (getStats, getStats_, WebTransportReceiveStream(..), gTypeWebTransportReceiveStream)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportReceiveStream/getStats MDN WebTransportReceiveStream.getStats documentation>
+getStats :: (MonadDOM m) => WebTransportReceiveStream -> m WebTransportReceiveStreamStats
+getStats self = liftDOM (((((self ^. jsf "getStats" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportReceiveStream/getStats MDN WebTransportReceiveStream.getStats documentation>
+getStats_ :: (MonadDOM m) => WebTransportReceiveStream -> m ()
+getStats_ self = liftDOM (void (((self ^. jsf "getStats" ()) >>= readPromise)))
diff --git a/src/JSDOM/Generated/WebTransportReceiveStreamStats.hs b/src/JSDOM/Generated/WebTransportReceiveStreamStats.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportReceiveStreamStats.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportReceiveStreamStats
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransportreceivestreamstats WebTransportReceiveStreamStats specification>
+newWebTransportReceiveStreamStats :: (MonadDOM m) => m WebTransportReceiveStreamStats
+newWebTransportReceiveStreamStats = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportreceivestreamstats-bytesreceived WebTransportReceiveStreamStats.bytesReceived specification>
+setBytesReceived :: (MonadDOM m) => WebTransportReceiveStreamStats -> Word53 -> m ()
+setBytesReceived self val = liftDOM (void (self ^. jss "bytesReceived" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportreceivestreamstats-bytesreceived WebTransportReceiveStreamStats.bytesReceived specification>
+getBytesReceived :: (MonadDOM m) => WebTransportReceiveStreamStats -> m (Maybe Word53)
+getBytesReceived self = liftDOM (((self ^. js "bytesReceived") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportreceivestreamstats-bytesreceived WebTransportReceiveStreamStats.bytesReceived specification>
+getBytesReceivedUnsafe :: (MonadDOM m, HasCallStack) => WebTransportReceiveStreamStats -> m Word53
+getBytesReceivedUnsafe self = liftDOM ((((self ^. js "bytesReceived") >>= 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 (((self ^. js "bytesReceived") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportreceivestreamstats-bytesread WebTransportReceiveStreamStats.bytesRead specification>
+setBytesRead :: (MonadDOM m) => WebTransportReceiveStreamStats -> Word53 -> m ()
+setBytesRead self val = liftDOM (void (self ^. jss "bytesRead" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportreceivestreamstats-bytesread WebTransportReceiveStreamStats.bytesRead specification>
+getBytesRead :: (MonadDOM m) => WebTransportReceiveStreamStats -> m (Maybe Word53)
+getBytesRead self = liftDOM (((self ^. js "bytesRead") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportreceivestreamstats-bytesread WebTransportReceiveStreamStats.bytesRead specification>
+getBytesReadUnsafe :: (MonadDOM m, HasCallStack) => WebTransportReceiveStreamStats -> m Word53
+getBytesReadUnsafe self = liftDOM ((((self ^. js "bytesRead") >>= 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 (((self ^. js "bytesRead") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WebTransportSendGroup.hs b/src/JSDOM/Generated/WebTransportSendGroup.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportSendGroup.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportSendGroup
+       (getStats, getStats_, WebTransportSendGroup(..), gTypeWebTransportSendGroup)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendGroup/getStats MDN WebTransportSendGroup.getStats documentation>
+getStats :: (MonadDOM m) => WebTransportSendGroup -> m WebTransportSendStreamStats
+getStats self = liftDOM (((((self ^. jsf "getStats" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendGroup/getStats MDN WebTransportSendGroup.getStats documentation>
+getStats_ :: (MonadDOM m) => WebTransportSendGroup -> m ()
+getStats_ self = liftDOM (void (((self ^. jsf "getStats" ()) >>= readPromise)))
diff --git a/src/JSDOM/Generated/WebTransportSendOptions.hs b/src/JSDOM/Generated/WebTransportSendOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportSendOptions.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportSendOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransportsendoptions WebTransportSendOptions specification>
+newWebTransportSendOptions :: (MonadDOM m) => m WebTransportSendOptions
+newWebTransportSendOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toWebTransportSendOptions self) ^. jss "sendGroup" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendoptions-sendgroup WebTransportSendOptions.sendGroup specification>
+getSendGroup :: (MonadDOM m, IsWebTransportSendOptions self) => self -> m (Maybe WebTransportSendGroup)
+getSendGroup self = liftDOM ((((Types.toWebTransportSendOptions self) ^. js "sendGroup") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendoptions-sendgroup WebTransportSendOptions.sendGroup specification>
+getSendGroupUnsafe :: (MonadDOM m, IsWebTransportSendOptions self, HasCallStack) => self -> m WebTransportSendGroup
+getSendGroupUnsafe self = liftDOM (((((Types.toWebTransportSendOptions self) ^. js "sendGroup") >>= 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 ((((Types.toWebTransportSendOptions self) ^. js "sendGroup") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendoptions-sendorder WebTransportSendOptions.sendOrder specification>
+setSendOrder :: (MonadDOM m, IsWebTransportSendOptions self) => self -> Int53 -> m ()
+setSendOrder self val = liftDOM (void ((Types.toWebTransportSendOptions self) ^. jss "sendOrder" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendoptions-sendorder WebTransportSendOptions.sendOrder specification>
+getSendOrder :: (MonadDOM m, IsWebTransportSendOptions self) => self -> m (Maybe Int53)
+getSendOrder self = liftDOM ((((Types.toWebTransportSendOptions self) ^. js "sendOrder") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendoptions-sendorder WebTransportSendOptions.sendOrder specification>
+getSendOrderUnsafe :: (MonadDOM m, IsWebTransportSendOptions self, HasCallStack) => self -> m Int53
+getSendOrderUnsafe self = liftDOM (((((Types.toWebTransportSendOptions self) ^. js "sendOrder") >>= 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 ((((Types.toWebTransportSendOptions self) ^. js "sendOrder") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WebTransportSendStream.hs b/src/JSDOM/Generated/WebTransportSendStream.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportSendStream.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportSendStream
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/getStats MDN WebTransportSendStream.getStats documentation>
+getStats :: (MonadDOM m) => WebTransportSendStream -> m WebTransportSendStreamStats
+getStats self = liftDOM (((((self ^. jsf "getStats" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/getStats MDN WebTransportSendStream.getStats documentation>
+getStats_ :: (MonadDOM m) => WebTransportSendStream -> m ()
+getStats_ self = liftDOM (void (((self ^. jsf "getStats" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/getWriter MDN WebTransportSendStream.getWriter documentation>
+getWriter :: (MonadDOM m) => WebTransportSendStream -> m WebTransportWriter
+getWriter self = liftDOM (((self ^. jsf "getWriter" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/getWriter MDN WebTransportSendStream.getWriter documentation>
+getWriter_ :: (MonadDOM m) => WebTransportSendStream -> m ()
+getWriter_ self = liftDOM (void (self ^. jsf "getWriter" ()))
+
+-- | <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 (self ^. jss "sendGroup" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/sendGroup MDN WebTransportSendStream.sendGroup documentation>
+getSendGroup :: (MonadDOM m) => WebTransportSendStream -> m (Maybe WebTransportSendGroup)
+getSendGroup self = liftDOM (((self ^. js "sendGroup") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/sendGroup MDN WebTransportSendStream.sendGroup documentation>
+getSendGroupUnsafe :: (MonadDOM m, HasCallStack) => WebTransportSendStream -> m WebTransportSendGroup
+getSendGroupUnsafe self = liftDOM ((((self ^. js "sendGroup") >>= 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 (((self ^. js "sendGroup") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/sendOrder MDN WebTransportSendStream.sendOrder documentation>
+setSendOrder :: (MonadDOM m) => WebTransportSendStream -> Int53 -> m ()
+setSendOrder self val = liftDOM (void (self ^. jss "sendOrder" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WebTransportSendStream/sendOrder MDN WebTransportSendStream.sendOrder documentation>
+getSendOrder :: (MonadDOM m) => WebTransportSendStream -> m Int53
+getSendOrder self = liftDOM (((self ^. js "sendOrder") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WebTransportSendStreamOptions.hs b/src/JSDOM/Generated/WebTransportSendStreamOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportSendStreamOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportSendStreamOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransportsendstreamoptions WebTransportSendStreamOptions specification>
+newWebTransportSendStreamOptions :: (MonadDOM m) => m WebTransportSendStreamOptions
+newWebTransportSendStreamOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamoptions-waituntilavailable WebTransportSendStreamOptions.waitUntilAvailable specification>
+setWaitUntilAvailable :: (MonadDOM m) => WebTransportSendStreamOptions -> Bool -> m ()
+setWaitUntilAvailable self val = liftDOM (void (self ^. jss "waitUntilAvailable" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamoptions-waituntilavailable WebTransportSendStreamOptions.waitUntilAvailable specification>
+getWaitUntilAvailable :: (MonadDOM m) => WebTransportSendStreamOptions -> m (Maybe Bool)
+getWaitUntilAvailable self = liftDOM (((self ^. js "waitUntilAvailable") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamoptions-waituntilavailable WebTransportSendStreamOptions.waitUntilAvailable specification>
+getWaitUntilAvailableUnsafe :: (MonadDOM m, HasCallStack) => WebTransportSendStreamOptions -> m Bool
+getWaitUntilAvailableUnsafe self = liftDOM ((((self ^. js "waitUntilAvailable") >>= 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 (((self ^. js "waitUntilAvailable") >>= valToBool))
diff --git a/src/JSDOM/Generated/WebTransportSendStreamStats.hs b/src/JSDOM/Generated/WebTransportSendStreamStats.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportSendStreamStats.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportSendStreamStats
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webtransport/#dictdef-webtransportsendstreamstats WebTransportSendStreamStats specification>
+newWebTransportSendStreamStats :: (MonadDOM m) => m WebTransportSendStreamStats
+newWebTransportSendStreamStats = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-byteswritten WebTransportSendStreamStats.bytesWritten specification>
+setBytesWritten :: (MonadDOM m) => WebTransportSendStreamStats -> Word53 -> m ()
+setBytesWritten self val = liftDOM (void (self ^. jss "bytesWritten" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-byteswritten WebTransportSendStreamStats.bytesWritten specification>
+getBytesWritten :: (MonadDOM m) => WebTransportSendStreamStats -> m (Maybe Word53)
+getBytesWritten self = liftDOM (((self ^. js "bytesWritten") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-byteswritten WebTransportSendStreamStats.bytesWritten specification>
+getBytesWrittenUnsafe :: (MonadDOM m, HasCallStack) => WebTransportSendStreamStats -> m Word53
+getBytesWrittenUnsafe self = liftDOM ((((self ^. js "bytesWritten") >>= 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 (((self ^. js "bytesWritten") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-bytessent WebTransportSendStreamStats.bytesSent specification>
+setBytesSent :: (MonadDOM m) => WebTransportSendStreamStats -> Word53 -> m ()
+setBytesSent self val = liftDOM (void (self ^. jss "bytesSent" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-bytessent WebTransportSendStreamStats.bytesSent specification>
+getBytesSent :: (MonadDOM m) => WebTransportSendStreamStats -> m (Maybe Word53)
+getBytesSent self = liftDOM (((self ^. js "bytesSent") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-bytessent WebTransportSendStreamStats.bytesSent specification>
+getBytesSentUnsafe :: (MonadDOM m, HasCallStack) => WebTransportSendStreamStats -> m Word53
+getBytesSentUnsafe self = liftDOM ((((self ^. js "bytesSent") >>= 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 (((self ^. js "bytesSent") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-bytesacknowledged WebTransportSendStreamStats.bytesAcknowledged specification>
+setBytesAcknowledged :: (MonadDOM m) => WebTransportSendStreamStats -> Word53 -> m ()
+setBytesAcknowledged self val = liftDOM (void (self ^. jss "bytesAcknowledged" (toJSVal val)))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-bytesacknowledged WebTransportSendStreamStats.bytesAcknowledged specification>
+getBytesAcknowledged :: (MonadDOM m) => WebTransportSendStreamStats -> m (Maybe Word53)
+getBytesAcknowledged self = liftDOM (((self ^. js "bytesAcknowledged") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webtransport/#dom-webtransportsendstreamstats-bytesacknowledged WebTransportSendStreamStats.bytesAcknowledged specification>
+getBytesAcknowledgedUnsafe :: (MonadDOM m, HasCallStack) => WebTransportSendStreamStats -> m Word53
+getBytesAcknowledgedUnsafe self = liftDOM ((((self ^. js "bytesAcknowledged") >>= 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 (((self ^. js "bytesAcknowledged") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WebTransportWriter.hs b/src/JSDOM/Generated/WebTransportWriter.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WebTransportWriter.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webtransport (webref). Do not edit.
+module JSDOM.Generated.WebTransportWriter
+       (WebTransportWriter(..), gTypeWebTransportWriter)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WheelEvent.hs b/src/JSDOM/Generated/WheelEvent.hs
--- a/src/JSDOM/Generated/WheelEvent.hs
+++ b/src/JSDOM/Generated/WheelEvent.hs
@@ -1,95 +1,42 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from pointerevents4 (webref). Do not edit.
 module JSDOM.Generated.WheelEvent
-       (newWheelEvent, initWebKitWheelEvent, pattern DOM_DELTA_PIXEL,
-        pattern DOM_DELTA_LINE, pattern DOM_DELTA_PAGE, getDeltaX,
-        getDeltaY, getDeltaZ, getDeltaMode, getWheelDeltaX, getWheelDeltaY,
-        getWheelDelta, getWebkitDirectionInvertedFromDevice,
-        WheelEvent(..), gTypeWheelEvent)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent Mozilla WheelEvent documentation> 
-newWheelEvent ::
-              (MonadDOM m, ToJSString type') =>
-                type' -> Maybe WheelEventInit -> m WheelEvent
-newWheelEvent type' eventInitDict
-  = liftDOM
-      (WheelEvent <$>
-         new (jsg "WheelEvent") [toJSVal type', toJSVal eventInitDict])
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.initWebKitWheelEvent Mozilla WheelEvent.initWebKitWheelEvent documentation> 
-initWebKitWheelEvent ::
-                     (MonadDOM 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
-  = liftDOM
-      (void
-         (self ^. jsf "initWebKitWheelEvent"
-            [toJSVal wheelDeltaX, toJSVal wheelDeltaY, toJSVal view,
-             toJSVal screenX, toJSVal screenY, toJSVal clientX, toJSVal clientY,
-             toJSVal ctrlKey, toJSVal altKey, toJSVal shiftKey,
-             toJSVal metaKey]))
-pattern DOM_DELTA_PIXEL = 0
-pattern DOM_DELTA_LINE = 1
-pattern DOM_DELTA_PAGE = 2
+-- | <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 (((new (jsg "WheelEvent") [toJSVal type', P.maybe (P.return jsUndefined) toJSVal eventInitDict]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.deltaX Mozilla WheelEvent.deltaX documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/WheelEvent/deltaX MDN WheelEvent.deltaX documentation>
 getDeltaX :: (MonadDOM m) => WheelEvent -> m Double
-getDeltaX self = liftDOM ((self ^. js "deltaX") >>= valToNumber)
+getDeltaX self = liftDOM (((self ^. js "deltaX") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.deltaY Mozilla WheelEvent.deltaY documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/WheelEvent/deltaY MDN WheelEvent.deltaY documentation>
 getDeltaY :: (MonadDOM m) => WheelEvent -> m Double
-getDeltaY self = liftDOM ((self ^. js "deltaY") >>= valToNumber)
+getDeltaY self = liftDOM (((self ^. js "deltaY") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.deltaZ Mozilla WheelEvent.deltaZ documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/WheelEvent/deltaZ MDN WheelEvent.deltaZ documentation>
 getDeltaZ :: (MonadDOM m) => WheelEvent -> m Double
-getDeltaZ self = liftDOM ((self ^. js "deltaZ") >>= valToNumber)
+getDeltaZ self = liftDOM (((self ^. js "deltaZ") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.deltaMode Mozilla WheelEvent.deltaMode documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/WheelEvent/deltaMode MDN WheelEvent.deltaMode documentation>
 getDeltaMode :: (MonadDOM m) => WheelEvent -> m Word
-getDeltaMode self
-  = liftDOM (round <$> ((self ^. js "deltaMode") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.wheelDeltaX Mozilla WheelEvent.wheelDeltaX documentation> 
-getWheelDeltaX :: (MonadDOM m) => WheelEvent -> m Int
-getWheelDeltaX self
-  = liftDOM (round <$> ((self ^. js "wheelDeltaX") >>= valToNumber))
+getDeltaMode self = liftDOM ((P.round <$> ((self ^. js "deltaMode") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.wheelDeltaY Mozilla WheelEvent.wheelDeltaY documentation> 
-getWheelDeltaY :: (MonadDOM m) => WheelEvent -> m Int
-getWheelDeltaY self
-  = liftDOM (round <$> ((self ^. js "wheelDeltaY") >>= valToNumber))
+pattern DOM_DELTA_PIXEL = 0x00
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.wheelDelta Mozilla WheelEvent.wheelDelta documentation> 
-getWheelDelta :: (MonadDOM m) => WheelEvent -> m Int
-getWheelDelta self
-  = liftDOM (round <$> ((self ^. js "wheelDelta") >>= valToNumber))
+pattern DOM_DELTA_LINE = 0x01
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.webkitDirectionInvertedFromDevice Mozilla WheelEvent.webkitDirectionInvertedFromDevice documentation> 
-getWebkitDirectionInvertedFromDevice ::
-                                     (MonadDOM m) => WheelEvent -> m Bool
-getWebkitDirectionInvertedFromDevice self
-  = liftDOM
-      ((self ^. js "webkitDirectionInvertedFromDevice") >>= valToBool)
+pattern DOM_DELTA_PAGE = 0x02
diff --git a/src/JSDOM/Generated/WheelEventInit.hs b/src/JSDOM/Generated/WheelEventInit.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WheelEventInit.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from pointerevents4 (webref). Do not edit.
+module JSDOM.Generated.WheelEventInit
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit WheelEventInit specification>
+newWheelEventInit :: (MonadDOM m) => m WheelEventInit
+newWheelEventInit = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltax WheelEventInit.deltaX specification>
+setDeltaX :: (MonadDOM m) => WheelEventInit -> Double -> m ()
+setDeltaX self val = liftDOM (void (self ^. jss "deltaX" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltax WheelEventInit.deltaX specification>
+getDeltaX :: (MonadDOM m) => WheelEventInit -> m (Maybe Double)
+getDeltaX self = liftDOM (((self ^. js "deltaX") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltax WheelEventInit.deltaX specification>
+getDeltaXUnsafe :: (MonadDOM m, HasCallStack) => WheelEventInit -> m Double
+getDeltaXUnsafe self = liftDOM ((((self ^. js "deltaX") >>= 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 (((self ^. js "deltaX") >>= valToNumber))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltay WheelEventInit.deltaY specification>
+setDeltaY :: (MonadDOM m) => WheelEventInit -> Double -> m ()
+setDeltaY self val = liftDOM (void (self ^. jss "deltaY" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltay WheelEventInit.deltaY specification>
+getDeltaY :: (MonadDOM m) => WheelEventInit -> m (Maybe Double)
+getDeltaY self = liftDOM (((self ^. js "deltaY") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltay WheelEventInit.deltaY specification>
+getDeltaYUnsafe :: (MonadDOM m, HasCallStack) => WheelEventInit -> m Double
+getDeltaYUnsafe self = liftDOM ((((self ^. js "deltaY") >>= 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 (((self ^. js "deltaY") >>= valToNumber))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltaz WheelEventInit.deltaZ specification>
+setDeltaZ :: (MonadDOM m) => WheelEventInit -> Double -> m ()
+setDeltaZ self val = liftDOM (void (self ^. jss "deltaZ" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltaz WheelEventInit.deltaZ specification>
+getDeltaZ :: (MonadDOM m) => WheelEventInit -> m (Maybe Double)
+getDeltaZ self = liftDOM (((self ^. js "deltaZ") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltaz WheelEventInit.deltaZ specification>
+getDeltaZUnsafe :: (MonadDOM m, HasCallStack) => WheelEventInit -> m Double
+getDeltaZUnsafe self = liftDOM ((((self ^. js "deltaZ") >>= 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 (((self ^. js "deltaZ") >>= valToNumber))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltamode WheelEventInit.deltaMode specification>
+setDeltaMode :: (MonadDOM m) => WheelEventInit -> Word -> m ()
+setDeltaMode self val = liftDOM (void (self ^. jss "deltaMode" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltamode WheelEventInit.deltaMode specification>
+getDeltaMode :: (MonadDOM m) => WheelEventInit -> m (Maybe Word)
+getDeltaMode self = liftDOM (((self ^. js "deltaMode") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-deltamode WheelEventInit.deltaMode specification>
+getDeltaModeUnsafe :: (MonadDOM m, HasCallStack) => WheelEventInit -> m Word
+getDeltaModeUnsafe self = liftDOM ((((self ^. js "deltaMode") >>= 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 ((P.round <$> ((self ^. js "deltaMode") >>= valToNumber)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-momentum WheelEventInit.momentum specification>
+setMomentum :: (MonadDOM m) => WheelEventInit -> Bool -> m ()
+setMomentum self val = liftDOM (void (self ^. jss "momentum" (toJSVal val)))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-momentum WheelEventInit.momentum specification>
+getMomentum :: (MonadDOM m) => WheelEventInit -> m (Maybe Bool)
+getMomentum self = liftDOM (((self ^. js "momentum") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/pointerevents/#dom-wheeleventinit-momentum WheelEventInit.momentum specification>
+getMomentumUnsafe :: (MonadDOM m, HasCallStack) => WheelEventInit -> m Bool
+getMomentumUnsafe self = liftDOM ((((self ^. js "momentum") >>= 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 (((self ^. js "momentum") >>= valToBool))
diff --git a/src/JSDOM/Generated/Window.hs b/src/JSDOM/Generated/Window.hs
--- a/src/JSDOM/Generated/Window.hs
+++ b/src/JSDOM/Generated/Window.hs
@@ -1,1050 +1,448 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.Window
-       (decodeURI, decodeURI_, decodeURIComponent, decodeURIComponent_,
-        encodeURI, encodeURI_, encodeURIComponent, encodeURIComponent_,
-        fetch, fetch_, openDatabase, openDatabase_, openDatabaseUnsafe,
-        openDatabaseUnchecked, close, stop, focus, blur, open, open_,
-        openUnsafe, openUnchecked, alertNoMessage, alert, confirm,
-        confirm_, prompt, prompt_, promptUnsafe, promptUnchecked, print,
-        requestAnimationFrame, requestAnimationFrame_,
-        cancelAnimationFrame, postMessage, captureEvents, releaseEvents,
-        getComputedStyle, getComputedStyle_, matchMedia, matchMedia_,
-        moveTo, moveBy, resizeTo, resizeBy, scrollOpt, scroll, scrollToOpt,
-        scrollTo, scrollByOpt, scrollBy, getSelection, getSelection_,
-        getSelectionUnsafe, getSelectionUnchecked, find, find_,
-        webkitRequestAnimationFrame, webkitRequestAnimationFrame_,
-        webkitCancelAnimationFrame, webkitCancelRequestAnimationFrame,
-        getMatchedCSSRules, getMatchedCSSRules_, showModalDialog,
-        showModalDialog_, webkitConvertPointFromPageToNode,
-        webkitConvertPointFromPageToNode_,
-        webkitConvertPointFromNodeToPage,
-        webkitConvertPointFromNodeToPage_,
-        collectMatchingElementsInFlatTree,
-        collectMatchingElementsInFlatTree_, matchingElementInFlatTree,
-        matchingElementInFlatTree_, matchingElementInFlatTreeUnsafe,
-        matchingElementInFlatTreeUnchecked, getIndexedDB,
-        getWebkitIndexedDB, getWebkitStorageInfo, getSpeechSynthesis,
-        getWindow, getSelf, getDocument, setName, getName, getLocation,
-        getHistory, getCustomElements, getLocationbar, getMenubar,
-        getPersonalbar, getScrollbars, getStatusbar, getToolbar, setStatus,
-        getStatus, getClosed, getFrames, getLength, getTop, getTopUnsafe,
-        getTopUnchecked, getOpener, getOpenerUnsafe, getOpenerUnchecked,
-        getParent, getParentUnsafe, getParentUnchecked, getFrameElement,
-        getFrameElementUnsafe, getFrameElementUnchecked, getNavigator,
-        getApplicationCache, getSessionStorage, getLocalStorage, getScreen,
-        getInnerHeight, getInnerWidth, getScrollX, getPageXOffset,
-        getScrollY, getPageYOffset, getScreenX, getScreenY, getOuterWidth,
-        getOuterHeight, getDevicePixelRatio, getOrientation, getEvent,
-        setDefaultStatus, getDefaultStatus, setDefaultstatus,
-        getDefaultstatus, getOffscreenBuffering, getScreenLeft,
-        getScreenTop, getClientInformation, 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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.decodeURI Mozilla Window.decodeURI documentation> 
-decodeURI ::
-          (MonadDOM m, ToJSString uri, FromJSString result) =>
-            Window -> uri -> m result
-decodeURI self uri
-  = liftDOM
-      ((self ^. jsf "decodeURI" [toJSVal uri]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.decodeURI Mozilla Window.decodeURI documentation> 
-decodeURI_ :: (MonadDOM m, ToJSString uri) => Window -> uri -> m ()
-decodeURI_ self uri
-  = liftDOM (void (self ^. jsf "decodeURI" [toJSVal uri]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.decodeURIComponent Mozilla Window.decodeURIComponent documentation> 
-decodeURIComponent ::
-                   (MonadDOM m, ToJSString uri, FromJSString result) =>
-                     Window -> uri -> m result
-decodeURIComponent self uri
-  = liftDOM
-      ((self ^. jsf "decodeURIComponent" [toJSVal uri]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.decodeURIComponent Mozilla Window.decodeURIComponent documentation> 
-decodeURIComponent_ ::
-                    (MonadDOM m, ToJSString uri) => Window -> uri -> m ()
-decodeURIComponent_ self uri
-  = liftDOM (void (self ^. jsf "decodeURIComponent" [toJSVal uri]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.encodeURI Mozilla Window.encodeURI documentation> 
-encodeURI ::
-          (MonadDOM m, ToJSString uri, FromJSString result) =>
-            Window -> uri -> m result
-encodeURI self uri
-  = liftDOM
-      ((self ^. jsf "encodeURI" [toJSVal uri]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.encodeURI Mozilla Window.encodeURI documentation> 
-encodeURI_ :: (MonadDOM m, ToJSString uri) => Window -> uri -> m ()
-encodeURI_ self uri
-  = liftDOM (void (self ^. jsf "encodeURI" [toJSVal uri]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.encodeURIComponent Mozilla Window.encodeURIComponent documentation> 
-encodeURIComponent ::
-                   (MonadDOM m, ToJSString uri, FromJSString result) =>
-                     Window -> uri -> m result
-encodeURIComponent self uri
-  = liftDOM
-      ((self ^. jsf "encodeURIComponent" [toJSVal uri]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.encodeURIComponent Mozilla Window.encodeURIComponent documentation> 
-encodeURIComponent_ ::
-                    (MonadDOM m, ToJSString uri) => Window -> uri -> m ()
-encodeURIComponent_ self uri
-  = liftDOM (void (self ^. jsf "encodeURIComponent" [toJSVal uri]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.fetch Mozilla Window.fetch documentation> 
-fetch ::
-      (MonadDOM m, ToJSVal input) =>
-        Window -> input -> Maybe RequestInit -> m Response
-fetch self input init
-  = liftDOM
-      (((self ^. jsf "fetch" [toJSVal input, toJSVal init]) >>=
-          readPromise)
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.fetch Mozilla Window.fetch documentation> 
-fetch_ ::
-       (MonadDOM m, ToJSVal input) =>
-         Window -> input -> Maybe RequestInit -> m ()
-fetch_ self input init
-  = liftDOM
-      (void (self ^. jsf "fetch" [toJSVal input, toJSVal init]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation> 
-openDatabase ::
-             (MonadDOM m, ToJSString name, ToJSString version,
-              ToJSString displayName) =>
-               Window ->
-                 name ->
-                   version ->
-                     displayName -> Word -> Maybe DatabaseCallback -> m (Maybe Database)
-openDatabase self name version displayName estimatedSize
-  creationCallback
-  = liftDOM
-      ((self ^. jsf "openDatabase"
-          [toJSVal name, toJSVal version, toJSVal displayName,
-           toJSVal estimatedSize, toJSVal creationCallback])
-         >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation> 
-openDatabase_ ::
-              (MonadDOM m, ToJSString name, ToJSString version,
-               ToJSString displayName) =>
-                Window ->
-                  name ->
-                    version -> displayName -> Word -> Maybe DatabaseCallback -> m ()
-openDatabase_ self name version displayName estimatedSize
-  creationCallback
-  = liftDOM
-      (void
-         (self ^. jsf "openDatabase"
-            [toJSVal name, toJSVal version, toJSVal displayName,
-             toJSVal estimatedSize, toJSVal creationCallback]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation> 
-openDatabaseUnsafe ::
-                   (MonadDOM m, ToJSString name, ToJSString version,
-                    ToJSString displayName, HasCallStack) =>
-                     Window ->
-                       name ->
-                         version ->
-                           displayName -> Word -> Maybe DatabaseCallback -> m Database
-openDatabaseUnsafe self name version displayName estimatedSize
-  creationCallback
-  = liftDOM
-      (((self ^. jsf "openDatabase"
-           [toJSVal name, toJSVal version, toJSVal displayName,
-            toJSVal estimatedSize, toJSVal creationCallback])
-          >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation> 
-openDatabaseUnchecked ::
-                      (MonadDOM m, ToJSString name, ToJSString version,
-                       ToJSString displayName) =>
-                        Window ->
-                          name ->
-                            version ->
-                              displayName -> Word -> Maybe DatabaseCallback -> m Database
-openDatabaseUnchecked self name version displayName estimatedSize
-  creationCallback
-  = liftDOM
-      ((self ^. jsf "openDatabase"
-          [toJSVal name, toJSVal version, toJSVal displayName,
-           toJSVal estimatedSize, toJSVal creationCallback])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.close Mozilla Window.close documentation> 
-close :: (MonadDOM m) => Window -> m ()
-close self = liftDOM (void (self ^. jsf "close" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.stop Mozilla Window.stop documentation> 
-stop :: (MonadDOM m) => Window -> m ()
-stop self = liftDOM (void (self ^. jsf "stop" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.focus Mozilla Window.focus documentation> 
-focus :: (MonadDOM m) => Window -> m ()
-focus self = liftDOM (void (self ^. jsf "focus" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.blur Mozilla Window.blur documentation> 
-blur :: (MonadDOM m) => Window -> m ()
-blur self = liftDOM (void (self ^. jsf "blur" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.open Mozilla 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
-      ((self ^. jsf "open"
-          [toJSVal url, toJSVal target, toJSVal features])
-         >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.open Mozilla 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
-         (self ^. jsf "open"
-            [toJSVal url, toJSVal target, toJSVal features]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.open Mozilla 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
-      (((self ^. jsf "open"
-           [toJSVal url, toJSVal target, toJSVal features])
-          >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.open Mozilla 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
-      ((self ^. jsf "open"
-          [toJSVal url, toJSVal target, toJSVal features])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.alert Mozilla Window.alert documentation> 
-alertNoMessage :: (MonadDOM m) => Window -> m ()
-alertNoMessage self = liftDOM (void (self ^. jsf "alert" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.alert Mozilla Window.alert documentation> 
-alert ::
-      (MonadDOM m, ToJSString message) => Window -> message -> m ()
-alert self message
-  = liftDOM (void (self ^. jsf "alert" [toJSVal message]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.confirm Mozilla Window.confirm documentation> 
-confirm ::
-        (MonadDOM m, ToJSString message) =>
-          Window -> Maybe message -> m Bool
-confirm self message
-  = liftDOM ((self ^. jsf "confirm" [toJSVal message]) >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.confirm Mozilla Window.confirm documentation> 
-confirm_ ::
-         (MonadDOM m, ToJSString message) => Window -> Maybe message -> m ()
-confirm_ self message
-  = liftDOM (void (self ^. jsf "confirm" [toJSVal message]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt Mozilla Window.prompt documentation> 
-prompt ::
-       (MonadDOM m, ToJSString message, ToJSString defaultValue,
-        FromJSString result) =>
-         Window -> Maybe message -> Maybe defaultValue -> m (Maybe result)
-prompt self message defaultValue
-  = liftDOM
-      ((self ^. jsf "prompt" [toJSVal message, toJSVal defaultValue]) >>=
-         fromMaybeJSString)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt Mozilla Window.prompt documentation> 
-prompt_ ::
-        (MonadDOM m, ToJSString message, ToJSString defaultValue) =>
-          Window -> Maybe message -> Maybe defaultValue -> m ()
-prompt_ self message defaultValue
-  = liftDOM
-      (void
-         (self ^. jsf "prompt" [toJSVal message, toJSVal defaultValue]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt Mozilla Window.prompt documentation> 
-promptUnsafe ::
-             (MonadDOM m, ToJSString message, ToJSString defaultValue,
-              HasCallStack, FromJSString result) =>
-               Window -> Maybe message -> Maybe defaultValue -> m result
-promptUnsafe self message defaultValue
-  = liftDOM
-      (((self ^. jsf "prompt" [toJSVal message, toJSVal defaultValue])
-          >>= fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt Mozilla Window.prompt documentation> 
-promptUnchecked ::
-                (MonadDOM m, ToJSString message, ToJSString defaultValue,
-                 FromJSString result) =>
-                  Window -> Maybe message -> Maybe defaultValue -> m result
-promptUnchecked self message defaultValue
-  = liftDOM
-      ((self ^. jsf "prompt" [toJSVal message, toJSVal defaultValue]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.print Mozilla Window.print documentation> 
-print :: (MonadDOM m) => Window -> m ()
-print self = liftDOM (void (self ^. jsf "print" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.requestAnimationFrame Mozilla Window.requestAnimationFrame documentation> 
-requestAnimationFrame ::
-                      (MonadDOM m) => Window -> RequestAnimationFrameCallback -> m Int
-requestAnimationFrame self callback
-  = liftDOM
-      (round <$>
-         ((self ^. jsf "requestAnimationFrame" [toJSVal callback]) >>=
-            valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.requestAnimationFrame Mozilla Window.requestAnimationFrame documentation> 
-requestAnimationFrame_ ::
-                       (MonadDOM m) => Window -> RequestAnimationFrameCallback -> m ()
-requestAnimationFrame_ self callback
-  = liftDOM
-      (void (self ^. jsf "requestAnimationFrame" [toJSVal callback]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.cancelAnimationFrame Mozilla Window.cancelAnimationFrame documentation> 
-cancelAnimationFrame :: (MonadDOM m) => Window -> Int -> m ()
-cancelAnimationFrame self handle
-  = liftDOM
-      (void (self ^. jsf "cancelAnimationFrame" [toJSVal handle]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage Mozilla Window.postMessage documentation> 
-postMessage ::
-            (MonadDOM m, ToJSVal message, ToJSString targetOrigin,
-             IsGObject transfer) =>
-              Window -> message -> targetOrigin -> [transfer] -> m ()
-postMessage self message targetOrigin transfer
-  = liftDOM
-      (void
-         (self ^. jsf "postMessage"
-            [toJSVal message, toJSVal targetOrigin, toJSVal (array transfer)]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.captureEvents Mozilla Window.captureEvents documentation> 
-captureEvents :: (MonadDOM m) => Window -> m ()
-captureEvents self
-  = liftDOM (void (self ^. jsf "captureEvents" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.releaseEvents Mozilla Window.releaseEvents documentation> 
-releaseEvents :: (MonadDOM m) => Window -> m ()
-releaseEvents self
-  = liftDOM (void (self ^. jsf "releaseEvents" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getComputedStyle Mozilla Window.getComputedStyle documentation> 
-getComputedStyle ::
-                 (MonadDOM m, IsElement element, ToJSString pseudoElement) =>
-                   Window -> element -> Maybe pseudoElement -> m CSSStyleDeclaration
-getComputedStyle self element pseudoElement
-  = liftDOM
-      ((self ^. jsf "getComputedStyle"
-          [toJSVal element, toJSVal pseudoElement])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getComputedStyle Mozilla Window.getComputedStyle documentation> 
-getComputedStyle_ ::
-                  (MonadDOM m, IsElement element, ToJSString pseudoElement) =>
-                    Window -> element -> Maybe pseudoElement -> m ()
-getComputedStyle_ self element pseudoElement
-  = liftDOM
-      (void
-         (self ^. jsf "getComputedStyle"
-            [toJSVal element, toJSVal pseudoElement]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchMedia Mozilla Window.matchMedia documentation> 
-matchMedia ::
-           (MonadDOM m, ToJSString query) =>
-             Window -> query -> m MediaQueryList
-matchMedia self query
-  = liftDOM
-      ((self ^. jsf "matchMedia" [toJSVal query]) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchMedia Mozilla Window.matchMedia documentation> 
-matchMedia_ ::
-            (MonadDOM m, ToJSString query) => Window -> query -> m ()
-matchMedia_ self query
-  = liftDOM (void (self ^. jsf "matchMedia" [toJSVal query]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.moveTo Mozilla Window.moveTo documentation> 
-moveTo ::
-       (MonadDOM m) => Window -> Maybe Float -> Maybe Float -> m ()
-moveTo self x y
-  = liftDOM (void (self ^. jsf "moveTo" [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.moveBy Mozilla Window.moveBy documentation> 
-moveBy ::
-       (MonadDOM m) => Window -> Maybe Float -> Maybe Float -> m ()
-moveBy self x y
-  = liftDOM (void (self ^. jsf "moveBy" [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.resizeTo Mozilla Window.resizeTo documentation> 
-resizeTo ::
-         (MonadDOM m) => Window -> Maybe Float -> Maybe Float -> m ()
-resizeTo self width height
-  = liftDOM
-      (void (self ^. jsf "resizeTo" [toJSVal width, toJSVal height]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.resizeBy Mozilla Window.resizeBy documentation> 
-resizeBy ::
-         (MonadDOM m) => Window -> Maybe Float -> Maybe Float -> m ()
-resizeBy self x y
-  = liftDOM (void (self ^. jsf "resizeBy" [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scroll Mozilla Window.scroll documentation> 
-scrollOpt ::
-          (MonadDOM m) => Window -> Maybe ScrollToOptions -> m ()
-scrollOpt self options
-  = liftDOM (void (self ^. jsf "scroll" [toJSVal options]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scroll Mozilla Window.scroll documentation> 
-scroll :: (MonadDOM m) => Window -> Double -> Double -> m ()
-scroll self x y
-  = liftDOM (void (self ^. jsf "scroll" [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollTo Mozilla Window.scrollTo documentation> 
-scrollToOpt ::
-            (MonadDOM m) => Window -> Maybe ScrollToOptions -> m ()
-scrollToOpt self options
-  = liftDOM (void (self ^. jsf "scrollTo" [toJSVal options]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollTo Mozilla Window.scrollTo documentation> 
-scrollTo :: (MonadDOM m) => Window -> Double -> Double -> m ()
-scrollTo self x y
-  = liftDOM (void (self ^. jsf "scrollTo" [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollBy Mozilla Window.scrollBy documentation> 
-scrollByOpt ::
-            (MonadDOM m) => Window -> Maybe ScrollToOptions -> m ()
-scrollByOpt self option
-  = liftDOM (void (self ^. jsf "scrollBy" [toJSVal option]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollBy Mozilla Window.scrollBy documentation> 
-scrollBy :: (MonadDOM m) => Window -> Double -> Double -> m ()
-scrollBy self x y
-  = liftDOM (void (self ^. jsf "scrollBy" [toJSVal x, toJSVal y]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection Mozilla Window.getSelection documentation> 
-getSelection :: (MonadDOM m) => Window -> m (Maybe Selection)
-getSelection self
-  = liftDOM ((self ^. jsf "getSelection" ()) >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection Mozilla Window.getSelection documentation> 
-getSelection_ :: (MonadDOM m) => Window -> m ()
-getSelection_ self = liftDOM (void (self ^. jsf "getSelection" ()))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection Mozilla Window.getSelection documentation> 
-getSelectionUnsafe ::
-                   (MonadDOM m, HasCallStack) => Window -> m Selection
-getSelectionUnsafe self
-  = liftDOM
-      (((self ^. jsf "getSelection" ()) >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection Mozilla Window.getSelection documentation> 
-getSelectionUnchecked :: (MonadDOM m) => Window -> m Selection
-getSelectionUnchecked self
-  = liftDOM ((self ^. jsf "getSelection" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.find Mozilla Window.find documentation> 
-find ::
-     (MonadDOM m, ToJSString string) =>
-       Window ->
-         Maybe string ->
-           Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> m Bool
-find self string caseSensitive backwards wrap wholeWord
-  searchInFrames showDialog
-  = liftDOM
-      ((self ^. jsf "find"
-          [toJSVal string, toJSVal caseSensitive, toJSVal backwards,
-           toJSVal wrap, toJSVal wholeWord, toJSVal searchInFrames,
-           toJSVal showDialog])
-         >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.find Mozilla Window.find documentation> 
-find_ ::
-      (MonadDOM m, ToJSString string) =>
-        Window ->
-          Maybe string ->
-            Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> m ()
-find_ self string caseSensitive backwards wrap wholeWord
-  searchInFrames showDialog
-  = liftDOM
-      (void
-         (self ^. jsf "find"
-            [toJSVal string, toJSVal caseSensitive, toJSVal backwards,
-             toJSVal wrap, toJSVal wholeWord, toJSVal searchInFrames,
-             toJSVal showDialog]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitRequestAnimationFrame Mozilla Window.webkitRequestAnimationFrame documentation> 
-webkitRequestAnimationFrame ::
-                            (MonadDOM m) => Window -> RequestAnimationFrameCallback -> m Int
-webkitRequestAnimationFrame self callback
-  = liftDOM
-      (round <$>
-         ((self ^. jsf "webkitRequestAnimationFrame" [toJSVal callback]) >>=
-            valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitRequestAnimationFrame Mozilla Window.webkitRequestAnimationFrame documentation> 
-webkitRequestAnimationFrame_ ::
-                             (MonadDOM m) => Window -> RequestAnimationFrameCallback -> m ()
-webkitRequestAnimationFrame_ self callback
-  = liftDOM
-      (void
-         (self ^. jsf "webkitRequestAnimationFrame" [toJSVal callback]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitCancelAnimationFrame Mozilla Window.webkitCancelAnimationFrame documentation> 
-webkitCancelAnimationFrame :: (MonadDOM m) => Window -> Int -> m ()
-webkitCancelAnimationFrame self id
-  = liftDOM
-      (void (self ^. jsf "webkitCancelAnimationFrame" [toJSVal id]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitCancelRequestAnimationFrame Mozilla Window.webkitCancelRequestAnimationFrame documentation> 
-webkitCancelRequestAnimationFrame ::
-                                  (MonadDOM m) => Window -> Int -> m ()
-webkitCancelRequestAnimationFrame self id
-  = liftDOM
-      (void
-         (self ^. jsf "webkitCancelRequestAnimationFrame" [toJSVal id]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getMatchedCSSRules Mozilla Window.getMatchedCSSRules documentation> 
-getMatchedCSSRules ::
-                   (MonadDOM m, IsElement element, ToJSString pseudoElement) =>
-                     Window -> Maybe element -> Maybe pseudoElement -> m CSSRuleList
-getMatchedCSSRules self element pseudoElement
-  = liftDOM
-      ((self ^. jsf "getMatchedCSSRules"
-          [toJSVal element, toJSVal pseudoElement])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getMatchedCSSRules Mozilla Window.getMatchedCSSRules documentation> 
-getMatchedCSSRules_ ::
-                    (MonadDOM m, IsElement element, ToJSString pseudoElement) =>
-                      Window -> Maybe element -> Maybe pseudoElement -> m ()
-getMatchedCSSRules_ self element pseudoElement
-  = liftDOM
-      (void
-         (self ^. jsf "getMatchedCSSRules"
-            [toJSVal element, toJSVal pseudoElement]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.showModalDialog Mozilla Window.showModalDialog documentation> 
-showModalDialog ::
-                (MonadDOM m, ToJSString url, ToJSVal dialogArgs,
-                 ToJSString featureArgs) =>
-                  Window -> url -> Maybe dialogArgs -> Maybe featureArgs -> m JSVal
-showModalDialog self url dialogArgs featureArgs
-  = liftDOM
-      ((self ^. jsf "showModalDialog"
-          [toJSVal url, toJSVal dialogArgs, toJSVal featureArgs])
-         >>= toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.showModalDialog Mozilla Window.showModalDialog documentation> 
-showModalDialog_ ::
-                 (MonadDOM m, ToJSString url, ToJSVal dialogArgs,
-                  ToJSString featureArgs) =>
-                   Window -> url -> Maybe dialogArgs -> Maybe featureArgs -> m ()
-showModalDialog_ self url dialogArgs featureArgs
-  = liftDOM
-      (void
-         (self ^. jsf "showModalDialog"
-            [toJSVal url, toJSVal dialogArgs, toJSVal featureArgs]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromPageToNode Mozilla Window.webkitConvertPointFromPageToNode documentation> 
-webkitConvertPointFromPageToNode ::
-                                 (MonadDOM m, IsNode node) =>
-                                   Window -> Maybe node -> Maybe WebKitPoint -> m WebKitPoint
-webkitConvertPointFromPageToNode self node p
-  = liftDOM
-      ((self ^. jsf "webkitConvertPointFromPageToNode"
-          [toJSVal node, toJSVal p])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromPageToNode Mozilla Window.webkitConvertPointFromPageToNode documentation> 
-webkitConvertPointFromPageToNode_ ::
-                                  (MonadDOM m, IsNode node) =>
-                                    Window -> Maybe node -> Maybe WebKitPoint -> m ()
-webkitConvertPointFromPageToNode_ self node p
-  = liftDOM
-      (void
-         (self ^. jsf "webkitConvertPointFromPageToNode"
-            [toJSVal node, toJSVal p]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromNodeToPage Mozilla Window.webkitConvertPointFromNodeToPage documentation> 
-webkitConvertPointFromNodeToPage ::
-                                 (MonadDOM m, IsNode node) =>
-                                   Window -> Maybe node -> Maybe WebKitPoint -> m WebKitPoint
-webkitConvertPointFromNodeToPage self node p
-  = liftDOM
-      ((self ^. jsf "webkitConvertPointFromNodeToPage"
-          [toJSVal node, toJSVal p])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromNodeToPage Mozilla Window.webkitConvertPointFromNodeToPage documentation> 
-webkitConvertPointFromNodeToPage_ ::
-                                  (MonadDOM m, IsNode node) =>
-                                    Window -> Maybe node -> Maybe WebKitPoint -> m ()
-webkitConvertPointFromNodeToPage_ self node p
-  = liftDOM
-      (void
-         (self ^. jsf "webkitConvertPointFromNodeToPage"
-            [toJSVal node, toJSVal p]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.collectMatchingElementsInFlatTree Mozilla Window.collectMatchingElementsInFlatTree documentation> 
-collectMatchingElementsInFlatTree ::
-                                  (MonadDOM m, IsNode scope, ToJSString selectors) =>
-                                    Window -> scope -> selectors -> m NodeList
-collectMatchingElementsInFlatTree self scope selectors
-  = liftDOM
-      ((self ^. jsf "collectMatchingElementsInFlatTree"
-          [toJSVal scope, toJSVal selectors])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.collectMatchingElementsInFlatTree Mozilla Window.collectMatchingElementsInFlatTree documentation> 
-collectMatchingElementsInFlatTree_ ::
-                                   (MonadDOM m, IsNode scope, ToJSString selectors) =>
-                                     Window -> scope -> selectors -> m ()
-collectMatchingElementsInFlatTree_ self scope selectors
-  = liftDOM
-      (void
-         (self ^. jsf "collectMatchingElementsInFlatTree"
-            [toJSVal scope, toJSVal selectors]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchingElementInFlatTree Mozilla Window.matchingElementInFlatTree documentation> 
-matchingElementInFlatTree ::
-                          (MonadDOM m, IsNode scope, ToJSString selectors) =>
-                            Window -> scope -> selectors -> m (Maybe Element)
-matchingElementInFlatTree self scope selectors
-  = liftDOM
-      ((self ^. jsf "matchingElementInFlatTree"
-          [toJSVal scope, toJSVal selectors])
-         >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchingElementInFlatTree Mozilla Window.matchingElementInFlatTree documentation> 
-matchingElementInFlatTree_ ::
-                           (MonadDOM m, IsNode scope, ToJSString selectors) =>
-                             Window -> scope -> selectors -> m ()
-matchingElementInFlatTree_ self scope selectors
-  = liftDOM
-      (void
-         (self ^. jsf "matchingElementInFlatTree"
-            [toJSVal scope, toJSVal selectors]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchingElementInFlatTree Mozilla Window.matchingElementInFlatTree documentation> 
-matchingElementInFlatTreeUnsafe ::
-                                (MonadDOM m, IsNode scope, ToJSString selectors, HasCallStack) =>
-                                  Window -> scope -> selectors -> m Element
-matchingElementInFlatTreeUnsafe self scope selectors
-  = liftDOM
-      (((self ^. jsf "matchingElementInFlatTree"
-           [toJSVal scope, toJSVal selectors])
-          >>= fromJSVal)
-         >>= maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchingElementInFlatTree Mozilla Window.matchingElementInFlatTree documentation> 
-matchingElementInFlatTreeUnchecked ::
-                                   (MonadDOM m, IsNode scope, ToJSString selectors) =>
-                                     Window -> scope -> selectors -> m Element
-matchingElementInFlatTreeUnchecked self scope selectors
-  = liftDOM
-      ((self ^. jsf "matchingElementInFlatTree"
-          [toJSVal scope, toJSVal selectors])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.indexedDB Mozilla Window.indexedDB documentation> 
-getIndexedDB :: (MonadDOM m) => Window -> m IDBFactory
-getIndexedDB self
-  = liftDOM ((self ^. js "indexedDB") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitIndexedDB Mozilla Window.webkitIndexedDB documentation> 
-getWebkitIndexedDB :: (MonadDOM m) => Window -> m IDBFactory
-getWebkitIndexedDB self
-  = liftDOM ((self ^. js "webkitIndexedDB") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitStorageInfo Mozilla Window.webkitStorageInfo documentation> 
-getWebkitStorageInfo :: (MonadDOM m) => Window -> m StorageInfo
-getWebkitStorageInfo self
-  = liftDOM ((self ^. js "webkitStorageInfo") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.speechSynthesis Mozilla Window.speechSynthesis documentation> 
-getSpeechSynthesis :: (MonadDOM m) => Window -> m SpeechSynthesis
-getSpeechSynthesis self
-  = liftDOM ((self ^. js "speechSynthesis") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.window Mozilla Window.window documentation> 
-getWindow :: (MonadDOM m) => Window -> m Window
-getWindow self
-  = liftDOM ((self ^. js "window") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.self Mozilla Window.self documentation> 
-getSelf :: (MonadDOM m) => Window -> m Window
-getSelf self = liftDOM ((self ^. js "self") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.document Mozilla Window.document documentation> 
-getDocument :: (MonadDOM m) => Window -> m Document
-getDocument self
-  = liftDOM ((self ^. js "document") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.name Mozilla Window.name documentation> 
-setName :: (MonadDOM m, ToJSString val) => Window -> val -> m ()
-setName self val = liftDOM (self ^. jss "name" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.name Mozilla Window.name documentation> 
-getName :: (MonadDOM m, FromJSString result) => Window -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.location Mozilla Window.location documentation> 
-getLocation :: (MonadDOM m) => Window -> m Location
-getLocation self
-  = liftDOM ((self ^. js "location") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.history Mozilla Window.history documentation> 
-getHistory :: (MonadDOM m) => Window -> m History
-getHistory self
-  = liftDOM ((self ^. js "history") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.customElements Mozilla Window.customElements documentation> 
-getCustomElements ::
-                  (MonadDOM m) => Window -> m CustomElementRegistry
-getCustomElements self
-  = liftDOM ((self ^. js "customElements") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.locationbar Mozilla Window.locationbar documentation> 
-getLocationbar :: (MonadDOM m) => Window -> m BarProp
-getLocationbar self
-  = liftDOM ((self ^. js "locationbar") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.menubar Mozilla Window.menubar documentation> 
-getMenubar :: (MonadDOM m) => Window -> m BarProp
-getMenubar self
-  = liftDOM ((self ^. js "menubar") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.personalbar Mozilla Window.personalbar documentation> 
-getPersonalbar :: (MonadDOM m) => Window -> m BarProp
-getPersonalbar self
-  = liftDOM ((self ^. js "personalbar") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollbars Mozilla Window.scrollbars documentation> 
-getScrollbars :: (MonadDOM m) => Window -> m BarProp
-getScrollbars self
-  = liftDOM ((self ^. js "scrollbars") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.statusbar Mozilla Window.statusbar documentation> 
-getStatusbar :: (MonadDOM m) => Window -> m BarProp
-getStatusbar self
-  = liftDOM ((self ^. js "statusbar") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.toolbar Mozilla Window.toolbar documentation> 
-getToolbar :: (MonadDOM m) => Window -> m BarProp
-getToolbar self
-  = liftDOM ((self ^. js "toolbar") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.status Mozilla Window.status documentation> 
-setStatus :: (MonadDOM m, ToJSString val) => Window -> val -> m ()
-setStatus self val = liftDOM (self ^. jss "status" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.status Mozilla Window.status documentation> 
-getStatus ::
-          (MonadDOM m, FromJSString result) => Window -> m result
-getStatus self
-  = liftDOM ((self ^. js "status") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.closed Mozilla Window.closed documentation> 
-getClosed :: (MonadDOM m) => Window -> m Bool
-getClosed self = liftDOM ((self ^. js "closed") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frames Mozilla Window.frames documentation> 
-getFrames :: (MonadDOM m) => Window -> m Window
-getFrames self
-  = liftDOM ((self ^. js "frames") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.length Mozilla Window.length documentation> 
-getLength :: (MonadDOM m) => Window -> m Word
-getLength self
-  = liftDOM (round <$> ((self ^. js "length") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.top Mozilla Window.top documentation> 
-getTop :: (MonadDOM m) => Window -> m (Maybe Window)
-getTop self = liftDOM ((self ^. js "top") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.top Mozilla Window.top documentation> 
-getTopUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Window
-getTopUnsafe self
-  = liftDOM
-      (((self ^. js "top") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.top Mozilla Window.top documentation> 
-getTopUnchecked :: (MonadDOM m) => Window -> m Window
-getTopUnchecked self
-  = liftDOM ((self ^. js "top") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.opener Mozilla Window.opener documentation> 
-getOpener :: (MonadDOM m) => Window -> m (Maybe Window)
-getOpener self = liftDOM ((self ^. js "opener") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.opener Mozilla Window.opener documentation> 
-getOpenerUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Window
-getOpenerUnsafe self
-  = liftDOM
-      (((self ^. js "opener") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.opener Mozilla Window.opener documentation> 
-getOpenerUnchecked :: (MonadDOM m) => Window -> m Window
-getOpenerUnchecked self
-  = liftDOM ((self ^. js "opener") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.parent Mozilla Window.parent documentation> 
-getParent :: (MonadDOM m) => Window -> m (Maybe Window)
-getParent self = liftDOM ((self ^. js "parent") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.parent Mozilla Window.parent documentation> 
-getParentUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Window
-getParentUnsafe self
-  = liftDOM
-      (((self ^. js "parent") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.parent Mozilla Window.parent documentation> 
-getParentUnchecked :: (MonadDOM m) => Window -> m Window
-getParentUnchecked self
-  = liftDOM ((self ^. js "parent") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frameElement Mozilla Window.frameElement documentation> 
-getFrameElement :: (MonadDOM m) => Window -> m (Maybe Element)
-getFrameElement self
-  = liftDOM ((self ^. js "frameElement") >>= fromJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frameElement Mozilla Window.frameElement documentation> 
-getFrameElementUnsafe ::
-                      (MonadDOM m, HasCallStack) => Window -> m Element
-getFrameElementUnsafe self
-  = liftDOM
-      (((self ^. js "frameElement") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frameElement Mozilla Window.frameElement documentation> 
-getFrameElementUnchecked :: (MonadDOM m) => Window -> m Element
-getFrameElementUnchecked self
-  = liftDOM ((self ^. js "frameElement") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.navigator Mozilla Window.navigator documentation> 
-getNavigator :: (MonadDOM m) => Window -> m Navigator
-getNavigator self
-  = liftDOM ((self ^. js "navigator") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.applicationCache Mozilla Window.applicationCache documentation> 
-getApplicationCache :: (MonadDOM m) => Window -> m ApplicationCache
-getApplicationCache self
-  = liftDOM ((self ^. js "applicationCache") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.sessionStorage Mozilla Window.sessionStorage documentation> 
-getSessionStorage :: (MonadDOM m) => Window -> m Storage
-getSessionStorage self
-  = liftDOM ((self ^. js "sessionStorage") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.localStorage Mozilla Window.localStorage documentation> 
-getLocalStorage :: (MonadDOM m) => Window -> m Storage
-getLocalStorage self
-  = liftDOM ((self ^. js "localStorage") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screen Mozilla Window.screen documentation> 
-getScreen :: (MonadDOM m) => Window -> m Screen
-getScreen self
-  = liftDOM ((self ^. js "screen") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.innerHeight Mozilla Window.innerHeight documentation> 
-getInnerHeight :: (MonadDOM m) => Window -> m Int
-getInnerHeight self
-  = liftDOM (round <$> ((self ^. js "innerHeight") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.innerWidth Mozilla Window.innerWidth documentation> 
-getInnerWidth :: (MonadDOM m) => Window -> m Int
-getInnerWidth self
-  = liftDOM (round <$> ((self ^. js "innerWidth") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollX Mozilla Window.scrollX documentation> 
-getScrollX :: (MonadDOM m) => Window -> m Double
-getScrollX self = liftDOM ((self ^. js "scrollX") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.pageXOffset Mozilla Window.pageXOffset documentation> 
-getPageXOffset :: (MonadDOM m) => Window -> m Double
-getPageXOffset self
-  = liftDOM ((self ^. js "pageXOffset") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY Mozilla Window.scrollY documentation> 
-getScrollY :: (MonadDOM m) => Window -> m Double
-getScrollY self = liftDOM ((self ^. js "scrollY") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.pageYOffset Mozilla Window.pageYOffset documentation> 
-getPageYOffset :: (MonadDOM m) => Window -> m Double
-getPageYOffset self
-  = liftDOM ((self ^. js "pageYOffset") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screenX Mozilla Window.screenX documentation> 
-getScreenX :: (MonadDOM m) => Window -> m Int
-getScreenX self
-  = liftDOM (round <$> ((self ^. js "screenX") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screenY Mozilla Window.screenY documentation> 
-getScreenY :: (MonadDOM m) => Window -> m Int
-getScreenY self
-  = liftDOM (round <$> ((self ^. js "screenY") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.outerWidth Mozilla Window.outerWidth documentation> 
-getOuterWidth :: (MonadDOM m) => Window -> m Int
-getOuterWidth self
-  = liftDOM (round <$> ((self ^. js "outerWidth") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.outerHeight Mozilla Window.outerHeight documentation> 
-getOuterHeight :: (MonadDOM m) => Window -> m Int
-getOuterHeight self
-  = liftDOM (round <$> ((self ^. js "outerHeight") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.devicePixelRatio Mozilla Window.devicePixelRatio documentation> 
-getDevicePixelRatio :: (MonadDOM m) => Window -> m Double
-getDevicePixelRatio self
-  = liftDOM ((self ^. js "devicePixelRatio") >>= valToNumber)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.orientation Mozilla Window.orientation documentation> 
-getOrientation :: (MonadDOM m) => Window -> m Int
-getOrientation self
-  = liftDOM (round <$> ((self ^. js "orientation") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.event Mozilla Window.event documentation> 
-getEvent :: (MonadDOM m) => Window -> m Event
-getEvent self
-  = liftDOM ((self ^. js "event") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.defaultStatus Mozilla Window.defaultStatus documentation> 
-setDefaultStatus ::
-                 (MonadDOM m, ToJSString val) => Window -> val -> m ()
-setDefaultStatus self val
-  = liftDOM (self ^. jss "defaultStatus" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.defaultStatus Mozilla Window.defaultStatus documentation> 
-getDefaultStatus ::
-                 (MonadDOM m, FromJSString result) => Window -> m result
-getDefaultStatus self
-  = liftDOM ((self ^. js "defaultStatus") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.defaultstatus Mozilla Window.defaultstatus documentation> 
-setDefaultstatus ::
-                 (MonadDOM m, ToJSString val) => Window -> val -> m ()
-setDefaultstatus self val
-  = liftDOM (self ^. jss "defaultstatus" (toJSVal val))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.defaultstatus Mozilla Window.defaultstatus documentation> 
-getDefaultstatus ::
-                 (MonadDOM m, FromJSString result) => Window -> m result
-getDefaultstatus self
-  = liftDOM ((self ^. js "defaultstatus") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.offscreenBuffering Mozilla Window.offscreenBuffering documentation> 
-getOffscreenBuffering :: (MonadDOM m) => Window -> m Bool
-getOffscreenBuffering self
-  = liftDOM ((self ^. js "offscreenBuffering") >>= valToBool)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screenLeft Mozilla Window.screenLeft documentation> 
-getScreenLeft :: (MonadDOM m) => Window -> m Int
-getScreenLeft self
-  = liftDOM (round <$> ((self ^. js "screenLeft") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screenTop Mozilla Window.screenTop documentation> 
-getScreenTop :: (MonadDOM m) => Window -> m Int
-getScreenTop self
-  = liftDOM (round <$> ((self ^. js "screenTop") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.clientInformation Mozilla Window.clientInformation documentation> 
-getClientInformation :: (MonadDOM m) => Window -> m Navigator
-getClientInformation self
-  = liftDOM ((self ^. js "clientInformation") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.styleMedia Mozilla Window.styleMedia documentation> 
-getStyleMedia :: (MonadDOM m) => Window -> m StyleMedia
-getStyleMedia self
-  = liftDOM ((self ^. js "styleMedia") >>= fromJSValUnchecked)
-
--- | <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 ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.Window
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/alert MDN Window.alert documentation>
+alertNoMessage :: (MonadDOM m) => Window -> m ()
+alertNoMessage self = liftDOM (void (self ^. jsf "alert" ()))
+
+-- | <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 (self ^. jsf "alert" [toJSVal message]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/blur MDN Window.blur documentation>
+blur :: (MonadDOM m) => Window -> m ()
+blur self = liftDOM (void (self ^. jsf "blur" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/cancelIdleCallback MDN Window.cancelIdleCallback documentation>
+cancelIdleCallback :: (MonadDOM m) => Window -> Word -> m ()
+cancelIdleCallback self handle = liftDOM (void (self ^. jsf "cancelIdleCallback" [toJSVal handle]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/captureEvents MDN Window.captureEvents documentation>
+captureEvents :: (MonadDOM m) => Window -> m ()
+captureEvents self = liftDOM (void (self ^. jsf "captureEvents" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/close MDN Window.close documentation>
+close :: (MonadDOM m) => Window -> m ()
+close self = liftDOM (void (self ^. jsf "close" ()))
+
+-- | <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 (((self ^. jsf "confirm" [P.maybe (P.return jsUndefined) toJSVal message]) >>= valToBool))
+
+-- | <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 (self ^. jsf "confirm" [P.maybe (P.return jsUndefined) toJSVal message]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/focus MDN Window.focus documentation>
+focus :: (MonadDOM m) => Window -> m ()
+focus self = liftDOM (void (self ^. jsf "focus" ()))
+
+-- | <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 (((self ^. jsf "getComputedStyle" [toJSVal elt, toJSVal pseudoElt]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "getComputedStyle" [toJSVal elt, toJSVal pseudoElt]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/getSelection MDN Window.getSelection documentation>
+getSelection :: (MonadDOM m) => Window -> m (Maybe Selection)
+getSelection self = liftDOM (((self ^. jsf "getSelection" ()) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/getSelection MDN Window.getSelection documentation>
+getSelection_ :: (MonadDOM m) => Window -> m ()
+getSelection_ self = liftDOM (void (self ^. jsf "getSelection" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/getSelection MDN Window.getSelection documentation>
+getSelectionUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Selection
+getSelectionUnsafe self = liftDOM ((((self ^. jsf "getSelection" ()) >>= 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 (((self ^. jsf "getSelection" ()) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "matchMedia" [toJSVal query]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "matchMedia" [toJSVal query]))
+
+-- | <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 (self ^. jsf "moveBy" [toJSVal x, toJSVal y]))
+
+-- | <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 (self ^. jsf "moveTo" [toJSVal x, toJSVal y]))
+
+-- | <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 (((self ^. jsf "open" [P.maybe (P.return jsUndefined) toJSVal url, P.maybe (P.return jsUndefined) toJSVal target, P.maybe (P.return jsUndefined) toJSVal 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 (self ^. jsf "open" [P.maybe (P.return jsUndefined) toJSVal url, P.maybe (P.return jsUndefined) toJSVal target, P.maybe (P.return jsUndefined) toJSVal 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 ((((self ^. jsf "open" [P.maybe (P.return jsUndefined) toJSVal url, P.maybe (P.return jsUndefined) toJSVal target, P.maybe (P.return jsUndefined) toJSVal 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 (((self ^. jsf "open" [P.maybe (P.return jsUndefined) toJSVal url, P.maybe (P.return jsUndefined) toJSVal target, P.maybe (P.return jsUndefined) toJSVal features]) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jsf "postMessage" [toJSVal message, toJSVal targetOrigin, P.maybe (P.return jsUndefined) toJSVal transfer]))
+
+-- | <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 (self ^. jsf "postMessage" [toJSVal message, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/print MDN Window.print documentation>
+print :: (MonadDOM m) => Window -> m ()
+print self = liftDOM (void (self ^. jsf "print" ()))
+
+-- | <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 (((self ^. jsf "prompt" [P.maybe (P.return jsUndefined) toJSVal message, P.maybe (P.return jsUndefined) toJSVal default']) >>= fromMaybeJSString))
+
+-- | <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 (self ^. jsf "prompt" [P.maybe (P.return jsUndefined) toJSVal message, P.maybe (P.return jsUndefined) toJSVal 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 ((((self ^. jsf "prompt" [P.maybe (P.return jsUndefined) toJSVal message, P.maybe (P.return jsUndefined) toJSVal default']) >>= fromMaybeJSString) >>= 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 (((self ^. jsf "prompt" [P.maybe (P.return jsUndefined) toJSVal message, P.maybe (P.return jsUndefined) toJSVal default']) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/releaseEvents MDN Window.releaseEvents documentation>
+releaseEvents :: (MonadDOM m) => Window -> m ()
+releaseEvents self = liftDOM (void (self ^. jsf "releaseEvents" ()))
+
+-- | <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 ((P.round <$> ((self ^. jsf "requestIdleCallback" [toJSVal callback', P.maybe (P.return jsUndefined) toJSVal options]) >>= valToNumber)))
+
+-- | <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 (self ^. jsf "requestIdleCallback" [toJSVal callback', P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <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 (self ^. jsf "resizeBy" [toJSVal x, toJSVal y]))
+
+-- | <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 (self ^. jsf "resizeTo" [toJSVal width, toJSVal height]))
+
+-- | <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 (((((self ^. jsf "scroll" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "scroll" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "scroll" [toJSVal x, toJSVal y]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "scroll" [toJSVal x, toJSVal y]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "scrollBy" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "scrollBy" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "scrollBy" [toJSVal x, toJSVal y]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "scrollBy" [toJSVal x, toJSVal y]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "scrollTo" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "scrollTo" [P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "scrollTo" [toJSVal x, toJSVal y]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <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 (((self ^. jsf "scrollTo" [toJSVal x, toJSVal y]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/stop MDN Window.stop documentation>
+stop :: (MonadDOM m) => Window -> m ()
+stop self = liftDOM (void (self ^. jsf "stop" ()))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/window MDN Window.window documentation>
+getWindow :: (MonadDOM m) => Window -> m Window
+getWindow self = liftDOM (((self ^. js "window") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/self MDN Window.self documentation>
+getSelf :: (MonadDOM m) => Window -> m Window
+getSelf self = liftDOM (((self ^. js "self") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/document MDN Window.document documentation>
+getDocument :: (MonadDOM m) => Window -> m Document
+getDocument self = liftDOM (((self ^. js "document") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "name" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/name MDN Window.name documentation>
+getName :: (MonadDOM m, FromJSString result) => Window -> m result
+getName self = liftDOM (((self ^. js "name") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/location MDN Window.location documentation>
+getLocation :: (MonadDOM m) => Window -> m Location
+getLocation self = liftDOM (((self ^. js "location") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/history MDN Window.history documentation>
+getHistory :: (MonadDOM m) => Window -> m History
+getHistory self = liftDOM (((self ^. js "history") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/navigation MDN Window.navigation documentation>
+getNavigation :: (MonadDOM m) => Window -> m Navigation
+getNavigation self = liftDOM (((self ^. js "navigation") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/customElements MDN Window.customElements documentation>
+getCustomElements :: (MonadDOM m) => Window -> m CustomElementRegistry
+getCustomElements self = liftDOM (((self ^. js "customElements") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/locationbar MDN Window.locationbar documentation>
+getLocationbar :: (MonadDOM m) => Window -> m BarProp
+getLocationbar self = liftDOM (((self ^. js "locationbar") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/menubar MDN Window.menubar documentation>
+getMenubar :: (MonadDOM m) => Window -> m BarProp
+getMenubar self = liftDOM (((self ^. js "menubar") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/personalbar MDN Window.personalbar documentation>
+getPersonalbar :: (MonadDOM m) => Window -> m BarProp
+getPersonalbar self = liftDOM (((self ^. js "personalbar") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scrollbars MDN Window.scrollbars documentation>
+getScrollbars :: (MonadDOM m) => Window -> m BarProp
+getScrollbars self = liftDOM (((self ^. js "scrollbars") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/statusbar MDN Window.statusbar documentation>
+getStatusbar :: (MonadDOM m) => Window -> m BarProp
+getStatusbar self = liftDOM (((self ^. js "statusbar") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/toolbar MDN Window.toolbar documentation>
+getToolbar :: (MonadDOM m) => Window -> m BarProp
+getToolbar self = liftDOM (((self ^. js "toolbar") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "status" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/status MDN Window.status documentation>
+getStatus :: (MonadDOM m, FromJSString result) => Window -> m result
+getStatus self = liftDOM (((self ^. js "status") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/closed MDN Window.closed documentation>
+getClosed :: (MonadDOM m) => Window -> m Bool
+getClosed self = liftDOM (((self ^. js "closed") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/frames MDN Window.frames documentation>
+getFrames :: (MonadDOM m) => Window -> m Window
+getFrames self = liftDOM (((self ^. js "frames") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/length MDN Window.length documentation>
+getLength :: (MonadDOM m) => Window -> m Word
+getLength self = liftDOM ((P.round <$> ((self ^. js "length") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/top MDN Window.top documentation>
+getTop :: (MonadDOM m) => Window -> m (Maybe Window)
+getTop self = liftDOM (((self ^. js "top") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/top MDN Window.top documentation>
+getTopUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Window
+getTopUnsafe self = liftDOM ((((self ^. js "top") >>= 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 (((self ^. js "top") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/opener MDN Window.opener documentation>
+setOpener :: (MonadDOM m) => Window -> JSVal -> m ()
+setOpener self val = liftDOM (void (self ^. jss "opener" (toJSVal val)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/opener MDN Window.opener documentation>
+getOpener :: (MonadDOM m) => Window -> m JSVal
+getOpener self = liftDOM (self ^. js "opener")
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/parent MDN Window.parent documentation>
+getParent :: (MonadDOM m) => Window -> m (Maybe Window)
+getParent self = liftDOM (((self ^. js "parent") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/parent MDN Window.parent documentation>
+getParentUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Window
+getParentUnsafe self = liftDOM ((((self ^. js "parent") >>= 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 (((self ^. js "parent") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/frameElement MDN Window.frameElement documentation>
+getFrameElement :: (MonadDOM m) => Window -> m (Maybe Element)
+getFrameElement self = liftDOM (((self ^. js "frameElement") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/frameElement MDN Window.frameElement documentation>
+getFrameElementUnsafe :: (MonadDOM m, HasCallStack) => Window -> m Element
+getFrameElementUnsafe self = liftDOM ((((self ^. js "frameElement") >>= 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 (((self ^. js "frameElement") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/navigator MDN Window.navigator documentation>
+getNavigator :: (MonadDOM m) => Window -> m Navigator
+getNavigator self = liftDOM (((self ^. js "navigator") >>= fromJSValUnchecked))
+
+-- | <https://html.spec.whatwg.org/multipage/system-state.html#dom-clientinformation Window.clientInformation specification>
+getClientInformation :: (MonadDOM m) => Window -> m Navigator
+getClientInformation self = liftDOM (((self ^. js "clientInformation") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/originAgentCluster MDN Window.originAgentCluster documentation>
+getOriginAgentCluster :: (MonadDOM m) => Window -> m Bool
+getOriginAgentCluster self = liftDOM (((self ^. js "originAgentCluster") >>= valToBool))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/cookieStore MDN Window.cookieStore documentation>
+getCookieStore :: (MonadDOM m) => Window -> m CookieStore
+getCookieStore self = liftDOM (((self ^. js "cookieStore") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/screen MDN Window.screen documentation>
+getScreen :: (MonadDOM m) => Window -> m Screen
+getScreen self = liftDOM (((self ^. js "screen") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/visualViewport MDN Window.visualViewport documentation>
+getVisualViewport :: (MonadDOM m) => Window -> m (Maybe VisualViewport)
+getVisualViewport self = liftDOM (((self ^. js "visualViewport") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/visualViewport MDN Window.visualViewport documentation>
+getVisualViewportUnsafe :: (MonadDOM m, HasCallStack) => Window -> m VisualViewport
+getVisualViewportUnsafe self = liftDOM ((((self ^. js "visualViewport") >>= 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 (((self ^. js "visualViewport") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/innerWidth MDN Window.innerWidth documentation>
+getInnerWidth :: (MonadDOM m) => Window -> m Int
+getInnerWidth self = liftDOM ((P.round <$> ((self ^. js "innerWidth") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/innerHeight MDN Window.innerHeight documentation>
+getInnerHeight :: (MonadDOM m) => Window -> m Int
+getInnerHeight self = liftDOM ((P.round <$> ((self ^. js "innerHeight") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scrollX MDN Window.scrollX documentation>
+getScrollX :: (MonadDOM m) => Window -> m Double
+getScrollX self = liftDOM (((self ^. js "scrollX") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-window-pagexoffset Window.pageXOffset specification>
+getPageXOffset :: (MonadDOM m) => Window -> m Double
+getPageXOffset self = liftDOM (((self ^. js "pageXOffset") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/scrollY MDN Window.scrollY documentation>
+getScrollY :: (MonadDOM m) => Window -> m Double
+getScrollY self = liftDOM (((self ^. js "scrollY") >>= valToNumber))
+
+-- | <https://drafts.csswg.org/cssom-view-1/#dom-window-pageyoffset Window.pageYOffset specification>
+getPageYOffset :: (MonadDOM m) => Window -> m Double
+getPageYOffset self = liftDOM (((self ^. js "pageYOffset") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/screenX MDN Window.screenX documentation>
+getScreenX :: (MonadDOM m) => Window -> m Int
+getScreenX self = liftDOM ((P.round <$> ((self ^. js "screenX") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/screenLeft MDN Window.screenLeft documentation>
+getScreenLeft :: (MonadDOM m) => Window -> m Int
+getScreenLeft self = liftDOM ((P.round <$> ((self ^. js "screenLeft") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/screenY MDN Window.screenY documentation>
+getScreenY :: (MonadDOM m) => Window -> m Int
+getScreenY self = liftDOM ((P.round <$> ((self ^. js "screenY") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/screenTop MDN Window.screenTop documentation>
+getScreenTop :: (MonadDOM m) => Window -> m Int
+getScreenTop self = liftDOM ((P.round <$> ((self ^. js "screenTop") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/outerWidth MDN Window.outerWidth documentation>
+getOuterWidth :: (MonadDOM m) => Window -> m Int
+getOuterWidth self = liftDOM ((P.round <$> ((self ^. js "outerWidth") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/outerHeight MDN Window.outerHeight documentation>
+getOuterHeight :: (MonadDOM m) => Window -> m Int
+getOuterHeight self = liftDOM ((P.round <$> ((self ^. js "outerHeight") >>= valToNumber)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/devicePixelRatio MDN Window.devicePixelRatio documentation>
+getDevicePixelRatio :: (MonadDOM m) => Window -> m Double
+getDevicePixelRatio self = liftDOM (((self ^. js "devicePixelRatio") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/documentPictureInPicture MDN Window.documentPictureInPicture documentation>
+getDocumentPictureInPicture :: (MonadDOM m) => Window -> m DocumentPictureInPicture
+getDocumentPictureInPicture self = liftDOM (((self ^. js "documentPictureInPicture") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/event MDN Window.event documentation>
+getEvent :: (MonadDOM m) => Window -> m EventOrUndefined
+getEvent self = liftDOM (((self ^. js "event") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/external MDN Window.external documentation>
+getExternal :: (MonadDOM m) => Window -> m External
+getExternal self = liftDOM (((self ^. js "external") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/speechSynthesis MDN Window.speechSynthesis documentation>
+getSpeechSynthesis :: (MonadDOM m) => Window -> m SpeechSynthesis
+getSpeechSynthesis self = liftDOM (((self ^. js "speechSynthesis") >>= fromJSValUnchecked))
+
+-- | <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/JSDOM/Generated/WindowClient.hs b/src/JSDOM/Generated/WindowClient.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WindowClient.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from service-workers (webref). Do not edit.
+module JSDOM.Generated.WindowClient
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/WindowClient/focus MDN WindowClient.focus documentation>
+focus :: (MonadDOM m) => WindowClient -> m WindowClient
+focus self = liftDOM (((((self ^. jsf "focus" ()) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WindowClient/focus MDN WindowClient.focus documentation>
+focus_ :: (MonadDOM m) => WindowClient -> m ()
+focus_ self = liftDOM (void (((self ^. jsf "focus" ()) >>= readPromise)))
+
+-- | <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 (((((self ^. jsf "navigate" [toJSVal url]) >>= readPromise)) >>= 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 (((self ^. jsf "navigate" [toJSVal url]) >>= readPromise)))
+
+-- | <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 ((((((self ^. jsf "navigate" [toJSVal url]) >>= readPromise)) >>= 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 (((((self ^. jsf "navigate" [toJSVal url]) >>= readPromise)) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WindowClient/visibilityState MDN WindowClient.visibilityState documentation>
+getVisibilityState :: (MonadDOM m) => WindowClient -> m DocumentVisibilityState
+getVisibilityState self = liftDOM (((self ^. js "visibilityState") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WindowClient/focused MDN WindowClient.focused documentation>
+getFocused :: (MonadDOM m) => WindowClient -> m Bool
+getFocused self = liftDOM (((self ^. js "focused") >>= valToBool))
diff --git a/src/JSDOM/Generated/WindowEventHandlers.hs b/src/JSDOM/Generated/WindowEventHandlers.hs
--- a/src/JSDOM/Generated/WindowEventHandlers.hs
+++ b/src/JSDOM/Generated/WindowEventHandlers.hs
@@ -1,97 +1,96 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.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/JSDOM/Generated/WindowLocalStorage.hs b/src/JSDOM/Generated/WindowLocalStorage.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WindowLocalStorage.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.WindowLocalStorage
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/localStorage MDN WindowLocalStorage.localStorage documentation>
+getLocalStorage :: (MonadDOM m, IsWindowLocalStorage self) => self -> m Storage
+getLocalStorage self = liftDOM ((((Types.toWindowLocalStorage self) ^. js "localStorage") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WindowOrWorkerGlobalScope.hs b/src/JSDOM/Generated/WindowOrWorkerGlobalScope.hs
--- a/src/JSDOM/Generated/WindowOrWorkerGlobalScope.hs
+++ b/src/JSDOM/Generated/WindowOrWorkerGlobalScope.hs
@@ -1,139 +1,72 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.WindowOrWorkerGlobalScope
-       (setTimeout, setTimeout_, clearTimeout, setInterval, setInterval_,
-        clearInterval, atob, atob_, btoa, btoa_, getOrigin,
-        WindowOrWorkerGlobalScope(..), gTypeWindowOrWorkerGlobalScope,
-        IsWindowOrWorkerGlobalScope, toWindowOrWorkerGlobalScope)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.setTimeout Mozilla WindowOrWorkerGlobalScope.setTimeout documentation> 
-setTimeout ::
-           (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) =>
-             self -> handler -> Maybe Int -> m Int
-setTimeout self handler timeout
-  = liftDOM
-      (round <$>
-         (((toWindowOrWorkerGlobalScope self) ^. jsf "setTimeout"
-             [toJSVal handler, toJSVal timeout])
-            >>= valToNumber))
+-- | <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 ((((Types.toWindowOrWorkerGlobalScope self) ^. jsf "atob" [toJSVal data']) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.setTimeout Mozilla WindowOrWorkerGlobalScope.setTimeout documentation> 
-setTimeout_ ::
-            (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) =>
-              self -> handler -> Maybe Int -> m ()
-setTimeout_ self handler timeout
-  = liftDOM
-      (void
-         ((toWindowOrWorkerGlobalScope self) ^. jsf "setTimeout"
-            [toJSVal handler, toJSVal timeout]))
+-- | <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 ((Types.toWindowOrWorkerGlobalScope self) ^. jsf "atob" [toJSVal data']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.clearTimeout Mozilla WindowOrWorkerGlobalScope.clearTimeout documentation> 
-clearTimeout ::
-             (MonadDOM m, IsWindowOrWorkerGlobalScope self) =>
-               self -> Maybe Int -> m ()
-clearTimeout self handle
-  = liftDOM
-      (void
-         ((toWindowOrWorkerGlobalScope self) ^. jsf "clearTimeout"
-            [toJSVal handle]))
+-- | <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 ((((Types.toWindowOrWorkerGlobalScope self) ^. jsf "btoa" [toJSVal data']) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.setInterval Mozilla WindowOrWorkerGlobalScope.setInterval documentation> 
-setInterval ::
-            (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) =>
-              self -> handler -> Maybe Int -> m Int
-setInterval self handler timeout
-  = liftDOM
-      (round <$>
-         (((toWindowOrWorkerGlobalScope self) ^. jsf "setInterval"
-             [toJSVal handler, toJSVal timeout])
-            >>= valToNumber))
+-- | <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 ((Types.toWindowOrWorkerGlobalScope self) ^. jsf "btoa" [toJSVal data']))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.setInterval Mozilla WindowOrWorkerGlobalScope.setInterval documentation> 
-setInterval_ ::
-             (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) =>
-               self -> handler -> Maybe Int -> m ()
-setInterval_ self handler timeout
-  = liftDOM
-      (void
-         ((toWindowOrWorkerGlobalScope self) ^. jsf "setInterval"
-            [toJSVal handler, toJSVal timeout]))
+-- | <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 ((Types.toWindowOrWorkerGlobalScope self) ^. jsf "clearInterval" [P.maybe (P.return jsUndefined) toJSVal id]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.clearInterval Mozilla WindowOrWorkerGlobalScope.clearInterval documentation> 
-clearInterval ::
-              (MonadDOM m, IsWindowOrWorkerGlobalScope self) =>
-                self -> Maybe Int -> m ()
-clearInterval self handle
-  = liftDOM
-      (void
-         ((toWindowOrWorkerGlobalScope self) ^. jsf "clearInterval"
-            [toJSVal handle]))
+-- | <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 ((Types.toWindowOrWorkerGlobalScope self) ^. jsf "clearTimeout" [P.maybe (P.return jsUndefined) toJSVal id]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.atob Mozilla WindowOrWorkerGlobalScope.atob documentation> 
-atob ::
-     (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSString string,
-      FromJSString result) =>
-       self -> string -> m result
-atob self string
-  = liftDOM
-      (((toWindowOrWorkerGlobalScope self) ^. jsf "atob"
-          [toJSVal string])
-         >>= fromJSValUnchecked)
+-- | <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 ((((((Types.toWindowOrWorkerGlobalScope self) ^. jsf "fetch" [toJSVal input, P.maybe (P.return jsUndefined) toJSVal init]) >>= readPromise)) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.atob Mozilla WindowOrWorkerGlobalScope.atob documentation> 
-atob_ ::
-      (MonadDOM m, IsWindowOrWorkerGlobalScope self,
-       ToJSString string) =>
-        self -> string -> m ()
-atob_ self string
-  = liftDOM
-      (void
-         ((toWindowOrWorkerGlobalScope self) ^. jsf "atob"
-            [toJSVal string]))
+-- | <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 ((((Types.toWindowOrWorkerGlobalScope self) ^. jsf "fetch" [toJSVal input, P.maybe (P.return jsUndefined) toJSVal init]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.btoa Mozilla WindowOrWorkerGlobalScope.btoa documentation> 
-btoa ::
-     (MonadDOM m, IsWindowOrWorkerGlobalScope self, ToJSString string,
-      FromJSString result) =>
-       self -> string -> m result
-btoa self string
-  = liftDOM
-      (((toWindowOrWorkerGlobalScope self) ^. jsf "btoa"
-          [toJSVal string])
-         >>= fromJSValUnchecked)
+-- | <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.round <$> (((Types.toWindowOrWorkerGlobalScope self) ^. jsf "setInterval" ([toJSVal handler, P.maybe (P.return jsUndefined) toJSVal timeout] ++ P.map toJSVal arguments)) >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.btoa Mozilla WindowOrWorkerGlobalScope.btoa documentation> 
-btoa_ ::
-      (MonadDOM m, IsWindowOrWorkerGlobalScope self,
-       ToJSString string) =>
-        self -> string -> m ()
-btoa_ self string
-  = liftDOM
-      (void
-         ((toWindowOrWorkerGlobalScope self) ^. jsf "btoa"
-            [toJSVal string]))
+-- | <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 ((Types.toWindowOrWorkerGlobalScope self) ^. jsf "setInterval" ([toJSVal handler, P.maybe (P.return jsUndefined) toJSVal timeout] ++ P.map toJSVal arguments)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.origin Mozilla WindowOrWorkerGlobalScope.origin documentation> 
-getOrigin ::
-          (MonadDOM m, IsWindowOrWorkerGlobalScope self,
-           FromJSString result) =>
-            self -> m result
-getOrigin self
-  = liftDOM
-      (((toWindowOrWorkerGlobalScope self) ^. js "origin") >>=
-         fromJSValUnchecked)
+-- | <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.round <$> (((Types.toWindowOrWorkerGlobalScope self) ^. jsf "setTimeout" ([toJSVal handler, P.maybe (P.return jsUndefined) toJSVal timeout] ++ P.map toJSVal arguments)) >>= valToNumber)))
+
+-- | <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 ((Types.toWindowOrWorkerGlobalScope self) ^. jsf "setTimeout" ([toJSVal handler, P.maybe (P.return jsUndefined) toJSVal timeout] ++ P.map toJSVal arguments)))
+
+-- | <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 ((((Types.toWindowOrWorkerGlobalScope self) ^. js "origin") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/IndexedDB/#dom-windoworworkerglobalscope-indexeddb WindowOrWorkerGlobalScope.indexedDB specification>
+getIndexedDB :: (MonadDOM m, IsWindowOrWorkerGlobalScope self) => self -> m IDBFactory
+getIndexedDB self = liftDOM ((((Types.toWindowOrWorkerGlobalScope self) ^. js "indexedDB") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WindowPostMessageOptions.hs b/src/JSDOM/Generated/WindowPostMessageOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WindowPostMessageOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.WindowPostMessageOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/nav-history-apis.html#windowpostmessageoptions WindowPostMessageOptions specification>
+newWindowPostMessageOptions :: (MonadDOM m) => m WindowPostMessageOptions
+newWindowPostMessageOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "targetOrigin" (toJSVal val)))
+
+-- | <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 (((self ^. js "targetOrigin") >>= fromMaybeJSString))
+
+-- | <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 ((((self ^. js "targetOrigin") >>= fromMaybeJSString) >>= 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 (((self ^. js "targetOrigin") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WindowSessionStorage.hs b/src/JSDOM/Generated/WindowSessionStorage.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WindowSessionStorage.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.WindowSessionStorage
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/Window/sessionStorage MDN WindowSessionStorage.sessionStorage documentation>
+getSessionStorage :: (MonadDOM m, IsWindowSessionStorage self) => self -> m Storage
+getSessionStorage self = liftDOM ((((Types.toWindowSessionStorage self) ^. js "sessionStorage") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Worker.hs b/src/JSDOM/Generated/Worker.hs
--- a/src/JSDOM/Generated/Worker.hs
+++ b/src/JSDOM/Generated/Worker.hs
@@ -1,45 +1,36 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.Worker
-       (newWorker, terminate, postMessage, message, Worker(..),
-        gTypeWorker)
+       (newWorker, newWorker', postMessage, postMessageOptions, terminate, Worker(..), gTypeWorker)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker Mozilla Worker documentation> 
-newWorker ::
-          (MonadDOM m, ToJSString scriptUrl) => scriptUrl -> m Worker
-newWorker scriptUrl
-  = liftDOM (Worker <$> new (jsg "Worker") [toJSVal scriptUrl])
+-- | <https://developer.mozilla.org/docs/Web/API/Worker/Worker MDN Worker. documentation>
+newWorker :: (MonadDOM m, IsTrustedScriptURLOrString scriptURL) => scriptURL -> m Worker
+newWorker scriptURL = liftDOM (((new (jsg "Worker") [toJSVal scriptURL]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker.terminate Mozilla Worker.terminate documentation> 
-terminate :: (MonadDOM m) => Worker -> m ()
-terminate self = liftDOM (void (self ^. jsf "terminate" ()))
+-- | <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 (((new (jsg "Worker") [toJSVal scriptURL, P.maybe (P.return jsUndefined) toJSVal options]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker.postMessage Mozilla Worker.postMessage documentation> 
-postMessage ::
-            (MonadDOM m, ToJSVal message, IsGObject transfer) =>
-              Worker -> message -> [transfer] -> m ()
-postMessage self message transfer
-  = liftDOM
-      (void
-         (self ^. jsf "postMessage"
-            [toJSVal message, toJSVal (array transfer)]))
+-- | <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 (self ^. jsf "postMessage" [toJSVal message, toJSVal transfer]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker.onmessage Mozilla Worker.onmessage documentation> 
-message :: EventName Worker MessageEvent
-message = unsafeEventNameAsync (toJSString "message")
+-- | <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 (self ^. jsf "postMessage" [toJSVal message, P.maybe (P.return jsUndefined) toJSVal options]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/Worker/terminate MDN Worker.terminate documentation>
+terminate :: (MonadDOM m) => Worker -> m ()
+terminate self = liftDOM (void (self ^. jsf "terminate" ()))
diff --git a/src/JSDOM/Generated/WorkerAndParameters.hs b/src/JSDOM/Generated/WorkerAndParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WorkerAndParameters.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from webrtc-encoded-transform (webref). Do not edit.
+module JSDOM.Generated.WorkerAndParameters
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dictdef-workerandparameters WorkerAndParameters specification>
+newWorkerAndParameters :: (MonadDOM m) => Worker -> m WorkerAndParameters
+newWorkerAndParameters worker = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "worker" (toJSVal worker)) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-workerandparameters-worker WorkerAndParameters.worker specification>
+setWorker :: (MonadDOM m) => WorkerAndParameters -> Worker -> m ()
+setWorker self val = liftDOM (void (self ^. jss "worker" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-workerandparameters-worker WorkerAndParameters.worker specification>
+getWorker :: (MonadDOM m) => WorkerAndParameters -> m Worker
+getWorker self = liftDOM (((self ^. js "worker") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-workerandparameters-type WorkerAndParameters.type specification>
+setType :: (MonadDOM m) => WorkerAndParameters -> RTCRtpScriptTransformType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-workerandparameters-type WorkerAndParameters.type specification>
+getType :: (MonadDOM m) => WorkerAndParameters -> m (Maybe RTCRtpScriptTransformType)
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://w3c.github.io/webrtc-encoded-transform/#dom-workerandparameters-type WorkerAndParameters.type specification>
+getTypeUnsafe :: (MonadDOM m, HasCallStack) => WorkerAndParameters -> m RTCRtpScriptTransformType
+getTypeUnsafe self = liftDOM ((((self ^. js "type") >>= 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 (((self ^. js "type") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WorkerGlobalScope.hs b/src/JSDOM/Generated/WorkerGlobalScope.hs
--- a/src/JSDOM/Generated/WorkerGlobalScope.hs
+++ b/src/JSDOM/Generated/WorkerGlobalScope.hs
@@ -1,109 +1,60 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.WorkerGlobalScope
-       (fetch, fetch_, close, importScripts, getIndexedDB, getSelf,
-        getLocation, error, offline, online, getNavigator,
-        WorkerGlobalScope(..), gTypeWorkerGlobalScope, IsWorkerGlobalScope,
-        toWorkerGlobalScope)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.fetch Mozilla WorkerGlobalScope.fetch documentation> 
-fetch ::
-      (MonadDOM m, IsWorkerGlobalScope self, ToJSVal input) =>
-        self -> input -> Maybe RequestInit -> m Response
-fetch self input init
-  = liftDOM
-      ((((toWorkerGlobalScope self) ^. jsf "fetch"
-           [toJSVal input, toJSVal init])
-          >>= readPromise)
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.fetch Mozilla WorkerGlobalScope.fetch documentation> 
-fetch_ ::
-       (MonadDOM m, IsWorkerGlobalScope self, ToJSVal input) =>
-         self -> input -> Maybe RequestInit -> m ()
-fetch_ self input init
-  = liftDOM
-      (void
-         ((toWorkerGlobalScope self) ^. jsf "fetch"
-            [toJSVal input, toJSVal init]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.close Mozilla WorkerGlobalScope.close documentation> 
-close :: (MonadDOM m, IsWorkerGlobalScope self) => self -> m ()
-close self
-  = liftDOM (void ((toWorkerGlobalScope self) ^. jsf "close" ()))
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.importScripts Mozilla WorkerGlobalScope.importScripts documentation> 
-importScripts ::
-              (MonadDOM m, IsWorkerGlobalScope self, ToJSString urls) =>
-                self -> [urls] -> m ()
-importScripts self urls
-  = liftDOM
-      (void
-         ((toWorkerGlobalScope self) ^. jsf "importScripts"
-            [toJSVal (array urls)]))
+-- | <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 ((Types.toWorkerGlobalScope self) ^. jsf "importScripts" ([] ++ P.map toJSVal urls)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.indexedDB Mozilla WorkerGlobalScope.indexedDB documentation> 
-getIndexedDB ::
-             (MonadDOM m, IsWorkerGlobalScope self) => self -> m IDBFactory
-getIndexedDB self
-  = liftDOM
-      (((toWorkerGlobalScope self) ^. js "indexedDB") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerGlobalScope/self MDN WorkerGlobalScope.self documentation>
+getSelf :: (MonadDOM m, IsWorkerGlobalScope self) => self -> m WorkerGlobalScope
+getSelf self = liftDOM ((((Types.toWorkerGlobalScope self) ^. js "self") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.self Mozilla WorkerGlobalScope.self documentation> 
-getSelf ::
-        (MonadDOM m, IsWorkerGlobalScope self) =>
-          self -> m WorkerGlobalScope
-getSelf self
-  = liftDOM
-      (((toWorkerGlobalScope self) ^. js "self") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerGlobalScope/location MDN WorkerGlobalScope.location documentation>
+getLocation :: (MonadDOM m, IsWorkerGlobalScope self) => self -> m WorkerLocation
+getLocation self = liftDOM ((((Types.toWorkerGlobalScope self) ^. js "location") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.location Mozilla WorkerGlobalScope.location documentation> 
-getLocation ::
-            (MonadDOM m, IsWorkerGlobalScope self) => self -> m WorkerLocation
-getLocation self
-  = liftDOM
-      (((toWorkerGlobalScope self) ^. js "location") >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerGlobalScope/navigator MDN WorkerGlobalScope.navigator documentation>
+getNavigator :: (MonadDOM m, IsWorkerGlobalScope self) => self -> m WorkerNavigator
+getNavigator self = liftDOM ((((Types.toWorkerGlobalScope self) ^. js "navigator") >>= fromJSValUnchecked))
 
--- | <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")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.navigator Mozilla WorkerGlobalScope.navigator documentation> 
-getNavigator ::
-             (MonadDOM m, IsWorkerGlobalScope self) => self -> m WorkerNavigator
-getNavigator self
-  = liftDOM
-      (((toWorkerGlobalScope self) ^. js "navigator") >>=
-         fromJSValUnchecked)
+-- | <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/JSDOM/Generated/WorkerLocation.hs b/src/JSDOM/Generated/WorkerLocation.hs
--- a/src/JSDOM/Generated/WorkerLocation.hs
+++ b/src/JSDOM/Generated/WorkerLocation.hs
@@ -1,72 +1,52 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.WorkerLocation
-       (getHref, getProtocol, getHost, getHostname, getPort, getPathname,
-        getSearch, getHash, getOrigin, WorkerLocation(..),
-        gTypeWorkerLocation)
+       (getHref, getOrigin, getProtocol, getHost, getHostname, getPort, getPathname, getSearch, getHash, WorkerLocation(..), gTypeWorkerLocation)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.href Mozilla WorkerLocation.href documentation> 
-getHref ::
-        (MonadDOM m, FromJSString result) => WorkerLocation -> m result
-getHref self = liftDOM ((self ^. js "href") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/href MDN WorkerLocation.href documentation>
+getHref :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getHref self = liftDOM (((self ^. js "href") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.protocol Mozilla WorkerLocation.protocol documentation> 
-getProtocol ::
-            (MonadDOM m, FromJSString result) => WorkerLocation -> m result
-getProtocol self
-  = liftDOM ((self ^. js "protocol") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/origin MDN WorkerLocation.origin documentation>
+getOrigin :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getOrigin self = liftDOM (((self ^. js "origin") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.host Mozilla WorkerLocation.host documentation> 
-getHost ::
-        (MonadDOM m, FromJSString result) => WorkerLocation -> m result
-getHost self = liftDOM ((self ^. js "host") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/protocol MDN WorkerLocation.protocol documentation>
+getProtocol :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getProtocol self = liftDOM (((self ^. js "protocol") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.hostname Mozilla WorkerLocation.hostname documentation> 
-getHostname ::
-            (MonadDOM m, FromJSString result) => WorkerLocation -> m result
-getHostname self
-  = liftDOM ((self ^. js "hostname") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/host MDN WorkerLocation.host documentation>
+getHost :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getHost self = liftDOM (((self ^. js "host") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.port Mozilla WorkerLocation.port documentation> 
-getPort ::
-        (MonadDOM m, FromJSString result) => WorkerLocation -> m result
-getPort self = liftDOM ((self ^. js "port") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/hostname MDN WorkerLocation.hostname documentation>
+getHostname :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getHostname self = liftDOM (((self ^. js "hostname") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.pathname Mozilla WorkerLocation.pathname documentation> 
-getPathname ::
-            (MonadDOM m, FromJSString result) => WorkerLocation -> m result
-getPathname self
-  = liftDOM ((self ^. js "pathname") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/port MDN WorkerLocation.port documentation>
+getPort :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getPort self = liftDOM (((self ^. js "port") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.search Mozilla WorkerLocation.search documentation> 
-getSearch ::
-          (MonadDOM m, FromJSString result) => WorkerLocation -> m result
-getSearch self
-  = liftDOM ((self ^. js "search") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/pathname MDN WorkerLocation.pathname documentation>
+getPathname :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getPathname self = liftDOM (((self ^. js "pathname") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.hash Mozilla WorkerLocation.hash documentation> 
-getHash ::
-        (MonadDOM m, FromJSString result) => WorkerLocation -> m result
-getHash self = liftDOM ((self ^. js "hash") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/search MDN WorkerLocation.search documentation>
+getSearch :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getSearch self = liftDOM (((self ^. js "search") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.origin Mozilla WorkerLocation.origin documentation> 
-getOrigin ::
-          (MonadDOM m, FromJSString result) => WorkerLocation -> m result
-getOrigin self
-  = liftDOM ((self ^. js "origin") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerLocation/hash MDN WorkerLocation.hash documentation>
+getHash :: (MonadDOM m, FromJSString result) => WorkerLocation -> m result
+getHash self = liftDOM (((self ^. js "hash") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WorkerNavigator.hs b/src/JSDOM/Generated/WorkerNavigator.hs
--- a/src/JSDOM/Generated/WorkerNavigator.hs
+++ b/src/JSDOM/Generated/WorkerNavigator.hs
@@ -1,35 +1,32 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.WorkerNavigator
-       (getWebkitTemporaryStorage, getWebkitPersistentStorage,
-        WorkerNavigator(..), gTypeWorkerNavigator)
+       (getMediaCapabilities, getPermissions, getSerial, getServiceWorker, WorkerNavigator(..), gTypeWorkerNavigator)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.webkitTemporaryStorage Mozilla WorkerNavigator.webkitTemporaryStorage documentation> 
-getWebkitTemporaryStorage ::
-                          (MonadDOM m) => WorkerNavigator -> m StorageQuota
-getWebkitTemporaryStorage self
-  = liftDOM
-      ((self ^. js "webkitTemporaryStorage") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerNavigator/mediaCapabilities MDN WorkerNavigator.mediaCapabilities documentation>
+getMediaCapabilities :: (MonadDOM m) => WorkerNavigator -> m MediaCapabilities
+getMediaCapabilities self = liftDOM (((self ^. js "mediaCapabilities") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.webkitPersistentStorage Mozilla WorkerNavigator.webkitPersistentStorage documentation> 
-getWebkitPersistentStorage ::
-                           (MonadDOM m) => WorkerNavigator -> m StorageQuota
-getWebkitPersistentStorage self
-  = liftDOM
-      ((self ^. js "webkitPersistentStorage") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerNavigator/permissions MDN WorkerNavigator.permissions documentation>
+getPermissions :: (MonadDOM m) => WorkerNavigator -> m Permissions
+getPermissions self = liftDOM (((self ^. js "permissions") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerNavigator/serial MDN WorkerNavigator.serial documentation>
+getSerial :: (MonadDOM m) => WorkerNavigator -> m Serial
+getSerial self = liftDOM (((self ^. js "serial") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WorkerNavigator/serviceWorker MDN WorkerNavigator.serviceWorker documentation>
+getServiceWorker :: (MonadDOM m) => WorkerNavigator -> m ServiceWorkerContainer
+getServiceWorker self = liftDOM (((self ^. js "serviceWorker") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WorkerOptions.hs b/src/JSDOM/Generated/WorkerOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WorkerOptions.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.WorkerOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/workers.html#workeroptions WorkerOptions specification>
+newWorkerOptions :: (MonadDOM m) => m WorkerOptions
+newWorkerOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toWorkerOptions self) ^. jss "name" (toJSVal val)))
+
+-- | <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 ((((Types.toWorkerOptions self) ^. js "name") >>= fromMaybeJSString))
+
+-- | <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 (((((Types.toWorkerOptions self) ^. js "name") >>= fromMaybeJSString) >>= 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 ((((Types.toWorkerOptions self) ^. js "name") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toWorkerOptions self) ^. jss "type" (toJSVal val)))
+
+-- | <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 ((((Types.toWorkerOptions self) ^. js "type") >>= 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 (((((Types.toWorkerOptions self) ^. js "type") >>= 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 ((((Types.toWorkerOptions self) ^. js "type") >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toWorkerOptions self) ^. jss "credentials" (toJSVal val)))
+
+-- | <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 ((((Types.toWorkerOptions self) ^. js "credentials") >>= 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 (((((Types.toWorkerOptions self) ^. js "credentials") >>= 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 ((((Types.toWorkerOptions self) ^. js "credentials") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/Worklet.hs b/src/JSDOM/Generated/Worklet.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/Worklet.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.Worklet
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toWorklet self) ^. jsf "addModule" [toJSVal moduleURL, P.maybe (P.return jsUndefined) toJSVal options]) >>= readPromise)))
diff --git a/src/JSDOM/Generated/WorkletGlobalScope.hs b/src/JSDOM/Generated/WorkletGlobalScope.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WorkletGlobalScope.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/WorkletOptions.hs b/src/JSDOM/Generated/WorkletOptions.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WorkletOptions.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
+module JSDOM.Generated.WorkletOptions
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://html.spec.whatwg.org/multipage/worklets.html#workletoptions WorkletOptions specification>
+newWorkletOptions :: (MonadDOM m) => m WorkletOptions
+newWorkletOptions = liftDOM ((((new (jsg "Object") () >>= \o -> P.return o)) >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "credentials" (toJSVal val)))
+
+-- | <https://html.spec.whatwg.org/multipage/worklets.html#dom-workletoptions-credentials WorkletOptions.credentials specification>
+getCredentials :: (MonadDOM m) => WorkletOptions -> m (Maybe RequestCredentials)
+getCredentials self = liftDOM (((self ^. js "credentials") >>= 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 ((((self ^. js "credentials") >>= 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 (((self ^. js "credentials") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WritableStream.hs b/src/JSDOM/Generated/WritableStream.hs
--- a/src/JSDOM/Generated/WritableStream.hs
+++ b/src/JSDOM/Generated/WritableStream.hs
@@ -1,82 +1,44 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
 module JSDOM.Generated.WritableStream
-       (newWritableStream, abort, abort_, close, close_, write, write_,
-        getClosed, getReady, getState, WritableStream(..),
-        gTypeWritableStream)
+       (newWritableStream, newWritableStream', abort, close, getWriter, getWriter_, getLocked, WritableStream(..), gTypeWritableStream, IsWritableStream, toWritableStream)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream Mozilla WritableStream documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStream/WritableStream MDN WritableStream. documentation>
 newWritableStream :: (MonadDOM m) => m WritableStream
-newWritableStream
-  = liftDOM (WritableStream <$> new (jsg "WritableStream") ())
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.abort Mozilla WritableStream.abort documentation> 
-abort ::
-      (MonadDOM m, ToJSVal reason) =>
-        WritableStream -> Maybe reason -> m JSVal
-abort self reason
-  = liftDOM
-      (((self ^. jsf "abort" [toJSVal reason]) >>= readPromise) >>=
-         toJSVal)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.abort Mozilla WritableStream.abort documentation> 
-abort_ ::
-       (MonadDOM m, ToJSVal reason) =>
-         WritableStream -> Maybe reason -> m ()
-abort_ self reason
-  = liftDOM (void (self ^. jsf "abort" [toJSVal reason]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.close Mozilla WritableStream.close documentation> 
-close :: (MonadDOM m) => WritableStream -> m JSVal
-close self
-  = liftDOM (((self ^. jsf "close" ()) >>= readPromise) >>= toJSVal)
+newWritableStream = liftDOM (((new (jsg "WritableStream") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.close Mozilla WritableStream.close documentation> 
-close_ :: (MonadDOM m) => WritableStream -> m ()
-close_ self = liftDOM (void (self ^. jsf "close" ()))
+-- | <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 (((new (jsg "WritableStream") [P.maybe (P.return jsUndefined) toJSVal underlyingSink, P.maybe (P.return jsUndefined) toJSVal strategy]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.write Mozilla WritableStream.write documentation> 
-write ::
-      (MonadDOM m, ToJSVal chunk) => WritableStream -> chunk -> m JSVal
-write self chunk
-  = liftDOM
-      (((self ^. jsf "write" [toJSVal chunk]) >>= readPromise) >>=
-         toJSVal)
+-- | <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 ((((Types.toWritableStream self) ^. jsf "abort" [toJSVal reason]) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.write Mozilla WritableStream.write documentation> 
-write_ ::
-       (MonadDOM m, ToJSVal chunk) => WritableStream -> chunk -> m ()
-write_ self chunk
-  = liftDOM (void (self ^. jsf "write" [toJSVal chunk]))
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStream/close MDN WritableStream.close documentation>
+close :: (MonadDOM m, IsWritableStream self) => self -> m ()
+close self = liftDOM (void ((((Types.toWritableStream self) ^. jsf "close" ()) >>= readPromise)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.closed Mozilla WritableStream.closed documentation> 
-getClosed :: (MonadDOM m) => WritableStream -> m Bool
-getClosed self
-  = liftDOM (((self ^. js "closed") >>= readPromise) >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStream/getWriter MDN WritableStream.getWriter documentation>
+getWriter :: (MonadDOM m, IsWritableStream self) => self -> m WritableStreamDefaultWriter
+getWriter self = liftDOM ((((Types.toWritableStream self) ^. jsf "getWriter" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.ready Mozilla WritableStream.ready documentation> 
-getReady :: (MonadDOM m) => WritableStream -> m Bool
-getReady self
-  = liftDOM (((self ^. js "ready") >>= readPromise) >>= valToBool)
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStream/getWriter MDN WritableStream.getWriter documentation>
+getWriter_ :: (MonadDOM m, IsWritableStream self) => self -> m ()
+getWriter_ self = liftDOM (void ((Types.toWritableStream self) ^. jsf "getWriter" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.state Mozilla WritableStream.state documentation> 
-getState ::
-         (MonadDOM m, FromJSString result) => WritableStream -> m result
-getState self
-  = liftDOM ((self ^. js "state") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStream/locked MDN WritableStream.locked documentation>
+getLocked :: (MonadDOM m, IsWritableStream self) => self -> m Bool
+getLocked self = liftDOM ((((Types.toWritableStream self) ^. js "locked") >>= valToBool))
diff --git a/src/JSDOM/Generated/WritableStreamDefaultController.hs b/src/JSDOM/Generated/WritableStreamDefaultController.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WritableStreamDefaultController.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module JSDOM.Generated.WritableStreamDefaultController
+       (error, getSignal, WritableStreamDefaultController(..), gTypeWritableStreamDefaultController)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultController/error MDN WritableStreamDefaultController.error documentation>
+error :: (MonadDOM m) => WritableStreamDefaultController -> JSVal -> m ()
+error self e = liftDOM (void (self ^. jsf "error" [toJSVal e]))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultController/signal MDN WritableStreamDefaultController.signal documentation>
+getSignal :: (MonadDOM m) => WritableStreamDefaultController -> m AbortSignal
+getSignal self = liftDOM (((self ^. js "signal") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/WritableStreamDefaultWriter.hs b/src/JSDOM/Generated/WritableStreamDefaultWriter.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WritableStreamDefaultWriter.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from streams (webref). Do not edit.
+module JSDOM.Generated.WritableStreamDefaultWriter
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/WritableStreamDefaultWriter MDN WritableStreamDefaultWriter. documentation>
+newWritableStreamDefaultWriter :: (MonadDOM m, IsWritableStream stream) => stream -> m WritableStreamDefaultWriter
+newWritableStreamDefaultWriter stream = liftDOM (((new (jsg "WritableStreamDefaultWriter") [toJSVal stream]) >>= fromJSValUnchecked))
+
+-- | <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 ((((Types.toWritableStreamDefaultWriter self) ^. jsf "abort" [toJSVal reason]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/close MDN WritableStreamDefaultWriter.close documentation>
+close :: (MonadDOM m, IsWritableStreamDefaultWriter self) => self -> m ()
+close self = liftDOM (void ((((Types.toWritableStreamDefaultWriter self) ^. jsf "close" ()) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/releaseLock MDN WritableStreamDefaultWriter.releaseLock documentation>
+releaseLock :: (MonadDOM m, IsWritableStreamDefaultWriter self) => self -> m ()
+releaseLock self = liftDOM (void ((Types.toWritableStreamDefaultWriter self) ^. jsf "releaseLock" ()))
+
+-- | <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 ((((Types.toWritableStreamDefaultWriter self) ^. jsf "write" [toJSVal chunk]) >>= readPromise)))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/closed MDN WritableStreamDefaultWriter.closed documentation>
+getClosed :: (MonadDOM m, IsWritableStreamDefaultWriter self) => self -> m ()
+getClosed self = liftDOM (void ((((Types.toWritableStreamDefaultWriter self) ^. js "closed") >>= readPromise)))
+
+-- | <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 ((((Types.toWritableStreamDefaultWriter self) ^. js "desiredSize") >>= 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 (((((Types.toWritableStreamDefaultWriter self) ^. js "desiredSize") >>= 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 ((((Types.toWritableStreamDefaultWriter self) ^. js "desiredSize") >>= valToNumber))
+
+-- | <https://developer.mozilla.org/docs/Web/API/WritableStreamDefaultWriter/ready MDN WritableStreamDefaultWriter.ready documentation>
+getReady :: (MonadDOM m, IsWritableStreamDefaultWriter self) => self -> m ()
+getReady self = liftDOM (void ((((Types.toWritableStreamDefaultWriter self) ^. js "ready") >>= readPromise)))
diff --git a/src/JSDOM/Generated/WriteParams.hs b/src/JSDOM/Generated/WriteParams.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/WriteParams.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from fs (webref). Do not edit.
+module JSDOM.Generated.WriteParams
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <https://fs.spec.whatwg.org/#dictdef-writeparams WriteParams specification>
+newWriteParams :: (MonadDOM m) => WriteCommandType -> m WriteParams
+newWriteParams type' = liftDOM ((((new (jsg "Object") () >>= \o -> (o ^. jss "type" (toJSVal type')) P.>> P.return o)) >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-type WriteParams.type specification>
+setType :: (MonadDOM m) => WriteParams -> WriteCommandType -> m ()
+setType self val = liftDOM (void (self ^. jss "type" (toJSVal val)))
+
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-type WriteParams.type specification>
+getType :: (MonadDOM m) => WriteParams -> m WriteCommandType
+getType self = liftDOM (((self ^. js "type") >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-size WriteParams.size specification>
+setSize :: (MonadDOM m) => WriteParams -> Maybe Word53 -> m ()
+setSize self val = liftDOM (void (self ^. jss "size" (toJSVal val)))
+
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-size WriteParams.size specification>
+getSize :: (MonadDOM m) => WriteParams -> m (Maybe Word53)
+getSize self = liftDOM (((self ^. js "size") >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-size WriteParams.size specification>
+getSizeUnsafe :: (MonadDOM m, HasCallStack) => WriteParams -> m Word53
+getSizeUnsafe self = liftDOM ((((self ^. js "size") >>= 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 (((self ^. js "size") >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-position WriteParams.position specification>
+setPosition :: (MonadDOM m) => WriteParams -> Maybe Word53 -> m ()
+setPosition self val = liftDOM (void (self ^. jss "position" (toJSVal val)))
+
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-position WriteParams.position specification>
+getPosition :: (MonadDOM m) => WriteParams -> m (Maybe Word53)
+getPosition self = liftDOM (((self ^. js "position") >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-position WriteParams.position specification>
+getPositionUnsafe :: (MonadDOM m, HasCallStack) => WriteParams -> m Word53
+getPositionUnsafe self = liftDOM ((((self ^. js "position") >>= 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 (((self ^. js "position") >>= fromJSValUnchecked))
+
+-- | <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 (self ^. jss "data" (toJSVal val)))
+
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-data WriteParams.data specification>
+getData :: (MonadDOM m) => WriteParams -> m (Maybe BlobPart)
+getData self = liftDOM (((self ^. js "data") >>= fromJSValUnchecked))
+
+-- | <https://fs.spec.whatwg.org/#dom-writeparams-data WriteParams.data specification>
+getDataUnsafe :: (MonadDOM m, HasCallStack) => WriteParams -> m BlobPart
+getDataUnsafe self = liftDOM ((((self ^. js "data") >>= 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 (((self ^. js "data") >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/XMLDocument.hs b/src/JSDOM/Generated/XMLDocument.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/XMLDocument.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.XMLDocument
+       (XMLDocument(..), gTypeXMLDocument)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/XMLHttpRequest.hs b/src/JSDOM/Generated/XMLHttpRequest.hs
--- a/src/JSDOM/Generated/XMLHttpRequest.hs
+++ b/src/JSDOM/Generated/XMLHttpRequest.hs
@@ -1,244 +1,146 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from xhr (webref). Do not edit.
 module JSDOM.Generated.XMLHttpRequest
-       (newXMLHttpRequest, openSimple, open, setRequestHeader, send,
-        abort, getResponseHeader, getResponseHeader_,
-        getResponseHeaderUnsafe, getResponseHeaderUnchecked,
-        getAllResponseHeaders, getAllResponseHeaders_, overrideMimeType,
-        pattern UNSENT, pattern OPENED, pattern HEADERS_RECEIVED,
-        pattern LOADING, pattern DONE, readyStateChange, getReadyState,
-        setTimeout, getTimeout, setWithCredentials, getWithCredentials,
-        getUpload, getResponseURL, getStatus, getStatusText,
-        setResponseType, getResponseType, getResponse, getResponseText,
-        getResponseTextUnsafe, getResponseTextUnchecked, getResponseXML,
-        getResponseXMLUnsafe, getResponseXMLUnchecked, XMLHttpRequest(..),
-        gTypeXMLHttpRequest)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest Mozilla XMLHttpRequest documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/XMLHttpRequest MDN XMLHttpRequest. documentation>
 newXMLHttpRequest :: (MonadDOM m) => m XMLHttpRequest
-newXMLHttpRequest
-  = liftDOM (XMLHttpRequest <$> new (jsg "XMLHttpRequest") ())
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.open Mozilla XMLHttpRequest.open documentation> 
-openSimple ::
-           (MonadDOM m, ToJSString method, ToJSString url) =>
-             XMLHttpRequest -> method -> url -> m ()
-openSimple self method url
-  = liftDOM (void (self ^. jsf "open" [toJSVal method, toJSVal url]))
+newXMLHttpRequest = liftDOM (((new (jsg "XMLHttpRequest") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.open Mozilla XMLHttpRequest.open documentation> 
-open ::
-     (MonadDOM 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
-  = liftDOM
-      (void
-         (self ^. jsf "open"
-            [toJSVal method, toJSVal url, toJSVal async, toJSVal user,
-             toJSVal password]))
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/abort MDN XMLHttpRequest.abort documentation>
+abort :: (MonadDOM m) => XMLHttpRequest -> m ()
+abort self = liftDOM (void (self ^. jsf "abort" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.setRequestHeader Mozilla XMLHttpRequest.setRequestHeader documentation> 
-setRequestHeader ::
-                 (MonadDOM m, ToJSString header, ToJSString value) =>
-                   XMLHttpRequest -> header -> value -> m ()
-setRequestHeader self header value
-  = liftDOM
-      (void
-         (self ^. jsf "setRequestHeader" [toJSVal header, toJSVal value]))
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/getAllResponseHeaders MDN XMLHttpRequest.getAllResponseHeaders documentation>
+getAllResponseHeaders :: (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result
+getAllResponseHeaders self = liftDOM (((self ^. jsf "getAllResponseHeaders" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.send Mozilla XMLHttpRequest.send documentation> 
-send ::
-     (MonadDOM m, IsXMLHttpRequestBody body) =>
-       XMLHttpRequest -> Maybe body -> m ()
-send self body = liftDOM (void (self ^. jsf "send" [toJSVal body]))
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/getAllResponseHeaders MDN XMLHttpRequest.getAllResponseHeaders documentation>
+getAllResponseHeaders_ :: (MonadDOM m) => XMLHttpRequest -> m ()
+getAllResponseHeaders_ self = liftDOM (void (self ^. jsf "getAllResponseHeaders" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.abort Mozilla XMLHttpRequest.abort documentation> 
-abort :: (MonadDOM m) => XMLHttpRequest -> m ()
-abort self = liftDOM (void (self ^. jsf "abort" ()))
+-- | <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 (((self ^. jsf "getResponseHeader" [toJSVal name]) >>= fromMaybeJSString))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getResponseHeader Mozilla XMLHttpRequest.getResponseHeader documentation> 
-getResponseHeader ::
-                  (MonadDOM m, ToJSString name, FromJSString result) =>
-                    XMLHttpRequest -> name -> m (Maybe result)
-getResponseHeader self name
-  = liftDOM
-      ((self ^. jsf "getResponseHeader" [toJSVal name]) >>=
-         fromMaybeJSString)
+-- | <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 (self ^. jsf "getResponseHeader" [toJSVal name]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getResponseHeader Mozilla XMLHttpRequest.getResponseHeader documentation> 
-getResponseHeader_ ::
-                   (MonadDOM m, ToJSString name) => XMLHttpRequest -> name -> m ()
-getResponseHeader_ self name
-  = liftDOM (void (self ^. jsf "getResponseHeader" [toJSVal 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 ((((self ^. jsf "getResponseHeader" [toJSVal name]) >>= fromMaybeJSString) >>= 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 ::
-                        (MonadDOM m, ToJSString name, HasCallStack, FromJSString result) =>
-                          XMLHttpRequest -> name -> m result
-getResponseHeaderUnsafe self name
-  = liftDOM
-      (((self ^. jsf "getResponseHeader" [toJSVal name]) >>=
-          fromMaybeJSString)
-         >>= 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 (((self ^. jsf "getResponseHeader" [toJSVal name]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getResponseHeader Mozilla XMLHttpRequest.getResponseHeader documentation> 
-getResponseHeaderUnchecked ::
-                           (MonadDOM m, ToJSString name, FromJSString result) =>
-                             XMLHttpRequest -> name -> m result
-getResponseHeaderUnchecked self name
-  = liftDOM
-      ((self ^. jsf "getResponseHeader" [toJSVal name]) >>=
-         fromJSValUnchecked)
+-- | <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 (self ^. jsf "open" [toJSVal method, toJSVal url]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getAllResponseHeaders Mozilla XMLHttpRequest.getAllResponseHeaders documentation> 
-getAllResponseHeaders ::
-                      (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result
-getAllResponseHeaders self
-  = liftDOM
-      ((self ^. jsf "getAllResponseHeaders" ()) >>= fromJSValUnchecked)
+-- | <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 (self ^. jsf "open" [toJSVal method, toJSVal url, toJSVal async, toJSVal username, toJSVal password]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getAllResponseHeaders Mozilla XMLHttpRequest.getAllResponseHeaders documentation> 
-getAllResponseHeaders_ :: (MonadDOM m) => XMLHttpRequest -> m ()
-getAllResponseHeaders_ self
-  = liftDOM (void (self ^. jsf "getAllResponseHeaders" ()))
+-- | <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 (self ^. jsf "overrideMimeType" [toJSVal mime]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.overrideMimeType Mozilla XMLHttpRequest.overrideMimeType documentation> 
-overrideMimeType ::
-                 (MonadDOM m, ToJSString mime) => XMLHttpRequest -> mime -> m ()
-overrideMimeType self mime
-  = liftDOM (void (self ^. jsf "overrideMimeType" [toJSVal mime]))
-pattern UNSENT = 0
-pattern OPENED = 1
-pattern HEADERS_RECEIVED = 2
-pattern LOADING = 3
-pattern DONE = 4
+-- | <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 (self ^. jsf "send" [toJSVal body]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.onreadystatechange Mozilla XMLHttpRequest.onreadystatechange documentation> 
-readyStateChange :: EventName XMLHttpRequest Event
-readyStateChange
-  = unsafeEventNameAsync (toJSString "readystatechange")
+-- | <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 (self ^. jsf "setRequestHeader" [toJSVal name, toJSVal value]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.readyState Mozilla XMLHttpRequest.readyState documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/readyState MDN XMLHttpRequest.readyState documentation>
 getReadyState :: (MonadDOM m) => XMLHttpRequest -> m Word
-getReadyState self
-  = liftDOM (round <$> ((self ^. js "readyState") >>= valToNumber))
+getReadyState self = liftDOM ((P.round <$> ((self ^. js "readyState") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.timeout Mozilla XMLHttpRequest.timeout documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/timeout MDN XMLHttpRequest.timeout documentation>
 setTimeout :: (MonadDOM m) => XMLHttpRequest -> Word -> m ()
-setTimeout self val = liftDOM (self ^. jss "timeout" (toJSVal val))
+setTimeout self val = liftDOM (void (self ^. jss "timeout" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.timeout Mozilla XMLHttpRequest.timeout documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/timeout MDN XMLHttpRequest.timeout documentation>
 getTimeout :: (MonadDOM m) => XMLHttpRequest -> m Word
-getTimeout self
-  = liftDOM (round <$> ((self ^. js "timeout") >>= valToNumber))
+getTimeout self = liftDOM ((P.round <$> ((self ^. js "timeout") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.withCredentials Mozilla XMLHttpRequest.withCredentials documentation> 
-setWithCredentials ::
-                   (MonadDOM m) => XMLHttpRequest -> Bool -> m ()
-setWithCredentials self val
-  = liftDOM (self ^. jss "withCredentials" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/withCredentials MDN XMLHttpRequest.withCredentials documentation>
+setWithCredentials :: (MonadDOM m) => XMLHttpRequest -> Bool -> m ()
+setWithCredentials self val = liftDOM (void (self ^. jss "withCredentials" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.withCredentials Mozilla XMLHttpRequest.withCredentials documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/withCredentials MDN XMLHttpRequest.withCredentials documentation>
 getWithCredentials :: (MonadDOM m) => XMLHttpRequest -> m Bool
-getWithCredentials self
-  = liftDOM ((self ^. js "withCredentials") >>= valToBool)
+getWithCredentials self = liftDOM (((self ^. js "withCredentials") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.upload Mozilla XMLHttpRequest.upload documentation> 
-getUpload ::
-          (MonadDOM m) => XMLHttpRequest -> m XMLHttpRequestUpload
-getUpload self
-  = liftDOM ((self ^. js "upload") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/upload MDN XMLHttpRequest.upload documentation>
+getUpload :: (MonadDOM m) => XMLHttpRequest -> m XMLHttpRequestUpload
+getUpload self = liftDOM (((self ^. js "upload") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseURL Mozilla XMLHttpRequest.responseURL documentation> 
-getResponseURL ::
-               (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result
-getResponseURL self
-  = liftDOM ((self ^. js "responseURL") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseURL MDN XMLHttpRequest.responseURL documentation>
+getResponseURL :: (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result
+getResponseURL self = liftDOM (((self ^. js "responseURL") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.status Mozilla XMLHttpRequest.status documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/status MDN XMLHttpRequest.status documentation>
 getStatus :: (MonadDOM m) => XMLHttpRequest -> m Word
-getStatus self
-  = liftDOM (round <$> ((self ^. js "status") >>= valToNumber))
+getStatus self = liftDOM ((P.round <$> ((self ^. js "status") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.statusText Mozilla XMLHttpRequest.statusText documentation> 
-getStatusText ::
-              (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result
-getStatusText self
-  = liftDOM ((self ^. js "statusText") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/statusText MDN XMLHttpRequest.statusText documentation>
+getStatusText :: (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result
+getStatusText self = liftDOM (((self ^. js "statusText") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseType Mozilla XMLHttpRequest.responseType documentation> 
-setResponseType ::
-                (MonadDOM m) =>
-                  XMLHttpRequest -> XMLHttpRequestResponseType -> m ()
-setResponseType self val
-  = liftDOM (self ^. jss "responseType" (toJSVal val))
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseType MDN XMLHttpRequest.responseType documentation>
+setResponseType :: (MonadDOM m) => XMLHttpRequest -> XMLHttpRequestResponseType -> m ()
+setResponseType self val = liftDOM (void (self ^. jss "responseType" (toJSVal val)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseType Mozilla XMLHttpRequest.responseType documentation> 
-getResponseType ::
-                (MonadDOM m) => XMLHttpRequest -> m XMLHttpRequestResponseType
-getResponseType self
-  = liftDOM ((self ^. js "responseType") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseType MDN XMLHttpRequest.responseType documentation>
+getResponseType :: (MonadDOM m) => XMLHttpRequest -> m XMLHttpRequestResponseType
+getResponseType self = liftDOM (((self ^. js "responseType") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.response Mozilla XMLHttpRequest.response documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/response MDN XMLHttpRequest.response documentation>
 getResponse :: (MonadDOM m) => XMLHttpRequest -> m JSVal
-getResponse self = liftDOM ((self ^. js "response") >>= toJSVal)
+getResponse self = liftDOM (self ^. js "response")
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseText Mozilla XMLHttpRequest.responseText documentation> 
-getResponseText ::
-                (MonadDOM m, FromJSString result) =>
-                  XMLHttpRequest -> m (Maybe result)
-getResponseText self
-  = liftDOM ((self ^. js "responseText") >>= fromMaybeJSString)
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseText MDN XMLHttpRequest.responseText documentation>
+getResponseText :: (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result
+getResponseText self = liftDOM (((self ^. js "responseText") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseText Mozilla XMLHttpRequest.responseText documentation> 
-getResponseTextUnsafe ::
-                      (MonadDOM m, HasCallStack, FromJSString result) =>
-                        XMLHttpRequest -> m result
-getResponseTextUnsafe self
-  = liftDOM
-      (((self ^. js "responseText") >>= fromMaybeJSString) >>=
-         maybe (Prelude.error "Nothing to return") return)
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseXML MDN XMLHttpRequest.responseXML documentation>
+getResponseXML :: (MonadDOM m) => XMLHttpRequest -> m (Maybe Document)
+getResponseXML self = liftDOM (((self ^. js "responseXML") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseText Mozilla XMLHttpRequest.responseText documentation> 
-getResponseTextUnchecked ::
-                         (MonadDOM m, FromJSString result) => XMLHttpRequest -> m result
-getResponseTextUnchecked self
-  = liftDOM ((self ^. js "responseText") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseXML MDN XMLHttpRequest.responseXML documentation>
+getResponseXMLUnsafe :: (MonadDOM m, HasCallStack) => XMLHttpRequest -> m Document
+getResponseXMLUnsafe self = liftDOM ((((self ^. js "responseXML") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseXML Mozilla XMLHttpRequest.responseXML documentation> 
-getResponseXML ::
-               (MonadDOM m) => XMLHttpRequest -> m (Maybe Document)
-getResponseXML self
-  = liftDOM ((self ^. js "responseXML") >>= fromJSVal)
+-- | <https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/responseXML MDN XMLHttpRequest.responseXML documentation>
+getResponseXMLUnchecked :: (MonadDOM m) => XMLHttpRequest -> m Document
+getResponseXMLUnchecked self = liftDOM (((self ^. js "responseXML") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseXML Mozilla XMLHttpRequest.responseXML documentation> 
-getResponseXMLUnsafe ::
-                     (MonadDOM m, HasCallStack) => XMLHttpRequest -> m Document
-getResponseXMLUnsafe self
-  = liftDOM
-      (((self ^. js "responseXML") >>= fromJSVal) >>=
-         maybe (Prelude.error "Nothing to return") return)
+pattern UNSENT = 0
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseXML Mozilla XMLHttpRequest.responseXML documentation> 
-getResponseXMLUnchecked ::
-                        (MonadDOM m) => XMLHttpRequest -> m Document
-getResponseXMLUnchecked self
-  = liftDOM ((self ^. js "responseXML") >>= fromJSValUnchecked)
+pattern OPENED = 1
+
+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/JSDOM/Generated/XMLHttpRequestEventTarget.hs b/src/JSDOM/Generated/XMLHttpRequestEventTarget.hs
--- a/src/JSDOM/Generated/XMLHttpRequestEventTarget.hs
+++ b/src/JSDOM/Generated/XMLHttpRequestEventTarget.hs
@@ -1,64 +1,44 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from xhr (webref). Do not edit.
 module JSDOM.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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.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/JSDOM/Generated/XMLHttpRequestProgressEvent.hs b/src/JSDOM/Generated/XMLHttpRequestProgressEvent.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/XMLHttpRequestProgressEvent.hs
+++ /dev/null
@@ -1,33 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.XMLHttpRequestProgressEvent
-       (getPosition, getTotalSize, XMLHttpRequestProgressEvent(..),
-        gTypeXMLHttpRequestProgressEvent)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestProgressEvent.position Mozilla XMLHttpRequestProgressEvent.position documentation> 
-getPosition ::
-            (MonadDOM m) => XMLHttpRequestProgressEvent -> m Word64
-getPosition self
-  = liftDOM (round <$> ((self ^. js "position") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestProgressEvent.totalSize Mozilla XMLHttpRequestProgressEvent.totalSize documentation> 
-getTotalSize ::
-             (MonadDOM m) => XMLHttpRequestProgressEvent -> m Word64
-getTotalSize self
-  = liftDOM (round <$> ((self ^. js "totalSize") >>= valToNumber))
diff --git a/src/JSDOM/Generated/XMLHttpRequestUpload.hs b/src/JSDOM/Generated/XMLHttpRequestUpload.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/XMLHttpRequestUpload.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from xhr (webref). Do not edit.
+module JSDOM.Generated.XMLHttpRequestUpload
+       (XMLHttpRequestUpload(..), gTypeXMLHttpRequestUpload)
+       where
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
+import Control.Monad (void)
+import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
diff --git a/src/JSDOM/Generated/XMLSerializer.hs b/src/JSDOM/Generated/XMLSerializer.hs
--- a/src/JSDOM/Generated/XMLSerializer.hs
+++ b/src/JSDOM/Generated/XMLSerializer.hs
@@ -1,41 +1,28 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from html (webref). Do not edit.
 module JSDOM.Generated.XMLSerializer
-       (newXMLSerializer, serializeToString, serializeToString_,
-        XMLSerializer(..), gTypeXMLSerializer)
+       (newXMLSerializer, serializeToString, serializeToString_, XMLSerializer(..), gTypeXMLSerializer)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer Mozilla XMLSerializer documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/XMLSerializer/XMLSerializer MDN XMLSerializer. documentation>
 newXMLSerializer :: (MonadDOM m) => m XMLSerializer
-newXMLSerializer
-  = liftDOM (XMLSerializer <$> new (jsg "XMLSerializer") ())
+newXMLSerializer = liftDOM (((new (jsg "XMLSerializer") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer.serializeToString Mozilla XMLSerializer.serializeToString documentation> 
-serializeToString ::
-                  (MonadDOM m, IsNode node, FromJSString result) =>
-                    XMLSerializer -> node -> m result
-serializeToString self node
-  = liftDOM
-      ((self ^. jsf "serializeToString" [toJSVal node]) >>=
-         fromJSValUnchecked)
+-- | <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 (((self ^. jsf "serializeToString" [toJSVal root]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer.serializeToString Mozilla XMLSerializer.serializeToString documentation> 
-serializeToString_ ::
-                   (MonadDOM m, IsNode node) => XMLSerializer -> node -> m ()
-serializeToString_ self node
-  = liftDOM (void (self ^. jsf "serializeToString" [toJSVal 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 (self ^. jsf "serializeToString" [toJSVal root]))
diff --git a/src/JSDOM/Generated/XPathEvaluator.hs b/src/JSDOM/Generated/XPathEvaluator.hs
--- a/src/JSDOM/Generated/XPathEvaluator.hs
+++ b/src/JSDOM/Generated/XPathEvaluator.hs
@@ -1,94 +1,20 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.XPathEvaluator
-       (newXPathEvaluator, createExpression, createExpression_,
-        createNSResolver, createNSResolver_, evaluate, evaluate_,
-        XPathEvaluator(..), gTypeXPathEvaluator)
+       (newXPathEvaluator, XPathEvaluator(..), gTypeXPathEvaluator)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator Mozilla XPathEvaluator documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/XPathEvaluator/XPathEvaluator MDN XPathEvaluator. documentation>
 newXPathEvaluator :: (MonadDOM m) => m XPathEvaluator
-newXPathEvaluator
-  = liftDOM (XPathEvaluator <$> new (jsg "XPathEvaluator") ())
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createExpression Mozilla XPathEvaluator.createExpression documentation> 
-createExpression ::
-                 (MonadDOM m, ToJSString expression) =>
-                   XPathEvaluator ->
-                     Maybe expression -> Maybe XPathNSResolver -> m XPathExpression
-createExpression self expression resolver
-  = liftDOM
-      ((self ^. jsf "createExpression"
-          [toJSVal expression, toJSVal resolver])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createExpression Mozilla XPathEvaluator.createExpression documentation> 
-createExpression_ ::
-                  (MonadDOM m, ToJSString expression) =>
-                    XPathEvaluator -> Maybe expression -> Maybe XPathNSResolver -> m ()
-createExpression_ self expression resolver
-  = liftDOM
-      (void
-         (self ^. jsf "createExpression"
-            [toJSVal expression, toJSVal resolver]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createNSResolver Mozilla XPathEvaluator.createNSResolver documentation> 
-createNSResolver ::
-                 (MonadDOM m, IsNode nodeResolver) =>
-                   XPathEvaluator -> Maybe nodeResolver -> m XPathNSResolver
-createNSResolver self nodeResolver
-  = liftDOM
-      ((self ^. jsf "createNSResolver" [toJSVal nodeResolver]) >>=
-         fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createNSResolver Mozilla XPathEvaluator.createNSResolver documentation> 
-createNSResolver_ ::
-                  (MonadDOM m, IsNode nodeResolver) =>
-                    XPathEvaluator -> Maybe nodeResolver -> m ()
-createNSResolver_ self nodeResolver
-  = liftDOM
-      (void (self ^. jsf "createNSResolver" [toJSVal nodeResolver]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.evaluate Mozilla XPathEvaluator.evaluate documentation> 
-evaluate ::
-         (MonadDOM 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
-  = liftDOM
-      ((self ^. jsf "evaluate"
-          [toJSVal expression, toJSVal contextNode, toJSVal resolver,
-           toJSVal type', toJSVal inResult])
-         >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.evaluate Mozilla XPathEvaluator.evaluate documentation> 
-evaluate_ ::
-          (MonadDOM m, ToJSString expression, IsNode contextNode) =>
-            XPathEvaluator ->
-              Maybe expression ->
-                Maybe contextNode ->
-                  Maybe XPathNSResolver -> Maybe Word -> Maybe XPathResult -> m ()
-evaluate_ self expression contextNode resolver type' inResult
-  = liftDOM
-      (void
-         (self ^. jsf "evaluate"
-            [toJSVal expression, toJSVal contextNode, toJSVal resolver,
-             toJSVal type', toJSVal inResult]))
+newXPathEvaluator = liftDOM (((new (jsg "XPathEvaluator") ()) >>= fromJSValUnchecked))
diff --git a/src/JSDOM/Generated/XPathEvaluatorBase.hs b/src/JSDOM/Generated/XPathEvaluatorBase.hs
new file mode 100644
--- /dev/null
+++ b/src/JSDOM/Generated/XPathEvaluatorBase.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
+module JSDOM.Generated.XPathEvaluatorBase
+       (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 Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
+import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import JSDOM.Generated.Enums
+
+-- | <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 ((((Types.toXPathEvaluatorBase self) ^. jsf "createExpression" [toJSVal expression, toJSVal resolver]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toXPathEvaluatorBase self) ^. jsf "createExpression" [toJSVal expression, toJSVal resolver]))
+
+-- | <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 ((((Types.toXPathEvaluatorBase self) ^. jsf "createNSResolver" [toJSVal nodeResolver]) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toXPathEvaluatorBase self) ^. jsf "createNSResolver" [toJSVal nodeResolver]))
+
+-- | <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 ((((Types.toXPathEvaluatorBase self) ^. jsf "evaluate" [toJSVal expression, toJSVal contextNode, toJSVal resolver, P.maybe (P.return jsUndefined) toJSVal type', toJSVal result']) >>= fromJSValUnchecked))
+
+-- | <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 ((Types.toXPathEvaluatorBase self) ^. jsf "evaluate" [toJSVal expression, toJSVal contextNode, toJSVal resolver, P.maybe (P.return jsUndefined) toJSVal type', toJSVal result']))
diff --git a/src/JSDOM/Generated/XPathException.hs b/src/JSDOM/Generated/XPathException.hs
deleted file mode 100644
--- a/src/JSDOM/Generated/XPathException.hs
+++ /dev/null
@@ -1,50 +0,0 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-module JSDOM.Generated.XPathException
-       (toString, toString_, pattern INVALID_EXPRESSION_ERR,
-        pattern TYPE_ERR, getCode, getName, getMessage, XPathException(..),
-        gTypeXPathException)
-       where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
-import Control.Monad (void)
-import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathException.toString Mozilla XPathException.toString documentation> 
-toString ::
-         (MonadDOM m, FromJSString result) => XPathException -> m result
-toString self
-  = liftDOM ((self ^. jsf "toString" ()) >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathException.toString Mozilla XPathException.toString documentation> 
-toString_ :: (MonadDOM m) => XPathException -> m ()
-toString_ self = liftDOM (void (self ^. jsf "toString" ()))
-pattern INVALID_EXPRESSION_ERR = 51
-pattern TYPE_ERR = 52
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathException.code Mozilla XPathException.code documentation> 
-getCode :: (MonadDOM m) => XPathException -> m Word
-getCode self
-  = liftDOM (round <$> ((self ^. js "code") >>= valToNumber))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathException.name Mozilla XPathException.name documentation> 
-getName ::
-        (MonadDOM m, FromJSString result) => XPathException -> m result
-getName self = liftDOM ((self ^. js "name") >>= fromJSValUnchecked)
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathException.message Mozilla XPathException.message documentation> 
-getMessage ::
-           (MonadDOM m, FromJSString result) => XPathException -> m result
-getMessage self
-  = liftDOM ((self ^. js "message") >>= fromJSValUnchecked)
diff --git a/src/JSDOM/Generated/XPathExpression.hs b/src/JSDOM/Generated/XPathExpression.hs
--- a/src/JSDOM/Generated/XPathExpression.hs
+++ b/src/JSDOM/Generated/XPathExpression.hs
@@ -1,43 +1,24 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.XPathExpression
        (evaluate, evaluate_, XPathExpression(..), gTypeXPathExpression)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathExpression.evaluate Mozilla XPathExpression.evaluate documentation> 
-evaluate ::
-         (MonadDOM m, IsNode contextNode) =>
-           XPathExpression ->
-             Maybe contextNode ->
-               Maybe Word -> Maybe XPathResult -> m XPathResult
-evaluate self contextNode type' inResult
-  = liftDOM
-      ((self ^. jsf "evaluate"
-          [toJSVal contextNode, toJSVal type', toJSVal inResult])
-         >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "evaluate" [toJSVal contextNode, P.maybe (P.return jsUndefined) toJSVal type', toJSVal result']) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathExpression.evaluate Mozilla XPathExpression.evaluate documentation> 
-evaluate_ ::
-          (MonadDOM m, IsNode contextNode) =>
-            XPathExpression ->
-              Maybe contextNode -> Maybe Word -> Maybe XPathResult -> m ()
-evaluate_ self contextNode type' inResult
-  = liftDOM
-      (void
-         (self ^. jsf "evaluate"
-            [toJSVal contextNode, toJSVal type', toJSVal 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 (self ^. jsf "evaluate" [toJSVal contextNode, P.maybe (P.return jsUndefined) toJSVal type', toJSVal result']))
diff --git a/src/JSDOM/Generated/XPathNSResolver.hs b/src/JSDOM/Generated/XPathNSResolver.hs
--- a/src/JSDOM/Generated/XPathNSResolver.hs
+++ b/src/JSDOM/Generated/XPathNSResolver.hs
@@ -1,59 +1,30 @@
-{-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
-{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.XPathNSResolver
-       (lookupNamespaceURI, lookupNamespaceURI_, lookupNamespaceURIUnsafe,
-        lookupNamespaceURIUnchecked, XPathNSResolver(..),
-        gTypeXPathNSResolver)
+       (newXPathNSResolver, newXPathNSResolverSync, newXPathNSResolverAsync, XPathNSResolver)
        where
-import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
-import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
-lookupNamespaceURI ::
-                   (MonadDOM m, ToJSString prefix, FromJSString result) =>
-                     XPathNSResolver -> Maybe prefix -> m (Maybe result)
-lookupNamespaceURI self prefix
-  = liftDOM
-      ((self ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>=
-         fromMaybeJSString)
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
-lookupNamespaceURI_ ::
-                    (MonadDOM m, ToJSString prefix) =>
-                      XPathNSResolver -> Maybe prefix -> m ()
-lookupNamespaceURI_ self prefix
-  = liftDOM
-      (void (self ^. jsf "lookupNamespaceURI" [toJSVal prefix]))
+newXPathNSResolver :: (MonadDOM m) => (Maybe JSString -> JSM ()) -> m XPathNSResolver
+newXPathNSResolver callback = liftDOM (XPathNSResolver . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (prefix : _) -> do
+          prefix' <- fromJSValUnchecked prefix
+          callback prefix'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
-lookupNamespaceURIUnsafe ::
-                         (MonadDOM m, ToJSString prefix, HasCallStack,
-                          FromJSString result) =>
-                           XPathNSResolver -> Maybe prefix -> m result
-lookupNamespaceURIUnsafe self prefix
-  = liftDOM
-      (((self ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>=
-          fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") return)
+newXPathNSResolverSync :: (MonadDOM m) => (Maybe JSString -> JSM ()) -> m XPathNSResolver
+newXPathNSResolverSync callback = liftDOM (XPathNSResolver . Callback <$> function (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (prefix : _) -> do
+          prefix' <- fromJSValUnchecked prefix
+          callback prefix'))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
-lookupNamespaceURIUnchecked ::
-                            (MonadDOM m, ToJSString prefix, FromJSString result) =>
-                              XPathNSResolver -> Maybe prefix -> m result
-lookupNamespaceURIUnchecked self prefix
-  = liftDOM
-      ((self ^. jsf "lookupNamespaceURI" [toJSVal prefix]) >>=
-         fromJSValUnchecked)
+newXPathNSResolverAsync :: (MonadDOM m) => (Maybe JSString -> JSM ()) -> m XPathNSResolver
+newXPathNSResolverAsync callback = liftDOM (XPathNSResolver . Callback <$> asyncFunction (\ _ _ args -> case args ++ P.repeat jsUndefined of
+        (prefix : _) -> do
+          prefix' <- fromJSValUnchecked prefix
+          callback prefix'))
diff --git a/src/JSDOM/Generated/XPathResult.hs b/src/JSDOM/Generated/XPathResult.hs
--- a/src/JSDOM/Generated/XPathResult.hs
+++ b/src/JSDOM/Generated/XPathResult.hs
@@ -1,97 +1,104 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.XPathResult
-       (iterateNext, iterateNext_, 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,
-        getResultType, getNumberValue, getStringValue, getBooleanValue,
-        getSingleNodeValue, getInvalidIteratorState, getSnapshotLength,
-        XPathResult(..), gTypeXPathResult)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.iterateNext Mozilla XPathResult.iterateNext documentation> 
-iterateNext :: (MonadDOM m) => XPathResult -> m Node
-iterateNext self
-  = liftDOM ((self ^. jsf "iterateNext" ()) >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/iterateNext MDN XPathResult.iterateNext documentation>
+iterateNext :: (MonadDOM m) => XPathResult -> m (Maybe Node)
+iterateNext self = liftDOM (((self ^. jsf "iterateNext" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.iterateNext Mozilla XPathResult.iterateNext documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/iterateNext MDN XPathResult.iterateNext documentation>
 iterateNext_ :: (MonadDOM m) => XPathResult -> m ()
 iterateNext_ self = liftDOM (void (self ^. jsf "iterateNext" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.snapshotItem Mozilla XPathResult.snapshotItem documentation> 
-snapshotItem :: (MonadDOM m) => XPathResult -> Maybe Word -> m Node
-snapshotItem self index
-  = liftDOM
-      ((self ^. jsf "snapshotItem" [toJSVal index]) >>=
-         fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/iterateNext MDN XPathResult.iterateNext documentation>
+iterateNextUnsafe :: (MonadDOM m, HasCallStack) => XPathResult -> m Node
+iterateNextUnsafe self = liftDOM ((((self ^. jsf "iterateNext" ()) >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.snapshotItem Mozilla XPathResult.snapshotItem documentation> 
-snapshotItem_ :: (MonadDOM m) => XPathResult -> Maybe Word -> m ()
-snapshotItem_ self index
-  = liftDOM (void (self ^. jsf "snapshotItem" [toJSVal 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/iterateNext MDN XPathResult.iterateNext documentation>
+iterateNextUnchecked :: (MonadDOM m) => XPathResult -> m Node
+iterateNextUnchecked self = liftDOM (((self ^. jsf "iterateNext" ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.resultType Mozilla XPathResult.resultType documentation> 
+-- | <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 (((self ^. jsf "snapshotItem" [toJSVal index]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/snapshotItem MDN XPathResult.snapshotItem documentation>
+snapshotItem_ :: (MonadDOM m) => XPathResult -> Word -> m ()
+snapshotItem_ self index = liftDOM (void (self ^. jsf "snapshotItem" [toJSVal index]))
+
+-- | <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 ((((self ^. jsf "snapshotItem" [toJSVal 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 (((self ^. jsf "snapshotItem" [toJSVal index]) >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/resultType MDN XPathResult.resultType documentation>
 getResultType :: (MonadDOM m) => XPathResult -> m Word
-getResultType self
-  = liftDOM (round <$> ((self ^. js "resultType") >>= valToNumber))
+getResultType self = liftDOM ((P.round <$> ((self ^. js "resultType") >>= valToNumber)))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.numberValue Mozilla XPathResult.numberValue documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/numberValue MDN XPathResult.numberValue documentation>
 getNumberValue :: (MonadDOM m) => XPathResult -> m Double
-getNumberValue self
-  = liftDOM ((self ^. js "numberValue") >>= valToNumber)
+getNumberValue self = liftDOM (((self ^. js "numberValue") >>= valToNumber))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.stringValue Mozilla XPathResult.stringValue documentation> 
-getStringValue ::
-               (MonadDOM m, FromJSString result) => XPathResult -> m result
-getStringValue self
-  = liftDOM ((self ^. js "stringValue") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/stringValue MDN XPathResult.stringValue documentation>
+getStringValue :: (MonadDOM m, FromJSString result) => XPathResult -> m result
+getStringValue self = liftDOM (((self ^. js "stringValue") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.booleanValue Mozilla XPathResult.booleanValue documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/booleanValue MDN XPathResult.booleanValue documentation>
 getBooleanValue :: (MonadDOM m) => XPathResult -> m Bool
-getBooleanValue self
-  = liftDOM ((self ^. js "booleanValue") >>= valToBool)
+getBooleanValue self = liftDOM (((self ^. js "booleanValue") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.singleNodeValue Mozilla XPathResult.singleNodeValue documentation> 
-getSingleNodeValue :: (MonadDOM m) => XPathResult -> m Node
-getSingleNodeValue self
-  = liftDOM ((self ^. js "singleNodeValue") >>= fromJSValUnchecked)
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/singleNodeValue MDN XPathResult.singleNodeValue documentation>
+getSingleNodeValue :: (MonadDOM m) => XPathResult -> m (Maybe Node)
+getSingleNodeValue self = liftDOM (((self ^. js "singleNodeValue") >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.invalidIteratorState Mozilla XPathResult.invalidIteratorState documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/singleNodeValue MDN XPathResult.singleNodeValue documentation>
+getSingleNodeValueUnsafe :: (MonadDOM m, HasCallStack) => XPathResult -> m Node
+getSingleNodeValueUnsafe self = liftDOM ((((self ^. js "singleNodeValue") >>= fromJSValUnchecked) >>= P.maybe (P.error "Nothing to return") P.return))
+
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/singleNodeValue MDN XPathResult.singleNodeValue documentation>
+getSingleNodeValueUnchecked :: (MonadDOM m) => XPathResult -> m Node
+getSingleNodeValueUnchecked self = liftDOM (((self ^. js "singleNodeValue") >>= fromJSValUnchecked))
+
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/invalidIteratorState MDN XPathResult.invalidIteratorState documentation>
 getInvalidIteratorState :: (MonadDOM m) => XPathResult -> m Bool
-getInvalidIteratorState self
-  = liftDOM ((self ^. js "invalidIteratorState") >>= valToBool)
+getInvalidIteratorState self = liftDOM (((self ^. js "invalidIteratorState") >>= valToBool))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.snapshotLength Mozilla XPathResult.snapshotLength documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/XPathResult/snapshotLength MDN XPathResult.snapshotLength documentation>
 getSnapshotLength :: (MonadDOM m) => XPathResult -> m Word
-getSnapshotLength self
-  = liftDOM
-      (round <$> ((self ^. js "snapshotLength") >>= valToNumber))
+getSnapshotLength self = liftDOM ((P.round <$> ((self ^. js "snapshotLength") >>= valToNumber)))
+
+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/JSDOM/Generated/XSLTProcessor.hs b/src/JSDOM/Generated/XSLTProcessor.hs
--- a/src/JSDOM/Generated/XSLTProcessor.hs
+++ b/src/JSDOM/Generated/XSLTProcessor.hs
@@ -1,150 +1,64 @@
 {-# LANGUAGE PatternSynonyms #-}
--- For HasCallStack compatibility
 {-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- | Generated by dom-gen from dom (webref). Do not edit.
 module JSDOM.Generated.XSLTProcessor
-       (newXSLTProcessor, importStylesheet, transformToFragment,
-        transformToFragment_, transformToDocument, transformToDocument_,
-        setParameter, getParameter, getParameter_, getParameterUnsafe,
-        getParameterUnchecked, removeParameter, clearParameters, reset,
-        XSLTProcessor(..), gTypeXSLTProcessor)
+       (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, realToFrac, fmap, Show, Read, Eq, Ord, Maybe(..))
-import qualified Prelude (error)
-import Data.Typeable (Typeable)
-import Data.Traversable (mapM)
-import Language.Javascript.JSaddle (JSM(..), JSVal(..), JSString, strictEqual, toJSVal, valToStr, valToNumber, valToBool, js, jss, jsf, jsg, function, asyncFunction, new, array, jsUndefined, (!), (!!))
-import Data.Int (Int64)
-import Data.Word (Word, Word64)
-import JSDOM.Types
-import Control.Applicative ((<$>))
+import Prelude ((.), (==), (>>=), (<$>), (++), Bool(..), Maybe(..), IO, Int, Word, Double, Float)
+import qualified Prelude as P
 import Control.Monad (void)
 import Control.Lens.Operators ((^.))
+import Language.Javascript.JSaddle (JSM, JSVal, JSString, toJSVal, valToBool, valToNumber, js, jss, jsf, jsg, new, function, asyncFunction, jsUndefined, jsNull)
+import JSDOM.Types
+import qualified JSDOM.Types as Types
 import JSDOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
-import JSDOM.Enums
+import JSDOM.Generated.Enums
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor Mozilla XSLTProcessor documentation> 
+-- | <https://developer.mozilla.org/docs/Web/API/XSLTProcessor/XSLTProcessor MDN XSLTProcessor. documentation>
 newXSLTProcessor :: (MonadDOM m) => m XSLTProcessor
-newXSLTProcessor
-  = liftDOM (XSLTProcessor <$> new (jsg "XSLTProcessor") ())
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.importStylesheet Mozilla XSLTProcessor.importStylesheet documentation> 
-importStylesheet ::
-                 (MonadDOM m, IsNode stylesheet) =>
-                   XSLTProcessor -> Maybe stylesheet -> m ()
-importStylesheet self stylesheet
-  = liftDOM
-      (void (self ^. jsf "importStylesheet" [toJSVal stylesheet]))
-
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToFragment Mozilla XSLTProcessor.transformToFragment documentation> 
-transformToFragment ::
-                    (MonadDOM m, IsNode source, IsDocument docVal) =>
-                      XSLTProcessor -> Maybe source -> Maybe docVal -> m DocumentFragment
-transformToFragment self source docVal
-  = liftDOM
-      ((self ^. jsf "transformToFragment"
-          [toJSVal source, toJSVal docVal])
-         >>= fromJSValUnchecked)
+newXSLTProcessor = liftDOM (((new (jsg "XSLTProcessor") ()) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToFragment Mozilla XSLTProcessor.transformToFragment documentation> 
-transformToFragment_ ::
-                     (MonadDOM m, IsNode source, IsDocument docVal) =>
-                       XSLTProcessor -> Maybe source -> Maybe docVal -> m ()
-transformToFragment_ self source docVal
-  = liftDOM
-      (void
-         (self ^. jsf "transformToFragment"
-            [toJSVal source, toJSVal docVal]))
+-- | <https://developer.mozilla.org/docs/Web/API/XSLTProcessor/clearParameters MDN XSLTProcessor.clearParameters documentation>
+clearParameters :: (MonadDOM m) => XSLTProcessor -> m ()
+clearParameters self = liftDOM (void (self ^. jsf "clearParameters" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToDocument Mozilla XSLTProcessor.transformToDocument documentation> 
-transformToDocument ::
-                    (MonadDOM m, IsNode source) =>
-                      XSLTProcessor -> Maybe source -> m Document
-transformToDocument self source
-  = liftDOM
-      ((self ^. jsf "transformToDocument" [toJSVal source]) >>=
-         fromJSValUnchecked)
+-- | <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 (self ^. jsf "getParameter" [toJSVal namespaceURI, toJSVal localName])
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToDocument Mozilla XSLTProcessor.transformToDocument documentation> 
-transformToDocument_ ::
-                     (MonadDOM m, IsNode source) =>
-                       XSLTProcessor -> Maybe source -> m ()
-transformToDocument_ self source
-  = liftDOM
-      (void (self ^. jsf "transformToDocument" [toJSVal source]))
+-- | <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 (self ^. jsf "getParameter" [toJSVal namespaceURI, toJSVal localName]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.setParameter Mozilla XSLTProcessor.setParameter documentation> 
-setParameter ::
-             (MonadDOM m, ToJSString namespaceURI, ToJSString localName,
-              ToJSString value) =>
-               XSLTProcessor ->
-                 Maybe namespaceURI -> Maybe localName -> Maybe value -> m ()
-setParameter self namespaceURI localName value
-  = liftDOM
-      (void
-         (self ^. jsf "setParameter"
-            [toJSVal namespaceURI, toJSVal localName, toJSVal value]))
+-- | <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 (self ^. jsf "importStylesheet" [toJSVal style]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.getParameter Mozilla XSLTProcessor.getParameter documentation> 
-getParameter ::
-             (MonadDOM m, ToJSString namespaceURI, ToJSString localName,
-              FromJSString result) =>
-               XSLTProcessor ->
-                 Maybe namespaceURI -> Maybe localName -> m (Maybe result)
-getParameter self namespaceURI localName
-  = liftDOM
-      ((self ^. jsf "getParameter"
-          [toJSVal namespaceURI, toJSVal localName])
-         >>= fromMaybeJSString)
+-- | <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 (self ^. jsf "removeParameter" [toJSVal namespaceURI, toJSVal localName]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.getParameter Mozilla XSLTProcessor.getParameter documentation> 
-getParameter_ ::
-              (MonadDOM m, ToJSString namespaceURI, ToJSString localName) =>
-                XSLTProcessor -> Maybe namespaceURI -> Maybe localName -> m ()
-getParameter_ self namespaceURI localName
-  = liftDOM
-      (void
-         (self ^. jsf "getParameter"
-            [toJSVal namespaceURI, toJSVal localName]))
+-- | <https://developer.mozilla.org/docs/Web/API/XSLTProcessor/reset MDN XSLTProcessor.reset documentation>
+reset :: (MonadDOM m) => XSLTProcessor -> m ()
+reset self = liftDOM (void (self ^. jsf "reset" ()))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.getParameter Mozilla XSLTProcessor.getParameter documentation> 
-getParameterUnsafe ::
-                   (MonadDOM m, ToJSString namespaceURI, ToJSString localName,
-                    HasCallStack, FromJSString result) =>
-                     XSLTProcessor -> Maybe namespaceURI -> Maybe localName -> m result
-getParameterUnsafe self namespaceURI localName
-  = liftDOM
-      (((self ^. jsf "getParameter"
-           [toJSVal namespaceURI, toJSVal localName])
-          >>= fromMaybeJSString)
-         >>= maybe (Prelude.error "Nothing to return") return)
+-- | <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 (self ^. jsf "setParameter" [toJSVal namespaceURI, toJSVal localName, toJSVal value]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.getParameter Mozilla XSLTProcessor.getParameter documentation> 
-getParameterUnchecked ::
-                      (MonadDOM m, ToJSString namespaceURI, ToJSString localName,
-                       FromJSString result) =>
-                        XSLTProcessor -> Maybe namespaceURI -> Maybe localName -> m result
-getParameterUnchecked self namespaceURI localName
-  = liftDOM
-      ((self ^. jsf "getParameter"
-          [toJSVal namespaceURI, toJSVal localName])
-         >>= fromJSValUnchecked)
+-- | <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 (((self ^. jsf "transformToDocument" [toJSVal source]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.removeParameter Mozilla XSLTProcessor.removeParameter documentation> 
-removeParameter ::
-                (MonadDOM m, ToJSString namespaceURI, ToJSString localName) =>
-                  XSLTProcessor -> Maybe namespaceURI -> Maybe localName -> m ()
-removeParameter self namespaceURI localName
-  = liftDOM
-      (void
-         (self ^. jsf "removeParameter"
-            [toJSVal namespaceURI, toJSVal localName]))
+-- | <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 (self ^. jsf "transformToDocument" [toJSVal source]))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.clearParameters Mozilla XSLTProcessor.clearParameters documentation> 
-clearParameters :: (MonadDOM m) => XSLTProcessor -> m ()
-clearParameters self
-  = liftDOM (void (self ^. jsf "clearParameters" ()))
+-- | <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 (((self ^. jsf "transformToFragment" [toJSVal source, toJSVal output]) >>= fromJSValUnchecked))
 
--- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.reset Mozilla XSLTProcessor.reset documentation> 
-reset :: (MonadDOM m) => XSLTProcessor -> m ()
-reset self = liftDOM (void (self ^. jsf "reset" ()))
+-- | <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 (self ^. jsf "transformToFragment" [toJSVal source, toJSVal output]))
diff --git a/src/JSDOM/Types.hs b/src/JSDOM/Types.hs
# file too large to diff: src/JSDOM/Types.hs
