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.

Files changed (804) hide show
  1. package/cjs/ClassMethodBinder.cjs +8 -6
  2. package/cjs/ClassMethodBinder.cjs.map +1 -1
  3. package/cjs/ClassMethodBinder.d.ts +4 -2
  4. package/cjs/ClassMethodBinder.d.ts.map +1 -1
  5. package/cjs/PropertySymbol.cjs +20 -9
  6. package/cjs/PropertySymbol.cjs.map +1 -1
  7. package/cjs/PropertySymbol.d.ts +15 -4
  8. package/cjs/PropertySymbol.d.ts.map +1 -1
  9. package/cjs/async-task-manager/AsyncTaskManager.cjs +64 -35
  10. package/cjs/async-task-manager/AsyncTaskManager.cjs.map +1 -1
  11. package/cjs/async-task-manager/AsyncTaskManager.d.ts +11 -1
  12. package/cjs/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
  13. package/cjs/browser/Browser.cjs +30 -0
  14. package/cjs/browser/Browser.cjs.map +1 -1
  15. package/cjs/browser/Browser.d.ts +3 -0
  16. package/cjs/browser/Browser.d.ts.map +1 -1
  17. package/cjs/browser/BrowserFrame.cjs +3 -7
  18. package/cjs/browser/BrowserFrame.cjs.map +1 -1
  19. package/cjs/browser/BrowserFrame.d.ts +1 -4
  20. package/cjs/browser/BrowserFrame.d.ts.map +1 -1
  21. package/cjs/browser/DefaultBrowserSettings.cjs +2 -1
  22. package/cjs/browser/DefaultBrowserSettings.cjs.map +1 -1
  23. package/cjs/browser/DefaultBrowserSettings.d.ts.map +1 -1
  24. package/cjs/browser/detached-browser/DetachedBrowser.cjs +30 -0
  25. package/cjs/browser/detached-browser/DetachedBrowser.cjs.map +1 -1
  26. package/cjs/browser/detached-browser/DetachedBrowser.d.ts +3 -0
  27. package/cjs/browser/detached-browser/DetachedBrowser.d.ts.map +1 -1
  28. package/cjs/browser/detached-browser/DetachedBrowserFrame.cjs +3 -7
  29. package/cjs/browser/detached-browser/DetachedBrowserFrame.cjs.map +1 -1
  30. package/cjs/browser/detached-browser/DetachedBrowserFrame.d.ts +1 -4
  31. package/cjs/browser/detached-browser/DetachedBrowserFrame.d.ts.map +1 -1
  32. package/cjs/browser/types/IBrowser.cjs +24 -0
  33. package/cjs/browser/types/IBrowser.cjs.map +1 -1
  34. package/cjs/browser/types/IBrowser.d.ts +3 -0
  35. package/cjs/browser/types/IBrowser.d.ts.map +1 -1
  36. package/cjs/browser/types/IBrowserFrame.d.ts +0 -3
  37. package/cjs/browser/types/IBrowserFrame.d.ts.map +1 -1
  38. package/cjs/browser/types/IBrowserSettings.d.ts +1 -0
  39. package/cjs/browser/types/IBrowserSettings.d.ts.map +1 -1
  40. package/cjs/browser/utilities/BrowserExceptionObserver.cjs +100 -0
  41. package/cjs/browser/utilities/BrowserExceptionObserver.cjs.map +1 -0
  42. package/{lib/browser/utilities/BrowserFrameExceptionObserver.d.ts → cjs/browser/utilities/BrowserExceptionObserver.d.ts} +9 -7
  43. package/cjs/browser/utilities/BrowserExceptionObserver.d.ts.map +1 -0
  44. package/cjs/browser/utilities/BrowserFrameFactory.cjs +27 -35
  45. package/cjs/browser/utilities/BrowserFrameFactory.cjs.map +1 -1
  46. package/cjs/browser/utilities/BrowserFrameFactory.d.ts.map +1 -1
  47. package/cjs/browser/utilities/BrowserFrameNavigator.cjs +52 -29
  48. package/cjs/browser/utilities/BrowserFrameNavigator.cjs.map +1 -1
  49. package/cjs/browser/utilities/BrowserFrameNavigator.d.ts.map +1 -1
  50. package/cjs/clipboard/Clipboard.cjs +18 -15
  51. package/cjs/clipboard/Clipboard.cjs.map +1 -1
  52. package/cjs/clipboard/Clipboard.d.ts +2 -2
  53. package/cjs/clipboard/Clipboard.d.ts.map +1 -1
  54. package/cjs/css/declaration/AbstractCSSStyleDeclaration.cjs +27 -4
  55. package/cjs/css/declaration/AbstractCSSStyleDeclaration.cjs.map +1 -1
  56. package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.cjs +6 -5
  57. package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.cjs.map +1 -1
  58. package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.d.ts.map +1 -1
  59. package/cjs/css/declaration/measurement-converter/CSSMeasurementConverter.cjs +5 -5
  60. package/cjs/css/declaration/measurement-converter/CSSMeasurementConverter.cjs.map +1 -1
  61. package/cjs/css/declaration/measurement-converter/CSSMeasurementConverter.d.ts +2 -2
  62. package/cjs/css/declaration/measurement-converter/CSSMeasurementConverter.d.ts.map +1 -1
  63. package/cjs/custom-element/CustomElementRegistry.cjs +37 -17
  64. package/cjs/custom-element/CustomElementRegistry.cjs.map +1 -1
  65. package/cjs/custom-element/CustomElementRegistry.d.ts +2 -3
  66. package/cjs/custom-element/CustomElementRegistry.d.ts.map +1 -1
  67. package/cjs/dom-implementation/DOMImplementation.cjs +12 -7
  68. package/cjs/dom-implementation/DOMImplementation.cjs.map +1 -1
  69. package/cjs/dom-implementation/DOMImplementation.d.ts +7 -3
  70. package/cjs/dom-implementation/DOMImplementation.d.ts.map +1 -1
  71. package/cjs/dom-parser/DOMParser.cjs +6 -15
  72. package/cjs/dom-parser/DOMParser.cjs.map +1 -1
  73. package/cjs/dom-parser/DOMParser.d.ts +2 -6
  74. package/cjs/dom-parser/DOMParser.d.ts.map +1 -1
  75. package/cjs/event/Event.cjs +76 -18
  76. package/cjs/event/Event.cjs.map +1 -1
  77. package/cjs/event/Event.d.ts +49 -7
  78. package/cjs/event/Event.d.ts.map +1 -1
  79. package/cjs/event/EventTarget.cjs +153 -141
  80. package/cjs/event/EventTarget.cjs.map +1 -1
  81. package/cjs/event/EventTarget.d.ts +12 -8
  82. package/cjs/event/EventTarget.d.ts.map +1 -1
  83. package/cjs/event/MessagePort.cjs.map +1 -1
  84. package/cjs/event/MessagePort.d.ts +1 -2
  85. package/cjs/event/MessagePort.d.ts.map +1 -1
  86. package/cjs/event/{IEventListener.cjs → TEventListener.cjs} +1 -1
  87. package/cjs/event/TEventListener.cjs.map +1 -0
  88. package/cjs/event/TEventListener.d.ts +5 -0
  89. package/cjs/event/TEventListener.d.ts.map +1 -0
  90. package/cjs/event/TEventListenerFunction.cjs +3 -0
  91. package/cjs/event/TEventListenerFunction.cjs.map +1 -0
  92. package/cjs/event/TEventListenerFunction.d.ts +4 -0
  93. package/cjs/event/TEventListenerFunction.d.ts.map +1 -0
  94. package/cjs/event/{IMessagePort.cjs → TEventListenerObject.cjs} +1 -1
  95. package/cjs/event/TEventListenerObject.cjs.map +1 -0
  96. package/cjs/event/TEventListenerObject.d.ts +6 -0
  97. package/cjs/event/TEventListenerObject.d.ts.map +1 -0
  98. package/cjs/event/events/CustomEvent.cjs +38 -6
  99. package/cjs/event/events/CustomEvent.cjs.map +1 -1
  100. package/cjs/event/events/CustomEvent.d.ts +8 -1
  101. package/cjs/event/events/CustomEvent.d.ts.map +1 -1
  102. package/cjs/event/events/IErrorEventInit.d.ts.map +1 -1
  103. package/cjs/event/events/IMessageEventInit.d.ts +2 -2
  104. package/cjs/event/events/IMessageEventInit.d.ts.map +1 -1
  105. package/cjs/event/events/MessageEvent.cjs.map +1 -1
  106. package/cjs/event/events/MessageEvent.d.ts +2 -2
  107. package/cjs/event/events/MessageEvent.d.ts.map +1 -1
  108. package/cjs/fetch/AbortController.cjs +2 -11
  109. package/cjs/fetch/AbortController.cjs.map +1 -1
  110. package/cjs/fetch/AbortController.d.ts +3 -4
  111. package/cjs/fetch/AbortController.d.ts.map +1 -1
  112. package/cjs/fetch/AbortSignal.cjs +48 -4
  113. package/cjs/fetch/AbortSignal.cjs.map +1 -1
  114. package/cjs/fetch/AbortSignal.d.ts +19 -0
  115. package/cjs/fetch/AbortSignal.d.ts.map +1 -1
  116. package/cjs/fetch/Fetch.cjs +24 -14
  117. package/cjs/fetch/Fetch.cjs.map +1 -1
  118. package/cjs/fetch/Fetch.d.ts.map +1 -1
  119. package/cjs/fetch/Request.cjs +62 -45
  120. package/cjs/fetch/Request.cjs.map +1 -1
  121. package/cjs/fetch/Request.d.ts +3 -14
  122. package/cjs/fetch/Request.d.ts.map +1 -1
  123. package/cjs/fetch/ResourceFetch.cjs +2 -3
  124. package/cjs/fetch/ResourceFetch.cjs.map +1 -1
  125. package/cjs/fetch/ResourceFetch.d.ts.map +1 -1
  126. package/cjs/fetch/Response.cjs +63 -40
  127. package/cjs/fetch/Response.cjs.map +1 -1
  128. package/cjs/fetch/Response.d.ts +3 -10
  129. package/cjs/fetch/Response.d.ts.map +1 -1
  130. package/cjs/fetch/SyncFetch.cjs +12 -13
  131. package/cjs/fetch/SyncFetch.cjs.map +1 -1
  132. package/cjs/fetch/SyncFetch.d.ts.map +1 -1
  133. package/cjs/fetch/multipart/MultipartFormDataParser.cjs +12 -6
  134. package/cjs/fetch/multipart/MultipartFormDataParser.cjs.map +1 -1
  135. package/cjs/fetch/multipart/MultipartFormDataParser.d.ts +3 -1
  136. package/cjs/fetch/multipart/MultipartFormDataParser.d.ts.map +1 -1
  137. package/cjs/fetch/multipart/MultipartReader.cjs +5 -3
  138. package/cjs/fetch/multipart/MultipartReader.cjs.map +1 -1
  139. package/cjs/fetch/multipart/MultipartReader.d.ts +4 -1
  140. package/cjs/fetch/multipart/MultipartReader.d.ts.map +1 -1
  141. package/cjs/fetch/utilities/FetchBodyUtility.cjs +10 -5
  142. package/cjs/fetch/utilities/FetchBodyUtility.cjs.map +1 -1
  143. package/cjs/fetch/utilities/FetchBodyUtility.d.ts +5 -2
  144. package/cjs/fetch/utilities/FetchBodyUtility.d.ts.map +1 -1
  145. package/cjs/file/FileReader.cjs +11 -11
  146. package/cjs/file/FileReader.cjs.map +1 -1
  147. package/cjs/file/FileReader.d.ts +1 -4
  148. package/cjs/file/FileReader.d.ts.map +1 -1
  149. package/cjs/history/History.cjs +28 -14
  150. package/cjs/history/History.cjs.map +1 -1
  151. package/cjs/history/History.d.ts +2 -2
  152. package/cjs/history/History.d.ts.map +1 -1
  153. package/cjs/index.d.ts +2 -2
  154. package/cjs/location/Location.cjs +43 -22
  155. package/cjs/location/Location.cjs.map +1 -1
  156. package/cjs/location/Location.d.ts +4 -0
  157. package/cjs/location/Location.d.ts.map +1 -1
  158. package/cjs/match-media/MediaQueryItem.cjs +26 -26
  159. package/cjs/match-media/MediaQueryItem.cjs.map +1 -1
  160. package/cjs/match-media/MediaQueryItem.d.ts +3 -3
  161. package/cjs/match-media/MediaQueryItem.d.ts.map +1 -1
  162. package/cjs/match-media/MediaQueryList.cjs +7 -7
  163. package/cjs/match-media/MediaQueryList.cjs.map +1 -1
  164. package/cjs/match-media/MediaQueryList.d.ts +5 -5
  165. package/cjs/match-media/MediaQueryList.d.ts.map +1 -1
  166. package/cjs/match-media/MediaQueryParser.cjs +4 -4
  167. package/cjs/match-media/MediaQueryParser.cjs.map +1 -1
  168. package/cjs/match-media/MediaQueryParser.d.ts +2 -2
  169. package/cjs/match-media/MediaQueryParser.d.ts.map +1 -1
  170. package/cjs/mutation-observer/MutationObserver.cjs +17 -15
  171. package/cjs/mutation-observer/MutationObserver.cjs.map +1 -1
  172. package/cjs/mutation-observer/MutationObserver.d.ts +3 -0
  173. package/cjs/mutation-observer/MutationObserver.d.ts.map +1 -1
  174. package/cjs/navigator/Navigator.cjs +13 -10
  175. package/cjs/navigator/Navigator.cjs.map +1 -1
  176. package/cjs/navigator/Navigator.d.ts +2 -2
  177. package/cjs/navigator/Navigator.d.ts.map +1 -1
  178. package/cjs/nodes/NodeFactory.cjs +1 -1
  179. package/cjs/nodes/NodeFactory.cjs.map +1 -1
  180. package/cjs/nodes/document/Document.cjs +69 -51
  181. package/cjs/nodes/document/Document.cjs.map +1 -1
  182. package/cjs/nodes/document/Document.d.ts +9 -16
  183. package/cjs/nodes/document/Document.d.ts.map +1 -1
  184. package/cjs/nodes/document/DocumentReadyStateManager.cjs +12 -10
  185. package/cjs/nodes/document/DocumentReadyStateManager.cjs.map +1 -1
  186. package/cjs/nodes/document/DocumentReadyStateManager.d.ts.map +1 -1
  187. package/cjs/nodes/element/Element.cjs +33 -20
  188. package/cjs/nodes/element/Element.cjs.map +1 -1
  189. package/cjs/nodes/element/Element.d.ts +7 -3
  190. package/cjs/nodes/element/Element.d.ts.map +1 -1
  191. package/cjs/nodes/element/HTMLCollection.cjs +1 -4
  192. package/cjs/nodes/element/HTMLCollection.cjs.map +1 -1
  193. package/cjs/nodes/element/HTMLCollection.d.ts.map +1 -1
  194. package/cjs/nodes/element/NamedNodeMap.cjs +4 -0
  195. package/cjs/nodes/element/NamedNodeMap.cjs.map +1 -1
  196. package/cjs/nodes/element/NamedNodeMap.d.ts.map +1 -1
  197. package/cjs/nodes/element/NamedNodeMapProxyFactory.cjs +0 -9
  198. package/cjs/nodes/element/NamedNodeMapProxyFactory.cjs.map +1 -1
  199. package/cjs/nodes/element/NamedNodeMapProxyFactory.d.ts.map +1 -1
  200. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs +5 -5
  201. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs.map +1 -1
  202. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
  203. package/cjs/nodes/html-area-element/HTMLAreaElement.cjs +7 -8
  204. package/cjs/nodes/html-area-element/HTMLAreaElement.cjs.map +1 -1
  205. package/cjs/nodes/html-area-element/HTMLAreaElement.d.ts.map +1 -1
  206. package/cjs/nodes/html-audio-element/Audio.cjs +28 -0
  207. package/cjs/nodes/html-audio-element/Audio.cjs.map +1 -1
  208. package/cjs/nodes/html-audio-element/Audio.d.ts +4 -0
  209. package/cjs/nodes/html-audio-element/Audio.d.ts.map +1 -1
  210. package/cjs/nodes/html-button-element/HTMLButtonElement.cjs +63 -35
  211. package/cjs/nodes/html-button-element/HTMLButtonElement.cjs.map +1 -1
  212. package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts +27 -3
  213. package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
  214. package/cjs/nodes/html-canvas-element/HTMLCanvasElement.cjs +2 -4
  215. package/cjs/nodes/html-canvas-element/HTMLCanvasElement.cjs.map +1 -1
  216. package/cjs/nodes/html-canvas-element/HTMLCanvasElement.d.ts.map +1 -1
  217. package/cjs/nodes/html-document/HTMLDocument.cjs +2 -6
  218. package/cjs/nodes/html-document/HTMLDocument.cjs.map +1 -1
  219. package/cjs/nodes/html-document/HTMLDocument.d.ts +1 -10
  220. package/cjs/nodes/html-document/HTMLDocument.d.ts.map +1 -1
  221. package/cjs/nodes/html-element/HTMLElement.cjs +130 -89
  222. package/cjs/nodes/html-element/HTMLElement.cjs.map +1 -1
  223. package/cjs/nodes/html-element/HTMLElement.d.ts +14 -2
  224. package/cjs/nodes/html-element/HTMLElement.d.ts.map +1 -1
  225. package/cjs/nodes/html-form-element/HTMLFormElement.cjs +6 -7
  226. package/cjs/nodes/html-form-element/HTMLFormElement.cjs.map +1 -1
  227. package/cjs/nodes/html-form-element/HTMLFormElement.d.ts +1 -3
  228. package/cjs/nodes/html-form-element/HTMLFormElement.d.ts.map +1 -1
  229. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs +30 -38
  230. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs.map +1 -1
  231. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts +0 -6
  232. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
  233. package/cjs/nodes/html-image-element/Image.cjs +28 -0
  234. package/cjs/nodes/html-image-element/Image.cjs.map +1 -1
  235. package/cjs/nodes/html-image-element/Image.d.ts +4 -0
  236. package/cjs/nodes/html-image-element/Image.d.ts.map +1 -1
  237. package/cjs/nodes/html-input-element/HTMLInputElement.cjs +88 -56
  238. package/cjs/nodes/html-input-element/HTMLInputElement.cjs.map +1 -1
  239. package/cjs/nodes/html-input-element/HTMLInputElement.d.ts +25 -0
  240. package/cjs/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
  241. package/cjs/nodes/html-label-element/HTMLLabelElement.cjs +4 -3
  242. package/cjs/nodes/html-label-element/HTMLLabelElement.cjs.map +1 -1
  243. package/cjs/nodes/html-label-element/HTMLLabelElement.d.ts +8 -1
  244. package/cjs/nodes/html-label-element/HTMLLabelElement.d.ts.map +1 -1
  245. package/cjs/nodes/html-link-element/HTMLLinkElement.cjs +10 -16
  246. package/cjs/nodes/html-link-element/HTMLLinkElement.cjs.map +1 -1
  247. package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts +0 -6
  248. package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
  249. package/cjs/nodes/html-media-element/HTMLMediaElement.cjs +12 -16
  250. package/cjs/nodes/html-media-element/HTMLMediaElement.cjs.map +1 -1
  251. package/cjs/nodes/html-media-element/HTMLMediaElement.d.ts.map +1 -1
  252. package/cjs/nodes/html-media-element/MediaStream.cjs +3 -0
  253. package/cjs/nodes/html-media-element/MediaStream.cjs.map +1 -1
  254. package/cjs/nodes/html-media-element/MediaStream.d.ts.map +1 -1
  255. package/cjs/nodes/html-media-element/MediaStreamTrack.cjs +3 -0
  256. package/cjs/nodes/html-media-element/MediaStreamTrack.cjs.map +1 -1
  257. package/cjs/nodes/html-media-element/MediaStreamTrack.d.ts.map +1 -1
  258. package/cjs/nodes/html-media-element/TextTrack.cjs +3 -0
  259. package/cjs/nodes/html-media-element/TextTrack.cjs.map +1 -1
  260. package/cjs/nodes/html-media-element/TextTrack.d.ts.map +1 -1
  261. package/cjs/nodes/html-media-element/TextTrackCue.cjs +3 -0
  262. package/cjs/nodes/html-media-element/TextTrackCue.cjs.map +1 -1
  263. package/cjs/nodes/html-media-element/TextTrackCue.d.ts.map +1 -1
  264. package/cjs/nodes/html-media-element/VTTCue.cjs +7 -8
  265. package/cjs/nodes/html-media-element/VTTCue.cjs.map +1 -1
  266. package/cjs/nodes/html-media-element/VTTCue.d.ts +1 -4
  267. package/cjs/nodes/html-media-element/VTTCue.d.ts.map +1 -1
  268. package/cjs/nodes/html-meter-element/HTMLMeterElement.cjs +30 -6
  269. package/cjs/nodes/html-meter-element/HTMLMeterElement.cjs.map +1 -1
  270. package/cjs/nodes/html-meter-element/HTMLMeterElement.d.ts.map +1 -1
  271. package/cjs/nodes/html-progress-element/HTMLProgressElement.cjs +26 -2
  272. package/cjs/nodes/html-progress-element/HTMLProgressElement.cjs.map +1 -1
  273. package/cjs/nodes/html-progress-element/HTMLProgressElement.d.ts.map +1 -1
  274. package/cjs/nodes/html-script-element/HTMLScriptElement.cjs +21 -27
  275. package/cjs/nodes/html-script-element/HTMLScriptElement.cjs.map +1 -1
  276. package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts +0 -6
  277. package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
  278. package/cjs/nodes/html-select-element/HTMLSelectElement.cjs +5 -5
  279. package/cjs/nodes/html-select-element/HTMLSelectElement.cjs.map +1 -1
  280. package/cjs/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
  281. package/cjs/nodes/html-table-element/HTMLTableElement.cjs +8 -9
  282. package/cjs/nodes/html-table-element/HTMLTableElement.cjs.map +1 -1
  283. package/cjs/nodes/html-table-element/HTMLTableElement.d.ts.map +1 -1
  284. package/cjs/nodes/html-table-row-element/HTMLTableRowElement.cjs +5 -6
  285. package/cjs/nodes/html-table-row-element/HTMLTableRowElement.cjs.map +1 -1
  286. package/cjs/nodes/html-table-row-element/HTMLTableRowElement.d.ts.map +1 -1
  287. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.cjs +1 -2
  288. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.cjs.map +1 -1
  289. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
  290. package/cjs/nodes/html-track-element/HTMLTrackElement.cjs +1 -2
  291. package/cjs/nodes/html-track-element/HTMLTrackElement.cjs.map +1 -1
  292. package/cjs/nodes/node/Node.cjs +23 -22
  293. package/cjs/nodes/node/Node.cjs.map +1 -1
  294. package/cjs/nodes/node/Node.d.ts +1 -2
  295. package/cjs/nodes/node/Node.d.ts.map +1 -1
  296. package/cjs/nodes/node/NodeList.cjs +4 -6
  297. package/cjs/nodes/node/NodeList.cjs.map +1 -1
  298. package/cjs/nodes/node/NodeList.d.ts.map +1 -1
  299. package/cjs/nodes/text/Text.cjs +1 -2
  300. package/cjs/nodes/text/Text.cjs.map +1 -1
  301. package/cjs/nodes/text/Text.d.ts.map +1 -1
  302. package/cjs/permissions/Permissions.cjs +13 -2
  303. package/cjs/permissions/Permissions.cjs.map +1 -1
  304. package/cjs/permissions/Permissions.d.ts +7 -0
  305. package/cjs/permissions/Permissions.d.ts.map +1 -1
  306. package/cjs/query-selector/QuerySelector.cjs +12 -10
  307. package/cjs/query-selector/QuerySelector.cjs.map +1 -1
  308. package/cjs/query-selector/QuerySelector.d.ts.map +1 -1
  309. package/cjs/range/Range.cjs +26 -23
  310. package/cjs/range/Range.cjs.map +1 -1
  311. package/cjs/range/Range.d.ts +2 -2
  312. package/cjs/range/Range.d.ts.map +1 -1
  313. package/cjs/selection/Selection.cjs +16 -17
  314. package/cjs/selection/Selection.cjs.map +1 -1
  315. package/cjs/selection/Selection.d.ts.map +1 -1
  316. package/cjs/window/BrowserWindow.cjs +136 -266
  317. package/cjs/window/BrowserWindow.cjs.map +1 -1
  318. package/cjs/window/BrowserWindow.d.ts +115 -117
  319. package/cjs/window/BrowserWindow.d.ts.map +1 -1
  320. package/cjs/window/VMGlobalPropertyScript.cjs +0 -1
  321. package/cjs/window/VMGlobalPropertyScript.cjs.map +1 -1
  322. package/cjs/window/VMGlobalPropertyScript.d.ts.map +1 -1
  323. package/cjs/window/WindowBrowserContext.cjs +117 -0
  324. package/cjs/window/WindowBrowserContext.cjs.map +1 -0
  325. package/cjs/window/WindowBrowserContext.d.ts +75 -0
  326. package/cjs/window/WindowBrowserContext.d.ts.map +1 -0
  327. package/cjs/window/WindowClassExtender.cjs +332 -0
  328. package/cjs/window/WindowClassExtender.cjs.map +1 -0
  329. package/cjs/window/WindowClassExtender.d.ts +15 -0
  330. package/cjs/window/WindowClassExtender.d.ts.map +1 -0
  331. package/cjs/window/WindowPageOpenUtility.cjs +11 -1
  332. package/cjs/window/WindowPageOpenUtility.cjs.map +1 -1
  333. package/cjs/window/WindowPageOpenUtility.d.ts.map +1 -1
  334. package/cjs/xml-http-request/XMLHttpRequest.cjs +33 -33
  335. package/cjs/xml-http-request/XMLHttpRequest.cjs.map +1 -1
  336. package/cjs/xml-http-request/XMLHttpRequest.d.ts +2 -11
  337. package/cjs/xml-http-request/XMLHttpRequest.d.ts.map +1 -1
  338. package/lib/ClassMethodBinder.d.ts +4 -2
  339. package/lib/ClassMethodBinder.d.ts.map +1 -1
  340. package/lib/ClassMethodBinder.js +8 -6
  341. package/lib/ClassMethodBinder.js.map +1 -1
  342. package/lib/PropertySymbol.d.ts +15 -4
  343. package/lib/PropertySymbol.d.ts.map +1 -1
  344. package/lib/PropertySymbol.js +15 -4
  345. package/lib/PropertySymbol.js.map +1 -1
  346. package/lib/async-task-manager/AsyncTaskManager.d.ts +11 -1
  347. package/lib/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
  348. package/lib/async-task-manager/AsyncTaskManager.js +64 -35
  349. package/lib/async-task-manager/AsyncTaskManager.js.map +1 -1
  350. package/lib/browser/Browser.d.ts +3 -0
  351. package/lib/browser/Browser.d.ts.map +1 -1
  352. package/lib/browser/Browser.js +7 -0
  353. package/lib/browser/Browser.js.map +1 -1
  354. package/lib/browser/BrowserFrame.d.ts +1 -4
  355. package/lib/browser/BrowserFrame.d.ts.map +1 -1
  356. package/lib/browser/BrowserFrame.js +3 -7
  357. package/lib/browser/BrowserFrame.js.map +1 -1
  358. package/lib/browser/DefaultBrowserSettings.d.ts.map +1 -1
  359. package/lib/browser/DefaultBrowserSettings.js +2 -1
  360. package/lib/browser/DefaultBrowserSettings.js.map +1 -1
  361. package/lib/browser/detached-browser/DetachedBrowser.d.ts +3 -0
  362. package/lib/browser/detached-browser/DetachedBrowser.d.ts.map +1 -1
  363. package/lib/browser/detached-browser/DetachedBrowser.js +7 -0
  364. package/lib/browser/detached-browser/DetachedBrowser.js.map +1 -1
  365. package/lib/browser/detached-browser/DetachedBrowserFrame.d.ts +1 -4
  366. package/lib/browser/detached-browser/DetachedBrowserFrame.d.ts.map +1 -1
  367. package/lib/browser/detached-browser/DetachedBrowserFrame.js +3 -7
  368. package/lib/browser/detached-browser/DetachedBrowserFrame.js.map +1 -1
  369. package/lib/browser/types/IBrowser.d.ts +3 -0
  370. package/lib/browser/types/IBrowser.d.ts.map +1 -1
  371. package/lib/browser/types/IBrowser.js +1 -1
  372. package/lib/browser/types/IBrowser.js.map +1 -1
  373. package/lib/browser/types/IBrowserFrame.d.ts +0 -3
  374. package/lib/browser/types/IBrowserFrame.d.ts.map +1 -1
  375. package/lib/browser/types/IBrowserSettings.d.ts +1 -0
  376. package/lib/browser/types/IBrowserSettings.d.ts.map +1 -1
  377. package/{cjs/browser/utilities/BrowserFrameExceptionObserver.d.ts → lib/browser/utilities/BrowserExceptionObserver.d.ts} +9 -7
  378. package/lib/browser/utilities/BrowserExceptionObserver.d.ts.map +1 -0
  379. package/lib/browser/utilities/BrowserExceptionObserver.js +97 -0
  380. package/lib/browser/utilities/BrowserExceptionObserver.js.map +1 -0
  381. package/lib/browser/utilities/BrowserFrameFactory.d.ts.map +1 -1
  382. package/lib/browser/utilities/BrowserFrameFactory.js +27 -35
  383. package/lib/browser/utilities/BrowserFrameFactory.js.map +1 -1
  384. package/lib/browser/utilities/BrowserFrameNavigator.d.ts.map +1 -1
  385. package/lib/browser/utilities/BrowserFrameNavigator.js +52 -29
  386. package/lib/browser/utilities/BrowserFrameNavigator.js.map +1 -1
  387. package/lib/clipboard/Clipboard.d.ts +2 -2
  388. package/lib/clipboard/Clipboard.d.ts.map +1 -1
  389. package/lib/clipboard/Clipboard.js +18 -15
  390. package/lib/clipboard/Clipboard.js.map +1 -1
  391. package/lib/css/declaration/AbstractCSSStyleDeclaration.js +4 -4
  392. package/lib/css/declaration/AbstractCSSStyleDeclaration.js.map +1 -1
  393. package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.d.ts.map +1 -1
  394. package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.js +6 -5
  395. package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.js.map +1 -1
  396. package/lib/css/declaration/measurement-converter/CSSMeasurementConverter.d.ts +2 -2
  397. package/lib/css/declaration/measurement-converter/CSSMeasurementConverter.d.ts.map +1 -1
  398. package/lib/css/declaration/measurement-converter/CSSMeasurementConverter.js +5 -5
  399. package/lib/css/declaration/measurement-converter/CSSMeasurementConverter.js.map +1 -1
  400. package/lib/custom-element/CustomElementRegistry.d.ts +2 -3
  401. package/lib/custom-element/CustomElementRegistry.d.ts.map +1 -1
  402. package/lib/custom-element/CustomElementRegistry.js +37 -17
  403. package/lib/custom-element/CustomElementRegistry.js.map +1 -1
  404. package/lib/dom-implementation/DOMImplementation.d.ts +7 -3
  405. package/lib/dom-implementation/DOMImplementation.d.ts.map +1 -1
  406. package/lib/dom-implementation/DOMImplementation.js +12 -7
  407. package/lib/dom-implementation/DOMImplementation.js.map +1 -1
  408. package/lib/dom-parser/DOMParser.d.ts +2 -6
  409. package/lib/dom-parser/DOMParser.d.ts.map +1 -1
  410. package/lib/dom-parser/DOMParser.js +6 -15
  411. package/lib/dom-parser/DOMParser.js.map +1 -1
  412. package/lib/event/Event.d.ts +49 -7
  413. package/lib/event/Event.d.ts.map +1 -1
  414. package/lib/event/Event.js +76 -18
  415. package/lib/event/Event.js.map +1 -1
  416. package/lib/event/EventTarget.d.ts +12 -8
  417. package/lib/event/EventTarget.d.ts.map +1 -1
  418. package/lib/event/EventTarget.js +153 -141
  419. package/lib/event/EventTarget.js.map +1 -1
  420. package/lib/event/MessagePort.d.ts +1 -2
  421. package/lib/event/MessagePort.d.ts.map +1 -1
  422. package/lib/event/MessagePort.js.map +1 -1
  423. package/lib/event/TEventListener.d.ts +5 -0
  424. package/lib/event/TEventListener.d.ts.map +1 -0
  425. package/lib/event/TEventListener.js +2 -0
  426. package/lib/event/TEventListener.js.map +1 -0
  427. package/lib/event/TEventListenerFunction.d.ts +4 -0
  428. package/lib/event/TEventListenerFunction.d.ts.map +1 -0
  429. package/lib/event/TEventListenerFunction.js +2 -0
  430. package/lib/event/TEventListenerFunction.js.map +1 -0
  431. package/lib/event/TEventListenerObject.d.ts +6 -0
  432. package/lib/event/TEventListenerObject.d.ts.map +1 -0
  433. package/lib/event/TEventListenerObject.js +2 -0
  434. package/lib/event/TEventListenerObject.js.map +1 -0
  435. package/lib/event/events/CustomEvent.d.ts +8 -1
  436. package/lib/event/events/CustomEvent.d.ts.map +1 -1
  437. package/lib/event/events/CustomEvent.js +15 -6
  438. package/lib/event/events/CustomEvent.js.map +1 -1
  439. package/lib/event/events/IErrorEventInit.d.ts.map +1 -1
  440. package/lib/event/events/IMessageEventInit.d.ts +2 -2
  441. package/lib/event/events/IMessageEventInit.d.ts.map +1 -1
  442. package/lib/event/events/MessageEvent.d.ts +2 -2
  443. package/lib/event/events/MessageEvent.d.ts.map +1 -1
  444. package/lib/event/events/MessageEvent.js.map +1 -1
  445. package/lib/fetch/AbortController.d.ts +3 -4
  446. package/lib/fetch/AbortController.d.ts.map +1 -1
  447. package/lib/fetch/AbortController.js +2 -8
  448. package/lib/fetch/AbortController.js.map +1 -1
  449. package/lib/fetch/AbortSignal.d.ts +19 -0
  450. package/lib/fetch/AbortSignal.d.ts.map +1 -1
  451. package/lib/fetch/AbortSignal.js +48 -4
  452. package/lib/fetch/AbortSignal.js.map +1 -1
  453. package/lib/fetch/Fetch.d.ts.map +1 -1
  454. package/lib/fetch/Fetch.js +24 -14
  455. package/lib/fetch/Fetch.js.map +1 -1
  456. package/lib/fetch/Request.d.ts +3 -14
  457. package/lib/fetch/Request.d.ts.map +1 -1
  458. package/lib/fetch/Request.js +62 -45
  459. package/lib/fetch/Request.js.map +1 -1
  460. package/lib/fetch/ResourceFetch.d.ts.map +1 -1
  461. package/lib/fetch/ResourceFetch.js +2 -3
  462. package/lib/fetch/ResourceFetch.js.map +1 -1
  463. package/lib/fetch/Response.d.ts +3 -10
  464. package/lib/fetch/Response.d.ts.map +1 -1
  465. package/lib/fetch/Response.js +63 -40
  466. package/lib/fetch/Response.js.map +1 -1
  467. package/lib/fetch/SyncFetch.d.ts.map +1 -1
  468. package/lib/fetch/SyncFetch.js +12 -13
  469. package/lib/fetch/SyncFetch.js.map +1 -1
  470. package/lib/fetch/multipart/MultipartFormDataParser.d.ts +3 -1
  471. package/lib/fetch/multipart/MultipartFormDataParser.d.ts.map +1 -1
  472. package/lib/fetch/multipart/MultipartFormDataParser.js +12 -6
  473. package/lib/fetch/multipart/MultipartFormDataParser.js.map +1 -1
  474. package/lib/fetch/multipart/MultipartReader.d.ts +4 -1
  475. package/lib/fetch/multipart/MultipartReader.d.ts.map +1 -1
  476. package/lib/fetch/multipart/MultipartReader.js +5 -3
  477. package/lib/fetch/multipart/MultipartReader.js.map +1 -1
  478. package/lib/fetch/utilities/FetchBodyUtility.d.ts +5 -2
  479. package/lib/fetch/utilities/FetchBodyUtility.d.ts.map +1 -1
  480. package/lib/fetch/utilities/FetchBodyUtility.js +10 -5
  481. package/lib/fetch/utilities/FetchBodyUtility.js.map +1 -1
  482. package/lib/file/FileReader.d.ts +1 -4
  483. package/lib/file/FileReader.d.ts.map +1 -1
  484. package/lib/file/FileReader.js +11 -11
  485. package/lib/file/FileReader.js.map +1 -1
  486. package/lib/history/History.d.ts +2 -2
  487. package/lib/history/History.d.ts.map +1 -1
  488. package/lib/history/History.js +28 -14
  489. package/lib/history/History.js.map +1 -1
  490. package/lib/index.d.ts +2 -2
  491. package/lib/location/Location.d.ts +4 -0
  492. package/lib/location/Location.d.ts.map +1 -1
  493. package/lib/location/Location.js +43 -22
  494. package/lib/location/Location.js.map +1 -1
  495. package/lib/match-media/MediaQueryItem.d.ts +3 -3
  496. package/lib/match-media/MediaQueryItem.d.ts.map +1 -1
  497. package/lib/match-media/MediaQueryItem.js +26 -26
  498. package/lib/match-media/MediaQueryItem.js.map +1 -1
  499. package/lib/match-media/MediaQueryList.d.ts +5 -5
  500. package/lib/match-media/MediaQueryList.d.ts.map +1 -1
  501. package/lib/match-media/MediaQueryList.js +7 -7
  502. package/lib/match-media/MediaQueryList.js.map +1 -1
  503. package/lib/match-media/MediaQueryParser.d.ts +2 -2
  504. package/lib/match-media/MediaQueryParser.d.ts.map +1 -1
  505. package/lib/match-media/MediaQueryParser.js +4 -4
  506. package/lib/match-media/MediaQueryParser.js.map +1 -1
  507. package/lib/mutation-observer/MutationObserver.d.ts +3 -0
  508. package/lib/mutation-observer/MutationObserver.d.ts.map +1 -1
  509. package/lib/mutation-observer/MutationObserver.js +17 -15
  510. package/lib/mutation-observer/MutationObserver.js.map +1 -1
  511. package/lib/navigator/Navigator.d.ts +2 -2
  512. package/lib/navigator/Navigator.d.ts.map +1 -1
  513. package/lib/navigator/Navigator.js +13 -10
  514. package/lib/navigator/Navigator.js.map +1 -1
  515. package/lib/nodes/NodeFactory.js +1 -1
  516. package/lib/nodes/NodeFactory.js.map +1 -1
  517. package/lib/nodes/document/Document.d.ts +9 -16
  518. package/lib/nodes/document/Document.d.ts.map +1 -1
  519. package/lib/nodes/document/Document.js +69 -51
  520. package/lib/nodes/document/Document.js.map +1 -1
  521. package/lib/nodes/document/DocumentReadyStateManager.d.ts.map +1 -1
  522. package/lib/nodes/document/DocumentReadyStateManager.js +12 -10
  523. package/lib/nodes/document/DocumentReadyStateManager.js.map +1 -1
  524. package/lib/nodes/element/Element.d.ts +7 -3
  525. package/lib/nodes/element/Element.d.ts.map +1 -1
  526. package/lib/nodes/element/Element.js +33 -20
  527. package/lib/nodes/element/Element.js.map +1 -1
  528. package/lib/nodes/element/HTMLCollection.d.ts.map +1 -1
  529. package/lib/nodes/element/HTMLCollection.js +1 -4
  530. package/lib/nodes/element/HTMLCollection.js.map +1 -1
  531. package/lib/nodes/element/NamedNodeMap.d.ts.map +1 -1
  532. package/lib/nodes/element/NamedNodeMap.js +4 -0
  533. package/lib/nodes/element/NamedNodeMap.js.map +1 -1
  534. package/lib/nodes/element/NamedNodeMapProxyFactory.d.ts.map +1 -1
  535. package/lib/nodes/element/NamedNodeMapProxyFactory.js +0 -6
  536. package/lib/nodes/element/NamedNodeMapProxyFactory.js.map +1 -1
  537. package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
  538. package/lib/nodes/html-anchor-element/HTMLAnchorElement.js +5 -5
  539. package/lib/nodes/html-anchor-element/HTMLAnchorElement.js.map +1 -1
  540. package/lib/nodes/html-area-element/HTMLAreaElement.d.ts.map +1 -1
  541. package/lib/nodes/html-area-element/HTMLAreaElement.js +7 -8
  542. package/lib/nodes/html-area-element/HTMLAreaElement.js.map +1 -1
  543. package/lib/nodes/html-audio-element/Audio.d.ts +4 -0
  544. package/lib/nodes/html-audio-element/Audio.d.ts.map +1 -1
  545. package/lib/nodes/html-audio-element/Audio.js +5 -0
  546. package/lib/nodes/html-audio-element/Audio.js.map +1 -1
  547. package/lib/nodes/html-button-element/HTMLButtonElement.d.ts +27 -3
  548. package/lib/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
  549. package/lib/nodes/html-button-element/HTMLButtonElement.js +63 -35
  550. package/lib/nodes/html-button-element/HTMLButtonElement.js.map +1 -1
  551. package/lib/nodes/html-canvas-element/HTMLCanvasElement.d.ts.map +1 -1
  552. package/lib/nodes/html-canvas-element/HTMLCanvasElement.js +2 -4
  553. package/lib/nodes/html-canvas-element/HTMLCanvasElement.js.map +1 -1
  554. package/lib/nodes/html-document/HTMLDocument.d.ts +1 -10
  555. package/lib/nodes/html-document/HTMLDocument.d.ts.map +1 -1
  556. package/lib/nodes/html-document/HTMLDocument.js +2 -6
  557. package/lib/nodes/html-document/HTMLDocument.js.map +1 -1
  558. package/lib/nodes/html-element/HTMLElement.d.ts +14 -2
  559. package/lib/nodes/html-element/HTMLElement.d.ts.map +1 -1
  560. package/lib/nodes/html-element/HTMLElement.js +130 -89
  561. package/lib/nodes/html-element/HTMLElement.js.map +1 -1
  562. package/lib/nodes/html-form-element/HTMLFormElement.d.ts +1 -3
  563. package/lib/nodes/html-form-element/HTMLFormElement.d.ts.map +1 -1
  564. package/lib/nodes/html-form-element/HTMLFormElement.js +6 -7
  565. package/lib/nodes/html-form-element/HTMLFormElement.js.map +1 -1
  566. package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts +0 -6
  567. package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
  568. package/lib/nodes/html-iframe-element/HTMLIFrameElement.js +30 -38
  569. package/lib/nodes/html-iframe-element/HTMLIFrameElement.js.map +1 -1
  570. package/lib/nodes/html-image-element/Image.d.ts +4 -0
  571. package/lib/nodes/html-image-element/Image.d.ts.map +1 -1
  572. package/lib/nodes/html-image-element/Image.js +5 -0
  573. package/lib/nodes/html-image-element/Image.js.map +1 -1
  574. package/lib/nodes/html-input-element/HTMLInputElement.d.ts +25 -0
  575. package/lib/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
  576. package/lib/nodes/html-input-element/HTMLInputElement.js +88 -56
  577. package/lib/nodes/html-input-element/HTMLInputElement.js.map +1 -1
  578. package/lib/nodes/html-label-element/HTMLLabelElement.d.ts +8 -1
  579. package/lib/nodes/html-label-element/HTMLLabelElement.d.ts.map +1 -1
  580. package/lib/nodes/html-label-element/HTMLLabelElement.js +4 -3
  581. package/lib/nodes/html-label-element/HTMLLabelElement.js.map +1 -1
  582. package/lib/nodes/html-link-element/HTMLLinkElement.d.ts +0 -6
  583. package/lib/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
  584. package/lib/nodes/html-link-element/HTMLLinkElement.js +10 -16
  585. package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
  586. package/lib/nodes/html-media-element/HTMLMediaElement.d.ts.map +1 -1
  587. package/lib/nodes/html-media-element/HTMLMediaElement.js +12 -16
  588. package/lib/nodes/html-media-element/HTMLMediaElement.js.map +1 -1
  589. package/lib/nodes/html-media-element/MediaStream.d.ts.map +1 -1
  590. package/lib/nodes/html-media-element/MediaStream.js +3 -0
  591. package/lib/nodes/html-media-element/MediaStream.js.map +1 -1
  592. package/lib/nodes/html-media-element/MediaStreamTrack.d.ts.map +1 -1
  593. package/lib/nodes/html-media-element/MediaStreamTrack.js +3 -0
  594. package/lib/nodes/html-media-element/MediaStreamTrack.js.map +1 -1
  595. package/lib/nodes/html-media-element/TextTrack.d.ts.map +1 -1
  596. package/lib/nodes/html-media-element/TextTrack.js +3 -0
  597. package/lib/nodes/html-media-element/TextTrack.js.map +1 -1
  598. package/lib/nodes/html-media-element/TextTrackCue.d.ts.map +1 -1
  599. package/lib/nodes/html-media-element/TextTrackCue.js +3 -0
  600. package/lib/nodes/html-media-element/TextTrackCue.js.map +1 -1
  601. package/lib/nodes/html-media-element/VTTCue.d.ts +1 -4
  602. package/lib/nodes/html-media-element/VTTCue.d.ts.map +1 -1
  603. package/lib/nodes/html-media-element/VTTCue.js +7 -8
  604. package/lib/nodes/html-media-element/VTTCue.js.map +1 -1
  605. package/lib/nodes/html-meter-element/HTMLMeterElement.d.ts.map +1 -1
  606. package/lib/nodes/html-meter-element/HTMLMeterElement.js +7 -6
  607. package/lib/nodes/html-meter-element/HTMLMeterElement.js.map +1 -1
  608. package/lib/nodes/html-progress-element/HTMLProgressElement.d.ts.map +1 -1
  609. package/lib/nodes/html-progress-element/HTMLProgressElement.js +3 -2
  610. package/lib/nodes/html-progress-element/HTMLProgressElement.js.map +1 -1
  611. package/lib/nodes/html-script-element/HTMLScriptElement.d.ts +0 -6
  612. package/lib/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
  613. package/lib/nodes/html-script-element/HTMLScriptElement.js +21 -27
  614. package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
  615. package/lib/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
  616. package/lib/nodes/html-select-element/HTMLSelectElement.js +5 -5
  617. package/lib/nodes/html-select-element/HTMLSelectElement.js.map +1 -1
  618. package/lib/nodes/html-table-element/HTMLTableElement.d.ts.map +1 -1
  619. package/lib/nodes/html-table-element/HTMLTableElement.js +8 -9
  620. package/lib/nodes/html-table-element/HTMLTableElement.js.map +1 -1
  621. package/lib/nodes/html-table-row-element/HTMLTableRowElement.d.ts.map +1 -1
  622. package/lib/nodes/html-table-row-element/HTMLTableRowElement.js +5 -6
  623. package/lib/nodes/html-table-row-element/HTMLTableRowElement.js.map +1 -1
  624. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
  625. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js +1 -2
  626. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js.map +1 -1
  627. package/lib/nodes/html-track-element/HTMLTrackElement.js +1 -2
  628. package/lib/nodes/html-track-element/HTMLTrackElement.js.map +1 -1
  629. package/lib/nodes/node/Node.d.ts +1 -2
  630. package/lib/nodes/node/Node.d.ts.map +1 -1
  631. package/lib/nodes/node/Node.js +23 -22
  632. package/lib/nodes/node/Node.js.map +1 -1
  633. package/lib/nodes/node/NodeList.d.ts.map +1 -1
  634. package/lib/nodes/node/NodeList.js +4 -6
  635. package/lib/nodes/node/NodeList.js.map +1 -1
  636. package/lib/nodes/text/Text.d.ts.map +1 -1
  637. package/lib/nodes/text/Text.js +1 -2
  638. package/lib/nodes/text/Text.js.map +1 -1
  639. package/lib/permissions/Permissions.d.ts +7 -0
  640. package/lib/permissions/Permissions.d.ts.map +1 -1
  641. package/lib/permissions/Permissions.js +13 -2
  642. package/lib/permissions/Permissions.js.map +1 -1
  643. package/lib/query-selector/QuerySelector.d.ts.map +1 -1
  644. package/lib/query-selector/QuerySelector.js +12 -10
  645. package/lib/query-selector/QuerySelector.js.map +1 -1
  646. package/lib/range/Range.d.ts +2 -2
  647. package/lib/range/Range.d.ts.map +1 -1
  648. package/lib/range/Range.js +26 -23
  649. package/lib/range/Range.js.map +1 -1
  650. package/lib/selection/Selection.d.ts.map +1 -1
  651. package/lib/selection/Selection.js +16 -17
  652. package/lib/selection/Selection.js.map +1 -1
  653. package/lib/window/BrowserWindow.d.ts +115 -117
  654. package/lib/window/BrowserWindow.d.ts.map +1 -1
  655. package/lib/window/BrowserWindow.js +140 -270
  656. package/lib/window/BrowserWindow.js.map +1 -1
  657. package/lib/window/VMGlobalPropertyScript.d.ts.map +1 -1
  658. package/lib/window/VMGlobalPropertyScript.js +0 -1
  659. package/lib/window/VMGlobalPropertyScript.js.map +1 -1
  660. package/lib/window/WindowBrowserContext.d.ts +75 -0
  661. package/lib/window/WindowBrowserContext.d.ts.map +1 -0
  662. package/lib/window/WindowBrowserContext.js +91 -0
  663. package/lib/window/WindowBrowserContext.js.map +1 -0
  664. package/lib/window/WindowClassExtender.d.ts +15 -0
  665. package/lib/window/WindowClassExtender.d.ts.map +1 -0
  666. package/lib/window/WindowClassExtender.js +303 -0
  667. package/lib/window/WindowClassExtender.js.map +1 -0
  668. package/lib/window/WindowPageOpenUtility.d.ts.map +1 -1
  669. package/lib/window/WindowPageOpenUtility.js +11 -1
  670. package/lib/window/WindowPageOpenUtility.js.map +1 -1
  671. package/lib/xml-http-request/XMLHttpRequest.d.ts +2 -11
  672. package/lib/xml-http-request/XMLHttpRequest.d.ts.map +1 -1
  673. package/lib/xml-http-request/XMLHttpRequest.js +33 -33
  674. package/lib/xml-http-request/XMLHttpRequest.js.map +1 -1
  675. package/package.json +1 -1
  676. package/src/ClassMethodBinder.ts +10 -7
  677. package/src/PropertySymbol.ts +15 -4
  678. package/src/async-task-manager/AsyncTaskManager.ts +71 -39
  679. package/src/browser/Browser.ts +7 -0
  680. package/src/browser/BrowserFrame.ts +3 -7
  681. package/src/browser/DefaultBrowserSettings.ts +2 -1
  682. package/src/browser/detached-browser/DetachedBrowser.ts +7 -0
  683. package/src/browser/detached-browser/DetachedBrowserFrame.ts +3 -7
  684. package/src/browser/types/IBrowser.ts +3 -0
  685. package/src/browser/types/IBrowserFrame.ts +0 -3
  686. package/src/browser/types/IBrowserSettings.ts +1 -0
  687. package/src/browser/utilities/BrowserExceptionObserver.ts +125 -0
  688. package/src/browser/utilities/BrowserFrameFactory.ts +29 -33
  689. package/src/browser/utilities/BrowserFrameNavigator.ts +60 -38
  690. package/src/clipboard/Clipboard.ts +20 -14
  691. package/src/css/declaration/AbstractCSSStyleDeclaration.ts +4 -4
  692. package/src/css/declaration/element-style/CSSStyleDeclarationElementStyle.ts +6 -7
  693. package/src/css/declaration/measurement-converter/CSSMeasurementConverter.ts +6 -8
  694. package/src/custom-element/CustomElementRegistry.ts +45 -17
  695. package/src/dom-implementation/DOMImplementation.ts +15 -10
  696. package/src/dom-parser/DOMParser.ts +11 -16
  697. package/src/event/Event.ts +85 -18
  698. package/src/event/EventTarget.ts +200 -185
  699. package/src/event/MessagePort.ts +1 -2
  700. package/src/event/TEventListener.ts +6 -0
  701. package/src/event/TEventListenerFunction.ts +5 -0
  702. package/src/event/TEventListenerObject.ts +7 -0
  703. package/src/event/events/CustomEvent.ts +16 -6
  704. package/src/event/events/IErrorEventInit.ts +0 -1
  705. package/src/event/events/IMessageEventInit.ts +2 -2
  706. package/src/event/events/MessageEvent.ts +2 -2
  707. package/src/fetch/AbortController.ts +5 -7
  708. package/src/fetch/AbortSignal.ts +69 -4
  709. package/src/fetch/Fetch.ts +39 -15
  710. package/src/fetch/Request.ts +83 -55
  711. package/src/fetch/ResourceFetch.ts +2 -3
  712. package/src/fetch/Response.ts +80 -45
  713. package/src/fetch/SyncFetch.ts +15 -13
  714. package/src/fetch/multipart/MultipartFormDataParser.ts +16 -5
  715. package/src/fetch/multipart/MultipartReader.ts +6 -3
  716. package/src/fetch/utilities/FetchBodyUtility.ts +23 -8
  717. package/src/file/FileReader.ts +16 -12
  718. package/src/history/History.ts +31 -14
  719. package/src/index.ts +2 -2
  720. package/src/location/Location.ts +46 -22
  721. package/src/match-media/MediaQueryItem.ts +27 -30
  722. package/src/match-media/MediaQueryList.ts +11 -21
  723. package/src/match-media/MediaQueryParser.ts +5 -5
  724. package/src/mutation-observer/MutationObserver.ts +25 -17
  725. package/src/navigator/Navigator.ts +14 -12
  726. package/src/nodes/NodeFactory.ts +1 -1
  727. package/src/nodes/document/Document.ts +67 -62
  728. package/src/nodes/document/DocumentReadyStateManager.ts +13 -10
  729. package/src/nodes/element/Element.ts +44 -29
  730. package/src/nodes/element/HTMLCollection.ts +1 -4
  731. package/src/nodes/element/NamedNodeMap.ts +4 -0
  732. package/src/nodes/element/NamedNodeMapProxyFactory.ts +0 -6
  733. package/src/nodes/html-anchor-element/HTMLAnchorElement.ts +4 -8
  734. package/src/nodes/html-area-element/HTMLAreaElement.ts +7 -11
  735. package/src/nodes/html-audio-element/Audio.ts +6 -0
  736. package/src/nodes/html-button-element/HTMLButtonElement.ts +67 -37
  737. package/src/nodes/html-canvas-element/HTMLCanvasElement.ts +5 -3
  738. package/src/nodes/html-document/HTMLDocument.ts +2 -8
  739. package/src/nodes/html-element/HTMLElement.ts +151 -129
  740. package/src/nodes/html-form-element/HTMLFormElement.ts +7 -9
  741. package/src/nodes/html-iframe-element/HTMLIFrameElement.ts +31 -42
  742. package/src/nodes/html-image-element/Image.ts +6 -0
  743. package/src/nodes/html-input-element/HTMLInputElement.ts +96 -61
  744. package/src/nodes/html-label-element/HTMLLabelElement.ts +21 -6
  745. package/src/nodes/html-link-element/HTMLLinkElement.ts +12 -19
  746. package/src/nodes/html-media-element/HTMLMediaElement.ts +15 -12
  747. package/src/nodes/html-media-element/MediaStream.ts +6 -0
  748. package/src/nodes/html-media-element/MediaStreamTrack.ts +6 -0
  749. package/src/nodes/html-media-element/TextTrack.ts +6 -0
  750. package/src/nodes/html-media-element/TextTrackCue.ts +6 -0
  751. package/src/nodes/html-media-element/VTTCue.ts +10 -9
  752. package/src/nodes/html-meter-element/HTMLMeterElement.ts +8 -6
  753. package/src/nodes/html-progress-element/HTMLProgressElement.ts +4 -2
  754. package/src/nodes/html-script-element/HTMLScriptElement.ts +25 -45
  755. package/src/nodes/html-select-element/HTMLSelectElement.ts +6 -5
  756. package/src/nodes/html-table-element/HTMLTableElement.ts +8 -9
  757. package/src/nodes/html-table-row-element/HTMLTableRowElement.ts +5 -6
  758. package/src/nodes/html-text-area-element/HTMLTextAreaElement.ts +1 -2
  759. package/src/nodes/html-track-element/HTMLTrackElement.ts +1 -1
  760. package/src/nodes/node/Node.ts +28 -26
  761. package/src/nodes/node/NodeList.ts +10 -11
  762. package/src/nodes/text/Text.ts +1 -2
  763. package/src/permissions/Permissions.ts +17 -1
  764. package/src/query-selector/QuerySelector.ts +15 -10
  765. package/src/range/Range.ts +39 -23
  766. package/src/selection/Selection.ts +27 -17
  767. package/src/window/BrowserWindow.ts +308 -335
  768. package/src/window/VMGlobalPropertyScript.ts +0 -1
  769. package/src/window/WindowBrowserContext.ts +114 -0
  770. package/src/window/WindowClassExtender.ts +306 -0
  771. package/src/window/WindowPageOpenUtility.ts +11 -1
  772. package/src/xml-http-request/XMLHttpRequest.ts +39 -36
  773. package/cjs/browser/utilities/BrowserFrameExceptionObserver.cjs +0 -80
  774. package/cjs/browser/utilities/BrowserFrameExceptionObserver.cjs.map +0 -1
  775. package/cjs/browser/utilities/BrowserFrameExceptionObserver.d.ts.map +0 -1
  776. package/cjs/event/IEventListener.cjs.map +0 -1
  777. package/cjs/event/IEventListener.d.ts +0 -13
  778. package/cjs/event/IEventListener.d.ts.map +0 -1
  779. package/cjs/event/IMessagePort.cjs.map +0 -1
  780. package/cjs/event/IMessagePort.d.ts +0 -24
  781. package/cjs/event/IMessagePort.d.ts.map +0 -1
  782. package/cjs/window/WindowBrowserSettingsReader.cjs +0 -72
  783. package/cjs/window/WindowBrowserSettingsReader.cjs.map +0 -1
  784. package/cjs/window/WindowBrowserSettingsReader.d.ts +0 -29
  785. package/cjs/window/WindowBrowserSettingsReader.d.ts.map +0 -1
  786. package/lib/browser/utilities/BrowserFrameExceptionObserver.d.ts.map +0 -1
  787. package/lib/browser/utilities/BrowserFrameExceptionObserver.js +0 -77
  788. package/lib/browser/utilities/BrowserFrameExceptionObserver.js.map +0 -1
  789. package/lib/event/IEventListener.d.ts +0 -13
  790. package/lib/event/IEventListener.d.ts.map +0 -1
  791. package/lib/event/IEventListener.js +0 -2
  792. package/lib/event/IEventListener.js.map +0 -1
  793. package/lib/event/IMessagePort.d.ts +0 -24
  794. package/lib/event/IMessagePort.d.ts.map +0 -1
  795. package/lib/event/IMessagePort.js +0 -2
  796. package/lib/event/IMessagePort.js.map +0 -1
  797. package/lib/window/WindowBrowserSettingsReader.d.ts +0 -29
  798. package/lib/window/WindowBrowserSettingsReader.d.ts.map +0 -1
  799. package/lib/window/WindowBrowserSettingsReader.js +0 -46
  800. package/lib/window/WindowBrowserSettingsReader.js.map +0 -1
  801. package/src/browser/utilities/BrowserFrameExceptionObserver.ts +0 -111
  802. package/src/event/IEventListener.ts +0 -13
  803. package/src/event/IMessagePort.ts +0 -26
  804. package/src/window/WindowBrowserSettingsReader.ts +0 -55
