@herbertgao/surgio
Version:
Generating rules for Surge, Clash, Quantumult like a PRO
62 lines • 2.64 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.errorHandler = void 0;
const chalk_1 = __importDefault(require("chalk"));
const zod_validation_error_1 = require("zod-validation-error");
const doctor_1 = require("./doctor");
const errors_1 = require("./errors");
const errorHandler = async function (err) {
const doctorInfo = await (0, doctor_1.generateDoctorInfo)(this.projectDir, this.config.pjson);
console.error();
console.error(chalk_1.default.bgRed(' 发生错误 '));
if ((0, errors_1.isSurgioError)(err)) {
console.error(chalk_1.default.red(err.message));
if (err.providerName) {
console.error(chalk_1.default.red(`Provider 名称: ${err.providerName}`));
}
if (err.providerPath) {
console.error(chalk_1.default.red(`文件地址: ${err.providerPath}`));
}
if (typeof err.nodeIndex === 'number') {
console.error(chalk_1.default.red(`错误发生在第 ${err.nodeIndex + 1} 个节点`));
}
if ((0, errors_1.isZodError)(err.cause)) {
console.error(chalk_1.default.red((0, zod_validation_error_1.fromZodError)(err.cause, {
prefix: '原因',
}).message));
}
else if ((0, errors_1.isError)(err.cause)) {
console.error();
console.error(chalk_1.default.bgRed(' 原因 '));
console.error(chalk_1.default.red(err.cause.stack || err.cause));
}
else {
console.error();
console.error(chalk_1.default.bgRed(' 错误堆栈 '));
console.error(chalk_1.default.yellow(err.stack));
}
}
else {
console.error(chalk_1.default.red(err.message));
console.error();
if (err.stack) {
console.error(chalk_1.default.bgRed(' 错误堆栈 '));
console.error(chalk_1.default.yellow(err.stack));
}
}
console.error();
console.error(chalk_1.default.bgRed(' 诊断信息 '));
console.error('版本号:', require('../../package.json').version);
console.error('常见问题:', chalk_1.default.cyan('https://url.royli.dev/7EMxu'));
console.error('加入交流群汇报问题 ', chalk_1.default.cyan('https://t.me/surgiotg'));
console.error();
doctorInfo.forEach((item) => {
console.error(chalk_1.default.cyan(item));
});
console.error();
};
exports.errorHandler = errorHandler;
//# sourceMappingURL=error-helper.js.map