@statesync/jotai / JotaiSnapshotApplierOptions
Type Alias: JotaiSnapshotApplierOptions<State, Data>
type JotaiSnapshotApplierOptions<State, Data> =
| {
mode?: "patch";
omitKeys?: ReadonlyArray<keyof State>;
pickKeys?: ReadonlyArray<keyof State>;
strict?: boolean;
toState?: (data, ctx) => Partial<State>;
}
| {
mode: "replace";
omitKeys?: ReadonlyArray<keyof State>;
pickKeys?: ReadonlyArray<keyof State>;
strict?: boolean;
toState?: (data, ctx) => State;
};Defined in: jotai.ts:80
Configuration options for createJotaiSnapshotApplier.
This is a discriminated union on the mode field:
- When
modeis'patch'(or omitted),toStateis expected to returnPartial<State>. - When
modeis'replace',toStateis expected to return the fullState.
Type Parameters
| Type Parameter | Description |
|---|---|
State extends Record<string, unknown> | The value type of the atom. |
Data | The snapshot payload type received from the sync engine. Defaults to State when the snapshot data matches the atom value shape directly. |
Type Declaration
{
mode?: "patch";
omitKeys?: ReadonlyArray<keyof State>;
pickKeys?: ReadonlyArray<keyof State>;
strict?: boolean;
toState?: (data, ctx) => Partial<State>;
}mode?
optional mode: "patch";The apply strategy. Defaults to 'patch'.
Default Value
'patch'
omitKeys?
optional omitKeys: ReadonlyArray<keyof State>;pickKeys?
optional pickKeys: ReadonlyArray<keyof State>;strict?
optional strict: boolean;When true, the applier throws if toState returns a non-plain-object value. When false, such values are silently ignored.
Default Value
true
toState()?
optional toState: (data, ctx) => Partial<State>;Maps raw snapshot data to a state patch object.
Parameters
| Parameter | Type | Description |
|---|---|---|
data | Data | The raw snapshot payload from the sync engine. |
ctx | { atom: unknown; store: JotaiStoreLike<State, unknown>; } | Context object providing access to the target store and atom. |
ctx.atom | unknown | - |
ctx.store | JotaiStoreLike<State, unknown> | - |
Returns
Partial<State>
A partial state object to be shallow-merged into the atom.
Default Value
Identity cast — treats data as Partial<State>.
{
mode: "replace";
omitKeys?: ReadonlyArray<keyof State>;
pickKeys?: ReadonlyArray<keyof State>;
strict?: boolean;
toState?: (data, ctx) => State;
}mode
mode: "replace";Use 'replace' mode for an atomic full-state swap.
omitKeys?
optional omitKeys: ReadonlyArray<keyof State>;pickKeys?
optional pickKeys: ReadonlyArray<keyof State>;strict?
optional strict: boolean;When true, the applier throws if toState returns a non-plain-object value. When false, such values are silently ignored.
Default Value
true
toState()?
optional toState: (data, ctx) => State;Maps raw snapshot data to the full next state.
Parameters
| Parameter | Type | Description |
|---|---|---|
data | Data | The raw snapshot payload from the sync engine. |
ctx | { atom: unknown; store: JotaiStoreLike<State, unknown>; } | Context object providing access to the target store and atom. |
ctx.atom | unknown | - |
ctx.store | JotaiStoreLike<State, unknown> | - |
Returns
State
The full next state to replace the current atom value with.
Default Value
Identity cast — treats data as State.
