From cbbae8520fc3f08a16bc3ef8d8e59162fdc61739 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adel=20Rodr=C3=ADguez?= Date: Wed, 18 Feb 2026 23:51:55 -0400 Subject: [PATCH] feat: add fault serialization adapter for react-router --- apps/app/src/shared/server/serialization.ts | 10 ++++++++++ apps/app/src/start.ts | 2 ++ packages/error/src/index.ts | 3 ++- 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 apps/app/src/shared/server/serialization.ts diff --git a/apps/app/src/shared/server/serialization.ts b/apps/app/src/shared/server/serialization.ts new file mode 100644 index 00000000..ae5c739a --- /dev/null +++ b/apps/app/src/shared/server/serialization.ts @@ -0,0 +1,10 @@ +import type { SerializableFault } from "@init/error" +import { AppFault } from "@init/error" +import { createSerializationAdapter } from "@tanstack/react-router" + +export const faultSerializer = createSerializationAdapter({ + fromSerializable: (value) => AppFault.fromSerializable(value as SerializableFault), + key: "fault", + test: (value) => AppFault.is(value), + toSerializable: (value) => value.toSerializable(), +}) diff --git a/apps/app/src/start.ts b/apps/app/src/start.ts index 335c87f9..8054530b 100644 --- a/apps/app/src/start.ts +++ b/apps/app/src/start.ts @@ -1,6 +1,8 @@ import { createStart } from "@tanstack/react-start" +import { faultSerializer } from "#shared/server/serialization.ts" export const startInstance = createStart(() => ({ functionMiddleware: [], requestMiddleware: [], + serializationAdapters: [faultSerializer], })) diff --git a/packages/error/src/index.ts b/packages/error/src/index.ts index 7bac5e8c..3a0b2a45 100644 --- a/packages/error/src/index.ts +++ b/packages/error/src/index.ts @@ -14,4 +14,5 @@ export * from "#auth.ts" export * from "#email.ts" export * from "#utils.ts" -export { matchTag, matchTags, Fault } from "faultier" +export { matchTag, matchTags, Fault, isFault } from "faultier" +export type { SerializableFault } from "faultier"