{"version":3,"sources":["../src/middlewares/devtools.ts","../src/middlewares/immer.ts","../src/middlewares/mutative.ts","../src/middlewares/persist.ts","../src/utils/helpers.ts","../src/internal/extendActions.ts","../src/internal/extendSelectors.ts","../src/internal/buildStateCreator.ts","../src/internal/createBaseApi.ts","../src/internal/storeFactory.ts"],"sourcesContent":["import { DevtoolsOptions as _DevtoolsOptions } from 'zustand/middleware';\n\nimport { MiddlewareOption } from '../types';\n\nexport { devtools as devToolsMiddleware } from 'zustand/middleware';\n\nexport type DevtoolsOptions = MiddlewareOption<Partial<_DevtoolsOptions>>;\n","import { produce } from 'immer';\n\nimport type { AnyFunction, MiddlewareOption } from '../types';\nimport type { Draft } from 'immer';\nimport type { StateCreator, StoreMutatorIdentifier } from 'zustand';\n\ndeclare module 'zustand' {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars, unused-imports/no-unused-vars\n  interface StoreMutators<S, A> {\n    ['zustand/immer-x']: WithImmer<S>;\n  }\n}\n\ntype Write<T, U> = Omit<T, keyof U> & U;\ntype SkipTwo<T> = T extends { length: 0 }\n  ? []\n  : T extends { length: 1 }\n    ? []\n    : T extends { length: 0 | 1 }\n      ? []\n      : T extends [unknown, unknown, ...infer A]\n        ? A\n        : T extends [unknown, unknown?, ...infer A]\n          ? A\n          : T extends [unknown?, unknown?, ...infer A]\n            ? A\n            : never;\n\ntype SetStateType<T extends unknown[]> = Exclude<T[0], AnyFunction>;\n\ntype WithImmer<S> = Write<S, StoreImmer<S>>;\n\ntype StoreImmer<S> = S extends {\n  setState: infer SetState;\n}\n  ? SetState extends {\n      (...a: infer A1): infer Sr1;\n      (...a: infer A2): infer Sr2;\n    }\n    ? {\n        // Ideally, we would want to infer the `nextStateOrUpdater` `T` type from the\n        // `A1` type, but this is infeasible since it is an intersection with\n        // a partial type.\n        setState(\n          nextStateOrUpdater:\n            | SetStateType<A1>\n            | Partial<SetStateType<A1>>\n            | ((state: Draft<Partial<SetStateType<A1>>>) => void),\n          shouldReplace?: true,\n          ...a: SkipTwo<A1>\n        ): Sr1;\n        setState(\n          nextStateOrUpdater:\n            | SetStateType<A2>\n            | ((state: Draft<Partial<SetStateType<A2>>>) => void),\n          shouldReplace: false,\n          ...a: SkipTwo<A2>\n        ): Sr2;\n      }\n    : never\n  : never;\n\ntype Options = {\n  enableMapSet?: boolean;\n  enabledAutoFreeze?: boolean;\n};\ntype ImmerImpl = <T>(\n  storeInitializer: StateCreator<T, [], []>,\n  options?: Options\n) => StateCreator<T, [], []>;\n\nconst immerImpl: ImmerImpl = (initializer) => (set, get, store) => {\n  type T = ReturnType<typeof initializer>;\n\n  store.setState = (updater, replace, ...a) => {\n    const nextState = (\n      typeof updater === 'function' ? produce(updater as any) : updater\n    ) as ((s: T) => T) | T | Partial<T>;\n\n    return set(\n      nextState,\n      typeof replace === 'boolean' ? (replace as any) : true,\n      ...a\n    );\n  };\n\n  return initializer(store.setState, get, store);\n};\n\ntype Immer = <\n  T,\n  Mps extends [StoreMutatorIdentifier, unknown][] = [],\n  Mcs extends [StoreMutatorIdentifier, unknown][] = [],\n>(\n  initializer: StateCreator<T, [...Mps, ['zustand/immer-x', never]], Mcs>,\n  options?: Options\n) => StateCreator<T, Mps, [['zustand/immer-x', never], ...Mcs]>;\nexport const immerMiddleware = immerImpl as unknown as Immer;\n\nexport type ImmerOptions = MiddlewareOption<Options>;\n","import { create, PatchesOptions } from 'mutative';\n\nimport type { AnyFunction, MiddlewareOption } from '../types';\nimport type { Options as _MutativeOptions, Draft } from 'mutative';\nimport type { StateCreator, StoreMutatorIdentifier } from 'zustand';\n\ndeclare module 'zustand/vanilla' {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars, unused-imports/no-unused-vars\n  interface StoreMutators<S, A> {\n    ['zustand/mutative-x']: WithMutative<S>;\n  }\n}\n\ntype SetStateType<T extends unknown[]> = Exclude<T[0], AnyFunction>;\ntype WithMutative<S> = Write<S, StoreMutative<S>>;\n\ntype Write<T, U> = Omit<T, keyof U> & U;\ntype SkipTwo<T> = T extends { length: 0 }\n  ? []\n  : T extends { length: 1 }\n    ? []\n    : T extends { length: 0 | 1 }\n      ? []\n      : T extends [unknown, unknown, ...infer A]\n        ? A\n        : T extends [unknown, unknown?, ...infer A]\n          ? A\n          : T extends [unknown?, unknown?, ...infer A]\n            ? A\n            : never;\ntype StoreMutative<S> = S extends {\n  setState: infer SetState;\n}\n  ? SetState extends {\n      (...a: infer A1): infer Sr1;\n      (...a: infer A2): infer Sr2;\n    }\n    ? {\n        // Ideally, we would want to infer the `nextStateOrUpdater` `T` type from the\n        // `A1` type, but this is infeasible since it is an intersection with\n        // a partial type.\n        setState(\n          nextStateOrUpdater:\n            | SetStateType<A1>\n            | Partial<SetStateType<A1>>\n            | ((state: Draft<Partial<SetStateType<A1>>>) => void),\n          shouldReplace?: true,\n          ...a: SkipTwo<A1>\n        ): Sr1;\n        setState(\n          nextStateOrUpdater:\n            | SetStateType<A2>\n            | ((state: Draft<Partial<SetStateType<A2>>>) => void),\n          shouldReplace: false,\n          ...a: SkipTwo<A2>\n        ): Sr2;\n      }\n    : never\n  : never;\n\ntype Options<O extends PatchesOptions, F extends boolean> = Omit<\n  _MutativeOptions<O, F>,\n  'enablePatches'\n>;\ntype MutativeImpl = <T, F extends boolean = false>(\n  storeInitializer: StateCreator<T, [], []>,\n  options?: Options<false, F>\n) => StateCreator<T, [], []>;\n\nconst mutativeImpl: MutativeImpl =\n  (initializer, options) => (set, get, store) => {\n    type T = ReturnType<typeof initializer>;\n\n    store.setState = (updater, replace, ...a) => {\n      const nextState = (\n        typeof updater === 'function'\n          ? create(\n              updater as any,\n              options ? { ...options, enablePatches: false } : options\n            )\n          : updater\n      ) as ((s: T) => T) | T | Partial<T>;\n\n      return set(\n        nextState as any,\n        typeof replace === 'boolean' ? (replace as any) : true,\n        ...a\n      );\n    };\n\n    return initializer(store.setState, get, store);\n  };\n\ntype Mutative = <\n  T,\n  Mps extends [StoreMutatorIdentifier, unknown][] = [],\n  Mcs extends [StoreMutatorIdentifier, unknown][] = [],\n  F extends boolean = false,\n>(\n  initializer: StateCreator<T, [...Mps, ['zustand/mutative-x', never]], Mcs>,\n  options?: Options<false, F>\n) => StateCreator<T, Mps, [['zustand/mutative-x', never], ...Mcs]>;\n\nexport const mutativeMiddleware = mutativeImpl as unknown as Mutative;\nexport type MutativeOptions<F extends boolean = false> = MiddlewareOption<\n  Options<false, F>\n>;\n","import { PersistOptions as _PersistOptions } from 'zustand/middleware';\n\nimport { MiddlewareOption } from '../types';\n\nexport { persist as persistMiddleware } from 'zustand/middleware';\nexport type PersistOptions<StateType> = MiddlewareOption<\n  Partial<_PersistOptions<StateType, Partial<StateType>>>\n>;\n","import { MiddlewareOption } from '../types';\n\nexport const getOptions = <T extends MiddlewareOption<object> | undefined>(\n  option: T,\n  fallbackEnabled: boolean = false\n) => {\n  const isBooleanValue = typeof option === 'boolean';\n  const { enabled, ...config } = (\n    isBooleanValue ? {} : option || {}\n  ) as Exclude<T, boolean | undefined>;\n  const isValueProvided = isBooleanValue ? option : enabled;\n  return {\n    enabled: isValueProvided ?? fallbackEnabled,\n    ...config,\n  };\n};\n","import type {\n  AnyFunction,\n  TActionBuilder,\n  TBaseStateApiForBuilder,\n} from '../types/baseStore';\nimport type { TState } from '../types/utils';\nimport type { StoreMutatorIdentifier } from 'zustand';\n\nexport const extendActions = <\n  StateType extends TState,\n  Mutators extends [StoreMutatorIdentifier, unknown][],\n  TActions extends Record<string, AnyFunction>,\n  TSelectors extends Record<string, AnyFunction>,\n  Builder extends TActionBuilder<StateType, Mutators, TActions, TSelectors>,\n>(\n  builder: Builder,\n  api: TBaseStateApiForBuilder<StateType, Mutators, TActions, TSelectors>\n) => {\n  const newActions = builder(api);\n  const actions = {\n    ...api.actions,\n    ...newActions,\n  } as TActions & ReturnType<Builder>;\n\n  return {\n    ...api,\n    actions,\n    set: ((key: string, ...args: unknown[]) => {\n      if (key in actions) {\n        const action = actions[key];\n        return action?.(...args);\n      }\n\n      return api.set(key as any, args[0]);\n    }) as typeof api.set,\n  } as TBaseStateApiForBuilder<\n    StateType,\n    Mutators,\n    TActions & ReturnType<Builder>,\n    TSelectors\n  >;\n};\n","import type {\n  AnyFunction,\n  TBaseStateApiForBuilder,\n  TSelectorBuilder,\n} from '../types/baseStore';\nimport type { TState } from '../types/utils';\nimport type { StoreMutatorIdentifier } from 'zustand';\n\nconst identity = <T>(arg: T) => arg;\n\ntype ExtendSelectorOptions<StateType> = {\n  selectWithStore?: <Result>(\n    selector: (state: StateType) => Result,\n    equalityFn?: (a: Result, b: Result) => boolean\n  ) => Result;\n};\n\nexport const extendSelectors = <\n  StateType extends TState,\n  Mutators extends [StoreMutatorIdentifier, unknown][],\n  TActions extends Record<string, AnyFunction>,\n  TSelectors extends Record<string, AnyFunction>,\n  Builder extends TSelectorBuilder<StateType, Mutators, TActions, TSelectors>,\n>(\n  builder: Builder,\n  api: TBaseStateApiForBuilder<StateType, Mutators, TActions, TSelectors>,\n  options?: ExtendSelectorOptions<StateType>\n) => {\n  const baseGet = api.get.bind(api);\n  const baseSubscribe = api.subscribe.bind(api);\n\n  const newSelectors = builder(api);\n  const selectors = {\n    ...api.selectors,\n    ...newSelectors,\n  } as TSelectors & ReturnType<Builder>;\n\n  const extendedApi = {\n    ...api,\n    selectors,\n    get: ((key: string, ...args: unknown[]) => {\n      if (key in selectors) {\n        const selector = selectors[key];\n        return selector?.(...args);\n      }\n\n      return baseGet(key as keyof StateType);\n    }) as typeof api.get,\n    subscribe: ((key: string, ...args: unknown[]) => {\n      if (key in selectors) {\n        const params = [...args];\n        let optionsArg: any;\n        let selectorArg: AnyFunction = identity;\n\n        const maybeOptions = params.at(-1);\n        if (typeof maybeOptions !== 'function') {\n          optionsArg = params.pop();\n        }\n\n        const listener = params.pop() as AnyFunction;\n\n        const maybeSelector = params.at(-1);\n        if (typeof maybeSelector === 'function') {\n          selectorArg = params.pop() as AnyFunction;\n        }\n\n        const selectorArgs = params;\n\n        return baseSubscribe(\n          'state',\n          () =>\n            selectorArg(\n              selectors[key as keyof typeof selectors](...selectorArgs)\n            ),\n          listener,\n          optionsArg\n        );\n      }\n\n      // @ts-expect-error -- passthrough to base subscribe\n      return baseSubscribe(key, ...args);\n    }) as typeof api.subscribe,\n  } satisfies TBaseStateApiForBuilder<\n    StateType,\n    Mutators,\n    TActions,\n    Record<string, AnyFunction>\n  >;\n\n  if (options?.selectWithStore) {\n    const selectWithStore = options.selectWithStore;\n    (extendedApi as any).useValue = (key: string, ...args: unknown[]) => {\n      if (key in selectors) {\n        const selector = selectors[key];\n        const maybeEqualityFn = args.at(-1);\n        const equalityFn =\n          typeof maybeEqualityFn === 'function' ? maybeEqualityFn : undefined;\n        const selectorArgs = equalityFn ? args.slice(0, -1) : args;\n\n        return selectWithStore(\n          () => selector?.(...selectorArgs),\n          equalityFn as AnyFunction\n        );\n      }\n\n      return (api as any).useValue?.(key, ...args);\n    };\n  }\n\n  return extendedApi as TBaseStateApiForBuilder<\n    StateType,\n    Mutators,\n    TActions,\n    TSelectors & ReturnType<Builder>\n  >;\n};\n","import { subscribeWithSelector } from 'zustand/middleware';\n\nimport {\n  devToolsMiddleware,\n  immerMiddleware,\n  persistMiddleware,\n} from '../middlewares';\nimport { mutativeMiddleware } from '../middlewares/mutative';\nimport { DefaultMutators, TBaseStoreOptions, TState } from '../types';\nimport { TMiddleware } from '../types/middleware';\nimport { getOptions } from '../utils/helpers';\n\nimport type { StateCreator, StoreMutatorIdentifier } from 'zustand';\n\ntype BuildStateCreatorResult<\n  StateType extends TState,\n  Mutators extends [StoreMutatorIdentifier, unknown][],\n> = {\n  stateCreator: StateCreator<StateType, [], Mutators>;\n  isMutative: boolean;\n  name: string;\n};\n\nexport const buildStateCreator = <\n  StateType extends TState,\n  Mps extends [StoreMutatorIdentifier, unknown][] = [],\n  Mcs extends [StoreMutatorIdentifier, unknown][] = [],\n  CreateStoreOptions extends\n    TBaseStoreOptions<StateType> = TBaseStoreOptions<StateType>,\n>(\n  initializer: StateType | StateCreator<StateType, Mps, Mcs>,\n  options: CreateStoreOptions\n) => {\n  type Mutators = [...DefaultMutators<StateType, CreateStoreOptions>, ...Mcs];\n  const {\n    name,\n    devtools: devtoolsOptions,\n    immer: immerOptions,\n    mutative: mutativeOptions,\n    persist: persistOptions,\n    isMutativeState,\n  } = options;\n\n  const middlewares: TMiddleware[] = [];\n\n  const devtoolsConfig = getOptions(devtoolsOptions);\n  if (devtoolsConfig.enabled) {\n    middlewares.push((config) =>\n      devToolsMiddleware(config, {\n        ...devtoolsConfig,\n        name: devtoolsConfig?.name ?? name,\n      })\n    );\n  }\n\n  const persistConfig = getOptions(persistOptions);\n  if (persistConfig.enabled) {\n    middlewares.push((config) =>\n      persistMiddleware(config, {\n        ...persistConfig,\n        name: persistConfig.name ?? name,\n      })\n    );\n  }\n\n  const immerConfig = getOptions(immerOptions);\n  if (immerConfig.enabled) {\n    middlewares.push((config) => immerMiddleware(config, immerConfig));\n  }\n\n  const mutativeConfig = getOptions(mutativeOptions);\n  if (mutativeConfig.enabled) {\n    middlewares.push((config) => mutativeMiddleware(config, mutativeConfig));\n  }\n\n  const stateCreator = middlewares\n    .reverse()\n    .reduce(\n      (creator, middleware) => middleware(creator),\n      (typeof initializer === 'function'\n        ? initializer\n        : () => initializer) as StateCreator<StateType>\n    ) as unknown as StateCreator<StateType, [], Mutators>;\n\n  const isMutative =\n    isMutativeState || immerConfig.enabled || mutativeConfig.enabled;\n\n  return {\n    stateCreator: subscribeWithSelector(stateCreator),\n    isMutative,\n    name,\n  } as unknown as BuildStateCreatorResult<StateType, Mutators>;\n};\n","import { StoreMutatorIdentifier } from 'zustand';\n\nimport { TBaseStateApiForBuilder, TStoreApiGet } from '../types/baseStore';\nimport { TCreatedStoreMutateType, TState } from '../types/utils';\n\nimport type {\n  AnyFunction,\n  TStoreApiSet,\n  TStoreApiSubscribe,\n} from '../types/baseStore';\n\nexport const createBaseApi = <\n  StateType extends TState,\n  Mutators extends [StoreMutatorIdentifier, unknown][],\n  TActions extends Record<string, AnyFunction> = {},\n  TSelectors extends Record<string, AnyFunction> = {},\n>(\n  store: TCreatedStoreMutateType<StateType, Mutators>,\n  {\n    name,\n    isMutative,\n  }: {\n    name: string;\n    isMutative: boolean;\n  }\n) => {\n  const get: TStoreApiGet<StateType, Mutators, TSelectors> = ((key: string) => {\n    if (key === 'state') {\n      return store.getState();\n    }\n\n    return store.getState()[key as keyof StateType];\n  }) as TStoreApiGet<StateType, Mutators, TSelectors>;\n\n  const set: TStoreApiSet<StateType, Mutators, TActions> = ((\n    key: string,\n    value: any\n  ) => {\n    if (key === 'state') {\n      return (store.setState as AnyFunction)(value);\n    }\n\n    const typedKey = key as keyof StateType;\n    const prevValue = store.getState()[typedKey];\n\n    const shouldInvokeUpdater =\n      typeof value === 'function' &&\n      prevValue !== undefined &&\n      prevValue !== null &&\n      typeof prevValue !== 'function';\n\n    if (shouldInvokeUpdater) {\n      value = value(prevValue);\n    }\n    if (prevValue === value) return;\n\n    const actionKey = key.replace(/^\\S/, (s) => s.toUpperCase());\n    const debugLog = name ? `@@${name}/set${actionKey}` : undefined;\n\n    (store.setState as AnyFunction)(\n      isMutative\n        ? (draft: StateType) => {\n            draft[typedKey] = value;\n          }\n        : { [typedKey]: value },\n      undefined,\n      debugLog\n    );\n  }) as TStoreApiSet<StateType, Mutators, TActions>;\n\n  const subscribe: TStoreApiSubscribe<StateType, Mutators, TSelectors> = ((\n    key: string,\n    selectorOrListener: AnyFunction,\n    listener?: AnyFunction,\n    options?: any\n  ) => {\n    if (key === 'state') {\n      if (!listener) {\n        return (store.subscribe as AnyFunction)(selectorOrListener);\n      }\n\n      return (store.subscribe as AnyFunction)(\n        selectorOrListener,\n        listener,\n        options\n      );\n    }\n\n    let wrappedSelector: AnyFunction;\n    let wrappedListener: AnyFunction;\n    let subscribeOptions: any;\n\n    if (listener) {\n      wrappedSelector = (state: StateType) =>\n        selectorOrListener(state[key as keyof StateType]);\n      wrappedListener = listener;\n      subscribeOptions = options;\n    } else {\n      wrappedSelector = (state: StateType) => state[key as keyof StateType];\n      wrappedListener = selectorOrListener;\n      subscribeOptions = options;\n    }\n\n    return (store.subscribe as AnyFunction)(\n      wrappedSelector,\n      wrappedListener,\n      subscribeOptions\n    );\n  }) as TStoreApiSubscribe<StateType, Mutators, TSelectors>;\n\n  return {\n    get,\n    set,\n    subscribe,\n    store,\n    name,\n    actions: {} as TActions,\n    selectors: {} as TSelectors,\n  } as TBaseStateApiForBuilder<StateType, Mutators, TActions, TSelectors>;\n};\n","import { extendActions } from './extendActions';\nimport { extendSelectors } from './extendSelectors';\n\nimport type {\n  AnyFunction,\n  TBaseStateApi,\n  TBaseStateApiForBuilder,\n} from '../types/baseStore';\nimport type { TState } from '../types/utils';\nimport type { StoreMutatorIdentifier } from 'zustand';\n\ntype StoreFactoryOverrides<\n  StateType extends TState,\n  Mutators extends [StoreMutatorIdentifier, unknown][],\n  TActions extends Record<string, AnyFunction>,\n  TSelectors extends Record<string, AnyFunction>,\n> = {\n  extendSelectors?: (\n    builder: any,\n    api: TBaseStateApiForBuilder<StateType, Mutators, TActions, TSelectors>\n  ) => TBaseStateApiForBuilder<\n    StateType,\n    Mutators,\n    TActions,\n    TSelectors\n  >;\n  extendActions?: (\n    builder: any,\n    api: TBaseStateApiForBuilder<StateType, Mutators, TActions, TSelectors>\n  ) => TBaseStateApiForBuilder<\n    StateType,\n    Mutators,\n    TActions,\n    TSelectors\n  >;\n};\n\nexport const storeFactory = <\n  StateType extends TState,\n  Mutators extends [StoreMutatorIdentifier, unknown][] = [],\n  TActions extends Record<string, AnyFunction> = {},\n  TSelectors extends Record<string, AnyFunction> = {},\n>(\n  api: TBaseStateApiForBuilder<StateType, Mutators, TActions, TSelectors>,\n  overrides?: StoreFactoryOverrides<StateType, Mutators, TActions, TSelectors>\n): TBaseStateApi<StateType, Mutators, TActions, TSelectors> => {\n  const extendSelectorsImpl = overrides?.extendSelectors ?? extendSelectors;\n  const extendActionsImpl = overrides?.extendActions ?? extendActions;\n\n  return {\n    ...api,\n    actions: api.actions || ({} as TActions),\n    extendSelectors: (builder) =>\n      storeFactory(\n        extendSelectorsImpl(builder, api) as any,\n        overrides\n      ),\n    extendActions: (builder) =>\n      storeFactory(extendActionsImpl(builder, api) as any, overrides),\n  } as TBaseStateApi<StateType, Mutators, TActions, TSelectors>;\n};\n"],"mappings":"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","names":[]}