happy-dom 15.0.0 → 15.1.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 +14 -4
  113. package/cjs/fetch/AbortSignal.cjs.map +1 -1
  114. package/cjs/fetch/AbortSignal.d.ts +7 -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 +7 -0
  450. package/lib/fetch/AbortSignal.d.ts.map +1 -1
  451. package/lib/fetch/AbortSignal.js +14 -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 +30 -4
  709. package/src/fetch/Fetch.ts +44 -16
  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 +20 -14
  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
@@ -6,7 +6,6 @@ import { URLSearchParams } from 'url';
6
6
  import VM from 'vm';
7
7
  import ClassMethodBinder from '../ClassMethodBinder.js';
8
8
  import * as PropertySymbol from '../PropertySymbol.js';
9
- import AsyncTaskManager from '../async-task-manager/AsyncTaskManager.js';
10
9
  import Base64 from '../base64/Base64.js';
11
10
  import BrowserErrorCaptureEnum from '../browser/enums/BrowserErrorCaptureEnum.js';
12
11
  import IBrowserFrame from '../browser/types/IBrowserFrame.js';
@@ -25,7 +24,7 @@ import CSSMediaRule from '../css/rules/CSSMediaRule.js';
25
24
  import CSSStyleRule from '../css/rules/CSSStyleRule.js';
26
25
  import CSSSupportsRule from '../css/rules/CSSSupportsRule.js';
27
26
  import CustomElementRegistry from '../custom-element/CustomElementRegistry.js';
28
- import DOMParserImplementation from '../dom-parser/DOMParser.js';
27
+ import DOMParser from '../dom-parser/DOMParser.js';
29
28
  import DataTransfer from '../event/DataTransfer.js';
30
29
  import DataTransferItem from '../event/DataTransferItem.js';
31
30
  import DataTransferItemList from '../event/DataTransferItemList.js';
@@ -57,15 +56,13 @@ import AbortController from '../fetch/AbortController.js';
57
56
  import AbortSignal from '../fetch/AbortSignal.js';
58
57
  import Fetch from '../fetch/Fetch.js';
59
58
  import Headers from '../fetch/Headers.js';
60
- import RequestImplementation from '../fetch/Request.js';
61
- import { default as Response, default as ResponseImplementation } from '../fetch/Response.js';
59
+ import Request from '../fetch/Request.js';
60
+ import Response from '../fetch/Response.js';
62
61
  import IRequestInfo from '../fetch/types/IRequestInfo.js';
63
62
  import IRequestInit from '../fetch/types/IRequestInit.js';
64
- import IResponseBody from '../fetch/types/IResponseBody.js';
65
- import IResponseInit from '../fetch/types/IResponseInit.js';
66
63
  import Blob from '../file/Blob.js';
67
64
  import File from '../file/File.js';
68
- import FileReaderImplementation from '../file/FileReader.js';
65
+ import FileReader from '../file/FileReader.js';
69
66
  import FormData from '../form-data/FormData.js';
70
67
  import History from '../history/History.js';
71
68
  import IntersectionObserver from '../intersection-observer/IntersectionObserver.js';
@@ -81,10 +78,10 @@ import Plugin from '../navigator/Plugin.js';
81
78
  import PluginArray from '../navigator/PluginArray.js';
82
79
  import Attr from '../nodes/attr/Attr.js';
83
80
  import CharacterData from '../nodes/character-data/CharacterData.js';
84
- import CommentImplementation from '../nodes/comment/Comment.js';
85
- import DocumentFragmentImplementation from '../nodes/document-fragment/DocumentFragment.js';
81
+ import Comment from '../nodes/comment/Comment.js';
82
+ import DocumentFragment from '../nodes/document-fragment/DocumentFragment.js';
86
83
  import DocumentType from '../nodes/document-type/DocumentType.js';
87
- import DocumentImplementation from '../nodes/document/Document.js';
84
+ import Document from '../nodes/document/Document.js';
88
85
  import DocumentReadyStateEnum from '../nodes/document/DocumentReadyStateEnum.js';
89
86
  import DocumentReadyStateManager from '../nodes/document/DocumentReadyStateManager.js';
90
87
  import DOMRect from '../nodes/element/DOMRect.js';
@@ -94,7 +91,7 @@ import HTMLCollection from '../nodes/element/HTMLCollection.js';
94
91
  import NamedNodeMap from '../nodes/element/NamedNodeMap.js';
95
92
  import HTMLAnchorElement from '../nodes/html-anchor-element/HTMLAnchorElement.js';
96
93
  import HTMLAreaElement from '../nodes/html-area-element/HTMLAreaElement.js';
97
- import AudioImplementation from '../nodes/html-audio-element/Audio.js';
94
+ import Audio from '../nodes/html-audio-element/Audio.js';
98
95
  import HTMLAudioElement from '../nodes/html-audio-element/HTMLAudioElement.js';
99
96
  import HTMLBaseElement from '../nodes/html-base-element/HTMLBaseElement.js';
100
97
  import HTMLBodyElement from '../nodes/html-body-element/HTMLBodyElement.js';
@@ -107,26 +104,26 @@ import HTMLDataListElement from '../nodes/html-data-list-element/HTMLDataListEle
107
104
  import HTMLDetailsElement from '../nodes/html-details-element/HTMLDetailsElement.js';
108
105
  import HTMLDialogElement from '../nodes/html-dialog-element/HTMLDialogElement.js';
109
106
  import HTMLDivElement from '../nodes/html-div-element/HTMLDivElement.js';
110
- import HTMLDocumentImplementation from '../nodes/html-document/HTMLDocument.js';
107
+ import HTMLDocument from '../nodes/html-document/HTMLDocument.js';
111
108
  import HTMLElement from '../nodes/html-element/HTMLElement.js';
112
109
  import HTMLEmbedElement from '../nodes/html-embed-element/HTMLEmbedElement.js';
113
110
  import HTMLFieldSetElement from '../nodes/html-field-set-element/HTMLFieldSetElement.js';
114
111
  import HTMLFormControlsCollection from '../nodes/html-form-element/HTMLFormControlsCollection.js';
115
- import HTMLFormElementImplementation from '../nodes/html-form-element/HTMLFormElement.js';
112
+ import HTMLFormElement from '../nodes/html-form-element/HTMLFormElement.js';
116
113
  import RadioNodeList from '../nodes/html-form-element/RadioNodeList.js';
117
114
  import HTMLHeadElement from '../nodes/html-head-element/HTMLHeadElement.js';
118
115
  import HTMLHeadingElement from '../nodes/html-heading-element/HTMLHeadingElement.js';
119
116
  import HTMLHRElement from '../nodes/html-hr-element/HTMLHRElement.js';
120
117
  import HTMLHtmlElement from '../nodes/html-html-element/HTMLHtmlElement.js';
121
- import HTMLIFrameElementImplementation from '../nodes/html-iframe-element/HTMLIFrameElement.js';
118
+ import HTMLIFrameElement from '../nodes/html-iframe-element/HTMLIFrameElement.js';
122
119
  import HTMLImageElement from '../nodes/html-image-element/HTMLImageElement.js';
123
- import ImageImplementation from '../nodes/html-image-element/Image.js';
120
+ import Image from '../nodes/html-image-element/Image.js';
124
121
  import FileList from '../nodes/html-input-element/FileList.js';
125
122
  import HTMLInputElement from '../nodes/html-input-element/HTMLInputElement.js';
126
123
  import HTMLLabelElement from '../nodes/html-label-element/HTMLLabelElement.js';