@@ -9,11 +9,8 @@ import * as PropertySymbol from '../PropertySymbol.js';
9
9
  import Base64 from '../base64/Base64.js';
10
10
  import BrowserErrorCaptureEnum from '../browser/enums/BrowserErrorCaptureEnum.js';
11
11
  import Clipboard from '../clipboard/Clipboard.js';
12
- import ClipboardItem from '../clipboard/ClipboardItem.js';
13
12
  import CSS from '../css/CSS.js';
14
13
  import CSSRule from '../css/CSSRule.js';
15
- import CSSStyleSheet from '../css/CSSStyleSheet.js';
16
- import CSSUnitValue from '../css/CSSUnitValue.js';
17
14
  import CSSStyleDeclaration from '../css/declaration/CSSStyleDeclaration.js';
18
15
  import CSSContainerRule from '../css/rules/CSSContainerRule.js';
19
16
  import CSSFontFaceRule from '../css/rules/CSSFontFaceRule.js';
@@ -23,13 +20,8 @@ import CSSMediaRule from '../css/rules/CSSMediaRule.js';
23
20
  import CSSStyleRule from '../css/rules/CSSStyleRule.js';
24
21
  import CSSSupportsRule from '../css/rules/CSSSupportsRule.js';
25
22
  import CustomElementRegistry from '../custom-element/CustomElementRegistry.js';
