Ecosystem

Serialization

Tupleson

Example with tupleson experimental serializer.

import { createTson, type TsonType } from "tupleson";
import { createHttpException, HttpException, HttpUnprocessableEntity } from "@httpx/exception";
import { fromJson, toJson, type SerializerError } from "@httpx/exception/serializer";
 
const exceptionSerializer: TsonType<HttpException | SerializerError, string> = {
  deserialize: (v) => fromJson(v),
  key: "HttpException",
  serialize: (v) => toJson(v),
  test: (v) => v instanceof HttpException,
};
 
const tson = createTson({
  types: [exceptionSerializer],
});
 
const obj = {
  e422: new HttpUnprocessableEntity({
    issues: [
      {
        message: "Invalid address",
        path: ["addresses", 0, "line1"],
        code: "empty_string",
      },
    ],
  }),
  e404: createHttpException(404),
};
 
const serialized = tson.serialize(obj);
const deserialized = tson.deserialize(serialized);
expect(deserialized).toStrictEqual(obj);