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
@@ -2,7 +2,7 @@ import IDocument from '../nodes/document/IDocument';
2
2
  /**
3
3
  * Helper class for performing fetch of resources.
4
4
  */
5
- export default class ResourceFetchHandler {
5
+ export default class ResourceFetch {
6
6
  /**
7
7
  * Returns resource data asynchronously.
8
8
  *
@@ -3,12 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const RelativeURL_1 = __importDefault(require("../location/RelativeURL"));
7
6
  const DOMException_1 = __importDefault(require("../exception/DOMException"));
7
+ const url_1 = require("url");
8
8
  /**
9
9
  * Helper class for performing fetch of resources.
10
10
  */
11
- class ResourceFetchHandler {
11
+ class ResourceFetch {
12
12
  /**
13
13
  * Returns resource data asynchronously.
14
14
  *
@@ -32,7 +32,7 @@ class ResourceFetchHandler {
32
32
  */
33
33
  static fetchSync(document, url) {
34
34
  // We want to only load SyncRequest when it is needed to improve performance and not have direct dependencies to server side packages.
35
- const absoluteURL = RelativeURL_1.default.getAbsoluteURL(document.defaultView.location, url).href;
35
+ const absoluteURL = new url_1.URL(url, document.defaultView.location).href;
36
36
  const xhr = new document.defaultView.XMLHttpRequest();
37
37
  xhr.open('GET', absoluteURL, false);
38
38
  xhr.send();
@@ -42,5 +42,5 @@ class ResourceFetchHandler {
42
42
  return xhr.responseText;
43
43
  }
44
44
  }
45
- exports.default = ResourceFetchHandler;
46
- //# sourceMappingURL=ResourceFetchHandler.js.map
45
+ exports.default = ResourceFetch;
46
+ //# sourceMappingURL=ResourceFetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourceFetch.js","sourceRoot":"","sources":["../../src/fetch/ResourceFetch.ts"],"names":[],"mappings":";;;;;AAAA,6EAAqD;AAErD,6BAA0B;AAE1B;;GAEG;AACH,MAAqB,aAAa;IACjC;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAmB,EAAE,GAAW;QACzD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YACjB,MAAM,IAAI,sBAAY,CACrB,iCAAiC,GAAG,mBAAmB,QAAQ,CAAC,MAAM,EAAE,CACxE,CAAC;SACF;QACD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,SAAS,CAAC,QAAmB,EAAE,GAAW;QACvD,sIAAsI;QACtI,MAAM,WAAW,GAAG,IAAI,SAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;QAErE,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;QACtD,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACpC,GAAG,CAAC,IAAI,EAAE,CAAC;QAEX,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;YACvB,MAAM,IAAI,sBAAY,CACrB,iCAAiC,WAAW,mBAAmB,GAAG,CAAC,MAAM,EAAE,CAC3E,CAAC;SACF;QAED,OAAO,GAAG,CAAC,YAAY,CAAC;IACzB,CAAC;CACD;AAzCD,gCAyCC"}
@@ -1,21 +1,47 @@
1
1
  /// <reference types="node" />
2
- import IResponse from './IResponse';
2
+ /// <reference types="node" />
3
+ import IResponse from './types/IResponse';
3
4
  import IBlob from '../file/IBlob';
4
5
  import IDocument from '../nodes/document/IDocument';
5
- import * as NodeFetch from 'node-fetch';
6
+ import IResponseInit from './types/IResponseInit';
7
+ import IResponseBody from './types/IResponseBody';
8
+ import IHeaders from './types/IHeaders';
9
+ import Stream from 'stream';
10
+ import FormData from '../form-data/FormData';
6
11
  /**
7
12
  * Fetch response.
13
+ *
14
+ * Based on:
15
+ * https://github.com/node-fetch/node-fetch/blob/main/src/response.js (MIT)
16
+ *
17
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Response/Response
8
18
  */
9
- export default class Response extends NodeFetch.Response implements IResponse {
19
+ export default class Response implements IResponse {
10
20
  static _ownerDocument: IDocument;
11
21
  readonly _ownerDocument: IDocument;
22
+ readonly body: Stream.Readable | null;
23
+ readonly bodyUsed = false;
24
+ readonly redirected = false;
25
+ readonly type: 'basic' | 'cors' | 'default' | 'error' | 'opaque' | 'opaqueredirect';
26
+ readonly url: string;
27
+ readonly status: number;
28
+ readonly statusText: string;
29
+ readonly ok: boolean;
30
+ readonly headers: IHeaders;
12
31
  /**
13
32
  * Constructor.
14
33
  *
15
- * @param [body] An object defining a body for the response (can be omitted)
16
- * @param [init] An options object containing any custom settings that you want to apply to the response, or an empty object (which is the default value)
34
+ * @param input Input.
35
+ * @param body
36
+ * @param [init] Init.
37
+ */
38
+ constructor(body?: IResponseBody, init?: IResponseInit);
39
+ /**
40
+ * Returns string tag.
41
+ *
42
+ * @returns String tag.
17
43
  */
18
- constructor(body?: NodeFetch.BodyInit, init?: NodeFetch.ResponseInit);
44
+ get [Symbol.toStringTag](): string;
19
45
  /**
20
46
  * Returns array buffer.
21
47
  *
@@ -35,43 +61,51 @@ export default class Response extends NodeFetch.Response implements IResponse {
35
61
  */
36
62
  buffer(): Promise<Buffer>;
37
63
  /**
38
- * Returns json.
64
+ * Returns text.
39
65
  *
40
- * @returns JSON.
66
+ * @returns Text.
41
67
  */
42
- json(): Promise<unknown>;
68
+ text(): Promise<string>;
43
69
  /**
44
70
  * Returns json.
45
71
  *
46
72
  * @returns JSON.
47
73
  */
48
- text(): Promise<string>;
74
+ json(): Promise<string>;
49
75
  /**
50
- * Returns json.
76
+ * Returns form data.
51
77
  *
52
- * @returns JSON.
78
+ * @returns Form data.
79
+ */
80
+ formData(): Promise<FormData>;
81
+ /**
82
+ * Clones request.
83
+ *
84
+ * @returns Clone.
53
85
  */
54
- textConverted(): Promise<string>;
86
+ clone(): IResponse;
55
87
  /**
56
- * Handles promise start.
88
+ * Returns a redirect response.
57
89
  *
58
- * @returns Task ID.
90
+ * @param url URL.
91
+ * @param status Status code.
92
+ * @returns Response.
59
93
  */
60
- private _handlePromiseStart;
94
+ static redirect(url: string, status?: number): IResponse;
61
95
  /**
62
- * Handles promise end.
96
+ * Returns an error response.
63
97
  *
64
- * @param resolve Resolve.
65
- * @param reject Reject.
66
- * @param taskID Task ID.
67
- * @param response Response.
98
+ * @param url URL.
99
+ * @param status Status code.
100
+ * @returns Response.
68
101
  */
69
- private _handlePromiseEnd;
102
+ static error(): IResponse;
70
103
  /**
71
- * Handles promise error.
104
+ * Returns an JSON response.
72
105
  *
73
- * @param error
74
- * @param reject
106
+ * @param data Data.
107
+ * @param [init] Init.
108
+ * @returns Response.
75
109
  */
76
- private _handlePromiseError;
110
+ static json(data: object, init?: IResponseInit): IResponse;
77
111
  }
@@ -1,165 +1,257 @@
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 Headers_1 = __importDefault(require("./Headers"));
7
+ const url_1 = require("url");
8
+ const Blob_1 = __importDefault(require("../file/Blob"));
9
+ const FormData_1 = __importDefault(require("../form-data/FormData"));
10
+ const FetchBodyUtility_1 = __importDefault(require("./utilities/FetchBodyUtility"));
11
+ const DOMException_1 = __importDefault(require("../exception/DOMException"));
12
+ const DOMExceptionNameEnum_1 = __importDefault(require("../exception/DOMExceptionNameEnum"));
13
+ const util_1 = require("util");
14
+ const MultipartFormDataParser_1 = __importDefault(require("./multipart/MultipartFormDataParser"));
15
+ const REDIRECT_STATUS_CODES = [301, 302, 303, 307, 308];
27
16
  /**
28
17
  * Fetch response.
18
+ *
19
+ * Based on:
20
+ * https://github.com/node-fetch/node-fetch/blob/main/src/response.js (MIT)
21
+ *
22
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Response/Response
29
23
  */
30
- class Response extends NodeFetch.Response {
24
+ class Response {
31
25
  /**
32
26
  * Constructor.
33
27
  *
34
- * @param [body] An object defining a body for the response (can be omitted)
35
- * @param [init] An options object containing any custom settings that you want to apply to the response, or an empty object (which is the default value)
28
+ * @param input Input.
29
+ * @param body
30
+ * @param [init] Init.
36
31
  */
37
32
  constructor(body, init) {
38
- super(body, init);
39
33
  this._ownerDocument = null;
34
+ // Public properties
35
+ this.body = null;
36
+ this.bodyUsed = false;
37
+ this.redirected = false;
38
+ this.type = 'basic';
39
+ this.url = '';
40
40
  this._ownerDocument = this.constructor._ownerDocument;
41
+ this.status = init?.status !== undefined ? init.status : 200;
42
+ this.statusText = init?.statusText || '';
43
+ this.ok = this.status >= 200 && this.status < 300;
44
+ this.headers = new Headers_1.default(init?.headers);
45
+ if (body) {
46
+ const { stream, contentType } = FetchBodyUtility_1.default.getBodyStream(body);
47
+ this.body = stream;
48
+ if (contentType && !this.headers.has('Content-Type')) {
49
+ this.headers.set('Content-Type', contentType);
50
+ }
51
+ }
52
+ }
53
+ /**
54
+ * Returns string tag.
55
+ *
56
+ * @returns String tag.
57
+ */
58
+ get [Symbol.toStringTag]() {
59
+ return 'Response';
41
60
  }
42
61
  /**
43
62
  * Returns array buffer.
44
63
  *
45
64
  * @returns Array buffer.
46
65
  */
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
- });
66
+ async arrayBuffer() {
67
+ if (this.bodyUsed) {
68
+ throw new DOMException_1.default(`Body has already been used for "${this.url}".`, DOMExceptionNameEnum_1.default.invalidStateError);
69
+ }
70
+ this.bodyUsed = true;
71
+ const taskManager = this._ownerDocument.defaultView.happyDOM.asyncTaskManager;
72
+ const taskID = taskManager.startTask();
73
+ let buffer;
74
+ try {
75
+ buffer = await FetchBodyUtility_1.default.consumeBodyStream(this.body);
76
+ }
77
+ catch (error) {
78
+ taskManager.endTask(taskID);
79
+ throw error;
80
+ }
81
+ taskManager.endTask(taskID);
82
+ return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
55
83
  }
56
84
  /**
57
85
  * Returns blob.
58
86
  *
59
87
  * @returns Blob.
60
88
  */
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
- });
89
+ async blob() {
90
+ const type = this.headers.get('content-type') || '';
91
+ const buffer = await this.arrayBuffer();
92
+ return new Blob_1.default([buffer], { type });
69
93
  }
70
94
  /**
71
95
  * Returns buffer.
72
96
  *
73
97
  * @returns Buffer.
74
98
  */
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
- });
99
+ async buffer() {
100
+ if (this.bodyUsed) {
101
+ throw new DOMException_1.default(`Body has already been used for "${this.url}".`, DOMExceptionNameEnum_1.default.invalidStateError);
102
+ }
103
+ this.bodyUsed = true;
104
+ const taskManager = this._ownerDocument.defaultView.happyDOM.asyncTaskManager;
105
+ const taskID = taskManager.startTask();
106
+ let buffer;
107
+ try {
108
+ buffer = await FetchBodyUtility_1.default.consumeBodyStream(this.body);
109
+ }
110
+ catch (error) {
111
+ taskManager.endTask(taskID);
112
+ throw error;
113
+ }
114
+ taskManager.endTask(taskID);
115
+ return buffer;
83
116
  }
84
117
  /**
85
- * Returns json.
118
+ * Returns text.
86
119
  *
87
- * @returns JSON.
120
+ * @returns Text.
88
121
  */
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
- });
122
+ async text() {
123
+ if (this.bodyUsed) {
124
+ throw new DOMException_1.default(`Body has already been used for "${this.url}".`, DOMExceptionNameEnum_1.default.invalidStateError);
125
+ }
126
+ this.bodyUsed = true;
127
+ const taskManager = this._ownerDocument.defaultView.happyDOM.asyncTaskManager;
128
+ const taskID = taskManager.startTask();
129
+ let buffer;
130
+ try {
131
+ buffer = await FetchBodyUtility_1.default.consumeBodyStream(this.body);
132
+ }
133
+ catch (error) {
134
+ taskManager.endTask(taskID);
135
+ throw error;
136
+ }
137
+ taskManager.endTask(taskID);
138
+ return new util_1.TextDecoder().decode(buffer);
97
139
  }
