@zedux/stores
Version:
The legacy composable store model of Zedux
77 lines (76 loc) • 2.75 kB
TypeScript
import { AtomApiPromise } from '@zedux/atoms';
import { Store, StoreStateType } from '@zedux/core';
import { AtomApi } from './AtomApi';
/**
* Create an AtomApi
*
* AtomApis are the standard mechanism for passing stores, exports, and promises
* around.
*
* An AtomApi that's returned from an atom state factory becomes _the_ api of
* the atom.
*
* - Any exports on the AtomApi are set as the atom instance's exports on
* initial evaluation and ignored forever after.
* - If promise or state references change on subsequent evaluations, it
* triggers the appropriate updates in all the atom's dynamic dependents.
*/
export declare const api: {
<StoreType extends Store<any> = Store<any>, Exports extends Record<string, any> = Record<string, never>, PromiseType extends AtomApiPromise = undefined>(value: AtomApi<{
Exports: Exports;
Promise: PromiseType;
State: StoreStateType<StoreType>;
Store: StoreType;
}>): AtomApi<{
Exports: Exports;
Promise: PromiseType;
State: StoreStateType<StoreType>;
Store: StoreType;
}>;
<StoreType extends Store<any> = Store<any>>(value: StoreType): AtomApi<{
Exports: Record<string, never>;
Promise: undefined;
State: StoreStateType<StoreType>;
Store: StoreType;
}>;
(): AtomApi<{
Exports: Record<string, never>;
Promise: undefined;
State: undefined;
Store: undefined;
}>;
<State = undefined, Exports extends Record<string, any> = Record<string, never>, PromiseType extends AtomApiPromise = undefined>(): AtomApi<{
Exports: Exports;
Promise: PromiseType;
State: State;
Store: undefined;
}>;
<State = undefined, Exports extends Record<string, any> = Record<string, never>, PromiseType extends AtomApiPromise = undefined>(value: AtomApi<{
Exports: Exports;
Promise: PromiseType;
State: State;
Store: undefined;
}>): AtomApi<{
Exports: Exports;
Promise: PromiseType;
State: State;
Store: undefined;
}>;
<State = undefined>(value: State): AtomApi<{
Exports: Record<string, never>;
Promise: undefined;
State: State;
Store: undefined;
}>;
<State = undefined, Exports extends Record<string, any> = Record<string, never>, StoreType extends Store<State> = Store<State>, PromiseType extends AtomApiPromise = undefined>(value: State | StoreType | AtomApi<{
Exports: Exports;
Promise: PromiseType;
State: State;
Store: StoreType;
}>): AtomApi<{
Exports: Exports;
Promise: PromiseType;
State: State;
Store: StoreType;
}>;
};