26
- import DOMParserImplementation from '../dom-parser/DOMParser.js';
27
- import DataTransfer from '../event/DataTransfer.js';
28
- import DataTransferItem from '../event/DataTransferItem.js';
29
- import DataTransferItemList from '../event/DataTransferItemList.js';
30
23
  import Event from '../event/Event.js';
31
24
  import EventTarget from '../event/EventTarget.js';
32
- import MessagePort from '../event/MessagePort.js';
33
25
  import Touch from '../event/Touch.js';
34
26
  import UIEvent from '../event/UIEvent.js';
35
27
  import AnimationEvent from '../event/events/AnimationEvent.js';
@@ -49,24 +41,15 @@ import StorageEvent from '../event/events/StorageEvent.js';
49
41
  import SubmitEvent from '../event/events/SubmitEvent.js';
50
42
  import TouchEvent from '../event/events/TouchEvent.js';
51
43
  import WheelEvent from '../event/events/WheelEvent.js';
52
- import DOMException from '../exception/DOMException.js';
53
44
  import DOMExceptionNameEnum from '../exception/DOMExceptionNameEnum.js';
54
- import AbortController from '../fetch/AbortController.js';
55
- import AbortSignal from '../fetch/AbortSignal.js';
56
45
  import Fetch from '../fetch/Fetch.js';