98
140
  /**
99
141
  * Returns json.
100
142
  *
101
143
  * @returns JSON.
102
144
  */
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
- });
145
+ async json() {
146
+ const text = await this.text();
147
+ return JSON.parse(text);
111
148
  }
112
149
  /**
113
- * Returns json.
150
+ * Returns form data.
114
151
  *
115
- * @returns JSON.
152
+ * @returns Form data.
116
153
  */
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
- });
154
+ async formData() {
155
+ const contentType = this.headers.get('content-type');
156
+ const taskManager = this._ownerDocument.defaultView.happyDOM.asyncTaskManager;
157
+ const taskID = taskManager.startTask();
158
+ if (contentType.startsWith('application/x-www-form-urlencoded')) {
159
+ const formData = new FormData_1.default();
160
+ let text;
161
+ try {
162
+ text = await this.text();
163
+ }
164
+ catch (error) {
165
+ taskManager.endTask(taskID);
166
+ throw error;
167
+ }
168
+ const parameters = new url_1.URLSearchParams(text);
169
+ for (const [name, value] of parameters) {
170
+ formData.append(name, value);
171
+ }
172
+ taskManager.endTask(taskID);
173
+ return formData;
174
+ }
175
+ let formData;
176
+ try {
177
+ formData = await MultipartFormDataParser_1.default.streamToFormData(this.body, contentType);
178
+ }
179
+ catch (error) {
180
+ taskManager.endTask(taskID);
181
+ throw error;
182
+ }
183
+ taskManager.endTask(taskID);
184
+ return formData;
125
185
  }
