posva / mande

<700 bytes convenient and modern wrapper around fetch with smart extensible defaults
https://mande.esm.is
MIT License
1.19k stars 42 forks source link

feat: Add onSuccess and onError interceptors #340

Open Untel opened 2 years ago

Untel commented 2 years ago

What kind of change does this PR introduce? (check at least one)

Does this PR introduce a breaking change? (check one)

If yes, please describe the impact and migration path for existing applications:

The PR fulfills these requirements:

If adding a new feature, the PR's description includes:

Other information:

Hi 👋

I strongly needed a way to have common interceptors (like axios) accross my app to catch generic errors, and share logic across MandeInstances . I could overload the mande prototype or create a wrapper, but it seems ugly.

I did it really simple, only added onSuccess and onError callbacks, for response only. I could work on something more complex like axios interceptors (multiple request + response interceptors) if you see any interest in it. It will also come with the need to type the newly returned type. MandeInstance<InterceptedResponseType = { get: () => T, ... }> But i don't really know if it will be possible (axios don't allow it)

zhiyuanzmj commented 1 year ago

How about supporting onRequest, onRequestError, onResponse, onResponseError events? inspiration by unjs/ofetch

posva commented 1 year ago

Yeah, something similar could be nice. I added an empty interceptors file to src if anybody wants to give it a try