57
- import Headers from '../fetch/Headers.js';
58
- import RequestImplementation from '../fetch/Request.js';
59
- import { default as ResponseImplementation } from '../fetch/Response.js';
60
46
  import Blob from '../file/Blob.js';
61
47
  import File from '../file/File.js';
62
- import FileReaderImplementation from '../file/FileReader.js';
63
- import FormData from '../form-data/FormData.js';
64
48
  import History from '../history/History.js';
65
49
  import IntersectionObserver from '../intersection-observer/IntersectionObserver.js';
66
50
  import IntersectionObserverEntry from '../intersection-observer/IntersectionObserverEntry.js';
67
51
  import Location from '../location/Location.js';
68
52
  import MediaQueryList from '../match-media/MediaQueryList.js';
69
- import MutationObserver from '../mutation-observer/MutationObserver.js';
70
53
  import MutationRecord from '../mutation-observer/MutationRecord.js';
71
54
  import MimeType from '../navigator/MimeType.js';
72
55
  import MimeTypeArray from '../navigator/MimeTypeArray.js';
@@ -75,20 +58,15 @@ import Plugin from '../navigator/Plugin.js';
75
58
  import PluginArray from '../navigator/PluginArray.js';
76
59
  import Attr from '../nodes/attr/Attr.js';
