happy-dom 8.9.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.
- package/README.md +2 -2
- package/lib/cookie/CookieJar.js +1 -1
- package/lib/cookie/CookieJar.js.map +1 -1
- package/lib/dom-token-list/DOMTokenList.js +24 -20
- package/lib/dom-token-list/DOMTokenList.js.map +1 -1
- package/lib/event/EventTarget.js +6 -3
- package/lib/event/EventTarget.js.map +1 -1
- package/lib/exception/DOMExceptionNameEnum.d.ts +5 -1
- package/lib/exception/DOMExceptionNameEnum.js +4 -0
- package/lib/exception/DOMExceptionNameEnum.js.map +1 -1
- package/lib/fetch/AbortController.d.ts +19 -0
- package/lib/fetch/AbortController.js +30 -0
- package/lib/fetch/AbortController.js.map +1 -0
- package/lib/fetch/AbortSignal.d.ts +25 -0
- package/lib/fetch/AbortSignal.js +51 -0
- package/lib/fetch/AbortSignal.js.map +1 -0
- package/lib/fetch/Fetch.d.ts +117 -0
- package/lib/fetch/Fetch.js +530 -0
- package/lib/fetch/Fetch.js.map +1 -0
- package/lib/fetch/Headers.d.ts +81 -3
- package/lib/fetch/Headers.js +139 -24
- package/lib/fetch/Headers.js.map +1 -1
- package/lib/fetch/Request.d.ts +56 -32
- package/lib/fetch/Request.js +165 -110
- package/lib/fetch/Request.js.map +1 -1
- package/lib/fetch/{ResourceFetchHandler.d.ts → ResourceFetch.d.ts} +1 -1
- package/lib/fetch/{ResourceFetchHandler.js → ResourceFetch.js} +5 -5
- package/lib/fetch/ResourceFetch.js.map +1 -0
- package/lib/fetch/Response.d.ts +60 -26
- package/lib/fetch/Response.js +196 -104
- package/lib/fetch/Response.js.map +1 -1
- package/lib/fetch/data-uri/DataURIParser.d.ts +20 -0
- package/lib/fetch/data-uri/DataURIParser.js +60 -0
- package/lib/fetch/data-uri/DataURIParser.js.map +1 -0
- package/lib/fetch/multipart/MultipartFormDataParser.d.ts +40 -0
- package/lib/fetch/multipart/MultipartFormDataParser.js +81 -0
- package/lib/fetch/multipart/MultipartFormDataParser.js.map +1 -0
- package/lib/fetch/multipart/MultipartReader.d.ts +49 -0
- package/lib/fetch/multipart/MultipartReader.js +178 -0
- package/lib/fetch/multipart/MultipartReader.js.map +1 -0
- package/lib/fetch/types/IHeaders.d.ts +71 -0
- package/lib/fetch/{IHeaders.js.map → types/IHeaders.js.map} +1 -1
- package/lib/fetch/types/IHeadersInit.js.map +1 -0
- package/lib/fetch/types/IRequest.d.ts +60 -0
- package/lib/fetch/{IRequest.js.map → types/IRequest.js.map} +1 -1
- package/lib/fetch/types/IRequestBody.d.ts +7 -0
- package/lib/fetch/{IBody.js → types/IRequestBody.js} +1 -1
- package/lib/fetch/types/IRequestBody.js.map +1 -0
- package/lib/fetch/types/IRequestCredentials.d.ts +2 -0
- package/lib/fetch/types/IRequestCredentials.js +3 -0
- package/lib/fetch/types/IRequestCredentials.js.map +1 -0
- package/lib/fetch/{RequestInfo.d.ts → types/IRequestInfo.d.ts} +2 -2
- package/lib/fetch/types/IRequestInfo.js +3 -0
- package/lib/fetch/types/IRequestInfo.js.map +1 -0
- package/lib/fetch/types/IRequestInit.d.ts +21 -0
- package/lib/fetch/types/IRequestInit.js.map +1 -0
- package/lib/fetch/types/IRequestRedirect.d.ts +2 -0
- package/lib/fetch/types/IRequestRedirect.js +3 -0
- package/lib/fetch/types/IRequestRedirect.js.map +1 -0
- package/lib/fetch/types/IRequestReferrerPolicy.d.ts +2 -0
- package/lib/fetch/types/IRequestReferrerPolicy.js +3 -0
- package/lib/fetch/types/IRequestReferrerPolicy.js.map +1 -0
- package/lib/fetch/types/IResponse.d.ts +27 -0
- package/lib/fetch/{IResponse.js.map → types/IResponse.js.map} +1 -1
- package/lib/fetch/types/IResponseBody.d.ts +7 -0
- package/lib/fetch/types/IResponseBody.js +3 -0
- package/lib/fetch/types/IResponseBody.js.map +1 -0
- package/lib/fetch/types/IResponseInit.d.ts +9 -0
- package/lib/fetch/types/IResponseInit.js.map +1 -0
- package/lib/fetch/utilities/FetchBodyUtility.d.ts +44 -0
- package/lib/fetch/utilities/FetchBodyUtility.js +156 -0
- package/lib/fetch/utilities/FetchBodyUtility.js.map +1 -0
- package/lib/fetch/utilities/FetchCORSUtility.d.ts +12 -0
- package/lib/fetch/utilities/FetchCORSUtility.js +20 -0
- package/lib/fetch/utilities/FetchCORSUtility.js.map +1 -0
- package/lib/fetch/utilities/FetchRequestHeaderUtility.d.ts +12 -0
- package/lib/fetch/utilities/FetchRequestHeaderUtility.js +45 -0
- package/lib/fetch/utilities/FetchRequestHeaderUtility.js.map +1 -0
- package/lib/fetch/utilities/FetchRequestReferrerUtility.d.ts +55 -0
- package/lib/fetch/utilities/FetchRequestReferrerUtility.js +194 -0
- package/lib/fetch/utilities/FetchRequestReferrerUtility.js.map +1 -0
- package/lib/fetch/utilities/FetchRequestValidationUtility.d.ts +38 -0
- package/lib/fetch/utilities/FetchRequestValidationUtility.js +70 -0
- package/lib/fetch/utilities/FetchRequestValidationUtility.js.map +1 -0
- package/lib/file/Blob.d.ts +2 -2
- package/lib/file/Blob.js +1 -1
- package/lib/file/Blob.js.map +1 -1
- package/lib/file/File.d.ts +2 -1
- package/lib/file/File.js.map +1 -1
- package/lib/form-data/FormData.d.ts +98 -0
- package/lib/form-data/FormData.js +212 -0
- package/lib/form-data/FormData.js.map +1 -0
- package/lib/index.d.ts +14 -1
- package/lib/index.js +20 -2
- package/lib/index.js.map +1 -1
- package/lib/nodes/document/Document.d.ts +5 -17
- package/lib/nodes/document/Document.js +11 -54
- package/lib/nodes/document/Document.js.map +1 -1
- package/lib/nodes/document/IDocument.d.ts +1 -1
- package/lib/nodes/document-fragment/DocumentFragment.d.ts +3 -14
- package/lib/nodes/document-fragment/DocumentFragment.js +7 -51
- package/lib/nodes/document-fragment/DocumentFragment.js.map +1 -1
- package/lib/nodes/document-fragment/IDocumentFragment.d.ts +2 -1
- package/lib/nodes/element/Element.d.ts +8 -8
- package/lib/nodes/element/Element.js +28 -45
- package/lib/nodes/element/Element.js.map +1 -1
- package/lib/nodes/element/ElementUtility.d.ts +32 -0
- package/lib/nodes/element/ElementUtility.js +105 -0
- package/lib/nodes/element/ElementUtility.js.map +1 -0
- package/lib/nodes/element/HTMLCollection.d.ts +26 -3
- package/lib/nodes/element/HTMLCollection.js +51 -0
- package/lib/nodes/element/HTMLCollection.js.map +1 -1
- package/lib/nodes/element/IHTMLCollection.d.ts +9 -2
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.js +24 -24
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.js.map +1 -1
- package/lib/nodes/html-base-element/HTMLBaseElement.js +4 -4
- package/lib/nodes/html-base-element/HTMLBaseElement.js.map +1 -1
- package/lib/nodes/html-button-element/HTMLButtonElement.d.ts +79 -3
- package/lib/nodes/html-button-element/HTMLButtonElement.js +158 -10
- package/lib/nodes/html-button-element/HTMLButtonElement.js.map +1 -1
- package/lib/nodes/html-button-element/IHTMLButtonElement.d.ts +28 -2
- package/lib/nodes/html-dialog-element/HTMLDialogElement.js +3 -3
- package/lib/nodes/html-dialog-element/HTMLDialogElement.js.map +1 -1
- package/lib/nodes/html-element/HTMLElement.js +12 -12
- package/lib/nodes/html-element/HTMLElement.js.map +1 -1
- package/lib/nodes/html-form-element/HTMLFormControlsCollection.d.ts +32 -0
- package/lib/nodes/html-form-element/HTMLFormControlsCollection.js +58 -0
- package/lib/nodes/html-form-element/HTMLFormControlsCollection.js.map +1 -0
- package/lib/nodes/html-form-element/HTMLFormElement.d.ts +37 -17
- package/lib/nodes/html-form-element/HTMLFormElement.js +128 -37
- package/lib/nodes/html-form-element/HTMLFormElement.js.map +1 -1
- package/lib/nodes/html-form-element/IHTMLFormControlsCollection.d.ts +25 -0
- package/lib/nodes/html-form-element/IHTMLFormControlsCollection.js +3 -0
- package/lib/nodes/html-form-element/IHTMLFormControlsCollection.js.map +1 -0
- package/lib/nodes/html-form-element/IHTMLFormElement.d.ts +16 -6
- package/lib/nodes/html-form-element/IRadioNodeList.d.ts +15 -0
- package/lib/nodes/html-form-element/IRadioNodeList.js +3 -0
- package/lib/nodes/html-form-element/IRadioNodeList.js.map +1 -0
- package/lib/nodes/html-form-element/RadioNodeList.d.ts +16 -0
- package/lib/nodes/html-form-element/RadioNodeList.js +28 -0
- package/lib/nodes/html-form-element/RadioNodeList.js.map +1 -0
- package/lib/nodes/html-image-element/HTMLImageElement.js +19 -19
- package/lib/nodes/html-image-element/HTMLImageElement.js.map +1 -1
- package/lib/nodes/html-input-element/HTMLInputElement.d.ts +43 -19
- package/lib/nodes/html-input-element/HTMLInputElement.js +206 -111
- package/lib/nodes/html-input-element/HTMLInputElement.js.map +1 -1
- package/lib/nodes/html-input-element/IHTMLInputElement.d.ts +14 -1
- package/lib/nodes/html-label-element/HTMLLabelElement.js +3 -7
- package/lib/nodes/html-label-element/HTMLLabelElement.js.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElement.js +21 -21
- package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
- package/lib/nodes/html-media-element/HTMLMediaElement.js +21 -21
- package/lib/nodes/html-media-element/HTMLMediaElement.js.map +1 -1
- package/lib/nodes/html-meta-element/HTMLMetaElement.js +8 -8
- package/lib/nodes/html-meta-element/HTMLMetaElement.js.map +1 -1
- package/lib/nodes/html-opt-group-element/HTMLOptGroupElement.js +6 -6
- package/lib/nodes/html-opt-group-element/HTMLOptGroupElement.js.map +1 -1
- package/lib/nodes/html-option-element/HTMLOptionElement.d.ts +3 -4
- package/lib/nodes/html-option-element/HTMLOptionElement.js +26 -29
- package/lib/nodes/html-option-element/HTMLOptionElement.js.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElement.js +16 -16
- package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
- package/lib/nodes/html-script-element/ScriptUtility.js +5 -5
- package/lib/nodes/html-script-element/ScriptUtility.js.map +1 -1
- package/lib/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.d.ts +5 -6
- package/lib/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.js.map +1 -1
- package/lib/nodes/html-select-element/HTMLSelectElement.d.ts +42 -41
- package/lib/nodes/html-select-element/HTMLSelectElement.js +134 -138
- package/lib/nodes/html-select-element/HTMLSelectElement.js.map +1 -1
- package/lib/nodes/{html-option-element → html-select-element}/IHTMLOptionsCollection.d.ts +4 -5
- package/lib/nodes/html-select-element/IHTMLOptionsCollection.js.map +1 -0
- package/lib/nodes/html-select-element/IHTMLSelectElement.d.ts +22 -2
- package/lib/nodes/html-slot-element/HTMLSlotElement.js +2 -2
- package/lib/nodes/html-slot-element/HTMLSlotElement.js.map +1 -1
- package/lib/nodes/html-style-element/HTMLStyleElement.js +7 -7
- package/lib/nodes/html-style-element/HTMLStyleElement.js.map +1 -1
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.d.ts +55 -2
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js +150 -40
- package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js.map +1 -1
- package/lib/nodes/html-text-area-element/IHTMLTextAreaElement.d.ts +16 -0
- package/lib/nodes/node/Node.d.ts +12 -1
- package/lib/nodes/node/Node.js +50 -4
- package/lib/nodes/node/Node.js.map +1 -1
- package/lib/nodes/node/NodeList.d.ts +2 -3
- package/lib/nodes/node/NodeList.js.map +1 -1
- package/lib/nodes/parent-node/IParentNode.d.ts +4 -4
- package/lib/nodes/parent-node/ParentNodeUtility.d.ts +3 -3
- package/lib/nodes/parent-node/ParentNodeUtility.js +13 -11
- package/lib/nodes/parent-node/ParentNodeUtility.js.map +1 -1
- package/lib/nodes/text/Text.d.ts +13 -0
- package/lib/nodes/text/Text.js +30 -0
- package/lib/nodes/text/Text.js.map +1 -1
- package/lib/query-selector/QuerySelector.js +2 -2
- package/lib/query-selector/QuerySelector.js.map +1 -1
- package/lib/query-selector/SelectorItem.js +2 -0
- package/lib/query-selector/SelectorItem.js.map +1 -1
- package/lib/validity-state/ValidityState.d.ts +87 -0
- package/lib/validity-state/ValidityState.js +171 -0
- package/lib/validity-state/ValidityState.js.map +1 -0
- package/lib/window/GlobalWindow.d.ts +0 -8
- package/lib/window/GlobalWindow.js +0 -2
- package/lib/window/GlobalWindow.js.map +1 -1
- package/lib/window/INodeJSGlobal.d.ts +71 -0
- package/lib/window/INodeJSGlobal.js +2 -0
- package/lib/window/INodeJSGlobal.js.map +1 -0
- package/lib/window/IWindow.d.ts +30 -10
- package/lib/window/Window.d.ts +36 -20
- package/lib/window/Window.js +16 -9
- package/lib/window/Window.js.map +1 -1
- package/lib/xml-http-request/XMLHttpRequest.js +20 -12
- package/lib/xml-http-request/XMLHttpRequest.js.map +1 -1
- package/lib/xml-parser/XMLParser.js +1 -1
- package/lib/xml-parser/XMLParser.js.map +1 -1
- package/package.json +2 -3
- package/src/cookie/CookieJar.ts +1 -1
- package/src/dom-token-list/DOMTokenList.ts +24 -20
- package/src/event/EventTarget.ts +7 -3
- package/src/exception/DOMExceptionNameEnum.ts +5 -1
- package/src/fetch/AbortController.ts +26 -0
- package/src/fetch/AbortSignal.ts +44 -0
- package/src/fetch/Fetch.ts +666 -0
- package/src/fetch/Headers.ts +151 -3
- package/src/fetch/Request.ts +226 -94
- package/src/fetch/{ResourceFetchHandler.ts → ResourceFetch.ts} +3 -3
- package/src/fetch/Response.ts +252 -89
- package/src/fetch/data-uri/DataURIParser.ts +66 -0
- package/src/fetch/multipart/MultipartFormDataParser.ts +113 -0
- package/src/fetch/multipart/MultipartReader.ts +217 -0
- package/src/fetch/types/IHeaders.ts +80 -0
- package/src/fetch/types/IRequest.ts +65 -0
- package/src/fetch/types/IRequestBody.ts +15 -0
- package/src/fetch/types/IRequestCredentials.ts +2 -0
- package/src/fetch/types/IRequestInfo.ts +6 -0
- package/src/fetch/types/IRequestInit.ts +21 -0
- package/src/fetch/types/IRequestRedirect.ts +3 -0
- package/src/fetch/types/IRequestReferrerPolicy.ts +11 -0
- package/src/fetch/types/IResponse.ts +27 -0
- package/src/fetch/types/IResponseBody.ts +15 -0
- package/src/fetch/types/IResponseInit.ts +10 -0
- package/src/fetch/utilities/FetchBodyUtility.ts +175 -0
- package/src/fetch/utilities/FetchCORSUtility.ts +18 -0
- package/src/fetch/utilities/FetchRequestHeaderUtility.ts +47 -0
- package/src/fetch/utilities/FetchRequestReferrerUtility.ts +241 -0
- package/src/fetch/utilities/FetchRequestValidationUtility.ts +82 -0
- package/src/file/Blob.ts +2 -2
- package/src/file/File.ts +5 -1
- package/src/form-data/FormData.ts +237 -0
- package/src/index.ts +27 -1
- package/src/nodes/document/Document.ts +23 -64
- package/src/nodes/document/IDocument.ts +1 -1
- package/src/nodes/document-fragment/DocumentFragment.ts +9 -59
- package/src/nodes/document-fragment/IDocumentFragment.ts +2 -1
- package/src/nodes/element/Element.ts +43 -56
- package/src/nodes/element/ElementUtility.ts +137 -0
- package/src/nodes/element/HTMLCollection.ts +60 -3
- package/src/nodes/element/IHTMLCollection.ts +10 -2
- package/src/nodes/html-anchor-element/HTMLAnchorElement.ts +24 -24
- package/src/nodes/html-base-element/HTMLBaseElement.ts +4 -4
- package/src/nodes/html-button-element/HTMLButtonElement.ts +184 -10
- package/src/nodes/html-button-element/IHTMLButtonElement.ts +31 -2
- package/src/nodes/html-dialog-element/HTMLDialogElement.ts +3 -3
- package/src/nodes/html-element/HTMLElement.ts +12 -12
- package/src/nodes/html-form-element/HTMLFormControlsCollection.ts +76 -0
- package/src/nodes/html-form-element/HTMLFormElement.ts +147 -41
- package/src/nodes/html-form-element/IHTMLFormControlsCollection.ts +45 -0
- package/src/nodes/html-form-element/IHTMLFormElement.ts +17 -6
- package/src/nodes/html-form-element/IRadioNodeList.ts +16 -0
- package/src/nodes/html-form-element/RadioNodeList.ts +24 -0
- package/src/nodes/html-image-element/HTMLImageElement.ts +19 -19
- package/src/nodes/html-input-element/HTMLInputElement.ts +232 -113
- package/src/nodes/html-input-element/IHTMLInputElement.ts +20 -1
- package/src/nodes/html-label-element/HTMLLabelElement.ts +3 -7
- package/src/nodes/html-link-element/HTMLLinkElement.ts +21 -21
- package/src/nodes/html-media-element/HTMLMediaElement.ts +21 -21
- package/src/nodes/html-meta-element/HTMLMetaElement.ts +8 -8
- package/src/nodes/html-opt-group-element/HTMLOptGroupElement.ts +6 -6
- package/src/nodes/html-option-element/HTMLOptionElement.ts +29 -30
- package/src/nodes/html-script-element/HTMLScriptElement.ts +16 -16
- package/src/nodes/html-script-element/ScriptUtility.ts +5 -5
- package/src/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.ts +5 -9
- package/src/nodes/html-select-element/HTMLSelectElement.ts +159 -170
- package/src/nodes/{html-option-element → html-select-element}/IHTMLOptionsCollection.ts +4 -8
- package/src/nodes/html-select-element/IHTMLSelectElement.ts +25 -2
- package/src/nodes/html-slot-element/HTMLSlotElement.ts +2 -2
- package/src/nodes/html-style-element/HTMLStyleElement.ts +7 -7
- package/src/nodes/html-text-area-element/HTMLTextAreaElement.ts +174 -41
- package/src/nodes/html-text-area-element/IHTMLTextAreaElement.ts +18 -0
- package/src/nodes/node/Node.ts +61 -6
- package/src/nodes/node/NodeList.ts +2 -3
- package/src/nodes/parent-node/IParentNode.ts +7 -4
- package/src/nodes/parent-node/ParentNodeUtility.ts +25 -15
- package/src/nodes/text/Text.ts +38 -0
- package/src/query-selector/QuerySelector.ts +2 -2
- package/src/query-selector/SelectorItem.ts +3 -0
- package/src/validity-state/ValidityState.ts +211 -0
- package/src/window/GlobalWindow.ts +0 -2
- package/src/window/INodeJSGlobal.ts +70 -0
- package/src/window/IWindow.ts +32 -10
- package/src/window/Window.ts +37 -20
- package/src/xml-http-request/XMLHttpRequest.ts +27 -26
- package/src/xml-parser/XMLParser.ts +1 -1
- package/lib/fetch/FetchHandler.d.ts +0 -18
- package/lib/fetch/FetchHandler.js +0 -83
- package/lib/fetch/FetchHandler.js.map +0 -1
- package/lib/fetch/IAbortSignal.d.ts +0 -16
- package/lib/fetch/IAbortSignal.js +0 -4
- package/lib/fetch/IAbortSignal.js.map +0 -1
- package/lib/fetch/IBody.d.ts +0 -17
- package/lib/fetch/IBody.js.map +0 -1
- package/lib/fetch/IHeaders.d.ts +0 -18
- package/lib/fetch/IHeadersInit.js.map +0 -1
- package/lib/fetch/IRequest.d.ts +0 -18
- package/lib/fetch/IRequestInit.d.ts +0 -16
- package/lib/fetch/IRequestInit.js.map +0 -1
- package/lib/fetch/IResponse.d.ts +0 -20
- package/lib/fetch/IResponseInit.d.ts +0 -9
- package/lib/fetch/IResponseInit.js.map +0 -1
- package/lib/fetch/RequestInfo.js +0 -3
- package/lib/fetch/RequestInfo.js.map +0 -1
- package/lib/fetch/ResourceFetchHandler.js.map +0 -1
- package/lib/form-data/IFormData.d.ts +0 -32
- package/lib/form-data/IFormData.js +0 -3
- package/lib/form-data/IFormData.js.map +0 -1
- package/lib/location/RelativeURL.d.ts +0 -15
- package/lib/location/RelativeURL.js +0 -19
- package/lib/location/RelativeURL.js.map +0 -1
- package/lib/nodes/element/HTMLCollectionFactory.d.ts +0 -21
- package/lib/nodes/element/HTMLCollectionFactory.js +0 -31
- package/lib/nodes/element/HTMLCollectionFactory.js.map +0 -1
- package/lib/nodes/html-option-element/IHTMLOptionsCollection.js.map +0 -1
- package/lib/nodes/node/NodeListFactory.d.ts +0 -21
- package/lib/nodes/node/NodeListFactory.js +0 -31
- package/lib/nodes/node/NodeListFactory.js.map +0 -1
- package/lib/nodes/validity-state/ValidityState.d.ts +0 -52
- package/lib/nodes/validity-state/ValidityState.js +0 -81
- package/lib/nodes/validity-state/ValidityState.js.map +0 -1
- package/src/fetch/FetchHandler.ts +0 -90
- package/src/fetch/IAbortSignal.ts +0 -34
- package/src/fetch/IBody.ts +0 -18
- package/src/fetch/IHeaders.ts +0 -18
- package/src/fetch/IRequest.ts +0 -59
- package/src/fetch/IRequestInit.ts +0 -41
- package/src/fetch/IResponse.ts +0 -22
- package/src/fetch/IResponseInit.ts +0 -10
- package/src/fetch/RequestInfo.ts +0 -6
- package/src/form-data/IFormData.ts +0 -33
- package/src/location/RelativeURL.ts +0 -17
- package/src/nodes/element/HTMLCollectionFactory.ts +0 -31
- package/src/nodes/node/NodeListFactory.ts +0 -31
- package/src/nodes/validity-state/ValidityState.ts +0 -84
- /package/lib/fetch/{IHeaders.js → types/IHeaders.js} +0 -0
- /package/lib/fetch/{IHeadersInit.d.ts → types/IHeadersInit.d.ts} +0 -0
- /package/lib/fetch/{IHeadersInit.js → types/IHeadersInit.js} +0 -0
- /package/lib/fetch/{IRequest.js → types/IRequest.js} +0 -0
- /package/lib/fetch/{IRequestInit.js → types/IRequestInit.js} +0 -0
- /package/lib/fetch/{IResponse.js → types/IResponse.js} +0 -0
- /package/lib/fetch/{IResponseInit.js → types/IResponseInit.js} +0 -0
- /package/lib/nodes/{html-option-element → html-select-element}/HTMLOptionsCollection.js +0 -0
- /package/lib/nodes/{html-option-element → html-select-element}/IHTMLOptionsCollection.js +0 -0
- /package/src/fetch/{IHeadersInit.ts → types/IHeadersInit.ts} +0 -0
@@ -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
|
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 =
|
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 =
|
46
|
-
//# sourceMappingURL=
|
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"}
|
package/lib/fetch/Response.d.ts
CHANGED
@@ -1,21 +1,47 @@
|
|
1
1
|
/// <reference types="node" />
|
2
|
-
|
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
|
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
|
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
|
16
|
-
* @param
|
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
|
-
|
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
|
64
|
+
* Returns text.
|
39
65
|
*
|
40
|
-
* @returns
|
66
|
+
* @returns Text.
|
41
67
|
*/
|
42
|
-
|
68
|
+
text(): Promise<string>;
|
43
69
|
/**
|
44
70
|
* Returns json.
|
45
71
|
*
|
46
72
|
* @returns JSON.
|
47
73
|
*/
|
48
|
-
|
74
|
+
json(): Promise<string>;
|
49
75
|
/**
|
50
|
-
* Returns
|
76
|
+
* Returns form data.
|
51
77
|
*
|
52
|
-
* @returns
|
78
|
+
* @returns Form data.
|
79
|
+
*/
|
80
|
+
formData(): Promise<FormData>;
|
81
|
+
/**
|
82
|
+
* Clones request.
|
83
|
+
*
|
84
|
+
* @returns Clone.
|
53
85
|
*/
|
54
|
-
|
86
|
+
clone(): IResponse;
|
55
87
|
/**
|
56
|
-
*
|
88
|
+
* Returns a redirect response.
|
57
89
|
*
|
58
|
-
* @
|
90
|
+
* @param url URL.
|
91
|
+
* @param status Status code.
|
92
|
+
* @returns Response.
|
59
93
|
*/
|
60
|
-
|
94
|
+
static redirect(url: string, status?: number): IResponse;
|
61
95
|
/**
|
62
|
-
*
|
96
|
+
* Returns an error response.
|
63
97
|
*
|
64
|
-
* @param
|
65
|
-
* @param
|
66
|
-
* @
|
67
|
-
* @param response Response.
|
98
|
+
* @param url URL.
|
99
|
+
* @param status Status code.
|
100
|
+
* @returns Response.
|
68
101
|
*/
|
69
|
-
|
102
|
+
static error(): IResponse;
|
70
103
|
/**
|
71
|
-
*
|
104
|
+
* Returns an JSON response.
|
72
105
|
*
|
73
|
-
* @param
|
74
|
-
* @param
|
106
|
+
* @param data Data.
|
107
|
+
* @param [init] Init.
|
108
|
+
* @returns Response.
|
75
109
|
*/
|
76
|
-
|
110
|
+
static json(data: object, init?: IResponseInit): IResponse;
|
77
111
|
}
|
package/lib/fetch/Response.js
CHANGED
@@ -1,165 +1,257 @@
|
|
1
1
|
"use strict";
|
2
|
-
var
|
3
|
-
|
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
|
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
|
24
|
+
class Response {
|
31
25
|
/**
|
32
26
|
* Constructor.
|
33
27
|
*
|
34
|
-
* @param
|
35
|
-
* @param
|
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
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
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
|
-
|
63
|
-
|
64
|
-
|
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
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
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
|
118
|
+
* Returns text.
|
86
119
|
*
|
87
|
-
* @returns
|
120
|
+
* @returns Text.
|
88
121
|
*/
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
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
|
-
|
104
|
-
|
105
|
-
|
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
|
150
|
+
* Returns form data.
|
114
151
|
*
|
115
|
-
* @returns
|
152
|
+
* @returns Form data.
|
116
153
|
*/
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
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
|
-
*
|
187
|
+
* Clones request.
|
128
188
|
*
|
129
|
-
* @returns
|
189
|
+
* @returns Clone.
|
130
190
|
*/
|
131
|
-
|
132
|
-
const
|
133
|
-
|
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
|
-
*
|
205
|
+
* Returns a redirect response.
|
137
206
|
*
|
138
|
-
* @param
|
139
|
-
* @param
|
140
|
-
* @
|
141
|
-
* @param response Response.
|
207
|
+
* @param url URL.
|
208
|
+
* @param status Status code.
|
209
|
+
* @returns Response.
|
142
210
|
*/
|
143
|
-
|
144
|
-
|
145
|
-
|
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
|
-
*
|
223
|
+
* Returns an error response.
|
155
224
|
*
|
156
|
-
* @param
|
157
|
-
* @param
|
225
|
+
* @param url URL.
|
226
|
+
* @param status Status code.
|
227
|
+
* @returns Response.
|
158
228
|
*/
|
159
|
-
|
160
|
-
const
|
161
|
-
|
162
|
-
|
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":"
|
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"}
|