@adobe/helix-shared-bounce
TypeScript icon, indicating that this package has built-in type declarations

2.0.18 • Public • Published

Helix Shared - bounce

The bounce middleware can be used to get fast pro-forma responses from a slow running function. To use it, wrap the slower function with the bounce middleware and provide a faster responder function. Upon first invocation, both the fast responder and the slow function will be invoked, and the faster of the two responses returned. As the invocation of the slow function happens via a fetch request, it won't be aborted, even when the fast responder returns.

const { wrap, bounce } = require('@adobe/helix-shared');
const { Response } = require('@adobe/fetch')

async function fast(req, context) {
  return new Response(`I am working on it. Use ${context.invocation.bounceId} to track the status.`);
}

async function main(req, context) {
  // do something slow
}

module.exports.main = wrap(main)
  .with(bounce, { responder: fast });

Disabling Bouncing for certain requests

The plugin options can take a debounce function property that is called with the request and context. if it returns a non falsy value the wrapped function will not be bounced.

function debounce(req, context) {
  if (context.pathInfo.suffix === '/about') {
    return true;
  }
  return false;
}

module.exports.main = wrap(main)
   .with(bounce, { responder: fast, debounce });
 

Disabling Bouncing for Tests

If you are testing a function that is using bounce locally, you might want to disable the bouncing for the duration of the test, because you would otherwise have to mock a larger part of the runtime.

To disable bouncing for tests, set the HELIX_DEBOUNCE environment variable to any value.

Readme

Keywords

none

Package Sidebar

Install

npm i @adobe/helix-shared-bounce

Weekly Downloads

63

Version

2.0.18

License

Apache-2.0

Unpacked Size

45.7 kB

Total Files

6

Last publish

Collaborators

  • dylandepass
  • djaeggi
  • adobehalls
  • fullcolorcoder
  • marbec
  • tripod
  • garthdb
  • lazd
  • adobe-admin
  • patrickfulton
  • trieloff
  • shazron
  • krisnye
  • dcpfsdk
  • natebaldwin
  • devongovett
  • aspro83
  • symanovi
  • dpfister
  • stefan-guggisberg
  • korra
  • rofe
  • kptdobe