77
60
  import CharacterData from '../nodes/character-data/CharacterData.js';
78
- import CommentImplementation from '../nodes/comment/Comment.js';
79
- import DocumentFragmentImplementation from '../nodes/document-fragment/DocumentFragment.js';
80
61
  import DocumentType from '../nodes/document-type/DocumentType.js';
81
- import DocumentImplementation from '../nodes/document/Document.js';
82
62
  import DocumentReadyStateEnum from '../nodes/document/DocumentReadyStateEnum.js';
83
63
  import DocumentReadyStateManager from '../nodes/document/DocumentReadyStateManager.js';
84
64
  import DOMRect from '../nodes/element/DOMRect.js';
85
65
  import DOMRectReadOnly from '../nodes/element/DOMRectReadOnly.js';
86
66
  import Element from '../nodes/element/Element.js';
87
67
  import HTMLCollection from '../nodes/element/HTMLCollection.js';
88
- import NamedNodeMap from '../nodes/element/NamedNodeMap.js';
89
68
  import HTMLAnchorElement from '../nodes/html-anchor-element/HTMLAnchorElement.js';
90
69
  import HTMLAreaElement from '../nodes/html-area-element/HTMLAreaElement.js';
91
- import AudioImplementation from '../nodes/html-audio-element/Audio.js';
92
70
  import HTMLAudioElement from '../nodes/html-audio-element/HTMLAudioElement.js';
