Open spotsccc opened 3 months ago
error.cause
is almost always are non-serialable, so we probably could just add default serialization to $error
store:
$error = createStore(null, {
serialize: {
read: error => error,
write: ({cause, ...error}) => error,
}
})
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, nowserialization
property works like this:serialization
equals to'ignore'
, it will disable all serializationserialization
equals to{write: ..., read...}
, this rules will be used only for $data store, and will have no effect for all other storesAnd I suggest changing this behavior to this:
type Serialize<Data | Initial> = Serialize<Data | Initial> | {error?: Serialize<Data | Initial>, data?: Serialize<Data | Initial>} | undefined;
serialization
equals to'ignore'
or{write: ..., read...}
, it will works like beforeserialization
equals to{error: ..., data: ... }
, it will apply different serialization rules for$error
and$data
Hope my suggestion helps!