{"version":3,"file":"simple.mjs","sources":["../../../../../../../src/mods/react/hooks/queries/simple.ts"],"sourcesContent":["import { None, Nullable } from \"@hazae41/option\";\nimport { Err, Fallback, Ok } from \"@hazae41/result\";\nimport { SimpleQuery } from \"index.js\";\nimport { useRenderRef } from \"libs/react/ref.js\";\nimport { shouldUseCacheIfFresh, shouldUseCacheIfStale, shouldUseNetwork } from \"libs/request/index.js\";\nimport { AbortSignals } from \"libs/signals/index.js\";\nimport { Time } from \"libs/time/time.js\";\nimport { MissingFetcherError, MissingKeyError, core } from \"mods/core/core.js\";\nimport { Simple } from \"mods/queries/simple/helper.js\";\nimport { FetcherfulReactQuery, FetcherlessReactQuery, SkeletonReactQuery } from \"mods/react/types/query.js\";\nimport { Mutator } from \"mods/types/mutator.js\";\nimport { FetcherfulQuerySettings, FetcherlessQuerySettings } from \"mods/types/settings.js\";\nimport { State } from \"mods/types/state.js\";\nimport { Updater } from \"mods/types/updater.js\";\nimport { DependencyList, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nexport function useQuery<T extends SimpleQuery.Infer<T>, L extends DependencyList>(\n  factory: (...deps: L) => T,\n  deps: L\n): SimpleQuery.ReactifyOrSkeleton<T> {\n  const query = useMemo(() => {\n    return factory(...deps)\n  }, deps)\n\n  if (query == null)\n    return useSimpleSkeletonQuery() as SimpleQuery.ReactifyOrSkeleton<T>\n\n  if (query.settings.fetcher == null)\n    return useSimpleFetcherlessQuery(query.settings) as SimpleQuery.ReactifyOrSkeleton<T>\n\n  return useSimpleFetcherfulQuery(query.settings) as SimpleQuery.ReactifyOrSkeleton<T>\n}\n\n/**\n * Query for a simple resource\n */\nexport interface SimpleSkeletonReactQuery<K, D, F> extends SkeletonReactQuery<K, D, F> {\n  /**\n   * Optimistic update\n   * @param updater Mutation function\n   * @param aborter Custom AbortController\n   */\n  updateOrThrow(updater: Updater<K, D, F>, init?: RequestInit): Promise<never>\n}\n\n/**\n * Query for a simple resource\n */\nexport interface SimpleFetcherfulReactQuery<K, D, F> extends FetcherfulReactQuery<K, D, F> {\n  /**\n   * Optimistic update\n   * @param updater Mutation function\n   * @param aborter Custom AbortController\n   */\n  updateOrThrow(updater: Updater<K, D, F>, init?: RequestInit): Promise<Fallback<State<D, F>>>\n}\n\n/**\n * Query for a simple resource\n */\nexport interface SimpleFetcherlessReactQuery<K, D, F> extends FetcherlessReactQuery<K, D, F> {\n  /**\n   * Optimistic update\n   * @param updater Mutation function\n   * @param aborter Custom AbortController\n   */\n  updateOrThrow(updater: Updater<K, D, F>, init?: RequestInit): Promise<never>\n}\n\nexport function useSimpleSkeletonQuery<K, D, F>(): SimpleSkeletonReactQuery<K, D, F> {\n  useRenderRef(undefined)\n\n  const cacheKey = useMemo(() => {\n    // NOOP\n  }, [undefined])\n\n  useState(0)\n\n  useRef()\n  useRef()\n\n  useMemo(() => {\n    // NOOP\n  }, [cacheKey])\n\n  useCallback(() => {\n    // NOOP\n  }, [cacheKey])\n\n  useCallback(() => {\n    // NOOP\n  }, [cacheKey])\n\n  useEffect(() => {\n    // NOOP\n  }, [cacheKey])\n\n  useEffect(() => {\n    // NOOP\n  }, [cacheKey])\n\n  const mutateOrThrow = useCallback(async (mutator: Mutator<D, F>) => {\n    throw new MissingKeyError()\n  }, [cacheKey])\n\n  const deleteOrThrow = useCallback(async () => {\n    throw new MissingKeyError()\n  }, [cacheKey])\n\n  const fetchOrThrow = useCallback(async (aborter = new AbortController()) => {\n    throw new MissingKeyError()\n  }, [cacheKey])\n\n  const refetchOrThrow = useCallback(async (aborter = new AbortController()) => {\n    throw new MissingKeyError()\n  }, [cacheKey])\n\n  const updateOrThrow = useCallback(async (updater: Updater<K, D, F>, aborter = new AbortController()) => {\n    throw new MissingKeyError()\n  }, [cacheKey])\n\n  return { mutateOrThrow, deleteOrThrow, fetchOrThrow, refetchOrThrow, updateOrThrow }\n}\n\nexport function useSimpleFetcherlessQuery<K, D, F>(\n  settings: FetcherlessQuerySettings<K, D, F>,\n): SimpleFetcherlessReactQuery<K, D, F> {\n  const settingsRef = useRenderRef(settings)\n\n  const cacheKey = useMemo(() => {\n    return Simple.getCacheKey(settings.key)\n  }, [settings.key])\n\n  const [, setCounter] = useState(0)\n\n  const stateRef = useRef<Nullable<State<D, F>>>()\n  const aborterRef = useRef<Nullable<AbortController>>()\n\n  useMemo(() => {\n    stateRef.current = core.getStateSync(cacheKey)\n    aborterRef.current = core.getAborterSync(cacheKey)\n  }, [cacheKey])\n\n  const setState = useCallback((state: Nullable<State<D, F>>) => {\n    stateRef.current = state\n    setCounter(c => c + 1)\n  }, [cacheKey])\n\n  const setAborter = useCallback((aborter: Nullable<AbortController>) => {\n    aborterRef.current = aborter\n    setCounter(c => c + 1)\n  }, [cacheKey])\n\n  useEffect(() => {\n    if (stateRef.current != null)\n      return\n    core.getOrThrow(cacheKey, settingsRef.current).then(setState).catch(console.warn)\n  }, [cacheKey])\n\n  useEffect(() => {\n    const onState = () => {\n      core.getOrThrow(cacheKey, settingsRef.current).then(setState).catch(console.warn)\n      return new None()\n    }\n\n    const onAborter = () => {\n      setAborter(core.getAborterSync(cacheKey))\n      return new None()\n    }\n\n    core.onState.on(cacheKey, onState, { passive: true })\n    core.onAborter.on(cacheKey, onAborter, { passive: true })\n\n    core.increment(cacheKey, settingsRef.current)\n\n    return () => {\n      core.decrementOrThrow(cacheKey, settingsRef.current)\n\n      core.onState.off(cacheKey, onState)\n      core.onAborter.off(cacheKey, onAborter)\n    }\n  }, [cacheKey])\n\n  const mutateOrThrow = useCallback(async (mutator: Mutator<D, F>) => {\n    return await core.mutateOrThrow(cacheKey, mutator, settingsRef.current)\n  }, [cacheKey])\n\n  const deleteOrThrow = useCallback(async () => {\n    return await core.deleteOrThrow(cacheKey, settingsRef.current)\n  }, [cacheKey])\n\n  const fetchOrThrow = useCallback(async (init?: RequestInit) => {\n    throw new MissingFetcherError()\n  }, [cacheKey])\n\n  const refetchOrThrow = useCallback(async (init?: RequestInit) => {\n    throw new MissingFetcherError()\n  }, [cacheKey])\n\n  const updateOrThrow = useCallback(async (updater: Updater<K, D, F>, init?: RequestInit) => {\n    throw new MissingFetcherError()\n  }, [cacheKey])\n\n  const state = stateRef.current\n  const aborter = aborterRef.current\n\n  const ready = state != null\n  const fetching = aborter != null\n  const optimistic = state?.isFake()\n\n  const current = state?.current\n  const data = state?.data\n  const error = state?.error\n\n  const real = state?.real\n  const fake = state?.fake\n\n  return {\n    ...settings,\n    cacheKey,\n    current,\n    data,\n    error,\n    real,\n    fake,\n    ready,\n    optimistic,\n    fetching,\n    aborter,\n    mutateOrThrow,\n    fetchOrThrow,\n    refetchOrThrow,\n    updateOrThrow,\n    deleteOrThrow,\n  }\n}\n\nexport function useSimpleFetcherfulQuery<K, D, F>(\n  settings: FetcherfulQuerySettings<K, D, F>,\n): SimpleFetcherfulReactQuery<K, D, F> {\n  const settingsRef = useRenderRef(settings)\n\n  const cacheKey = useMemo(() => {\n    return Simple.getCacheKey(settings.key)\n  }, [settings.key])\n\n  const [, setCounter] = useState(0)\n\n  const stateRef = useRef<Nullable<State<D, F>>>()\n  const aborterRef = useRef<Nullable<AbortController>>()\n\n  useMemo(() => {\n    stateRef.current = core.getStateSync(cacheKey)\n    aborterRef.current = core.getAborterSync(cacheKey)\n  }, [cacheKey])\n\n  const setState = useCallback((state: Nullable<State<D, F>>) => {\n    stateRef.current = state\n    setCounter(c => c + 1)\n  }, [cacheKey])\n\n  const setAborter = useCallback((aborter: Nullable<AbortController>) => {\n    aborterRef.current = aborter\n    setCounter(c => c + 1)\n  }, [cacheKey])\n\n  useEffect(() => {\n    if (stateRef.current != null)\n      return\n    core.getOrThrow(cacheKey, settingsRef.current).then(setState).catch(console.warn)\n  }, [cacheKey])\n\n  useEffect(() => {\n    const onState = () => {\n      core.getOrThrow(cacheKey, settingsRef.current).then(setState).catch(console.warn)\n      return new None()\n    }\n\n    const onAborter = () => {\n      setAborter(core.getAborterSync(cacheKey))\n      return new None()\n    }\n\n    core.onState.on(cacheKey, onState, { passive: true })\n    core.onAborter.on(cacheKey, onAborter, { passive: true })\n\n    core.increment(cacheKey, settingsRef.current)\n\n    return () => {\n      core.decrementOrThrow(cacheKey, settingsRef.current)\n\n      core.onState.off(cacheKey, onState)\n      core.onAborter.off(cacheKey, onAborter)\n    }\n  }, [cacheKey])\n\n  const mutateOrThrow = useCallback(async (mutator: Mutator<D, F>) => {\n    return await core.mutateOrThrow(cacheKey, mutator, settingsRef.current)\n  }, [cacheKey])\n\n  const deleteOrThrow = useCallback(async () => {\n    return await core.deleteOrThrow(cacheKey, settingsRef.current)\n  }, [cacheKey])\n\n  const fetchOrThrow = useCallback(async (init?: RequestInit): Promise<Fallback<State<D, F>>> => {\n    const state = stateRef.current\n    const settings = settingsRef.current\n\n    if (shouldUseCacheIfFresh(init?.cache) && Time.isAfterNow(state?.real?.current.cooldown))\n      return new Err(state!)\n    if (shouldUseCacheIfStale(init?.cache) && Time.isAfterNow(state?.real?.current.expiration))\n      return new Err(state!)\n    if (!shouldUseNetwork(init?.cache))\n      throw new Error(`Could not fetch using the provided cache directive`)\n\n    const aborter = new AbortController()\n    const signal = AbortSignal.any([aborter.signal, AbortSignals.getOrNever(init?.signal)])\n\n    return new Ok(await core.runOrJoin(cacheKey, aborter, () => Simple.fetchOrThrow(cacheKey, signal, settings)))\n  }, [cacheKey])\n\n  const refetchOrThrow = useCallback(async (init?: RequestInit): Promise<Fallback<State<D, F>>> => {\n    const state = stateRef.current\n    const settings = settingsRef.current\n\n    if (shouldUseCacheIfFresh(init?.cache) && Time.isAfterNow(state?.real?.current.cooldown))\n      return new Err(state!)\n    if (shouldUseCacheIfStale(init?.cache) && Time.isAfterNow(state?.real?.current.expiration))\n      return new Err(state!)\n    if (!shouldUseNetwork(init?.cache))\n      throw new Error(`Could not fetch using the provided cache directive`)\n\n    const aborter = new AbortController()\n    const signal = AbortSignal.any([aborter.signal, AbortSignals.getOrNever(init?.signal)])\n\n    return new Ok(await core.runOrReplace(cacheKey, aborter, () => Simple.fetchOrThrow(cacheKey, signal, settings)))\n  }, [cacheKey])\n\n  const updateOrThrow = useCallback(async (updater: Updater<K, D, F>, init?: RequestInit): Promise<Fallback<State<D, F>>> => {\n    const state = stateRef.current\n    const settings = settingsRef.current\n\n    if (shouldUseCacheIfFresh(init?.cache) && Time.isAfterNow(state?.real?.current.cooldown))\n      return new Err(state!)\n    if (shouldUseCacheIfStale(init?.cache) && Time.isAfterNow(state?.real?.current.expiration))\n      return new Err(state!)\n    if (!shouldUseNetwork(init?.cache))\n      throw new Error(`Could not fetch using the provided cache directive`)\n\n    const aborter = new AbortController()\n    const signal = AbortSignal.any([aborter.signal, AbortSignals.getOrNever(init?.signal)])\n\n    return new Ok(await Simple.updateOrThrow(cacheKey, updater, signal, settings))\n  }, [cacheKey])\n\n  const state = stateRef.current\n  const aborter = aborterRef.current\n\n  const ready = state != null\n  const fetching = aborter != null\n  const optimistic = state?.isFake()\n\n  const current = state?.current\n  const data = state?.data\n  const error = state?.error\n\n  const real = state?.real\n  const fake = state?.fake\n\n  return {\n    ...settings,\n    cacheKey,\n    current,\n    data,\n    error,\n    real,\n    fake,\n    ready,\n    optimistic,\n    fetching,\n    aborter,\n    mutateOrThrow,\n    fetchOrThrow,\n    refetchOrThrow,\n    updateOrThrow,\n    deleteOrThrow,\n  }\n}"],"names":[],"mappings":"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"}