93
71
  import HTMLBaseElement from '../nodes/html-base-element/HTMLBaseElement.js';
94
72
  import HTMLBodyElement from '../nodes/html-body-element/HTMLBodyElement.js';
@@ -101,37 +79,28 @@ import HTMLDataListElement from '../nodes/html-data-list-element/HTMLDataListEle
101
79
  import HTMLDetailsElement from '../nodes/html-details-element/HTMLDetailsElement.js';
102
80
  import HTMLDialogElement from '../nodes/html-dialog-element/HTMLDialogElement.js';
103
81
  import HTMLDivElement from '../nodes/html-div-element/HTMLDivElement.js';
104
- import HTMLDocumentImplementation from '../nodes/html-document/HTMLDocument.js';
105
82
  import HTMLElement from '../nodes/html-element/HTMLElement.js';
106
83
  import HTMLEmbedElement from '../nodes/html-embed-element/HTMLEmbedElement.js';
107
84
  import HTMLFieldSetElement from '../nodes/html-field-set-element/HTMLFieldSetElement.js';
108
85
  import HTMLFormControlsCollection from '../nodes/html-form-element/HTMLFormControlsCollection.js';
109
- import HTMLFormElementImplementation from '../nodes/html-form-element/HTMLFormElement.js';
86
+ import HTMLFormElement from '../nodes/html-form-element/HTMLFormElement.js';
110
87
  import RadioNodeList from '../nodes/html-form-element/RadioNodeList.js';
111
88
  import HTMLHeadElement from '../nodes/html-head-element/HTMLHeadElement.js';
112
89
  import HTMLHeadingElement from '../nodes/html-heading-element/HTMLHeadingElement.js';
113
90
  import HTMLHRElement from '../nodes/html-hr-element/HTMLHRElement.js';
114
91
  import HTMLHtmlElement from '../nodes/html-html-element/HTMLHtmlElement.js';
115
- import HTMLIFrameElementImplementation from '../nodes/html-iframe-element/HTMLIFrameElement.js';
92
+ import HTMLIFrameElement from '../nodes/html-iframe-element/HTMLIFrameElement.js';
116
93
  import HTMLImageElement from '../nodes/html-image-element/HTMLImageElement.js';
117
- import ImageImplementation from '../nodes/html-image-element/Image.js';
118
94
  import FileList from '../nodes/html-input-element/FileList.js';
119
95
  import HTMLInputElement from '../nodes/html-input-element/HTMLInputElement.js';
120
96
  import HTMLLabelElement from '../nodes/html-label-element/HTMLLabelElement.js';
121
97
  import HTMLLegendElement from '../nodes/html-legend-element/HTMLLegendElement.js';
122
98
  import HTMLLIElement from '../nodes/html-li-element/HTMLLIElement.js';
123
- import HTMLLinkElementImplementation from '../nodes/html-link-element/HTMLLinkElement.js';
99
+ import HTMLLinkElement from '../nodes/html-link-element/HTMLLinkElement.js';
124
100
  import HTMLMapElement from '../nodes/html-map-element/HTMLMapElement.js';
125
101
  import HTMLMediaElement from '../nodes/html-media-element/HTMLMediaElement.js';
126
- import MediaStream from '../nodes/html-media-element/MediaStream.js';
127
- import MediaStreamTrack from '../nodes/html-media-element/MediaStreamTrack.js';
128
- import RemotePlayback from '../nodes/html-media-element/RemotePlayback.js';
129
- import TextTrack from '../nodes/html-media-element/TextTrack.js';
130
- import TextTrackCue from '../nodes/html-media-element/TextTrackCue.js';
131
102
  import TextTrackCueList from '../nodes/html-media-element/TextTrackCueList.js';
132
- import TextTrackList from '../nodes/html-media-element/TextTrackList.js';
133
103
  import TimeRanges from '../nodes/html-media-element/TimeRanges.js';
134
- import VTTCueImplementation from '../nodes/html-media-element/VTTCue.js';
135
104
  import HTMLMenuElement from '../nodes/html-menu-element/HTMLMenuElement.js';
136
105
  import HTMLMetaElement from '../nodes/html-meta-element/HTMLMetaElement.js';
137
106
  import HTMLMeterElement from '../nodes/html-meter-element/HTMLMeterElement.js';
@@ -147,7 +116,7 @@ import HTMLPictureElement from '../nodes/html-picture-element/HTMLPictureElement
147
116
  import HTMLPreElement from '../nodes/html-pre-element/HTMLPreElement.js';
148
117
  import HTMLProgressElement from '../nodes/html-progress-element/HTMLProgressElement.js';
149
118
  import HTMLQuoteElement from '../nodes/html-quote-element/HTMLQuoteElement.js';
150
- import HTMLScriptElementImplementation from '../nodes/html-script-element/HTMLScriptElement.js';
119
+ import HTMLScriptElement from '../nodes/html-script-element/HTMLScriptElement.js';
151
120
  import HTMLSelectElement from '../nodes/html-select-element/HTMLSelectElement.js';
152
121
  import HTMLSlotElement from '../nodes/html-slot-element/HTMLSlotElement.js';
153
122
  import HTMLSourceElement from '../nodes/html-source-element/HTMLSourceElement.js';
@@ -171,32 +140,24 @@ import Node from '../nodes/node/Node.js';
171
140
  import NodeList from '../nodes/node/NodeList.js';
172
141
  import ProcessingInstruction from '../nodes/processing-instruction/ProcessingInstruction.js';
173
142
  import ShadowRoot from '../nodes/shadow-root/ShadowRoot.js';
174
- import SVGDocumentImplementation from '../nodes/svg-document/SVGDocument.js';
175
143
  import SVGElement from '../nodes/svg-element/SVGElement.js';
176
144
  import SVGGraphicsElement from '../nodes/svg-element/SVGGraphicsElement.js';
177
145
  import SVGSVGElement from '../nodes/svg-element/SVGSVGElement.js';
178
- import TextImplementation from '../nodes/text/Text.js';
179
- import XMLDocumentImplementation from '../nodes/xml-document/XMLDocument.js';
180
- import PermissionStatus from '../permissions/PermissionStatus.js';
181
146
  import Permissions from '../permissions/Permissions.js';
182
- import RangeImplementation from '../range/Range.js';
183
147
  import ResizeObserver from '../resize-observer/ResizeObserver.js';
184
148
  import Screen from '../screen/Screen.js';
185
- import Selection from '../selection/Selection.js';
186
149
  import Storage from '../storage/Storage.js';
187
150
  import NodeFilter from '../tree-walker/NodeFilter.js';
188
- import NodeIterator from '../tree-walker/NodeIterator.js';
189
- import TreeWalker from '../tree-walker/TreeWalker.js';
190
151
  import URL from '../url/URL.js';
191
152
  import ValidityState from '../validity-state/ValidityState.js';
192
- import XMLHttpRequestImplementation from '../xml-http-request/XMLHttpRequest.js';
193
- import XMLHttpRequestEventTarget from '../xml-http-request/XMLHttpRequestEventTarget.js';
194
- import XMLHttpRequestUpload from '../xml-http-request/XMLHttpRequestUpload.js';
195
- import XMLSerializer from '../xml-serializer/XMLSerializer.js';
196
153
  import VMGlobalPropertyScript from './VMGlobalPropertyScript.js';
197
- import WindowBrowserSettingsReader from './WindowBrowserSettingsReader.js';
198
154
  import WindowErrorUtility from './WindowErrorUtility.js';
199
155
  import WindowPageOpenUtility from './WindowPageOpenUtility.js';
