@logux/state
Version:
A tiny (152 bytes) state manager for React/Preact/Vue/Svelte with many atomic tree-shakable stores
32 lines (28 loc) • 834 B
TypeScript
import { Store, StoreValue } from '../create-store/index.js'
type StoreValues<Stores extends Store[]> = {
[Index in keyof Stores]: StoreValue<Stores[Index]>
}
interface CreateDerived {
<Value extends any, OriginStore extends Store>(
stores: OriginStore,
cb: (value: StoreValue<OriginStore>) => Value
): Store<Value>
<Value extends any, OriginStores extends Store[]>(
stores: [...OriginStores],
cb: (...values: StoreValues<OriginStores>) => Value
): Store<Value>
}
/**
* Create derived store, which use generates value from another stores.
*
* ```js
* import { createDerived } from '@logux/state'
*
* import { users } from './users.js'
*
* export const admins = createDerived(users, list => {
* return list.filter(user => user.isAdmin)
* })
* ```
*/
export const createDerived: CreateDerived