init
This commit is contained in:
1276
node_modules/immer/dist/cjs/immer.cjs.development.js
generated
vendored
Normal file
1276
node_modules/immer/dist/cjs/immer.cjs.development.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
node_modules/immer/dist/cjs/immer.cjs.development.js.map
generated
vendored
Normal file
1
node_modules/immer/dist/cjs/immer.cjs.development.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
2
node_modules/immer/dist/cjs/immer.cjs.production.js
generated
vendored
Normal file
2
node_modules/immer/dist/cjs/immer.cjs.production.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
1
node_modules/immer/dist/cjs/immer.cjs.production.js.map
generated
vendored
Normal file
1
node_modules/immer/dist/cjs/immer.cjs.production.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
8
node_modules/immer/dist/cjs/index.js
generated
vendored
Normal file
8
node_modules/immer/dist/cjs/index.js
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
'use strict'
|
||||
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
module.exports = require('./immer.cjs.production.js')
|
||||
} else {
|
||||
module.exports = require('./immer.cjs.development.js')
|
||||
}
|
||||
111
node_modules/immer/dist/cjs/index.js.flow
generated
vendored
Normal file
111
node_modules/immer/dist/cjs/index.js.flow
generated
vendored
Normal file
@@ -0,0 +1,111 @@
|
||||
// @flow
|
||||
|
||||
export interface Patch {
|
||||
op: "replace" | "remove" | "add";
|
||||
path: (string | number)[];
|
||||
value?: any;
|
||||
}
|
||||
|
||||
export type PatchListener = (patches: Patch[], inversePatches: Patch[]) => void
|
||||
|
||||
type Base = {...} | Array<any>
|
||||
interface IProduce {
|
||||
/**
|
||||
* Immer takes a state, and runs a function against it.
|
||||
* That function can freely mutate the state, as it will create copies-on-write.
|
||||
* This means that the original state will stay unchanged, and once the function finishes, the modified state is returned.
|
||||
*
|
||||
* If the first argument is a function, this is interpreted as the recipe, and will create a curried function that will execute the recipe
|
||||
* any time it is called with the current state.
|
||||
*
|
||||
* @param currentState - the state to start with
|
||||
* @param recipe - function that receives a proxy of the current state as first argument and which can be freely modified
|
||||
* @param initialState - if a curried function is created and this argument was given, it will be used as fallback if the curried function is called with a state of undefined
|
||||
* @returns The next state: a new state, or the current state if nothing was modified
|
||||
*/
|
||||
<S: Base>(
|
||||
currentState: S,
|
||||
recipe: (draftState: S) => S | void,
|
||||
patchListener?: PatchListener
|
||||
): S;
|
||||
// curried invocations with initial state
|
||||
<S: Base, A = void, B = void, C = void>(
|
||||
recipe: (draftState: S, a: A, b: B, c: C, ...extraArgs: any[]) => S | void,
|
||||
initialState: S
|
||||
): (currentState: S | void, a: A, b: B, c: C, ...extraArgs: any[]) => S;
|
||||
// curried invocations without initial state
|
||||
<S: Base, A = void, B = void, C = void>(
|
||||
recipe: (draftState: S, a: A, b: B, c: C, ...extraArgs: any[]) => S | void
|
||||
): (currentState: S, a: A, b: B, c: C, ...extraArgs: any[]) => S;
|
||||
}
|
||||
|
||||
interface IProduceWithPatches {
|
||||
/**
|
||||
* Like `produce`, but instead of just returning the new state,
|
||||
* a tuple is returned with [nextState, patches, inversePatches]
|
||||
*
|
||||
* Like produce, this function supports currying
|
||||
*/
|
||||
<S: Base>(
|
||||
currentState: S,
|
||||
recipe: (draftState: S) => S | void
|
||||
): [S, Patch[], Patch[]];
|
||||
// curried invocations with initial state
|
||||
<S: Base, A = void, B = void, C = void>(
|
||||
recipe: (draftState: S, a: A, b: B, c: C, ...extraArgs: any[]) => S | void,
|
||||
initialState: S
|
||||
): (currentState: S | void, a: A, b: B, c: C, ...extraArgs: any[]) => [S, Patch[], Patch[]];
|
||||
// curried invocations without initial state
|
||||
<S: Base, A = void, B = void, C = void>(
|
||||
recipe: (draftState: S, a: A, b: B, c: C, ...extraArgs: any[]) => S | void
|
||||
): (currentState: S, a: A, b: B, c: C, ...extraArgs: any[]) => [S, Patch[], Patch[]];
|
||||
}
|
||||
|
||||
declare export var produce: IProduce
|
||||
|
||||
declare export var produceWithPatches: IProduceWithPatches
|
||||
|
||||
declare export var nothing: typeof undefined
|
||||
|
||||
declare export var immerable: Symbol
|
||||
|
||||
/**
|
||||
* Automatically freezes any state trees generated by immer.
|
||||
* This protects against accidental modifications of the state tree outside of an immer function.
|
||||
* This comes with a performance impact, so it is recommended to disable this option in production.
|
||||
* By default it is turned on during local development, and turned off in production.
|
||||
*/
|
||||
declare export function setAutoFreeze(autoFreeze: boolean): void
|
||||
|
||||
/**
|
||||
* Pass false to disable strict shallow copy.
|
||||
*
|
||||
* By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.
|
||||
*/
|
||||
declare export function setUseStrictShallowCopy(useStrictShallowCopy: boolean): void
|
||||
|
||||
declare export function applyPatches<S>(state: S, patches: Patch[]): S
|
||||
|
||||
declare export function original<S>(value: S): S
|
||||
|
||||
declare export function current<S>(value: S): S
|
||||
|
||||
declare export function isDraft(value: any): boolean
|
||||
|
||||
/**
|
||||
* Creates a mutable draft from an (immutable) object / array.
|
||||
* The draft can be modified until `finishDraft` is called
|
||||
*/
|
||||
declare export function createDraft<T>(base: T): T
|
||||
|
||||
/**
|
||||
* Given a draft that was created using `createDraft`,
|
||||
* finalizes the draft into a new immutable object.
|
||||
* Optionally a patch-listener can be provided to gather the patches that are needed to construct the object.
|
||||
*/
|
||||
declare export function finishDraft<T>(base: T, listener?: PatchListener): T
|
||||
|
||||
declare export function enableMapSet(): void
|
||||
declare export function enablePatches(): void
|
||||
|
||||
declare export function freeze<T>(obj: T, freeze?: boolean): T
|
||||
262
node_modules/immer/dist/immer.d.ts
generated
vendored
Normal file
262
node_modules/immer/dist/immer.d.ts
generated
vendored
Normal file
@@ -0,0 +1,262 @@
|
||||
/**
|
||||
* The sentinel value returned by producers to replace the draft with undefined.
|
||||
*/
|
||||
declare const NOTHING: unique symbol;
|
||||
/**
|
||||
* To let Immer treat your class instances as plain immutable objects
|
||||
* (albeit with a custom prototype), you must define either an instance property
|
||||
* or a static property on each of your custom classes.
|
||||
*
|
||||
* Otherwise, your class instance will never be drafted, which means it won't be
|
||||
* safe to mutate in a produce callback.
|
||||
*/
|
||||
declare const DRAFTABLE: unique symbol;
|
||||
|
||||
type AnyFunc = (...args: any[]) => any;
|
||||
type PrimitiveType = number | string | boolean;
|
||||
/** Object types that should never be mapped */
|
||||
type AtomicObject = Function | Promise<any> | Date | RegExp;
|
||||
/**
|
||||
* If the lib "ES2015.Collection" is not included in tsconfig.json,
|
||||
* types like ReadonlyArray, WeakMap etc. fall back to `any` (specified nowhere)
|
||||
* or `{}` (from the node types), in both cases entering an infinite recursion in
|
||||
* pattern matching type mappings
|
||||
* This type can be used to cast these types to `void` in these cases.
|
||||
*/
|
||||
type IfAvailable<T, Fallback = void> = true | false extends (T extends never ? true : false) ? Fallback : keyof T extends never ? Fallback : T;
|
||||
/**
|
||||
* These should also never be mapped but must be tested after regular Map and
|
||||
* Set
|
||||
*/
|
||||
type WeakReferences = IfAvailable<WeakMap<any, any>> | IfAvailable<WeakSet<any>>;
|
||||
type WritableDraft<T> = {
|
||||
-readonly [K in keyof T]: Draft<T[K]>;
|
||||
};
|
||||
/** Convert a readonly type into a mutable type, if possible */
|
||||
type Draft<T> = T extends PrimitiveType ? T : T extends AtomicObject ? T : T extends ReadonlyMap<infer K, infer V> ? Map<Draft<K>, Draft<V>> : T extends ReadonlySet<infer V> ? Set<Draft<V>> : T extends WeakReferences ? T : T extends object ? WritableDraft<T> : T;
|
||||
/** Convert a mutable type into a readonly type */
|
||||
type Immutable<T> = T extends PrimitiveType ? T : T extends AtomicObject ? T : T extends ReadonlyMap<infer K, infer V> ? ReadonlyMap<Immutable<K>, Immutable<V>> : T extends ReadonlySet<infer V> ? ReadonlySet<Immutable<V>> : T extends WeakReferences ? T : T extends object ? {
|
||||
readonly [K in keyof T]: Immutable<T[K]>;
|
||||
} : T;
|
||||
interface Patch {
|
||||
op: "replace" | "remove" | "add";
|
||||
path: (string | number)[];
|
||||
value?: any;
|
||||
}
|
||||
type PatchListener = (patches: Patch[], inversePatches: Patch[]) => void;
|
||||
/**
|
||||
* Utility types
|
||||
*/
|
||||
type PatchesTuple<T> = readonly [T, Patch[], Patch[]];
|
||||
type ValidRecipeReturnType<State> = State | void | undefined | (State extends undefined ? typeof NOTHING : never);
|
||||
type ReturnTypeWithPatchesIfNeeded<State, UsePatches extends boolean> = UsePatches extends true ? PatchesTuple<State> : State;
|
||||
/**
|
||||
* Core Producer inference
|
||||
*/
|
||||
type InferRecipeFromCurried<Curried> = Curried extends (base: infer State, ...rest: infer Args) => any ? ReturnType<Curried> extends State ? (draft: Draft<State>, ...rest: Args) => ValidRecipeReturnType<Draft<State>> : never : never;
|
||||
type InferInitialStateFromCurried<Curried> = Curried extends (base: infer State, ...rest: any[]) => any ? State : never;
|
||||
type InferCurriedFromRecipe<Recipe, UsePatches extends boolean> = Recipe extends (draft: infer DraftState, ...args: infer RestArgs) => any ? ReturnType<Recipe> extends ValidRecipeReturnType<DraftState> ? (base: Immutable<DraftState>, ...args: RestArgs) => ReturnTypeWithPatchesIfNeeded<DraftState, UsePatches> : never : never;
|
||||
type InferCurriedFromInitialStateAndRecipe<State, Recipe, UsePatches extends boolean> = Recipe extends (draft: Draft<State>, ...rest: infer RestArgs) => ValidRecipeReturnType<State> ? (base?: State | undefined, ...args: RestArgs) => ReturnTypeWithPatchesIfNeeded<State, UsePatches> : never;
|
||||
/**
|
||||
* The `produce` function takes a value and a "recipe function" (whose
|
||||
* return value often depends on the base state). The recipe function is
|
||||
* free to mutate its first argument however it wants. All mutations are
|
||||
* only ever applied to a __copy__ of the base state.
|
||||
*
|
||||
* Pass only a function to create a "curried producer" which relieves you
|
||||
* from passing the recipe function every time.
|
||||
*
|
||||
* Only plain objects and arrays are made mutable. All other objects are
|
||||
* considered uncopyable.
|
||||
*
|
||||
* Note: This function is __bound__ to its `Immer` instance.
|
||||
*
|
||||
* @param {any} base - the initial state
|
||||
* @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified
|
||||
* @param {Function} patchListener - optional function that will be called with all the patches produced here
|
||||
* @returns {any} a new state, or the initial state if nothing was modified
|
||||
*/
|
||||
interface IProduce {
|
||||
/** Curried producer that infers the recipe from the curried output function (e.g. when passing to setState) */
|
||||
<Curried>(recipe: InferRecipeFromCurried<Curried>, initialState?: InferInitialStateFromCurried<Curried>): Curried;
|
||||
/** Curried producer that infers curried from the recipe */
|
||||
<Recipe extends AnyFunc>(recipe: Recipe): InferCurriedFromRecipe<Recipe, false>;
|
||||
/** Curried producer that infers curried from the State generic, which is explicitly passed in. */
|
||||
<State>(recipe: (state: Draft<State>, initialState: State) => ValidRecipeReturnType<State>): (state?: State) => State;
|
||||
<State, Args extends any[]>(recipe: (state: Draft<State>, ...args: Args) => ValidRecipeReturnType<State>, initialState: State): (state?: State, ...args: Args) => State;
|
||||
<State>(recipe: (state: Draft<State>) => ValidRecipeReturnType<State>): (state: State) => State;
|
||||
<State, Args extends any[]>(recipe: (state: Draft<State>, ...args: Args) => ValidRecipeReturnType<State>): (state: State, ...args: Args) => State;
|
||||
/** Curried producer with initial state, infers recipe from initial state */
|
||||
<State, Recipe extends Function>(recipe: Recipe, initialState: State): InferCurriedFromInitialStateAndRecipe<State, Recipe, false>;
|
||||
/** Normal producer */
|
||||
<Base, D = Draft<Base>>(// By using a default inferred D, rather than Draft<Base> in the recipe, we can override it.
|
||||
base: Base, recipe: (draft: D) => ValidRecipeReturnType<D>, listener?: PatchListener): Base;
|
||||
}
|
||||
/**
|
||||
* Like `produce`, but instead of just returning the new state,
|
||||
* a tuple is returned with [nextState, patches, inversePatches]
|
||||
*
|
||||
* Like produce, this function supports currying
|
||||
*/
|
||||
interface IProduceWithPatches {
|
||||
<Recipe extends AnyFunc>(recipe: Recipe): InferCurriedFromRecipe<Recipe, true>;
|
||||
<State, Recipe extends Function>(recipe: Recipe, initialState: State): InferCurriedFromInitialStateAndRecipe<State, Recipe, true>;
|
||||
<Base, D = Draft<Base>>(base: Base, recipe: (draft: D) => ValidRecipeReturnType<D>, listener?: PatchListener): PatchesTuple<Base>;
|
||||
}
|
||||
/**
|
||||
* The type for `recipe function`
|
||||
*/
|
||||
type Producer<T> = (draft: Draft<T>) => ValidRecipeReturnType<Draft<T>>;
|
||||
|
||||
type Objectish = AnyObject | AnyArray | AnyMap | AnySet;
|
||||
type AnyObject = {
|
||||
[key: string]: any;
|
||||
};
|
||||
type AnyArray = Array<any>;
|
||||
type AnySet = Set<any>;
|
||||
type AnyMap = Map<any, any>;
|
||||
|
||||
/** Returns true if the given value is an Immer draft */
|
||||
declare function isDraft(value: any): boolean;
|
||||
/** Returns true if the given value can be drafted by Immer */
|
||||
declare function isDraftable(value: any): boolean;
|
||||
/** Get the underlying object that is represented by the given draft */
|
||||
declare function original<T>(value: T): T | undefined;
|
||||
/**
|
||||
* Freezes draftable objects. Returns the original object.
|
||||
* By default freezes shallowly, but if the second argument is `true` it will freeze recursively.
|
||||
*
|
||||
* @param obj
|
||||
* @param deep
|
||||
*/
|
||||
declare function freeze<T>(obj: T, deep?: boolean): T;
|
||||
|
||||
interface ProducersFns {
|
||||
produce: IProduce;
|
||||
produceWithPatches: IProduceWithPatches;
|
||||
}
|
||||
type StrictMode = boolean | "class_only";
|
||||
declare class Immer implements ProducersFns {
|
||||
autoFreeze_: boolean;
|
||||
useStrictShallowCopy_: StrictMode;
|
||||
constructor(config?: {
|
||||
autoFreeze?: boolean;
|
||||
useStrictShallowCopy?: StrictMode;
|
||||
});
|
||||
/**
|
||||
* The `produce` function takes a value and a "recipe function" (whose
|
||||
* return value often depends on the base state). The recipe function is
|
||||
* free to mutate its first argument however it wants. All mutations are
|
||||
* only ever applied to a __copy__ of the base state.
|
||||
*
|
||||
* Pass only a function to create a "curried producer" which relieves you
|
||||
* from passing the recipe function every time.
|
||||
*
|
||||
* Only plain objects and arrays are made mutable. All other objects are
|
||||
* considered uncopyable.
|
||||
*
|
||||
* Note: This function is __bound__ to its `Immer` instance.
|
||||
*
|
||||
* @param {any} base - the initial state
|
||||
* @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified
|
||||
* @param {Function} patchListener - optional function that will be called with all the patches produced here
|
||||
* @returns {any} a new state, or the initial state if nothing was modified
|
||||
*/
|
||||
produce: IProduce;
|
||||
produceWithPatches: IProduceWithPatches;
|
||||
createDraft<T extends Objectish>(base: T): Draft<T>;
|
||||
finishDraft<D extends Draft<any>>(draft: D, patchListener?: PatchListener): D extends Draft<infer T> ? T : never;
|
||||
/**
|
||||
* Pass true to automatically freeze all copies created by Immer.
|
||||
*
|
||||
* By default, auto-freezing is enabled.
|
||||
*/
|
||||
setAutoFreeze(value: boolean): void;
|
||||
/**
|
||||
* Pass true to enable strict shallow copy.
|
||||
*
|
||||
* By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.
|
||||
*/
|
||||
setUseStrictShallowCopy(value: StrictMode): void;
|
||||
applyPatches<T extends Objectish>(base: T, patches: readonly Patch[]): T;
|
||||
}
|
||||
|
||||
/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */
|
||||
declare function current<T>(value: T): T;
|
||||
|
||||
declare function enablePatches(): void;
|
||||
|
||||
declare function enableMapSet(): void;
|
||||
|
||||
/**
|
||||
* The `produce` function takes a value and a "recipe function" (whose
|
||||
* return value often depends on the base state). The recipe function is
|
||||
* free to mutate its first argument however it wants. All mutations are
|
||||
* only ever applied to a __copy__ of the base state.
|
||||
*
|
||||
* Pass only a function to create a "curried producer" which relieves you
|
||||
* from passing the recipe function every time.
|
||||
*
|
||||
* Only plain objects and arrays are made mutable. All other objects are
|
||||
* considered uncopyable.
|
||||
*
|
||||
* Note: This function is __bound__ to its `Immer` instance.
|
||||
*
|
||||
* @param {any} base - the initial state
|
||||
* @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified
|
||||
* @param {Function} patchListener - optional function that will be called with all the patches produced here
|
||||
* @returns {any} a new state, or the initial state if nothing was modified
|
||||
*/
|
||||
declare const produce: IProduce;
|
||||
/**
|
||||
* Like `produce`, but `produceWithPatches` always returns a tuple
|
||||
* [nextState, patches, inversePatches] (instead of just the next state)
|
||||
*/
|
||||
declare const produceWithPatches: IProduceWithPatches;
|
||||
/**
|
||||
* Pass true to automatically freeze all copies created by Immer.
|
||||
*
|
||||
* Always freeze by default, even in production mode
|
||||
*/
|
||||
declare const setAutoFreeze: (value: boolean) => void;
|
||||
/**
|
||||
* Pass true to enable strict shallow copy.
|
||||
*
|
||||
* By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.
|
||||
*/
|
||||
declare const setUseStrictShallowCopy: (value: StrictMode) => void;
|
||||
/**
|
||||
* Apply an array of Immer patches to the first argument.
|
||||
*
|
||||
* This function is a producer, which means copy-on-write is in effect.
|
||||
*/
|
||||
declare const applyPatches: <T extends Objectish>(base: T, patches: readonly Patch[]) => T;
|
||||
/**
|
||||
* Create an Immer draft from the given base state, which may be a draft itself.
|
||||
* The draft can be modified until you finalize it with the `finishDraft` function.
|
||||
*/
|
||||
declare const createDraft: <T extends Objectish>(base: T) => Draft<T>;
|
||||
/**
|
||||
* Finalize an Immer draft from a `createDraft` call, returning the base state
|
||||
* (if no changes were made) or a modified copy. The draft must *not* be
|
||||
* mutated afterwards.
|
||||
*
|
||||
* Pass a function as the 2nd argument to generate Immer patches based on the
|
||||
* changes that were made.
|
||||
*/
|
||||
declare const finishDraft: <D extends unknown>(draft: D, patchListener?: PatchListener | undefined) => D extends Draft<infer T> ? T : never;
|
||||
/**
|
||||
* This function is actually a no-op, but can be used to cast an immutable type
|
||||
* to an draft type and make TypeScript happy
|
||||
*
|
||||
* @param value
|
||||
*/
|
||||
declare function castDraft<T>(value: T): Draft<T>;
|
||||
/**
|
||||
* This function is actually a no-op, but can be used to cast a mutable type
|
||||
* to an immutable type and make TypeScript happy
|
||||
* @param value
|
||||
*/
|
||||
declare function castImmutable<T>(value: T): Immutable<T>;
|
||||
|
||||
export { Draft, Immer, Immutable, Objectish, Patch, PatchListener, Producer, StrictMode, WritableDraft, applyPatches, castDraft, castImmutable, createDraft, current, enableMapSet, enablePatches, finishDraft, freeze, DRAFTABLE as immerable, isDraft, isDraftable, NOTHING as nothing, original, produce, produceWithPatches, setAutoFreeze, setUseStrictShallowCopy };
|
||||
1250
node_modules/immer/dist/immer.legacy-esm.js
generated
vendored
Normal file
1250
node_modules/immer/dist/immer.legacy-esm.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
node_modules/immer/dist/immer.legacy-esm.js.map
generated
vendored
Normal file
1
node_modules/immer/dist/immer.legacy-esm.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
1231
node_modules/immer/dist/immer.mjs
generated
vendored
Normal file
1231
node_modules/immer/dist/immer.mjs
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
node_modules/immer/dist/immer.mjs.map
generated
vendored
Normal file
1
node_modules/immer/dist/immer.mjs.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
2
node_modules/immer/dist/immer.production.mjs
generated
vendored
Normal file
2
node_modules/immer/dist/immer.production.mjs
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
1
node_modules/immer/dist/immer.production.mjs.map
generated
vendored
Normal file
1
node_modules/immer/dist/immer.production.mjs.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user