{
  "version": 3,
  "sources": ["../../../src/async/utils.js"],
  "sourcesContent": ["\r\n\r\nexport const revertable = async (value, steps, fn, onError)=>{\r\n    let dir=true, s = 1;\r\n    const r = { status:\"pass\", pass:value };\r\n\r\n    while (s > 0 && s <= steps) {\r\n        try { r.pass = await fn(r.pass, dir, s, steps); }\r\n        catch (err) {\r\n            if (onError) { await onError(err, dir, s, steps); }\r\n            r.status = dir ? \"undo\" : \"fail\";\r\n            r[r.status] = err;\r\n            r[r.status + \"Step\"] = s;\r\n            if (dir) { dir = false; } else { break; }\r\n        }\r\n        s += dir*2-1;\r\n    }\r\n\r\n    if (r.pass === undefined) { delete r.pass; }\r\n\r\n    return Object.freeze(r);\r\n}\r\n\r\n\r\nexport const sleep = async ms=>new Promise(res=>setTimeout(res, ms));\r\n\r\nexport const attempt = async (exec, attemptCount=3, delay=2000)=>{\r\n    let a = 1, e;\r\n\r\n    while (true) {\r\n        try { return await exec(a); }\r\n        catch(err) { e = err; }\r\n        if (a >= attemptCount) { throw e; }\r\n        await sleep(delay);\r\n        a ++;\r\n    }\r\n}"],
  "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,IAAM,aAAa,OAAO,OAAO,OAAO,IAAI,YAAU;AACzD,MAAI,MAAI,MAAM,IAAI;AAClB,QAAM,IAAI,EAAE,QAAO,QAAQ,MAAK,MAAM;AAEtC,SAAO,IAAI,KAAK,KAAK,OAAO;AACxB,QAAI;AAAE,QAAE,OAAO,MAAM,GAAG,EAAE,MAAM,KAAK,GAAG,KAAK;AAAA,IAAG,SACzC,KAAK;AACR,UAAI,SAAS;AAAE,cAAM,QAAQ,KAAK,KAAK,GAAG,KAAK;AAAA,MAAG;AAClD,QAAE,SAAS,MAAM,SAAS;AAC1B,QAAE,EAAE,MAAM,IAAI;AACd,QAAE,EAAE,SAAS,MAAM,IAAI;AACvB,UAAI,KAAK;AAAE,cAAM;AAAA,MAAO,OAAO;AAAE;AAAA,MAAO;AAAA,IAC5C;AACA,SAAK,MAAI,IAAE;AAAA,EACf;AAEA,MAAI,EAAE,SAAS,QAAW;AAAE,WAAO,EAAE;AAAA,EAAM;AAE3C,SAAO,OAAO,OAAO,CAAC;AAC1B;AAGO,IAAM,QAAQ,OAAM,OAAI,IAAI,QAAQ,SAAK,WAAW,KAAK,EAAE,CAAC;AAE5D,IAAM,UAAU,OAAO,MAAM,eAAa,GAAG,QAAM,QAAO;AAC7D,MAAI,IAAI,GAAG;AAEX,SAAO,MAAM;AACT,QAAI;AAAE,aAAO,MAAM,KAAK,CAAC;AAAA,IAAG,SACtB,KAAK;AAAE,UAAI;AAAA,IAAK;AACtB,QAAI,KAAK,cAAc;AAAE,YAAM;AAAA,IAAG;AAClC,UAAM,MAAM,KAAK;AACjB;AAAA,EACJ;AACJ;",
  "names": []
}
