@herbertgao/surgio
Version:
Generating rules for Surge, Clash, Quantumult like a PRO
60 lines • 2 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SurgioError = exports.isError = exports.isZodError = exports.isSurgioError = void 0;
const zod_1 = require("zod");
const zod_validation_error_1 = require("zod-validation-error");
class SurgioError extends Error {
providerName;
providerPath;
nodeIndex;
cause;
constructor(message, options = {}) {
super(message);
this.name = 'SurgioError';
this.providerName = options.providerName;
this.providerPath = options.providerPath;
this.nodeIndex = options.nodeIndex;
this.cause = options.cause;
}
format() {
const message = [];
message.push(this.name + ': ' + this.message);
if (this.providerName) {
message.push(`Provider 名称: ${this.providerName}`);
}
if (this.providerPath) {
message.push(`文件地址: ${this.providerPath}`);
}
if (typeof this.nodeIndex === 'number') {
message.push(`错误发生在第 ${this.nodeIndex + 1} 个节点`);
}
if ((0, exports.isZodError)(this.cause)) {
message.push((0, zod_validation_error_1.fromZodError)(this.cause, {
prefix: '原因',
}).message);
}
else if ((0, exports.isError)(this.cause) && this.cause.stack) {
message.push(' ');
message.push(this.cause.stack);
}
else if (this.stack) {
message.push(' ');
message.push(this.stack);
}
return message.join('\n');
}
}
exports.SurgioError = SurgioError;
const isSurgioError = (val) => {
return val instanceof SurgioError;
};
exports.isSurgioError = isSurgioError;
const isZodError = (error) => {
return error instanceof zod_1.z.ZodError;
};
exports.isZodError = isZodError;
const isError = (val) => {
return val instanceof Error;
};
exports.isError = isError;
//# sourceMappingURL=errors.js.map