1.0.3 • Published 3 years ago

@andres-florez-inc/fab-fetcher v1.0.3

Weekly downloads
4
License
UNLICENSED
Repository
github
Last release
3 years ago

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')