{"version":3,"file":"use-retry.cjs","sources":["../../../../../../src/mods/react/hooks/blocks/use-retry.ts"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\n/**\n * Retry request on error using exponential backoff\n * @see useInterval for interval based requests\n * @param query\n * @param settings\n * @param options.init Initial timeout to be multiplied (in milliseconds)\n * @param options.base Exponent base (2 means the next timeout will be 2 times longer)\n * @param options.max Maximum count (3 means do not retry after 3 retries)\n * @see https://en.wikipedia.org/wiki/Exponential_backoff\n * @see https://en.wikipedia.org/wiki/Geometric_progression\n */\nexport function useRetry(query, settings = {}) {\n    const { ready, cacheKey, refetch, error } = query;\n    const { init = 1000, base = 2, max = 3 } = settings;\n    const count = useRef(0);\n    useMemo(() => {\n        count.current = 0;\n    }, [cacheKey]);\n    useEffect(() => {\n        if (!ready)\n            return;\n        if (error == null) {\n            count.current = 0;\n            return;\n        }\n        if (count.current >= max)\n            return;\n        const ratio = base ** count.current;\n        function f() {\n            count.current++;\n            // TODO use suspend or wait cooldown\n            refetch().then(r => r.ignore());\n        }\n        const t = setTimeout(f, init * ratio);\n        return () => clearTimeout(t);\n    }, [ready, error, refetch]);\n}\n//# sourceMappingURL=use-retry.js.map"],"names":["useRef","useMemo","useEffect"],"mappings":";;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,EAAE,EAAE;AAC/C,IAAI,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;AACtD,IAAI,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC;AACxD,IAAI,MAAM,KAAK,GAAGA,YAAM,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAIC,aAAO,CAAC,MAAM;AAClB,QAAQ,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AAC1B,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,IAAIC,eAAS,CAAC,MAAM;AACpB,QAAQ,IAAI,CAAC,KAAK;AAClB,YAAY,OAAO;AACnB,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;AAC3B,YAAY,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AAC9B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,GAAG;AAChC,YAAY,OAAO;AACnB,QAAQ,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC;AAC5C,QAAQ,SAAS,CAAC,GAAG;AACrB,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC;AAC5B;AACA,YAAY,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5C,SAAS;AACT,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;AAC9C,QAAQ,OAAO,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC;AACrC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAChC;;;;"}