126
186
  /**
127
- * Handles promise start.
187
+ * Clones request.
128
188
  *
129
- * @returns Task ID.
189
+ * @returns Clone.
130
190
  */
131
- _handlePromiseStart() {
132
- const taskManager = this._ownerDocument.defaultView.happyDOM.asyncTaskManager;
133
- return taskManager.startTask();
191
+ clone() {
192
+ const response = new Response();
193
+ response.status = this.status;
194
+ response.statusText = this.statusText;
195
+ response.ok = this.ok;
196
+ response.headers = new Headers_1.default(this.headers);
197
+ response.body = this.body;
198
+ response.bodyUsed = this.bodyUsed;
199
+ response.redirected = this.redirected;
200
+ response.type = this.type;
201
+ response.url = this.url;
202
+ return response;
134
203
  }
135
204
  /**
136
- * Handles promise end.
205
+ * Returns a redirect response.
137
206
  *
138
- * @param resolve Resolve.
139
- * @param reject Reject.
140
- * @param taskID Task ID.
141
- * @param response Response.
207
+ * @param url URL.
208
+ * @param status Status code.
209
+ * @returns Response.
142
210
  */
143
- _handlePromiseEnd(resolve, reject, taskID, response) {
144
- const taskManager = this._ownerDocument.defaultView.happyDOM.asyncTaskManager;
145
- if (taskManager.getTaskCount() === 0) {
146
- reject(new Error('Failed to complete fetch request. Task was canceled.'));
147
- }
148
- else {
149
- resolve(response);
150
- taskManager.endTask(taskID);
211
+ static redirect(url, status = 302) {
212
+ if (!REDIRECT_STATUS_CODES.includes(status)) {
213
+ throw new DOMException_1.default('Failed to create redirect response: Invalid redirect status code.', DOMExceptionNameEnum_1.default.invalidStateError);
151
214
  }
215
+ return new Response(null, {
216
+ headers: {
217
+ location: new url_1.URL(url).toString()
218
+ },
219
+ status
220
+ });
152
221
  }
153
222
  /**
154
- * Handles promise error.
223
+ * Returns an error response.
155
224
  *
156
- * @param error
157
- * @param reject
225
+ * @param url URL.
226
+ * @param status Status code.
227
+ * @returns Response.
158
228
  */
159
- _handlePromiseError(reject, error) {
160
- const taskManager = this._ownerDocument.defaultView.happyDOM.asyncTaskManager;
161
- reject(error);
162
- taskManager.cancelAll(error);
229
+ static error() {
230
+ const response = new Response(null, { status: 0, statusText: '' });
231
+ response.type = 'error';
232
+ return response;
233
+ }
234
+ /**
235
+ * Returns an JSON response.
236
+ *
237
+ * @param data Data.
238
+ * @param [init] Init.
239
+ * @returns Response.
240
+ */
241
+ static json(data, init) {
242
+ const body = JSON.stringify(data);
243
+ if (body === undefined) {
244
+ throw new TypeError('data is not JSON serializable');
245
+ }
246
+ const headers = new Headers_1.default(init && init.headers);
247
+ if (!headers.has('content-type')) {
248
+ headers.set('content-type', 'application/json');
249
+ }
250
+ return new Response(body, {
251
+ status: 200,
252
+ ...init,
253
+ headers
254
+ });
163
255
  }
164
256
  }
165
257
  exports.default = Response;
@@ -1 +1 @@
1
- {"version":3,"file":"Response.js","sourceRoot":"","sources":["../../src/fetch/Response.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Response.js","sourceRoot":"","sources":["../../src/fetch/Response.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /// <reference types="node" />
2
+ /**
3
+ * Data URI parser.
4
+ *
5
+ * Based on:
6
+ * https://github.com/TooTallNate/node-data-uri-to-buffer/blob/main/src/index.ts (MIT)
7
+ */
8
+ export default class DataURIParser {
9
+ /**
10
+ * Returns a Buffer instance from the given data URI `uri`.
11
+ *
12
+ * @param uri Data URI.
13
+ * @returns Buffer.
14
+ */
15
+ static parse(uri: string): {
16
+ type: string;
17
+ charset: string;
18
+ buffer: Buffer;
19
+ };
20
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Data URI parser.
5
+ *
6
+ * Based on:
7
+ * https://github.com/TooTallNate/node-data-uri-to-buffer/blob/main/src/index.ts (MIT)
8
+ */
9
+ class DataURIParser {
10
+ /**
11
+ * Returns a Buffer instance from the given data URI `uri`.
12
+ *
13
+ * @param uri Data URI.
14
+ * @returns Buffer.
15
+ */
16
+ static parse(uri) {
17
+ if (!/^data:/i.test(uri)) {
18
+ throw new TypeError('`uri` does not appear to be a Data URI (must begin with "data:")');
19
+ }
20
+ // Strip newlines
21
+ uri = uri.replace(/\r?\n/g, '');
22
+ // Split the URI up into the "metadata" and the "data" portions
23
+ const firstComma = uri.indexOf(',');
24
+ if (firstComma === -1 || firstComma <= 4) {
25
+ throw new TypeError('malformed data: URI');
26
+ }
27
+ // Remove the "data:" scheme and parse the metadata
28
+ const meta = uri.substring(5, firstComma).split(';');
29
+ let charset = '';
30
+ let base64 = false;
31
+ let type = meta[0] || 'text/plain';
32
+ for (let i = 1; i < meta.length; i++) {
33
+ if (meta[i] === 'base64') {
34
+ base64 = true;
35
+ }
36
+ else if (meta[i]) {
37
+ type += `;${meta[i]}`;
38
+ if (meta[i].indexOf('charset=') === 0) {
39
+ charset = meta[i].substring(8);
40
+ }
41
+ }
42
+ }
43
+ // Defaults to US-ASCII only if type is not provided
44
+ if (!meta[0] && !charset.length) {
45
+ type += ';charset=US-ASCII';
46
+ charset = 'US-ASCII';
47
+ }
48
+ // Get the encoded data portion and decode URI-encoded chars
49
+ const encoding = base64 ? 'base64' : 'ascii';
50
+ const data = unescape(uri.substring(firstComma + 1));
51
+ const buffer = Buffer.from(data, encoding);
52
+ return {
53
+ type,
54
+ charset,
55
+ buffer
56
+ };
57
+ }
58
+ }
59
+ exports.default = DataURIParser;
60
+ //# sourceMappingURL=DataURIParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataURIParser.js","sourceRoot":"","sources":["../../../src/fetch/data-uri/DataURIParser.ts"],"names":[],"mappings":";;AAAA;;;;;GAKG;AACH,MAAqB,aAAa;IACjC;;;;;OAKG;IACI,MAAM,CAAC,KAAK,CAAC,GAAW;QAK9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACzB,MAAM,IAAI,SAAS,CAAC,kEAAkE,CAAC,CAAC;SACxF;QAED,iBAAiB;QACjB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAEhC,+DAA+D;QAC/D,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE;YACzC,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAC;SAC3C;QAED,mDAAmD;QACnD,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC;QAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gBACzB,MAAM,GAAG,IAAI,CAAC;aACd;iBAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;gBACnB,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;oBACtC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;iBAC/B;aACD;SACD;QAED,oDAAoD;QACpD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAChC,IAAI,IAAI,mBAAmB,CAAC;YAC5B,OAAO,GAAG,UAAU,CAAC;SACrB;QAED,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE3C,OAAO;YACN,IAAI;YACJ,OAAO;YACP,MAAM;SACN,CAAC;IACH,CAAC;CACD;AA3DD,gCA2DC"}