tupleson
Version:
A hackable JSON serializer/deserializer
45 lines • 1.28 kB
JavaScript
import { TsonError } from "../errors.js";
import { isPlainObject } from "../internals/isPlainObject.js";
function getErrorMessageFromUnknown(unknown) {
if (typeof unknown === "string") {
return unknown;
}
if (unknown instanceof Error) {
return unknown.message;
}
if (isPlainObject(unknown) && typeof unknown["message"] === "string") {
return unknown["message"];
}
return null;
}
class TsonPromiseRejectionError extends TsonError {
constructor(cause) {
const message = getErrorMessageFromUnknown(cause) ?? "Promise rejected";
super(message, { cause });
this.name = "TsonPromiseRejectionError";
}
static from(cause) {
return cause instanceof Error ? cause : new TsonPromiseRejectionError(cause);
}
}
class TsonStreamInterruptedError extends TsonError {
constructor(cause) {
super(
"Stream interrupted: " + (getErrorMessageFromUnknown(cause) ?? "unknown reason"),
{ cause }
);
this.name = "TsonStreamInterruptedError";
}
}
class TsonAbortError extends TsonError {
constructor(cause) {
super("The user aborted a request.", { cause });
this.name = "TsonAbortError";
}
}
export {
TsonAbortError,
TsonPromiseRejectionError,
TsonStreamInterruptedError
};
//# sourceMappingURL=asyncErrors.mjs.map