{"version":3,"sources":["jsdelivr-header.js","/npm/set-delayed-interval@1.0.0/src/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAEA,MAAM,UAAY,IAAI,IAEhB,YAAc,IAAM,GAAG,KAAK,SAAS,KAAK,MAAsB,IAAhB,KAAK,YAS3D,eAAe,iBAAkB,EAAM,EAAU,GAC/C,KAAO,UAAU,IAAI,IAAK,CACxB,UACQ,GACR,CAAE,MAAO,GAEP,YAAW,KAAQ,MAAM,IAAO,GAChC,KACF,CAEA,IAAK,UAAU,IAAI,GACjB,YAGI,IAAI,SAAQ,IAChB,MAAM,EAAW,WAAW,EAAS,GAErC,UAAU,IAAI,EAAI,EAAQ,GAE9B,CACF,CAUA,SAAS,mBAAoB,EAAM,EAAU,GAC3C,EAAQ,GAAS,EAEjB,MAAM,EAAK,cACL,EAAW,YAAW,KAC1B,iBAAiB,EAAM,EAAU,EAAE,GAClC,GAIH,OAFA,UAAU,IAAI,EAAI,GAEX,CACT,CAOA,SAAS,qBAAsB,GAC7B,MAAM,EAAW,UAAU,IAAI,GAE3B,IACF,aAAa,GACb,UAAU,OAAO,GAErB,CAEA,OAAO,QAAU,CACf,sCACA","file":"/npm/set-delayed-interval@1.0.0/src/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/set-delayed-interval@1.0.0/src/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict'\n\nconst intervals = new Map()\n\nconst _generateId = () => `${Date.now()}:${Math.floor(Math.random() * 1000000)}`\n\n/**\n * Run a given task each {interval} ms\n *\n * @param {() => Promise} task\n * @param {number} interval\n * @param {string} id\n */\nasync function _runPeriodically (task, interval, id) {\n  while (intervals.get(id)) {\n    try {\n      await task()\n    } catch (err) {\n      // Throw global context error if handler throws\n      setTimeout(() => { throw err }, 1)\n      break\n    }\n\n    if (!intervals.get(id)) {\n      break\n    }\n\n    await new Promise(resolve => {\n      const _timeout = setTimeout(resolve, interval)\n\n      intervals.set(id, _timeout)\n    })\n  }\n}\n\n/**\n * Asynchronous setInterval that is properly delayed using promises and can be delayed on boot.\n *\n * @param {() => Promise} task\n * @param {number} interval\n * @param {number} [delay = interval]\n * @returns {string}\n */\nfunction setDelayedInterval (task, interval, delay) {\n  delay = delay || interval\n\n  const id = _generateId()\n  const _timeout = setTimeout(() => {\n    _runPeriodically(task, interval, id)\n  }, delay)\n\n  intervals.set(id, _timeout)\n\n  return id\n}\n\n/**\n * Clear delayed interval.\n *\n * @param {string} id\n */\nfunction clearDelayedInterval (id) {\n  const _timeout = intervals.get(id)\n\n  if (_timeout) {\n    clearTimeout(_timeout)\n    intervals.delete(id)\n  }\n}\n\nmodule.exports = {\n  setDelayedInterval,\n  clearDelayedInterval\n}\n"]}