127
124
  import HTMLLegendElement from '../nodes/html-legend-element/HTMLLegendElement.js';
128
125
  import HTMLLIElement from '../nodes/html-li-element/HTMLLIElement.js';
129
- import HTMLLinkElementImplementation from '../nodes/html-link-element/HTMLLinkElement.js';
126
+ import HTMLLinkElement from '../nodes/html-link-element/HTMLLinkElement.js';
130
127
  import HTMLMapElement from '../nodes/html-map-element/HTMLMapElement.js';
131
128
  import HTMLMediaElement from '../nodes/html-media-element/HTMLMediaElement.js';
132
129
  import MediaStream from '../nodes/html-media-element/MediaStream.js';
@@ -137,7 +134,7 @@ import TextTrackCue from '../nodes/html-media-element/TextTrackCue.js';
137
134
  import TextTrackCueList from '../nodes/html-media-element/TextTrackCueList.js';
138
135
  import TextTrackList from '../nodes/html-media-element/TextTrackList.js';
139
136
  import TimeRanges from '../nodes/html-media-element/TimeRanges.js';
140
- import VTTCueImplementation from '../nodes/html-media-element/VTTCue.js';
137
+ import VTTCue from '../nodes/html-media-element/VTTCue.js';
141
138
  import HTMLMenuElement from '../nodes/html-menu-element/HTMLMenuElement.js';
142
139
  import HTMLMetaElement from '../nodes/html-meta-element/HTMLMetaElement.js';
143
140
  import HTMLMeterElement from '../nodes/html-meter-element/HTMLMeterElement.js';
@@ -153,7 +150,7 @@ import HTMLPictureElement from '../nodes/html-picture-element/HTMLPictureElement
153
150
  import HTMLPreElement from '../nodes/html-pre-element/HTMLPreElement.js';
154
151
  import HTMLProgressElement from '../nodes/html-progress-element/HTMLProgressElement.js';
155
152
  import HTMLQuoteElement from '../nodes/html-quote-element/HTMLQuoteElement.js';
156
- import HTMLScriptElementImplementation from '../nodes/html-script-element/HTMLScriptElement.js';
153
+ import HTMLScriptElement from '../nodes/html-script-element/HTMLScriptElement.js';
157
154
  import HTMLSelectElement from '../nodes/html-select-element/HTMLSelectElement.js';
158
155
  import HTMLSlotElement from '../nodes/html-slot-element/HTMLSlotElement.js';
159
156
  import HTMLSourceElement from '../nodes/html-source-element/HTMLSourceElement.js';
@@ -177,15 +174,15 @@ import Node from '../nodes/node/Node.js';
177
174
  import NodeList from '../nodes/node/NodeList.js';
178
175
  import ProcessingInstruction from '../nodes/processing-instruction/ProcessingInstruction.js';
179
176
  import ShadowRoot from '../nodes/shadow-root/ShadowRoot.js';
180
- import SVGDocumentImplementation from '../nodes/svg-document/SVGDocument.js';
177
+ import SVGDocument from '../nodes/svg-document/SVGDocument.js';
181
178
  import SVGElement from '../nodes/svg-element/SVGElement.js';
182
179
  import SVGGraphicsElement from '../nodes/svg-element/SVGGraphicsElement.js';
183
180
  import SVGSVGElement from '../nodes/svg-element/SVGSVGElement.js';
184
- import TextImplementation from '../nodes/text/Text.js';
185
- import XMLDocumentImplementation from '../nodes/xml-document/XMLDocument.js';
181
+ import Text from '../nodes/text/Text.js';
182
+ import XMLDocument from '../nodes/xml-document/XMLDocument.js';
186
183
  import PermissionStatus from '../permissions/PermissionStatus.js';
187
184
  import Permissions from '../permissions/Permissions.js';
188
- import RangeImplementation from '../range/Range.js';
185
+ import Range from '../range/Range.js';
189
186
  import ResizeObserver from '../resize-observer/ResizeObserver.js';
190
187
  import Screen from '../screen/Screen.js';
191
188
  import Selection from '../selection/Selection.js';
@@ -195,17 +192,25 @@ import NodeIterator from '../tree-walker/NodeIterator.js';
195
192
  import TreeWalker from '../tree-walker/TreeWalker.js';
196
193
  import URL from '../url/URL.js';
197
194
  import ValidityState from '../validity-state/ValidityState.js';
198
- import XMLHttpRequestImplementation from '../xml-http-request/XMLHttpRequest.js';
195
+ import XMLHttpRequest from '../xml-http-request/XMLHttpRequest.js';
199
196
  import XMLHttpRequestEventTarget from '../xml-http-request/XMLHttpRequestEventTarget.js';
200
197
  import XMLHttpRequestUpload from '../xml-http-request/XMLHttpRequestUpload.js';
201
198
  import XMLSerializer from '../xml-serializer/XMLSerializer.js';
202
199
  import CrossOriginBrowserWindow from './CrossOriginBrowserWindow.js';
203
200
  import INodeJSGlobal from './INodeJSGlobal.js';
204
201
  import VMGlobalPropertyScript from './VMGlobalPropertyScript.js';
205
- import WindowBrowserSettingsReader from './WindowBrowserSettingsReader.js';
206
202
  import WindowErrorUtility from './WindowErrorUtility.js';
207
203
  import WindowPageOpenUtility from './WindowPageOpenUtility.js';
