Skip to content

Custom error serialization  #492

@spotsccc

Description

@spotsccc

Hi! I'd like to use custom serialization for $error store in query and mutation.

My use case:

I have a project that uses nextjs and farfetched, sometimes a NetworkError can happen on the server side, this type of error has a non-serializable property "cause". In this situation I can't to serialize queries running on the server. Now the only one solution is to set serialize property to 'ignore', but it will disable serialization for all stores. That's not what i want.

My suggestion:

I think that it would be nice to separate serialization for $error and $data. As i understood, now serialization property works like this:

  1. If serialization equals to 'ignore', it will disable all serialization
  2. If serialization equals to {write: ..., read...}, this rules will be used only for $data store, and will have no effect for all other stores

And I suggest changing this behavior to this:
type Serialize<Data | Initial> = Serialize<Data | Initial> | {error?: Serialize<Data | Initial>, data?: Serialize<Data | Initial>} | undefined;

  1. If serialization equals to 'ignore' or {write: ..., read...}, it will works like before
  2. If serialization equals to {error: ..., data: ... }, it will apply different serialization rules for $error and $data

Hope my suggestion helps!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions