requirement.js

  1. const Callable = require('./callable');
  2. /**
  3. * Checks, before the actual Handler gets called
  4. *
  5. * @constructor
  6. * @description
  7. * You can also use the other constructor styles stated in {@link Callable}.
  8. *
  9. * @param {object} object Object or Requirement name
  10. * @param {String} object.name Requirement's name
  11. * @param {Function} object.callable Callable function
  12. * @param {Requirement[]} [object.requires] Requirement's requirements
  13. * @param {object} [object.options] Requirement's options object
  14. * @param {boolean} [object.multiple] Can be required more than once?
  15. */
  16. class Requirement extends Callable {
  17. /**
  18. * @callback Requirement~callable Modifies or checks the given data, which is
  19. * then passed to the next requirement in the
  20. * array. Must give either true or false to
  21. * the result callback function. If false is
  22. * given, the handler will not be executed at
  23. * all, as all requirements need to callback
  24. * true.
  25. *
  26. * @param {Requirement~done} done Must be called from the callable when
  27. * done
  28. * @param {Processor} processor Processor object containing all
  29. * relevant data
  30. *
  31. * @see Processor
  32. * @see Callable~callable
  33. */
  34. /**
  35. * @callback Requirement~done
  36. *
  37. * @param {object} [error] Pass a truthy value if the Requirement didn't pass
  38. * @param {object} [result] The Requirement's very own parameters.
  39. * Will be stored in
  40. * `processor.params[requirementName]` and usable
  41. * by all next Requirements and the Handler callable
  42. * @param {object} [data] Whatever is passed as data will replace all next
  43. * Requirements' and the Handler's data
  44. */
  45. }
  46. module.exports = Requirement;