@andres-florez-inc/fab-fetcher
v1.0.3
Published
A general fetcher (working with axios, superagent, aws-amplify or anything which returns a promise) with logging, retrying and caching.
Downloads
6
Readme
fab-fetcher
A general fetcher (working with axios, superagent, aws-amplify or anything which returns a promise) with logging, retrying and caching.
Retries are done until the call is successful (with a limit of times).
Caching is in local files (in the future, it can be a more general solution which could work e.g. with localStorage in a web browser).
how to install?
yarn add @rosedigital/fab-fetcher
how to use?
const { fabFetch, resetCache, resetCounter, logglyDecorator } = require('@rosedigital/fab-fetcher');
async () => {
const result = await fabFetch({
maxStringSize: 200,
maxArraySize: 20,
maxObjectSize: 20,
maxNestingLevel: 7,
maxRetries: 5,
shouldCache: true,
params: [
'www.your-api.com',
{
payload: {
foo: 123,
},
headers: {
foo: 456,
},
}
],
placeInCode: 'place-1',
callback: API.get.bind(API),
logger: logglyDecorator(console, 'your-loggly-token', ['tag-1', 'tag-2']),
});
// clear the entire cache
resetCache();
// reset the counter used for logging,
// this function is used only for tests so you shouldn't need to invoke it
resetCounter();
}
options
- maxStringSize: if a given string is longer (number of characters) than this limit, it's limited
- maxArraySize: if a given array is longer (number of elements) than this limit, it's limited
- maxObjectSize: if a given object is longer (number of keys) than this limit, it's limited
- maxNestingLevel: if a given array or object has more levels of nesting than this limit, it's limited
- logger: an object with the following methods:
- info
- error
- callback: a function which returns a promise
- params: an array of arguments which are passed to the callback and are logged
- placeInCode: a unique string which is used to easily find from which place in the code a given invocation was done
- maxRetries: the maximum number of retries (including the initial attempt) until the callback resolves a promise (instead of rejecting)
- shouldCache: if set to true and there's a new request with the same params and the place in code as a previous one, it's read from cache so callback isn't invoked
how to generate placeInCode?
We recommend the following command run in the Node.js shell.
crypto.randomBytes(12).toString('hex')