builder-util
Version:
Various utilities. Used by [electron-builder](https://github.com/electron-userland/electron-builder).
101 lines (76 loc) • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.printErrorAndExit = printErrorAndExit;
exports.orNullIfFileNotExist = orNullIfFileNotExist;
exports.orIfFileNotExist = orIfFileNotExist;
exports.NestedError = exports.executeFinally = void 0;
function _bluebirdLst() {
const data = require("bluebird-lst");
_bluebirdLst = function () {
return data;
};
return data;
}
function _chalk() {
const data = _interopRequireDefault(require("chalk"));
_chalk = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function printErrorAndExit(error) {
console.error(_chalk().default.red((error.stack || error).toString()));
process.exit(1);
} // you don't need to handle error in your task - it is passed only indicate status of promise
let executeFinally = (() => {
var _ref = (0, _bluebirdLst().coroutine)(function* (promise, task) {
let result = null;
try {
result = yield promise;
} catch (originalError) {
try {
yield task(true);
} catch (taskError) {
throw new NestedError([originalError, taskError]);
}
throw originalError;
}
try {
yield task(false);
} catch (taskError) {
throw taskError;
}
return result;
});
return function executeFinally(_x, _x2) {
return _ref.apply(this, arguments);
};
})();
exports.executeFinally = executeFinally;
class NestedError extends Error {
constructor(errors, message = "Compound error: ") {
let m = message;
let i = 1;
for (const error of errors) {
const prefix = `Error #${i++} `;
m += "\n\n" + prefix + "-".repeat(80) + "\n" + error.stack;
}
super(m);
}
}
exports.NestedError = NestedError;
function orNullIfFileNotExist(promise) {
return orIfFileNotExist(promise, null);
}
function orIfFileNotExist(promise, fallbackValue) {
return promise.catch(e => {
if (e.code === "ENOENT" || e.code === "ENOTDIR") {
return fallbackValue;
}
throw e;
});
}
//# sourceMappingURL=promise.js.map