"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
var __generator = (this && this.__generator) || function (thisArg, body) {
    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
    function verb(n) { return function (v) { return step([n, v]); }; }
    function step(op) {
        if (f) throw new TypeError("Generator is already executing.");
        while (_) try {
            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
            if (y = 0, t) op = [op[0] & 2, t.value];
            switch (op[0]) {
                case 0: case 1: t = op; break;
                case 4: _.label++; return { value: op[1], done: false };
                case 5: _.label++; y = op[1]; op = [0]; continue;
                case 7: op = _.ops.pop(); _.trys.pop(); continue;
                default:
                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
                    if (t[2]) _.ops.pop();
                    _.trys.pop(); continue;
            }
            op = body.call(thisArg, _);
        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
    }
};
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.HandleError = exports.HumanWarning = exports.HumanError = exports.ServerlessError = exports.InitError = exports.ConfigGetError = exports.ConfigError = exports.ConfigDeleteError = exports.CommandError = void 0;
/** @format */
var common_1 = require("../utils/common");
var core_1 = __importDefault(require("../utils/core"));
var common_2 = require("../utils/common");
var colors = core_1.default.colors, report = core_1.default.report;
var command_error_1 = require("./command-error");
Object.defineProperty(exports, "CommandError", { enumerable: true, get: function () { return command_error_1.CommandError; } });
var config_delete_error_1 = require("./config-delete-error");
Object.defineProperty(exports, "ConfigDeleteError", { enumerable: true, get: function () { return config_delete_error_1.ConfigDeleteError; } });
var config_error_1 = require("./config-error");
Object.defineProperty(exports, "ConfigError", { enumerable: true, get: function () { return config_error_1.ConfigError; } });
var config_get_error_1 = require("./config-get-error");
Object.defineProperty(exports, "ConfigGetError", { enumerable: true, get: function () { return config_get_error_1.ConfigGetError; } });
var init_error_1 = require("./init-error");
Object.defineProperty(exports, "InitError", { enumerable: true, get: function () { return init_error_1.InitError; } });
var serverless_error_1 = require("./serverless-error");
Object.defineProperty(exports, "ServerlessError", { enumerable: true, get: function () { return serverless_error_1.ServerlessError; } });
var human_error_1 = require("./human-error");
Object.defineProperty(exports, "HumanError", { enumerable: true, get: function () { return human_error_1.HumanError; } });
var human_warning_1 = require("./human-warning");
Object.defineProperty(exports, "HumanWarning", { enumerable: true, get: function () { return human_warning_1.HumanWarning; } });
function underline(prefix, link) {
    return "".concat(colors.gray(prefix)).concat(colors.gray.underline(link));
}
var HandleError = function (configs) { return __awaiter(void 0, void 0, void 0, function () {
    var error, _a, prefix, _b, traceId, catchableError;
    return __generator(this, function (_c) {
        switch (_c.label) {
            case 0:
                error = configs.error, _a = configs.prefix, prefix = _a === void 0 ? 'Message:' : _a;
                return [4 /*yield*/, (0, common_2.getErrorMessage)(error, prefix)];
            case 1:
                _b = _c.sent(), traceId = _b.traceId, catchableError = _b.catchableError;
                if (!catchableError) {
                    if (traceId) {
                        console.log(colors.gray("TraceId:     ".concat(traceId)));
                    }
                    console.log(colors.gray("Environment: ".concat((0, common_1.getVersion)())));
                    console.log(underline('Documents:   ', 'https://www.serverless-devs.com'));
                    console.log(underline('Discussions: ', 'https://github.com/Serverless-Devs/Serverless-Devs/discussions'));
                    console.log(underline('Issues:      ', 'https://github.com/Serverless-Devs/Serverless-Devs/issues\n'));
                    if (traceId) {
                        console.log(colors.gray("Please copy traceId: ".concat(traceId, " and join Dingding group: 33947367 for consultation.")));
                    }
                }
                console.log(colors.gray("You can run 's clean --all' to clean Serverless devs."));
                if (!(traceId && !catchableError)) return [3 /*break*/, 3];
                return [4 /*yield*/, report({
                        type: 'jsError',
                        content: "".concat(error.message, "||").concat(error.stack),
                        traceId: traceId,
                    })];
            case 2:
                _c.sent();
                _c.label = 3;
            case 3: return [2 /*return*/];
        }
    });
}); };
exports.HandleError = HandleError;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXJyb3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsY0FBYztBQUNkLDBDQUE2QztBQUM3Qyx1REFBaUM7QUFDakMsMENBQWtEO0FBRTFDLElBQUEsTUFBTSxHQUFhLGNBQUksT0FBakIsRUFBRSxNQUFNLEdBQUssY0FBSSxPQUFULENBQVU7QUFDaEMsaURBQStDO0FBQXRDLDZHQUFBLFlBQVksT0FBQTtBQUNyQiw2REFBMEQ7QUFBakQsd0hBQUEsaUJBQWlCLE9BQUE7QUFDMUIsK0NBQTZDO0FBQXBDLDJHQUFBLFdBQVcsT0FBQTtBQUNwQix1REFBb0Q7QUFBM0Msa0hBQUEsY0FBYyxPQUFBO0FBQ3ZCLDJDQUF5QztBQUFoQyx1R0FBQSxTQUFTLE9BQUE7QUFDbEIsdURBQXFEO0FBQTVDLG1IQUFBLGVBQWUsT0FBQTtBQUN4Qiw2Q0FBMkM7QUFBbEMseUdBQUEsVUFBVSxPQUFBO0FBQ25CLGlEQUErQztBQUF0Qyw2R0FBQSxZQUFZLE9BQUE7QUFFckIsU0FBUyxTQUFTLENBQUMsTUFBYyxFQUFFLElBQVk7SUFDN0MsT0FBTyxVQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUUsQ0FBQztBQUNoRSxDQUFDO0FBS00sSUFBTSxXQUFXLEdBQUcsVUFBTyxPQUFpQjs7Ozs7Z0JBQ3ZDLEtBQUssR0FBMEIsT0FBTyxNQUFqQyxFQUFFLEtBQXdCLE9BQU8sT0FBWixFQUFuQixNQUFNLG1CQUFHLFVBQVUsS0FBQSxDQUFhO2dCQUNYLHFCQUFNLElBQUEsd0JBQWUsRUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUE7O2dCQUFsRSxLQUE4QixTQUFvQyxFQUFoRSxPQUFPLGFBQUEsRUFBRSxjQUFjLG9CQUFBO2dCQUMvQixJQUFHLENBQUMsY0FBYyxFQUFFO29CQUNsQixJQUFJLE9BQU8sRUFBRTt3QkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQWdCLE9BQU8sQ0FBRSxDQUFDLENBQUMsQ0FBQztxQkFDckQ7b0JBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUFnQixJQUFBLG1CQUFVLEdBQUUsQ0FBRSxDQUFDLENBQUMsQ0FBQztvQkFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLGlDQUFpQyxDQUFDLENBQUMsQ0FBQztvQkFDM0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLGdFQUFnRSxDQUFDLENBQUMsQ0FBQztvQkFDMUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLDZEQUE2RCxDQUFDLENBQUMsQ0FBQztvQkFFdkcsSUFBSSxPQUFPLEVBQUU7d0JBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsSUFBSSxDQUFDLCtCQUF3QixPQUFPLHlEQUFzRCxDQUFDLENBQ25HLENBQUM7cUJBQ0g7aUJBQ0Y7Z0JBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVEQUF1RCxDQUFDLENBQUMsQ0FBQztxQkFFL0UsQ0FBQSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUEsRUFBMUIsd0JBQTBCO2dCQUMzQixxQkFBTSxNQUFNLENBQUM7d0JBQ1gsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsT0FBTyxFQUFFLFVBQUcsS0FBSyxDQUFDLE9BQU8sZUFBSyxLQUFLLENBQUMsS0FBSyxDQUFFO3dCQUMzQyxPQUFPLEVBQUUsT0FBTztxQkFDakIsQ0FBQyxFQUFBOztnQkFKRixTQUlFLENBQUM7Ozs7O0tBRVIsQ0FBQTtBQTNCWSxRQUFBLFdBQVcsZUEyQnZCIn0=