create-error.js 813 B

12345678910111213141516171819202122232425262728
  1. import {format} from '@e22m4u/js-format';
  2. import {Errorf} from '@e22m4u/js-format';
  3. /**
  4. * Create error.
  5. *
  6. * @param {Function} errorCtor
  7. * @param {string} message
  8. * @param {*[]|undefined} args
  9. * @returns {object}
  10. */
  11. export function createError(errorCtor, message, ...args) {
  12. if (typeof errorCtor !== 'function')
  13. throw new Errorf(
  14. 'The first argument of "createError" should be ' +
  15. 'a constructor, but %v was given.',
  16. errorCtor,
  17. );
  18. if (message != null && typeof message !== 'string')
  19. throw new Errorf(
  20. 'The second argument of "createError" should be ' +
  21. 'a String, but %v was given.',
  22. message,
  23. );
  24. if (message == null) return new errorCtor();
  25. const interpolatedMessage = format(message, ...args);
  26. return new errorCtor(interpolatedMessage);
  27. }