immer
Version:
Create your next immutable state by mutating the current one
52 lines (44 loc) • 1.2 kB
text/typescript
import {
SetState,
ImmerScope,
ProxyObjectState,
ProxyArrayState,
ES5ObjectState,
ES5ArrayState,
MapState,
DRAFT_STATE
} from "../internal"
export type Objectish = AnyObject | AnyArray | AnyMap | AnySet
export type ObjectishNoSet = AnyObject | AnyArray | AnyMap
export type AnyObject = {[key: string]: any}
export type AnyArray = Array<any>
export type AnySet = Set<any>
export type AnyMap = Map<any, any>
export const ArchtypeObject = 0
export const ArchtypeArray = 1
export const ArchtypeMap = 2
export const ArchtypeSet = 3
export const ProxyTypeProxyObject = 0
export const ProxyTypeProxyArray = 1
export const ProxyTypeES5Object = 4
export const ProxyTypeES5Array = 5
export const ProxyTypeMap = 2
export const ProxyTypeSet = 3
export interface ImmerBaseState {
parent_?: ImmerState
scope_: ImmerScope
modified_: boolean
finalized_: boolean
isManual_: boolean
}
export type ImmerState =
| ProxyObjectState
| ProxyArrayState
| ES5ObjectState
| ES5ArrayState
| MapState
| SetState
// The _internal_ type used for drafts (not to be confused with Draft, which is public facing)
export type Drafted<Base = any, T extends ImmerState = ImmerState> = {
[DRAFT_STATE]: T
} & Base