thedesk/app/node_modules/builder-util/out/promise.js
2019-09-12 23:38:13 +09:00

80 lines
1.7 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.printErrorAndExit = printErrorAndExit;
exports.executeFinally = executeFinally;
exports.orNullIfFileNotExist = orNullIfFileNotExist;
exports.orIfFileNotExist = orIfFileNotExist;
exports.NestedError = void 0;
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
async function executeFinally(promise, task) {
let result = null;
try {
result = await promise;
} catch (originalError) {
try {
await task(true);
} catch (taskError) {
throw new NestedError([originalError, taskError]);
}
throw originalError;
}
await task(false);
return result;
}
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;
});
}
// __ts-babel@6.0.4
//# sourceMappingURL=promise.js.map