happy-dom 8.8.0 → 9.0.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 (364) hide show
  1. package/README.md +2 -2
  2. package/lib/cookie/CookieJar.js +1 -1
  3. package/lib/cookie/CookieJar.js.map +1 -1
  4. package/lib/dom-token-list/DOMTokenList.js +24 -20
  5. package/lib/dom-token-list/DOMTokenList.js.map +1 -1
  6. package/lib/event/EventTarget.js +6 -3
  7. package/lib/event/EventTarget.js.map +1 -1
  8. package/lib/exception/DOMExceptionNameEnum.d.ts +5 -1
  9. package/lib/exception/DOMExceptionNameEnum.js +4 -0
  10. package/lib/exception/DOMExceptionNameEnum.js.map +1 -1
  11. package/lib/fetch/AbortController.d.ts +19 -0
  12. package/lib/fetch/AbortController.js +30 -0
  13. package/lib/fetch/AbortController.js.map +1 -0
  14. package/lib/fetch/AbortSignal.d.ts +25 -0
  15. package/lib/fetch/AbortSignal.js +51 -0
  16. package/lib/fetch/AbortSignal.js.map +1 -0
  17. package/lib/fetch/Fetch.d.ts +117 -0
  18. package/lib/fetch/Fetch.js +530 -0
  19. package/lib/fetch/Fetch.js.map +1 -0
  20. package/lib/fetch/Headers.d.ts +81 -3
  21. package/lib/fetch/Headers.js +139 -24
  22. package/lib/fetch/Headers.js.map +1 -1
  23. package/lib/fetch/Request.d.ts +56 -32
  24. package/lib/fetch/Request.js +165 -110
  25. package/lib/fetch/Request.js.map +1 -1
  26. package/lib/fetch/{ResourceFetchHandler.d.ts → ResourceFetch.d.ts} +1 -1
  27. package/lib/fetch/{ResourceFetchHandler.js → ResourceFetch.js} +5 -5
  28. package/lib/fetch/ResourceFetch.js.map +1 -0
  29. package/lib/fetch/Response.d.ts +60 -26
  30. package/lib/fetch/Response.js +196 -104
  31. package/lib/fetch/Response.js.map +1 -1
  32. package/lib/fetch/data-uri/DataURIParser.d.ts +20 -0
  33. package/lib/fetch/data-uri/DataURIParser.js +60 -0
  34. package/lib/fetch/data-uri/DataURIParser.js.map +1 -0
  35. package/lib/fetch/multipart/MultipartFormDataParser.d.ts +40 -0
  36. package/lib/fetch/multipart/MultipartFormDataParser.js +81 -0
  37. package/lib/fetch/multipart/MultipartFormDataParser.js.map +1 -0
  38. package/lib/fetch/multipart/MultipartReader.d.ts +49 -0
  39. package/lib/fetch/multipart/MultipartReader.js +178 -0
  40. package/lib/fetch/multipart/MultipartReader.js.map +1 -0
  41. package/lib/fetch/types/IHeaders.d.ts +71 -0
  42. package/lib/fetch/{IHeaders.js.map → types/IHeaders.js.map} +1 -1
  43. package/lib/fetch/types/IHeadersInit.js.map +1 -0
  44. package/lib/fetch/types/IRequest.d.ts +60 -0
  45. package/lib/fetch/{IRequest.js.map → types/IRequest.js.map} +1 -1
  46. package/lib/fetch/types/IRequestBody.d.ts +7 -0
  47. package/lib/fetch/{IBody.js → types/IRequestBody.js} +1 -1
  48. package/lib/fetch/types/IRequestBody.js.map +1 -0
  49. package/lib/fetch/types/IRequestCredentials.d.ts +2 -0
  50. package/lib/fetch/types/IRequestCredentials.js +3 -0
  51. package/lib/fetch/types/IRequestCredentials.js.map +1 -0
  52. package/lib/fetch/{RequestInfo.d.ts → types/IRequestInfo.d.ts} +2 -2
  53. package/lib/fetch/types/IRequestInfo.js +3 -0
  54. package/lib/fetch/types/IRequestInfo.js.map +1 -0
  55. package/lib/fetch/types/IRequestInit.d.ts +21 -0
  56. package/lib/fetch/types/IRequestInit.js.map +1 -0
  57. package/lib/fetch/types/IRequestRedirect.d.ts +2 -0
  58. package/lib/fetch/types/IRequestRedirect.js +3 -0
  59. package/lib/fetch/types/IRequestRedirect.js.map +1 -0
  60. package/lib/fetch/types/IRequestReferrerPolicy.d.ts +2 -0
  61. package/lib/fetch/types/IRequestReferrerPolicy.js +3 -0
  62. package/lib/fetch/types/IRequestReferrerPolicy.js.map +1 -0
  63. package/lib/fetch/types/IResponse.d.ts +27 -0
  64. package/lib/fetch/{IResponse.js.map → types/IResponse.js.map} +1 -1
  65. package/lib/fetch/types/IResponseBody.d.ts +7 -0
  66. package/lib/fetch/types/IResponseBody.js +3 -0
  67. package/lib/fetch/types/IResponseBody.js.map +1 -0
  68. package/lib/fetch/types/IResponseInit.d.ts +9 -0
  69. package/lib/fetch/types/IResponseInit.js.map +1 -0
  70. package/lib/fetch/utilities/FetchBodyUtility.d.ts +44 -0
  71. package/lib/fetch/utilities/FetchBodyUtility.js +156 -0
  72. package/lib/fetch/utilities/FetchBodyUtility.js.map +1 -0
  73. package/lib/fetch/utilities/FetchCORSUtility.d.ts +12 -0
  74. package/lib/fetch/utilities/FetchCORSUtility.js +20 -0
  75. package/lib/fetch/utilities/FetchCORSUtility.js.map +1 -0
  76. package/lib/fetch/utilities/FetchRequestHeaderUtility.d.ts +12 -0
  77. package/lib/fetch/utilities/FetchRequestHeaderUtility.js +45 -0
  78. package/lib/fetch/utilities/FetchRequestHeaderUtility.js.map +1 -0
  79. package/lib/fetch/utilities/FetchRequestReferrerUtility.d.ts +55 -0
  80. package/lib/fetch/utilities/FetchRequestReferrerUtility.js +194 -0
  81. package/lib/fetch/utilities/FetchRequestReferrerUtility.js.map +1 -0
  82. package/lib/fetch/utilities/FetchRequestValidationUtility.d.ts +38 -0
  83. package/lib/fetch/utilities/FetchRequestValidationUtility.js +70 -0
  84. package/lib/fetch/utilities/FetchRequestValidationUtility.js.map +1 -0
  85. package/lib/file/Blob.d.ts +2 -2
  86. package/lib/file/Blob.js +1 -1
  87. package/lib/file/Blob.js.map +1 -1
  88. package/lib/file/File.d.ts +2 -1
  89. package/lib/file/File.js.map +1 -1
  90. package/lib/form-data/FormData.d.ts +98 -0
  91. package/lib/form-data/FormData.js +212 -0
  92. package/lib/form-data/FormData.js.map +1 -0
  93. package/lib/index.d.ts +14 -1
  94. package/lib/index.js +20 -2
  95. package/lib/index.js.map +1 -1
  96. package/lib/nodes/document/Document.d.ts +5 -17
  97. package/lib/nodes/document/Document.js +11 -54
  98. package/lib/nodes/document/Document.js.map +1 -1
  99. package/lib/nodes/document/IDocument.d.ts +1 -1
  100. package/lib/nodes/document-fragment/DocumentFragment.d.ts +3 -14
  101. package/lib/nodes/document-fragment/DocumentFragment.js +7 -51
  102. package/lib/nodes/document-fragment/DocumentFragment.js.map +1 -1
  103. package/lib/nodes/document-fragment/IDocumentFragment.d.ts +2 -1
  104. package/lib/nodes/element/Element.d.ts +8 -8
  105. package/lib/nodes/element/Element.js +28 -45
  106. package/lib/nodes/element/Element.js.map +1 -1
  107. package/lib/nodes/element/ElementUtility.d.ts +32 -0
  108. package/lib/nodes/element/ElementUtility.js +105 -0
  109. package/lib/nodes/element/ElementUtility.js.map +1 -0
  110. package/lib/nodes/element/HTMLCollection.d.ts +26 -3
  111. package/lib/nodes/element/HTMLCollection.js +51 -0
  112. package/lib/nodes/element/HTMLCollection.js.map +1 -1
  113. package/lib/nodes/element/IHTMLCollection.d.ts +9 -2
  114. package/lib/nodes/html-anchor-element/HTMLAnchorElement.js +24 -24
  115. package/lib/nodes/html-anchor-element/HTMLAnchorElement.js.map +1 -1
  116. package/lib/nodes/html-audio-element/Audio.d.ts +15 -0
  117. package/lib/nodes/html-audio-element/Audio.js +27 -0
  118. package/lib/nodes/html-audio-element/Audio.js.map +1 -0
  119. package/lib/nodes/html-base-element/HTMLBaseElement.js +4 -4
  120. package/lib/nodes/html-base-element/HTMLBaseElement.js.map +1 -1
  121. package/lib/nodes/html-button-element/HTMLButtonElement.d.ts +79 -3
  122. package/lib/nodes/html-button-element/HTMLButtonElement.js +158 -10
  123. package/lib/nodes/html-button-element/HTMLButtonElement.js.map +1 -1
  124. package/lib/nodes/html-button-element/IHTMLButtonElement.d.ts +28 -2
  125. package/lib/nodes/html-dialog-element/HTMLDialogElement.js +3 -3
  126. package/lib/nodes/html-dialog-element/HTMLDialogElement.js.map +1 -1
  127. package/lib/nodes/html-element/HTMLElement.js +12 -12
  128. package/lib/nodes/html-element/HTMLElement.js.map +1 -1
  129. package/lib/nodes/html-form-element/HTMLFormControlsCollection.d.ts +32 -0
  130. package/lib/nodes/html-form-element/HTMLFormControlsCollection.js +58 -0
  131. package/lib/nodes/html-form-element/HTMLFormControlsCollection.js.map +1 -0
  132. package/lib/nodes/html-form-element/HTMLFormElement.d.ts +37 -17
  133. package/lib/nodes/html-form-element/HTMLFormElement.js +128 -37
  134. package/lib/nodes/html-form-element/HTMLFormElement.js.map +1 -1
  135. package/lib/nodes/html-form-element/IHTMLFormControlsCollection.d.ts +25 -0
  136. package/lib/nodes/html-form-element/IHTMLFormControlsCollection.js +3 -0
  137. package/lib/nodes/html-form-element/IHTMLFormControlsCollection.js.map +1 -0
  138. package/lib/nodes/html-form-element/IHTMLFormElement.d.ts +16 -6
  139. package/lib/nodes/html-form-element/IRadioNodeList.d.ts +15 -0
  140. package/lib/nodes/html-form-element/IRadioNodeList.js +3 -0
  141. package/lib/nodes/html-form-element/IRadioNodeList.js.map +1 -0
  142. package/lib/nodes/html-form-element/RadioNodeList.d.ts +16 -0
  143. package/lib/nodes/html-form-element/RadioNodeList.js +28 -0
  144. package/lib/nodes/html-form-element/RadioNodeList.js.map +1 -0
  145. package/lib/nodes/html-image-element/HTMLImageElement.js +19 -19
  146. package/lib/nodes/html-image-element/HTMLImageElement.js.map +1 -1
  147. package/lib/nodes/html-input-element/HTMLInputElement.d.ts +43 -19
  148. package/lib/nodes/html-input-element/HTMLInputElement.js +206 -111
  149. package/lib/nodes/html-input-element/HTMLInputElement.js.map +1 -1
  150. package/lib/nodes/html-input-element/IHTMLInputElement.d.ts +14 -1
  151. package/lib/nodes/html-label-element/HTMLLabelElement.js +3 -7
  152. package/lib/nodes/html-label-element/HTMLLabelElement.js.map +1 -1
  153. package/lib/nodes/html-link-element/HTMLLinkElement.js +21 -21
  154. package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
  155. package/lib/nodes/html-media-element/HTMLMediaElement.js +21 -21
  156. package/lib/nodes/html-media-element/HTMLMediaElement.js.map +1 -1
  157. package/lib/nodes/html-meta-element/HTMLMetaElement.js +8 -8
  158. package/lib/nodes/html-meta-element/HTMLMetaElement.js.map +1 -1
  159. package/lib/nodes/html-opt-group-element/HTMLOptGroupElement.js +6 -6
  160. package/lib/nodes/html-opt-group-element/HTMLOptGroupElement.js.map +1 -1
  161. package/lib/nodes/html-option-element/HTMLOptionElement.d.ts +3 -4
  162. package/lib/nodes/html-option-element/HTMLOptionElement.js +26 -29
  163. package/lib/nodes/html-option-element/HTMLOptionElement.js.map +1 -1
  164. package/lib/nodes/html-script-element/HTMLScriptElement.js +16 -16
  165. package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
  166. package/lib/nodes/html-script-element/ScriptUtility.js +5 -5
  167. package/lib/nodes/html-script-element/ScriptUtility.js.map +1 -1
  168. package/lib/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.d.ts +5 -6
  169. package/lib/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.js.map +1 -1
  170. package/lib/nodes/html-select-element/HTMLSelectElement.d.ts +42 -41
  171. package/lib/nodes/html-select-element/HTMLSelectElement.js +134 -138
  172. package/lib/nodes/html-select-element/HTMLSelectElement.js.map +1 -1
  173. package/lib/nodes/{html-option-element → html-select-element}/IHTMLOptionsCollection.d.ts +4 -5
  174. package/lib/nodes/html-select-element/IHTMLOptionsCollection.js.map +1 -0
  175. package/lib/nodes/html-select-element/IHTMLSelectElement.d.ts +22 -2
  176. package/lib/nodes/html-slot-element/HTMLSlotElement.js +2 -2
  177. package/lib/nodes/html-slot-element/HTMLSlotElement.js.map +1 -1
  178. package/lib/nodes/html-style-element/HTMLStyleElement.js +7 -7
  179. package/lib/nodes/html-style-element/HTMLStyleElement.js.map +1 -1
  180. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +55 -2
  181. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js +150 -40
  182. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js.map +1 -1
  183. package/lib/nodes/html-text-area-element/IHTMLTextAreaElement.d.ts +16 -0
  184. package/lib/nodes/node/Node.d.ts +12 -1
  185. package/lib/nodes/node/Node.js +50 -4
  186. package/lib/nodes/node/Node.js.map +1 -1
  187. package/lib/nodes/node/NodeList.d.ts +2 -3
  188. package/lib/nodes/node/NodeList.js.map +1 -1
  189. package/lib/nodes/parent-node/IParentNode.d.ts +4 -4
  190. package/lib/nodes/parent-node/ParentNodeUtility.d.ts +3 -3
  191. package/lib/nodes/parent-node/ParentNodeUtility.js +13 -11
  192. package/lib/nodes/parent-node/ParentNodeUtility.js.map +1 -1
  193. package/lib/nodes/text/Text.d.ts +13 -0
  194. package/lib/nodes/text/Text.js +30 -0
  195. package/lib/nodes/text/Text.js.map +1 -1
  196. package/lib/query-selector/QuerySelector.js +2 -2
  197. package/lib/query-selector/QuerySelector.js.map +1 -1
  198. package/lib/query-selector/SelectorItem.js +2 -0
  199. package/lib/query-selector/SelectorItem.js.map +1 -1
  200. package/lib/validity-state/ValidityState.d.ts +87 -0
  201. package/lib/validity-state/ValidityState.js +171 -0
  202. package/lib/validity-state/ValidityState.js.map +1 -0
  203. package/lib/window/GlobalWindow.d.ts +0 -8
  204. package/lib/window/GlobalWindow.js +0 -2
  205. package/lib/window/GlobalWindow.js.map +1 -1
  206. package/lib/window/INodeJSGlobal.d.ts +71 -0
  207. package/lib/window/INodeJSGlobal.js +2 -0
  208. package/lib/window/INodeJSGlobal.js.map +1 -0
  209. package/lib/window/IWindow.d.ts +30 -10
  210. package/lib/window/Window.d.ts +37 -20
  211. package/lib/window/Window.js +22 -10
  212. package/lib/window/Window.js.map +1 -1
  213. package/lib/xml-http-request/XMLHttpRequest.js +20 -12
  214. package/lib/xml-http-request/XMLHttpRequest.js.map +1 -1
  215. package/lib/xml-parser/XMLParser.js +1 -1
  216. package/lib/xml-parser/XMLParser.js.map +1 -1
  217. package/package.json +2 -3
  218. package/src/cookie/CookieJar.ts +1 -1
  219. package/src/dom-token-list/DOMTokenList.ts +24 -20
  220. package/src/event/EventTarget.ts +7 -3
  221. package/src/exception/DOMExceptionNameEnum.ts +5 -1
  222. package/src/fetch/AbortController.ts +26 -0
  223. package/src/fetch/AbortSignal.ts +44 -0
  224. package/src/fetch/Fetch.ts +666 -0
  225. package/src/fetch/Headers.ts +151 -3
  226. package/src/fetch/Request.ts +226 -94
  227. package/src/fetch/{ResourceFetchHandler.ts → ResourceFetch.ts} +3 -3
  228. package/src/fetch/Response.ts +252 -89
  229. package/src/fetch/data-uri/DataURIParser.ts +66 -0
  230. package/src/fetch/multipart/MultipartFormDataParser.ts +113 -0
  231. package/src/fetch/multipart/MultipartReader.ts +217 -0
  232. package/src/fetch/types/IHeaders.ts +80 -0
  233. package/src/fetch/types/IRequest.ts +65 -0
  234. package/src/fetch/types/IRequestBody.ts +15 -0
  235. package/src/fetch/types/IRequestCredentials.ts +2 -0
  236. package/src/fetch/types/IRequestInfo.ts +6 -0
  237. package/src/fetch/types/IRequestInit.ts +21 -0
  238. package/src/fetch/types/IRequestRedirect.ts +3 -0
  239. package/src/fetch/types/IRequestReferrerPolicy.ts +11 -0
  240. package/src/fetch/types/IResponse.ts +27 -0
  241. package/src/fetch/types/IResponseBody.ts +15 -0
  242. package/src/fetch/types/IResponseInit.ts +10 -0
  243. package/src/fetch/utilities/FetchBodyUtility.ts +175 -0
  244. package/src/fetch/utilities/FetchCORSUtility.ts +18 -0
  245. package/src/fetch/utilities/FetchRequestHeaderUtility.ts +47 -0
  246. package/src/fetch/utilities/FetchRequestReferrerUtility.ts +241 -0
  247. package/src/fetch/utilities/FetchRequestValidationUtility.ts +82 -0
  248. package/src/file/Blob.ts +2 -2
  249. package/src/file/File.ts +5 -1
  250. package/src/form-data/FormData.ts +237 -0
  251. package/src/index.ts +27 -1
  252. package/src/nodes/document/Document.ts +23 -64
  253. package/src/nodes/document/IDocument.ts +1 -1
  254. package/src/nodes/document-fragment/DocumentFragment.ts +9 -59
  255. package/src/nodes/document-fragment/IDocumentFragment.ts +2 -1
  256. package/src/nodes/element/Element.ts +43 -56
  257. package/src/nodes/element/ElementUtility.ts +137 -0
  258. package/src/nodes/element/HTMLCollection.ts +60 -3
  259. package/src/nodes/element/IHTMLCollection.ts +10 -2
  260. package/src/nodes/html-anchor-element/HTMLAnchorElement.ts +24 -24
  261. package/src/nodes/html-audio-element/Audio.ts +22 -0
  262. package/src/nodes/html-base-element/HTMLBaseElement.ts +4 -4
  263. package/src/nodes/html-button-element/HTMLButtonElement.ts +184 -10
  264. package/src/nodes/html-button-element/IHTMLButtonElement.ts +31 -2
  265. package/src/nodes/html-dialog-element/HTMLDialogElement.ts +3 -3
  266. package/src/nodes/html-element/HTMLElement.ts +12 -12
  267. package/src/nodes/html-form-element/HTMLFormControlsCollection.ts +76 -0
  268. package/src/nodes/html-form-element/HTMLFormElement.ts +147 -41
  269. package/src/nodes/html-form-element/IHTMLFormControlsCollection.ts +45 -0
  270. package/src/nodes/html-form-element/IHTMLFormElement.ts +17 -6
  271. package/src/nodes/html-form-element/IRadioNodeList.ts +16 -0
  272. package/src/nodes/html-form-element/RadioNodeList.ts +24 -0
  273. package/src/nodes/html-image-element/HTMLImageElement.ts +19 -19
  274. package/src/nodes/html-input-element/HTMLInputElement.ts +232 -113
  275. package/src/nodes/html-input-element/IHTMLInputElement.ts +20 -1
  276. package/src/nodes/html-label-element/HTMLLabelElement.ts +3 -7
  277. package/src/nodes/html-link-element/HTMLLinkElement.ts +21 -21
  278. package/src/nodes/html-media-element/HTMLMediaElement.ts +21 -21
  279. package/src/nodes/html-meta-element/HTMLMetaElement.ts +8 -8
  280. package/src/nodes/html-opt-group-element/HTMLOptGroupElement.ts +6 -6
  281. package/src/nodes/html-option-element/HTMLOptionElement.ts +29 -30
  282. package/src/nodes/html-script-element/HTMLScriptElement.ts +16 -16
  283. package/src/nodes/html-script-element/ScriptUtility.ts +5 -5
  284. package/src/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.ts +5 -9
  285. package/src/nodes/html-select-element/HTMLSelectElement.ts +159 -170
  286. package/src/nodes/{html-option-element → html-select-element}/IHTMLOptionsCollection.ts +4 -8
  287. package/src/nodes/html-select-element/IHTMLSelectElement.ts +25 -2
  288. package/src/nodes/html-slot-element/HTMLSlotElement.ts +2 -2
  289. package/src/nodes/html-style-element/HTMLStyleElement.ts +7 -7
  290. package/src/nodes/html-text-area-element/HTMLTextAreaElement.ts +174 -41
  291. package/src/nodes/html-text-area-element/IHTMLTextAreaElement.ts +18 -0
  292. package/src/nodes/node/Node.ts +61 -6
  293. package/src/nodes/node/NodeList.ts +2 -3
  294. package/src/nodes/parent-node/IParentNode.ts +7 -4
  295. package/src/nodes/parent-node/ParentNodeUtility.ts +25 -15
  296. package/src/nodes/text/Text.ts +38 -0
  297. package/src/query-selector/QuerySelector.ts +2 -2
  298. package/src/query-selector/SelectorItem.ts +3 -0
  299. package/src/validity-state/ValidityState.ts +211 -0
  300. package/src/window/GlobalWindow.ts +0 -2
  301. package/src/window/INodeJSGlobal.ts +70 -0
  302. package/src/window/IWindow.ts +32 -10
  303. package/src/window/Window.ts +43 -21
  304. package/src/xml-http-request/XMLHttpRequest.ts +27 -26
  305. package/src/xml-parser/XMLParser.ts +1 -1
  306. package/lib/fetch/FetchHandler.d.ts +0 -18
  307. package/lib/fetch/FetchHandler.js +0 -83
  308. package/lib/fetch/FetchHandler.js.map +0 -1
  309. package/lib/fetch/IAbortSignal.d.ts +0 -16
  310. package/lib/fetch/IAbortSignal.js +0 -4
  311. package/lib/fetch/IAbortSignal.js.map +0 -1
  312. package/lib/fetch/IBody.d.ts +0 -17
  313. package/lib/fetch/IBody.js.map +0 -1
  314. package/lib/fetch/IHeaders.d.ts +0 -18
  315. package/lib/fetch/IHeadersInit.js.map +0 -1
  316. package/lib/fetch/IRequest.d.ts +0 -18
  317. package/lib/fetch/IRequestInit.d.ts +0 -16
  318. package/lib/fetch/IRequestInit.js.map +0 -1
  319. package/lib/fetch/IResponse.d.ts +0 -20
  320. package/lib/fetch/IResponseInit.d.ts +0 -9
  321. package/lib/fetch/IResponseInit.js.map +0 -1
  322. package/lib/fetch/RequestInfo.js +0 -3
  323. package/lib/fetch/RequestInfo.js.map +0 -1
  324. package/lib/fetch/ResourceFetchHandler.js.map +0 -1
  325. package/lib/form-data/IFormData.d.ts +0 -32
  326. package/lib/form-data/IFormData.js +0 -3
  327. package/lib/form-data/IFormData.js.map +0 -1
  328. package/lib/location/RelativeURL.d.ts +0 -15
  329. package/lib/location/RelativeURL.js +0 -19
  330. package/lib/location/RelativeURL.js.map +0 -1
  331. package/lib/nodes/element/HTMLCollectionFactory.d.ts +0 -21
  332. package/lib/nodes/element/HTMLCollectionFactory.js +0 -31
  333. package/lib/nodes/element/HTMLCollectionFactory.js.map +0 -1
  334. package/lib/nodes/html-option-element/IHTMLOptionsCollection.js.map +0 -1
  335. package/lib/nodes/node/NodeListFactory.d.ts +0 -21
  336. package/lib/nodes/node/NodeListFactory.js +0 -31
  337. package/lib/nodes/node/NodeListFactory.js.map +0 -1
  338. package/lib/nodes/validity-state/ValidityState.d.ts +0 -52
  339. package/lib/nodes/validity-state/ValidityState.js +0 -81
  340. package/lib/nodes/validity-state/ValidityState.js.map +0 -1
  341. package/src/fetch/FetchHandler.ts +0 -90
  342. package/src/fetch/IAbortSignal.ts +0 -34
  343. package/src/fetch/IBody.ts +0 -18
  344. package/src/fetch/IHeaders.ts +0 -18
  345. package/src/fetch/IRequest.ts +0 -59
  346. package/src/fetch/IRequestInit.ts +0 -41
  347. package/src/fetch/IResponse.ts +0 -22
  348. package/src/fetch/IResponseInit.ts +0 -10
  349. package/src/fetch/RequestInfo.ts +0 -6
  350. package/src/form-data/IFormData.ts +0 -33
  351. package/src/location/RelativeURL.ts +0 -17
  352. package/src/nodes/element/HTMLCollectionFactory.ts +0 -31
  353. package/src/nodes/node/NodeListFactory.ts +0 -31
  354. package/src/nodes/validity-state/ValidityState.ts +0 -84
  355. /package/lib/fetch/{IHeaders.js → types/IHeaders.js} +0 -0
  356. /package/lib/fetch/{IHeadersInit.d.ts → types/IHeadersInit.d.ts} +0 -0
  357. /package/lib/fetch/{IHeadersInit.js → types/IHeadersInit.js} +0 -0
  358. /package/lib/fetch/{IRequest.js → types/IRequest.js} +0 -0
  359. /package/lib/fetch/{IRequestInit.js → types/IRequestInit.js} +0 -0
  360. /package/lib/fetch/{IResponse.js → types/IResponse.js} +0 -0
  361. /package/lib/fetch/{IResponseInit.js → types/IResponseInit.js} +0 -0
  362. /package/lib/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.js +0 -0
  363. /package/lib/nodes/{html-option-element → html-select-element}/IHTMLOptionsCollection.js +0 -0
  364. /package/src/fetch/{IHeadersInit.ts → types/IHeadersInit.ts} +0 -0
