{"version":3,"sources":["jsdelivr-header.js","/npm/koding-backoff@0.0.3/backoff.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,IAAI,QAAU,QAAQ,YAElB,iBAAmB,QAAQ,2BAA2B,iBAM1D,SAAS,cAAc,GACN,MAAX,IACF,EAAU,CAAC,GAGb,IAAI,EAAiB,KACjB,EAAiB,KACjB,EAAa,KACb,EAAc,KACd,EAAU,KACV,EAAQ,KAOZ,OAJA,IAEA,EAAQ,MAAQ,EAET,EAEP,SAAS,EAAQ,EAAI,GAEnB,IAAI,EAAU,KAAK,IAAI,EAAiB,KAAK,IAC3C,EAAgB,KACf,GAEH,GAAI,EAAG,OAAS,EACd,MAAM,IAAI,MAAM,qCAGA,IAAd,EAAG,SACL,EAAK,QAAQ,UAAU,KAGT,IAAZ,GACF,QAAQ,KAAK,oBAAsB,GAGrC,IAAI,EAAO,IAAK,cAEhB,OAAO,EAAK,QAAQ,GACjB,MAAK,SAAU,GACd,OAAO,CACT,IACC,MAAM,QAAQ,cAAc,WACX,EAAK,SAIrB,IAHgB,IAAZ,GACF,QAAQ,KAAK,aAEX,EAAQ,EAIV,OAHgB,IAAZ,GACF,QAAQ,KAAK,gBAER,EAAQ,GAKjB,MAHgB,IAAZ,GACF,QAAQ,KAAK,aAET,IAAI,iBAAiB,6BAC7B,IACC,QAAQ,EACb,CAEA,SAAS,IACP,EAAiB,OAAO,EAAQ,eAAgB,KAChD,EAAiB,OAAO,EAAQ,eAAgB,KAChD,EAAa,OAAO,EAAQ,WAAY,MACxC,EAAc,OAAO,EAAQ,YAAa,IAC1C,EAAU,OAAO,EAAQ,SAAS,GAClC,EAAQ,CACV,CAEF,CAEA,SAAS,OAAO,EAAK,GACnB,OAAc,MAAP,EAAc,EAAM,CAC7B,CAEA,SAAS,OAAQ,CAjFjB,cAAc,iBAAmB,iBAEjC,OAAO,QAAU","file":"/npm/koding-backoff@0.0.3/backoff.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/koding-backoff@0.0.3/backoff.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var Promise = require('bluebird');\n\nvar MaxAttemptsError = require('./lib/backoff/errors.js').MaxAttemptsError;\n\ncreateBackoff.MaxAttemptsError = MaxAttemptsError;\n\nmodule.exports = createBackoff;\n\nfunction createBackoff(options) {\n  if (options == null) {\n    options = {};\n  }\n\n  var initialDelayMs = null\n    , multiplyFactor = null\n    , maxDelayMs = null\n    , maxAttempts = null\n    , verbose = null\n    , tries = null\n  ;\n\n  reset();\n\n  backoff.reset = reset;\n\n  return backoff;\n\n  function backoff(fn, callback) {\n\n    var timeout = Math.min(initialDelayMs * Math.pow(\n      multiplyFactor, tries++\n    ), maxDelayMs);\n\n    if (fn.length > 1) {\n      throw new Error(\"Function has too many parameters!\");\n    }\n\n    if (fn.length === 1) {\n      fn = Promise.promisify(fn);\n    }\n\n    if (verbose === true) {\n      console.info(\"Current timeout: \" + timeout);\n    }\n\n    var task = fn().cancellable()\n\n    return task.timeout(timeout)\n      .then(function (result) {\n        return result;\n      })\n      .catch(Promise.TimeoutError, function () {\n        var cancelled = task.cancel();\n        if (verbose === true) {\n          console.info(\"Timed out\");\n        }\n        if (tries < maxAttempts) {\n          if (verbose === true) {\n            console.info(\"Trying again\");\n          }\n          return backoff(fn);\n        }\n        if (verbose === true) {\n          console.info(\"Giving up\");\n        }\n        throw new MaxAttemptsError(\"Maximum attempts exceeded!\");\n      })\n      .nodeify(callback);\n  }\n\n  function reset() {\n    initialDelayMs = option(options.initialDelayMs, 700)\n    multiplyFactor = option(options.multiplyFactor, 1.4)\n    maxDelayMs = option(options.maxDelayMs, 1000 * 15 /* 15 seconds */)\n    maxAttempts = option(options.maxAttempts, 50)\n    verbose = option(options.verbose, false)\n    tries = 0\n  }\n\n}\n\nfunction option(val, defaultVal) {\n  return val != null ? val : defaultVal;\n}\n\nfunction noop() {}\n"]}