{"version":3,"file":"gundb-react-hooks.modern.mjs","sources":["../../src/index.ts"],"sourcesContent":["// @ts-ignore\nimport React, {\n  useState,\n  useEffect,\n  useReducer,\n  useRef,\n  useMemo,\n  useCallback,\n  useContext,\n  createContext,\n} from 'react';\n\n// Enhanced TypeScript definitions\nexport interface IGunChainReference<T = any> {\n  get(key: string): IGunChainReference<T>;\n  put(\n    data: T,\n    callback?: (ack: { err?: string; ok?: any }) => void,\n  ): IGunChainReference<T>;\n  on(\n    callback: (data: T, key: string, message?: any, event?: any) => void,\n  ): () => void;\n  once(callback: (data: T, key: string) => void): void;\n  set(\n    data: T,\n    callback?: (ack: { err?: string; ok?: any }) => void,\n  ): IGunChainReference<T>;\n  map(): IGunChainReference<T>;\n  open?(\n    callback: (data: T, key: string, message?: any, event?: any) => void,\n  ): void;\n  user(soul?: string): IGunUserReference;\n  off(): void;\n  toString(): string;\n}\n\nexport interface IGunUserReference extends IGunChainReference {\n  is: KeyPair | null;\n  auth(keypair: KeyPair, callback?: (ack: any) => void): void;\n  create(keypair: KeyPair, callback?: (ack: any) => void): void;\n  leave(): void;\n}\n\nexport interface GunError {\n  err: string;\n  code?: string | number;\n  context?: string;\n}\n\nexport type ValidGunData = string | number | boolean | object | null;\n\n// Legacy types for backward compatibility\nexport type GunStatic = any;\nexport type GunRef = IGunChainReference | null;\nexport type NamespacedRef = IGunUserReference;\n\nexport type KeyPair = {\n  pub: string;\n  priv: string;\n  epub: string;\n  epriv: string;\n};\n\n// Auth-related types\nexport type Storage = {\n  getItem: (key: string) => any;\n  setItem: (key: string, data: string) => any;\n  removeItem: (key: string) => any;\n};\n\nexport type AuthContextType = {\n  gun: IGunChainReference;\n  user: IGunUserReference;\n  login: (keys?: undefined | string | KeyPair) => void;\n  logout: (onLoggedOut?: () => void) => void;\n  sea: any;\n  appKeys: undefined | string | KeyPair;\n  isLoggedIn: boolean;\n  newGunInstance: (opts?: GunOptions) => IGunChainReference;\n};\n\nexport type AuthProviderOpts = {\n  Gun: any;\n  sea: any;\n  keyFieldName?: string;\n  storage: Storage;\n  gunOpts: GunOptions;\n  children: React.ReactNode;\n};\n\nexport type Options = {\n  appKeys?: undefined | string | KeyPair;\n  sea?: any;\n  interval?: number;\n  useOpen?: boolean;\n};\n\nexport type NodeData<T extends ValidGunData> = T & {\n  readonly nodeID: string;\n  readonly _?: { '#': string; '>': Record<string, number> };\n};\n\n// Enhanced legacy type for backward compatibility\nexport type NodeT<T> = T & { nodeID: string; [key: string]: any };\n\nexport type ActionType<T> =\n  | { type: 'add'; data: NodeT<T> | NodeT<T>[] }\n  | { type: 'update'; data: NodeT<T> }\n  | { type: 'remove'; data: { nodeID: string } };\n\nexport type UpdateType = {\n  id: string;\n  data: any;\n};\n\nexport interface GunOptions\n  extends Partial<{\n    file: string;\n    web: any;\n    s3: {\n      key: any;\n      secret: any;\n      bucket: any;\n    };\n    peers: string[] | Record<string, {}>;\n    radisk: boolean;\n    localStorage: boolean;\n    uuid(): string;\n    [key: string]: any;\n  }> {}\n\nexport interface CollectionState<T> {\n  collection: Map<string, T>;\n  sorted?: T[];\n  infiniteScrolling?: {\n    isFetching: boolean;\n    lastFetched: string;\n    reverse: boolean;\n  };\n}\n\n// Hook return types\nexport interface UseGunStateReturn<T> {\n  fields: T;\n  put: (data: Partial<T>) => Promise<void>;\n  remove: (field: string) => Promise<void>;\n  error: GunError | null;\n  isLoading: boolean;\n  isConnected: boolean;\n}\n\nexport interface UseGunCollectionReturn<T> {\n  collection: Map<string, NodeT<T>>;\n  items: NodeT<T>[];\n  addToSet: (data: T, nodeID?: string) => Promise<void>;\n  updateInSet: (nodeID: string, data: Partial<T>) => Promise<void>;\n  removeFromSet: (nodeID: string) => Promise<void>;\n  error: GunError | null;\n  isLoading: boolean;\n  count: number;\n}\n\nexport interface PaginationOptions<T> extends Options {\n  pageSize?: number;\n  currentPage?: number;\n  sortBy?: keyof T | ((a: NodeT<T>, b: NodeT<T>) => number);\n  sortOrder?: 'asc' | 'desc';\n  filter?: (item: NodeT<T>) => boolean;\n  preloadPages?: number;\n}\n\nexport interface UsePaginatedCollectionReturn<T>\n  extends UseGunCollectionReturn<T> {\n  // Pagination state\n  currentPage: number;\n  totalPages: number;\n  hasNextPage: boolean;\n  hasPrevPage: boolean;\n  pageSize: number;\n\n  // Pagination actions\n  nextPage: () => void;\n  prevPage: () => void;\n  goToPage: (page: number) => void;\n  setPageSize: (size: number) => void;\n\n  // Current page data\n  currentPageItems: NodeT<T>[];\n  currentPageCount: number;\n\n  // Optimizations\n  isLoadingPage: boolean;\n  preloadedPages: Set<number>;\n}\n\nexport const encryptData = async (\n  data: any,\n  keys: undefined | string | KeyPair,\n  sea: any,\n) => {\n  try {\n    return keys && sea ? await sea.encrypt(data, keys) : data;\n  } catch (error) {\n    console.warn('Failed to encrypt data:', error);\n    return data;\n  }\n};\n\nexport const decryptData = async (\n  data: any,\n  keys: undefined | string | KeyPair,\n  sea: any,\n) => {\n  try {\n    return keys && sea ? await sea.decrypt(data, keys) : data;\n  } catch (error) {\n    console.warn('Failed to decrypt data:', error);\n    return data;\n  }\n};\n\n// Utility functions\nconst debounce = <T extends (...args: any[]) => any>(\n  func: T,\n  wait: number,\n): ((...args: Parameters<T>) => void) => {\n  let timeout: ReturnType<typeof setTimeout> | null = null;\n\n  return (...args: Parameters<T>) => {\n    if (timeout) {\n      clearTimeout(timeout);\n    }\n    timeout = setTimeout(() => func(...args), wait);\n  };\n};\n\nconst validateNodeID = (nodeID: string): void => {\n  if (!nodeID || typeof nodeID !== 'string' || nodeID.trim().length === 0) {\n    throw new Error('Invalid nodeID: must be a non-empty string');\n  }\n};\n\nconst validateData = <T>(data: T, context: string): void => {\n  if (data === undefined) {\n    throw new Error(`Data cannot be undefined in ${context}`);\n  }\n};\n\nconst warnInDevelopment = (condition: boolean, message: string): void => {\n  // @ts-ignore\n  if (typeof window !== 'undefined' && condition) {\n    console.warn(`[GunDB Hooks Warning] ${message}`);\n  }\n};\n\nexport const debouncedUpdates = (\n  dispatcher: any,\n  type = 'object',\n  timeout = 100,\n) => {\n  let updates: any[] = [];\n  let handler: any;\n\n  const updateFunction = (update: UpdateType) => {\n    updates.push(update);\n    if (!handler) {\n      handler = setTimeout(() => {\n        let newStateSlice = updates.reduce(\n          (previousState, { id, data }) => {\n            if (type === 'object') {\n              previousState[id] = data;\n            } else {\n              previousState.set(id, data);\n            }\n            return previousState;\n          },\n          type === 'object' ? {} : new Map(),\n        );\n        dispatcher(newStateSlice);\n        updates = [];\n        handler = null;\n      }, timeout);\n    }\n\n    return () => {\n      clearTimeout(handler);\n      updates = [];\n      handler = null;\n    };\n  };\n\n  // Add cleanup method to the function\n  updateFunction.cleanup = () => {\n    if (handler) {\n      clearTimeout(handler);\n      updates = [];\n      handler = null;\n    }\n  };\n\n  return updateFunction;\n};\n\nexport const useIsMounted = () => {\n  const isMounted = useRef(false);\n  useEffect(() => {\n    isMounted.current = true;\n    return () => {\n      isMounted.current = false;\n    };\n  }, []);\n  return isMounted;\n};\n\nexport const nodeReducer = <T>(\n  state: NodeT<T>,\n  { data, type }: ActionType<T>,\n): T => {\n  switch (type) {\n    case 'add':\n      return { ...state, ...data };\n    case 'remove':\n      delete state[data.nodeID];\n      return { ...state };\n    default:\n      throw new Error();\n  }\n};\n\nexport const collectionReducer = <T>(\n  state: CollectionState<T>,\n  { data, type }: ActionType<T>,\n): CollectionState<T> => {\n  switch (type) {\n    case 'add':\n      const newCollectionForAdd = new Map(state.collection);\n      if (Array.isArray(data)) {\n        data.forEach((item: NodeT<T>) => {\n          newCollectionForAdd.set(item.nodeID, item);\n        });\n      } else {\n        newCollectionForAdd.set(data.nodeID, data);\n      }\n      return {\n        ...state,\n        collection: newCollectionForAdd,\n      };\n    case 'update':\n      if (!Array.isArray(data)) {\n        const newCollectionForUpdate = new Map(state.collection);\n        newCollectionForUpdate.set(data.nodeID, data);\n        return {\n          ...state,\n          collection: newCollectionForUpdate,\n        };\n      }\n      return state;\n    case 'remove':\n      const newCollectionForRemove = new Map(state.collection);\n      newCollectionForRemove.delete(data.nodeID);\n      return {\n        ...state,\n        collection: newCollectionForRemove,\n      };\n    default:\n      throw new Error(`Unknown action type: ${type}`);\n  }\n};\n\nexport const useSafeReducer = <T>(\n  reducer: any,\n  initialState: T,\n): [T, Function] => {\n  const [state, dispatch] = useReducer<React.Reducer<T, ActionType<T>>>(\n    reducer,\n    initialState,\n  );\n  const isMounted = useIsMounted();\n\n  function safeDispatch(args: ActionType<T>) {\n    if (isMounted.current) {\n      dispatch(args);\n    }\n  }\n\n  return [state, safeDispatch];\n};\n\nexport const useGun = (Gun: GunStatic, opts: GunOptions) => {\n  const [gun, setGun] = useState(Gun({ ...opts }));\n\n  useEffect(() => {\n    if (opts) {\n      setGun(Gun({ ...opts }));\n    }\n  }, [Gun, opts]);\n\n  return gun;\n};\n\nexport const useGunNamespace = (gun: GunRef, soul?: string) => {\n  const [namespace, setNamespace] = useState(\n    gun && soul ? gun.user(soul) : gun ? gun.user() : null,\n  );\n  useEffect(() => {\n    if (gun && !namespace) {\n      setNamespace(soul ? gun.user(soul) : gun.user());\n    }\n  }, [namespace, gun, soul]);\n  return namespace;\n};\n\nexport const useGunKeyAuth = (\n  gun: GunRef,\n  keys: KeyPair,\n  triggerAuth: boolean = true,\n) => {\n  // Will attempt to perform a login (when triggerAuth is set to true),\n  // or, if false, returns a namespaced gun node\n  const namespacedGraph = useGunNamespace(gun);\n  const [isLoggedIn, setIsLoggedIn] = useState(false);\n  const [error, setError] = useState<GunError | null>(null);\n\n  useEffect(() => {\n    if (!gun) return;\n\n    // @ts-ignore - Gun types are not properly defined\n    const off = gun.on('auth', () => {\n      setIsLoggedIn(true);\n      setError(null);\n    });\n\n    // Ensure we always return a function for cleanup\n    return () => {\n      if (typeof off === 'function') {\n        try {\n          off();\n        } catch (e) {}\n      } else if (typeof (gun as any).off === 'function') {\n        try {\n          (gun as any).off();\n        } catch (e) {}\n      }\n    };\n  }, [gun]);\n\n  // Reset isLoggedIn when keys are cleared or triggerAuth is false\n  useEffect(() => {\n    if (!keys || !triggerAuth) {\n      setIsLoggedIn(false);\n      setError(null);\n    }\n  }, [keys, triggerAuth]);\n\n  // Check if user is still authenticated\n  useEffect(() => {\n    if (namespacedGraph && namespacedGraph.is) {\n      setIsLoggedIn(true);\n    } else if (namespacedGraph && !namespacedGraph.is && isLoggedIn) {\n      setIsLoggedIn(false);\n    }\n  }, [namespacedGraph, isLoggedIn]);\n\n  useEffect(() => {\n    if (namespacedGraph && !namespacedGraph.is && keys && triggerAuth) {\n      try {\n        namespacedGraph.auth(keys, (ack: any) => {\n          if (ack.err) {\n            setError({\n              err: ack.err,\n              context: 'useGunKeyAuth.auth',\n            });\n          }\n        });\n      } catch (err) {\n        setError({\n          err: err instanceof Error ? err.message : 'Authentication failed',\n          context: 'useGunKeyAuth',\n        });\n      }\n    }\n  }, [triggerAuth, namespacedGraph, keys]);\n\n  return [namespacedGraph, isLoggedIn, error] as const;\n};\n\nexport const useGunKeys = (\n  sea: any,\n  existingKeys?: KeyPair | undefined | null,\n) => {\n  const [newKeys, setNewKeys] = useState<KeyPair | undefined | null>(\n    existingKeys,\n  );\n\n  useEffect(() => {\n    const getKeySet = async () => {\n      const pair: KeyPair = await sea.pair();\n      setNewKeys(pair);\n    };\n\n    if (!newKeys && !existingKeys) {\n      getKeySet().catch(console.error);\n    }\n\n    if (existingKeys) {\n      setNewKeys(existingKeys);\n    }\n  }, [existingKeys, newKeys, sea]);\n\n  return newKeys;\n};\n\nexport const useGunOnNodeUpdated = <T>(\n  ref: GunRef,\n  opts: Options = {\n    appKeys: '',\n    sea: null,\n    useOpen: false,\n  },\n  cb: (data: T, nodeID: string) => void,\n  cleanup?: () => void,\n) => {\n  const { appKeys, sea, useOpen } = opts;\n  const handler = useRef<(() => void) | null>(null);\n  const isMounted = useIsMounted();\n\n  useEffect(() => {\n    if (!ref || !isMounted.current) return;\n\n    const gunCb = async (\n      encryptedField: any,\n      nodeID: string,\n      message: any,\n      event: any,\n    ) => {\n      if (!isMounted.current) return;\n\n      try {\n        let decryptedField = await decryptData(encryptedField, appKeys, sea);\n        cb(decryptedField, nodeID);\n      } catch (error) {\n        console.warn('Failed to decrypt data in useGunOnNodeUpdated:', error);\n      }\n\n      if (!handler.current && event?.off) {\n        handler.current = () => event.off();\n      }\n    };\n\n    if (useOpen) {\n      if (!ref.open) {\n        throw new Error('Please include gun/lib/open.');\n      } else {\n        ref.open(gunCb);\n      }\n    } else {\n      ref.on(gunCb);\n    }\n\n    return () => {\n      if (handler.current) {\n        //cleanup gun .on listener\n        handler.current();\n        handler.current = null;\n      }\n      if (cleanup) {\n        cleanup();\n      }\n    };\n  }, [ref, appKeys, sea, useOpen, cb, cleanup, isMounted]);\n};\n\nexport const useGunState = <T>(\n  ref: GunRef,\n  opts: Options = {\n    appKeys: '',\n    sea: null,\n    interval: 100,\n    useOpen: false,\n  },\n): UseGunStateReturn<T> => {\n  const { appKeys, sea, interval = 100, useOpen } = opts;\n\n  // Memoize the options to prevent unnecessary re-renders\n  const memoizedOpts = useMemo(\n    () => ({\n      appKeys,\n      sea,\n      interval,\n      useOpen,\n    }),\n    [appKeys, sea, interval, useOpen],\n  );\n\n  const [fields, dispatch] = useSafeReducer<T>(nodeReducer, {} as T);\n  const [error, setError] = useState<GunError | null>(null);\n  const [isLoading, setIsLoading] = useState(true);\n  const [isConnected, setIsConnected] = useState(false);\n\n  const debouncedHandlers = useRef<Function[]>([]);\n  const isMounted = useIsMounted();\n\n  // Development warnings\n  useEffect(() => {\n    warnInDevelopment(!ref, 'useGunState: ref is undefined');\n    warnInDevelopment(\n      !!(appKeys && !sea),\n      'useGunState: appKeys provided but no SEA instance',\n    );\n  }, [ref, appKeys, sea]);\n\n  // Memoized updater - stabilize with useCallback\n  const updater = useCallback(\n    debouncedUpdates(\n      (data: any) => {\n        if (isMounted.current) {\n          dispatch({ type: 'add', data });\n          setIsLoading(false);\n          setIsConnected(true);\n          setError(null);\n        }\n      },\n      'object',\n      interval,\n    ),\n    [interval, isMounted],\n  );\n\n  // Connection timeout\n  useEffect(() => {\n    const connectionTimeout = setTimeout(() => {\n      if (isLoading) {\n        setError({\n          err: 'Connection timeout - no data received',\n          context: 'useGunState connection',\n        });\n        setIsLoading(false);\n      }\n    }, 5000); // 5 second timeout\n\n    return () => clearTimeout(connectionTimeout);\n  }, [isLoading]);\n\n  // Memoized callback to prevent infinite re-renders\n  const nodeUpdateCallback = useCallback(\n    (item: any) => {\n      try {\n        if (item && typeof item === 'object') {\n          Object.keys(item).forEach((key) => {\n            let cleanFn = updater({ id: key, data: item[key] });\n            debouncedHandlers.current.push(cleanFn);\n          });\n        }\n      } catch (err) {\n        setError({\n          err: err instanceof Error ? err.message : 'Unknown error',\n          context: 'useGunState data processing',\n        });\n      }\n    },\n    [updater],\n  );\n\n  // Memoized cleanup callback\n  const cleanupCallback = useCallback(() => {\n    if (debouncedHandlers.current.length) {\n      //cleanup timeouts\n      debouncedHandlers.current.forEach((c) => c());\n      debouncedHandlers.current = [];\n    }\n  }, []);\n\n  useGunOnNodeUpdated(ref, memoizedOpts, nodeUpdateCallback, cleanupCallback);\n\n  // Enhanced put with validation and error handling\n  const put = useCallback(\n    async (data: Partial<T>): Promise<void> => {\n      if (!ref) {\n        throw new Error('useGunState: ref is undefined');\n      }\n\n      try {\n        validateData(data, 'useGunState.put');\n        setError(null);\n\n        let encryptedData = await encryptData(data, appKeys, sea);\n\n        await new Promise<void>((resolve, reject) =>\n          ref.put(encryptedData, (ack: any) => {\n            if (ack.err) {\n              const error: GunError = {\n                err: ack.err,\n                context: 'useGunState.put',\n              };\n              setError(error);\n              reject(error);\n            } else {\n              resolve();\n            }\n          }),\n        );\n      } catch (err) {\n        const error: GunError = {\n          err: err instanceof Error ? err.message : 'Unknown error',\n          context: 'useGunState.put',\n        };\n        setError(error);\n        throw error;\n      }\n    },\n    [ref, appKeys, sea],\n  );\n\n  // Enhanced remove with validation\n  const remove = useCallback(\n    async (field: string): Promise<void> => {\n      if (!ref) {\n        throw new Error('useGunState: ref is undefined');\n      }\n\n      try {\n        validateNodeID(field);\n        setError(null);\n\n        await new Promise<void>((resolve, reject) =>\n          ref.put(null, (ack: any) => {\n            if (ack.err) {\n              const error: GunError = {\n                err: ack.err,\n                context: 'useGunState.remove',\n              };\n              setError(error);\n              reject(error);\n            } else {\n              if (isMounted.current) {\n                dispatch({ type: 'remove', data: { nodeID: field } });\n              }\n              resolve();\n            }\n          }),\n        );\n      } catch (err) {\n        const error: GunError = {\n          err: err instanceof Error ? err.message : 'Unknown error',\n          context: 'useGunState.remove',\n        };\n        setError(error);\n        throw error;\n      }\n    },\n    [ref, isMounted],\n  );\n\n  return {\n    fields,\n    put,\n    remove,\n    error,\n    isLoading,\n    isConnected,\n  };\n};\n\nexport const useGunCollectionState = <T extends Record<string, any>>(\n  ref: GunRef,\n  opts: Options = {\n    appKeys: '',\n    sea: null,\n    interval: 100,\n    useOpen: false,\n  },\n): UseGunCollectionReturn<T> => {\n  const { appKeys, sea, interval = 100, useOpen } = opts;\n\n  // Memoize the options to prevent unnecessary re-renders\n  const memoizedOpts = useMemo(\n    () => ({\n      appKeys,\n      sea,\n      interval,\n      useOpen,\n    }),\n    [appKeys, sea, interval, useOpen],\n  );\n\n  const [{ collection }, dispatch] = useSafeReducer<CollectionState<NodeT<T>>>(\n    collectionReducer,\n    {\n      collection: new Map(),\n    },\n  );\n\n  const [error, setError] = useState<GunError | null>(null);\n  const [isLoading, setIsLoading] = useState(true);\n  const debouncedHandlers = useRef<Function[]>([]);\n  const isMounted = useIsMounted();\n\n  // Early return if ref is null/undefined\n  const hasValidRef = Boolean(ref);\n\n  // Development warnings\n  useEffect(() => {\n    warnInDevelopment(!ref, 'useGunCollectionState: ref is undefined');\n    warnInDevelopment(\n      !!(appKeys && !sea),\n      'useGunCollectionState: appKeys provided but no SEA instance',\n    );\n  }, [ref, appKeys, sea]);\n\n  // Set loading to false if no valid ref\n  useEffect(() => {\n    if (!hasValidRef) {\n      setIsLoading(false);\n    }\n  }, [hasValidRef]);\n\n  // Memoized updater - stabilize with useCallback\n  const updater = useCallback(\n    debouncedUpdates(\n      (dataMap: Map<string, NodeT<T>>) => {\n        if (isMounted.current) {\n          // Convert Map to array of items for batch dispatch\n          const items = Array.from(dataMap.values());\n          dispatch({ type: 'add', data: items });\n          setIsLoading(false);\n          setError(null);\n        }\n      },\n      'map',\n      interval,\n    ),\n    [interval, isMounted],\n  );\n\n  // Connection timeout\n  useEffect(() => {\n    const connectionTimeout = setTimeout(() => {\n      if (isLoading) {\n        setError({\n          err: 'Connection timeout - no data received',\n          context: 'useGunCollectionState connection',\n        });\n        setIsLoading(false);\n      }\n    }, 5000);\n\n    return () => clearTimeout(connectionTimeout);\n  }, [isLoading]);\n\n  // Memoized callback to prevent infinite re-renders\n  const nodeUpdateCallback = useCallback(\n    (item: T, nodeID: string) => {\n      if (item && typeof item === 'object') {\n        try {\n          setError(null);\n          let cleanFn = updater({\n            id: nodeID,\n            data: { ...item, nodeID } as NodeT<T>,\n          });\n          debouncedHandlers.current.push(cleanFn);\n        } catch (err) {\n          setError({\n            err: err instanceof Error ? err.message : 'Unknown error',\n            context: 'useGunCollectionState data processing',\n          });\n        }\n      }\n    },\n    [updater],\n  );\n\n  // Memoized cleanup callback\n  const cleanupCallback = useCallback(() => {\n    if (debouncedHandlers.current.length) {\n      //cleanup timeouts\n      debouncedHandlers.current.forEach((c) => c());\n      debouncedHandlers.current = [];\n    }\n  }, []);\n\n  useGunOnNodeUpdated(\n    ref ? ref.map() : null,\n    memoizedOpts,\n    nodeUpdateCallback,\n    cleanupCallback,\n  );\n\n  // Working with Sets - Enhanced CRUD operations\n\n  const updateInSet = useCallback(\n    async (nodeID: string, data: Partial<T>): Promise<void> => {\n      if (!ref) {\n        throw new Error('useGunCollectionState: ref is undefined');\n      }\n\n      try {\n        validateNodeID(nodeID);\n        validateData(data, 'useGunCollectionState.updateInSet');\n        setError(null);\n\n        let encryptedData = await encryptData(data, appKeys, sea);\n        await new Promise<void>((resolve, reject) =>\n          ref.get(nodeID).put(encryptedData, (ack: any) => {\n            if (ack.err) {\n              const error: GunError = {\n                err: ack.err,\n                context: 'useGunCollectionState.updateInSet',\n              };\n              setError(error);\n              reject(error);\n            } else {\n              if (isMounted.current) {\n                dispatch({\n                  type: 'update',\n                  data: { nodeID, ...data } as NodeT<T>,\n                });\n              }\n              resolve();\n            }\n          }),\n        );\n      } catch (err) {\n        const error: GunError = {\n          err: err instanceof Error ? err.message : 'Unknown error',\n          context: 'useGunCollectionState.updateInSet',\n        };\n        setError(error);\n        throw error;\n      }\n    },\n    [ref, appKeys, sea, isMounted],\n  );\n\n  const addToSet = useCallback(\n    async (data: T, nodeID?: string): Promise<void> => {\n      if (!ref) {\n        throw new Error('useGunCollectionState: ref is undefined');\n      }\n\n      try {\n        validateData(data, 'useGunCollectionState.addToSet');\n        setError(null);\n\n        let encryptedData = await encryptData(data, appKeys, sea);\n\n        const promise = nodeID\n          ? new Promise<void>((resolve, reject) =>\n              ref\n                .get(nodeID)\n                .put(encryptedData, (ack: any) =>\n                  ack.err ? reject(new Error(ack.err)) : resolve(),\n                ),\n            )\n          : new Promise<void>((resolve, reject) =>\n              ref.set(encryptedData, (ack: any) =>\n                ack.err ? reject(new Error(ack.err)) : resolve(),\n              ),\n            );\n\n        await promise;\n      } catch (err) {\n        const error: GunError = {\n          err: err instanceof Error ? err.message : 'Unknown error',\n          context: 'useGunCollectionState.addToSet',\n        };\n        setError(error);\n        throw error;\n      }\n    },\n    [ref, appKeys, sea],\n  );\n\n  const removeFromSet = useCallback(\n    async (nodeID: string): Promise<void> => {\n      if (!ref) {\n        throw new Error('useGunCollectionState: ref is undefined');\n      }\n\n      try {\n        validateNodeID(nodeID);\n        setError(null);\n\n        await new Promise<void>((resolve, reject) =>\n          ref.get(nodeID).put(null, (ack: any) => {\n            if (ack.err) {\n              const error: GunError = {\n                err: ack.err,\n                context: 'useGunCollectionState.removeFromSet',\n              };\n              setError(error);\n              reject(error);\n            } else {\n              if (isMounted.current) {\n                dispatch({ type: 'remove', data: { nodeID } });\n              }\n              resolve();\n            }\n          }),\n        );\n      } catch (err) {\n        const error: GunError = {\n          err: err instanceof Error ? err.message : 'Unknown error',\n          context: 'useGunCollectionState.removeFromSet',\n        };\n        setError(error);\n        throw error;\n      }\n    },\n    [ref, isMounted],\n  );\n\n  // Convert Map to Array for easier consumption\n  const items = useMemo(() => Array.from(collection.values()), [collection]);\n\n  const count = useMemo(() => collection.size, [collection]);\n\n  return {\n    collection,\n    items, // More convenient array access\n    addToSet,\n    updateInSet,\n    removeFromSet,\n    error,\n    isLoading,\n    count,\n  };\n};\n\n// Paginated Collection Hook with Optimizations\nexport const useGunCollectionStatePaginated = <T extends Record<string, any>>(\n  ref: GunRef,\n  paginationOpts: PaginationOptions<T> = {},\n): UsePaginatedCollectionReturn<T> => {\n  const {\n    pageSize = 20,\n    sortBy,\n    sortOrder = 'asc',\n    filter,\n    preloadPages = 1,\n    currentPage: initialPage = 0,\n    appKeys = '',\n    sea = null,\n    interval = 100,\n    useOpen = false,\n  } = paginationOpts;\n\n  // Extract Options for the base collection hook - memoize to prevent infinite re-renders\n  const opts: Options = useMemo(\n    () => ({\n      appKeys,\n      sea,\n      interval,\n      useOpen,\n    }),\n    [appKeys, sea, interval, useOpen],\n  );\n\n  const [currentPage, setCurrentPage] = useState(initialPage);\n  const [currentPageItems, setCurrentPageItems] = useState<NodeT<T>[]>([]);\n  const [isLoadingPage, setIsLoadingPage] = useState(false);\n  const [totalItems, setTotalItems] = useState(0);\n\n  // Sync currentPage state with initialPage prop when it changes\n  useEffect(() => {\n    setCurrentPage(initialPage);\n  }, [initialPage]);\n\n  // Cache for pages\n  const pageCache = useRef<Map<number, NodeT<T>[]>>(new Map());\n  const cacheTimestamps = useRef<Map<number, number>>(new Map());\n  const CACHE_TTL = 5 * 60 * 1000; // 5 minutes\n\n  // Use original hook for basic collection management\n  const baseCollection = useGunCollectionState<T>(ref, opts);\n\n  // Cache utilities - memoize to prevent re-creation\n  const getCachedPage = useCallback((page: number): NodeT<T>[] | null => {\n    const cached = pageCache.current.get(page);\n    const timestamp = cacheTimestamps.current.get(page);\n\n    if (cached && timestamp && Date.now() - timestamp < CACHE_TTL) {\n      return cached;\n    }\n    return null;\n  }, []);\n\n  const setCachedPage = useCallback((page: number, items: NodeT<T>[]) => {\n    pageCache.current.set(page, items);\n    cacheTimestamps.current.set(page, Date.now());\n  }, []);\n\n  // Process and sort all items - memoize with stable dependencies\n  const processedItems = useMemo(() => {\n    const allItems = Array.from(baseCollection.collection.values());\n\n    // Apply filtering\n    let filteredItems = filter ? allItems.filter(filter) : allItems;\n\n    // Apply sorting\n    if (sortBy) {\n      filteredItems = [...filteredItems].sort((a, b) => {\n        if (typeof sortBy === 'function') {\n          return sortOrder === 'asc' ? sortBy(a, b) : sortBy(b, a);\n        }\n        const aVal = a[sortBy];\n        const bVal = b[sortBy];\n        let comparison = 0;\n        if (aVal < bVal) comparison = -1;\n        else if (aVal > bVal) comparison = 1;\n        return sortOrder === 'asc' ? comparison : -comparison;\n      });\n    }\n\n    return filteredItems;\n  }, [baseCollection.collection, filter, sortBy, sortOrder]);\n\n  // Update total items when processed items change\n  useEffect(() => {\n    setTotalItems(processedItems.length);\n    // Clear cache when data changes significantly\n    pageCache.current.clear();\n    cacheTimestamps.current.clear();\n  }, [processedItems]);\n\n  // Load specific page - memoize to prevent unnecessary recreations\n  const loadPage = useCallback(\n    async (page: number) => {\n      if (page < 0) return;\n\n      setIsLoadingPage(true);\n\n      try {\n        // Check cache first\n        const cached = getCachedPage(page);\n        if (cached) {\n          setCurrentPageItems(cached);\n          setIsLoadingPage(false);\n          return;\n        }\n\n        // Extract page from processed items\n        const startIndex = page * pageSize;\n        const endIndex = startIndex + pageSize;\n        const pageItems = processedItems.slice(startIndex, endIndex);\n\n        // Cache the page\n        setCachedPage(page, pageItems);\n        setCurrentPageItems(pageItems);\n\n        // Preload adjacent pages\n        for (let i = 1; i <= preloadPages; i++) {\n          const nextPage = page + i;\n          const prevPage = page - i;\n\n          setTimeout(() => {\n            if (\n              nextPage * pageSize < processedItems.length &&\n              !getCachedPage(nextPage)\n            ) {\n              const nextStartIndex = nextPage * pageSize;\n              const nextEndIndex = nextStartIndex + pageSize;\n              const nextPageItems = processedItems.slice(\n                nextStartIndex,\n                nextEndIndex,\n              );\n              setCachedPage(nextPage, nextPageItems);\n            }\n          }, 50 * i);\n\n          setTimeout(() => {\n            if (prevPage >= 0 && !getCachedPage(prevPage)) {\n              const prevStartIndex = prevPage * pageSize;\n              const prevEndIndex = prevStartIndex + pageSize;\n              const prevPageItems = processedItems.slice(\n                prevStartIndex,\n                prevEndIndex,\n              );\n              setCachedPage(prevPage, prevPageItems);\n            }\n          }, 50 * i);\n        }\n      } catch (error) {\n        console.error('Failed to load page:', error);\n      } finally {\n        setIsLoadingPage(false);\n      }\n    },\n    [pageSize, processedItems, preloadPages, getCachedPage, setCachedPage],\n  );\n\n  // Pagination calculations - memoize to prevent recalculations\n  const totalPages = useMemo(\n    () => Math.ceil(totalItems / pageSize),\n    [totalItems, pageSize],\n  );\n  const hasNextPage = useMemo(\n    () => currentPage < totalPages - 1,\n    [currentPage, totalPages],\n  );\n  const hasPrevPage = useMemo(() => currentPage > 0, [currentPage]);\n\n  // Pagination controls - memoize to prevent re-creation\n  const nextPage = useCallback(() => {\n    if (hasNextPage) {\n      const newPage = currentPage + 1;\n      setCurrentPage(newPage);\n      loadPage(newPage);\n    }\n  }, [currentPage, hasNextPage, loadPage]);\n\n  const prevPage = useCallback(() => {\n    if (hasPrevPage) {\n      const newPage = currentPage - 1;\n      setCurrentPage(newPage);\n      loadPage(newPage);\n    }\n  }, [currentPage, hasPrevPage, loadPage]);\n\n  const goToPage = useCallback(\n    (page: number) => {\n      if (page >= 0 && page < totalPages) {\n        setCurrentPage(page);\n        loadPage(page);\n      }\n    },\n    [totalPages, loadPage],\n  );\n\n  const setNewPageSize = useCallback(\n    (size: number) => {\n      if (size <= 0) return;\n\n      // Calculate which item we're currently viewing\n      const currentItemIndex = currentPage * pageSize;\n      // Calculate new page number to maintain position\n      const newPage = Math.floor(currentItemIndex / size);\n\n      setCurrentPage(newPage);\n      pageCache.current.clear(); // Clear cache since page size changed\n      cacheTimestamps.current.clear();\n      loadPage(newPage).catch(console.error);\n    },\n    [currentPage, pageSize, loadPage],\n  );\n\n  // Load current page when page changes or data updates\n  useEffect(() => {\n    if (totalPages > 0) {\n      // Ensure current page is valid\n      if (currentPage >= totalPages) {\n        const newPage = Math.max(0, totalPages - 1);\n        setCurrentPage(newPage);\n        loadPage(newPage).catch(console.error);\n      } else {\n        loadPage(currentPage).catch(console.error);\n      }\n    } else if (processedItems.length > 0) {\n      // Even if totalPages calculation isn't ready, try to load the current page\n      loadPage(currentPage).catch(console.error);\n    }\n  }, [currentPage, totalPages, loadPage, processedItems.length]);\n\n  // Initial load effect - ensure pagination happens on mount\n  useEffect(() => {\n    if (processedItems.length > 0) {\n      loadPage(currentPage).catch(console.error);\n    }\n  }, [processedItems.length]); // Only depend on length to avoid infinite re-renders\n\n  // Real-time updates - update cache when base collection changes\n  // Memoize and debounce this to prevent excessive updates\n  const updatePageCache = useMemo(\n    () =>\n      debounce((updatedItem: NodeT<T>) => {\n        // Only update pages that might contain this item\n        pageCache.current.forEach((page, pageNum) => {\n          const itemIndex = page.findIndex(\n            (item) => item.nodeID === updatedItem.nodeID,\n          );\n          if (itemIndex !== -1) {\n            page[itemIndex] = updatedItem;\n            // Trigger re-render only for current page\n            if (pageNum === currentPage) {\n              setCurrentPageItems([...page]);\n            }\n          }\n        });\n      }, 100),\n    [currentPage],\n  );\n\n  // Watch for changes in base collection to update cache\n  useEffect(() => {\n    if (baseCollection.collection) {\n      Array.from(baseCollection.collection.values()).forEach((item) => {\n        updatePageCache(item);\n      });\n    }\n  }, [baseCollection.collection, updatePageCache]);\n\n  // Memoize preloaded pages to prevent object recreation\n  const preloadedPages = useMemo(\n    () => new Set(Array.from(pageCache.current.keys())),\n    [],\n  );\n\n  return {\n    ...baseCollection,\n    // Override items to return paginated items instead of all items\n    items: currentPageItems,\n    // Override count to return total filtered items count\n    count: totalItems,\n    // Pagination state\n    currentPage,\n    totalPages,\n    hasNextPage,\n    hasPrevPage,\n    pageSize,\n    // Pagination actions\n    nextPage,\n    prevPage,\n    goToPage,\n    setPageSize: setNewPageSize,\n    // Current page data\n    currentPageItems,\n    currentPageCount: currentPageItems.length,\n    // Optimizations\n    isLoadingPage,\n    preloadedPages,\n  };\n};\n\n// Auth Context and Provider\nexport const AuthContext = createContext<AuthContextType | null>(null);\n\nexport const AuthProvider: React.FC<AuthProviderOpts> = ({\n  Gun,\n  sea,\n  keyFieldName = 'keys',\n  storage,\n  gunOpts,\n  children,\n}) => {\n  if (!sea || !Gun || !gunOpts) {\n    throw new Error('Provide gunOpts, Gun and sea');\n  }\n\n  const [{ isReadyToAuth, existingKeys, keyStatus }, setStatuses] = useState<{\n    isReadyToAuth: string;\n    existingKeys: KeyPair | null;\n    keyStatus: string;\n  }>({\n    isReadyToAuth: '',\n    existingKeys: null,\n    keyStatus: '',\n  });\n\n  const gun = useGun(Gun, gunOpts);\n  // new keypair\n  const newKeys = useGunKeys(sea);\n  const [user, isLoggedIn] = useGunKeyAuth(\n    gun,\n    existingKeys || undefined,\n    isReadyToAuth === 'ready',\n  );\n\n  useEffect(() => {\n    if (isLoggedIn && existingKeys && keyStatus === 'new') {\n      const storeKeysEffect = async () => {\n        try {\n          await storage.setItem(keyFieldName, JSON.stringify(existingKeys));\n        } catch (error) {\n          console.error('Failed to store keys:', error);\n        }\n      };\n\n      storeKeysEffect();\n    }\n  }, [isLoggedIn, existingKeys, keyFieldName, storage, keyStatus]);\n\n  useEffect(() => {\n    if (!existingKeys) {\n      const getKeys = async () => {\n        try {\n          const k = await storage.getItem(keyFieldName);\n          const ks = JSON.parse(k || 'null');\n          setStatuses({\n            isReadyToAuth: 'ready',\n            existingKeys: ks,\n            keyStatus: ks ? 'existing' : 'new',\n          });\n        } catch (error) {\n          console.warn('Failed to retrieve keys from storage:', error);\n          setStatuses({\n            isReadyToAuth: 'ready',\n            existingKeys: null,\n            keyStatus: 'new',\n          });\n        }\n      };\n      getKeys();\n    }\n  }, [storage, keyFieldName, existingKeys]);\n\n  const login = useCallback(\n    (keys?: undefined | string | KeyPair) => {\n      // use keys sent by the user or a new set\n      setStatuses({\n        isReadyToAuth: 'ready',\n        existingKeys: (keys as KeyPair) || newKeys || null,\n        keyStatus: 'new',\n      });\n    },\n    [setStatuses, newKeys],\n  );\n\n  const logout = useCallback(\n    (onLoggedOut?: () => void) => {\n      const removeKeys = async () => {\n        try {\n          // Call user.leave() first to properly logout from Gun\n          if (user && user.leave) {\n            user.leave();\n          }\n\n          // Remove keys from storage\n          await storage.removeItem(keyFieldName);\n\n          // Reset the authentication state\n          setStatuses({\n            isReadyToAuth: '',\n            existingKeys: null,\n            keyStatus: '',\n          });\n\n          // Call the callback if provided\n          if (onLoggedOut) {\n            onLoggedOut();\n          }\n        } catch (error) {\n          console.warn('Failed to remove keys from storage:', error);\n          // Still call the callback even if storage removal fails\n          if (onLoggedOut) {\n            onLoggedOut();\n          }\n        }\n      };\n      removeKeys();\n    },\n    [keyFieldName, storage, user],\n  );\n\n  const newGunInstance = useCallback(\n    (opts: GunOptions = gunOpts) => {\n      return Gun(opts);\n    },\n    [Gun, gunOpts],\n  );\n\n  const value = useMemo<AuthContextType>(\n    () => ({\n      gun,\n      user,\n      login,\n      logout,\n      sea,\n      appKeys: existingKeys || newKeys,\n      isLoggedIn,\n      newGunInstance,\n    }),\n    [\n      gun,\n      user,\n      login,\n      logout,\n      sea,\n      newKeys,\n      existingKeys,\n      isLoggedIn,\n      newGunInstance,\n    ],\n  );\n\n  return React.createElement(AuthContext.Provider, { value }, children);\n};\n\nexport const useAuth = (): AuthContextType => {\n  const context = useContext(AuthContext);\n  if (!context) {\n    throw new Error('useAuth must be used within an AuthProvider');\n  }\n  return context;\n};\n\n// Context provider for Gun instance\nexport const GunContext = createContext<IGunChainReference | null>(null);\n\nconst safeStringifyOptions = (options: GunOptions): string => {\n  try {\n    return JSON.stringify(options, (key, value) => {\n      // Skip circular references and functions\n      if (\n        typeof value === 'function' ||\n        (typeof value === 'object' &&\n          value !== null &&\n          value.constructor?.name?.includes('Gun'))\n      ) {\n        return '[Circular/Function]';\n      }\n      return value;\n    });\n  } catch (err) {\n    return String(Math.random()); // Force re-render if serialization fails\n  }\n};\n\nexport const GunProvider: React.FC<{\n  gun: GunStatic;\n  options: GunOptions;\n  children: React.ReactNode;\n}> = ({ gun, options, children }) => {\n  const memoizedOptions = useMemo(\n    () => safeStringifyOptions(options),\n    [options],\n  );\n  const gunInstance = useMemo(() => {\n    try {\n      return gun(memoizedOptions);\n    } catch (err) {\n      console.error('Failed to initialize Gun instance:', err);\n      return null;\n    }\n  }, [gun, memoizedOptions]);\n\n  return React.createElement(\n    GunContext.Provider,\n    { value: gunInstance },\n    children,\n  );\n};\n\nexport const useGunContext = (): IGunChainReference => {\n  const context = useContext(GunContext);\n  if (!context) {\n    throw new Error('useGunContext must be used within a GunProvider');\n  }\n  return context;\n};\n\n// Debug utility hook\nexport const useGunDebug = (\n  ref: IGunChainReference | null,\n  label: string,\n  enabled: boolean = true,\n): void => {\n  useEffect(() => {\n    if (!enabled || !ref) return;\n\n    console.log(`[GunDB Debug - ${label}] Listening to:`, ref);\n\n    // subscribe\n    const off = ref.on((data, key) => {\n      console.log(`[${label}] Update:`, {\n        key,\n        data,\n        timestamp: new Date().toISOString(),\n      });\n    });\n\n    // cleanup\n    return () => {\n      if (typeof off === 'function') {\n        try {\n          off();\n        } catch (e) {}\n      } else if (typeof (ref as any).off === 'function') {\n        try {\n          (ref as any).off();\n        } catch (e) {}\n      }\n    };\n  }, [ref, label, enabled]);\n};\n\n// Connection status hook\nexport const useGunConnection = (\n  ref: IGunChainReference,\n): {\n  isConnected: boolean;\n  lastSeen: Date | null;\n  error: GunError | null;\n} => {\n  const [isConnected, setIsConnected] = useState(false);\n  const [lastSeen, setLastSeen] = useState<Date | null>(null);\n  const [error, setError] = useState<GunError | null>(null);\n\n  useEffect(() => {\n    if (!ref) return;\n\n    let timeoutId: number;\n\n    const resetTimeout = () => {\n      clearTimeout(timeoutId);\n      timeoutId = window.setTimeout(() => {\n        setIsConnected(false);\n        setError({\n          err: 'Connection timeout',\n          context: 'useGunConnection',\n        });\n      }, 10000); // 10 second timeout\n    };\n\n    // subscribe\n    const off = ref.on(() => {\n      setIsConnected(true);\n      setLastSeen(new Date());\n      setError(null);\n      resetTimeout();\n    });\n\n    // Initial timeout\n    resetTimeout();\n\n    return () => {\n      clearTimeout(timeoutId);\n      if (typeof off === 'function') {\n        try {\n          off();\n        } catch (e) {}\n      } else if (typeof (ref as any).off === 'function') {\n        try {\n          (ref as any).off();\n        } catch (e) {}\n      }\n    };\n  }, [ref]);\n\n  return { isConnected, lastSeen, error };\n};\n"],"names":["encryptData","data","keys","sea","encrypt","error","console","warn","decryptData","decrypt","debounce","func","wait","timeout","args","clearTimeout","setTimeout","validateNodeID","nodeID","trim","length","Error","validateData","context","undefined","warnInDevelopment","condition","message","window","debouncedUpdates","dispatcher","type","updates","handler","updateFunction","update","push","newStateSlice","reduce","previousState","id","set","Map","cleanup","useIsMounted","isMounted","useRef","useEffect","current","nodeReducer","state","_extends","collectionReducer","newCollectionForAdd","collection","Array","isArray","forEach","item","newCollectionForUpdate","newCollectionForRemove","delete","useSafeReducer","reducer","initialState","dispatch","useReducer","safeDispatch","useGun","Gun","opts","gun","setGun","useState","useGunNamespace","soul","namespace","setNamespace","user","useGunKeyAuth","triggerAuth","namespacedGraph","isLoggedIn","setIsLoggedIn","setError","off","on","e","is","auth","ack","err","useGunKeys","existingKeys","newKeys","setNewKeys","getKeySet","pair","catch","useGunOnNodeUpdated","ref","appKeys","useOpen","cb","gunCb","encryptedField","event","decryptedField","open","useGunState","interval","memoizedOpts","useMemo","fields","isLoading","setIsLoading","isConnected","setIsConnected","debouncedHandlers","updater","useCallback","connectionTimeout","nodeUpdateCallback","Object","key","cleanFn","cleanupCallback","c","put","encryptedData","Promise","resolve","reject","remove","field","useGunCollectionState","hasValidRef","Boolean","dataMap","items","from","values","map","updateInSet","get","addToSet","promise","removeFromSet","count","size","useGunCollectionStatePaginated","paginationOpts","pageSize","sortBy","sortOrder","filter","preloadPages","currentPage","initialPage","setCurrentPage","currentPageItems","setCurrentPageItems","isLoadingPage","setIsLoadingPage","totalItems","setTotalItems","pageCache","cacheTimestamps","CACHE_TTL","baseCollection","getCachedPage","page","cached","timestamp","Date","now","setCachedPage","processedItems","allItems","filteredItems","sort","a","b","aVal","bVal","comparison","clear","loadPage","startIndex","endIndex","pageItems","slice","i","nextPage","prevPage","nextStartIndex","nextEndIndex","nextPageItems","prevStartIndex","prevEndIndex","prevPageItems","totalPages","Math","ceil","hasNextPage","hasPrevPage","newPage","goToPage","setNewPageSize","currentItemIndex","floor","max","updatePageCache","updatedItem","pageNum","itemIndex","findIndex","preloadedPages","Set","setPageSize","currentPageCount","AuthContext","createContext","AuthProvider","keyFieldName","storage","gunOpts","children","isReadyToAuth","keyStatus","setStatuses","storeKeysEffect","setItem","JSON","stringify","getKeys","k","getItem","ks","parse","login","logout","onLoggedOut","removeKeys","leave","removeItem","newGunInstance","value","React","createElement","Provider","useAuth","useContext","GunContext","safeStringifyOptions","options","_value$constructor","constructor","name","includes","String","random","GunProvider","memoizedOptions","gunInstance","useGunContext","useGunDebug","label","enabled","log","toISOString","useGunConnection","lastSeen","setLastSeen","timeoutId","resetTimeout"],"mappings":"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"}