@@ -1,33 +1,148 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
4
  };
25
5
  Object.defineProperty(exports, "__esModule", { value: true });
26
- const NodeFetch = __importStar(require("node-fetch"));
6
+ const DOMException_1 = __importDefault(require("../exception/DOMException"));
7
+ const DOMExceptionNameEnum_1 = __importDefault(require("../exception/DOMExceptionNameEnum"));
27
8
  /**
28
9
  * Fetch headers.
10
+ *
11
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Headers
29
12
  */
30
- class Headers extends NodeFetch.Headers {
13
+ class Headers {
14
+ /**
15
+ * Constructor.
16
+ *
17
+ * @param init Headers init.
18
+ */
19
+ constructor(init) {
20
+ this._entries = {};
21
+ if (init) {
22
+ if (init instanceof Headers) {
23
+ this._entries = JSON.parse(JSON.stringify(init._entries));
24
+ }
25
+ else if (Array.isArray(init)) {
26
+ for (const entry of init) {
27
+ if (entry.length !== 2) {
28
+ throw new DOMException_1.default('Failed to construct "Headers": The provided init is not a valid array.', DOMExceptionNameEnum_1.default.invalidStateError);
29
+ }
30
+ this.append(entry[0], entry[1]);
31
+ }
32
+ }
33
+ else {
34
+ for (const name of Object.keys(init)) {
35
+ this.set(name, init[name]);
36
+ }
37
+ }
38
+ }
39
+ }
40
+ /**
41
+ * Appends a new value onto an existing header inside a Headers object, or adds the header if it does not already exist.
42
+ *
43
+ * @param name Name.
44
+ * @param value Value.
45
+ */
46
+ append(name, value) {
47
+ const lowerName = name.toLowerCase();
48
+ if (this._entries[lowerName]) {
49
+ this._entries[lowerName].value += `, ${value}`;
50
+ }
51
+ else {
52
+ this._entries[lowerName] = {
53
+ name,
54
+ value
55
+ };
56
+ }
57
+ }
58
+ /**
59
+ * Removes an header.
60
+ *
61
+ * @param name Name.
62
+ */
63
+ delete(name) {
64
+ delete this._entries[name.toLowerCase()];
65
+ }
66
+ /**
67
+ * Returns header value.
68
+ *
69
+ * @param name Name.
70
+ * @returns Value.
71
+ */
72
+ get(name) {
73
+ return this._entries[name.toLowerCase()]?.value || null;
74
+ }
75
+ /**
76
+ * Sets a new value for an existing header inside a Headers object, or adds the header if it does not already exist.
77
+ *
78
+ * @param name Name.
79
+ * @param value Value.
80
+ */
81
+ set(name, value) {
82
+ this._entries[name.toLowerCase()] = {
83
+ name,
84
+ value
85
+ };
86
+ }
87
+ /**
88
+ * Returns whether an Headers object contains a certain key.
89
+ *
90
+ * @param name Name.
91
+ * @returns "true" if the Headers object contains the key.
92
+ */
93
+ has(name) {
94
+ return !!this._entries[name.toLowerCase()];
95
+ }
96
+ /**
97
+ * Executes a callback function once per each key/value pair in the Headers object.
98
+ *
99
+ * @param callback Callback.
100
+ */
101
+ forEach(callback) {
102
+ for (const key of Object.keys(this._entries)) {
103
+ callback(this._entries[key].value, this._entries[key].name, this);
104
+ }
105
+ }
106
+ /**
107
+ * Returns an iterator, allowing you to go through all keys of the key/value pairs contained in this object.
108
+ *
109
+ * @returns Iterator.
110
+ */
111
+ *keys() {
112
+ for (const header of Object.values(this._entries)) {
113
+ yield header.name;
114
+ }
115
+ }
116
+ /**
117
+ * Returns an iterator, allowing you to go through all values of the key/value pairs contained in this object.
118
+ *
119
+ * @returns Iterator.
120
+ */
121
+ *values() {
122
+ for (const header of Object.values(this._entries)) {
123
+ yield header.value;
124
+ }
125
+ }
126
+ /**
127
+ * Returns an iterator, allowing you to go through all key/value pairs contained in this object.
128
+ *
129
+ * @returns Iterator.
130
+ */
131
+ *entries() {
132
+ for (const header of Object.values(this._entries)) {
133
+ yield [header.name, header.value];
134
+ }
135
+ }
136
+ /**
137
+ * Iterator.
138
+ *
139
+ * @returns Iterator.
140
+ */
141
+ *[Symbol.iterator]() {
142
+ for (const header of Object.values(this._entries)) {
143
+ yield [header.name, header.value];
144
+ }
145
+ }
31
146
  }
32
147
  exports.default = Headers;
33
148
  //# sourceMappingURL=Headers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Headers.js","sourceRoot":"","sources":["../../src/fetch/Headers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAwC;AAGxC;;GAEG;AACH,MAAqB,OAAQ,SAAQ,SAAS,CAAC,OAAO;CAAuB;AAA7E,0BAA6E"}
1
+ {"version":3,"file":"Headers.js","sourceRoot":"","sources":["../../src/fetch/Headers.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,67 @@
1
1
  /// <reference types="node" />
2
- import * as NodeFetch from 'node-fetch';
3
- import IRequest from './IRequest';
2
+ /// <reference types="node" />
3
+ /// <reference types="node" />
4
4
  import IBlob from '../file/IBlob';
5
5
  import IDocument from '../nodes/document/IDocument';
6
+ import IRequestInit from './types/IRequestInit';
7
+ import { URL } from 'url';
8
+ import IRequestInfo from './types/IRequestInfo';
9
+ import IRequest from './types/IRequest';
10
+ import Headers from './Headers';
11
+ import AbortSignal from './AbortSignal';
12
+ import Stream from 'stream';
13
+ import IRequestReferrerPolicy from './types/IRequestReferrerPolicy';
14
+ import IRequestRedirect from './types/IRequestRedirect';
15
+ import IRequestCredentials from './types/IRequestCredentials';
6
16
  /**
7
17
  * Fetch request.
18
+ *
19
+ * Based on:
20
+ * https://github.com/node-fetch/node-fetch/blob/main/src/request.js
21
+ *
22
+ * @see https://fetch.spec.whatwg.org/#request-class
8
23
  */
9
- export default class Request extends NodeFetch.Request implements IRequest {
24
+ export default class Request implements IRequest {
10
25
  static _ownerDocument: IDocument;
11
26
  readonly _ownerDocument: IDocument;
27
+ readonly method: string;
28
+ readonly body: Stream.Readable | null;
29
+ readonly headers: Headers;
30
+ readonly redirect: IRequestRedirect;
31
+ readonly referrerPolicy: IRequestReferrerPolicy;
32
+ readonly signal: AbortSignal;
33
+ readonly bodyUsed: boolean;
34
+ readonly credentials: IRequestCredentials;
35
+ readonly _contentLength: number | null;
36
+ readonly _contentType: string | null;
37
+ _referrer: '' | 'no-referrer' | 'client' | URL;
38
+ readonly _url: URL;
39
+ readonly _bodyBuffer: Buffer | null;
12
40
  /**
13
41
  * Constructor.
14
42
  *
15
43
  * @param input Input.
16
44
  * @param [init] Init.
17
45
  */
18
- constructor(input: NodeFetch.RequestInfo, init?: NodeFetch.RequestInit);
46
+ constructor(input: IRequestInfo, init?: IRequestInit);
47
+ /**
48
+ * Returns referrer.
49
+ *
50
+ * @returns Referrer.
51
+ */
52
+ get referrer(): string;
53
+ /**
54
+ * Returns URL.
55
+ *
56
+ * @returns URL.
57
+ */
58
+ get url(): string;
59
+ /**
60
+ * Returns string tag.
61
+ *
62
+ * @returns String tag.
63
+ */
64
+ get [Symbol.toStringTag](): string;
19
65
  /**
20
66
  * Returns array buffer.
21
67
  *
@@ -35,15 +81,9 @@ export default class Request extends NodeFetch.Request implements IRequest {
35
81
  */
36
82
  buffer(): Promise<Buffer>;
37
83
  /**
38
- * Returns json.
39
- *
40
- * @returns JSON.
41
- */
42
- json(): Promise<unknown>;
43
- /**
44
- * Returns json.
84
+ * Returns text.
45
85
  *
46
- * @returns JSON.
86
+ * @returns Text.
47
87
  */
48
88
  text(): Promise<string>;
49
89
  /**
@@ -51,27 +91,11 @@ export default class Request extends NodeFetch.Request implements IRequest {
51
91
  *
52
92
  * @returns JSON.
53
93
  */
54
- textConverted(): Promise<string>;
55
- /**
56
- * Handles promise start.
57
- *
58
- * @returns Task ID.
59
- */
60
- private _handlePromiseStart;
61
- /**
62
- * Handles promise end.
63
- *
64
- * @param resolve Resolve.
65
- * @param reject Reject.
66
- * @param taskID Task ID.
67
- * @param response Response.
68
- */
69
- private _handlePromiseEnd;
94
+ json(): Promise<string>;
70
95
  /**
71
- * Handles promise error.
96
+ * Clones request.
72
97
  *
73
- * @param error
74
- * @param reject
98
+ * @returns Clone.
75
99
  */
76
- private _handlePromiseError;
100
+ clone(): IRequest;
77
101
  }
@@ -1,33 +1,28 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
4
  };
25
5
  Object.defineProperty(exports, "__esModule", { value: true });
26
- const NodeFetch = __importStar(require("node-fetch"));
6
+ const url_1 = require("url");
7
+ const DOMException_1 = __importDefault(require("../exception/DOMException"));
8
+ const DOMExceptionNameEnum_1 = __importDefault(require("../exception/DOMExceptionNameEnum"));
9
+ const Headers_1 = __importDefault(require("./Headers"));
10
+ const FetchBodyUtility_1 = __importDefault(require("./utilities/FetchBodyUtility"));
11
+ const AbortSignal_1 = __importDefault(require("./AbortSignal"));
12
+ const Blob_1 = __importDefault(require("../file/Blob"));
13
+ const util_1 = require("util");
14
+ const FetchRequestValidationUtility_1 = __importDefault(require("./utilities/FetchRequestValidationUtility"));
15
+ const FetchRequestReferrerUtility_1 = __importDefault(require("./utilities/FetchRequestReferrerUtility"));
16
+ const FetchRequestHeaderUtility_1 = __importDefault(require("./utilities/FetchRequestHeaderUtility"));
27
17
  /**
28
18
  * Fetch request.
19
+ *
20
+ * Based on:
21
+ * https://github.com/node-fetch/node-fetch/blob/main/src/request.js
22
+ *
23
+ * @see https://fetch.spec.whatwg.org/#request-class
29
24
  */
30
- class Request extends NodeFetch.Request {
25
+ class Request {
31
26
  /**
32
27
  * Constructor.
33
28
  *
@@ -35,131 +30,191 @@ class Request extends NodeFetch.Request {
35
30
  * @param [init] Init.
36
31
  */
37
32
  constructor(input, init) {
38
- super(input, init);
39
33
  this._ownerDocument = null;
34
+ this.bodyUsed = false;
35
+ // Internal properties
36
+ this._contentLength = null;
37
+ this._contentType = null;
38
+ this._referrer = 'client';
40
39
  this._ownerDocument = this.constructor._ownerDocument;
40
+ if (!input) {
41
+ throw new TypeError(`Failed to contruct 'Request': 1 argument required, only 0 present.`);
42
+ }
43
+ this.method = (init?.method || input.method || 'GET').toUpperCase();
44
+ const { stream, buffer, contentType, contentLength } = FetchBodyUtility_1.default.getBodyStream(input instanceof Request && (input._bodyBuffer || input.body)
45
+ ? input._bodyBuffer || FetchBodyUtility_1.default.cloneRequestBodyStream(input)
46
+ : init?.body);
47
+ this._bodyBuffer = buffer;
48
+ this.body = stream;
49
+ this.credentials = init?.credentials || input.credentials || 'same-origin';
50
+ this.headers = new Headers_1.default(init?.headers || input.headers || {});
51
+ FetchRequestHeaderUtility_1.default.removeForbiddenHeaders(this.headers);
52
+ if (contentLength) {
53
+ this._contentLength = contentLength;
54
+ }
55
+ else if (!this.body && (this.method === 'POST' || this.method === 'PUT')) {
56
+ this._contentLength = 0;
57
+ }
58
+ if (contentType) {
59
+ this._contentType = contentType;
60
+ }
61
+ else if (input instanceof Request && input._contentType) {
62
+ this._contentType = input._contentType;
63
+ }
64
+ this.redirect = init?.redirect || input.redirect || 'follow';
65
+ this.referrerPolicy = ((init?.referrerPolicy || input.referrerPolicy || '').toLowerCase());
66
+ this.signal = init?.signal || input.signal || new AbortSignal_1.default();
67
+ this._referrer = FetchRequestReferrerUtility_1.default.getInitialReferrer(this._ownerDocument, init?.referrer !== null && init?.referrer !== undefined
68
+ ? init?.referrer
69
+ : input.referrer);
70
+ if (input instanceof url_1.URL) {
71
+ this._url = input;
72
+ }
73
+ else {
74
+ try {
75
+ if (input instanceof Request && input.url) {
76
+ this._url = new url_1.URL(input.url, this._ownerDocument.location);
77
+ }
78
+ else {
79
+ this._url = new url_1.URL(input, this._ownerDocument.location);
80
+ }
81
+ }
82
+ catch (error) {
83
+ throw new DOMException_1.default(`Failed to construct 'Request. Invalid URL "${input}" on document location '${this._ownerDocument.location}'.${this._ownerDocument.location.origin === 'null'
84
+ ? ' Relative URLs are not permitted on current document location.'
85
+ : ''}`, DOMExceptionNameEnum_1.default.notSupportedError);
86
+ }
87
+ }
88
+ FetchRequestValidationUtility_1.default.validateBody(this);
89
+ FetchRequestValidationUtility_1.default.validateURL(this._url);
90
+ FetchRequestValidationUtility_1.default.validateReferrerPolicy(this.referrerPolicy);
91
+ FetchRequestValidationUtility_1.default.validateRedirect(this.redirect);
41
92
  }
42
93
  /**
43
- * Returns array buffer.
44
- *
45
- * @returns Array buffer.
46
- */
47
- arrayBuffer() {
48
- return new Promise((resolve, reject) => {
49
- const taskID = this._handlePromiseStart();
50
- super
51
- .arrayBuffer()
52
- .then(this._handlePromiseEnd.bind(this, resolve, reject, taskID))
53
- .catch(this._handlePromiseError.bind(this, reject));
54
- });
55
- }
56
- /**
57
- * Returns blob.
94
+ * Returns referrer.
58
95
  *
59
- * @returns Blob.
96
+ * @returns Referrer.
60
97
  */
61
- blob() {
62
- return new Promise((resolve, reject) => {
63
- const taskID = this._handlePromiseStart();
64
- super
65
- .blob()
66
- .then(this._handlePromiseEnd.bind(this, resolve, reject, taskID))
67
- .catch(this._handlePromiseError.bind(this, reject));
68
- });
98
+ get referrer() {
99
+ if (!this._referrer || this._referrer === 'no-referrer') {
100
+ return '';
101
+ }
102
+ if (this._referrer === 'client') {
103
+ return 'about:client';
104
+ }
105
+ return this._referrer.toString();
69
106
  }
70
107
  /**
71
- * Returns buffer.
108
+ * Returns URL.
72
109
  *
73
- * @returns Buffer.
110
+ * @returns URL.
74
111
  */
75
- buffer() {
76
- return new Promise((resolve, reject) => {
77
- const taskID = this._handlePromiseStart();
78
- super
79
- .buffer()
80
- .then(this._handlePromiseEnd.bind(this, resolve, reject, taskID))
81
- .catch(this._handlePromiseError.bind(this, reject));
82
- });
112
+ get url() {
113
+ return this._url.href;
83
114
  }
84
115
  /**
85
- * Returns json.
116
+ * Returns string tag.
86
117
  *
87
- * @returns JSON.
118
+ * @returns String tag.
88
119
  */
89
- json() {
90
- return new Promise((resolve, reject) => {
91
- const taskID = this._handlePromiseStart();
92
- super
93
- .json()
94
- .then(this._handlePromiseEnd.bind(this, resolve, reject, taskID))
95
- .catch(this._handlePromiseError.bind(this, reject));
96
- });
120
+ get [Symbol.toStringTag]() {
121
+ return 'Request';
97
122
  }
98
123
  /**
99
- * Returns json.
124
+ * Returns array buffer.
100
125
  *
101
- * @returns JSON.
126
+ * @returns Array buffer.
102
127
  */
103
- text() {
104
- return new Promise((resolve, reject) => {
105
- const taskID = this._handlePromiseStart();
106
- super
107
- .text()
108
- .then(this._handlePromiseEnd.bind(this, resolve, reject, taskID))
109
- .catch(this._handlePromiseError.bind(this, reject));
110
- });
128
+ async arrayBuffer() {
129
+ if (this.bodyUsed) {
130
+ throw new DOMException_1.default(`Body has already been used for "${this.url}".`, DOMExceptionNameEnum_1.default.invalidStateError);
131
+ }
132
+ this.bodyUsed = true;
133
+ const taskManager = this._ownerDocument.defaultView.happyDOM.asyncTaskManager;
134
+ const taskID = taskManager.startTask(() => this.signal._abort());
135
+ let buffer;
136
+ try {
137
+ buffer = await FetchBodyUtility_1.default.consumeBodyStream(this.body);
138
+ }
139
+ catch (error) {
140
+ taskManager.endTask(taskID);
141
+ throw error;
142
+ }
143
+ taskManager.endTask(taskID);
144
+ return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
111
145
  }
112
146
  /**
113
- * Returns json.
147
+ * Returns blob.
114
148
  *
115
- * @returns JSON.
149
+ * @returns Blob.
116
150
  */
117
- textConverted() {
118
- return new Promise((resolve, reject) => {
119
- const taskID = this._handlePromiseStart();
120
- super
121
- .textConverted()
122
- .then(this._handlePromiseEnd.bind(this, resolve, reject, taskID))
123
- .catch(this._handlePromiseError.bind(this, reject));
124
- });
151
+ async blob() {
152
+ const type = this.headers.get('content-type') || '';
153
+ const buffer = await this.arrayBuffer();
154
+ return new Blob_1.default([buffer], { type });
125
155
  }
126
156
  /**
127
- * Handles promise start.
157
+ * Returns buffer.
128
158
  *
129
- * @returns Task ID.
159
+ * @returns Buffer.
130
160
  */
131
- _handlePromiseStart() {
161
+ async buffer() {
162
+ if (this.bodyUsed) {
163
+ throw new DOMException_1.default(`Body has already been used for "${this.url}".`, DOMExceptionNameEnum_1.default.invalidStateError);
164
+ }
165
+ this.bodyUsed = true;
132
166
  const taskManager = this._ownerDocument.defaultView.happyDOM.asyncTaskManager;
133
- return taskManager.startTask();
167
+ const taskID = taskManager.startTask(() => this.signal._abort());
168
+ let buffer;
169
+ try {
170
+ buffer = await FetchBodyUtility_1.default.consumeBodyStream(this.body);
171
+ }
172
+ catch (error) {
173
+ taskManager.endTask(taskID);
174
+ throw error;
175
+ }
176
+ taskManager.endTask(taskID);
177
+ return buffer;
134
178
  }
135
179
  /**
136
- * Handles promise end.
180
+ * Returns text.
137
181
  *
138
- * @param resolve Resolve.
139
- * @param reject Reject.
140
- * @param taskID Task ID.
141
- * @param response Response.
182
+ * @returns Text.
142
183
  */
143
- _handlePromiseEnd(resolve, reject, taskID, response) {
184
+ async text() {
185
+ if (this.bodyUsed) {
186
+ throw new DOMException_1.default(`Body has already been used for "${this.url}".`, DOMExceptionNameEnum_1.default.invalidStateError);
187
+ }
188
+ this.bodyUsed = true;
144
189
  const taskManager = this._ownerDocument.defaultView.happyDOM.asyncTaskManager;
145
- if (taskManager.getTaskCount() === 0) {
146
- reject(new Error('Failed to complete fetch request. Task was canceled.'));
190
+ const taskID = taskManager.startTask(() => this.signal._abort());
191
+ let buffer;
192
+ try {
193
+ buffer = await FetchBodyUtility_1.default.consumeBodyStream(this.body);
147
194
  }
148
- else {
149
- resolve(response);
195
+ catch (error) {
150
196
  taskManager.endTask(taskID);
197
+ throw error;
151
198
  }
199
+ taskManager.endTask(taskID);
200
+ return new util_1.TextDecoder().decode(buffer);
201
+ }
202
+ /**
203
+ * Returns json.
204
+ *
205
+ * @returns JSON.
206
+ */
207
+ async json() {
208
+ const text = await this.text();
209
+ return JSON.parse(text);
152
210
  }
153
211
  /**
154
- * Handles promise error.
212
+ * Clones request.
155
213
  *
156
- * @param error
157
- * @param reject
214
+ * @returns Clone.
158
215
  */
159
- _handlePromiseError(reject, error) {
160
- const taskManager = this._ownerDocument.defaultView.happyDOM.asyncTaskManager;
161
- reject(error);
162
- taskManager.cancelAll(error);
216
+ clone() {
217
+ return new Request(this);
163
218
  }
164
219
  }
165
220
  exports.default = Request;
@@ -1 +1 @@
1
- {"version":3,"file":"Request.js","sourceRoot":"","sources":["../../src/fetch/Request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Request.js","sourceRoot":"","sources":["../../src/fetch/Request.ts"],"names":[],"mappings":"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"}