happy-dom 15.0.0 → 15.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of happy-dom might be problematic. Click here for more details.

Files changed (804) hide show
  1. package/cjs/ClassMethodBinder.cjs +8 -6
  2. package/cjs/ClassMethodBinder.cjs.map +1 -1
  3. package/cjs/ClassMethodBinder.d.ts +4 -2
  4. package/cjs/ClassMethodBinder.d.ts.map +1 -1
  5. package/cjs/PropertySymbol.cjs +20 -9
  6. package/cjs/PropertySymbol.cjs.map +1 -1
  7. package/cjs/PropertySymbol.d.ts +15 -4
  8. package/cjs/PropertySymbol.d.ts.map +1 -1
  9. package/cjs/async-task-manager/AsyncTaskManager.cjs +64 -35
  10. package/cjs/async-task-manager/AsyncTaskManager.cjs.map +1 -1
  11. package/cjs/async-task-manager/AsyncTaskManager.d.ts +11 -1
  12. package/cjs/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
  13. package/cjs/browser/Browser.cjs +30 -0
  14. package/cjs/browser/Browser.cjs.map +1 -1
  15. package/cjs/browser/Browser.d.ts +3 -0
  16. package/cjs/browser/Browser.d.ts.map +1 -1
  17. package/cjs/browser/BrowserFrame.cjs +3 -7
  18. package/cjs/browser/BrowserFrame.cjs.map +1 -1
  19. package/cjs/browser/BrowserFrame.d.ts +1 -4
  20. package/cjs/browser/BrowserFrame.d.ts.map +1 -1
  21. package/cjs/browser/DefaultBrowserSettings.cjs +2 -1
  22. package/cjs/browser/DefaultBrowserSettings.cjs.map +1 -1
  23. package/cjs/browser/DefaultBrowserSettings.d.ts.map +1 -1
  24. package/cjs/browser/detached-browser/DetachedBrowser.cjs +30 -0
  25. package/cjs/browser/detached-browser/DetachedBrowser.cjs.map +1 -1
  26. package/cjs/browser/detached-browser/DetachedBrowser.d.ts +3 -0
  27. package/cjs/browser/detached-browser/DetachedBrowser.d.ts.map +1 -1
  28. package/cjs/browser/detached-browser/DetachedBrowserFrame.cjs +3 -7
  29. package/cjs/browser/detached-browser/DetachedBrowserFrame.cjs.map +1 -1
  30. package/cjs/browser/detached-browser/DetachedBrowserFrame.d.ts +1 -4
  31. package/cjs/browser/detached-browser/DetachedBrowserFrame.d.ts.map +1 -1
  32. package/cjs/browser/types/IBrowser.cjs +24 -0
  33. package/cjs/browser/types/IBrowser.cjs.map +1 -1
  34. package/cjs/browser/types/IBrowser.d.ts +3 -0
  35. package/cjs/browser/types/IBrowser.d.ts.map +1 -1
  36. package/cjs/browser/types/IBrowserFrame.d.ts +0 -3
  37. package/cjs/browser/types/IBrowserFrame.d.ts.map +1 -1
  38. package/cjs/browser/types/IBrowserSettings.d.ts +1 -0
  39. package/cjs/browser/types/IBrowserSettings.d.ts.map +1 -1
  40. package/cjs/browser/utilities/BrowserExceptionObserver.cjs +100 -0
  41. package/cjs/browser/utilities/BrowserExceptionObserver.cjs.map +1 -0
  42. package/{lib/browser/utilities/BrowserFrameExceptionObserver.d.ts → cjs/browser/utilities/BrowserExceptionObserver.d.ts} +9 -7
  43. package/cjs/browser/utilities/BrowserExceptionObserver.d.ts.map +1 -0
  44. package/cjs/browser/utilities/BrowserFrameFactory.cjs +27 -35
  45. package/cjs/browser/utilities/BrowserFrameFactory.cjs.map +1 -1
  46. package/cjs/browser/utilities/BrowserFrameFactory.d.ts.map +1 -1
  47. package/cjs/browser/utilities/BrowserFrameNavigator.cjs +52 -29
  48. package/cjs/browser/utilities/BrowserFrameNavigator.cjs.map +1 -1
  49. package/cjs/browser/utilities/BrowserFrameNavigator.d.ts.map +1 -1
  50. package/cjs/clipboard/Clipboard.cjs +18 -15
  51. package/cjs/clipboard/Clipboard.cjs.map +1 -1
  52. package/cjs/clipboard/Clipboard.d.ts +2 -2
  53. package/cjs/clipboard/Clipboard.d.ts.map +1 -1
  54. package/cjs/css/declaration/AbstractCSSStyleDeclaration.cjs +27 -4
  55. package/cjs/css/declaration/AbstractCSSStyleDeclaration.cjs.map +1 -1
  56. package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.cjs +6 -5
  57. package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.cjs.map +1 -1
  58. package/cjs/css/declaration/element-style/CSSStyleDeclarationElementStyle.d.ts.map +1 -1
  59. package/cjs/css/declaration/measurement-converter/CSSMeasurementConverter.cjs +5 -5
  60. package/cjs/css/declaration/measurement-converter/CSSMeasurementConverter.cjs.map +1 -1
  61. package/cjs/css/declaration/measurement-converter/CSSMeasurementConverter.d.ts +2 -2
  62. package/cjs/css/declaration/measurement-converter/CSSMeasurementConverter.d.ts.map +1 -1
  63. package/cjs/custom-element/CustomElementRegistry.cjs +37 -17
  64. package/cjs/custom-element/CustomElementRegistry.cjs.map +1 -1
  65. package/cjs/custom-element/CustomElementRegistry.d.ts +2 -3
  66. package/cjs/custom-element/CustomElementRegistry.d.ts.map +1 -1
  67. package/cjs/dom-implementation/DOMImplementation.cjs +12 -7
  68. package/cjs/dom-implementation/DOMImplementation.cjs.map +1 -1
  69. package/cjs/dom-implementation/DOMImplementation.d.ts +7 -3
  70. package/cjs/dom-implementation/DOMImplementation.d.ts.map +1 -1
  71. package/cjs/dom-parser/DOMParser.cjs +6 -15
  72. package/cjs/dom-parser/DOMParser.cjs.map +1 -1
  73. package/cjs/dom-parser/DOMParser.d.ts +2 -6
  74. package/cjs/dom-parser/DOMParser.d.ts.map +1 -1
  75. package/cjs/event/Event.cjs +76 -18
  76. package/cjs/event/Event.cjs.map +1 -1
  77. package/cjs/event/Event.d.ts +49 -7
  78. package/cjs/event/Event.d.ts.map +1 -1
  79. package/cjs/event/EventTarget.cjs +153 -141
  80. package/cjs/event/EventTarget.cjs.map +1 -1
  81. package/cjs/event/EventTarget.d.ts +12 -8
  82. package/cjs/event/EventTarget.d.ts.map +1 -1
  83. package/cjs/event/MessagePort.cjs.map +1 -1
  84. package/cjs/event/MessagePort.d.ts +1 -2
  85. package/cjs/event/MessagePort.d.ts.map +1 -1
  86. package/cjs/event/{IEventListener.cjs → TEventListener.cjs} +1 -1
  87. package/cjs/event/TEventListener.cjs.map +1 -0
  88. package/cjs/event/TEventListener.d.ts +5 -0
  89. package/cjs/event/TEventListener.d.ts.map +1 -0
  90. package/cjs/event/TEventListenerFunction.cjs +3 -0
  91. package/cjs/event/TEventListenerFunction.cjs.map +1 -0
  92. package/cjs/event/TEventListenerFunction.d.ts +4 -0
  93. package/cjs/event/TEventListenerFunction.d.ts.map +1 -0
  94. package/cjs/event/{IMessagePort.cjs → TEventListenerObject.cjs} +1 -1
  95. package/cjs/event/TEventListenerObject.cjs.map +1 -0
  96. package/cjs/event/TEventListenerObject.d.ts +6 -0
  97. package/cjs/event/TEventListenerObject.d.ts.map +1 -0
  98. package/cjs/event/events/CustomEvent.cjs +38 -6
  99. package/cjs/event/events/CustomEvent.cjs.map +1 -1
  100. package/cjs/event/events/CustomEvent.d.ts +8 -1
  101. package/cjs/event/events/CustomEvent.d.ts.map +1 -1
  102. package/cjs/event/events/IErrorEventInit.d.ts.map +1 -1
  103. package/cjs/event/events/IMessageEventInit.d.ts +2 -2
  104. package/cjs/event/events/IMessageEventInit.d.ts.map +1 -1
  105. package/cjs/event/events/MessageEvent.cjs.map +1 -1
  106. package/cjs/event/events/MessageEvent.d.ts +2 -2
  107. package/cjs/event/events/MessageEvent.d.ts.map +1 -1
  108. package/cjs/fetch/AbortController.cjs +2 -11
  109. package/cjs/fetch/AbortController.cjs.map +1 -1
  110. package/cjs/fetch/AbortController.d.ts +3 -4
  111. package/cjs/fetch/AbortController.d.ts.map +1 -1
  112. package/cjs/fetch/AbortSignal.cjs +48 -4
  113. package/cjs/fetch/AbortSignal.cjs.map +1 -1
  114. package/cjs/fetch/AbortSignal.d.ts +19 -0
  115. package/cjs/fetch/AbortSignal.d.ts.map +1 -1
  116. package/cjs/fetch/Fetch.cjs +24 -14
  117. package/cjs/fetch/Fetch.cjs.map +1 -1
  118. package/cjs/fetch/Fetch.d.ts.map +1 -1
  119. package/cjs/fetch/Request.cjs +62 -45
  120. package/cjs/fetch/Request.cjs.map +1 -1
  121. package/cjs/fetch/Request.d.ts +3 -14
  122. package/cjs/fetch/Request.d.ts.map +1 -1
  123. package/cjs/fetch/ResourceFetch.cjs +2 -3
  124. package/cjs/fetch/ResourceFetch.cjs.map +1 -1
  125. package/cjs/fetch/ResourceFetch.d.ts.map +1 -1
  126. package/cjs/fetch/Response.cjs +63 -40
  127. package/cjs/fetch/Response.cjs.map +1 -1
  128. package/cjs/fetch/Response.d.ts +3 -10
  129. package/cjs/fetch/Response.d.ts.map +1 -1
  130. package/cjs/fetch/SyncFetch.cjs +12 -13
  131. package/cjs/fetch/SyncFetch.cjs.map +1 -1
  132. package/cjs/fetch/SyncFetch.d.ts.map +1 -1
  133. package/cjs/fetch/multipart/MultipartFormDataParser.cjs +12 -6
  134. package/cjs/fetch/multipart/MultipartFormDataParser.cjs.map +1 -1
  135. package/cjs/fetch/multipart/MultipartFormDataParser.d.ts +3 -1
  136. package/cjs/fetch/multipart/MultipartFormDataParser.d.ts.map +1 -1
  137. package/cjs/fetch/multipart/MultipartReader.cjs +5 -3
  138. package/cjs/fetch/multipart/MultipartReader.cjs.map +1 -1
  139. package/cjs/fetch/multipart/MultipartReader.d.ts +4 -1
  140. package/cjs/fetch/multipart/MultipartReader.d.ts.map +1 -1
  141. package/cjs/fetch/utilities/FetchBodyUtility.cjs +10 -5
  142. package/cjs/fetch/utilities/FetchBodyUtility.cjs.map +1 -1
  143. package/cjs/fetch/utilities/FetchBodyUtility.d.ts +5 -2
  144. package/cjs/fetch/utilities/FetchBodyUtility.d.ts.map +1 -1
  145. package/cjs/file/FileReader.cjs +11 -11
  146. package/cjs/file/FileReader.cjs.map +1 -1
  147. package/cjs/file/FileReader.d.ts +1 -4
  148. package/cjs/file/FileReader.d.ts.map +1 -1
  149. package/cjs/history/History.cjs +28 -14
  150. package/cjs/history/History.cjs.map +1 -1
  151. package/cjs/history/History.d.ts +2 -2
  152. package/cjs/history/History.d.ts.map +1 -1
  153. package/cjs/index.d.ts +2 -2
  154. package/cjs/location/Location.cjs +43 -22
  155. package/cjs/location/Location.cjs.map +1 -1
  156. package/cjs/location/Location.d.ts +4 -0
  157. package/cjs/location/Location.d.ts.map +1 -1
  158. package/cjs/match-media/MediaQueryItem.cjs +26 -26
  159. package/cjs/match-media/MediaQueryItem.cjs.map +1 -1
  160. package/cjs/match-media/MediaQueryItem.d.ts +3 -3
  161. package/cjs/match-media/MediaQueryItem.d.ts.map +1 -1
  162. package/cjs/match-media/MediaQueryList.cjs +7 -7
  163. package/cjs/match-media/MediaQueryList.cjs.map +1 -1
  164. package/cjs/match-media/MediaQueryList.d.ts +5 -5
  165. package/cjs/match-media/MediaQueryList.d.ts.map +1 -1
  166. package/cjs/match-media/MediaQueryParser.cjs +4 -4
  167. package/cjs/match-media/MediaQueryParser.cjs.map +1 -1
  168. package/cjs/match-media/MediaQueryParser.d.ts +2 -2
  169. package/cjs/match-media/MediaQueryParser.d.ts.map +1 -1
  170. package/cjs/mutation-observer/MutationObserver.cjs +17 -15
  171. package/cjs/mutation-observer/MutationObserver.cjs.map +1 -1
  172. package/cjs/mutation-observer/MutationObserver.d.ts +3 -0
  173. package/cjs/mutation-observer/MutationObserver.d.ts.map +1 -1
  174. package/cjs/navigator/Navigator.cjs +13 -10
  175. package/cjs/navigator/Navigator.cjs.map +1 -1
  176. package/cjs/navigator/Navigator.d.ts +2 -2
  177. package/cjs/navigator/Navigator.d.ts.map +1 -1
  178. package/cjs/nodes/NodeFactory.cjs +1 -1
  179. package/cjs/nodes/NodeFactory.cjs.map +1 -1
  180. package/cjs/nodes/document/Document.cjs +69 -51
  181. package/cjs/nodes/document/Document.cjs.map +1 -1
  182. package/cjs/nodes/document/Document.d.ts +9 -16
  183. package/cjs/nodes/document/Document.d.ts.map +1 -1
  184. package/cjs/nodes/document/DocumentReadyStateManager.cjs +12 -10
  185. package/cjs/nodes/document/DocumentReadyStateManager.cjs.map +1 -1
  186. package/cjs/nodes/document/DocumentReadyStateManager.d.ts.map +1 -1
  187. package/cjs/nodes/element/Element.cjs +33 -20
  188. package/cjs/nodes/element/Element.cjs.map +1 -1
  189. package/cjs/nodes/element/Element.d.ts +7 -3
  190. package/cjs/nodes/element/Element.d.ts.map +1 -1
  191. package/cjs/nodes/element/HTMLCollection.cjs +1 -4
  192. package/cjs/nodes/element/HTMLCollection.cjs.map +1 -1
  193. package/cjs/nodes/element/HTMLCollection.d.ts.map +1 -1
  194. package/cjs/nodes/element/NamedNodeMap.cjs +4 -0
  195. package/cjs/nodes/element/NamedNodeMap.cjs.map +1 -1
  196. package/cjs/nodes/element/NamedNodeMap.d.ts.map +1 -1
  197. package/cjs/nodes/element/NamedNodeMapProxyFactory.cjs +0 -9
  198. package/cjs/nodes/element/NamedNodeMapProxyFactory.cjs.map +1 -1
  199. package/cjs/nodes/element/NamedNodeMapProxyFactory.d.ts.map +1 -1
  200. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs +5 -5
  201. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs.map +1 -1
  202. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
  203. package/cjs/nodes/html-area-element/HTMLAreaElement.cjs +7 -8
  204. package/cjs/nodes/html-area-element/HTMLAreaElement.cjs.map +1 -1
  205. package/cjs/nodes/html-area-element/HTMLAreaElement.d.ts.map +1 -1
  206. package/cjs/nodes/html-audio-element/Audio.cjs +28 -0
  207. package/cjs/nodes/html-audio-element/Audio.cjs.map +1 -1
  208. package/cjs/nodes/html-audio-element/Audio.d.ts +4 -0
  209. package/cjs/nodes/html-audio-element/Audio.d.ts.map +1 -1
  210. package/cjs/nodes/html-button-element/HTMLButtonElement.cjs +63 -35
  211. package/cjs/nodes/html-button-element/HTMLButtonElement.cjs.map +1 -1
  212. package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts +27 -3
  213. package/cjs/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
  214. package/cjs/nodes/html-canvas-element/HTMLCanvasElement.cjs +2 -4
  215. package/cjs/nodes/html-canvas-element/HTMLCanvasElement.cjs.map +1 -1
  216. package/cjs/nodes/html-canvas-element/HTMLCanvasElement.d.ts.map +1 -1
  217. package/cjs/nodes/html-document/HTMLDocument.cjs +2 -6
  218. package/cjs/nodes/html-document/HTMLDocument.cjs.map +1 -1
  219. package/cjs/nodes/html-document/HTMLDocument.d.ts +1 -10
  220. package/cjs/nodes/html-document/HTMLDocument.d.ts.map +1 -1
  221. package/cjs/nodes/html-element/HTMLElement.cjs +130 -89
  222. package/cjs/nodes/html-element/HTMLElement.cjs.map +1 -1
  223. package/cjs/nodes/html-element/HTMLElement.d.ts +14 -2
  224. package/cjs/nodes/html-element/HTMLElement.d.ts.map +1 -1
  225. package/cjs/nodes/html-form-element/HTMLFormElement.cjs +6 -7
  226. package/cjs/nodes/html-form-element/HTMLFormElement.cjs.map +1 -1
  227. package/cjs/nodes/html-form-element/HTMLFormElement.d.ts +1 -3
  228. package/cjs/nodes/html-form-element/HTMLFormElement.d.ts.map +1 -1
  229. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs +30 -38
  230. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs.map +1 -1
  231. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts +0 -6
  232. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
  233. package/cjs/nodes/html-image-element/Image.cjs +28 -0
  234. package/cjs/nodes/html-image-element/Image.cjs.map +1 -1
  235. package/cjs/nodes/html-image-element/Image.d.ts +4 -0
  236. package/cjs/nodes/html-image-element/Image.d.ts.map +1 -1
  237. package/cjs/nodes/html-input-element/HTMLInputElement.cjs +88 -56
  238. package/cjs/nodes/html-input-element/HTMLInputElement.cjs.map +1 -1
  239. package/cjs/nodes/html-input-element/HTMLInputElement.d.ts +25 -0
  240. package/cjs/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
  241. package/cjs/nodes/html-label-element/HTMLLabelElement.cjs +4 -3
  242. package/cjs/nodes/html-label-element/HTMLLabelElement.cjs.map +1 -1
  243. package/cjs/nodes/html-label-element/HTMLLabelElement.d.ts +8 -1
  244. package/cjs/nodes/html-label-element/HTMLLabelElement.d.ts.map +1 -1
  245. package/cjs/nodes/html-link-element/HTMLLinkElement.cjs +10 -16
  246. package/cjs/nodes/html-link-element/HTMLLinkElement.cjs.map +1 -1
  247. package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts +0 -6
  248. package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
  249. package/cjs/nodes/html-media-element/HTMLMediaElement.cjs +12 -16
  250. package/cjs/nodes/html-media-element/HTMLMediaElement.cjs.map +1 -1
  251. package/cjs/nodes/html-media-element/HTMLMediaElement.d.ts.map +1 -1
  252. package/cjs/nodes/html-media-element/MediaStream.cjs +3 -0
  253. package/cjs/nodes/html-media-element/MediaStream.cjs.map +1 -1
  254. package/cjs/nodes/html-media-element/MediaStream.d.ts.map +1 -1
  255. package/cjs/nodes/html-media-element/MediaStreamTrack.cjs +3 -0
  256. package/cjs/nodes/html-media-element/MediaStreamTrack.cjs.map +1 -1
  257. package/cjs/nodes/html-media-element/MediaStreamTrack.d.ts.map +1 -1
  258. package/cjs/nodes/html-media-element/TextTrack.cjs +3 -0
  259. package/cjs/nodes/html-media-element/TextTrack.cjs.map +1 -1
  260. package/cjs/nodes/html-media-element/TextTrack.d.ts.map +1 -1
  261. package/cjs/nodes/html-media-element/TextTrackCue.cjs +3 -0
  262. package/cjs/nodes/html-media-element/TextTrackCue.cjs.map +1 -1
  263. package/cjs/nodes/html-media-element/TextTrackCue.d.ts.map +1 -1
  264. package/cjs/nodes/html-media-element/VTTCue.cjs +7 -8
  265. package/cjs/nodes/html-media-element/VTTCue.cjs.map +1 -1
  266. package/cjs/nodes/html-media-element/VTTCue.d.ts +1 -4
  267. package/cjs/nodes/html-media-element/VTTCue.d.ts.map +1 -1
  268. package/cjs/nodes/html-meter-element/HTMLMeterElement.cjs +30 -6
  269. package/cjs/nodes/html-meter-element/HTMLMeterElement.cjs.map +1 -1
  270. package/cjs/nodes/html-meter-element/HTMLMeterElement.d.ts.map +1 -1
  271. package/cjs/nodes/html-progress-element/HTMLProgressElement.cjs +26 -2
  272. package/cjs/nodes/html-progress-element/HTMLProgressElement.cjs.map +1 -1
  273. package/cjs/nodes/html-progress-element/HTMLProgressElement.d.ts.map +1 -1
  274. package/cjs/nodes/html-script-element/HTMLScriptElement.cjs +21 -27
  275. package/cjs/nodes/html-script-element/HTMLScriptElement.cjs.map +1 -1
  276. package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts +0 -6
  277. package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
  278. package/cjs/nodes/html-select-element/HTMLSelectElement.cjs +5 -5
  279. package/cjs/nodes/html-select-element/HTMLSelectElement.cjs.map +1 -1
  280. package/cjs/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
  281. package/cjs/nodes/html-table-element/HTMLTableElement.cjs +8 -9
  282. package/cjs/nodes/html-table-element/HTMLTableElement.cjs.map +1 -1
  283. package/cjs/nodes/html-table-element/HTMLTableElement.d.ts.map +1 -1
  284. package/cjs/nodes/html-table-row-element/HTMLTableRowElement.cjs +5 -6
  285. package/cjs/nodes/html-table-row-element/HTMLTableRowElement.cjs.map +1 -1
  286. package/cjs/nodes/html-table-row-element/HTMLTableRowElement.d.ts.map +1 -1
  287. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.cjs +1 -2
  288. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.cjs.map +1 -1
  289. package/cjs/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
  290. package/cjs/nodes/html-track-element/HTMLTrackElement.cjs +1 -2
  291. package/cjs/nodes/html-track-element/HTMLTrackElement.cjs.map +1 -1
  292. package/cjs/nodes/node/Node.cjs +23 -22
  293. package/cjs/nodes/node/Node.cjs.map +1 -1
  294. package/cjs/nodes/node/Node.d.ts +1 -2
  295. package/cjs/nodes/node/Node.d.ts.map +1 -1
  296. package/cjs/nodes/node/NodeList.cjs +4 -6
  297. package/cjs/nodes/node/NodeList.cjs.map +1 -1
  298. package/cjs/nodes/node/NodeList.d.ts.map +1 -1
  299. package/cjs/nodes/text/Text.cjs +1 -2
  300. package/cjs/nodes/text/Text.cjs.map +1 -1
  301. package/cjs/nodes/text/Text.d.ts.map +1 -1
  302. package/cjs/permissions/Permissions.cjs +13 -2
  303. package/cjs/permissions/Permissions.cjs.map +1 -1
  304. package/cjs/permissions/Permissions.d.ts +7 -0
  305. package/cjs/permissions/Permissions.d.ts.map +1 -1
  306. package/cjs/query-selector/QuerySelector.cjs +12 -10
  307. package/cjs/query-selector/QuerySelector.cjs.map +1 -1
  308. package/cjs/query-selector/QuerySelector.d.ts.map +1 -1
  309. package/cjs/range/Range.cjs +26 -23
  310. package/cjs/range/Range.cjs.map +1 -1
  311. package/cjs/range/Range.d.ts +2 -2
  312. package/cjs/range/Range.d.ts.map +1 -1
  313. package/cjs/selection/Selection.cjs +16 -17
  314. package/cjs/selection/Selection.cjs.map +1 -1
  315. package/cjs/selection/Selection.d.ts.map +1 -1
  316. package/cjs/window/BrowserWindow.cjs +136 -266
  317. package/cjs/window/BrowserWindow.cjs.map +1 -1
  318. package/cjs/window/BrowserWindow.d.ts +115 -117
  319. package/cjs/window/BrowserWindow.d.ts.map +1 -1
  320. package/cjs/window/VMGlobalPropertyScript.cjs +0 -1
  321. package/cjs/window/VMGlobalPropertyScript.cjs.map +1 -1
  322. package/cjs/window/VMGlobalPropertyScript.d.ts.map +1 -1
  323. package/cjs/window/WindowBrowserContext.cjs +117 -0
  324. package/cjs/window/WindowBrowserContext.cjs.map +1 -0
  325. package/cjs/window/WindowBrowserContext.d.ts +75 -0
  326. package/cjs/window/WindowBrowserContext.d.ts.map +1 -0
  327. package/cjs/window/WindowClassExtender.cjs +332 -0
  328. package/cjs/window/WindowClassExtender.cjs.map +1 -0
  329. package/cjs/window/WindowClassExtender.d.ts +15 -0
  330. package/cjs/window/WindowClassExtender.d.ts.map +1 -0
  331. package/cjs/window/WindowPageOpenUtility.cjs +11 -1
  332. package/cjs/window/WindowPageOpenUtility.cjs.map +1 -1
  333. package/cjs/window/WindowPageOpenUtility.d.ts.map +1 -1
  334. package/cjs/xml-http-request/XMLHttpRequest.cjs +33 -33
  335. package/cjs/xml-http-request/XMLHttpRequest.cjs.map +1 -1
  336. package/cjs/xml-http-request/XMLHttpRequest.d.ts +2 -11
  337. package/cjs/xml-http-request/XMLHttpRequest.d.ts.map +1 -1
  338. package/lib/ClassMethodBinder.d.ts +4 -2
  339. package/lib/ClassMethodBinder.d.ts.map +1 -1
  340. package/lib/ClassMethodBinder.js +8 -6
  341. package/lib/ClassMethodBinder.js.map +1 -1
  342. package/lib/PropertySymbol.d.ts +15 -4
  343. package/lib/PropertySymbol.d.ts.map +1 -1
  344. package/lib/PropertySymbol.js +15 -4
  345. package/lib/PropertySymbol.js.map +1 -1
  346. package/lib/async-task-manager/AsyncTaskManager.d.ts +11 -1
  347. package/lib/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
  348. package/lib/async-task-manager/AsyncTaskManager.js +64 -35
  349. package/lib/async-task-manager/AsyncTaskManager.js.map +1 -1
  350. package/lib/browser/Browser.d.ts +3 -0
  351. package/lib/browser/Browser.d.ts.map +1 -1
  352. package/lib/browser/Browser.js +7 -0
  353. package/lib/browser/Browser.js.map +1 -1
  354. package/lib/browser/BrowserFrame.d.ts +1 -4
  355. package/lib/browser/BrowserFrame.d.ts.map +1 -1
  356. package/lib/browser/BrowserFrame.js +3 -7
  357. package/lib/browser/BrowserFrame.js.map +1 -1
  358. package/lib/browser/DefaultBrowserSettings.d.ts.map +1 -1
  359. package/lib/browser/DefaultBrowserSettings.js +2 -1
  360. package/lib/browser/DefaultBrowserSettings.js.map +1 -1
  361. package/lib/browser/detached-browser/DetachedBrowser.d.ts +3 -0
  362. package/lib/browser/detached-browser/DetachedBrowser.d.ts.map +1 -1
  363. package/lib/browser/detached-browser/DetachedBrowser.js +7 -0
  364. package/lib/browser/detached-browser/DetachedBrowser.js.map +1 -1
  365. package/lib/browser/detached-browser/DetachedBrowserFrame.d.ts +1 -4
  366. package/lib/browser/detached-browser/DetachedBrowserFrame.d.ts.map +1 -1
  367. package/lib/browser/detached-browser/DetachedBrowserFrame.js +3 -7
  368. package/lib/browser/detached-browser/DetachedBrowserFrame.js.map +1 -1
  369. package/lib/browser/types/IBrowser.d.ts +3 -0
  370. package/lib/browser/types/IBrowser.d.ts.map +1 -1
  371. package/lib/browser/types/IBrowser.js +1 -1
  372. package/lib/browser/types/IBrowser.js.map +1 -1
  373. package/lib/browser/types/IBrowserFrame.d.ts +0 -3
  374. package/lib/browser/types/IBrowserFrame.d.ts.map +1 -1
  375. package/lib/browser/types/IBrowserSettings.d.ts +1 -0
  376. package/lib/browser/types/IBrowserSettings.d.ts.map +1 -1
  377. package/{cjs/browser/utilities/BrowserFrameExceptionObserver.d.ts → lib/browser/utilities/BrowserExceptionObserver.d.ts} +9 -7
  378. package/lib/browser/utilities/BrowserExceptionObserver.d.ts.map +1 -0
  379. package/lib/browser/utilities/BrowserExceptionObserver.js +97 -0
  380. package/lib/browser/utilities/BrowserExceptionObserver.js.map +1 -0
  381. package/lib/browser/utilities/BrowserFrameFactory.d.ts.map +1 -1
  382. package/lib/browser/utilities/BrowserFrameFactory.js +27 -35
  383. package/lib/browser/utilities/BrowserFrameFactory.js.map +1 -1
  384. package/lib/browser/utilities/BrowserFrameNavigator.d.ts.map +1 -1
  385. package/lib/browser/utilities/BrowserFrameNavigator.js +52 -29
  386. package/lib/browser/utilities/BrowserFrameNavigator.js.map +1 -1
  387. package/lib/clipboard/Clipboard.d.ts +2 -2
  388. package/lib/clipboard/Clipboard.d.ts.map +1 -1
  389. package/lib/clipboard/Clipboard.js +18 -15
  390. package/lib/clipboard/Clipboard.js.map +1 -1
  391. package/lib/css/declaration/AbstractCSSStyleDeclaration.js +4 -4
  392. package/lib/css/declaration/AbstractCSSStyleDeclaration.js.map +1 -1
  393. package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.d.ts.map +1 -1
  394. package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.js +6 -5
  395. package/lib/css/declaration/element-style/CSSStyleDeclarationElementStyle.js.map +1 -1
  396. package/lib/css/declaration/measurement-converter/CSSMeasurementConverter.d.ts +2 -2
  397. package/lib/css/declaration/measurement-converter/CSSMeasurementConverter.d.ts.map +1 -1
  398. package/lib/css/declaration/measurement-converter/CSSMeasurementConverter.js +5 -5
  399. package/lib/css/declaration/measurement-converter/CSSMeasurementConverter.js.map +1 -1
  400. package/lib/custom-element/CustomElementRegistry.d.ts +2 -3
  401. package/lib/custom-element/CustomElementRegistry.d.ts.map +1 -1
  402. package/lib/custom-element/CustomElementRegistry.js +37 -17
  403. package/lib/custom-element/CustomElementRegistry.js.map +1 -1
  404. package/lib/dom-implementation/DOMImplementation.d.ts +7 -3
  405. package/lib/dom-implementation/DOMImplementation.d.ts.map +1 -1
  406. package/lib/dom-implementation/DOMImplementation.js +12 -7
  407. package/lib/dom-implementation/DOMImplementation.js.map +1 -1
  408. package/lib/dom-parser/DOMParser.d.ts +2 -6
  409. package/lib/dom-parser/DOMParser.d.ts.map +1 -1
  410. package/lib/dom-parser/DOMParser.js +6 -15
  411. package/lib/dom-parser/DOMParser.js.map +1 -1
  412. package/lib/event/Event.d.ts +49 -7
  413. package/lib/event/Event.d.ts.map +1 -1
  414. package/lib/event/Event.js +76 -18
  415. package/lib/event/Event.js.map +1 -1
  416. package/lib/event/EventTarget.d.ts +12 -8
  417. package/lib/event/EventTarget.d.ts.map +1 -1
  418. package/lib/event/EventTarget.js +153 -141
  419. package/lib/event/EventTarget.js.map +1 -1
  420. package/lib/event/MessagePort.d.ts +1 -2
  421. package/lib/event/MessagePort.d.ts.map +1 -1
  422. package/lib/event/MessagePort.js.map +1 -1
  423. package/lib/event/TEventListener.d.ts +5 -0
  424. package/lib/event/TEventListener.d.ts.map +1 -0
  425. package/lib/event/TEventListener.js +2 -0
  426. package/lib/event/TEventListener.js.map +1 -0
  427. package/lib/event/TEventListenerFunction.d.ts +4 -0
  428. package/lib/event/TEventListenerFunction.d.ts.map +1 -0
  429. package/lib/event/TEventListenerFunction.js +2 -0
  430. package/lib/event/TEventListenerFunction.js.map +1 -0
  431. package/lib/event/TEventListenerObject.d.ts +6 -0
  432. package/lib/event/TEventListenerObject.d.ts.map +1 -0
  433. package/lib/event/TEventListenerObject.js +2 -0
  434. package/lib/event/TEventListenerObject.js.map +1 -0
  435. package/lib/event/events/CustomEvent.d.ts +8 -1
  436. package/lib/event/events/CustomEvent.d.ts.map +1 -1
  437. package/lib/event/events/CustomEvent.js +15 -6
  438. package/lib/event/events/CustomEvent.js.map +1 -1
  439. package/lib/event/events/IErrorEventInit.d.ts.map +1 -1
  440. package/lib/event/events/IMessageEventInit.d.ts +2 -2
  441. package/lib/event/events/IMessageEventInit.d.ts.map +1 -1
  442. package/lib/event/events/MessageEvent.d.ts +2 -2
  443. package/lib/event/events/MessageEvent.d.ts.map +1 -1
  444. package/lib/event/events/MessageEvent.js.map +1 -1
  445. package/lib/fetch/AbortController.d.ts +3 -4
  446. package/lib/fetch/AbortController.d.ts.map +1 -1
  447. package/lib/fetch/AbortController.js +2 -8
  448. package/lib/fetch/AbortController.js.map +1 -1
  449. package/lib/fetch/AbortSignal.d.ts +19 -0
  450. package/lib/fetch/AbortSignal.d.ts.map +1 -1
  451. package/lib/fetch/AbortSignal.js +48 -4
  452. package/lib/fetch/AbortSignal.js.map +1 -1
  453. package/lib/fetch/Fetch.d.ts.map +1 -1
  454. package/lib/fetch/Fetch.js +24 -14
  455. package/lib/fetch/Fetch.js.map +1 -1
  456. package/lib/fetch/Request.d.ts +3 -14
  457. package/lib/fetch/Request.d.ts.map +1 -1
  458. package/lib/fetch/Request.js +62 -45
  459. package/lib/fetch/Request.js.map +1 -1
  460. package/lib/fetch/ResourceFetch.d.ts.map +1 -1
  461. package/lib/fetch/ResourceFetch.js +2 -3
  462. package/lib/fetch/ResourceFetch.js.map +1 -1
  463. package/lib/fetch/Response.d.ts +3 -10
  464. package/lib/fetch/Response.d.ts.map +1 -1
  465. package/lib/fetch/Response.js +63 -40
  466. package/lib/fetch/Response.js.map +1 -1
  467. package/lib/fetch/SyncFetch.d.ts.map +1 -1
  468. package/lib/fetch/SyncFetch.js +12 -13
  469. package/lib/fetch/SyncFetch.js.map +1 -1
  470. package/lib/fetch/multipart/MultipartFormDataParser.d.ts +3 -1
  471. package/lib/fetch/multipart/MultipartFormDataParser.d.ts.map +1 -1
  472. package/lib/fetch/multipart/MultipartFormDataParser.js +12 -6
  473. package/lib/fetch/multipart/MultipartFormDataParser.js.map +1 -1
  474. package/lib/fetch/multipart/MultipartReader.d.ts +4 -1
  475. package/lib/fetch/multipart/MultipartReader.d.ts.map +1 -1
  476. package/lib/fetch/multipart/MultipartReader.js +5 -3
  477. package/lib/fetch/multipart/MultipartReader.js.map +1 -1
  478. package/lib/fetch/utilities/FetchBodyUtility.d.ts +5 -2
  479. package/lib/fetch/utilities/FetchBodyUtility.d.ts.map +1 -1
  480. package/lib/fetch/utilities/FetchBodyUtility.js +10 -5
  481. package/lib/fetch/utilities/FetchBodyUtility.js.map +1 -1
  482. package/lib/file/FileReader.d.ts +1 -4
  483. package/lib/file/FileReader.d.ts.map +1 -1
  484. package/lib/file/FileReader.js +11 -11
  485. package/lib/file/FileReader.js.map +1 -1
  486. package/lib/history/History.d.ts +2 -2
  487. package/lib/history/History.d.ts.map +1 -1
  488. package/lib/history/History.js +28 -14
  489. package/lib/history/History.js.map +1 -1
  490. package/lib/index.d.ts +2 -2
  491. package/lib/location/Location.d.ts +4 -0
  492. package/lib/location/Location.d.ts.map +1 -1
  493. package/lib/location/Location.js +43 -22
  494. package/lib/location/Location.js.map +1 -1
  495. package/lib/match-media/MediaQueryItem.d.ts +3 -3
  496. package/lib/match-media/MediaQueryItem.d.ts.map +1 -1
  497. package/lib/match-media/MediaQueryItem.js +26 -26
  498. package/lib/match-media/MediaQueryItem.js.map +1 -1
  499. package/lib/match-media/MediaQueryList.d.ts +5 -5
  500. package/lib/match-media/MediaQueryList.d.ts.map +1 -1
  501. package/lib/match-media/MediaQueryList.js +7 -7
  502. package/lib/match-media/MediaQueryList.js.map +1 -1
  503. package/lib/match-media/MediaQueryParser.d.ts +2 -2
  504. package/lib/match-media/MediaQueryParser.d.ts.map +1 -1
  505. package/lib/match-media/MediaQueryParser.js +4 -4
  506. package/lib/match-media/MediaQueryParser.js.map +1 -1
  507. package/lib/mutation-observer/MutationObserver.d.ts +3 -0
  508. package/lib/mutation-observer/MutationObserver.d.ts.map +1 -1
  509. package/lib/mutation-observer/MutationObserver.js +17 -15
  510. package/lib/mutation-observer/MutationObserver.js.map +1 -1
  511. package/lib/navigator/Navigator.d.ts +2 -2
  512. package/lib/navigator/Navigator.d.ts.map +1 -1
  513. package/lib/navigator/Navigator.js +13 -10
  514. package/lib/navigator/Navigator.js.map +1 -1
  515. package/lib/nodes/NodeFactory.js +1 -1
  516. package/lib/nodes/NodeFactory.js.map +1 -1
  517. package/lib/nodes/document/Document.d.ts +9 -16
  518. package/lib/nodes/document/Document.d.ts.map +1 -1
  519. package/lib/nodes/document/Document.js +69 -51
  520. package/lib/nodes/document/Document.js.map +1 -1
  521. package/lib/nodes/document/DocumentReadyStateManager.d.ts.map +1 -1
  522. package/lib/nodes/document/DocumentReadyStateManager.js +12 -10
  523. package/lib/nodes/document/DocumentReadyStateManager.js.map +1 -1
  524. package/lib/nodes/element/Element.d.ts +7 -3
  525. package/lib/nodes/element/Element.d.ts.map +1 -1
  526. package/lib/nodes/element/Element.js +33 -20
  527. package/lib/nodes/element/Element.js.map +1 -1
  528. package/lib/nodes/element/HTMLCollection.d.ts.map +1 -1
  529. package/lib/nodes/element/HTMLCollection.js +1 -4
  530. package/lib/nodes/element/HTMLCollection.js.map +1 -1
  531. package/lib/nodes/element/NamedNodeMap.d.ts.map +1 -1
  532. package/lib/nodes/element/NamedNodeMap.js +4 -0
  533. package/lib/nodes/element/NamedNodeMap.js.map +1 -1
  534. package/lib/nodes/element/NamedNodeMapProxyFactory.d.ts.map +1 -1
  535. package/lib/nodes/element/NamedNodeMapProxyFactory.js +0 -6
  536. package/lib/nodes/element/NamedNodeMapProxyFactory.js.map +1 -1
  537. package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
  538. package/lib/nodes/html-anchor-element/HTMLAnchorElement.js +5 -5
  539. package/lib/nodes/html-anchor-element/HTMLAnchorElement.js.map +1 -1
  540. package/lib/nodes/html-area-element/HTMLAreaElement.d.ts.map +1 -1
  541. package/lib/nodes/html-area-element/HTMLAreaElement.js +7 -8
  542. package/lib/nodes/html-area-element/HTMLAreaElement.js.map +1 -1
  543. package/lib/nodes/html-audio-element/Audio.d.ts +4 -0
  544. package/lib/nodes/html-audio-element/Audio.d.ts.map +1 -1
  545. package/lib/nodes/html-audio-element/Audio.js +5 -0
  546. package/lib/nodes/html-audio-element/Audio.js.map +1 -1
  547. package/lib/nodes/html-button-element/HTMLButtonElement.d.ts +27 -3
  548. package/lib/nodes/html-button-element/HTMLButtonElement.d.ts.map +1 -1
  549. package/lib/nodes/html-button-element/HTMLButtonElement.js +63 -35
  550. package/lib/nodes/html-button-element/HTMLButtonElement.js.map +1 -1
  551. package/lib/nodes/html-canvas-element/HTMLCanvasElement.d.ts.map +1 -1
  552. package/lib/nodes/html-canvas-element/HTMLCanvasElement.js +2 -4
  553. package/lib/nodes/html-canvas-element/HTMLCanvasElement.js.map +1 -1
  554. package/lib/nodes/html-document/HTMLDocument.d.ts +1 -10
  555. package/lib/nodes/html-document/HTMLDocument.d.ts.map +1 -1
  556. package/lib/nodes/html-document/HTMLDocument.js +2 -6
  557. package/lib/nodes/html-document/HTMLDocument.js.map +1 -1
  558. package/lib/nodes/html-element/HTMLElement.d.ts +14 -2
  559. package/lib/nodes/html-element/HTMLElement.d.ts.map +1 -1
  560. package/lib/nodes/html-element/HTMLElement.js +130 -89
  561. package/lib/nodes/html-element/HTMLElement.js.map +1 -1
  562. package/lib/nodes/html-form-element/HTMLFormElement.d.ts +1 -3
  563. package/lib/nodes/html-form-element/HTMLFormElement.d.ts.map +1 -1
  564. package/lib/nodes/html-form-element/HTMLFormElement.js +6 -7
  565. package/lib/nodes/html-form-element/HTMLFormElement.js.map +1 -1
  566. package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts +0 -6
  567. package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
  568. package/lib/nodes/html-iframe-element/HTMLIFrameElement.js +30 -38
  569. package/lib/nodes/html-iframe-element/HTMLIFrameElement.js.map +1 -1
  570. package/lib/nodes/html-image-element/Image.d.ts +4 -0
  571. package/lib/nodes/html-image-element/Image.d.ts.map +1 -1
  572. package/lib/nodes/html-image-element/Image.js +5 -0
  573. package/lib/nodes/html-image-element/Image.js.map +1 -1
  574. package/lib/nodes/html-input-element/HTMLInputElement.d.ts +25 -0
  575. package/lib/nodes/html-input-element/HTMLInputElement.d.ts.map +1 -1
  576. package/lib/nodes/html-input-element/HTMLInputElement.js +88 -56
  577. package/lib/nodes/html-input-element/HTMLInputElement.js.map +1 -1
  578. package/lib/nodes/html-label-element/HTMLLabelElement.d.ts +8 -1
  579. package/lib/nodes/html-label-element/HTMLLabelElement.d.ts.map +1 -1
  580. package/lib/nodes/html-label-element/HTMLLabelElement.js +4 -3
  581. package/lib/nodes/html-label-element/HTMLLabelElement.js.map +1 -1
  582. package/lib/nodes/html-link-element/HTMLLinkElement.d.ts +0 -6
  583. package/lib/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
  584. package/lib/nodes/html-link-element/HTMLLinkElement.js +10 -16
  585. package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
  586. package/lib/nodes/html-media-element/HTMLMediaElement.d.ts.map +1 -1
  587. package/lib/nodes/html-media-element/HTMLMediaElement.js +12 -16
  588. package/lib/nodes/html-media-element/HTMLMediaElement.js.map +1 -1
  589. package/lib/nodes/html-media-element/MediaStream.d.ts.map +1 -1
  590. package/lib/nodes/html-media-element/MediaStream.js +3 -0
  591. package/lib/nodes/html-media-element/MediaStream.js.map +1 -1
  592. package/lib/nodes/html-media-element/MediaStreamTrack.d.ts.map +1 -1
  593. package/lib/nodes/html-media-element/MediaStreamTrack.js +3 -0
  594. package/lib/nodes/html-media-element/MediaStreamTrack.js.map +1 -1
  595. package/lib/nodes/html-media-element/TextTrack.d.ts.map +1 -1
  596. package/lib/nodes/html-media-element/TextTrack.js +3 -0
  597. package/lib/nodes/html-media-element/TextTrack.js.map +1 -1
  598. package/lib/nodes/html-media-element/TextTrackCue.d.ts.map +1 -1
  599. package/lib/nodes/html-media-element/TextTrackCue.js +3 -0
  600. package/lib/nodes/html-media-element/TextTrackCue.js.map +1 -1
  601. package/lib/nodes/html-media-element/VTTCue.d.ts +1 -4
  602. package/lib/nodes/html-media-element/VTTCue.d.ts.map +1 -1
  603. package/lib/nodes/html-media-element/VTTCue.js +7 -8
  604. package/lib/nodes/html-media-element/VTTCue.js.map +1 -1
  605. package/lib/nodes/html-meter-element/HTMLMeterElement.d.ts.map +1 -1
  606. package/lib/nodes/html-meter-element/HTMLMeterElement.js +7 -6
  607. package/lib/nodes/html-meter-element/HTMLMeterElement.js.map +1 -1
  608. package/lib/nodes/html-progress-element/HTMLProgressElement.d.ts.map +1 -1
  609. package/lib/nodes/html-progress-element/HTMLProgressElement.js +3 -2
  610. package/lib/nodes/html-progress-element/HTMLProgressElement.js.map +1 -1
  611. package/lib/nodes/html-script-element/HTMLScriptElement.d.ts +0 -6
  612. package/lib/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
  613. package/lib/nodes/html-script-element/HTMLScriptElement.js +21 -27
  614. package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
  615. package/lib/nodes/html-select-element/HTMLSelectElement.d.ts.map +1 -1
  616. package/lib/nodes/html-select-element/HTMLSelectElement.js +5 -5
  617. package/lib/nodes/html-select-element/HTMLSelectElement.js.map +1 -1
  618. package/lib/nodes/html-table-element/HTMLTableElement.d.ts.map +1 -1
  619. package/lib/nodes/html-table-element/HTMLTableElement.js +8 -9
  620. package/lib/nodes/html-table-element/HTMLTableElement.js.map +1 -1
  621. package/lib/nodes/html-table-row-element/HTMLTableRowElement.d.ts.map +1 -1
  622. package/lib/nodes/html-table-row-element/HTMLTableRowElement.js +5 -6
  623. package/lib/nodes/html-table-row-element/HTMLTableRowElement.js.map +1 -1
  624. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts.map +1 -1
  625. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js +1 -2
  626. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js.map +1 -1
  627. package/lib/nodes/html-track-element/HTMLTrackElement.js +1 -2
  628. package/lib/nodes/html-track-element/HTMLTrackElement.js.map +1 -1
  629. package/lib/nodes/node/Node.d.ts +1 -2
  630. package/lib/nodes/node/Node.d.ts.map +1 -1
  631. package/lib/nodes/node/Node.js +23 -22
  632. package/lib/nodes/node/Node.js.map +1 -1
  633. package/lib/nodes/node/NodeList.d.ts.map +1 -1
  634. package/lib/nodes/node/NodeList.js +4 -6
  635. package/lib/nodes/node/NodeList.js.map +1 -1
  636. package/lib/nodes/text/Text.d.ts.map +1 -1
  637. package/lib/nodes/text/Text.js +1 -2
  638. package/lib/nodes/text/Text.js.map +1 -1
  639. package/lib/permissions/Permissions.d.ts +7 -0
  640. package/lib/permissions/Permissions.d.ts.map +1 -1
  641. package/lib/permissions/Permissions.js +13 -2
  642. package/lib/permissions/Permissions.js.map +1 -1
  643. package/lib/query-selector/QuerySelector.d.ts.map +1 -1
  644. package/lib/query-selector/QuerySelector.js +12 -10
  645. package/lib/query-selector/QuerySelector.js.map +1 -1
  646. package/lib/range/Range.d.ts +2 -2
  647. package/lib/range/Range.d.ts.map +1 -1
  648. package/lib/range/Range.js +26 -23
  649. package/lib/range/Range.js.map +1 -1
  650. package/lib/selection/Selection.d.ts.map +1 -1
  651. package/lib/selection/Selection.js +16 -17
  652. package/lib/selection/Selection.js.map +1 -1
  653. package/lib/window/BrowserWindow.d.ts +115 -117
  654. package/lib/window/BrowserWindow.d.ts.map +1 -1
  655. package/lib/window/BrowserWindow.js +140 -270
  656. package/lib/window/BrowserWindow.js.map +1 -1
  657. package/lib/window/VMGlobalPropertyScript.d.ts.map +1 -1
  658. package/lib/window/VMGlobalPropertyScript.js +0 -1
  659. package/lib/window/VMGlobalPropertyScript.js.map +1 -1
  660. package/lib/window/WindowBrowserContext.d.ts +75 -0
  661. package/lib/window/WindowBrowserContext.d.ts.map +1 -0
  662. package/lib/window/WindowBrowserContext.js +91 -0
  663. package/lib/window/WindowBrowserContext.js.map +1 -0
  664. package/lib/window/WindowClassExtender.d.ts +15 -0
  665. package/lib/window/WindowClassExtender.d.ts.map +1 -0
  666. package/lib/window/WindowClassExtender.js +303 -0
  667. package/lib/window/WindowClassExtender.js.map +1 -0
  668. package/lib/window/WindowPageOpenUtility.d.ts.map +1 -1
  669. package/lib/window/WindowPageOpenUtility.js +11 -1
  670. package/lib/window/WindowPageOpenUtility.js.map +1 -1
  671. package/lib/xml-http-request/XMLHttpRequest.d.ts +2 -11
  672. package/lib/xml-http-request/XMLHttpRequest.d.ts.map +1 -1
  673. package/lib/xml-http-request/XMLHttpRequest.js +33 -33
  674. package/lib/xml-http-request/XMLHttpRequest.js.map +1 -1
  675. package/package.json +1 -1
  676. package/src/ClassMethodBinder.ts +10 -7
  677. package/src/PropertySymbol.ts +15 -4
  678. package/src/async-task-manager/AsyncTaskManager.ts +71 -39
  679. package/src/browser/Browser.ts +7 -0
  680. package/src/browser/BrowserFrame.ts +3 -7
  681. package/src/browser/DefaultBrowserSettings.ts +2 -1
  682. package/src/browser/detached-browser/DetachedBrowser.ts +7 -0
  683. package/src/browser/detached-browser/DetachedBrowserFrame.ts +3 -7
  684. package/src/browser/types/IBrowser.ts +3 -0
  685. package/src/browser/types/IBrowserFrame.ts +0 -3
  686. package/src/browser/types/IBrowserSettings.ts +1 -0
  687. package/src/browser/utilities/BrowserExceptionObserver.ts +125 -0
  688. package/src/browser/utilities/BrowserFrameFactory.ts +29 -33
  689. package/src/browser/utilities/BrowserFrameNavigator.ts +60 -38
  690. package/src/clipboard/Clipboard.ts +20 -14
  691. package/src/css/declaration/AbstractCSSStyleDeclaration.ts +4 -4
  692. package/src/css/declaration/element-style/CSSStyleDeclarationElementStyle.ts +6 -7
  693. package/src/css/declaration/measurement-converter/CSSMeasurementConverter.ts +6 -8
  694. package/src/custom-element/CustomElementRegistry.ts +45 -17
  695. package/src/dom-implementation/DOMImplementation.ts +15 -10
  696. package/src/dom-parser/DOMParser.ts +11 -16
  697. package/src/event/Event.ts +85 -18
  698. package/src/event/EventTarget.ts +200 -185
  699. package/src/event/MessagePort.ts +1 -2
  700. package/src/event/TEventListener.ts +6 -0
  701. package/src/event/TEventListenerFunction.ts +5 -0
  702. package/src/event/TEventListenerObject.ts +7 -0
  703. package/src/event/events/CustomEvent.ts +16 -6
  704. package/src/event/events/IErrorEventInit.ts +0 -1
  705. package/src/event/events/IMessageEventInit.ts +2 -2
  706. package/src/event/events/MessageEvent.ts +2 -2
  707. package/src/fetch/AbortController.ts +5 -7
  708. package/src/fetch/AbortSignal.ts +69 -4
  709. package/src/fetch/Fetch.ts +39 -15
  710. package/src/fetch/Request.ts +83 -55
  711. package/src/fetch/ResourceFetch.ts +2 -3
  712. package/src/fetch/Response.ts +80 -45
  713. package/src/fetch/SyncFetch.ts +15 -13
  714. package/src/fetch/multipart/MultipartFormDataParser.ts +16 -5
  715. package/src/fetch/multipart/MultipartReader.ts +6 -3
  716. package/src/fetch/utilities/FetchBodyUtility.ts +23 -8
  717. package/src/file/FileReader.ts +16 -12
  718. package/src/history/History.ts +31 -14
  719. package/src/index.ts +2 -2
  720. package/src/location/Location.ts +46 -22
  721. package/src/match-media/MediaQueryItem.ts +27 -30
  722. package/src/match-media/MediaQueryList.ts +11 -21
  723. package/src/match-media/MediaQueryParser.ts +5 -5
  724. package/src/mutation-observer/MutationObserver.ts +25 -17
  725. package/src/navigator/Navigator.ts +14 -12
  726. package/src/nodes/NodeFactory.ts +1 -1
  727. package/src/nodes/document/Document.ts +67 -62
  728. package/src/nodes/document/DocumentReadyStateManager.ts +13 -10
  729. package/src/nodes/element/Element.ts +44 -29
  730. package/src/nodes/element/HTMLCollection.ts +1 -4
  731. package/src/nodes/element/NamedNodeMap.ts +4 -0
  732. package/src/nodes/element/NamedNodeMapProxyFactory.ts +0 -6
  733. package/src/nodes/html-anchor-element/HTMLAnchorElement.ts +4 -8
  734. package/src/nodes/html-area-element/HTMLAreaElement.ts +7 -11
  735. package/src/nodes/html-audio-element/Audio.ts +6 -0
  736. package/src/nodes/html-button-element/HTMLButtonElement.ts +67 -37
  737. package/src/nodes/html-canvas-element/HTMLCanvasElement.ts +5 -3
  738. package/src/nodes/html-document/HTMLDocument.ts +2 -8
  739. package/src/nodes/html-element/HTMLElement.ts +151 -129
  740. package/src/nodes/html-form-element/HTMLFormElement.ts +7 -9
  741. package/src/nodes/html-iframe-element/HTMLIFrameElement.ts +31 -42
  742. package/src/nodes/html-image-element/Image.ts +6 -0
  743. package/src/nodes/html-input-element/HTMLInputElement.ts +96 -61
  744. package/src/nodes/html-label-element/HTMLLabelElement.ts +21 -6
  745. package/src/nodes/html-link-element/HTMLLinkElement.ts +12 -19
  746. package/src/nodes/html-media-element/HTMLMediaElement.ts +15 -12
  747. package/src/nodes/html-media-element/MediaStream.ts +6 -0
  748. package/src/nodes/html-media-element/MediaStreamTrack.ts +6 -0
  749. package/src/nodes/html-media-element/TextTrack.ts +6 -0
  750. package/src/nodes/html-media-element/TextTrackCue.ts +6 -0
  751. package/src/nodes/html-media-element/VTTCue.ts +10 -9
  752. package/src/nodes/html-meter-element/HTMLMeterElement.ts +8 -6
  753. package/src/nodes/html-progress-element/HTMLProgressElement.ts +4 -2
  754. package/src/nodes/html-script-element/HTMLScriptElement.ts +25 -45
  755. package/src/nodes/html-select-element/HTMLSelectElement.ts +6 -5
  756. package/src/nodes/html-table-element/HTMLTableElement.ts +8 -9
  757. package/src/nodes/html-table-row-element/HTMLTableRowElement.ts +5 -6
  758. package/src/nodes/html-text-area-element/HTMLTextAreaElement.ts +1 -2
  759. package/src/nodes/html-track-element/HTMLTrackElement.ts +1 -1
  760. package/src/nodes/node/Node.ts +28 -26
  761. package/src/nodes/node/NodeList.ts +10 -11
  762. package/src/nodes/text/Text.ts +1 -2
  763. package/src/permissions/Permissions.ts +17 -1
  764. package/src/query-selector/QuerySelector.ts +15 -10
  765. package/src/range/Range.ts +39 -23
  766. package/src/selection/Selection.ts +27 -17
  767. package/src/window/BrowserWindow.ts +308 -335
  768. package/src/window/VMGlobalPropertyScript.ts +0 -1
  769. package/src/window/WindowBrowserContext.ts +114 -0
  770. package/src/window/WindowClassExtender.ts +306 -0
  771. package/src/window/WindowPageOpenUtility.ts +11 -1
  772. package/src/xml-http-request/XMLHttpRequest.ts +39 -36
  773. package/cjs/browser/utilities/BrowserFrameExceptionObserver.cjs +0 -80
  774. package/cjs/browser/utilities/BrowserFrameExceptionObserver.cjs.map +0 -1
  775. package/cjs/browser/utilities/BrowserFrameExceptionObserver.d.ts.map +0 -1
  776. package/cjs/event/IEventListener.cjs.map +0 -1
  777. package/cjs/event/IEventListener.d.ts +0 -13
  778. package/cjs/event/IEventListener.d.ts.map +0 -1
  779. package/cjs/event/IMessagePort.cjs.map +0 -1
  780. package/cjs/event/IMessagePort.d.ts +0 -24
  781. package/cjs/event/IMessagePort.d.ts.map +0 -1
  782. package/cjs/window/WindowBrowserSettingsReader.cjs +0 -72
  783. package/cjs/window/WindowBrowserSettingsReader.cjs.map +0 -1
  784. package/cjs/window/WindowBrowserSettingsReader.d.ts +0 -29
  785. package/cjs/window/WindowBrowserSettingsReader.d.ts.map +0 -1
  786. package/lib/browser/utilities/BrowserFrameExceptionObserver.d.ts.map +0 -1
  787. package/lib/browser/utilities/BrowserFrameExceptionObserver.js +0 -77
  788. package/lib/browser/utilities/BrowserFrameExceptionObserver.js.map +0 -1
  789. package/lib/event/IEventListener.d.ts +0 -13
  790. package/lib/event/IEventListener.d.ts.map +0 -1
  791. package/lib/event/IEventListener.js +0 -2
  792. package/lib/event/IEventListener.js.map +0 -1
  793. package/lib/event/IMessagePort.d.ts +0 -24
  794. package/lib/event/IMessagePort.d.ts.map +0 -1
  795. package/lib/event/IMessagePort.js +0 -2
  796. package/lib/event/IMessagePort.js.map +0 -1
  797. package/lib/window/WindowBrowserSettingsReader.d.ts +0 -29
  798. package/lib/window/WindowBrowserSettingsReader.d.ts.map +0 -1
  799. package/lib/window/WindowBrowserSettingsReader.js +0 -46
  800. package/lib/window/WindowBrowserSettingsReader.js.map +0 -1
  801. package/src/browser/utilities/BrowserFrameExceptionObserver.ts +0 -111
  802. package/src/event/IEventListener.ts +0 -13
  803. package/src/event/IMessagePort.ts +0 -26
  804. package/src/window/WindowBrowserSettingsReader.ts +0 -55