156
+ import { PerformanceObserver, PerformanceEntry } from 'node:perf_hooks';
157
+ import EventPhaseEnum from '../event/EventPhaseEnum.js';
158
+ import HTMLOptionsCollection from '../nodes/html-select-element/HTMLOptionsCollection.js';
159
+ import WindowClassExtender from './WindowClassExtender.js';
160
+ import WindowBrowserContext from './WindowBrowserContext.js';
200
161
  const TIMER = {
201
162
  setTimeout: globalThis.setTimeout.bind(globalThis),
202
163
  clearTimeout: globalThis.clearTimeout.bind(globalThis),
@@ -207,6 +168,17 @@ const TIMER = {
207
168
  clearImmediate: globalThis.clearImmediate.bind(globalThis)
208
169
  };
209
170
  const IS_NODE_JS_TIMEOUT_ENVIRONMENT = setTimeout.toString().includes('new Timeout');
171
+ /**
172
+ * Class for PerformanceObserverEntryList as it is only available as an interface from Node.js.
173
+ */
174
+ class PerformanceObserverEntryList {
175
+ /**
176
+ * Constructor.
177
+ */
178
+ constructor() {
179
+ throw new TypeError('Illegal constructor');
180
+ }
181
+ }
210
182
  /**
211
183
  * Zero Timeout.
212
184
  */
@@ -238,15 +210,6 @@ export default class BrowserWindow extends EventTarget {
238
210
  Element = Element;
239
211
  CharacterData = CharacterData;
240
212
  DocumentType = DocumentType;
241
- Document;
242
- HTMLDocument;
243
- XMLDocument;
244
- SVGDocument;
245
- Text;
246
- Comment;
247
- Image;
248
- DocumentFragment;
249
- Audio;
250
213
  // Element classes
251
214
  HTMLAnchorElement = HTMLAnchorElement;
252
215
  HTMLButtonElement = HTMLButtonElement;
@@ -268,10 +231,10 @@ export default class BrowserWindow extends EventTarget {
268
231
  HTMLVideoElement = HTMLVideoElement;
269
232
  HTMLBaseElement = HTMLBaseElement;
270
233
  HTMLDialogElement = HTMLDialogElement;
271
- HTMLScriptElement;
272
- HTMLLinkElement;
273
- HTMLIFrameElement;
274
- HTMLFormElement;
234
+ HTMLScriptElement = HTMLScriptElement;
235
+ HTMLLinkElement = HTMLLinkElement;
236
+ HTMLIFrameElement = HTMLIFrameElement;
237
+ HTMLFormElement = HTMLFormElement;
275
238
  HTMLUListElement = HTMLUListElement;
276
239
  HTMLTrackElement = HTMLTrackElement;
277
240
  HTMLTableRowElement = HTMLTableRowElement;
@@ -374,39 +337,17 @@ export default class BrowserWindow extends EventTarget {
374
337
  UserProximityEvent = Event;
375
338
  WebGLContextEvent = Event;
376
339
  TextEvent = Event;
377
- // Other classes
378
- NamedNodeMap = NamedNodeMap;
379
- NodeFilter = NodeFilter;
380
- NodeIterator = NodeIterator;
381
- TreeWalker = TreeWalker;
382
- MutationObserver = MutationObserver;
340
+ // Other classes that don't have to be bound to the Window context
341
+ Permissions = Permissions;
342
+ History = History;
343
+ Navigator = Navigator;
344
+ Clipboard = Clipboard;
345
+ TimeRanges = TimeRanges;
346
+ TextTrackCueList = TextTrackCueList;
347
+ ValidityState = ValidityState;
348
+ MutationRecord = MutationRecord;
383
349
  IntersectionObserver = IntersectionObserver;
384
350
  IntersectionObserverEntry = IntersectionObserverEntry;
385
- MutationRecord = MutationRecord;
386
- CSSStyleDeclaration = CSSStyleDeclaration;
387
- EventTarget = EventTarget;
388
- MessagePort = MessagePort;
389
- DataTransfer = DataTransfer;
390
- DataTransferItem = DataTransferItem;
391
- DataTransferItemList = DataTransferItemList;
392
- URL = URL;
393
- Location = Location;
394
- CustomElementRegistry = CustomElementRegistry;
395
- Window = this.constructor;
396
- XMLSerializer = XMLSerializer;
397
- ResizeObserver = ResizeObserver;
398
- CSSStyleSheet = CSSStyleSheet;
399
- Blob = Blob;
400
- File = File;
401
- DOMException = DOMException;
402
- History = History;
403
- Screen = Screen;
404
- Storage = Storage;
405
- URLSearchParams = URLSearchParams;
406
- HTMLCollection = HTMLCollection;
407
- HTMLFormControlsCollection = HTMLFormControlsCollection;
408
- NodeList = NodeList;
409
- CSSUnitValue = CSSUnitValue;
410
351
  CSSRule = CSSRule;
411
352
  CSSContainerRule = CSSContainerRule;
412
353
  CSSFontFaceRule = CSSFontFaceRule;
@@ -415,51 +356,42 @@ export default class BrowserWindow extends EventTarget {
415
356
  CSSMediaRule = CSSMediaRule;
416
357
  CSSStyleRule = CSSStyleRule;
417
358
  CSSSupportsRule = CSSSupportsRule;
418
- Selection = Selection;
419
- Navigator = Navigator;
420
- MimeType = MimeType;
421
- MimeTypeArray = MimeTypeArray;
422
- Plugin = Plugin;
423
- PluginArray = PluginArray;
424
- FileList = FileList;
425
359
  DOMRect = DOMRect;
426
360
  DOMRectReadOnly = DOMRectReadOnly;
361
+ Plugin = Plugin;
362
+ PluginArray = PluginArray;
363
+ Location = Location;
364
+ CustomElementRegistry = CustomElementRegistry;
365
+ ResizeObserver = ResizeObserver;
366
+ URL = URL;
367
+ Blob = Blob;
368
+ File = File;
369
+ Storage = Storage;
370
+ MimeType = MimeType;
371
+ MimeTypeArray = MimeTypeArray;
372
+ NodeFilter = NodeFilter;
373
+ HTMLCollection = HTMLCollection;
374
+ HTMLFormControlCollection = HTMLFormControlsCollection;
375
+ HTMLOptionsCollection = HTMLOptionsCollection;
376
+ NodeList = NodeList;
427
377
  RadioNodeList = RadioNodeList;
428
- ValidityState = ValidityState;
429
- Headers = Headers;
430
- Request;
431
- Response;
432
- XMLHttpRequestUpload = XMLHttpRequestUpload;
433
- XMLHttpRequestEventTarget = XMLHttpRequestEventTarget;
434
- ReadableStream = ReadableStream;
378
+ FileList = FileList;
379
+ Screen = Screen;
380
+ Window = this.constructor;
381
+ // Node.js Classes
382
+ URLSearchParams = URLSearchParams;
435
383
  WritableStream = Stream.Writable;
384
+ ReadableStream = ReadableStream;
436
385
  TransformStream = Stream.Transform;
437
- AbortController = AbortController;
438
- AbortSignal = AbortSignal;
439
- FormData = FormData;
440
- Permissions = Permissions;
441
- PermissionStatus = PermissionStatus;
442
- Clipboard = Clipboard;
443
- ClipboardItem = ClipboardItem;
444
- XMLHttpRequest;
445
- DOMParser;
446
- Range;
447
- VTTCue;
448
- TextTrack = TextTrack;
449
- TextTrackCue = TextTrackCue;
450
- TextTrackCueList = TextTrackCueList;
451
- FileReader;
452
- TimeRanges = TimeRanges;
453
- RemotePlayback = RemotePlayback;
454
- MediaStream = MediaStream;
455
- MediaStreamTrack = MediaStreamTrack;
456
- TextTrackList = TextTrackList;
386
+ PerformanceObserver = PerformanceObserver;
387
+ PerformanceEntry = PerformanceEntry;
388
+ PerformanceObserverEntryList = PerformanceObserverEntryList;
457
389
  // Events
458
390
  onload = null;
459
391
  onerror = null;
460
392
  // Public properties.
461
393
  document;
462
- customElements;
394
+ customElements = new CustomElementRegistry(this);
463
395
  window = this;
464
396
  globalThis = this;
465
397
  performance = performance;
@@ -475,10 +407,8 @@ export default class BrowserWindow extends EventTarget {
475
407
  // Public internal properties
476
408
  // Used for tracking capture event listeners to improve performance when they are not used.
477
409
  // See EventTarget class.
478
- [PropertySymbol.captureEventListenerCount] = {};
479
410
  [PropertySymbol.mutationObservers] = [];
480
411
  [PropertySymbol.readyStateManager] = new DocumentReadyStateManager(this);
481
- [PropertySymbol.asyncTaskManager] = null;
482
412
  [PropertySymbol.location];
483
413
  [PropertySymbol.history];
484
414
  [PropertySymbol.navigator];
@@ -488,6 +418,8 @@ export default class BrowserWindow extends EventTarget {
488
418
  [PropertySymbol.self] = this;
489
419
  [PropertySymbol.top] = this;
490
420
  [PropertySymbol.parent] = this;
421
+ [PropertySymbol.window] = this;
422
+ [PropertySymbol.internalId] = -1;
491
423
  // Private properties
492
424
  #browserFrame;
493
425
  #innerWidth = null;
@@ -496,6 +428,7 @@ export default class BrowserWindow extends EventTarget {
496
428
  #outerHeight = null;
497
429
  #devicePixelRatio = null;
498
430
  #zeroDelayTimeout = { timeouts: null };
431
+ #timerLoopStacks = [];
499
432
  /**
500
433
  * Constructor.
501
434
  *
@@ -505,144 +438,33 @@ export default class BrowserWindow extends EventTarget {
505
438
  */
506
439
  constructor(browserFrame, options) {
507
440
  super();
508
- const asyncTaskManager = browserFrame[PropertySymbol.asyncTaskManager];
509
441
  this.#browserFrame = browserFrame;
510
- this.customElements = new CustomElementRegistry(this);
442
+ this.console = browserFrame.page.console;
511
443
  this[PropertySymbol.navigator] = new Navigator(this);
512
444
  this[PropertySymbol.screen] = new Screen();
513
445
  this[PropertySymbol.sessionStorage] = new Storage();
514
446
  this[PropertySymbol.localStorage] = new Storage();
515
447
  this[PropertySymbol.location] = new Location(this.#browserFrame, options?.url ?? 'about:blank');
516
448
  this[PropertySymbol.history] = new History(this.#browserFrame, this);
517
- this[PropertySymbol.asyncTaskManager] = asyncTaskManager;
518
- this.console = browserFrame.page.console;
519
- WindowBrowserSettingsReader.setSettings(this, this.#browserFrame.page.context.browser.settings);
520
- const window = this;
449
+ WindowBrowserContext.setWindowBrowserFrameRelation(this, this.#browserFrame);
521
450
  this[PropertySymbol.setupVMContext]();
522
- // Class overrides
523
- // For classes that need to be bound to the correct context to be instantiable using the "new" keyword.
524
- /* eslint-disable jsdoc/require-jsdoc */
525
- class Request extends RequestImplementation {
526
- constructor(input, init) {
527
- super({ window, asyncTaskManager }, input, init);
528
- }
529
- }
530
- class Response extends ResponseImplementation {
531
- static [PropertySymbol.window] = window;
532
- constructor(body, init) {
533
- super({ window, browserFrame }, body, init);
534
- }
535
- }
536
- class XMLHttpRequest extends XMLHttpRequestImplementation {
537
- constructor() {
538
- super({ window, browserFrame });
539
- }
540
- }
541
- class FileReader extends FileReaderImplementation {
542
- constructor() {
543
- super(window);
544
- }
545
- }
546
- class DOMParser extends DOMParserImplementation {
547
- constructor() {
548
- super(window);
549
- }
550
- }
551
- class Range extends RangeImplementation {
552
- constructor() {
553
- super(window);
554
- }
555
- }
556
- class VTTCue extends VTTCueImplementation {
557
- constructor(startTime, endTime, text) {
558
- super(window, startTime, endTime, text);
559
- }
560
- }
561
- class HTMLScriptElement extends HTMLScriptElementImplementation {
562
- constructor() {
563
- super(browserFrame);
564
- }
565
- }
566
- class HTMLLinkElement extends HTMLLinkElementImplementation {
567
- constructor() {
568
- super(browserFrame);
569
- }
570
- }
571
- class HTMLIFrameElement extends HTMLIFrameElementImplementation {
572
- constructor() {
573
- super(browserFrame);
574
- }
575
- }
576
- class HTMLFormElement extends HTMLFormElementImplementation {
577
- constructor() {
578
- super(browserFrame);
579
- }
580
- }
581
- class Document extends DocumentImplementation {
582
- constructor() {
583
- super({ window, browserFrame });
584
- }
585
- }
586
- class HTMLDocument extends HTMLDocumentImplementation {
587
- constructor() {
588
- super({ window, browserFrame });
589
- }
590
- }
591
- class XMLDocument extends XMLDocumentImplementation {
592
- constructor() {
593
- super({ window, browserFrame });
594
- }
595
- }
596
- class SVGDocument extends SVGDocumentImplementation {
597
- constructor() {
598
- super({ window, browserFrame });
599
- }
600
- }
601
- class Audio extends AudioImplementation {
602
- }
603
- class Image extends ImageImplementation {
604
- }
605
- class DocumentFragment extends DocumentFragmentImplementation {
606
- }
607
- class Text extends TextImplementation {
608
- }
609
- class Comment extends CommentImplementation {
610
- }
611
- /* eslint-enable jsdoc/require-jsdoc */
612
- this.Response = Response;
613
- this.Request = Request;
614
- this.Image = Image;
615
- this.Text = Text;
616
- this.Comment = Comment;
617
- this.DocumentFragment = DocumentFragment;
618
- this.FileReader = FileReader;
619
- this.DOMParser = DOMParser;
620
- this.VTTCue = VTTCue;
621
- this.XMLHttpRequest = XMLHttpRequest;
622
- this.Range = Range;
623
- this.Audio = Audio;
624
- this.HTMLScriptElement = HTMLScriptElement;
625
- this.HTMLLinkElement = HTMLLinkElement;
626
- this.HTMLIFrameElement = HTMLIFrameElement;
627
- this.HTMLFormElement = HTMLFormElement;
628
- this.Document = Document;
629
- this.HTMLDocument = HTMLDocument;
630
- this.XMLDocument = XMLDocument;
631
- this.SVGDocument = SVGDocument;
451
+ WindowClassExtender.extendClass(this);
632
452
  // Document
633
- this.document = new HTMLDocument();
453
+ this.document = new this.HTMLDocument();
634
454
  this.document[PropertySymbol.defaultView] = this;
635
- // Override owner document
636
- this.Audio[PropertySymbol.ownerDocument] = this.document;
637
- this.Image[PropertySymbol.ownerDocument] = this.document;
638
- this.DocumentFragment[PropertySymbol.ownerDocument] = this.document;
639
- this.Text[PropertySymbol.ownerDocument] = this.document;
640
- this.Comment[PropertySymbol.ownerDocument] = this.document;
641
455
  // Ready state manager
642
456
  this[PropertySymbol.readyStateManager].waitUntilComplete().then(() => {
643
457
  this.document[PropertySymbol.readyState] = DocumentReadyStateEnum.complete;
644
458
  this.document.dispatchEvent(new Event('readystatechange'));
645
- this.document.dispatchEvent(new Event('load', { bubbles: true }));
459
+ // Not sure why target is set to document here, but this is how it works in the browser
460
+ const loadEvent = new Event('load');
461
+ loadEvent[PropertySymbol.currentTarget] = this.document;
462
+ loadEvent[PropertySymbol.target] = this.document;
463
+ loadEvent[PropertySymbol.eventPhase] = EventPhaseEnum.atTarget;
464
+ this.dispatchEvent(loadEvent);
465
+ loadEvent[PropertySymbol.target] = null;
466
+ loadEvent[PropertySymbol.currentTarget] = null;
467
+ loadEvent[PropertySymbol.eventPhase] = EventPhaseEnum.none;
646
468
  });
647
469
  ClassMethodBinder.bindMethods(this, [EventTarget, BrowserWindow]);
648
470
  }
@@ -981,7 +803,7 @@ export default class BrowserWindow extends EventTarget {
981
803
  * @returns A new MediaQueryList.
982
804
  */
983
805
  matchMedia(mediaQueryString) {
984
- return new MediaQueryList({ ownerWindow: this, media: mediaQueryString });
806
+ return new MediaQueryList({ window: this, media: mediaQueryString });
985
807
  }
986
808
  /**
987
809
  * Sets a timer which executes a function once the timer expires.
@@ -992,17 +814,30 @@ export default class BrowserWindow extends EventTarget {
992
814
  * @returns Timeout ID.
993
815
  */
994
816
  setTimeout(callback, delay = 0, ...args) {
817
+ if (this.closed) {
818
+ return;
819
+ }
820
+ const settings = this.#browserFrame.page?.context?.browser?.settings;
821
+ if (settings.timer.preventTimerLoops) {
822
+ const stack = new Error().stack;
823
+ const timerLoopStacks = this.#timerLoopStacks;
824
+ if (timerLoopStacks.includes(stack)) {
825
+ return;
826
+ }
827
+ timerLoopStacks.push(stack);
828
+ }
995
829
  // We can group timeouts with a delay of 0 into one timeout to improve performance.
996
830
  // Grouping timeouts will also improve the performance of the async task manager.
997
831
  // It also makes the async task manager more stable as many timeouts may cause waitUntilComplete() to be resolved too early.
998
832
  if (!delay) {
999
833
  const zeroDelayTimeout = this.#zeroDelayTimeout;
1000
834
  if (!zeroDelayTimeout.timeouts) {
1001
- const settings = this.#browserFrame.page?.context?.browser?.settings;
1002
835
  const useTryCatch = !settings ||
1003
836
  (!settings.disableErrorCapturing &&
1004
837
  settings.errorCapture === BrowserErrorCaptureEnum.tryAndCatch);
1005
838
  const id = TIMER.setTimeout(() => {
839
+ // We need to call endTimer() before the callback as the callback might throw an error.
840
+ this.#browserFrame[PropertySymbol.asyncTaskManager].endTimer(id);
1006
841
  const timeouts = zeroDelayTimeout.timeouts;
1007
842
  zeroDelayTimeout.timeouts = null;
1008
843
  for (const timeout of timeouts) {
@@ -1013,7 +848,6 @@ export default class BrowserWindow extends EventTarget {
1013
848
  timeout.callback();
1014
849
  }
1015
850
  }
1016
- this.#browserFrame[PropertySymbol.asyncTaskManager].endTimer(id);
1017
851
  });
1018
852
  zeroDelayTimeout.timeouts = [];
1019
853
  this.#browserFrame[PropertySymbol.asyncTaskManager].startTimer(id);
@@ -1022,18 +856,18 @@ export default class BrowserWindow extends EventTarget {
1022
856
  zeroDelayTimeout.timeouts.push(timeout);
1023
857
  return timeout;
1024
858
  }
1025
- const settings = this.#browserFrame.page?.context?.browser?.settings;
1026
859
  const useTryCatch = !settings ||
1027
860
  (!settings.disableErrorCapturing &&
1028
861
  settings.errorCapture === BrowserErrorCaptureEnum.tryAndCatch);
1029
862
  const id = TIMER.setTimeout(() => {
863
+ // We need to call endTimer() before the callback as the callback might throw an error.
864
+ this.#browserFrame[PropertySymbol.asyncTaskManager].endTimer(id);
1030
865
  if (useTryCatch) {
1031
866
  WindowErrorUtility.captureError(this, () => callback(...args));
1032
867
  }
1033
868
  else {
1034
869
  callback(...args);
1035
870
  }
1036
- this.#browserFrame[PropertySymbol.asyncTaskManager].endTimer(id);
1037
871
  }, settings?.timer.maxTimeout !== -1 && delay && delay > settings?.timer.maxTimeout
1038
872
  ? settings?.timer.maxTimeout
1039
873
  : delay);
@@ -1074,6 +908,9 @@ export default class BrowserWindow extends EventTarget {
1074
908
  * @returns Interval ID.
1075
909
  */
1076
910
  setInterval(callback, delay = 0, ...args) {
911
+ if (this.closed) {
912
+ return;
913
+ }
1077
914
  const settings = this.#browserFrame.page?.context?.browser?.settings;
1078
915
  const useTryCatch = !settings ||
1079
916
  (!settings.disableErrorCapturing &&
@@ -1119,18 +956,30 @@ export default class BrowserWindow extends EventTarget {
1119
956
  * @returns ID.
1120
957
  */
1121
958
  requestAnimationFrame(callback) {
959
+ if (this.closed) {
960
+ return;
961
+ }
1122
962
  const settings = this.#browserFrame.page?.context?.browser?.settings;
963
+ if (settings.timer.preventTimerLoops) {
964
+ const stack = new Error().stack;
965
+ const timerLoopStacks = this.#timerLoopStacks;
966
+ if (timerLoopStacks.includes(stack)) {
967
+ return;
968
+ }
969
+ timerLoopStacks.push(stack);
970
+ }
1123
971
  const useTryCatch = !settings ||
1124
972
  (!settings.disableErrorCapturing &&
1125
973
  settings.errorCapture === BrowserErrorCaptureEnum.tryAndCatch);
1126
974
  const id = TIMER.setImmediate(() => {
975
+ // We need to call endImmediate() before the callback as the callback might throw an error.
976
+ this.#browserFrame[PropertySymbol.asyncTaskManager].endImmediate(id);
1127
977
  if (useTryCatch) {
1128
978
  WindowErrorUtility.captureError(this, () => callback(this.performance.now()));
1129
979
  }
1130
980
  else {
1131
981
  callback(this.performance.now());
1132
982
  }
1133
- this.#browserFrame[PropertySymbol.asyncTaskManager].endImmediate(id);
1134
983
  });
1135
984
  this.#browserFrame[PropertySymbol.asyncTaskManager].startImmediate(id);
1136
985
  return id;
@@ -1155,6 +1004,9 @@ export default class BrowserWindow extends EventTarget {
1155
1004
  * @param callback Function to be executed.
1156
1005
  */
1157
1006
  queueMicrotask(callback) {
1007
+ if (this.closed) {
1008
+ return;
1009
+ }
1158
1010
  let isAborted = false;
1159
1011
  const taskId = this.#browserFrame[PropertySymbol.asyncTaskManager].startTask(() => (isAborted = true));
1160
1012
  const settings = this.#browserFrame.page?.context?.browser?.settings;
@@ -1163,13 +1015,14 @@ export default class BrowserWindow extends EventTarget {
1163
1015
  settings.errorCapture === BrowserErrorCaptureEnum.tryAndCatch);
1164
1016
  TIMER.queueMicrotask(() => {
1165
1017
  if (!isAborted) {
1018
+ // We need to call endTask() before the callback as the callback might throw an error.
1019
+ this.#browserFrame[PropertySymbol.asyncTaskManager].endTask(taskId);
1166
1020
  if (useTryCatch) {
1167
1021
  WindowErrorUtility.captureError(this, callback);
1168
1022
  }
1169
1023
  else {
1170
1024
  callback();
1171
1025
  }
1172
- this.#browserFrame[PropertySymbol.asyncTaskManager].endTask(taskId);
1173
1026
  }
1174
1027
  });
1175
1028
  }
@@ -1181,6 +1034,9 @@ export default class BrowserWindow extends EventTarget {
1181
1034
  * @returns Promise.
1182
1035
  */
1183
1036
  async fetch(url, init) {
1037
+ if (this.closed) {
1038
+ return Promise.reject(new this.DOMException("Failed to execute 'fetch' on 'Window': The window is closed.", DOMExceptionNameEnum.invalidStateError));
1039
+ }
1184
1040
  return await new Fetch({
1185
1041
  browserFrame: this.#browserFrame,
1186
1042
  window: this,
@@ -1219,14 +1075,17 @@ export default class BrowserWindow extends EventTarget {
1219
1075
  */
1220
1076
  postMessage(message, targetOrigin = '*', _transfer) {
1221
1077
  // TODO: Implement transfer.
1078
+ if (this.closed) {
1079
+ return;
1080
+ }
1222
1081
  if (targetOrigin && targetOrigin !== '*' && this.location.origin !== targetOrigin) {
1223
- throw new DOMException(`Failed to execute 'postMessage' on 'Window': The target origin provided ('${targetOrigin}') does not match the recipient window\'s origin ('${this.location.origin}').`, DOMExceptionNameEnum.securityError);
1082
+ throw new this.DOMException(`Failed to execute 'postMessage' on 'Window': The target origin provided ('${targetOrigin}') does not match the recipient window\'s origin ('${this.location.origin}').`, DOMExceptionNameEnum.securityError);
1224
1083
  }
1225
1084
  try {
1226
1085
  JSON.stringify(message);
1227
1086
  }
1228
1087
  catch (error) {
1229
- throw new DOMException(`Failed to execute 'postMessage' on 'Window': The provided message cannot be serialized.`, DOMExceptionNameEnum.invalidStateError);
1088
+ throw new this.DOMException(`Failed to execute 'postMessage' on 'Window': The provided message cannot be serialized.`, DOMExceptionNameEnum.invalidStateError);
1230
1089
  }
1231
1090
  this.setTimeout(() => this.dispatchEvent(new MessageEvent('message', {
1232
1091
  data: message,
@@ -1246,8 +1105,11 @@ export default class BrowserWindow extends EventTarget {
1246
1105
  * @param height Height.
1247
1106
  */
1248
1107
  resizeTo(width, height) {
1108
+ if (this.closed) {
1109
+ return;
1110
+ }
1249
1111
  if (!width || !height) {
1250
- throw new DOMException(`Failed to execute 'resizeTo' on 'Window': 2 arguments required, but only ${arguments.length} present.`);
1112
+ throw new this.DOMException(`Failed to execute 'resizeTo' on 'Window': 2 arguments required, but only ${arguments.length} present.`);
1251
1113
  }
1252
1114
  // We can only resize the window if it is a popup.
1253
1115
  if (this.#browserFrame[PropertySymbol.popup]) {
@@ -1261,8 +1123,11 @@ export default class BrowserWindow extends EventTarget {
1261
1123
  * @param height Height.
1262
1124
  */
1263
1125
  resizeBy(width, height) {
1126
+ if (this.closed) {
1127
+ return;
1128
+ }
1264
1129
  if (!width || !height) {
1265
- throw new DOMException(`Failed to execute 'resizeBy' on 'Window': 2 arguments required, but only ${arguments.length} present.`);
1130
+ throw new this.DOMException(`Failed to execute 'resizeBy' on 'Window': 2 arguments required, but only ${arguments.length} present.`);
1266
1131
  }
1267
1132
  // We can only resize the window if it is a popup.
1268
1133
  if (this.#browserFrame[PropertySymbol.popup]) {
@@ -1299,11 +1164,6 @@ export default class BrowserWindow extends EventTarget {
1299
1164
  this[PropertySymbol.mutationObservers] = [];
1300
1165
  this[PropertySymbol.asyncTaskManager] = null;
1301
1166
  this[PropertySymbol.mutationObservers] = [];
1302
- this.Audio[PropertySymbol.ownerDocument] = null;
1303
- this.Image[PropertySymbol.ownerDocument] = null;
1304
- this.DocumentFragment[PropertySymbol.ownerDocument] = null;
1305
- this.Text[PropertySymbol.ownerDocument] = null;
1306
- this.Comment[PropertySymbol.ownerDocument] = null;
1307
1167
  // Disconnects nodes from the document, so that they can be garbage collected.
1308
1168
  const childNodes = this.document[PropertySymbol.nodeArray];
1309
1169
  while (childNodes.length > 0) {
@@ -1313,6 +1173,16 @@ export default class BrowserWindow extends EventTarget {
1313
1173
  }
1314
1174
  this.document.removeChild(childNodes[0]);
1315
1175
  }
1176
+ // Create some empty elements for scripts that are still running.
1177
+ const htmlElement = this.document.createElement('html');
1178
+ const headElement = this.document.createElement('head');
1179
+ const bodyElement = this.document.createElement('body');
1180
+ htmlElement.appendChild(headElement);
1181
+ htmlElement.appendChild(bodyElement);
1182
+ this.document.appendChild(htmlElement);
1183
+ if (this.location[PropertySymbol.destroy]) {
1184
+ this.location[PropertySymbol.destroy]();
1185
+ }
1316
1186
  if (this.customElements[PropertySymbol.destroy]) {
1317
1187
  this.customElements[PropertySymbol.destroy]();
1318
1188
  }
@@ -1323,7 +1193,7 @@ export default class BrowserWindow extends EventTarget {
1323
1193
  this.document[PropertySymbol.nextActiveElement] = null;
1324
1194
  this.document[PropertySymbol.currentScript] = null;
1325
1195
  this.document[PropertySymbol.selection] = null;
1326
- WindowBrowserSettingsReader.removeSettings(this);
1196
+ WindowBrowserContext.removeWindowBrowserFrameRelation(this);
1327
1197
  }
1328
1198
  }
1329
1199
  //# sourceMappingURL=BrowserWindow.js.map