CHAN.RUN
function fromJSON(data, registry): Error;Defined in: src/serialize.ts
Deserialize a plain object back into a FaultError instance. Requires a registry mapping names to error classes.
const registry = { NotFoundError, DbError };
const err = fromJSON(json, registry);
// err instanceof NotFoundError === trueReturns a generic Error if the name isn't in the registry.
| Parameter | Type |
|---|---|
data | FaultErrorJSON |
registry | Record<string, FaultErrorClass> |
Error
const registry = { ValidationError, NotFoundError, RateLimitError };
async function apiCall(url: string) {
const res = await fetch(url);
if (!res.ok) {
const body = await res.json();
throw fromJSON(body.error, registry);
// Throws a real NotFoundError instance, matchable with match()
}
return res.json();
}const registry = { PaymentFailedError, OrderError, DbError };
queue.on("dead-letter", (msg) => {
const error = fromJSON(msg.error, registry);
match(error, {
PaymentFailedError: (e) => retryPayment(msg.orderId),
_: (e) => logger.error("Unrecoverable", { error: e }),
});
});const json: FaultErrorJSON = {
name: "NotFoundError",
code: "NotFoundError",
message: "User not found",
};
const err = fromJSON(json, { NotFoundError });
expect(err).toBeInstanceOf(NotFoundError);
expect(err.message).toBe("User not found");