UNPKG

1.34 kBJavaScriptView Raw
1'use strict';
2
3const uvBinding = process.binding('uv');
4/**
5 * Error codes from libuv.
6 * @enum {number}
7 */
8const codes = {};
9
10uvBinding.getErrorMap().forEach(function(value, errno) {
11 const code = value[0];
12 const message = value[1];
13 codes[code] = {errno: errno, message: message};
14});
15
16/**
17 * Create an error.
18 * @param {string} code Error code.
19 * @param {string} path Path (optional).
20 * @constructor
21 */
22function FSError(code, path) {
23 if (!codes.hasOwnProperty(code)) {
24 throw new Error('Programmer error, invalid error code: ' + code);
25 }
26 Error.call(this);
27 const details = codes[code];
28 let message = code + ', ' + details.message;
29 if (path) {
30 message += " '" + path + "'";
31 }
32 this.message = message;
33 this.code = code;
34 this.errno = details.errno;
35 if (path !== undefined) {
36 this.path = path;
37 }
38 Error.captureStackTrace(this, FSError);
39}
40FSError.prototype = new Error();
41FSError.codes = codes;
42
43/**
44 * Create an abort error for when an asynchronous task was aborted.
45 * @constructor
46 */
47function AbortError() {
48 Error.call(this);
49 this.code = 'ABORT_ERR';
50 this.name = 'AbortError';
51 Error.captureStackTrace(this, AbortError);
52}
53AbortError.prototype = new Error();
54
55/**
56 * FSError constructor.
57 */
58exports.FSError = FSError;
59/**
60 * AbortError constructor.
61 */
62exports.AbortError = AbortError;