UNPKG

unchanged

Version:

A tiny, fast, unopinionated handler for updating JS objects and arrays immutably

161 lines (132 loc) 4.15 kB
/* eslint-disable */ declare namespace unchanged { export type PathItem = number | string; export type ParsedPath = PathItem[]; export type Path = PathItem | ParsedPath; export interface Unchangeable { [key: string]: any; [index: number]: any; } export type Fn = (...args: any[]) => any; export type WithHandler = (value: any, ...extraArgs: any[]) => any; export type Add = (path: Path, value: any, object: Unchangeable) => Unchangeable; export type AddWith = ( fn: WithHandler, path: Path, object: Unchangeable, ...extraArgs: any[] ) => Unchangeable; export type Assign = ( path: Path, objectToAssign: Unchangeable, object: Unchangeable, ) => Unchangeable; export type AssignWith = ( fn: WithHandler, path: Path, object: Unchangeable, ...extraArgs: any[] ) => Unchangeable; export type Call = ( path: Path, parameters: any[], object: Unchangeable | Fn, context?: any, ) => any; export type CallWith = ( fn: WithHandler, path: Path, parameters: any[], object: Unchangeable | Fn, context?: any, ...extraArgs: any[] ) => any; export type Get = (path: Path, object: Unchangeable) => any; export type GetOr = (fallbackValue: any, path: Path, object: Unchangeable) => any; export type GetWith = ( fn: WithHandler, path: Path, object: Unchangeable, ...extraArgs: any[] ) => any; export type GetWithOr = ( fn: WithHandler, fallbackValue: any, path: Path, object: Unchangeable, ...extraArgs: any[] ) => any; export type Has = (path: Path, object: Unchangeable) => boolean; export type HasWith = ( fn: WithHandler, path: Path, object: Unchangeable, ...extraArgs: any[] ) => boolean; export type Is = (path: Path, value: any, object: Unchangeable) => boolean; export type IsWith = ( fn: WithHandler, path: Path, value: any, object: Unchangeable, ...extraArgs: any[] ) => boolean; export type Merge = ( path: Path, objectToMerge: Unchangeable, object: Unchangeable, ) => Unchangeable; export type MergeWith = ( fn: WithHandler, path: Path, object: Unchangeable, ...extraArgs: any[] ) => Unchangeable; export type Not = (path: Path, value: any, object: Unchangeable) => boolean; export type NotWith = ( fn: WithHandler, path: Path, value: any, object: Unchangeable, ...extraArgs: any[] ) => boolean; export type Remove = (path: Path, object: Unchangeable) => Unchangeable; export type RemoveWith = ( fn: WithHandler, path: Path, object: Unchangeable, ...extraArgs: any[] ) => Unchangeable; export type Set = (path: Path, value: any, object: Unchangeable) => Unchangeable; export type SetWith = ( fn: WithHandler, path: Path, object: Unchangeable, ...extraArgs: any[] ) => Unchangeable; } declare module 'unchanged' { type Curried<Handler extends unchanged.Fn> = import('curriable').Curried<Handler>; export const add: Curried<unchanged.Add>; export const addWith: Curried<unchanged.AddWith>; export const assign: Curried<unchanged.Assign>; export const assignWith: Curried<unchanged.AssignWith>; export const call: Curried<unchanged.Call>; export const callWith: Curried<unchanged.CallWith>; export const get: Curried<unchanged.Get>; export const getOr: Curried<unchanged.GetOr>; export const getWith: Curried<unchanged.GetWith>; export const getWithOr: Curried<unchanged.GetWithOr>; export const has: Curried<unchanged.Has>; export const hasWith: Curried<unchanged.HasWith>; export const is: Curried<unchanged.Is>; export const isWith: Curried<unchanged.IsWith>; export const merge: Curried<unchanged.Merge>; export const mergeWith: Curried<unchanged.MergeWith>; export const not: Curried<unchanged.Not>; export const notWith: Curried<unchanged.NotWith>; export const remove: Curried<unchanged.Remove>; export const removeWith: Curried<unchanged.RemoveWith>; export const set: Curried<unchanged.Set>; export const setWith: Curried<unchanged.SetWith>; }