{"version":3,"file":"usePollingPlugin.mjs","sources":["../../../../../../../package/hooks/useRequest/src/plugins/usePollingPlugin.ts"],"sourcesContent":["import { toRef, toValue, watch } from \"vue\";\nimport type { Plugin } from \"../types\";\nimport subscribeReVisible, { isDocumentVisible } from \"../../__utils__/subscribeReVisible\";\n\nconst usePollingPlugin: Plugin<any, any[]> = (\n  fetchInstance,\n  { pollingInterval, pollingWhenHidden = true, pollingErrorRetryCount = -1 }\n) => {\n  let timer: any = null;\n  let count: number = 0;\n  let unsubscribe: () => void = () => {};\n\n  const stopPolling = () => {\n    if (timer) {\n      clearTimeout(timer);\n    }\n    if (unsubscribe) unsubscribe();\n  };\n\n  watch(toRef(pollingInterval), () => {\n    if (!toValue(pollingInterval)) {\n      stopPolling();\n    }\n  });\n\n  if (!pollingInterval) {\n    return {};\n  }\n\n  return {\n    onBefore: () => {\n      stopPolling();\n    },\n    onError: () => {\n      count += 1;\n    },\n    onSuccess: () => {\n      count = 0;\n    },\n    onFinally: () => {\n      if (\n        pollingErrorRetryCount === -1 ||\n        // When an error occurs, the request is not repeated after pollingErrorRetryCount retries\n        (pollingErrorRetryCount !== -1 && count <= pollingErrorRetryCount)\n      ) {\n        timer = setTimeout(() => {\n          // if pollingWhenHidden = false && document is hidden, then stop polling and subscribe revisible\n          if (!pollingWhenHidden && !isDocumentVisible()) {\n            unsubscribe = subscribeReVisible(() => {\n              fetchInstance.refresh();\n            });\n          } else {\n            fetchInstance.refresh();\n          }\n        }, toValue(pollingInterval));\n      } else {\n        count = 0;\n      }\n    },\n    onCancel: () => {\n      stopPolling();\n    }\n  };\n};\n\nexport default usePollingPlugin;\n"],"names":[],"mappings":";;;AAIM,MAAA,gBAAA,GAAuC,CAC3C,aACA,EAAA,EAAE,iBAAiB,iBAAoB,GAAA,IAAA,EAAM,sBAAyB,GAAA,CAAA,CAAA,EACnE,KAAA;AACH,EAAA,IAAI,KAAa,GAAA,IAAA,CAAA;AACjB,EAAA,IAAI,KAAgB,GAAA,CAAA,CAAA;AACpB,EAAA,IAAI,cAA0B,MAAM;AAAA,GAAC,CAAA;AAErC,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,KAAO,EAAA;AACT,MAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAAA,KACpB;AACA,IAAI,IAAA,WAAA;AAAa,MAAY,WAAA,EAAA,CAAA;AAAA,GAC/B,CAAA;AAEA,EAAM,KAAA,CAAA,KAAA,CAAM,eAAe,CAAA,EAAG,MAAM;AAClC,IAAI,IAAA,CAAC,OAAQ,CAAA,eAAe,CAAG,EAAA;AAC7B,MAAY,WAAA,EAAA,CAAA;AAAA,KACd;AAAA,GACD,CAAA,CAAA;AAED,EAAA,IAAI,CAAC,eAAiB,EAAA;AACpB,IAAA,OAAO,EAAC,CAAA;AAAA,GACV;AAEA,EAAO,OAAA;AAAA,IACL,UAAU,MAAM;AACd,MAAY,WAAA,EAAA,CAAA;AAAA,KACd;AAAA,IACA,SAAS,MAAM;AACb,MAAS,KAAA,IAAA,CAAA,CAAA;AAAA,KACX;AAAA,IACA,WAAW,MAAM;AACf,MAAQ,KAAA,GAAA,CAAA,CAAA;AAAA,KACV;AAAA,IACA,WAAW,MAAM;AACf,MAAA,IACE,sBAA2B,KAAA,CAAA,CAAA;AAAA,MAE1B,sBAAA,KAA2B,CAAM,CAAA,IAAA,KAAA,IAAS,sBAC3C,EAAA;AACA,QAAA,KAAA,GAAQ,WAAW,MAAM;AAEvB,UAAA,IAAI,CAAC,iBAAA,IAAqB,CAAC,iBAAA,EAAqB,EAAA;AAC9C,YAAA,WAAA,GAAc,mBAAmB,MAAM;AACrC,cAAA,aAAA,CAAc,OAAQ,EAAA,CAAA;AAAA,aACvB,CAAA,CAAA;AAAA,WACI,MAAA;AACL,YAAA,aAAA,CAAc,OAAQ,EAAA,CAAA;AAAA,WACxB;AAAA,SACF,EAAG,OAAQ,CAAA,eAAe,CAAC,CAAA,CAAA;AAAA,OACtB,MAAA;AACL,QAAQ,KAAA,GAAA,CAAA,CAAA;AAAA,OACV;AAAA,KACF;AAAA,IACA,UAAU,MAAM;AACd,MAAY,WAAA,EAAA,CAAA;AAAA,KACd;AAAA,GACF,CAAA;AACF;;;;"}