@@ -8,13 +8,12 @@ import URL from '../url/URL.js';
8
8
  import { ReadableStream } from 'stream/web';
9
9
  import FormData from '../form-data/FormData.js';
10
10
  import FetchBodyUtility from './utilities/FetchBodyUtility.js';
11
- import DOMException from '../exception/DOMException.js';
12
11
  import DOMExceptionNameEnum from '../exception/DOMExceptionNameEnum.js';
13
12
  import MultipartFormDataParser from './multipart/MultipartFormDataParser.js';
14
13
  import BrowserWindow from '../window/BrowserWindow.js';
15
- import IBrowserFrame from '../browser/types/IBrowserFrame.js';
16
14
  import ICachedResponse from './cache/response/ICachedResponse.js';
17
15
  import { Buffer } from 'buffer';
16
+ import WindowBrowserContext from '../window/WindowBrowserContext.js';
18
17
 
19
18
  const REDIRECT_STATUS_CODES = [301, 302, 303, 307, 308];
20
19
 
@@ -27,8 +26,9 @@ const REDIRECT_STATUS_CODES = [301, 302, 303, 307, 308];
27
26
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Response/Response
28
27
  */
29
28
  export default class Response implements Response {
30
- // Needs to be injected by sub-class.
31
- protected static [PropertySymbol.window]: BrowserWindow;
29
+ // Injected by WindowClassExtender
30
+ protected declare static [PropertySymbol.window]: BrowserWindow;
31
+ protected declare [PropertySymbol.window]: BrowserWindow;
32
32
 
33
33
  // Public properties
34
34
  public readonly body: ReadableStream | null = null;
@@ -43,26 +43,20 @@ export default class Response implements Response {
43
43
  public readonly headers: Headers;
44
44
  public [PropertySymbol.cachedResponse]: ICachedResponse | null = null;
45
45
  public [PropertySymbol.buffer]: Buffer | null = null;
46
- readonly #window: BrowserWindow;
47
- readonly #browserFrame: IBrowserFrame;
48
46
 
49
47
  /**
50
48
  * Constructor.
51
49
  *
52
- * @param injected Injected properties.
53
- * @param input Input.
54
- * @param injected.window
55
- * @param body
56
- * @param injected.browserFrame
50
+ * @param body Body.
57
51
  * @param [init] Init.
58
52
  */
59
- constructor(
60
- injected: { window: BrowserWindow; browserFrame: IBrowserFrame },
61
- body?: IResponseBody,
62
- init?: IResponseInit
63
- ) {
64
- this.#window = injected.window;
65
- this.#browserFrame = injected.browserFrame;
53
+ constructor(body?: IResponseBody, init?: IResponseInit) {
54
+ if (!this[PropertySymbol.window]) {
55
+ throw new TypeError(
56
+ `Failed to construct '${this.constructor.name}': '${this.constructor.name}' was constructed outside a Window context.`
57
+ );
58
+ }
59
+
66
60
  this.status = init?.status !== undefined ? init.status : 200;
67
61
  this.statusText = init?.statusText || '';
68
62
  this.ok = this.status >= 200 && this.status < 300;
@@ -101,28 +95,37 @@ export default class Response implements Response {
101
95
  * @returns Array buffer.
102
96
  */
103
97
  public async arrayBuffer(): Promise<ArrayBuffer> {
98
+ const window = this[PropertySymbol.window];
99
+
104
100
  if (this.bodyUsed) {
105
- throw new DOMException(
101
+ throw new window.DOMException(
106
102
  `Body has already been used for "${this.url}".`,
107
103
  DOMExceptionNameEnum.invalidStateError
108
104
  );
109
105
  }
110
106
 
107
+ const browserFrame = new WindowBrowserContext(window).getBrowserFrame();
108
+ const asyncTaskManager = browserFrame[PropertySymbol.asyncTaskManager];
109
+
111
110
  (<boolean>this.bodyUsed) = true;
112
111
 
113
112
  let buffer: Buffer | null = this[PropertySymbol.buffer];
114
113
 
115
114
  if (!buffer) {
116
- const taskID = this.#browserFrame[PropertySymbol.asyncTaskManager].startTask();
115
+ const taskID = asyncTaskManager.startTask(() => {
116
+ if (this.body) {
117
+ this.body[PropertySymbol.aborted] = true;
118
+ }
119
+ });
117
120
 
118
121
  try {
119
- buffer = await FetchBodyUtility.consumeBodyStream(this.body);
122
+ buffer = await FetchBodyUtility.consumeBodyStream(window, this.body);
120
123
  } catch (error) {
121
- this.#browserFrame[PropertySymbol.asyncTaskManager].endTask(taskID);
124
+ asyncTaskManager.endTask(taskID);
122
125
  throw error;
123
126
  }
124
127
 
125
- this.#browserFrame[PropertySymbol.asyncTaskManager].endTask(taskID);
128
+ asyncTaskManager.endTask(taskID);
126
129
  }
127
130
 
128
131
  this.#storeBodyInCache(buffer);
@@ -148,26 +151,35 @@ export default class Response implements Response {
148
151
  * @returns Buffer.
149
152
  */
150
153
  public async buffer(): Promise<Buffer> {
154
+ const window = this[PropertySymbol.window];
155
+
151
156
  if (this.bodyUsed) {
152
- throw new DOMException(
157
+ throw new window.DOMException(
153
158
  `Body has already been used for "${this.url}".`,
154
159
  DOMExceptionNameEnum.invalidStateError
155
160
  );
156
161
  }
157
162
 
163
+ const browserFrame = new WindowBrowserContext(window).getBrowserFrame();
164
+ const asyncTaskManager = browserFrame[PropertySymbol.asyncTaskManager];
165
+
158
166
  (<boolean>this.bodyUsed) = true;
159
167
 
160
168
  let buffer: Buffer | null = this[PropertySymbol.buffer];
161
169
 
162
170
  if (!buffer) {
163
- const taskID = this.#browserFrame[PropertySymbol.asyncTaskManager].startTask();
171
+ const taskID = asyncTaskManager.startTask(() => {
172
+ if (this.body) {
173
+ this.body[PropertySymbol.aborted] = true;
174
+ }
175
+ });
164
176
  try {
165
- buffer = await FetchBodyUtility.consumeBodyStream(this.body);
177
+ buffer = await FetchBodyUtility.consumeBodyStream(window, this.body);
166
178
  } catch (error) {
167
- this.#browserFrame[PropertySymbol.asyncTaskManager].endTask(taskID);
179
+ asyncTaskManager.endTask(taskID);
168
180
  throw error;
169
181
  }
170
- this.#browserFrame[PropertySymbol.asyncTaskManager].endTask(taskID);
182
+ asyncTaskManager.endTask(taskID);
171
183
  }
172
184
 
173
185
  this.#storeBodyInCache(buffer);
@@ -181,26 +193,35 @@ export default class Response implements Response {
181
193
  * @returns Text.
182
194
  */
183
195
  public async text(): Promise<string> {
196
+ const window = this[PropertySymbol.window];
197
+
184
198
  if (this.bodyUsed) {
185
- throw new DOMException(
199
+ throw new window.DOMException(
186
200
  `Body has already been used for "${this.url}".`,
187
201
  DOMExceptionNameEnum.invalidStateError
188
202
  );
189
203
  }
190
204
 
205
+ const browserFrame = new WindowBrowserContext(window).getBrowserFrame();
206
+ const asyncTaskManager = browserFrame[PropertySymbol.asyncTaskManager];
207
+
191
208
  (<boolean>this.bodyUsed) = true;
192
209
 
193
210
  let buffer: Buffer | null = this[PropertySymbol.buffer];
194
211
 
195
212
  if (!buffer) {
196
- const taskID = this.#browserFrame[PropertySymbol.asyncTaskManager].startTask();
213
+ const taskID = asyncTaskManager.startTask(() => {
214
+ if (this.body) {
215
+ this.body[PropertySymbol.aborted] = true;
216
+ }
217
+ });
197
218
  try {
198
- buffer = await FetchBodyUtility.consumeBodyStream(this.body);
219
+ buffer = await FetchBodyUtility.consumeBodyStream(window, this.body);
199
220
  } catch (error) {
200
- this.#browserFrame[PropertySymbol.asyncTaskManager].endTask(taskID);
221
+ asyncTaskManager.endTask(taskID);
201
222
  throw error;
202
223
  }
203
- this.#browserFrame[PropertySymbol.asyncTaskManager].endTask(taskID);
224
+ asyncTaskManager.endTask(taskID);
204
225
  }
205
226
 
206
227
  this.#storeBodyInCache(buffer);
@@ -224,12 +245,14 @@ export default class Response implements Response {
224
245
  * @returns Form data.
225
246
  */
226
247
  public async formData(): Promise<FormData> {
248
+ const window = this[PropertySymbol.window];
249
+ const browserFrame = new WindowBrowserContext(window).getBrowserFrame();
250
+ const asyncTaskManager = browserFrame[PropertySymbol.asyncTaskManager];
227
251
  const contentType = this.headers.get('Content-Type');
228
- const asyncTaskManager = this.#browserFrame[PropertySymbol.asyncTaskManager];
229
252
 
230
253
  if (/multipart/i.test(contentType)) {
231
254
  if (this.bodyUsed) {
232
- throw new DOMException(
255
+ throw new window.DOMException(
233
256
  `Body has already been used for "${this.url}".`,
234
257
  DOMExceptionNameEnum.invalidStateError
235
258
  );
@@ -237,12 +260,20 @@ export default class Response implements Response {
237
260
 
238
261
  (<boolean>this.bodyUsed) = true;
239
262
 
240
- const taskID = asyncTaskManager.startTask();
263
+ const taskID = browserFrame[PropertySymbol.asyncTaskManager].startTask(() => {
264
+ if (this.body) {
265
+ this.body[PropertySymbol.aborted] = true;
266
+ }
267
+ });
241
268
  let formData: FormData;
242
269
  let buffer: Buffer;
243
270
 
244
271
  try {
245
- const result = await MultipartFormDataParser.streamToFormData(this.body, contentType);
272
+ const result = await MultipartFormDataParser.streamToFormData(
273
+ window,
274
+ this.body,
275
+ contentType
276
+ );
246
277
  formData = result.formData;
247
278
  buffer = result.buffer;
248
279
  } catch (error) {
@@ -267,7 +298,7 @@ export default class Response implements Response {
267
298
  return formData;
268
299
  }
269
300
 
270
- throw new DOMException(
301
+ throw new window.DOMException(
271
302
  `Failed to build FormData object: The "content-type" header is neither "application/x-www-form-urlencoded" nor "multipart/form-data".`,
272
303
  DOMExceptionNameEnum.invalidStateError
273
304
  );
@@ -279,9 +310,10 @@ export default class Response implements Response {
279
310
  * @returns Clone.
280
311
  */
281
312
  public clone(): Response {
282
- const body = FetchBodyUtility.cloneBodyStream(this);
313
+ const window = this[PropertySymbol.window];
314
+ const body = FetchBodyUtility.cloneBodyStream(window, this);
283
315
 
284
- const response = new this.#window.Response(body, {
316
+ const response = new window.Response(body, {
285
317
  status: this.status,
286
318
  statusText: this.statusText,
287
319
  headers: this.headers
@@ -317,14 +349,16 @@ export default class Response implements Response {
317
349
  * @returns Response.
318
350
  */
319
351
  public static redirect(url: string, status = 302): Response {
352
+ const window = this[PropertySymbol.window];
353
+
320
354
  if (!REDIRECT_STATUS_CODES.includes(status)) {
321
- throw new DOMException(
355
+ throw new window.DOMException(
322
356
  'Failed to create redirect response: Invalid redirect status code.',
323
357
  DOMExceptionNameEnum.invalidStateError
324
358
  );
325
359
  }
326
360
 
327
- return new this[PropertySymbol.window].Response(null, {
361
+ return new window.Response(null, {
328
362
  headers: {
329
363
  location: new URL(url).toString()
330
364
  },
@@ -354,19 +388,20 @@ export default class Response implements Response {
354
388
  * @returns Response.
355
389
  */
356
390
  public static json(data: object, init?: IResponseInit): Response {
391
+ const window = this[PropertySymbol.window];
357
392
  const body = JSON.stringify(data);
358
393
 
359
394
  if (body === undefined) {
360
- throw new TypeError('data is not JSON serializable');
395
+ throw new window.TypeError('data is not JSON serializable');
361
396
  }
362
397
 
363
- const headers = new this[PropertySymbol.window].Headers(init && init.headers);
398
+ const headers = new window.Headers(init && init.headers);
364
399
 
365
400
  if (!headers.has('Content-Type')) {
366
401
  headers.set('Content-Type', 'application/json');
367
402
  }
368
403
 
369
- return new this[PropertySymbol.window].Response(body, {
404
+ return new window.Response(body, {
370
405
  status: 200,
371
406
  ...init,
372
407
  headers
@@ -1,7 +1,6 @@
1
1
  import IRequestInit from './types/IRequestInit.js';
2
2
  import * as PropertySymbol from '../PropertySymbol.js';
3
3
  import IRequestInfo from './types/IRequestInfo.js';
4
- import DOMException from '../exception/DOMException.js';
5
4
  import DOMExceptionNameEnum from '../exception/DOMExceptionNameEnum.js';
6
5
  import URL from '../url/URL.js';
7
6
  import Request from './Request.js';
@@ -70,7 +69,7 @@ export default class SyncFetch {
70
69
  this.#window = options.window;
71
70
  this.request =
72
71
  typeof options.url === 'string' || options.url instanceof URL
73
- ? new options.browserFrame.window.Request(options.url, options.init)
72
+ ? new options.window.Request(options.url, options.init)
74
73
  : <Request>options.url;
75
74
  if (options.contentType) {
76
75
  (<string>this.request[PropertySymbol.contentType]) = options.contentType;
@@ -90,7 +89,10 @@ export default class SyncFetch {
90
89
  FetchRequestValidationUtility.validateSchema(this.request);
91
90
 
92
91
  if (this.request.signal.aborted) {
93
- throw new DOMException('The operation was aborted.', DOMExceptionNameEnum.abortError);
92
+ throw new this.#window.DOMException(
93
+ 'The operation was aborted.',
94
+ DOMExceptionNameEnum.abortError
95
+ );
94
96
  }
95
97
 
96
98
  if (this.request[PropertySymbol.url].protocol === 'data:') {
@@ -111,7 +113,7 @@ export default class SyncFetch {
111
113
  this.request[PropertySymbol.url].protocol === 'http:' &&
112
114
  this.#window.location.protocol === 'https:'
113
115
  ) {
114
- throw new DOMException(
116
+ throw new this.#window.DOMException(
115
117
  `Mixed Content: The page at '${this.#window.location.href}' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint '${this.request.url}'. This request has been blocked; the content must be served over HTTPS.`,
116
118
  DOMExceptionNameEnum.securityError
117
119
  );
@@ -127,7 +129,7 @@ export default class SyncFetch {
127
129
  this.#window.console.warn(
128
130
  `Cross-Origin Request Blocked: The Same Origin Policy dissallows reading the remote resource at "${this.request.url}".`
129
131
  );
130
- throw new DOMException(
132
+ throw new this.#window.DOMException(
131
133
  `Cross-Origin Request Blocked: The Same Origin Policy dissallows reading the remote resource at "${this.request.url}".`,
132
134
  DOMExceptionNameEnum.networkError
133
135
  );
@@ -322,7 +324,7 @@ export default class SyncFetch {
322
324
  */
323
325
  public sendRequest(): ISyncResponse {
324
326
  if (!this.request[PropertySymbol.bodyBuffer] && this.request.body) {
325
- throw new DOMException(
327
+ throw new this.#window.DOMException(
326
328
  `Streams are not supported as request body for synchrounous requests.`,
327
329
  DOMExceptionNameEnum.notSupportedError
328
330
  );
@@ -347,7 +349,7 @@ export default class SyncFetch {
347
349
 
348
350
  // If content length is 0, then there was an error
349
351
  if (!content.length) {
350
- throw new DOMException(
352
+ throw new this.#window.DOMException(
351
353
  `Synchronous fetch to "${this.request.url}" failed.`,
352
354
  DOMExceptionNameEnum.networkError
353
355
  );
@@ -356,7 +358,7 @@ export default class SyncFetch {
356
358
  const { error, incomingMessage } = <ISyncHTTPResponse>JSON.parse(content.toString());
357
359
 
358
360
  if (error) {
359
- throw new DOMException(
361
+ throw new this.#window.DOMException(
360
362
  `Synchronous fetch to "${this.request.url}" failed. Error: ${error}`,
361
363
  DOMExceptionNameEnum.networkError
362
364
  );
@@ -441,7 +443,7 @@ export default class SyncFetch {
441
443
  return Zlib.brotliDecompressSync(options.body);
442
444
  }
443
445
  } catch (error) {
444
- throw new DOMException(
446
+ throw new this.#window.DOMException(
445
447
  `Failed to read response body. Error: ${error.message}.`,
446
448
  DOMExceptionNameEnum.encodingError
447
449
  );
@@ -463,7 +465,7 @@ export default class SyncFetch {
463
465
 
464
466
  switch (this.request.redirect) {
465
467
  case 'error':
466
- throw new DOMException(
468
+ throw new this.#window.DOMException(
467
469
  `URI requested responds with a redirect, redirect mode is set to "error": ${this.request.url}`,
468
470
  DOMExceptionNameEnum.abortError
469
471
  );
@@ -480,7 +482,7 @@ export default class SyncFetch {
480
482
  try {
481
483
  locationURL = new URL(locationHeader, this.request.url);
482
484
  } catch {
483
- throw new DOMException(
485
+ throw new this.#window.DOMException(
484
486
  `URI requested responds with an invalid redirect URL: ${locationHeader}`,
485
487
  DOMExceptionNameEnum.uriMismatchError
486
488
  );
@@ -492,7 +494,7 @@ export default class SyncFetch {
492
494
  }
493
495
 
494
496
  if (FetchResponseRedirectUtility.isMaxRedirectsReached(this.redirectCount)) {
495
- throw new DOMException(
497
+ throw new this.#window.DOMException(
496
498
  `Maximum redirects reached at: ${this.request.url}`,
497
499
  DOMExceptionNameEnum.networkError
498
500
  );
@@ -546,7 +548,7 @@ export default class SyncFetch {
546
548
 
547
549
  return fetch.send();
548
550
  default:
549
- throw new DOMException(
551
+ throw new this.#window.DOMException(
550
552
  `Redirect option '${this.request.redirect}' is not a valid value of IRequestRedirect`
551
553
  );
552
554
  }
@@ -2,9 +2,9 @@ import FormData from '../../form-data/FormData.js';
2
2
  import { ReadableStream } from 'stream/web';
3
3
  import * as PropertySymbol from '../../PropertySymbol.js';
4
4
  import MultipartReader from './MultipartReader.js';
5
- import DOMException from '../../exception/DOMException.js';
6
5
  import DOMExceptionNameEnum from '../../exception/DOMExceptionNameEnum.js';
7
6
  import { Buffer } from 'buffer';
7
+ import BrowserWindow from '../../window/BrowserWindow.js';
8
8
 
9
9
  /**
10
10
  * Multipart form data factory.
@@ -16,16 +16,18 @@ export default class MultipartFormDataParser {
16
16
  /**
17
17
  * Returns form data.
18
18
  *
19
+ * @param window Window.
19
20
  * @param body Body.
20
21
  * @param contentType Content type header value.
21
22
  * @returns Form data.
22
23
  */
23
24
  public static async streamToFormData(
25
+ window: BrowserWindow,
24
26
  body: ReadableStream,
25
27
  contentType: string
26
28
  ): Promise<{ formData: FormData; buffer: Buffer }> {
27
29
  if (!/multipart/i.test(contentType)) {
28
- throw new DOMException(
30
+ throw new window.DOMException(
29
31
  `Failed to build FormData object: The "content-type" header isn't of type "multipart/form-data".`,
30
32
  DOMExceptionNameEnum.invalidStateError
31
33
  );
@@ -34,14 +36,14 @@ export default class MultipartFormDataParser {
34
36
  const match = contentType.match(/boundary=(?:"([^"]+)"|([^;]+))/i);
35
37
 
36
38
  if (!match) {
37
- throw new DOMException(
39
+ throw new window.DOMException(
38
40
  `Failed to build FormData object: The "content-type" header doesn't contain any multipart boundary.`,
39
41
  DOMExceptionNameEnum.invalidStateError
40
42
  );
41
43
  }
42
44
 
43
45
  const bodyReader = body.getReader();
44
- const reader = new MultipartReader(match[1] || match[2]);
46
+ const reader = new MultipartReader(window, match[1] || match[2]);
45
47
  const chunks = [];
46
48
  let buffer: Buffer;
47
49
  const bytes = 0;
@@ -49,6 +51,15 @@ export default class MultipartFormDataParser {
49
51
  let readResult = await bodyReader.read();
50
52
 
51
53
  while (!readResult.done) {
54
+ if (body[PropertySymbol.error]) {
55
+ throw body[PropertySymbol.error];
56
+ }
57
+ if (body[PropertySymbol.aborted]) {
58
+ throw new window.DOMException(
59
+ 'Failed to read response body: The stream was aborted.',
60
+ DOMExceptionNameEnum.abortError
61
+ );
62
+ }
52
63
  reader.write(readResult.value);
53
64
  readResult = await bodyReader.read();
54
65
  }
@@ -57,7 +68,7 @@ export default class MultipartFormDataParser {
57
68
  buffer =
58
69
  typeof chunks[0] === 'string' ? Buffer.from(chunks.join('')) : Buffer.concat(chunks, bytes);
59
70
  } catch (error) {
60
- throw new DOMException(
71
+ throw new window.DOMException(
61
72
  `Could not create Buffer from response body. Error: ${error.message}.`,
62
73
  DOMExceptionNameEnum.invalidStateError
63
74
  );
@@ -1,7 +1,7 @@
1
- import DOMException from '../../exception/DOMException.js';
2
1
  import DOMExceptionNameEnum from '../../exception/DOMExceptionNameEnum.js';
3
2
  import File from '../../file/File.js';
4
3
  import FormData from '../../form-data/FormData.js';
4
+ import BrowserWindow from '../../window/BrowserWindow.js';
5
5
 
6
6
  enum MultiparParserStateEnum {
7
7
  boundary = 0,
@@ -37,15 +37,18 @@ export default class MultipartReader {
37
37
  contentType: null,
38
38
  header: ''
39
39
  };
40
+ private window: BrowserWindow;
40
41
 
41
42
  /**
42
43
  * Constructor.
43
44
  *
45
+ * @param window Window.
44
46
  * @param formData Form data.
45
47
  * @param boundary Boundary.
46
48
  */
47
- constructor(boundary: string) {
49
+ constructor(window: BrowserWindow, boundary: string) {
48
50
  const boundaryHeader = `--${boundary}`;
51
+ this.window = window;
49
52
  this.boundary = new Uint8Array(boundaryHeader.length);
50
53
 
51
54
  for (let i = 0, max = boundaryHeader.length; i < max; i++) {
@@ -156,7 +159,7 @@ export default class MultipartReader {
156
159
  */
157
160
  public end(): FormData {
158
161
  if (this.state !== MultiparParserStateEnum.data) {
159
- throw new DOMException(
162
+ throw new this.window.DOMException(
160
163
  `Unexpected end of multipart stream. Expected state to be "${MultiparParserStateEnum.data}" but got "${this.state}".`,
161
164
  DOMExceptionNameEnum.invalidStateError
162
165
  );
@@ -10,6 +10,7 @@ import IRequestBody from '../types/IRequestBody.js';
10
10
  import IResponseBody from '../types/IResponseBody.js';
11
11
  import { Buffer } from 'buffer';
12
12
  import Stream from 'stream';
13
+ import BrowserWindow from '../../window/BrowserWindow.js';
13
14
 
14
15
  /**
15
16
  * Fetch body utility.
@@ -97,17 +98,21 @@ export default class FetchBodyUtility {
97
98
  * It is actually not cloning the stream.
98
99
  * It creates a pass through stream and pipes the original stream to it.
99
100
  *
101
+ * @param window Window.
100
102
  * @param requestOrResponse Request or Response.
101
103
  * @param requestOrResponse.body Body.
102
104
  * @param requestOrResponse.bodyUsed Body used.
103
105
  * @returns New stream.
104
106
  */
105
- public static cloneBodyStream(requestOrResponse: {
106
- body: ReadableStream | null;
107
- bodyUsed: boolean;
108
- }): ReadableStream {
107
+ public static cloneBodyStream(
108
+ window: BrowserWindow,
109
+ requestOrResponse: {
110
+ body: ReadableStream | null;
111
+ bodyUsed: boolean;
112
+ }
113
+ ): ReadableStream {
109
114
  if (requestOrResponse.bodyUsed) {
110
- throw new DOMException(
115
+ throw new window.DOMException(
111
116
  `Failed to clone body stream of request: Request body is already used.`,
112
117
  DOMExceptionNameEnum.invalidStateError
113
118
  );
@@ -153,10 +158,14 @@ export default class FetchBodyUtility {
153
158
  * https://github.com/node-fetch/node-fetch/blob/main/src/body.js (MIT)
154
159
  *
155
160
  * @see https://fetch.spec.whatwg.org/#concept-body-consume-body
161
+ * @param window Window.
156
162
  * @param body Body stream.
157
163
  * @returns Promise.
158
164
  */
159
- public static async consumeBodyStream(body: ReadableStream | null): Promise<Buffer> {
165
+ public static async consumeBodyStream(
166
+ window: BrowserWindow,
167
+ body: ReadableStream | null
168
+ ): Promise<Buffer> {
160
169
  if (body === null || !(body instanceof ReadableStream)) {
161
170
  return Buffer.alloc(0);
162
171
  }
@@ -175,6 +184,12 @@ export default class FetchBodyUtility {
175
184
  if (body[PropertySymbol.error]) {
176
185
  throw body[PropertySymbol.error];
177
186
  }
187
+ if (body[PropertySymbol.aborted]) {
188
+ throw new window.DOMException(
189
+ 'Failed to read response body: The stream was aborted.',
190
+ DOMExceptionNameEnum.abortError
191
+ );
192
+ }
178
193
  const chunk = readResult.value;
179
194
  bytes += chunk.length;
180
195
  chunks.push(chunk);
@@ -184,7 +199,7 @@ export default class FetchBodyUtility {
184
199
  if (error instanceof DOMException) {
185
200
  throw error;
186
201
  }
187
- throw new DOMException(
202
+ throw new window.DOMException(
188
203
  `Failed to read response body. Error: ${error.message}.`,
189
204
  DOMExceptionNameEnum.encodingError
190
205
  );
@@ -197,7 +212,7 @@ export default class FetchBodyUtility {
197
212
 
198
213
  return Buffer.concat(chunks, bytes);
199
214
  } catch (error) {
200
- throw new DOMException(
215
+ throw new window.DOMException(
201
216
  `Could not create Buffer from response body. Error: ${error.message}.`,
202
217
  DOMExceptionNameEnum.invalidStateError
203
218
  );
@@ -1,8 +1,6 @@
1
1
  import WhatwgMIMEType from 'whatwg-mimetype';
2
2
  import * as PropertySymbol from '../PropertySymbol.js';
3
- import BrowserWindow from '../window/BrowserWindow.js';
4
3
  import ProgressEvent from '../event/events/ProgressEvent.js';
5
- import DOMException from '../exception/DOMException.js';
6
4
  import DOMExceptionNameEnum from '../exception/DOMExceptionNameEnum.js';
7
5
  import Blob from './Blob.js';
8
6
  import FileReaderReadyStateEnum from './FileReaderReadyStateEnum.js';
@@ -31,16 +29,18 @@ export default class FileReader extends EventTarget {
31
29
  #isTerminated = false;
32
30
  #loadTimeout: NodeJS.Timeout | null = null;
33
31
  #parseTimeout: NodeJS.Timeout | null = null;
34
- readonly #window: BrowserWindow;
35
32
 
36
33
  /**
37
34
  * Constructor.
38
- *
39
- * @param window Window.
40
35
  */
41
- constructor(window: BrowserWindow) {
36
+ constructor() {
42
37
  super();
43
- this.#window = window;
38
+
39
+ if (!this[PropertySymbol.window]) {
40
+ throw new TypeError(
41
+ `Failed to construct '${this.constructor.name}': '${this.constructor.name}' was constructed outside a Window context.`
42
+ );
43
+ }
44
44
  }
45
45
 
46
46
  /**
@@ -84,8 +84,10 @@ export default class FileReader extends EventTarget {
84
84
  * Aborts the file reader.
85
85
  */
86
86
  public abort(): void {
87
- this.#window.clearTimeout(this.#loadTimeout);
88
- this.#window.clearTimeout(this.#parseTimeout);
87
+ const window = this[PropertySymbol.window];
88
+
89
+ window.clearTimeout(this.#loadTimeout);
90
+ window.clearTimeout(this.#parseTimeout);
89
91
 
90
92
  if (
91
93
  this.readyState === FileReaderReadyStateEnum.empty ||
@@ -113,8 +115,10 @@ export default class FileReader extends EventTarget {
113
115
  * @param [encoding] Encoding.
114
116
  */
115
117
  #readFile(blob: Blob, format: FileReaderFormatEnum, encoding: string | null = null): void {
118
+ const window = this[PropertySymbol.window];
119
+
116
120
  if (this.readyState === FileReaderReadyStateEnum.loading) {
117
- throw new DOMException(
121
+ throw new window.DOMException(
118
122
  'The object is in an invalid state.',
119
123
  DOMExceptionNameEnum.invalidStateError
120
124
  );
@@ -122,7 +126,7 @@ export default class FileReader extends EventTarget {
122
126
 
123
127
  (<number>this.readyState) = FileReaderReadyStateEnum.loading;
124
128
 
125
- this.#loadTimeout = this.#window.setTimeout(() => {
129
+ this.#loadTimeout = window.setTimeout(() => {
126
130
  if (this.#isTerminated) {
127
131
  this.#isTerminated = false;
128
132
  return;
@@ -143,7 +147,7 @@ export default class FileReader extends EventTarget {
143
147
  })
144
148
  );
145
149
 
146
- this.#parseTimeout = this.#window.setTimeout(() => {
150
+ this.#parseTimeout = window.setTimeout(() => {
147
151
  if (this.#isTerminated) {
148
152
  this.#isTerminated = false;
149
153
  return;