UNPKG

@herbertgao/surgio

Version:

Generating rules for Surge, Clash, Quantumult like a PRO

62 lines 2.64 kB
"use strict"; 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