{"version":3,"sources":["../../src/createStorage/index.ts"],"names":["_storage","key","toKey","_getItem","_arg1","_arg2","_keys","_arg3"],"mappings":"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","file":"chunk-JIGZATOG.cjs","sourcesContent":["import toKey, { type PrimitiveOrNested } from 'keyweaver';\nimport type {\n  AsyncState,\n  LoadableState,\n  State,\n  Storage,\n  AsyncStateOptions,\n  RequestableStateOptions,\n  PollableStateOptions,\n  LoadableStateOptions,\n  WithInitModule,\n  PaginatedStorage,\n  PollableStateScope,\n  PollableState,\n  LoadableStateScope,\n  AsyncStateScope,\n  StateScope,\n  PollableMethods,\n  StorageRecord,\n} from '../types';\nimport type createState from '../createState';\nimport type createAsyncState from '../createAsyncState';\nimport type createStateScope from '../createStateScope';\nimport type createAsyncStateScope from '../createAsyncStateScope';\nimport type createRequestableState from '../createRequestableState';\nimport type createRequestableStateScope from '../createRequestableStateScope';\nimport type createPollableState from '../createPollableState';\nimport type createPollableStateScope from '../createPollableStateScope';\nimport type createPaginatedStorage from '../createPaginatedStorage';\nimport type {\n  PaginatedPollableNestedStateArgs,\n  PaginatedPollableStateArgs,\n  PaginatedRequestableNestedStateArgs,\n  PaginatedRequestableStateArgs,\n} from '../createPaginatedStorage';\n\ntype StateCreator = typeof createState | typeof createStateScope;\n\ntype GetStateArgs<\n  CreateState extends StateCreator,\n  T,\n  Keys extends PrimitiveOrNested[],\n  ParentKeys extends PrimitiveOrNested[] = [],\n> = WithInitModule<\n  T,\n  [\n    createState: CreateState,\n    defaultValue?: T | ((keys: [...ParentKeys, ...Keys]) => T),\n  ]\n>;\n\ntype AsyncStateCreator = typeof createAsyncState | typeof createAsyncStateScope;\n\ntype AsyncGetStateArgs<\n  CreateState extends AsyncStateCreator,\n  T,\n  Keys extends PrimitiveOrNested[],\n  ParentKeys extends PrimitiveOrNested[] = [],\n> = WithInitModule<\n  T | undefined,\n  [\n    createState: CreateState,\n    options?: AsyncStateOptions<T, [...ParentKeys, ...Keys]>,\n  ]\n>;\n\ntype LoadableStateArgs<\n  CreateState extends AsyncStateCreator,\n  T,\n  E,\n  Control,\n  Keys extends PrimitiveOrNested[],\n  ParentKeys extends PrimitiveOrNested[] = [],\n> = WithInitModule<\n  T | undefined,\n  [\n    createState: CreateState,\n    options: LoadableStateOptions<T, E, Control, [...ParentKeys, ...Keys]>,\n  ]\n>;\n\ntype RequestableStateCreator =\n  | typeof createRequestableState\n  | typeof createRequestableStateScope;\n\ntype RequestableStateArgs<\n  CreateState extends RequestableStateCreator,\n  T,\n  E,\n  Keys extends PrimitiveOrNested[],\n  ParentKeys extends PrimitiveOrNested[] = [],\n> = WithInitModule<\n  T | undefined,\n  [\n    createState: CreateState,\n    options: RequestableStateOptions<T, E, [...ParentKeys, ...Keys]>,\n  ]\n>;\n\ntype PollableStateCreator =\n  | typeof createPollableState\n  | typeof createPollableStateScope;\n\ntype PollableStateArgs<\n  CreateState extends PollableStateCreator,\n  T,\n  E,\n  Keys extends PrimitiveOrNested[],\n  ParentKeys extends PrimitiveOrNested[] = [],\n> = WithInitModule<\n  T | undefined,\n  [\n    createState: CreateState,\n    options: PollableStateOptions<T, E, [...ParentKeys, ...Keys]>,\n  ]\n>;\n\ntype StateCreationArguments<\n  T extends State,\n  Keys extends PrimitiveOrNested[],\n  ParentKeys extends PrimitiveOrNested[],\n> = T extends\n  | LoadableState<infer V, infer E, infer C>\n  | LoadableStateScope<infer V, infer E, infer C>\n  ? C extends PollableMethods\n    ? PollableStateArgs<\n        T extends LoadableState\n          ? typeof createPollableState\n          : typeof createPollableStateScope,\n        V,\n        E,\n        Keys,\n        ParentKeys\n      >\n    : [C] extends [never]\n      ?\n          | RequestableStateArgs<\n              T extends LoadableState\n                ? typeof createRequestableState\n                : typeof createRequestableStateScope,\n              V,\n              E,\n              Keys,\n              ParentKeys\n            >\n          | LoadableStateArgs<\n              T extends LoadableState\n                ? typeof createAsyncState\n                : typeof createAsyncStateScope,\n              V,\n              E,\n              never,\n              Keys,\n              ParentKeys\n            >\n      : LoadableStateArgs<\n          T extends LoadableState\n            ? typeof createAsyncState\n            : typeof createAsyncStateScope,\n          V,\n          E,\n          C,\n          Keys,\n          ParentKeys\n        >\n  : T extends AsyncState<infer V>\n    ? AsyncGetStateArgs<\n        T extends AsyncStateScope\n          ? typeof createAsyncStateScope\n          : typeof createAsyncState,\n        V,\n        Keys,\n        ParentKeys\n      >\n    : T extends State<infer V>\n      ? GetStateArgs<\n          T extends StateScope ? typeof createStateScope : typeof createState,\n          V,\n          Keys,\n          ParentKeys\n        >\n      : never;\n\ntype PaginatedStorageArgs<\n  T extends PaginatedStorage<any>,\n  Keys extends PrimitiveOrNested[],\n  ParentKeys extends PrimitiveOrNested[],\n> =\n  T extends PaginatedStorage<infer S>\n    ? WithCreatePaginatedStorage<\n        S extends PollableStateScope<infer V, infer E>\n          ? PaginatedPollableNestedStateArgs<V, E, [...ParentKeys, Keys]>\n          : S extends PollableState<infer V, infer E>\n            ? PaginatedPollableStateArgs<V, E, [...ParentKeys, Keys]>\n            : S extends LoadableStateScope<infer V, infer E>\n              ? PaginatedRequestableNestedStateArgs<V, E, [...ParentKeys, Keys]>\n              : S extends LoadableState<infer V, infer E>\n                ? PaginatedRequestableStateArgs<V, E, [...ParentKeys, Keys]>\n                : never\n      >\n    : never;\n\ntype StorageRecordArgs<\n  T extends StorageRecord,\n  Keys extends PrimitiveOrNested[],\n  ParentKeys extends PrimitiveOrNested[] = [],\n> = {\n  [key in keyof T]: T[key] extends State\n    ? StateCreationArguments<T[key], Keys, ParentKeys>\n    : T[key] extends Storage<infer S, infer K>\n      ? S extends StorageRecord\n        ? WithCreateStateStorage<\n            [StorageRecordArgs<S, K, [...ParentKeys, ...Keys]>]\n          >\n        : S extends State\n          ? WithCreateStateStorage<\n              StateCreationArguments<S, K, [...ParentKeys, ...Keys]>\n            >\n          : S extends PaginatedStorage<any>\n            ? WithCreateStateStorage<\n                PaginatedStorageArgs<S, K, [...ParentKeys, ...Keys]>\n              >\n            : never\n      : never;\n};\n\ntype WithCreatePaginatedStorage<T extends any[]> = [\n  typeof createPaginatedStorage,\n  ...T,\n];\n\ntype WithCreateStateStorage<T extends any[]> = [CreateStorage, ...T];\n\ninterface CreateStorage {\n  <T, Keys extends PrimitiveOrNested[], E = any, Control = never>(\n    ...args: LoadableStateArgs<\n      typeof createAsyncStateScope,\n      T,\n      E,\n      Control,\n      Keys\n    >\n  ): Storage<LoadableStateScope<T, E, Control>, Keys>;\n  <T, Keys extends PrimitiveOrNested[], E = any, Control = never>(\n    ...args: LoadableStateArgs<typeof createAsyncState, T, E, Control, Keys>\n  ): Storage<LoadableState<T, E, Control>, Keys>;\n\n  <T, Keys extends PrimitiveOrNested[], E = any>(\n    ...args: PollableStateArgs<typeof createPollableStateScope, T, E, Keys>\n  ): Storage<PollableStateScope<T, E>, Keys>;\n  <T, Keys extends PrimitiveOrNested[], E = any>(\n    ...args: PollableStateArgs<typeof createPollableState, T, E, Keys>\n  ): Storage<PollableState<T, E>, Keys>;\n\n  <T, Keys extends PrimitiveOrNested[], E = any>(\n    ...args: AsyncGetStateArgs<typeof createAsyncStateScope, T, Keys>\n  ): Storage<AsyncStateScope<T, E>, Keys>;\n  <T, Keys extends PrimitiveOrNested[], E = any>(\n    ...args: AsyncGetStateArgs<typeof createAsyncState, T, Keys>\n  ): Storage<AsyncState<T, E>, Keys>;\n\n  <T, Keys extends PrimitiveOrNested[], E = any>(\n    ...args: RequestableStateArgs<\n      typeof createRequestableStateScope,\n      T,\n      E,\n      Keys\n    >\n  ): Storage<LoadableStateScope<T, E>, Keys>;\n  <T, Keys extends PrimitiveOrNested[], E = any>(\n    ...args: RequestableStateArgs<typeof createRequestableState, T, E, Keys>\n  ): Storage<LoadableState<T, E>, Keys>;\n\n  <T, Keys extends PrimitiveOrNested[]>(\n    ...args: GetStateArgs<typeof createStateScope, T, Keys>\n  ): Storage<StateScope<T>, Keys>;\n  <T, Keys extends PrimitiveOrNested[]>(\n    ...args: GetStateArgs<typeof createState, T, Keys>\n  ): Storage<StateScope<T>, Keys>;\n\n  <T extends StorageRecord, Keys extends PrimitiveOrNested[]>(\n    obj: StorageRecordArgs<T, Keys>\n  ): Storage<T, Keys>;\n\n  <T, Keys extends PrimitiveOrNested[], E = any>(\n    ...args: WithCreatePaginatedStorage<\n      PaginatedRequestableStateArgs<T, E, Keys>\n    >\n  ): Storage<PaginatedStorage<LoadableState<T, E>>, Keys>;\n  <T, Keys extends PrimitiveOrNested[], E = any>(\n    ...args: WithCreatePaginatedStorage<\n      PaginatedRequestableNestedStateArgs<T, E, Keys>\n    >\n  ): Storage<PaginatedStorage<LoadableStateScope<T, E>>, Keys>;\n}\n\nfunction _delete(this: Storage<any, any>, ...keys: PrimitiveOrNested[]) {\n  let item = this._storage;\n\n  const l = keys.length - 1;\n\n  for (let i = 0; i < l; i++) {\n    let key = keys[i];\n\n    if (!item.has(key)) {\n      if (key && typeof key == 'object') {\n        const strKey = toKey(key);\n\n        if (item.has(strKey)) {\n          key = item.get(strKey)!;\n        } else {\n          return;\n        }\n      } else {\n        return;\n      }\n    }\n\n    item = item.get(key)!;\n  }\n\n  const key = keys[l];\n\n  if (item.has(key)) {\n    item.delete(key);\n  } else if (key && typeof key == 'object') {\n    const strKey = toKey(key);\n\n    if (item.has(strKey)) {\n      item.delete(item.get(strKey)!);\n\n      item.delete(strKey);\n    }\n  }\n}\n\nfunction get(this: Storage<any, any>, ...keys: any[]): any {\n  const l = keys.length;\n\n  const self = this;\n\n  let item = self._storage;\n\n  for (let i = 0; i < l; i++) {\n    const key = keys[i];\n\n    if (item.has(key)) {\n      item = item.get(key)!;\n\n      continue;\n    }\n\n    if (key && typeof key == 'object') {\n      const strKey = toKey(key);\n\n      if (item.has(strKey)) {\n        const prevKey = item.get(strKey)!;\n\n        const prevItem = item.get(prevKey)!;\n\n        item.delete(prevKey);\n\n        item.set(key, prevItem);\n\n        item.set(strKey, key);\n\n        item = prevItem;\n\n        continue;\n      }\n\n      item.set(strKey, key);\n    }\n\n    const parentItem = item;\n\n    if (i < l - 1) {\n      item = new Map();\n    } else if (self._getItem.length != 4) {\n      item = self._getItem(\n        self._arg1,\n        self._arg2,\n        self._keys ? self._keys.concat(keys) : keys\n      );\n    } else {\n      item = self._getItem(\n        self._arg1,\n        self._arg2,\n        self._arg3,\n        self._keys ? self._keys.concat(keys) : keys\n      );\n    }\n\n    parentItem.set(key, item);\n  }\n\n  return item;\n}\n\nconst createStorageRecord = (\n  obj: Record<string, any[]>,\n  _: never,\n  keys: PrimitiveOrNested[]\n) =>\n  Object.keys(obj).reduce((acc, key) => {\n    const item = obj[key];\n\n    const a0 = item[0];\n\n    return {\n      ...acc,\n      [key]:\n        a0 != createStorage\n          ? (a0 as Function).length != 4\n            ? a0(item[1], item[2], keys)\n            : a0(item[1], item[2], item[3], keys)\n          : a0(item[1], item[2], item[3], item[4], keys),\n    };\n  }, {});\n\nconst createStorage: CreateStorage = (\n  arg1: any,\n  arg2?: unknown,\n  arg3?: any,\n  arg4?: any,\n  keys?: any[]\n): any => {\n  return (\n    typeof arg1 != 'object'\n      ? {\n          _storage: new Map(),\n          delete: _delete,\n          get,\n          _getItem: arg1,\n          _arg1: arg2,\n          _arg2: arg3,\n          _arg3: arg4,\n          _keys: keys,\n        }\n      : {\n          _storage: new Map(),\n          delete: _delete,\n          get,\n          _getItem: createStorageRecord,\n          _arg1: arg1,\n          _keys: keys,\n        }\n  ) as Storage<any, any>;\n};\n\nexport type { Storage };\n\nexport default createStorage;\n"]}