123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.orIfFileNotExist = exports.orNullIfFileNotExist = exports.NestedError = exports.executeFinally = exports.printErrorAndExit = void 0;
- const chalk = require("chalk");
- function printErrorAndExit(error) {
- console.error(chalk.red((error.stack || error).toString()));
- process.exit(1);
- }
- exports.printErrorAndExit = printErrorAndExit;
- // 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;
- }
- 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);
- }
- exports.orNullIfFileNotExist = orNullIfFileNotExist;
- function orIfFileNotExist(promise, fallbackValue) {
- return promise.catch((e) => {
- if (e.code === "ENOENT" || e.code === "ENOTDIR") {
- return fallbackValue;
- }
- throw e;
- });
- }
- exports.orIfFileNotExist = orIfFileNotExist;
- //# sourceMappingURL=promise.js.map
|