UNPKG

chromogen

Version:

simple, interaction-driven Jest test generator for Recoil and React Hooks apps

87 lines (86 loc) 2.66 kB
import type { RecoilState, RecoilValue, DefaultValue, SerializableParam, RecoilValueReadOnly } from 'recoil'; declare type ResetRecoilState = (recoilVal: RecoilState<any>) => void; declare type GetRecoilValue = <T>(recoilVal: RecoilValue<T>) => T; declare type SetRecoilState = <T>(recoilVal: RecoilState<T>, newVal: T | DefaultValue | ((prevValue: T) => T | DefaultValue)) => void; export interface SetterUpdate { key: string; newValue: any; params?: SerializableParam; } export interface SelectorUpdate { key: string; value: any; } export interface SelectorFamilyUpdate extends SelectorUpdate { params: SerializableParam; } export interface AtomUpdate extends SelectorUpdate { previous: any; updated: boolean; } export interface AtomFamilyState { family: string; key: string; value: any; updated: boolean; } export interface Transaction { state: AtomUpdate[]; updates: SelectorUpdate[]; atomFamilyState: AtomFamilyState[]; familyUpdates: SelectorFamilyUpdate[]; } export interface SetTransaction { state: AtomUpdate[]; setter: null | SetterUpdate; } export interface AtomFamilyMembers { [atomName: string]: RecoilState<any>; } export interface AtomFamilies { [familyName: string]: AtomFamilyMembers; } export interface SelectorFamilyConfig<T, P extends SerializableParam> { key: string; get: (param: P) => (opts: { get: GetRecoilValue; }) => Promise<T> | RecoilValue<T> | T; set?: (param: P) => (opts: { set: SetRecoilState; get: GetRecoilValue; reset: ResetRecoilState; }, newValue: T | DefaultValue) => void; dangerouslyAllowMutability?: boolean; } export interface SelectorFamilyMembers<T, P> { trackedSelectorFamily: (param: P) => RecoilState<T> | RecoilValueReadOnly<T>; isSettable: boolean; prevParams: Set<any>; } export interface SelectorFamilies<T, P> { [familyName: string]: SelectorFamilyMembers<T, P>; } export interface Ledger<T, S, P> { atoms: T[]; selectors: string[]; atomFamilies: AtomFamilies; selectorFamilies: SelectorFamilies<S, P>; setters: string[]; initialRender: SelectorUpdate[]; initialRenderFamilies: SelectorFamilyUpdate[]; transactions: Transaction[]; setTransactions: SetTransaction[]; } export interface SelectorConfig<T> { key: string; get: (opts: { get: GetRecoilValue; }) => T | Promise<T> | RecoilValue<T>; set?: (opts: { get: GetRecoilValue; set: SetRecoilState; reset: ResetRecoilState; }, newValue: T | DefaultValue) => void; dangerouslyAllowMutability?: boolean; } export {};