208
-
204
+ import {
205
+ PerformanceObserver,
206
+ PerformanceEntry,
207
+ PerformanceObserverEntryList as IPerformanceObserverEntryList
208
+ } from 'node:perf_hooks';
209
+ import EventPhaseEnum from '../event/EventPhaseEnum.js';
210
+ import HTMLOptionsCollection from '../nodes/html-select-element/HTMLOptionsCollection.js';
211
+ import WindowClassExtender from './WindowClassExtender.js';
212
+ import WindowBrowserContext from './WindowBrowserContext.js';
213
+ import CanvasCaptureMediaStreamTrack from '../nodes/html-canvas-element/CanvasCaptureMediaStreamTrack.js';
209
214
  const TIMER = {
210
215
  setTimeout: globalThis.setTimeout.bind(globalThis),
211
216
  clearTimeout: globalThis.clearTimeout.bind(globalThis),
@@ -216,6 +221,18 @@ const TIMER = {
216
221
  clearImmediate: globalThis.clearImmediate.bind(globalThis)
217
222
  };
218
223
  const IS_NODE_JS_TIMEOUT_ENVIRONMENT = setTimeout.toString().includes('new Timeout');
224
+
225
+ /**
226
+ * Class for PerformanceObserverEntryList as it is only available as an interface from Node.js.
227
+ */
228
+ class PerformanceObserverEntryList {
229
+ /**
230
+ * Constructor.
231
+ */
232
+ constructor() {
233
+ throw new TypeError('Illegal constructor');
234
+ }
235
+ }
219
236
  /**
220
237
  * Zero Timeout.
221
238
  */
@@ -238,93 +255,95 @@ class Timeout {
238
255
  */
239
256
  export default class BrowserWindow extends EventTarget implements INodeJSGlobal {
240
257
  // Nodes
241
- public readonly Node: typeof Node = Node;
242
- public readonly Attr: typeof Attr = Attr;
243
- public readonly SVGSVGElement: typeof SVGSVGElement = SVGSVGElement;
244
- public readonly SVGElement: typeof SVGElement = SVGElement;
245
- public readonly SVGGraphicsElement: typeof SVGGraphicsElement = SVGGraphicsElement;
246
- public readonly ShadowRoot: typeof ShadowRoot = ShadowRoot;
247
- public readonly ProcessingInstruction: typeof ProcessingInstruction = ProcessingInstruction;
248
- public readonly Element: typeof Element = Element;
249
- public readonly CharacterData: typeof CharacterData = CharacterData;
250
- public readonly DocumentType: typeof DocumentType = DocumentType;
251
- public readonly Document: new () => DocumentImplementation;
252
- public readonly HTMLDocument: new () => HTMLDocumentImplementation;
253
- public readonly XMLDocument: new () => XMLDocumentImplementation;
254
- public readonly SVGDocument: new () => SVGDocumentImplementation;
255
- public readonly Text: typeof TextImplementation;
256
- public readonly Comment: typeof CommentImplementation;
257
- public readonly Image: typeof ImageImplementation;
258
- public readonly DocumentFragment: typeof DocumentFragmentImplementation;
259
- public readonly Audio: typeof AudioImplementation;
258
+ public readonly Node = Node;
259
+ public readonly Attr = Attr;
260
+ public readonly SVGSVGElement = SVGSVGElement;
261
+ public readonly SVGElement = SVGElement;
262
+ public readonly SVGGraphicsElement = SVGGraphicsElement;
263
+ public readonly ShadowRoot = ShadowRoot;
264
+ public readonly ProcessingInstruction = ProcessingInstruction;
265
+ public readonly Element = Element;
266
+ public readonly CharacterData = CharacterData;
267
+ public readonly DocumentType = DocumentType;
268
+
269
+ // Nodes that can be created using "new" keyword (populated by WindowClassExtender)
270
+ public declare readonly Document: typeof Document;
271
+ public declare readonly HTMLDocument: typeof HTMLDocument;
272
+ public declare readonly XMLDocument: typeof XMLDocument;
273
+ public declare readonly SVGDocument: typeof SVGDocument;
274
+ public declare readonly DocumentFragment: typeof DocumentFragment;
275
+ public declare readonly Text: typeof Text;
276
+ public declare readonly Comment: typeof Comment;
277
+ public declare readonly Image: typeof Image;
278
+ public declare readonly Audio: typeof Audio;
260
279
 
261
280
  // Element classes
262
- public readonly HTMLAnchorElement: typeof HTMLAnchorElement = HTMLAnchorElement;
263
- public readonly HTMLButtonElement: typeof HTMLButtonElement = HTMLButtonElement;
264
- public readonly HTMLOptGroupElement: typeof HTMLOptGroupElement = HTMLOptGroupElement;
265
- public readonly HTMLOptionElement: typeof HTMLOptionElement = HTMLOptionElement;
266
- public readonly HTMLElement: typeof HTMLElement = HTMLElement;
267
- public readonly HTMLUnknownElement: typeof HTMLUnknownElement = HTMLUnknownElement;
268
- public readonly HTMLTemplateElement: typeof HTMLTemplateElement = HTMLTemplateElement;
269
- public readonly HTMLInputElement: typeof HTMLInputElement = HTMLInputElement;
270
- public readonly HTMLSelectElement: typeof HTMLSelectElement = HTMLSelectElement;
271
- public readonly HTMLTextAreaElement: typeof HTMLTextAreaElement = HTMLTextAreaElement;
272
- public readonly HTMLImageElement: typeof HTMLImageElement = HTMLImageElement;
273
- public readonly HTMLStyleElement: typeof HTMLStyleElement = HTMLStyleElement;
274
- public readonly HTMLLabelElement: typeof HTMLLabelElement = HTMLLabelElement;
275
- public readonly HTMLSlotElement: typeof HTMLSlotElement = HTMLSlotElement;
276
- public readonly HTMLMetaElement: typeof HTMLMetaElement = HTMLMetaElement;
277
- public readonly HTMLMediaElement: typeof HTMLMediaElement = HTMLMediaElement;
278
- public readonly HTMLAudioElement: typeof HTMLAudioElement = HTMLAudioElement;
279
- public readonly HTMLVideoElement: typeof HTMLVideoElement = HTMLVideoElement;
280
- public readonly HTMLBaseElement: typeof HTMLBaseElement = HTMLBaseElement;
281
- public readonly HTMLDialogElement: typeof HTMLDialogElement = HTMLDialogElement;
282
- public readonly HTMLScriptElement: typeof HTMLScriptElementImplementation;
283
- public readonly HTMLLinkElement: typeof HTMLLinkElementImplementation;
284
- public readonly HTMLIFrameElement: typeof HTMLIFrameElementImplementation;
285
- public readonly HTMLFormElement: typeof HTMLFormElementImplementation;
286
- public readonly HTMLUListElement: typeof HTMLUListElement = HTMLUListElement;
287
- public readonly HTMLTrackElement: typeof HTMLTrackElement = HTMLTrackElement;
288
- public readonly HTMLTableRowElement: typeof HTMLTableRowElement = HTMLTableRowElement;
289
- public readonly HTMLTitleElement: typeof HTMLTitleElement = HTMLTitleElement;
290
- public readonly HTMLTimeElement: typeof HTMLTimeElement = HTMLTimeElement;
291
- public readonly HTMLTableSectionElement: typeof HTMLTableSectionElement = HTMLTableSectionElement;
292
- public readonly HTMLTableCellElement: typeof HTMLTableCellElement = HTMLTableCellElement;
293
- public readonly HTMLTableElement: typeof HTMLTableElement = HTMLTableElement;
294
- public readonly HTMLSpanElement: typeof HTMLSpanElement = HTMLSpanElement;
295
- public readonly HTMLSourceElement: typeof HTMLSourceElement = HTMLSourceElement;
296
- public readonly HTMLQuoteElement: typeof HTMLQuoteElement = HTMLQuoteElement;
297
- public readonly HTMLProgressElement: typeof HTMLProgressElement = HTMLProgressElement;
298
- public readonly HTMLPreElement: typeof HTMLPreElement = HTMLPreElement;
299
- public readonly HTMLPictureElement: typeof HTMLPictureElement = HTMLPictureElement;
300
- public readonly HTMLParamElement: typeof HTMLParamElement = HTMLParamElement;
301
- public readonly HTMLParagraphElement: typeof HTMLParagraphElement = HTMLParagraphElement;
302
- public readonly HTMLOutputElement: typeof HTMLOutputElement = HTMLOutputElement;
303
- public readonly HTMLOListElement: typeof HTMLOListElement = HTMLOListElement;
304
- public readonly HTMLObjectElement: typeof HTMLObjectElement = HTMLObjectElement;
305
- public readonly HTMLMeterElement: typeof HTMLMeterElement = HTMLMeterElement;
306
- public readonly HTMLMenuElement: typeof HTMLMenuElement = HTMLMenuElement;
307
- public readonly HTMLMapElement: typeof HTMLMapElement = HTMLMapElement;
308
- public readonly HTMLLIElement: typeof HTMLLIElement = HTMLLIElement;
309
- public readonly HTMLLegendElement: typeof HTMLLegendElement = HTMLLegendElement;
310
- public readonly HTMLModElement: typeof HTMLModElement = HTMLModElement;
311
- public readonly HTMLHtmlElement: typeof HTMLHtmlElement = HTMLHtmlElement;
312
- public readonly HTMLHRElement: typeof HTMLHRElement = HTMLHRElement;
313
- public readonly HTMLHeadElement: typeof HTMLHeadElement = HTMLHeadElement;
314
- public readonly HTMLHeadingElement: typeof HTMLHeadingElement = HTMLHeadingElement;
315
- public readonly HTMLFieldSetElement: typeof HTMLFieldSetElement = HTMLFieldSetElement;
316
- public readonly HTMLEmbedElement: typeof HTMLEmbedElement = HTMLEmbedElement;
317
- public readonly HTMLDListElement: typeof HTMLDListElement = HTMLDListElement;
318
- public readonly HTMLDivElement: typeof HTMLDivElement = HTMLDivElement;
319
- public readonly HTMLDetailsElement: typeof HTMLDetailsElement = HTMLDetailsElement;
320
- public readonly HTMLDataListElement: typeof HTMLDataListElement = HTMLDataListElement;
321
- public readonly HTMLDataElement: typeof HTMLDataElement = HTMLDataElement;
322
- public readonly HTMLTableColElement: typeof HTMLTableColElement = HTMLTableColElement;
323
- public readonly HTMLTableCaptionElement: typeof HTMLTableCaptionElement = HTMLTableCaptionElement;
324
- public readonly HTMLCanvasElement: typeof HTMLCanvasElement = HTMLCanvasElement;
325
- public readonly HTMLBRElement: typeof HTMLBRElement = HTMLBRElement;
326
- public readonly HTMLBodyElement: typeof HTMLBodyElement = HTMLBodyElement;
327
- public readonly HTMLAreaElement: typeof HTMLAreaElement = HTMLAreaElement;
281
+ public readonly HTMLAnchorElement = HTMLAnchorElement;
282
+ public readonly HTMLButtonElement = HTMLButtonElement;
283
+ public readonly HTMLOptGroupElement = HTMLOptGroupElement;
284
+ public readonly HTMLOptionElement = HTMLOptionElement;
285
+ public readonly HTMLElement = HTMLElement;
286
+ public readonly HTMLUnknownElement = HTMLUnknownElement;
287
+ public readonly HTMLTemplateElement = HTMLTemplateElement;
288
+ public readonly HTMLInputElement = HTMLInputElement;
289
+ public readonly HTMLSelectElement = HTMLSelectElement;
290
+ public readonly HTMLTextAreaElement = HTMLTextAreaElement;
291
+ public readonly HTMLImageElement = HTMLImageElement;
292
+ public readonly HTMLStyleElement = HTMLStyleElement;
293
+ public readonly HTMLLabelElement = HTMLLabelElement;
294
+ public readonly HTMLSlotElement = HTMLSlotElement;
295
+ public readonly HTMLMetaElement = HTMLMetaElement;
296
+ public readonly HTMLMediaElement = HTMLMediaElement;
297
+ public readonly HTMLAudioElement = HTMLAudioElement;
298
+ public readonly HTMLVideoElement = HTMLVideoElement;
299
+ public readonly HTMLBaseElement = HTMLBaseElement;
300
+ public readonly HTMLDialogElement = HTMLDialogElement;
301
+ public readonly HTMLScriptElement = HTMLScriptElement;
302
+ public readonly HTMLLinkElement = HTMLLinkElement;
303
+ public readonly HTMLIFrameElement = HTMLIFrameElement;
304
+ public readonly HTMLFormElement = HTMLFormElement;
305
+ public readonly HTMLUListElement = HTMLUListElement;
306
+ public readonly HTMLTrackElement = HTMLTrackElement;
307
+ public readonly HTMLTableRowElement = HTMLTableRowElement;
308
+ public readonly HTMLTitleElement = HTMLTitleElement;
309
+ public readonly HTMLTimeElement = HTMLTimeElement;
310
+ public readonly HTMLTableSectionElement = HTMLTableSectionElement;
311
+ public readonly HTMLTableCellElement = HTMLTableCellElement;
312
+ public readonly HTMLTableElement = HTMLTableElement;
313
+ public readonly HTMLSpanElement = HTMLSpanElement;
314
+ public readonly HTMLSourceElement = HTMLSourceElement;
315
+ public readonly HTMLQuoteElement = HTMLQuoteElement;
316
+ public readonly HTMLProgressElement = HTMLProgressElement;
317
+ public readonly HTMLPreElement = HTMLPreElement;
318
+ public readonly HTMLPictureElement = HTMLPictureElement;
319
+ public readonly HTMLParamElement = HTMLParamElement;
320
+ public readonly HTMLParagraphElement = HTMLParagraphElement;
321
+ public readonly HTMLOutputElement = HTMLOutputElement;
322
+ public readonly HTMLOListElement = HTMLOListElement;
323
+ public readonly HTMLObjectElement = HTMLObjectElement;
324
+ public readonly HTMLMeterElement = HTMLMeterElement;
325
+ public readonly HTMLMenuElement = HTMLMenuElement;
326
+ public readonly HTMLMapElement = HTMLMapElement;
327
+ public readonly HTMLLIElement = HTMLLIElement;
328
+ public readonly HTMLLegendElement = HTMLLegendElement;
329
+ public readonly HTMLModElement = HTMLModElement;
330
+ public readonly HTMLHtmlElement = HTMLHtmlElement;
331
+ public readonly HTMLHRElement = HTMLHRElement;
332
+ public readonly HTMLHeadElement = HTMLHeadElement;
333
+ public readonly HTMLHeadingElement = HTMLHeadingElement;
334
+ public readonly HTMLFieldSetElement = HTMLFieldSetElement;
335
+ public readonly HTMLEmbedElement = HTMLEmbedElement;
336
+ public readonly HTMLDListElement = HTMLDListElement;
337
+ public readonly HTMLDivElement = HTMLDivElement;
338
+ public readonly HTMLDetailsElement = HTMLDetailsElement;
339
+ public readonly HTMLDataListElement = HTMLDataListElement;
340
+ public readonly HTMLDataElement = HTMLDataElement;
341
+ public readonly HTMLTableColElement = HTMLTableColElement;
342
+ public readonly HTMLTableCaptionElement = HTMLTableCaptionElement;
343
+ public readonly HTMLCanvasElement = HTMLCanvasElement;
344
+ public readonly HTMLBRElement = HTMLBRElement;
345
+ public readonly HTMLBodyElement = HTMLBodyElement;
346
+ public readonly HTMLAreaElement = HTMLAreaElement;
328
347
 
329
348
  // Event classes
330
349
  public readonly Event = Event;
@@ -388,39 +407,56 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
388
407
  public readonly WebGLContextEvent = Event;
389
408
  public readonly TextEvent = Event;
390
409
 
391
- // Other classes
392
- public readonly NamedNodeMap = NamedNodeMap;
393
- public readonly NodeFilter = NodeFilter;
394
- public readonly NodeIterator = NodeIterator;
395
- public readonly TreeWalker = TreeWalker;
396
- public readonly MutationObserver = MutationObserver;
410
+ // Other classes that has to be bound to the Window context (populated by WindowClassExtender)
411
+ public declare readonly NodeIterator: typeof NodeIterator;
412
+ public declare readonly TreeWalker: typeof TreeWalker;
413
+ public declare readonly MutationObserver: typeof MutationObserver;
414
+ public declare readonly CSSStyleDeclaration: typeof CSSStyleDeclaration;
415
+ public declare readonly MessagePort: typeof MessagePort;
416
+ public declare readonly DataTransfer: typeof DataTransfer;
417
+ public declare readonly DataTransferItem: typeof DataTransferItem;
418
+ public declare readonly DataTransferItemList: typeof DataTransferItemList;
419
+ public declare readonly XMLSerializer: typeof XMLSerializer;
420
+ public declare readonly CSSStyleSheet: typeof CSSStyleSheet;
421
+ public declare readonly DOMException: typeof DOMException;
422
+ public declare readonly CSSUnitValue: typeof CSSUnitValue;
423
+ public declare readonly Selection: typeof Selection;
424
+ public declare readonly Headers: typeof Headers;
425
+ public declare readonly Request: typeof Request;
426
+ public declare readonly Response: typeof Response;
427
+ public declare readonly EventTarget: typeof EventTarget;
428
+ public declare readonly XMLHttpRequestUpload: typeof XMLHttpRequestUpload;
429
+ public declare readonly XMLHttpRequestEventTarget: typeof XMLHttpRequestEventTarget;
430
+ public declare readonly AbortController: typeof AbortController;
431
+ public declare readonly AbortSignal: typeof AbortSignal;
432
+ public declare readonly FormData: typeof FormData;
433
+ public declare readonly PermissionStatus: typeof PermissionStatus;
434
+ public declare readonly ClipboardItem: typeof ClipboardItem;
435
+ public declare readonly XMLHttpRequest: typeof XMLHttpRequest;
436
+ public declare readonly DOMParser: typeof DOMParser;
437
+ public declare readonly Range: typeof Range;
438
+ public declare readonly VTTCue: typeof VTTCue;
439
+ public declare readonly FileReader: typeof FileReader;
440
+ public declare readonly MediaStream: typeof MediaStream;
441
+ public declare readonly MediaStreamTrack: typeof MediaStreamTrack;
442
+ public declare readonly CanvasCaptureMediaStreamTrack: typeof CanvasCaptureMediaStreamTrack;
443
+ public declare readonly NamedNodeMap: typeof NamedNodeMap;
444
+ public declare readonly TextTrack: typeof TextTrack;
445
+ public declare readonly TextTrackList: typeof TextTrackList;
446
+ public declare readonly TextTrackCue: typeof TextTrackCue;
447
+ public declare readonly RemotePlayback: typeof RemotePlayback;
448
+
449
+ // Other classes that don't have to be bound to the Window context
450
+ public readonly Permissions = Permissions;
451
+ public readonly History = History;
452
+ public readonly Navigator = Navigator;
453
+ public readonly Clipboard = Clipboard;
454
+ public readonly TimeRanges = TimeRanges;
455
+ public readonly TextTrackCueList = TextTrackCueList;
456
+ public readonly ValidityState = ValidityState;
457
+ public readonly MutationRecord = MutationRecord;
397
458
  public readonly IntersectionObserver = IntersectionObserver;
398
459
  public readonly IntersectionObserverEntry = IntersectionObserverEntry;
399
- public readonly MutationRecord = MutationRecord;
400
- public readonly CSSStyleDeclaration = CSSStyleDeclaration;
401
- public readonly EventTarget = EventTarget;
402
- public readonly MessagePort = MessagePort;
403
- public readonly DataTransfer = DataTransfer;
404
- public readonly DataTransferItem = DataTransferItem;
405
- public readonly DataTransferItemList = DataTransferItemList;
406
- public readonly URL = URL;
407
- public readonly Location = Location;
408
- public readonly CustomElementRegistry = CustomElementRegistry;
409
- public readonly Window = <typeof BrowserWindow>this.constructor;
410
- public readonly XMLSerializer = XMLSerializer;
411
- public readonly ResizeObserver = ResizeObserver;
412
- public readonly CSSStyleSheet = CSSStyleSheet;
413
- public readonly Blob = Blob;
414
- public readonly File = File;
415
- public readonly DOMException = DOMException;
416
- public readonly History = History;
417
- public readonly Screen = Screen;
418
- public readonly Storage = Storage;
419
- public readonly URLSearchParams = URLSearchParams;
420
- public readonly HTMLCollection = HTMLCollection;
421
- public readonly HTMLFormControlsCollection = HTMLFormControlsCollection;
422
- public readonly NodeList = NodeList;
423
- public readonly CSSUnitValue = CSSUnitValue;
424
460
  public readonly CSSRule = CSSRule;
425
461
  public readonly CSSContainerRule = CSSContainerRule;
426
462
  public readonly CSSFontFaceRule = CSSFontFaceRule;
@@ -429,62 +465,47 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
429
465
  public readonly CSSMediaRule = CSSMediaRule;
430
466
  public readonly CSSStyleRule = CSSStyleRule;
431
467
  public readonly CSSSupportsRule = CSSSupportsRule;
432
- public readonly Selection = Selection;
433
- public readonly Navigator = Navigator;
434
- public readonly MimeType = MimeType;
435
- public readonly MimeTypeArray = MimeTypeArray;
436
- public readonly Plugin = Plugin;
437
- public readonly PluginArray = PluginArray;
438
- public readonly FileList = FileList;
439
468
  public readonly DOMRect = DOMRect;
440
469
  public readonly DOMRectReadOnly = DOMRectReadOnly;
470
+ public readonly Plugin = Plugin;
471
+ public readonly PluginArray = PluginArray;
472
+ public readonly Location = Location;
473
+ public readonly CustomElementRegistry = CustomElementRegistry;
474
+ public readonly ResizeObserver = ResizeObserver;
475
+ public readonly URL = URL;
476
+ public readonly Blob = Blob;
477
+ public readonly File = File;
478
+ public readonly Storage = Storage;
479
+ public readonly MimeType = MimeType;
480
+ public readonly MimeTypeArray = MimeTypeArray;
481
+ public readonly NodeFilter = NodeFilter;
482
+ public readonly HTMLCollection = HTMLCollection;
483
+ public readonly HTMLFormControlCollection = HTMLFormControlsCollection;
484
+ public readonly HTMLOptionsCollection = HTMLOptionsCollection;
485
+ public readonly NodeList = NodeList;
441
486
  public readonly RadioNodeList = RadioNodeList;
442
- public readonly ValidityState = ValidityState;
443
- public readonly Headers = Headers;
444
- public readonly Request: new (input: IRequestInfo, init?: IRequestInit) => RequestImplementation;
445
- public readonly Response: {
446
- redirect: (url: string, status?: number) => ResponseImplementation;
447
- error: () => ResponseImplementation;
448
- json: (data: object, init?: IResponseInit) => ResponseImplementation;
449
- new (body?: IResponseBody, init?: IResponseInit): ResponseImplementation;
450
- };
451
- public readonly XMLHttpRequestUpload = XMLHttpRequestUpload;
452
- public readonly XMLHttpRequestEventTarget = XMLHttpRequestEventTarget;
453
- public readonly ReadableStream = ReadableStream;
487
+ public readonly FileList = FileList;
488
+ public readonly Screen = Screen;
489
+ public readonly Window = <typeof BrowserWindow>this.constructor;
490
+
491
+ // Node.js Classes
492
+ public readonly URLSearchParams = URLSearchParams;
454
493
  public readonly WritableStream = Stream.Writable;
494
+ public readonly ReadableStream = ReadableStream;
455
495
  public readonly TransformStream = Stream.Transform;
456
- public readonly AbortController = AbortController;
457
- public readonly AbortSignal = AbortSignal;
458
- public readonly FormData = FormData;
459
- public readonly Permissions = Permissions;
460
- public readonly PermissionStatus = PermissionStatus;
461
- public readonly Clipboard = Clipboard;
462
- public readonly ClipboardItem = ClipboardItem;
463
- public readonly XMLHttpRequest: new () => XMLHttpRequestImplementation;
464
- public readonly DOMParser: new () => DOMParserImplementation;
465
- public readonly Range: new () => RangeImplementation;
466
- public readonly VTTCue: new (
467
- startTime: number,
468
- endTime: number,
469
- text: string
470
- ) => VTTCueImplementation;
471
- public readonly TextTrack = TextTrack;
472
- public readonly TextTrackCue = TextTrackCue;
473
- public readonly TextTrackCueList = TextTrackCueList;
474
- public readonly FileReader: new () => FileReaderImplementation;
475
- public readonly TimeRanges = TimeRanges;
476
- public readonly RemotePlayback = RemotePlayback;
477
- public readonly MediaStream = MediaStream;
478
- public readonly MediaStreamTrack = MediaStreamTrack;
479
- public readonly TextTrackList = TextTrackList;
496
+ public readonly PerformanceObserver = PerformanceObserver;
497
+ public readonly PerformanceEntry = PerformanceEntry;
498
+ public readonly PerformanceObserverEntryList: new () => IPerformanceObserverEntryList = <
499
+ new () => IPerformanceObserverEntryList
500
+ >PerformanceObserverEntryList;
480
501
 
481
502
  // Events
482
503
  public onload: ((event: Event) => void) | null = null;
483
504
  public onerror: ((event: ErrorEvent) => void) | null = null;
484
505
 
485
506
  // Public properties.
486
- public readonly document: DocumentImplementation;
487
- public readonly customElements: CustomElementRegistry;
507
+ public readonly document: Document;
508
+ public readonly customElements: CustomElementRegistry = new CustomElementRegistry(this);
488
509
  public readonly window: BrowserWindow = this;
489
510
  public readonly globalThis: BrowserWindow = this;
490
511
  public readonly performance: typeof performance = performance;
@@ -497,7 +518,7 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
497
518
  public console: Console;
498
519
  public name = '';
499
520
 
500
- // Node.js Globals
521
+ // Node.js Globals (populated by VMGlobalPropertyScript)
501
522
  public declare Array: typeof Array;
502
523
  public declare ArrayBuffer: typeof ArrayBuffer;
503
524
  public declare Boolean: typeof Boolean;
@@ -562,10 +583,8 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
562
583
 
563
584
  // Used for tracking capture event listeners to improve performance when they are not used.
564
585
  // See EventTarget class.
565
- public [PropertySymbol.captureEventListenerCount]: { [eventType: string]: number } = {};
566
586
  public [PropertySymbol.mutationObservers]: MutationObserver[] = [];
567
587
  public readonly [PropertySymbol.readyStateManager] = new DocumentReadyStateManager(this);
568
- public [PropertySymbol.asyncTaskManager]: AsyncTaskManager | null = null;
569
588
  public [PropertySymbol.location]: Location;
570
589
  public [PropertySymbol.history]: History;
571
590
  public [PropertySymbol.navigator]: Navigator;
@@ -575,6 +594,8 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
575
594
  public [PropertySymbol.self]: BrowserWindow = this;
576
595
  public [PropertySymbol.top]: BrowserWindow = this;
577
596
  public [PropertySymbol.parent]: BrowserWindow = this;
597
+ public [PropertySymbol.window]: BrowserWindow = this;
598
+ public [PropertySymbol.internalId]: number = -1;
578
599
 
579
600
  // Private properties
580
601
  #browserFrame: IBrowserFrame;
@@ -584,6 +605,7 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
584
605
  #outerHeight: number | null = null;
585
606
  #devicePixelRatio: number | null = null;
586
607
  #zeroDelayTimeout: { timeouts: Array<Timeout> | null } = { timeouts: null };
608
+ #timerLoopStacks: string[] = [];
587
609
 
588
610
  /**
589
611
  * Constructor.
@@ -595,11 +617,9 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
595
617
  constructor(browserFrame: IBrowserFrame, options?: { url?: string }) {
596
618
  super();
597
619
 
598
- const asyncTaskManager = browserFrame[PropertySymbol.asyncTaskManager];
599
-
600
620
  this.#browserFrame = browserFrame;
601
621
 
602
- this.customElements = new CustomElementRegistry(this);
622
+ this.console = browserFrame.page.console;
603
623
 
604
624
  this[PropertySymbol.navigator] = new Navigator(this);
605
625
  this[PropertySymbol.screen] = new Screen();
@@ -607,143 +627,34 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
607
627
  this[PropertySymbol.localStorage] = new Storage();
608
628
  this[PropertySymbol.location] = new Location(this.#browserFrame, options?.url ?? 'about:blank');
609
629
  this[PropertySymbol.history] = new History(this.#browserFrame, this);
610
- this[PropertySymbol.asyncTaskManager] = asyncTaskManager;
611
630
 
612
- this.console = browserFrame.page.console;
613
-
614
- WindowBrowserSettingsReader.setSettings(this, this.#browserFrame.page.context.browser.settings);
615
-
616
- const window = this;
631
+ WindowBrowserContext.setWindowBrowserFrameRelation(this, this.#browserFrame);
617
632
 
618
633
  this[PropertySymbol.setupVMContext]();
619
634
 
620
- // Class overrides
621
- // For classes that need to be bound to the correct context to be instantiable using the "new" keyword.
622
-
623
- /* eslint-disable jsdoc/require-jsdoc */
624
-
625
- class Request extends RequestImplementation {
626
- constructor(input: IRequestInfo, init?: IRequestInit) {
627
- super({ window, asyncTaskManager }, input, init);
628
- }
629
- }
630
- class Response extends ResponseImplementation {
631
- protected static [PropertySymbol.window] = window;
632
- constructor(body?: IResponseBody, init?: IResponseInit) {
633
- super({ window, browserFrame }, body, init);
634
- }
635
- }
636
- class XMLHttpRequest extends XMLHttpRequestImplementation {
637
- constructor() {
638
- super({ window, browserFrame });
639
- }
640
- }
641
- class FileReader extends FileReaderImplementation {
642
- constructor() {
643
- super(window);
644
- }
645
- }
646
- class DOMParser extends DOMParserImplementation {
647
- constructor() {
648
- super(window);
649
- }
650
- }
651
- class Range extends RangeImplementation {
652
- constructor() {
653
- super(window);
654
- }
655
- }
656
- class VTTCue extends VTTCueImplementation {
657
- constructor(startTime: number, endTime: number, text: string) {
658
- super(window, startTime, endTime, text);
659
- }
660
- }
661
- class HTMLScriptElement extends HTMLScriptElementImplementation {
662
- constructor() {
663
- super(browserFrame);
664
- }
665
- }
666
- class HTMLLinkElement extends HTMLLinkElementImplementation {
667
- constructor() {
668
- super(browserFrame);
669
- }
670
- }
671
- class HTMLIFrameElement extends HTMLIFrameElementImplementation {
672
- constructor() {
673
- super(browserFrame);
674
- }
675
- }
676
- class HTMLFormElement extends HTMLFormElementImplementation {
677
- constructor() {
678
- super(browserFrame);
679
- }
680
- }
681
- class Document extends DocumentImplementation {
682
- constructor() {
683
- super({ window, browserFrame });
684
- }
685
- }
686
- class HTMLDocument extends HTMLDocumentImplementation {
687
- constructor() {
688
- super({ window, browserFrame });
689
- }
690
- }
691
- class XMLDocument extends XMLDocumentImplementation {
692
- constructor() {
693
- super({ window, browserFrame });
694
- }
695
- }
696
- class SVGDocument extends SVGDocumentImplementation {
697
- constructor() {
698
- super({ window, browserFrame });
699
- }
700
- }
701
-
702
- class Audio extends AudioImplementation {}
703
- class Image extends ImageImplementation {}
704
- class DocumentFragment extends DocumentFragmentImplementation {}
705
- class Text extends TextImplementation {}
706
- class Comment extends CommentImplementation {}
707
-
708
- /* eslint-enable jsdoc/require-jsdoc */
709
-
710
- this.Response = Response;
711
- this.Request = Request;
712
- this.Image = Image;
713
- this.Text = Text;
714
- this.Comment = Comment;
715
- this.DocumentFragment = DocumentFragment;
716
- this.FileReader = FileReader;
717
- this.DOMParser = DOMParser;
718
- this.VTTCue = VTTCue;
719
- this.XMLHttpRequest = XMLHttpRequest;
720
- this.Range = Range;
721
- this.Audio = Audio;
722
- this.HTMLScriptElement = HTMLScriptElement;
723
- this.HTMLLinkElement = HTMLLinkElement;
724
- this.HTMLIFrameElement = HTMLIFrameElement;
725
- this.HTMLFormElement = HTMLFormElement;
726
- this.Document = Document;
727
- this.HTMLDocument = HTMLDocument;
728
- this.XMLDocument = XMLDocument;
729
- this.SVGDocument = SVGDocument;
635
+ WindowClassExtender.extendClass(this);
730
636
 
731
637
  // Document
732
- this.document = new HTMLDocument();
638
+ this.document = new this.HTMLDocument();
733
639
  this.document[PropertySymbol.defaultView] = this;
734
640
 
735
- // Override owner document
736
- this.Audio[PropertySymbol.ownerDocument] = this.document;
737
- this.Image[PropertySymbol.ownerDocument] = this.document;
738
- this.DocumentFragment[PropertySymbol.ownerDocument] = this.document;
739
- this.Text[PropertySymbol.ownerDocument] = this.document;
740
- this.Comment[PropertySymbol.ownerDocument] = this.document;
741
-
742
641
  // Ready state manager
743
642
  this[PropertySymbol.readyStateManager].waitUntilComplete().then(() => {
744
643
  this.document[PropertySymbol.readyState] = DocumentReadyStateEnum.complete;
745
644
  this.document.dispatchEvent(new Event('readystatechange'));
746
- this.document.dispatchEvent(new Event('load', { bubbles: true }));
645
+
646
+ // Not sure why target is set to document here, but this is how it works in the browser
647
+ const loadEvent = new Event('load');
648
+
649
+ loadEvent[PropertySymbol.currentTarget] = this.document;
650
+ loadEvent[PropertySymbol.target] = this.document;
651
+ loadEvent[PropertySymbol.eventPhase] = EventPhaseEnum.atTarget;
652
+
653
+ this.dispatchEvent(loadEvent);
654
+
655
+ loadEvent[PropertySymbol.target] = null;
656
+ loadEvent[PropertySymbol.currentTarget] = null;
657
+ loadEvent[PropertySymbol.eventPhase] = EventPhaseEnum.none;
747
658
  });
748
659
 
749
660
  ClassMethodBinder.bindMethods(this, [EventTarget, BrowserWindow]);
@@ -1125,7 +1036,7 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1125
1036
  * @returns A new MediaQueryList.
1126
1037
  */
1127
1038
  public matchMedia(mediaQueryString: string): MediaQueryList {
1128
- return new MediaQueryList({ ownerWindow: this, media: mediaQueryString });
1039
+ return new MediaQueryList({ window: this, media: mediaQueryString });
1129
1040
  }
1130
1041
 
1131
1042
  /**
@@ -1137,6 +1048,21 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1137
1048
  * @returns Timeout ID.
1138
1049
  */
1139
1050
  public setTimeout(callback: Function, delay = 0, ...args: unknown[]): NodeJS.Timeout {
1051
+ if (this.closed) {
1052
+ return;
1053
+ }
1054
+
1055
+ const settings = this.#browserFrame.page?.context?.browser?.settings;
1056
+
1057
+ if (settings.timer.preventTimerLoops) {
1058
+ const stack = new Error().stack;
1059
+ const timerLoopStacks = this.#timerLoopStacks;
1060
+ if (timerLoopStacks.includes(stack)) {
1061
+ return;
1062
+ }
1063
+ timerLoopStacks.push(stack);
1064
+ }
1065
+
1140
1066
  // We can group timeouts with a delay of 0 into one timeout to improve performance.
1141
1067
  // Grouping timeouts will also improve the performance of the async task manager.
1142
1068
  // It also makes the async task manager more stable as many timeouts may cause waitUntilComplete() to be resolved too early.
@@ -1144,13 +1070,14 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1144
1070
  const zeroDelayTimeout = this.#zeroDelayTimeout;
1145
1071
 
1146
1072
  if (!zeroDelayTimeout.timeouts) {
1147
- const settings = this.#browserFrame.page?.context?.browser?.settings;
1148
1073
  const useTryCatch =
1149
1074
  !settings ||
1150
1075
  (!settings.disableErrorCapturing &&
1151
1076
  settings.errorCapture === BrowserErrorCaptureEnum.tryAndCatch);
1152
1077
 
1153
1078
  const id = TIMER.setTimeout(() => {
1079
+ // We need to call endTimer() before the callback as the callback might throw an error.
1080
+ this.#browserFrame[PropertySymbol.asyncTaskManager].endTimer(id);
1154
1081
  const timeouts = zeroDelayTimeout.timeouts;
1155
1082
  zeroDelayTimeout.timeouts = null;
1156
1083
  for (const timeout of timeouts) {
@@ -1160,7 +1087,6 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1160
1087
  timeout.callback();
1161
1088
  }
1162
1089
  }
1163
- this.#browserFrame[PropertySymbol.asyncTaskManager].endTimer(id);
1164
1090
  });
1165
1091
 
1166
1092
  zeroDelayTimeout.timeouts = [];
@@ -1174,7 +1100,6 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1174
1100
  return <NodeJS.Timeout>(<unknown>timeout);
1175
1101
  }
1176
1102
 
1177
- const settings = this.#browserFrame.page?.context?.browser?.settings;
1178
1103
  const useTryCatch =
1179
1104
  !settings ||
1180
1105
  (!settings.disableErrorCapturing &&
@@ -1182,12 +1107,13 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1182
1107
 
1183
1108
  const id = TIMER.setTimeout(
1184
1109
  () => {
1110
+ // We need to call endTimer() before the callback as the callback might throw an error.
1111
+ this.#browserFrame[PropertySymbol.asyncTaskManager].endTimer(id);
1185
1112
  if (useTryCatch) {
1186
1113
  WindowErrorUtility.captureError(this, () => callback(...args));
1187
1114
  } else {
1188
1115
  callback(...args);
1189
1116
  }
1190
- this.#browserFrame[PropertySymbol.asyncTaskManager].endTimer(id);
1191
1117
  },
1192
1118
  settings?.timer.maxTimeout !== -1 && delay && delay > settings?.timer.maxTimeout
1193
1119
  ? settings?.timer.maxTimeout
@@ -1232,6 +1158,9 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1232
1158
  * @returns Interval ID.
1233
1159
  */
1234
1160
  public setInterval(callback: Function, delay = 0, ...args: unknown[]): NodeJS.Timeout {
1161
+ if (this.closed) {
1162
+ return;
1163
+ }
1235
1164
  const settings = this.#browserFrame.page?.context?.browser?.settings;
1236
1165
  const useTryCatch =
1237
1166
  !settings ||
@@ -1286,18 +1215,32 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1286
1215
  * @returns ID.
1287
1216
  */
1288
1217
  public requestAnimationFrame(callback: (timestamp: number) => void): NodeJS.Immediate {
1218
+ if (this.closed) {
1219
+ return;
1220
+ }
1289
1221
  const settings = this.#browserFrame.page?.context?.browser?.settings;
1222
+
1223
+ if (settings.timer.preventTimerLoops) {
1224
+ const stack = new Error().stack;
1225
+ const timerLoopStacks = this.#timerLoopStacks;
1226
+ if (timerLoopStacks.includes(stack)) {
1227
+ return;
1228
+ }
1229
+ timerLoopStacks.push(stack);
1230
+ }
1231
+
1290
1232
  const useTryCatch =
1291
1233
  !settings ||
1292
1234
  (!settings.disableErrorCapturing &&
1293
1235
  settings.errorCapture === BrowserErrorCaptureEnum.tryAndCatch);
1294
1236
  const id = TIMER.setImmediate(() => {
1237
+ // We need to call endImmediate() before the callback as the callback might throw an error.
1238
+ this.#browserFrame[PropertySymbol.asyncTaskManager].endImmediate(id);
1295
1239
  if (useTryCatch) {
1296
1240
  WindowErrorUtility.captureError(this, () => callback(this.performance.now()));
1297
1241
  } else {
1298
1242
  callback(this.performance.now());
1299
1243
  }
1300
- this.#browserFrame[PropertySymbol.asyncTaskManager].endImmediate(id);
1301
1244
  });
1302
1245
  this.#browserFrame[PropertySymbol.asyncTaskManager].startImmediate(id);
1303
1246
  return id;
@@ -1324,6 +1267,9 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1324
1267
  * @param callback Function to be executed.
1325
1268
  */
1326
1269
  public queueMicrotask(callback: Function): void {
1270
+ if (this.closed) {
1271
+ return;
1272
+ }
1327
1273
  let isAborted = false;
1328
1274
  const taskId = this.#browserFrame[PropertySymbol.asyncTaskManager].startTask(
1329
1275
  () => (isAborted = true)
@@ -1335,12 +1281,13 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1335
1281
  settings.errorCapture === BrowserErrorCaptureEnum.tryAndCatch);
1336
1282
  TIMER.queueMicrotask(() => {
1337
1283
  if (!isAborted) {
1284
+ // We need to call endTask() before the callback as the callback might throw an error.
1285
+ this.#browserFrame[PropertySymbol.asyncTaskManager].endTask(taskId);
1338
1286
  if (useTryCatch) {
1339
1287
  WindowErrorUtility.captureError(this, <() => unknown>callback);
1340
1288
  } else {
1341
1289
  callback();
1342
1290
  }
1343
- this.#browserFrame[PropertySymbol.asyncTaskManager].endTask(taskId);
1344
1291
  }
1345
1292
  });
1346
1293
  }
@@ -1353,6 +1300,14 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1353
1300
  * @returns Promise.
1354
1301
  */
1355
1302
  public async fetch(url: IRequestInfo, init?: IRequestInit): Promise<Response> {
1303
+ if (this.closed) {
1304
+ return Promise.reject(
1305
+ new this.DOMException(
1306
+ "Failed to execute 'fetch' on 'Window': The window is closed.",
1307
+ DOMExceptionNameEnum.invalidStateError
1308
+ )
1309
+ );
1310
+ }
1356
1311
  return await new Fetch({
1357
1312
  browserFrame: this.#browserFrame,
1358
1313
  window: this,
@@ -1395,8 +1350,12 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1395
1350
  public postMessage(message: unknown, targetOrigin = '*', _transfer?: unknown[]): void {
1396
1351
  // TODO: Implement transfer.
1397
1352
 
1353
+ if (this.closed) {
1354
+ return;
1355
+ }
1356
+
1398
1357
  if (targetOrigin && targetOrigin !== '*' && this.location.origin !== targetOrigin) {
1399
- throw new DOMException(
1358
+ throw new this.DOMException(
1400
1359
  `Failed to execute 'postMessage' on 'Window': The target origin provided ('${targetOrigin}') does not match the recipient window\'s origin ('${this.location.origin}').`,
1401
1360
  DOMExceptionNameEnum.securityError
1402
1361
  );
@@ -1405,7 +1364,7 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1405
1364
  try {
1406
1365
  JSON.stringify(message);
1407
1366
  } catch (error) {
1408
- throw new DOMException(
1367
+ throw new this.DOMException(
1409
1368
  `Failed to execute 'postMessage' on 'Window': The provided message cannot be serialized.`,
1410
1369
  DOMExceptionNameEnum.invalidStateError
1411
1370
  );
@@ -1434,8 +1393,12 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1434
1393
  * @param height Height.
1435
1394
  */
1436
1395
  public resizeTo(width: number, height: number): void {
1396
+ if (this.closed) {
1397
+ return;
1398
+ }
1399
+
1437
1400
  if (!width || !height) {
1438
- throw new DOMException(
1401
+ throw new this.DOMException(
1439
1402
  `Failed to execute 'resizeTo' on 'Window': 2 arguments required, but only ${arguments.length} present.`
1440
1403
  );
1441
1404
  }
@@ -1453,8 +1416,12 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1453
1416
  * @param height Height.
1454
1417
  */
1455
1418
  public resizeBy(width: number, height: number): void {
1419
+ if (this.closed) {
1420
+ return;
1421
+ }
1422
+
1456
1423
  if (!width || !height) {
1457
- throw new DOMException(
1424
+ throw new this.DOMException(
1458
1425
  `Failed to execute 'resizeBy' on 'Window': 2 arguments required, but only ${arguments.length} present.`
1459
1426
  );
1460
1427
  }
@@ -1502,12 +1469,6 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1502
1469
  this[PropertySymbol.asyncTaskManager] = null;
1503
1470
  this[PropertySymbol.mutationObservers] = [];
1504
1471
 
1505
- this.Audio[PropertySymbol.ownerDocument] = null;
1506
- this.Image[PropertySymbol.ownerDocument] = null;
1507
- this.DocumentFragment[PropertySymbol.ownerDocument] = null;
1508
- this.Text[PropertySymbol.ownerDocument] = null;
1509
- this.Comment[PropertySymbol.ownerDocument] = null;
1510
-
1511
1472
  // Disconnects nodes from the document, so that they can be garbage collected.
1512
1473
  const childNodes = this.document[PropertySymbol.nodeArray];
1513
1474
 
@@ -1519,6 +1480,18 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1519
1480
  this.document.removeChild(childNodes[0]);
1520
1481
  }
1521
1482
 
1483
+ // Create some empty elements for scripts that are still running.
1484
+ const htmlElement = this.document.createElement('html');
1485
+ const headElement = this.document.createElement('head');
1486
+ const bodyElement = this.document.createElement('body');
1487
+ htmlElement.appendChild(headElement);
1488
+ htmlElement.appendChild(bodyElement);
1489
+ this.document.appendChild(htmlElement);
1490
+
1491
+ if (this.location[PropertySymbol.destroy]) {
1492
+ this.location[PropertySymbol.destroy]();
1493
+ }
1494
+
1522
1495
  if (this.customElements[PropertySymbol.destroy]) {
1523
1496
  this.customElements[PropertySymbol.destroy]();
1524
1497
  }
@@ -1532,6 +1505,6 @@ export default class BrowserWindow extends EventTarget implements INodeJSGlobal
1532
1505
  this.document[PropertySymbol.currentScript] = null;
1533
1506
  this.document[PropertySymbol.selection] = null;
1534
1507
 
1535
- WindowBrowserSettingsReader.removeSettings(this);
1508
+ WindowBrowserContext.removeWindowBrowserFrameRelation(this);
1536
1509
  }
1537
1510
  }