@webreflection/fetch
v0.1.5
Published
A fetch with Response abilities.
Downloads
36,399
Readme
fetch
Social Media Photo by Anthony Duran on Unsplash
A fetch with Response abilities.
(... see what I did there?)
import fetch from '@webreflection/fetch';
// await directly Response methods or accessors
console.log(await fetch('https://google.com').text());
console.log(await fetch('https://google.com').ok);
// all other Promise methods just work
console.log(await fetch('https://google.com').then(r => r.ok));
The export is simply a Proxy that forwards to the Response any explicit intent, meaning:
- a
fetch(url, ...init)
returns exactly afetch(url, ...init)
reference- you can do everything you could do already with
fetch
... this is fetch indeed! - you can use this module as drop-in replacement in your current code though
- you can eventually incrementally use its features if and/or when needed
- you can do everything you could do already with
- if any
Response.prototype
known key is directly accessed, such property or method is forwarded directly to the response once the fetch is resolved - as the goal is to shortcut the response boilerplate,
Response.prototype
keys prevail overPromise.prototype
so if your argument is thatSymbol.toStringTag
returned the response one, I am afraid that's meant by design so that unless Promise API introduces a conflicting entry name with Response API, this module actually requires zero maintainability and it's future-friendly with API changes and whatnot - if you want to deal with
status
orok
orheaders
you still can do that:- reference
const req = fetch(url, ...init)
- use
try/catch
aroundreq.json()
orreq.text()
or any other forwarded method - use
const { status, headers } = await req
orconst status = await req.status
or any other way you like to introspect the failure
- reference
// alternatively ...
const { ok, text } = await fetch(URL);
if (ok) console.log(await text());
If none of this is interesting to you though, we're good! You can move on happily ever after 👋