happy-dom 15.0.0 → 15.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of happy-dom might be problematic. Click here for more details.
- package/cjs/ClassMethodBinder.cjs +8 -6
- package/cjs/ClassMethodBinder.cjs.map +1 -1
- package/cjs/ClassMethodBinder.d.ts +4 -2
- package/cjs/ClassMethodBinder.d.ts.map +1 -1
- package/cjs/PropertySymbol.cjs +20 -9
- package/cjs/PropertySymbol.cjs.map +1 -1
- package/cjs/PropertySymbol.d.ts +15 -4
- package/cjs/PropertySymbol.d.ts.map +1 -1
- package/cjs/async-task-manager/AsyncTaskManager.cjs +64 -35
- package/cjs/async-task-manager/AsyncTaskManager.cjs.map +1 -1
- package/cjs/async-task-manager/AsyncTaskManager.d.ts +11 -1
- package/cjs/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
- package/cjs/browser/Browser.cjs +30 -0
- package/cjs/browser/Browser.cjs.map +1 -1
- package/cjs/browser/Browser.d.ts +3 -0
- package/cjs/browser/Browser.d.ts.map +1 -1
- package/cjs/browser/BrowserFrame.cjs +3 -7
- package/cjs/browser/BrowserFrame.cjs.map +1 -1
- package/cjs/browser/BrowserFrame.d.ts +1 -4
- package/cjs/browser/BrowserFrame.d.ts.map +1 -1
- package/cjs/browser/DefaultBrowserSettings.cjs +2 -1
- package/cjs/browser/DefaultBrowserSettings.cjs.map +1 -1
- package/cjs/browser/DefaultBrowserSettings.d.ts.map +1 -1
- package/cjs/browser/detached-browser/DetachedBrowser.cjs +30 -0
- package/cjs/browser/detached-browser/DetachedBrowser.cjs.map +1 -1
- package/cjs/browser/detached-browser/DetachedBrowser.d.ts +3 -0
- package/cjs/browser/detached-browser/DetachedBrowser.d.ts.map +1 -1
- package/cjs/browser/detached-browser/DetachedBrowserFrame.cjs +3 -7
- package/cjs/browser/detached-browser/DetachedBrowserFrame.cjs.map +1 -1
- package/cjs/browser/detached-browser/DetachedBrowserFrame.d.ts +1 -4
- package/cjs/browser/detached-browser/DetachedBrowserFrame.d.ts.map +1 -1
- package/cjs/browser/types/IBrowser.cjs +24 -0
- package/cjs/browser/types/IBrowser.cjs.map +1 -1
- package/cjs/browser/types/IBrowser.d.ts +3 -0
- package/cjs/browser/types/IBrowser.d.ts.map +1 -1
- package/cjs/browser/types/IBrowserFrame.d.ts +0 -3
- package/cjs/browser/types/IBrowserFrame.d.ts.map +1 -1
- package/cjs/browser/types/IBrowserSettings.d.ts +1 -0
- package/cjs/browser/types/IBrowserSettings.d.ts.map +1 -1
- package/cjs/browser/utilities/BrowserExceptionObserver.cjs +100 -0
- package/cjs/browser/utilities/BrowserExceptionObserver.cjs.map +1 -0
- package/{lib/browser/utilities/BrowserFrameExceptionObserver.d.ts → cjs/browser/utilities/BrowserExceptionObserver.d.ts} +9 -7
- package/cjs/browser/utilities/BrowserExceptionObserver.d.ts.map +1 -0
- package/cjs/browser/utilities/BrowserFrameFactory.cjs +27 -35
- package/cjs/browser/utilities/BrowserFrameFactory.cjs.map +1 -1
- package/cjs/browser/utilities/BrowserFrameFactory.d.ts.map +1 -1
- package/cjs/browser/utilities/BrowserFrameNavigator.cjs +52 -29
- package/cjs/browser/utilities/BrowserFrameNavigator.cjs.map +1 -1
- package/cjs/browser/utilities/BrowserFrameNavigator.d.ts.map +1 -1
- package/cjs/clipboard/Clipboard.cjs +18 -15
- package/cjs/clipboard/Clipboard.cjs.map +1 -1
- package/cjs/clipboard/Clipboard.d.ts +2 -2
- package/cjs/clipboard/Clipboard.d.ts.map +1 -1
- package/cjs/css/declaration/AbstractCSSStyleDeclaration.cjs +27 -4
- package/cjs/css/declaration/AbstractCSSStyleDeclaration.cjs.map +1 -1
- package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.cjs +6 -5
- package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.cjs.map +1 -1
- package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.d.ts.map +1 -1
- package/cjs/css/declaration/measurement-converter/CSSMeasurementConverter.cjs +5 -5
- package/cjs/css/declaration/measurement-converter/CSSMeasurementConverter.cjs.map +1 -1
- package/cjs/css/declaration/measurement-converter/CSSMeasurementConverter.d.ts +2 -2
- package/cjs/css/declaration/measurement-converter/CSSMeasurementConverter.d.ts.map +1 -1
- package/cjs/custom-element/CustomElementRegistry.cjs +37 -17
- package/cjs/custom-element/CustomElementRegistry.cjs.map +1 -1
- package/cjs/custom-element/CustomElementRegistry.d.ts +2 -3
- package/cjs/custom-element/CustomElementRegistry.d.ts.map +1 -1
- package/cjs/dom-implementation/DOMImplementation.cjs +12 -7
- package/cjs/dom-implementation/DOMImplementation.cjs.map +1 -1
- package/cjs/dom-implementation/DOMImplementation.d.ts +7 -3
- package/cjs/dom-implementation/DOMImplementation.d.ts.map +1 -1
- package/cjs/dom-parser/DOMParser.cjs +6 -15
- package/cjs/dom-parser/DOMParser.cjs.map +1 -1
- package/cjs/dom-parser/DOMParser.d.ts +2 -6
- package/cjs/dom-parser/DOMParser.d.ts.map +1 -1
- package/cjs/event/Event.cjs +76 -18
- package/cjs/event/Event.cjs.map +1 -1
- package/cjs/event/Event.d.ts +49 -7
- package/cjs/event/Event.d.ts.map +1 -1
- package/cjs/event/EventTarget.cjs +153 -141
- package/cjs/event/EventTarget.cjs.map +1 -1
- package/cjs/event/EventTarget.d.ts +12 -8
- package/cjs/event/EventTarget.d.ts.map +1 -1
- package/cjs/event/MessagePort.cjs.map +1 -1
- package/cjs/event/MessagePort.d.ts +1 -2
- package/cjs/event/MessagePort.d.ts.map +1 -1
- package/cjs/event/{IEventListener.cjs → TEventListener.cjs} +1 -1
- package/cjs/event/TEventListener.cjs.map +1 -0
- package/cjs/event/TEventListener.d.ts +5 -0
- package/cjs/event/TEventListener.d.ts.map +1 -0
- package/cjs/event/TEventListenerFunction.cjs +3 -0
- package/cjs/event/TEventListenerFunction.cjs.map +1 -0
- package/cjs/event/TEventListenerFunction.d.ts +4 -0
- package/cjs/event/TEventListenerFunction.d.ts.map +1 -0
- package/cjs/event/{IMessagePort.cjs → TEventListenerObject.cjs} +1 -1
- package/cjs/event/TEventListenerObject.cjs.map +1 -0
- package/cjs/event/TEventListenerObject.d.ts +6 -0
- package/cjs/event/TEventListenerObject.d.ts.map +1 -0
- package/cjs/event/events/CustomEvent.cjs +38 -6
- package/cjs/event/events/CustomEvent.cjs.map +1 -1
- package/cjs/event/events/CustomEvent.d.ts +8 -1
- package/cjs/event/events/CustomEvent.d.ts.map +1 -1
- package/cjs/event/events/IErrorEventInit.d.ts.map +1 -1
- package/cjs/event/events/IMessageEventInit.d.ts +2 -2
- package/cjs/event/events/IMessageEventInit.d.ts.map +1 -1
- package/cjs/event/events/MessageEvent.cjs.map +1 -1
- package/cjs/event/events/MessageEvent.d.ts +2 -2
- package/cjs/event/events/MessageEvent.d.ts.map +1 -1
- package/cjs/fetch/AbortController.cjs +2 -11
- package/cjs/fetch/AbortController.cjs.map +1 -1
- package/cjs/fetch/AbortController.d.ts +3 -4
- package/cjs/fetch/AbortController.d.ts.map +1 -1
- package/cjs/fetch/AbortSignal.cjs +48 -4
- package/cjs/fetch/AbortSignal.cjs.map +1 -1
- package/cjs/fetch/AbortSignal.d.ts +19 -0
- package/cjs/fetch/AbortSignal.d.ts.map +1 -1
- package/cjs/fetch/Fetch.cjs +24 -14
- package/cjs/fetch/Fetch.cjs.map +1 -1
- package/cjs/fetch/Fetch.d.ts.map +1 -1
- package/cjs/fetch/Request.cjs +62 -45
- package/cjs/fetch/Request.cjs.map +1 -1
- package/cjs/fetch/Request.d.ts +3 -14
- package/cjs/fetch/Request.d.ts.map +1 -1
- package/cjs/fetch/ResourceFetch.cjs +2 -3
- package/cjs/fetch/ResourceFetch.cjs.map +1 -1
- package/cjs/fetch/ResourceFetch.d.ts.map +1 -1
- package/cjs/fetch/Response.cjs +63 -40
- package/cjs/fetch/Response.cjs.map +1 -1
- package/cjs/fetch/Response.d.ts +3 -10
- package/cjs/fetch/Response.d.ts.map +1 -1
- package/cjs/fetch/SyncFetch.cjs +12 -13
- package/cjs/fetch/SyncFetch.cjs.map +1 -1
- package/cjs/fetch/SyncFetch.d.ts.map +1 -1
- package/cjs/fetch/multipart/MultipartFormDataParser.cjs +12 -6
- package/cjs/fetch/multipart/MultipartFormDataParser.cjs.map +1 -1
- package/cjs/fetch/multipart/MultipartFormDataParser.d.ts +3 -1
- package/cjs/fetch/multipart/MultipartFormDataParser.d.ts.map +1 -1
- package/cjs/fetch/multipart/MultipartReader.cjs +5 -3
- package/cjs/fetch/multipart/MultipartReader.cjs.map +1 -1
- package/cjs/fetch/multipart/MultipartReader.d.ts +4 -1
- package/cjs/fetch/multipart/MultipartReader.d.ts.map +1 -1
- package/cjs/fetch/utilities/FetchBodyUtility.cjs +10 -5
- package/cjs/fetch/utilities/FetchBodyUtility.cjs.map +1 -1
- package/cjs/fetch/utilities/FetchBodyUtility.d.ts +5 -2
- package/cjs/fetch/utilities/FetchBodyUtility.d.ts.map +1 -1
- package/cjs/file/FileReader.cjs +11 -11
- package/cjs/file/FileReader.cjs.map +1 -1
- package/cjs/file/FileReader.d.ts +1 -4
- package/cjs/file/FileReader.d.ts.map +1 -1
- package/cjs/history/History.cjs +28 -14
- package/cjs/history/History.cjs.map +1 -1
- package/cjs/history/History.d.ts +2 -2
- package/cjs/history/History.d.ts.map +1 -1
- package/cjs/index.d.ts +2 -2
- package/cjs/location/Location.cjs +43 -22
- package/cjs/location/Location.cjs.map +1 -1
- package/cjs/location/Location.d.ts +4 -0
- package/cjs/location/Location.d.ts.map +1 -1
- package/cjs/match-media/MediaQueryItem.cjs +26 -26
- package/cjs/match-media/MediaQueryItem.cjs.map +1 -1
- package/cjs/match-media/MediaQueryItem.d.ts +3 -3
- package/cjs/match-media/MediaQueryItem.d.ts.map +1 -1
- package/cjs/match-media/MediaQueryList.cjs +7 -7
- package/cjs/match-media/MediaQueryList.cjs.map +1 -1
- package/cjs/match-media/MediaQueryList.d.ts +5 -5
- package/cjs/match-media/MediaQueryList.d.ts.map +1 -1
- package/cjs/match-media/MediaQueryParser.cjs +4 -4
- package/cjs/match-media/MediaQueryParser.cjs.map +1 -1
- package/cjs/match-media/MediaQueryParser.d.ts +2 -2
- package/cjs/match-media/MediaQueryParser.d.ts.map +1 -1
- package/cjs/mutation-observer/MutationObserver.cjs +17 -15
- package/cjs/mutation-observer/MutationObserver.cjs.map +1 -1
- package/cjs/mutation-observer/MutationObserver.d.ts +3 -0
- package/cjs/mutation-observer/MutationObserver.d.ts.map +1 -1
- package/cjs/navigator/Navigator.cjs +13 -10
- package/cjs/navigator/Navigator.cjs.map +1 -1
- package/cjs/navigator/Navigator.d.ts +2 -2
- package/cjs/navigator/Navigator.d.ts.map +1 -1
- package/cjs/nodes/NodeFactory.cjs +1 -1
- package/cjs/nodes/NodeFactory.cjs.map +1 -1
- package/cjs/nodes/document/Document.cjs +69 -51
- package/cjs/nodes/document/Document.cjs.map +1 -1
- package/cjs/nodes/document/Document.d.ts +9 -16
- package/cjs/nodes/document/Document.d.ts.map +1 -1
- package/cjs/nodes/document/DocumentReadyStateManager.cjs +12 -10
- package/cjs/nodes/document/DocumentReadyStateManager.cjs.map +1 -1
- package/cjs/nodes/document/DocumentReadyStateManager.d.ts.map +1 -1
- package/cjs/nodes/element/Element.cjs +33 -20
- package/cjs/nodes/element/Element.cjs.map +1 -1
- package/cjs/nodes/element/Element.d.ts +7 -3
- package/cjs/nodes/element/Element.d.ts.map +1 -1
- package/cjs/nodes/element/HTMLCollection.cjs +1 -4
- package/cjs/nodes/element/HTMLCollection.cjs.map +1 -1
- package/cjs/nodes/element/HTMLCollection.d.ts.map +1 -1
- package/cjs/nodes/element/NamedNodeMap.cjs +4 -0
- package/cjs/nodes/element/NamedNodeMap.cjs.map +1 -1
- package/cjs/nodes/element/NamedNodeMap.d.ts.map +1 -1
- package/cjs/nodes/element/NamedNodeMapProxyFactory.cjs +0 -9
- package/cjs/nodes/element/NamedNodeMapProxyFactory.cjs.map +1 -1
- package/cjs/nodes/element/NamedNodeMapProxyFactory.d.ts.map +1 -1
- package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs +5 -5
- package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs.map +1 -1
- package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
- package/cjs/nodes/html-area-element/HTMLAreaElement.cjs +7 -8
- package/cjs/nodes/html-area-element/HTMLAreaElement.cjs.map +1 -1
- package/cjs/nodes/html-area-element/HTMLAreaElement.d.ts.map +1 -1
- package/cjs/nodes/html-audio-element/Audio.cjs +28 -0
- package/cjs/nodes/html-audio-element/Audio.cjs.map +1 -1
- package/cjs/nodes/html-audio-element/Audio.d.ts +4 -0
- package/cjs/nodes/html-audio-element/Audio.d.ts.map +1 -1
- package/cjs/nodes/html-button-element/HTMLButtonElement.cjs +63 -35
- package/cjs/nodes/html-button-element/HTMLButtonElement.cjs.map +1 -1
- package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts +27 -3
- package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
- package/cjs/nodes/html-canvas-element/HTMLCanvasElement.cjs +2 -4
- package/cjs/nodes/html-canvas-element/HTMLCanvasElement.cjs.map +1 -1
- package/cjs/nodes/html-canvas-element/HTMLCanvasElement.d.ts.map +1 -1
- package/cjs/nodes/html-document/HTMLDocument.cjs +2 -6
- package/cjs/nodes/html-document/HTMLDocument.cjs.map +1 -1
- package/cjs/nodes/html-document/HTMLDocument.d.ts +1 -10
- package/cjs/nodes/html-document/HTMLDocument.d.ts.map +1 -1
- package/cjs/nodes/html-element/HTMLElement.cjs +130 -89
- package/cjs/nodes/html-element/HTMLElement.cjs.map +1 -1
- package/cjs/nodes/html-element/HTMLElement.d.ts +14 -2
- package/cjs/nodes/html-element/HTMLElement.d.ts.map +1 -1
- package/cjs/nodes/html-form-element/HTMLFormElement.cjs +6 -7
- package/cjs/nodes/html-form-element/HTMLFormElement.cjs.map +1 -1
- package/cjs/nodes/html-form-element/HTMLFormElement.d.ts +1 -3
- package/cjs/nodes/html-form-element/HTMLFormElement.d.ts.map +1 -1
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs +30 -38
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs.map +1 -1
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts +0 -6
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
- package/cjs/nodes/html-image-element/Image.cjs +28 -0
- package/cjs/nodes/html-image-element/Image.cjs.map +1 -1
- package/cjs/nodes/html-image-element/Image.d.ts +4 -0
- package/cjs/nodes/html-image-element/Image.d.ts.map +1 -1
- package/cjs/nodes/html-input-element/HTMLInputElement.cjs +88 -56
- package/cjs/nodes/html-input-element/HTMLInputElement.cjs.map +1 -1
- package/cjs/nodes/html-input-element/HTMLInputElement.d.ts +25 -0
- package/cjs/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
- package/cjs/nodes/html-label-element/HTMLLabelElement.cjs +4 -3
- package/cjs/nodes/html-label-element/HTMLLabelElement.cjs.map +1 -1
- package/cjs/nodes/html-label-element/HTMLLabelElement.d.ts +8 -1
- package/cjs/nodes/html-label-element/HTMLLabelElement.d.ts.map +1 -1
- package/cjs/nodes/html-link-element/HTMLLinkElement.cjs +10 -16
- package/cjs/nodes/html-link-element/HTMLLinkElement.cjs.map +1 -1
- package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts +0 -6
- package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
- package/cjs/nodes/html-media-element/HTMLMediaElement.cjs +12 -16
- package/cjs/nodes/html-media-element/HTMLMediaElement.cjs.map +1 -1
- package/cjs/nodes/html-media-element/HTMLMediaElement.d.ts.map +1 -1
- package/cjs/nodes/html-media-element/MediaStream.cjs +3 -0
- package/cjs/nodes/html-media-element/MediaStream.cjs.map +1 -1
- package/cjs/nodes/html-media-element/MediaStream.d.ts.map +1 -1
- package/cjs/nodes/html-media-element/MediaStreamTrack.cjs +3 -0
- package/cjs/nodes/html-media-element/MediaStreamTrack.cjs.map +1 -1
- package/cjs/nodes/html-media-element/MediaStreamTrack.d.ts.map +1 -1
- package/cjs/nodes/html-media-element/TextTrack.cjs +3 -0
- package/cjs/nodes/html-media-element/TextTrack.cjs.map +1 -1
- package/cjs/nodes/html-media-element/TextTrack.d.ts.map +1 -1
- package/cjs/nodes/html-media-element/TextTrackCue.cjs +3 -0
- package/cjs/nodes/html-media-element/TextTrackCue.cjs.map +1 -1
- package/cjs/nodes/html-media-element/TextTrackCue.d.ts.map +1 -1
- package/cjs/nodes/html-media-element/VTTCue.cjs +7 -8
- package/cjs/nodes/html-media-element/VTTCue.cjs.map +1 -1
- package/cjs/nodes/html-media-element/VTTCue.d.ts +1 -4
- package/cjs/nodes/html-media-element/VTTCue.d.ts.map +1 -1
- package/cjs/nodes/html-meter-element/HTMLMeterElement.cjs +30 -6
- package/cjs/nodes/html-meter-element/HTMLMeterElement.cjs.map +1 -1
- package/cjs/nodes/html-meter-element/HTMLMeterElement.d.ts.map +1 -1
- package/cjs/nodes/html-progress-element/HTMLProgressElement.cjs +26 -2
- package/cjs/nodes/html-progress-element/HTMLProgressElement.cjs.map +1 -1
- package/cjs/nodes/html-progress-element/HTMLProgressElement.d.ts.map +1 -1
- package/cjs/nodes/html-script-element/HTMLScriptElement.cjs +21 -27
- package/cjs/nodes/html-script-element/HTMLScriptElement.cjs.map +1 -1
- package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts +0 -6
- package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
- package/cjs/nodes/html-select-element/HTMLSelectElement.cjs +5 -5
- package/cjs/nodes/html-select-element/HTMLSelectElement.cjs.map +1 -1
- package/cjs/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
- package/cjs/nodes/html-table-element/HTMLTableElement.cjs +8 -9
- package/cjs/nodes/html-table-element/HTMLTableElement.cjs.map +1 -1
- package/cjs/nodes/html-table-element/HTMLTableElement.d.ts.map +1 -1
- package/cjs/nodes/html-table-row-element/HTMLTableRowElement.cjs +5 -6
- package/cjs/nodes/html-table-row-element/HTMLTableRowElement.cjs.map +1 -1
- package/cjs/nodes/html-table-row-element/HTMLTableRowElement.d.ts.map +1 -1
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.cjs +1 -2
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.cjs.map +1 -1
- package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
- package/cjs/nodes/html-track-element/HTMLTrackElement.cjs +1 -2
- package/cjs/nodes/html-track-element/HTMLTrackElement.cjs.map +1 -1
- package/cjs/nodes/node/Node.cjs +23 -22
- package/cjs/nodes/node/Node.cjs.map +1 -1
- package/cjs/nodes/node/Node.d.ts +1 -2
- package/cjs/nodes/node/Node.d.ts.map +1 -1
- package/cjs/nodes/node/NodeList.cjs +4 -6
- package/cjs/nodes/node/NodeList.cjs.map +1 -1
- package/cjs/nodes/node/NodeList.d.ts.map +1 -1
- package/cjs/nodes/text/Text.cjs +1 -2
- package/cjs/nodes/text/Text.cjs.map +1 -1
- package/cjs/nodes/text/Text.d.ts.map +1 -1
- package/cjs/permissions/Permissions.cjs +13 -2
- package/cjs/permissions/Permissions.cjs.map +1 -1
- package/cjs/permissions/Permissions.d.ts +7 -0
- package/cjs/permissions/Permissions.d.ts.map +1 -1
- package/cjs/query-selector/QuerySelector.cjs +12 -10
- package/cjs/query-selector/QuerySelector.cjs.map +1 -1
- package/cjs/query-selector/QuerySelector.d.ts.map +1 -1
- package/cjs/range/Range.cjs +26 -23
- package/cjs/range/Range.cjs.map +1 -1
- package/cjs/range/Range.d.ts +2 -2
- package/cjs/range/Range.d.ts.map +1 -1
- package/cjs/selection/Selection.cjs +16 -17
- package/cjs/selection/Selection.cjs.map +1 -1
- package/cjs/selection/Selection.d.ts.map +1 -1
- package/cjs/window/BrowserWindow.cjs +136 -266
- package/cjs/window/BrowserWindow.cjs.map +1 -1
- package/cjs/window/BrowserWindow.d.ts +115 -117
- package/cjs/window/BrowserWindow.d.ts.map +1 -1
- package/cjs/window/VMGlobalPropertyScript.cjs +0 -1
- package/cjs/window/VMGlobalPropertyScript.cjs.map +1 -1
- package/cjs/window/VMGlobalPropertyScript.d.ts.map +1 -1
- package/cjs/window/WindowBrowserContext.cjs +117 -0
- package/cjs/window/WindowBrowserContext.cjs.map +1 -0
- package/cjs/window/WindowBrowserContext.d.ts +75 -0
- package/cjs/window/WindowBrowserContext.d.ts.map +1 -0
- package/cjs/window/WindowClassExtender.cjs +332 -0
- package/cjs/window/WindowClassExtender.cjs.map +1 -0
- package/cjs/window/WindowClassExtender.d.ts +15 -0
- package/cjs/window/WindowClassExtender.d.ts.map +1 -0
- package/cjs/window/WindowPageOpenUtility.cjs +11 -1
- package/cjs/window/WindowPageOpenUtility.cjs.map +1 -1
- package/cjs/window/WindowPageOpenUtility.d.ts.map +1 -1
- package/cjs/xml-http-request/XMLHttpRequest.cjs +33 -33
- package/cjs/xml-http-request/XMLHttpRequest.cjs.map +1 -1
- package/cjs/xml-http-request/XMLHttpRequest.d.ts +2 -11
- package/cjs/xml-http-request/XMLHttpRequest.d.ts.map +1 -1
- package/lib/ClassMethodBinder.d.ts +4 -2
- package/lib/ClassMethodBinder.d.ts.map +1 -1
- package/lib/ClassMethodBinder.js +8 -6
- package/lib/ClassMethodBinder.js.map +1 -1
- package/lib/PropertySymbol.d.ts +15 -4
- package/lib/PropertySymbol.d.ts.map +1 -1
- package/lib/PropertySymbol.js +15 -4
- package/lib/PropertySymbol.js.map +1 -1
- package/lib/async-task-manager/AsyncTaskManager.d.ts +11 -1
- package/lib/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
- package/lib/async-task-manager/AsyncTaskManager.js +64 -35
- package/lib/async-task-manager/AsyncTaskManager.js.map +1 -1
- package/lib/browser/Browser.d.ts +3 -0
- package/lib/browser/Browser.d.ts.map +1 -1
- package/lib/browser/Browser.js +7 -0
- package/lib/browser/Browser.js.map +1 -1
- package/lib/browser/BrowserFrame.d.ts +1 -4
- package/lib/browser/BrowserFrame.d.ts.map +1 -1
- package/lib/browser/BrowserFrame.js +3 -7
- package/lib/browser/BrowserFrame.js.map +1 -1
- package/lib/browser/DefaultBrowserSettings.d.ts.map +1 -1
- package/lib/browser/DefaultBrowserSettings.js +2 -1
- package/lib/browser/DefaultBrowserSettings.js.map +1 -1
- package/lib/browser/detached-browser/DetachedBrowser.d.ts +3 -0
- package/lib/browser/detached-browser/DetachedBrowser.d.ts.map +1 -1
- package/lib/browser/detached-browser/DetachedBrowser.js +7 -0
- package/lib/browser/detached-browser/DetachedBrowser.js.map +1 -1
- package/lib/browser/detached-browser/DetachedBrowserFrame.d.ts +1 -4
- package/lib/browser/detached-browser/DetachedBrowserFrame.d.ts.map +1 -1
- package/lib/browser/detached-browser/DetachedBrowserFrame.js +3 -7
- package/lib/browser/detached-browser/DetachedBrowserFrame.js.map +1 -1
- package/lib/browser/types/IBrowser.d.ts +3 -0
- package/lib/browser/types/IBrowser.d.ts.map +1 -1
- package/lib/browser/types/IBrowser.js +1 -1
- package/lib/browser/types/IBrowser.js.map +1 -1
- package/lib/browser/types/IBrowserFrame.d.ts +0 -3
- package/lib/browser/types/IBrowserFrame.d.ts.map +1 -1
- package/lib/browser/types/IBrowserSettings.d.ts +1 -0
- package/lib/browser/types/IBrowserSettings.d.ts.map +1 -1
- package/{cjs/browser/utilities/BrowserFrameExceptionObserver.d.ts → lib/browser/utilities/BrowserExceptionObserver.d.ts} +9 -7
- package/lib/browser/utilities/BrowserExceptionObserver.d.ts.map +1 -0
- package/lib/browser/utilities/BrowserExceptionObserver.js +97 -0
- package/lib/browser/utilities/BrowserExceptionObserver.js.map +1 -0
- package/lib/browser/utilities/BrowserFrameFactory.d.ts.map +1 -1
- package/lib/browser/utilities/BrowserFrameFactory.js +27 -35
- package/lib/browser/utilities/BrowserFrameFactory.js.map +1 -1
- package/lib/browser/utilities/BrowserFrameNavigator.d.ts.map +1 -1
- package/lib/browser/utilities/BrowserFrameNavigator.js +52 -29
- package/lib/browser/utilities/BrowserFrameNavigator.js.map +1 -1
- package/lib/clipboard/Clipboard.d.ts +2 -2
- package/lib/clipboard/Clipboard.d.ts.map +1 -1
- package/lib/clipboard/Clipboard.js +18 -15
- package/lib/clipboard/Clipboard.js.map +1 -1
- package/lib/css/declaration/AbstractCSSStyleDeclaration.js +4 -4
- package/lib/css/declaration/AbstractCSSStyleDeclaration.js.map +1 -1
- package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.d.ts.map +1 -1
- package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.js +6 -5
- package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.js.map +1 -1
- package/lib/css/declaration/measurement-converter/CSSMeasurementConverter.d.ts +2 -2
- package/lib/css/declaration/measurement-converter/CSSMeasurementConverter.d.ts.map +1 -1
- package/lib/css/declaration/measurement-converter/CSSMeasurementConverter.js +5 -5
- package/lib/css/declaration/measurement-converter/CSSMeasurementConverter.js.map +1 -1
- package/lib/custom-element/CustomElementRegistry.d.ts +2 -3
- package/lib/custom-element/CustomElementRegistry.d.ts.map +1 -1
- package/lib/custom-element/CustomElementRegistry.js +37 -17
- package/lib/custom-element/CustomElementRegistry.js.map +1 -1
- package/lib/dom-implementation/DOMImplementation.d.ts +7 -3
- package/lib/dom-implementation/DOMImplementation.d.ts.map +1 -1
- package/lib/dom-implementation/DOMImplementation.js +12 -7
- package/lib/dom-implementation/DOMImplementation.js.map +1 -1
- package/lib/dom-parser/DOMParser.d.ts +2 -6
- package/lib/dom-parser/DOMParser.d.ts.map +1 -1
- package/lib/dom-parser/DOMParser.js +6 -15
- package/lib/dom-parser/DOMParser.js.map +1 -1
- package/lib/event/Event.d.ts +49 -7
- package/lib/event/Event.d.ts.map +1 -1
- package/lib/event/Event.js +76 -18
- package/lib/event/Event.js.map +1 -1
- package/lib/event/EventTarget.d.ts +12 -8
- package/lib/event/EventTarget.d.ts.map +1 -1
- package/lib/event/EventTarget.js +153 -141
- package/lib/event/EventTarget.js.map +1 -1
- package/lib/event/MessagePort.d.ts +1 -2
- package/lib/event/MessagePort.d.ts.map +1 -1
- package/lib/event/MessagePort.js.map +1 -1
- package/lib/event/TEventListener.d.ts +5 -0
- package/lib/event/TEventListener.d.ts.map +1 -0
- package/lib/event/TEventListener.js +2 -0
- package/lib/event/TEventListener.js.map +1 -0
- package/lib/event/TEventListenerFunction.d.ts +4 -0
- package/lib/event/TEventListenerFunction.d.ts.map +1 -0
- package/lib/event/TEventListenerFunction.js +2 -0
- package/lib/event/TEventListenerFunction.js.map +1 -0
- package/lib/event/TEventListenerObject.d.ts +6 -0
- package/lib/event/TEventListenerObject.d.ts.map +1 -0
- package/lib/event/TEventListenerObject.js +2 -0
- package/lib/event/TEventListenerObject.js.map +1 -0
- package/lib/event/events/CustomEvent.d.ts +8 -1
- package/lib/event/events/CustomEvent.d.ts.map +1 -1
- package/lib/event/events/CustomEvent.js +15 -6
- package/lib/event/events/CustomEvent.js.map +1 -1
- package/lib/event/events/IErrorEventInit.d.ts.map +1 -1
- package/lib/event/events/IMessageEventInit.d.ts +2 -2
- package/lib/event/events/IMessageEventInit.d.ts.map +1 -1
- package/lib/event/events/MessageEvent.d.ts +2 -2
- package/lib/event/events/MessageEvent.d.ts.map +1 -1
- package/lib/event/events/MessageEvent.js.map +1 -1
- package/lib/fetch/AbortController.d.ts +3 -4
- package/lib/fetch/AbortController.d.ts.map +1 -1
- package/lib/fetch/AbortController.js +2 -8
- package/lib/fetch/AbortController.js.map +1 -1
- package/lib/fetch/AbortSignal.d.ts +19 -0
- package/lib/fetch/AbortSignal.d.ts.map +1 -1
- package/lib/fetch/AbortSignal.js +48 -4
- package/lib/fetch/AbortSignal.js.map +1 -1
- package/lib/fetch/Fetch.d.ts.map +1 -1
- package/lib/fetch/Fetch.js +24 -14
- package/lib/fetch/Fetch.js.map +1 -1
- package/lib/fetch/Request.d.ts +3 -14
- package/lib/fetch/Request.d.ts.map +1 -1
- package/lib/fetch/Request.js +62 -45
- package/lib/fetch/Request.js.map +1 -1
- package/lib/fetch/ResourceFetch.d.ts.map +1 -1
- package/lib/fetch/ResourceFetch.js +2 -3
- package/lib/fetch/ResourceFetch.js.map +1 -1
- package/lib/fetch/Response.d.ts +3 -10
- package/lib/fetch/Response.d.ts.map +1 -1
- package/lib/fetch/Response.js +63 -40
- package/lib/fetch/Response.js.map +1 -1
- package/lib/fetch/SyncFetch.d.ts.map +1 -1
- package/lib/fetch/SyncFetch.js +12 -13
- package/lib/fetch/SyncFetch.js.map +1 -1
- package/lib/fetch/multipart/MultipartFormDataParser.d.ts +3 -1
- package/lib/fetch/multipart/MultipartFormDataParser.d.ts.map +1 -1
- package/lib/fetch/multipart/MultipartFormDataParser.js +12 -6
- package/lib/fetch/multipart/MultipartFormDataParser.js.map +1 -1
- package/lib/fetch/multipart/MultipartReader.d.ts +4 -1
- package/lib/fetch/multipart/MultipartReader.d.ts.map +1 -1
- package/lib/fetch/multipart/MultipartReader.js +5 -3
- package/lib/fetch/multipart/MultipartReader.js.map +1 -1
- package/lib/fetch/utilities/FetchBodyUtility.d.ts +5 -2
- package/lib/fetch/utilities/FetchBodyUtility.d.ts.map +1 -1
- package/lib/fetch/utilities/FetchBodyUtility.js +10 -5
- package/lib/fetch/utilities/FetchBodyUtility.js.map +1 -1
- package/lib/file/FileReader.d.ts +1 -4
- package/lib/file/FileReader.d.ts.map +1 -1
- package/lib/file/FileReader.js +11 -11
- package/lib/file/FileReader.js.map +1 -1
- package/lib/history/History.d.ts +2 -2
- package/lib/history/History.d.ts.map +1 -1
- package/lib/history/History.js +28 -14
- package/lib/history/History.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/location/Location.d.ts +4 -0
- package/lib/location/Location.d.ts.map +1 -1
- package/lib/location/Location.js +43 -22
- package/lib/location/Location.js.map +1 -1
- package/lib/match-media/MediaQueryItem.d.ts +3 -3
- package/lib/match-media/MediaQueryItem.d.ts.map +1 -1
- package/lib/match-media/MediaQueryItem.js +26 -26
- package/lib/match-media/MediaQueryItem.js.map +1 -1
- package/lib/match-media/MediaQueryList.d.ts +5 -5
- package/lib/match-media/MediaQueryList.d.ts.map +1 -1
- package/lib/match-media/MediaQueryList.js +7 -7
- package/lib/match-media/MediaQueryList.js.map +1 -1
- package/lib/match-media/MediaQueryParser.d.ts +2 -2
- package/lib/match-media/MediaQueryParser.d.ts.map +1 -1
- package/lib/match-media/MediaQueryParser.js +4 -4
- package/lib/match-media/MediaQueryParser.js.map +1 -1
- package/lib/mutation-observer/MutationObserver.d.ts +3 -0
- package/lib/mutation-observer/MutationObserver.d.ts.map +1 -1
- package/lib/mutation-observer/MutationObserver.js +17 -15
- package/lib/mutation-observer/MutationObserver.js.map +1 -1
- package/lib/navigator/Navigator.d.ts +2 -2
- package/lib/navigator/Navigator.d.ts.map +1 -1
- package/lib/navigator/Navigator.js +13 -10
- package/lib/navigator/Navigator.js.map +1 -1
- package/lib/nodes/NodeFactory.js +1 -1
- package/lib/nodes/NodeFactory.js.map +1 -1
- package/lib/nodes/document/Document.d.ts +9 -16
- package/lib/nodes/document/Document.d.ts.map +1 -1
- package/lib/nodes/document/Document.js +69 -51
- package/lib/nodes/document/Document.js.map +1 -1
- package/lib/nodes/document/DocumentReadyStateManager.d.ts.map +1 -1
- package/lib/nodes/document/DocumentReadyStateManager.js +12 -10
- package/lib/nodes/document/DocumentReadyStateManager.js.map +1 -1
- package/lib/nodes/element/Element.d.ts +7 -3
- package/lib/nodes/element/Element.d.ts.map +1 -1
- package/lib/nodes/element/Element.js +33 -20
- package/lib/nodes/element/Element.js.map +1 -1
- package/lib/nodes/element/HTMLCollection.d.ts.map +1 -1
- package/lib/nodes/element/HTMLCollection.js +1 -4
- package/lib/nodes/element/HTMLCollection.js.map +1 -1
- package/lib/nodes/element/NamedNodeMap.d.ts.map +1 -1
- package/lib/nodes/element/NamedNodeMap.js +4 -0
- package/lib/nodes/element/NamedNodeMap.js.map +1 -1
- package/lib/nodes/element/NamedNodeMapProxyFactory.d.ts.map +1 -1
- package/lib/nodes/element/NamedNodeMapProxyFactory.js +0 -6
- package/lib/nodes/element/NamedNodeMapProxyFactory.js.map +1 -1
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.js +5 -5
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.js.map +1 -1
- package/lib/nodes/html-area-element/HTMLAreaElement.d.ts.map +1 -1
- package/lib/nodes/html-area-element/HTMLAreaElement.js +7 -8
- package/lib/nodes/html-area-element/HTMLAreaElement.js.map +1 -1
- package/lib/nodes/html-audio-element/Audio.d.ts +4 -0
- package/lib/nodes/html-audio-element/Audio.d.ts.map +1 -1
- package/lib/nodes/html-audio-element/Audio.js +5 -0
- package/lib/nodes/html-audio-element/Audio.js.map +1 -1
- package/lib/nodes/html-button-element/HTMLButtonElement.d.ts +27 -3
- package/lib/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
- package/lib/nodes/html-button-element/HTMLButtonElement.js +63 -35
- package/lib/nodes/html-button-element/HTMLButtonElement.js.map +1 -1
- package/lib/nodes/html-canvas-element/HTMLCanvasElement.d.ts.map +1 -1
- package/lib/nodes/html-canvas-element/HTMLCanvasElement.js +2 -4
- package/lib/nodes/html-canvas-element/HTMLCanvasElement.js.map +1 -1
- package/lib/nodes/html-document/HTMLDocument.d.ts +1 -10
- package/lib/nodes/html-document/HTMLDocument.d.ts.map +1 -1
- package/lib/nodes/html-document/HTMLDocument.js +2 -6
- package/lib/nodes/html-document/HTMLDocument.js.map +1 -1
- package/lib/nodes/html-element/HTMLElement.d.ts +14 -2
- package/lib/nodes/html-element/HTMLElement.d.ts.map +1 -1
- package/lib/nodes/html-element/HTMLElement.js +130 -89
- package/lib/nodes/html-element/HTMLElement.js.map +1 -1
- package/lib/nodes/html-form-element/HTMLFormElement.d.ts +1 -3
- package/lib/nodes/html-form-element/HTMLFormElement.d.ts.map +1 -1
- package/lib/nodes/html-form-element/HTMLFormElement.js +6 -7
- package/lib/nodes/html-form-element/HTMLFormElement.js.map +1 -1
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts +0 -6
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.js +30 -38
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.js.map +1 -1
- package/lib/nodes/html-image-element/Image.d.ts +4 -0
- package/lib/nodes/html-image-element/Image.d.ts.map +1 -1
- package/lib/nodes/html-image-element/Image.js +5 -0
- package/lib/nodes/html-image-element/Image.js.map +1 -1
- package/lib/nodes/html-input-element/HTMLInputElement.d.ts +25 -0
- package/lib/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
- package/lib/nodes/html-input-element/HTMLInputElement.js +88 -56
- package/lib/nodes/html-input-element/HTMLInputElement.js.map +1 -1
- package/lib/nodes/html-label-element/HTMLLabelElement.d.ts +8 -1
- package/lib/nodes/html-label-element/HTMLLabelElement.d.ts.map +1 -1
- package/lib/nodes/html-label-element/HTMLLabelElement.js +4 -3
- package/lib/nodes/html-label-element/HTMLLabelElement.js.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElement.d.ts +0 -6
- package/lib/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElement.js +10 -16
- package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
- package/lib/nodes/html-media-element/HTMLMediaElement.d.ts.map +1 -1
- package/lib/nodes/html-media-element/HTMLMediaElement.js +12 -16
- package/lib/nodes/html-media-element/HTMLMediaElement.js.map +1 -1
- package/lib/nodes/html-media-element/MediaStream.d.ts.map +1 -1
- package/lib/nodes/html-media-element/MediaStream.js +3 -0
- package/lib/nodes/html-media-element/MediaStream.js.map +1 -1
- package/lib/nodes/html-media-element/MediaStreamTrack.d.ts.map +1 -1
- package/lib/nodes/html-media-element/MediaStreamTrack.js +3 -0
- package/lib/nodes/html-media-element/MediaStreamTrack.js.map +1 -1
- package/lib/nodes/html-media-element/TextTrack.d.ts.map +1 -1
- package/lib/nodes/html-media-element/TextTrack.js +3 -0
- package/lib/nodes/html-media-element/TextTrack.js.map +1 -1
- package/lib/nodes/html-media-element/TextTrackCue.d.ts.map +1 -1
- package/lib/nodes/html-media-element/TextTrackCue.js +3 -0
- package/lib/nodes/html-media-element/TextTrackCue.js.map +1 -1
- package/lib/nodes/html-media-element/VTTCue.d.ts +1 -4
- package/lib/nodes/html-media-element/VTTCue.d.ts.map +1 -1
- package/lib/nodes/html-media-element/VTTCue.js +7 -8
- package/lib/nodes/html-media-element/VTTCue.js.map +1 -1
- package/lib/nodes/html-meter-element/HTMLMeterElement.d.ts.map +1 -1
- package/lib/nodes/html-meter-element/HTMLMeterElement.js +7 -6
- package/lib/nodes/html-meter-element/HTMLMeterElement.js.map +1 -1
- package/lib/nodes/html-progress-element/HTMLProgressElement.d.ts.map +1 -1
- package/lib/nodes/html-progress-element/HTMLProgressElement.js +3 -2
- package/lib/nodes/html-progress-element/HTMLProgressElement.js.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElement.d.ts +0 -6
- package/lib/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElement.js +21 -27
- package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
- package/lib/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
- package/lib/nodes/html-select-element/HTMLSelectElement.js +5 -5
- package/lib/nodes/html-select-element/HTMLSelectElement.js.map +1 -1
- package/lib/nodes/html-table-element/HTMLTableElement.d.ts.map +1 -1
- package/lib/nodes/html-table-element/HTMLTableElement.js +8 -9
- package/lib/nodes/html-table-element/HTMLTableElement.js.map +1 -1
- package/lib/nodes/html-table-row-element/HTMLTableRowElement.d.ts.map +1 -1
- package/lib/nodes/html-table-row-element/HTMLTableRowElement.js +5 -6
- package/lib/nodes/html-table-row-element/HTMLTableRowElement.js.map +1 -1
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js +1 -2
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js.map +1 -1
- package/lib/nodes/html-track-element/HTMLTrackElement.js +1 -2
- package/lib/nodes/html-track-element/HTMLTrackElement.js.map +1 -1
- package/lib/nodes/node/Node.d.ts +1 -2
- package/lib/nodes/node/Node.d.ts.map +1 -1
- package/lib/nodes/node/Node.js +23 -22
- package/lib/nodes/node/Node.js.map +1 -1
- package/lib/nodes/node/NodeList.d.ts.map +1 -1
- package/lib/nodes/node/NodeList.js +4 -6
- package/lib/nodes/node/NodeList.js.map +1 -1
- package/lib/nodes/text/Text.d.ts.map +1 -1
- package/lib/nodes/text/Text.js +1 -2
- package/lib/nodes/text/Text.js.map +1 -1
- package/lib/permissions/Permissions.d.ts +7 -0
- package/lib/permissions/Permissions.d.ts.map +1 -1
- package/lib/permissions/Permissions.js +13 -2
- package/lib/permissions/Permissions.js.map +1 -1
- package/lib/query-selector/QuerySelector.d.ts.map +1 -1
- package/lib/query-selector/QuerySelector.js +12 -10
- package/lib/query-selector/QuerySelector.js.map +1 -1
- package/lib/range/Range.d.ts +2 -2
- package/lib/range/Range.d.ts.map +1 -1
- package/lib/range/Range.js +26 -23
- package/lib/range/Range.js.map +1 -1
- package/lib/selection/Selection.d.ts.map +1 -1
- package/lib/selection/Selection.js +16 -17
- package/lib/selection/Selection.js.map +1 -1
- package/lib/window/BrowserWindow.d.ts +115 -117
- package/lib/window/BrowserWindow.d.ts.map +1 -1
- package/lib/window/BrowserWindow.js +140 -270
- package/lib/window/BrowserWindow.js.map +1 -1
- package/lib/window/VMGlobalPropertyScript.d.ts.map +1 -1
- package/lib/window/VMGlobalPropertyScript.js +0 -1
- package/lib/window/VMGlobalPropertyScript.js.map +1 -1
- package/lib/window/WindowBrowserContext.d.ts +75 -0
- package/lib/window/WindowBrowserContext.d.ts.map +1 -0
- package/lib/window/WindowBrowserContext.js +91 -0
- package/lib/window/WindowBrowserContext.js.map +1 -0
- package/lib/window/WindowClassExtender.d.ts +15 -0
- package/lib/window/WindowClassExtender.d.ts.map +1 -0
- package/lib/window/WindowClassExtender.js +303 -0
- package/lib/window/WindowClassExtender.js.map +1 -0
- package/lib/window/WindowPageOpenUtility.d.ts.map +1 -1
- package/lib/window/WindowPageOpenUtility.js +11 -1
- package/lib/window/WindowPageOpenUtility.js.map +1 -1
- package/lib/xml-http-request/XMLHttpRequest.d.ts +2 -11
- package/lib/xml-http-request/XMLHttpRequest.d.ts.map +1 -1
- package/lib/xml-http-request/XMLHttpRequest.js +33 -33
- package/lib/xml-http-request/XMLHttpRequest.js.map +1 -1
- package/package.json +1 -1
- package/src/ClassMethodBinder.ts +10 -7
- package/src/PropertySymbol.ts +15 -4
- package/src/async-task-manager/AsyncTaskManager.ts +71 -39
- package/src/browser/Browser.ts +7 -0
- package/src/browser/BrowserFrame.ts +3 -7
- package/src/browser/DefaultBrowserSettings.ts +2 -1
- package/src/browser/detached-browser/DetachedBrowser.ts +7 -0
- package/src/browser/detached-browser/DetachedBrowserFrame.ts +3 -7
- package/src/browser/types/IBrowser.ts +3 -0
- package/src/browser/types/IBrowserFrame.ts +0 -3
- package/src/browser/types/IBrowserSettings.ts +1 -0
- package/src/browser/utilities/BrowserExceptionObserver.ts +125 -0
- package/src/browser/utilities/BrowserFrameFactory.ts +29 -33
- package/src/browser/utilities/BrowserFrameNavigator.ts +60 -38
- package/src/clipboard/Clipboard.ts +20 -14
- package/src/css/declaration/AbstractCSSStyleDeclaration.ts +4 -4
- package/src/css/declaration/element-style/CSSStyleDeclarationElementStyle.ts +6 -7
- package/src/css/declaration/measurement-converter/CSSMeasurementConverter.ts +6 -8
- package/src/custom-element/CustomElementRegistry.ts +45 -17
- package/src/dom-implementation/DOMImplementation.ts +15 -10
- package/src/dom-parser/DOMParser.ts +11 -16
- package/src/event/Event.ts +85 -18
- package/src/event/EventTarget.ts +200 -185
- package/src/event/MessagePort.ts +1 -2
- package/src/event/TEventListener.ts +6 -0
- package/src/event/TEventListenerFunction.ts +5 -0
- package/src/event/TEventListenerObject.ts +7 -0
- package/src/event/events/CustomEvent.ts +16 -6
- package/src/event/events/IErrorEventInit.ts +0 -1
- package/src/event/events/IMessageEventInit.ts +2 -2
- package/src/event/events/MessageEvent.ts +2 -2
- package/src/fetch/AbortController.ts +5 -7
- package/src/fetch/AbortSignal.ts +69 -4
- package/src/fetch/Fetch.ts +39 -15
- package/src/fetch/Request.ts +83 -55
- package/src/fetch/ResourceFetch.ts +2 -3
- package/src/fetch/Response.ts +80 -45
- package/src/fetch/SyncFetch.ts +15 -13
- package/src/fetch/multipart/MultipartFormDataParser.ts +16 -5
- package/src/fetch/multipart/MultipartReader.ts +6 -3
- package/src/fetch/utilities/FetchBodyUtility.ts +23 -8
- package/src/file/FileReader.ts +16 -12
- package/src/history/History.ts +31 -14
- package/src/index.ts +2 -2
- package/src/location/Location.ts +46 -22
- package/src/match-media/MediaQueryItem.ts +27 -30
- package/src/match-media/MediaQueryList.ts +11 -21
- package/src/match-media/MediaQueryParser.ts +5 -5
- package/src/mutation-observer/MutationObserver.ts +25 -17
- package/src/navigator/Navigator.ts +14 -12
- package/src/nodes/NodeFactory.ts +1 -1
- package/src/nodes/document/Document.ts +67 -62
- package/src/nodes/document/DocumentReadyStateManager.ts +13 -10
- package/src/nodes/element/Element.ts +44 -29
- package/src/nodes/element/HTMLCollection.ts +1 -4
- package/src/nodes/element/NamedNodeMap.ts +4 -0
- package/src/nodes/element/NamedNodeMapProxyFactory.ts +0 -6
- package/src/nodes/html-anchor-element/HTMLAnchorElement.ts +4 -8
- package/src/nodes/html-area-element/HTMLAreaElement.ts +7 -11
- package/src/nodes/html-audio-element/Audio.ts +6 -0
- package/src/nodes/html-button-element/HTMLButtonElement.ts +67 -37
- package/src/nodes/html-canvas-element/HTMLCanvasElement.ts +5 -3
- package/src/nodes/html-document/HTMLDocument.ts +2 -8
- package/src/nodes/html-element/HTMLElement.ts +151 -129
- package/src/nodes/html-form-element/HTMLFormElement.ts +7 -9
- package/src/nodes/html-iframe-element/HTMLIFrameElement.ts +31 -42
- package/src/nodes/html-image-element/Image.ts +6 -0
- package/src/nodes/html-input-element/HTMLInputElement.ts +96 -61
- package/src/nodes/html-label-element/HTMLLabelElement.ts +21 -6
- package/src/nodes/html-link-element/HTMLLinkElement.ts +12 -19
- package/src/nodes/html-media-element/HTMLMediaElement.ts +15 -12
- package/src/nodes/html-media-element/MediaStream.ts +6 -0
- package/src/nodes/html-media-element/MediaStreamTrack.ts +6 -0
- package/src/nodes/html-media-element/TextTrack.ts +6 -0
- package/src/nodes/html-media-element/TextTrackCue.ts +6 -0
- package/src/nodes/html-media-element/VTTCue.ts +10 -9
- package/src/nodes/html-meter-element/HTMLMeterElement.ts +8 -6
- package/src/nodes/html-progress-element/HTMLProgressElement.ts +4 -2
- package/src/nodes/html-script-element/HTMLScriptElement.ts +25 -45
- package/src/nodes/html-select-element/HTMLSelectElement.ts +6 -5
- package/src/nodes/html-table-element/HTMLTableElement.ts +8 -9
- package/src/nodes/html-table-row-element/HTMLTableRowElement.ts +5 -6
- package/src/nodes/html-text-area-element/HTMLTextAreaElement.ts +1 -2
- package/src/nodes/html-track-element/HTMLTrackElement.ts +1 -1
- package/src/nodes/node/Node.ts +28 -26
- package/src/nodes/node/NodeList.ts +10 -11
- package/src/nodes/text/Text.ts +1 -2
- package/src/permissions/Permissions.ts +17 -1
- package/src/query-selector/QuerySelector.ts +15 -10
- package/src/range/Range.ts +39 -23
- package/src/selection/Selection.ts +27 -17
- package/src/window/BrowserWindow.ts +308 -335
- package/src/window/VMGlobalPropertyScript.ts +0 -1
- package/src/window/WindowBrowserContext.ts +114 -0
- package/src/window/WindowClassExtender.ts +306 -0
- package/src/window/WindowPageOpenUtility.ts +11 -1
- package/src/xml-http-request/XMLHttpRequest.ts +39 -36
- package/cjs/browser/utilities/BrowserFrameExceptionObserver.cjs +0 -80
- package/cjs/browser/utilities/BrowserFrameExceptionObserver.cjs.map +0 -1
- package/cjs/browser/utilities/BrowserFrameExceptionObserver.d.ts.map +0 -1
- package/cjs/event/IEventListener.cjs.map +0 -1
- package/cjs/event/IEventListener.d.ts +0 -13
- package/cjs/event/IEventListener.d.ts.map +0 -1
- package/cjs/event/IMessagePort.cjs.map +0 -1
- package/cjs/event/IMessagePort.d.ts +0 -24
- package/cjs/event/IMessagePort.d.ts.map +0 -1
- package/cjs/window/WindowBrowserSettingsReader.cjs +0 -72
- package/cjs/window/WindowBrowserSettingsReader.cjs.map +0 -1
- package/cjs/window/WindowBrowserSettingsReader.d.ts +0 -29
- package/cjs/window/WindowBrowserSettingsReader.d.ts.map +0 -1
- package/lib/browser/utilities/BrowserFrameExceptionObserver.d.ts.map +0 -1
- package/lib/browser/utilities/BrowserFrameExceptionObserver.js +0 -77
- package/lib/browser/utilities/BrowserFrameExceptionObserver.js.map +0 -1
- package/lib/event/IEventListener.d.ts +0 -13
- package/lib/event/IEventListener.d.ts.map +0 -1
- package/lib/event/IEventListener.js +0 -2
- package/lib/event/IEventListener.js.map +0 -1
- package/lib/event/IMessagePort.d.ts +0 -24
- package/lib/event/IMessagePort.d.ts.map +0 -1
- package/lib/event/IMessagePort.js +0 -2
- package/lib/event/IMessagePort.js.map +0 -1
- package/lib/window/WindowBrowserSettingsReader.d.ts +0 -29
- package/lib/window/WindowBrowserSettingsReader.d.ts.map +0 -1
- package/lib/window/WindowBrowserSettingsReader.js +0 -46
- package/lib/window/WindowBrowserSettingsReader.js.map +0 -1
- package/src/browser/utilities/BrowserFrameExceptionObserver.ts +0 -111
- package/src/event/IEventListener.ts +0 -13
- package/src/event/IMessagePort.ts +0 -26
- package/src/window/WindowBrowserSettingsReader.ts +0 -55
@@ -0,0 +1,125 @@
|
|
1
|
+
import BrowserWindow from '../../window/BrowserWindow.js';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Listens for uncaught exceptions coming from Happy DOM on the running Node process and dispatches error events on the Window instance.
|
5
|
+
*/
|
6
|
+
export default class BrowserExceptionObserver {
|
7
|
+
private static listenerCount = 0;
|
8
|
+
private observedWindows: BrowserWindow[] = [];
|
9
|
+
private uncaughtExceptionListener: (
|
10
|
+
error: Error,
|
11
|
+
origin: 'uncaughtException' | 'unhandledRejection'
|
12
|
+
) => void | null;
|
13
|
+
private uncaughtRejectionListener: (error: Error) => void | null;
|
14
|
+
|
15
|
+
/**
|
16
|
+
* Observes the Node process for uncaught exceptions.
|
17
|
+
*
|
18
|
+
* @param window Browser window.
|
19
|
+
*/
|
20
|
+
public observe(window: BrowserWindow): void {
|
21
|
+
if (this.observedWindows.includes(window)) {
|
22
|
+
throw new Error('Browser window is already being observed.');
|
23
|
+
}
|
24
|
+
|
25
|
+
this.observedWindows.push(window);
|
26
|
+
|
27
|
+
if (this.uncaughtExceptionListener) {
|
28
|
+
return;
|
29
|
+
}
|
30
|
+
|
31
|
+
this.uncaughtExceptionListener = (
|
32
|
+
error: unknown,
|
33
|
+
origin: 'uncaughtException' | 'unhandledRejection'
|
34
|
+
): void => {
|
35
|
+
if (origin === 'unhandledRejection') {
|
36
|
+
return;
|
37
|
+
}
|
38
|
+
|
39
|
+
let targetWindow: BrowserWindow | null = null;
|
40
|
+
|
41
|
+
for (const window of this.observedWindows) {
|
42
|
+
if (error instanceof window.Error || error instanceof window.DOMException) {
|
43
|
+
targetWindow = window;
|
44
|
+
break;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
if (targetWindow) {
|
49
|
+
targetWindow.console.error(error);
|
50
|
+
targetWindow.dispatchEvent(
|
51
|
+
new targetWindow.ErrorEvent('error', {
|
52
|
+
error: <Error>error,
|
53
|
+
message: (<Error>error).message
|
54
|
+
})
|
55
|
+
);
|
56
|
+
} else if (
|
57
|
+
process.listenerCount('uncaughtException') ===
|
58
|
+
(<typeof BrowserExceptionObserver>this.constructor).listenerCount
|
59
|
+
) {
|
60
|
+
// eslint-disable-next-line no-console
|
61
|
+
console.error(error);
|
62
|
+
// Exit if there are no other listeners handling the error.
|
63
|
+
process.exit(1);
|
64
|
+
}
|
65
|
+
};
|
66
|
+
|
67
|
+
// The "uncaughtException" event is not always triggered for unhandled rejections.
|
68
|
+
// Therefore we want to use the "unhandledRejection" event as well.
|
69
|
+
this.uncaughtRejectionListener = (error: unknown): void => {
|
70
|
+
let targetWindow: BrowserWindow | null = null;
|
71
|
+
|
72
|
+
for (const window of this.observedWindows) {
|
73
|
+
if (error instanceof window.Error || error instanceof window.DOMException) {
|
74
|
+
targetWindow = window;
|
75
|
+
break;
|
76
|
+
}
|
77
|
+
}
|
78
|
+
|
79
|
+
if (targetWindow) {
|
80
|
+
targetWindow.console.error(error);
|
81
|
+
targetWindow.dispatchEvent(
|
82
|
+
new targetWindow.ErrorEvent('error', {
|
83
|
+
error: <Error>error,
|
84
|
+
message: (<Error>error).message
|
85
|
+
})
|
86
|
+
);
|
87
|
+
} else if (
|
88
|
+
process.listenerCount('unhandledRejection') ===
|
89
|
+
(<typeof BrowserExceptionObserver>this.constructor).listenerCount
|
90
|
+
) {
|
91
|
+
// eslint-disable-next-line no-console
|
92
|
+
console.error(error);
|
93
|
+
// Exit if there are no other listeners handling the error.
|
94
|
+
process.exit(1);
|
95
|
+
}
|
96
|
+
};
|
97
|
+
|
98
|
+
(<typeof BrowserExceptionObserver>this.constructor).listenerCount++;
|
99
|
+
process.on('uncaughtException', this.uncaughtExceptionListener);
|
100
|
+
process.on('unhandledRejection', this.uncaughtRejectionListener);
|
101
|
+
}
|
102
|
+
|
103
|
+
/**
|
104
|
+
* Disconnects observer.
|
105
|
+
*
|
106
|
+
* @param window Browser window.
|
107
|
+
*/
|
108
|
+
public disconnect(window: BrowserWindow): void {
|
109
|
+
const index = this.observedWindows.indexOf(window);
|
110
|
+
|
111
|
+
if (index === -1) {
|
112
|
+
return;
|
113
|
+
}
|
114
|
+
|
115
|
+
this.observedWindows.splice(index, 1);
|
116
|
+
|
117
|
+
if (this.observedWindows.length === 0 && this.uncaughtExceptionListener) {
|
118
|
+
(<typeof BrowserExceptionObserver>this.constructor).listenerCount--;
|
119
|
+
process.off('uncaughtException', this.uncaughtExceptionListener);
|
120
|
+
process.off('unhandledRejection', this.uncaughtRejectionListener);
|
121
|
+
this.uncaughtExceptionListener = null;
|
122
|
+
this.uncaughtRejectionListener = null;
|
123
|
+
}
|
124
|
+
}
|
125
|
+
}
|
@@ -2,6 +2,7 @@ import IBrowserFrame from '../types/IBrowserFrame.js';
|
|
2
2
|
import * as PropertySymbol from '../../PropertySymbol.js';
|
3
3
|
import BrowserWindow from '../../window/BrowserWindow.js';
|
4
4
|
import IBrowserPage from '../types/IBrowserPage.js';
|
5
|
+
|
5
6
|
/**
|
6
7
|
* Browser frame factory.
|
7
8
|
*/
|
@@ -27,7 +28,9 @@ export default class BrowserFrameFactory {
|
|
27
28
|
* @param frame Frame.
|
28
29
|
*/
|
29
30
|
public static destroyFrame(frame: IBrowserFrame): Promise<void> {
|
30
|
-
|
31
|
+
const exceptionObserver = frame.page?.context?.browser?.[PropertySymbol.exceptionObserver];
|
32
|
+
|
33
|
+
// Using Promise instead of async/await to prevent usage of a microtask
|
31
34
|
return new Promise((resolve, reject) => {
|
32
35
|
if (!frame.window) {
|
33
36
|
resolve();
|
@@ -42,54 +45,47 @@ export default class BrowserFrameFactory {
|
|
42
45
|
}
|
43
46
|
|
44
47
|
if (!frame.childFrames.length) {
|
45
|
-
|
46
|
-
for (const mutationObserver of frame.window[PropertySymbol.mutationObservers]) {
|
47
|
-
mutationObserver.disconnect();
|
48
|
-
}
|
49
|
-
frame.window[PropertySymbol.mutationObservers] = [];
|
50
|
-
}
|
51
|
-
return frame[PropertySymbol.asyncTaskManager]
|
48
|
+
frame[PropertySymbol.asyncTaskManager]
|
52
49
|
.destroy()
|
53
50
|
.then(() => {
|
54
|
-
frame
|
55
|
-
|
56
|
-
frame.window[PropertySymbol.destroy]();
|
57
|
-
(<IBrowserPage | null>frame.page) = null;
|
58
|
-
(<BrowserWindow | null>frame.window) = null;
|
59
|
-
frame[PropertySymbol.openerFrame] = null;
|
60
|
-
frame[PropertySymbol.openerWindow] = null;
|
51
|
+
if (exceptionObserver && frame.window) {
|
52
|
+
exceptionObserver.disconnect(frame.window);
|
61
53
|
}
|
54
|
+
|
55
|
+
(<IBrowserPage | null>frame.page) = null;
|
56
|
+
(<BrowserWindow | null>frame.window) = null;
|
57
|
+
frame[PropertySymbol.openerFrame] = null;
|
58
|
+
frame[PropertySymbol.openerWindow] = null;
|
59
|
+
|
62
60
|
resolve();
|
63
61
|
})
|
64
62
|
.catch((error) => reject(error));
|
63
|
+
if (frame.window) {
|
64
|
+
frame.window[PropertySymbol.destroy]();
|
65
|
+
}
|
66
|
+
return;
|
65
67
|
}
|
66
68
|
|
67
69
|
Promise.all(frame.childFrames.slice().map((childFrame) => this.destroyFrame(childFrame)))
|
68
70
|
.then(() => {
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
return frame[PropertySymbol.asyncTaskManager].destroy().then(() => {
|
76
|
-
frame[PropertySymbol.exceptionObserver]?.disconnect();
|
77
|
-
if (frame.window) {
|
78
|
-
const listeners = frame[PropertySymbol.listeners];
|
71
|
+
frame[PropertySymbol.asyncTaskManager]
|
72
|
+
.destroy()
|
73
|
+
.then(() => {
|
74
|
+
if (exceptionObserver && frame.window) {
|
75
|
+
exceptionObserver.disconnect(frame.window);
|
76
|
+
}
|
79
77
|
|
80
|
-
frame.window[PropertySymbol.destroy]();
|
81
78
|
(<IBrowserPage | null>frame.page) = null;
|
82
79
|
(<BrowserWindow | null>frame.window) = null;
|
83
|
-
frame[PropertySymbol.listeners] = null;
|
84
80
|
frame[PropertySymbol.openerFrame] = null;
|
85
81
|
frame[PropertySymbol.openerWindow] = null;
|
86
82
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
}
|
83
|
+
resolve();
|
84
|
+
})
|
85
|
+
.catch((error) => reject(error));
|
86
|
+
if (frame.window) {
|
87
|
+
frame.window[PropertySymbol.destroy]();
|
88
|
+
}
|
93
89
|
})
|
94
90
|
.catch((error) => reject(error));
|
95
91
|
});
|
@@ -4,13 +4,10 @@ import IGoToOptions from '../types/IGoToOptions.js';
|
|
4
4
|
import Response from '../../fetch/Response.js';
|
5
5
|
import DocumentReadyStateManager from '../../nodes/document/DocumentReadyStateManager.js';
|
6
6
|
import BrowserWindow from '../../window/BrowserWindow.js';
|
7
|
-
import WindowErrorUtility from '../../window/WindowErrorUtility.js';
|
8
|
-
import AbortController from '../../fetch/AbortController.js';
|
9
7
|
import BrowserFrameFactory from './BrowserFrameFactory.js';
|
10
8
|
import BrowserFrameURL from './BrowserFrameURL.js';
|
11
9
|
import BrowserFrameValidator from './BrowserFrameValidator.js';
|
12
10
|
import AsyncTaskManager from '../../async-task-manager/AsyncTaskManager.js';
|
13
|
-
import BrowserErrorCaptureEnum from '../enums/BrowserErrorCaptureEnum.js';
|
14
11
|
import FormData from '../../form-data/FormData.js';
|
15
12
|
import HistoryScrollRestorationEnum from '../../history/HistoryScrollRestorationEnum.js';
|
16
13
|
import IHistoryItem from '../../history/IHistoryItem.js';
|
@@ -46,6 +43,7 @@ export default class BrowserFrameNavigator {
|
|
46
43
|
disableHistory?: boolean;
|
47
44
|
}): Promise<Response | null> {
|
48
45
|
const { windowClass, frame, url, formData, method, goToOptions, disableHistory } = options;
|
46
|
+
const exceptionObserver = frame.page.context.browser[PropertySymbol.exceptionObserver];
|
49
47
|
const referrer = goToOptions?.referrer || frame.window.location.origin;
|
50
48
|
const targetURL = BrowserFrameURL.getRelativeURL(frame, url);
|
51
49
|
const resolveNavigationListeners = (): void => {
|
@@ -60,6 +58,7 @@ export default class BrowserFrameNavigator {
|
|
60
58
|
throw new Error('The frame has been destroyed, the "window" property is not set.');
|
61
59
|
}
|
62
60
|
|
61
|
+
// Javascript protocol
|
63
62
|
if (targetURL.protocol === 'javascript:') {
|
64
63
|
if (frame && !frame.page.context.browser.settings.disableJavaScriptEvaluation) {
|
65
64
|
const readyStateManager = (<
|
@@ -67,30 +66,26 @@ export default class BrowserFrameNavigator {
|
|
67
66
|
>(<unknown>frame.window))[PropertySymbol.readyStateManager];
|
68
67
|
|
69
68
|
readyStateManager.startTask();
|
70
|
-
|
71
|
-
// The browser will wait for the next tick before executing the script.
|
72
|
-
await new Promise((resolve) => frame.page.mainFrame.window.setTimeout(resolve));
|
73
|
-
|
74
69
|
const code =
|
75
70
|
'//# sourceURL=' + frame.url + '\n' + targetURL.href.replace('javascript:', '');
|
76
71
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
)
|
81
|
-
|
82
|
-
} else {
|
83
|
-
WindowErrorUtility.captureError(frame.window, () => frame.window.eval(code));
|
84
|
-
}
|
72
|
+
// The browser will wait for the next tick before executing the script.
|
73
|
+
// Fixes issue where evaluating the response can throw an error.
|
74
|
+
// By using requestAnimationFrame() the error will not reject the promise.
|
75
|
+
// The error will be caught by process error level listener or a try and catch in the requestAnimationFrame().
|
76
|
+
frame.window.requestAnimationFrame(() => frame.window.eval(code));
|
85
77
|
|
86
|
-
|
78
|
+
// We need to wait for the next tick before resolving navigation listeners and ending the ready state task.
|
79
|
+
await new Promise((resolve) => frame.window.setTimeout(() => resolve(null)));
|
87
80
|
|
81
|
+
readyStateManager.endTask();
|
88
82
|
resolveNavigationListeners();
|
89
83
|
}
|
90
84
|
|
91
85
|
return null;
|
92
86
|
}
|
93
87
|
|
88
|
+
// Validate navigation
|
94
89
|
if (!BrowserFrameValidator.validateCrossOriginPolicy(frame, targetURL)) {
|
95
90
|
return null;
|
96
91
|
}
|
@@ -103,16 +98,6 @@ export default class BrowserFrameNavigator {
|
|
103
98
|
return null;
|
104
99
|
}
|
105
100
|
|
106
|
-
const width = frame.window.innerWidth;
|
107
|
-
const height = frame.window.innerHeight;
|
108
|
-
const devicePixelRatio = frame.window.devicePixelRatio;
|
109
|
-
const parentWindow = frame.parentFrame ? frame.parentFrame.window : frame.page.mainFrame.window;
|
110
|
-
const topWindow = frame.page.mainFrame.window;
|
111
|
-
|
112
|
-
for (const childFrame of frame.childFrames) {
|
113
|
-
BrowserFrameFactory.destroyFrame(childFrame);
|
114
|
-
}
|
115
|
-
|
116
101
|
// History management.
|
117
102
|
if (!disableHistory) {
|
118
103
|
const history = frame[PropertySymbol.history];
|
@@ -138,36 +123,63 @@ export default class BrowserFrameNavigator {
|
|
138
123
|
});
|
139
124
|
}
|
140
125
|
|
141
|
-
|
142
|
-
frame.window
|
143
|
-
frame[PropertySymbol.asyncTaskManager]
|
144
|
-
|
126
|
+
// Store current Window state
|
127
|
+
const previousWindow = frame.window;
|
128
|
+
const previousAsyncTaskManager = frame[PropertySymbol.asyncTaskManager];
|
129
|
+
const width = previousWindow.innerWidth;
|
130
|
+
const height = previousWindow.innerHeight;
|
131
|
+
const devicePixelRatio = previousWindow.devicePixelRatio;
|
132
|
+
const parentWindow = frame.parentFrame ? frame.parentFrame.window : frame.page.mainFrame.window;
|
133
|
+
const topWindow = frame.page.mainFrame.window;
|
145
134
|
|
135
|
+
// Create new Window
|
136
|
+
frame[PropertySymbol.asyncTaskManager] = new AsyncTaskManager(frame);
|
146
137
|
(<BrowserWindow>frame.window) = new windowClass(frame, { url: targetURL.href, width, height });
|
147
138
|
frame.window[PropertySymbol.parent] = parentWindow;
|
148
139
|
frame.window[PropertySymbol.top] = topWindow;
|
149
140
|
(<number>frame.window.devicePixelRatio) = devicePixelRatio;
|
150
141
|
|
142
|
+
if (exceptionObserver) {
|
143
|
+
exceptionObserver.observe(frame.window);
|
144
|
+
}
|
145
|
+
|
151
146
|
if (referrer) {
|
152
147
|
frame.window.document[PropertySymbol.referrer] = referrer;
|
153
148
|
}
|
154
149
|
|
150
|
+
// Destroy child frames and Window
|
151
|
+
const destroyTaskID = frame[PropertySymbol.asyncTaskManager].startTask();
|
152
|
+
const destroyWindowAndAsyncTaskManager = (): void => {
|
153
|
+
previousAsyncTaskManager.destroy().then(() => {
|
154
|
+
if (exceptionObserver) {
|
155
|
+
exceptionObserver.disconnect(previousWindow);
|
156
|
+
}
|
157
|
+
frame[PropertySymbol.asyncTaskManager].endTask(destroyTaskID);
|
158
|
+
});
|
159
|
+
|
160
|
+
previousWindow[PropertySymbol.destroy]();
|
161
|
+
};
|
162
|
+
|
163
|
+
if (frame.childFrames.length) {
|
164
|
+
Promise.all(
|
165
|
+
frame.childFrames.map((childFrame) => BrowserFrameFactory.destroyFrame(childFrame))
|
166
|
+
).then(destroyWindowAndAsyncTaskManager);
|
167
|
+
} else {
|
168
|
+
destroyWindowAndAsyncTaskManager();
|
169
|
+
}
|
170
|
+
|
171
|
+
// About protocol
|
155
172
|
if (targetURL.protocol === 'about:') {
|
156
173
|
await new Promise((resolve) => frame.page.mainFrame.window.requestAnimationFrame(resolve));
|
157
174
|
resolveNavigationListeners();
|
158
175
|
return null;
|
159
176
|
}
|
160
177
|
|
178
|
+
// Start navigation
|
161
179
|
const readyStateManager = (<{ [PropertySymbol.readyStateManager]: DocumentReadyStateManager }>(
|
162
180
|
(<unknown>frame.window)
|
163
181
|
))[PropertySymbol.readyStateManager];
|
164
|
-
|
165
|
-
readyStateManager.startTask();
|
166
|
-
|
167
|
-
const abortController = new AbortController();
|
168
|
-
let response: Response;
|
169
|
-
let responseText: string;
|
170
|
-
|
182
|
+
const abortController = new frame.window.AbortController();
|
171
183
|
const timeout = frame.window.setTimeout(
|
172
184
|
() => abortController.abort(new Error('Request timed out.')),
|
173
185
|
goToOptions?.timeout ?? 30000
|
@@ -177,6 +189,10 @@ export default class BrowserFrameNavigator {
|
|
177
189
|
readyStateManager.endTask();
|
178
190
|
resolveNavigationListeners();
|
179
191
|
};
|
192
|
+
let response: Response;
|
193
|
+
let responseText: string;
|
194
|
+
|
195
|
+
readyStateManager.startTask();
|
180
196
|
|
181
197
|
try {
|
182
198
|
response = await frame.window.fetch(targetURL.href, {
|
@@ -211,13 +227,19 @@ export default class BrowserFrameNavigator {
|
|
211
227
|
frame.page.console.error(`GET ${targetURL.href} ${response.status} (${response.statusText})`);
|
212
228
|
}
|
213
229
|
|
230
|
+
// The frame may be destroyed during teardown.
|
231
|
+
if (!frame.window) {
|
232
|
+
return;
|
233
|
+
}
|
234
|
+
|
214
235
|
// Fixes issue where evaluating the response can throw an error.
|
215
236
|
// By using requestAnimationFrame() the error will not reject the promise.
|
216
237
|
// The error will be caught by process error level listener or a try and catch in the requestAnimationFrame().
|
217
238
|
frame.window.requestAnimationFrame(() => (frame.content = responseText));
|
218
239
|
|
240
|
+
// Finalize the navigation
|
219
241
|
await new Promise((resolve) =>
|
220
|
-
frame.window.
|
242
|
+
frame.window.setTimeout(() => {
|
221
243
|
finalize();
|
222
244
|
resolve(null);
|
223
245
|
})
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import DOMException from '../exception/DOMException.js';
|
2
1
|
import BrowserWindow from '../window/BrowserWindow.js';
|
3
2
|
import ClipboardItem from './ClipboardItem.js';
|
4
3
|
import Blob from '../file/Blob.js';
|
@@ -10,16 +9,19 @@ import Blob from '../file/Blob.js';
|
|
10
9
|
* https://developer.mozilla.org/en-US/docs/Web/API/Clipboard.
|
11
10
|
*/
|
12
11
|
export default class Clipboard {
|
13
|
-
#
|
12
|
+
#window: BrowserWindow;
|
14
13
|
#data: ClipboardItem[] = [];
|
15
14
|
|
16
15
|
/**
|
17
16
|
* Constructor.
|
18
17
|
*
|
19
|
-
* @param
|
18
|
+
* @param window Owner window.
|
20
19
|
*/
|
21
|
-
constructor(
|
22
|
-
|
20
|
+
constructor(window: BrowserWindow) {
|
21
|
+
if (!window) {
|
22
|
+
throw new TypeError('Illegal constructor');
|
23
|
+
}
|
24
|
+
this.#window = window;
|
23
25
|
}
|
24
26
|
|
25
27
|
/**
|
@@ -28,11 +30,13 @@ export default class Clipboard {
|
|
28
30
|
* @returns Data.
|
29
31
|
*/
|
30
32
|
public async read(): Promise<ClipboardItem[]> {
|
31
|
-
const permissionStatus = await this.#
|
33
|
+
const permissionStatus = await this.#window.navigator.permissions.query({
|
32
34
|
name: 'clipboard-read'
|
33
35
|
});
|
34
36
|
if (permissionStatus.state === 'denied') {
|
35
|
-
throw new DOMException(
|
37
|
+
throw new this.#window.DOMException(
|
38
|
+
`Failed to execute 'read' on 'Clipboard': The request is not allowed`
|
39
|
+
);
|
36
40
|
}
|
37
41
|
return this.#data;
|
38
42
|
}
|
@@ -43,11 +47,11 @@ export default class Clipboard {
|
|
43
47
|
* @returns Text.
|
44
48
|
*/
|
45
49
|
public async readText(): Promise<string> {
|
46
|
-
const permissionStatus = await this.#
|
50
|
+
const permissionStatus = await this.#window.navigator.permissions.query({
|
47
51
|
name: 'clipboard-read'
|
48
52
|
});
|
49
53
|
if (permissionStatus.state === 'denied') {
|
50
|
-
throw new DOMException(
|
54
|
+
throw new this.#window.DOMException(
|
51
55
|
`Failed to execute 'readText' on 'Clipboard': The request is not allowed`
|
52
56
|
);
|
53
57
|
}
|
@@ -72,11 +76,11 @@ export default class Clipboard {
|
|
72
76
|
* @param data Data.
|
73
77
|
*/
|
74
78
|
public async write(data: ClipboardItem[]): Promise<void> {
|
75
|
-
const permissionStatus = await this.#
|
79
|
+
const permissionStatus = await this.#window.navigator.permissions.query({
|
76
80
|
name: 'clipboard-write'
|
77
81
|
});
|
78
82
|
if (permissionStatus.state === 'denied') {
|
79
|
-
throw new DOMException(
|
83
|
+
throw new this.#window.DOMException(
|
80
84
|
`Failed to execute 'write' on 'Clipboard': The request is not allowed`
|
81
85
|
);
|
82
86
|
}
|
@@ -89,14 +93,16 @@ export default class Clipboard {
|
|
89
93
|
* @param text Text.
|
90
94
|
*/
|
91
95
|
public async writeText(text: string): Promise<void> {
|
92
|
-
const permissionStatus = await this.#
|
96
|
+
const permissionStatus = await this.#window.navigator.permissions.query({
|
93
97
|
name: 'clipboard-write'
|
94
98
|
});
|
95
99
|
if (permissionStatus.state === 'denied') {
|
96
|
-
throw new DOMException(
|
100
|
+
throw new this.#window.DOMException(
|
97
101
|
`Failed to execute 'writeText' on 'Clipboard': The request is not allowed`
|
98
102
|
);
|
99
103
|
}
|
100
|
-
this.#data = [
|
104
|
+
this.#data = [
|
105
|
+
new this.#window.ClipboardItem({ 'text/plain': new Blob([text], { type: 'text/plain' }) })
|
106
|
+
];
|
101
107
|
}
|
102
108
|
}
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import Element from '../../nodes/element/Element.js';
|
2
2
|
import CSSRule from '../CSSRule.js';
|
3
3
|
import DOMExceptionNameEnum from '../../exception/DOMExceptionNameEnum.js';
|
4
|
-
import DOMException from '../../exception/DOMException.js';
|
5
4
|
import CSSStyleDeclarationElementStyle from './element-style/CSSStyleDeclarationElementStyle.js';
|
6
5
|
import CSSStyleDeclarationPropertyManager from './property-manager/CSSStyleDeclarationPropertyManager.js';
|
6
|
+
import * as PropertySymbol from '../../PropertySymbol.js';
|
7
7
|
|
8
8
|
/**
|
9
9
|
* CSS Style Declaration.
|
@@ -68,7 +68,7 @@ export default abstract class AbstractCSSStyleDeclaration {
|
|
68
68
|
*/
|
69
69
|
public set cssText(cssText: string) {
|
70
70
|
if (this.#computed) {
|
71
|
-
throw new DOMException(
|
71
|
+
throw new this[PropertySymbol.window].DOMException(
|
72
72
|
`Failed to execute 'cssText' on 'CSSStyleDeclaration': These styles are computed, and the properties are therefore read-only.`,
|
73
73
|
DOMExceptionNameEnum.domException
|
74
74
|
);
|
@@ -106,7 +106,7 @@ export default abstract class AbstractCSSStyleDeclaration {
|
|
106
106
|
*/
|
107
107
|
public setProperty(name: string, value: string, priority?: 'important' | '' | undefined): void {
|
108
108
|
if (this.#computed) {
|
109
|
-
throw new DOMException(
|
109
|
+
throw new this[PropertySymbol.window].DOMException(
|
110
110
|
`Failed to execute 'setProperty' on 'CSSStyleDeclaration': These styles are computed, and therefore the '${name}' property is read-only.`,
|
111
111
|
DOMExceptionNameEnum.domException
|
112
112
|
);
|
@@ -139,7 +139,7 @@ export default abstract class AbstractCSSStyleDeclaration {
|
|
139
139
|
*/
|
140
140
|
public removeProperty(name: string): void {
|
141
141
|
if (this.#computed) {
|
142
|
-
throw new DOMException(
|
142
|
+
throw new this[PropertySymbol.window].DOMException(
|
143
143
|
`Failed to execute 'removeProperty' on 'CSSStyleDeclaration': These styles are computed, and therefore the '${name}' property is read-only.`,
|
144
144
|
DOMExceptionNameEnum.domException
|
145
145
|
);
|
@@ -17,7 +17,7 @@ import CSSStyleDeclarationCSSParser from '../css-parser/CSSStyleDeclarationCSSPa
|
|
17
17
|
import QuerySelector from '../../../query-selector/QuerySelector.js';
|
18
18
|
import CSSMeasurementConverter from '../measurement-converter/CSSMeasurementConverter.js';
|
19
19
|
import MediaQueryList from '../../../match-media/MediaQueryList.js';
|
20
|
-
import
|
20
|
+
import WindowBrowserContext from '../../../window/WindowBrowserContext.js';
|
21
21
|
|
22
22
|
const CSS_MEASUREMENT_REGEXP = /[0-9.]+(px|rem|em|vw|vh|%|vmin|vmax|cm|mm|in|pt|pc|Q)/g;
|
23
23
|
const CSS_VARIABLE_REGEXP = /var\( *(--[^), ]+)\)|var\( *(--[^), ]+), *(.+)\)/;
|
@@ -333,7 +333,7 @@ export default class CSSStyleDeclarationElementStyle {
|
|
333
333
|
return;
|
334
334
|
}
|
335
335
|
|
336
|
-
const
|
336
|
+
const window = this.element[PropertySymbol.window];
|
337
337
|
|
338
338
|
for (const rule of options.cssRules) {
|
339
339
|
if (rule.type === CSSRuleTypeEnum.styleRule) {
|
@@ -371,7 +371,7 @@ export default class CSSStyleDeclarationElementStyle {
|
|
371
371
|
rule.type === CSSRuleTypeEnum.mediaRule &&
|
372
372
|
// TODO: We need to send in a predfined root font size as it will otherwise be calculated using Window.getComputedStyle(), which will cause a never ending loop. Is there another solution?
|
373
373
|
new MediaQueryList({
|
374
|
-
|
374
|
+
window,
|
375
375
|
media: (<CSSMediaRule>rule).conditionText,
|
376
376
|
rootFontSize: this.element[PropertySymbol.tagName] === 'HTML' ? 16 : null
|
377
377
|
}).matches
|
@@ -425,9 +425,8 @@ export default class CSSStyleDeclarationElementStyle {
|
|
425
425
|
parentSize: string | number | null;
|
426
426
|
}): string {
|
427
427
|
if (
|
428
|
-
|
429
|
-
|
430
|
-
).disableComputedStyleRendering
|
428
|
+
new WindowBrowserContext(this.element[PropertySymbol.window]).getSettings()
|
429
|
+
?.disableComputedStyleRendering
|
431
430
|
) {
|
432
431
|
return options.value;
|
433
432
|
}
|
@@ -439,7 +438,7 @@ export default class CSSStyleDeclarationElementStyle {
|
|
439
438
|
while ((match = regexp.exec(options.value)) !== null) {
|
440
439
|
if (match[1] !== 'px') {
|
441
440
|
const valueInPixels = CSSMeasurementConverter.toPixels({
|
442
|
-
|
441
|
+
window: this.element[PropertySymbol.window],
|
443
442
|
value: match[0],
|
444
443
|
rootFontSize: options.rootFontSize,
|
445
444
|
parentFontSize: options.parentFontSize,
|
@@ -8,7 +8,7 @@ export default class CSSMeasurementConverter {
|
|
8
8
|
* Returns measurement in pixels.
|
9
9
|
*
|
10
10
|
* @param options Options.
|
11
|
-
* @param options.
|
11
|
+
* @param options.window Owner window.
|
12
12
|
* @param options.value Measurement (e.g. "10px", "10rem" or "10em").
|
13
13
|
* @param options.rootFontSize Root font size in pixels.
|
14
14
|
* @param options.parentFontSize Parent font size in pixels.
|
@@ -16,7 +16,7 @@ export default class CSSMeasurementConverter {
|
|
16
16
|
* @returns Measurement in pixels.
|
17
17
|
*/
|
18
18
|
public static toPixels(options: {
|
19
|
-
|
19
|
+
window: BrowserWindow;
|
20
20
|
value: string;
|
21
21
|
rootFontSize: string | number;
|
22
22
|
parentFontSize: string | number;
|
@@ -37,21 +37,19 @@ export default class CSSMeasurementConverter {
|
|
37
37
|
case 'em':
|
38
38
|
return this.round(value * parseFloat(<string>options.parentFontSize));
|
39
39
|
case 'vw':
|
40
|
-
return this.round((value * options.
|
40
|
+
return this.round((value * options.window.innerWidth) / 100);
|
41
41
|
case 'vh':
|
42
|
-
return this.round((value * options.
|
42
|
+
return this.round((value * options.window.innerHeight) / 100);
|
43
43
|
case '%':
|
44
44
|
return options.parentSize !== undefined && options.parentSize !== null
|
45
45
|
? this.round((value * parseFloat(<string>options.parentSize)) / 100)
|
46
46
|
: null;
|
47
47
|
case 'vmin':
|
48
48
|
return this.round(
|
49
|
-
(value * Math.min(options.
|
49
|
+
(value * Math.min(options.window.innerWidth, options.window.innerHeight)) / 100
|
50
50
|
);
|
51
51
|
case 'vmax':
|
52
|
-
return (
|
53
|
-
(value * Math.max(options.ownerWindow.innerWidth, options.ownerWindow.innerHeight)) / 100
|
54
|
-
);
|
52
|
+
return (value * Math.max(options.window.innerWidth, options.window.innerHeight)) / 100;
|
55
53
|
case 'cm':
|
56
54
|
return this.round(value * 37.7812);
|
57
55
|
case 'mm':
|