0.1.3 • Published 3 years ago
xhr-shim v0.1.3
xhr-shim
XMLHttpRequest, reimplemented using fetch.
Why?
- This allows code using XHR to be tested using Node, with our friend
node-fetch. - You can also use it inside service workers!
Differences
Due to the nature of fetch(),
- This does not support synchronous XHR.
- This does not support
progressevent. - This does not implement
XMLHttpRequest.upload. - XMLHttpRequest instance is not reusable.
HEADERS_RECEIVEDandLOADINGready states are skipped.
Because this is still XMLHttpRequest,
- This does not support omitting cookies for same-origin requests.
- There is no Promise support.
- There is no built-in Node.js support. Polyfill using
node-fetch.
This does not support obsolete APIs such as:
XMLHttpRequest.onreadystatechange- Basic authentication in
XMLHttpRequest.open(use Authorization header!)
Due to the nature of the main usage,
XMLHttpRequest.responseXMLalways throws.Documentcannot be used inXMLHttpRequest.send().- The default MIME type is
text/plain. - Instead of
ProgressEvent,CustomEventis used.
Requirements
This shim assumes you have these ES features:
asyncsupportclasssyntaxglobalThisObject.assignObject.createObject.entriesPromiseincludingPromise.prototype.finallySymbol- Template literals
And these WHATWG features:
AbortControllerBlob- Constructible
DOMException EventTarget.prototype.addEventListenerwithonceoptionfetchAPI withsignalsupportsetTimeout