errors.js 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. "use strict";
  2. // Adapted from Node.js ../internal/errors.js, used for throwing similar errors to Node.js.
  3. Object.defineProperty(exports, "__esModule", { value: true });
  4. exports.AssertionError = exports.RangeError = exports.TypeError = exports.Error = void 0;
  5. exports.message = message;
  6. exports.E = E;
  7. const util_1 = require("../util");
  8. const kCode = typeof Symbol === 'undefined' ? '_kCode' : Symbol('code');
  9. const messages = {};
  10. function makeNodeError(Base) {
  11. return class NodeError extends Base {
  12. constructor(key, ...args) {
  13. super(message(key, args));
  14. this.code = key;
  15. this[kCode] = key;
  16. this.name = `${super.name} [${this[kCode]}]`;
  17. }
  18. };
  19. }
  20. const g = typeof globalThis !== 'undefined' ? globalThis : global;
  21. class AssertionError extends g.Error {
  22. constructor(options) {
  23. if (typeof options !== 'object' || options === null) {
  24. throw new exports.TypeError('ERR_INVALID_ARG_TYPE', 'options', 'object');
  25. }
  26. if (options.message) {
  27. super(options.message);
  28. }
  29. else {
  30. super(`${(0, util_1.inspect)(options.actual).slice(0, 128)} ` + `${options.operator} ${(0, util_1.inspect)(options.expected).slice(0, 128)}`);
  31. }
  32. this.generatedMessage = !options.message;
  33. this.name = 'AssertionError [ERR_ASSERTION]';
  34. this.code = 'ERR_ASSERTION';
  35. this.actual = options.actual;
  36. this.expected = options.expected;
  37. this.operator = options.operator;
  38. exports.Error.captureStackTrace(this, options.stackStartFunction);
  39. }
  40. }
  41. exports.AssertionError = AssertionError;
  42. function message(key, args) {
  43. if (typeof key !== 'string')
  44. throw new exports.Error('Error message key must be a string');
  45. const msg = messages[key];
  46. if (!msg)
  47. throw new exports.Error(`An invalid error message key was used: ${key}.`);
  48. let fmt;
  49. if (typeof msg === 'function') {
  50. fmt = msg;
  51. }
  52. else {
  53. fmt = util_1.format;
  54. if (args === undefined || args.length === 0)
  55. return msg;
  56. args.unshift(msg);
  57. }
  58. return String(fmt.apply(null, args));
  59. }
  60. // Utility function for registering the error codes. Only used here. Exported
  61. // *only* to allow for testing.
  62. function E(sym, val) {
  63. messages[sym] = typeof val === 'function' ? val : String(val);
  64. }
  65. exports.Error = makeNodeError(g.Error);
  66. exports.TypeError = makeNodeError(g.TypeError);
  67. exports.RangeError = makeNodeError(g.RangeError);
  68. E('ERR_DIR_CLOSED', 'Directory handle was closed');
  69. E('ERR_DIR_CONCURRENT_OPERATION', 'Cannot do synchronous work on directory handle with concurrent asynchronous operations');
  70. E('ERR_INVALID_FILE_URL_HOST', 'File URL host must be "localhost" or empty on %s');
  71. E('ERR_INVALID_FILE_URL_PATH', 'File URL path %s');
  72. E('ERR_INVALID_OPT_VALUE', (name, value) => {
  73. return `The value "${String(value)}" is invalid for option "${name}"`;
  74. });
  75. E('ERR_INVALID_OPT_VALUE_ENCODING', value => `The value "${String(value)}" is invalid for option "encoding"`);
  76. E('ERR_INVALID_ARG_VALUE', 'Unable to open file as blob');
  77. //# sourceMappingURL=errors.js.map