async-lube 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +1 -1
  3. package/docs/http.md +1 -1
  4. package/docs/reference.md +4 -2
  5. package/docs/tasks.md +19 -2
  6. package/package.json +4 -5
  7. package/public.d.ts +112 -0
  8. package/src/attempt.js +17 -7
  9. package/src/durable/context.js +107 -64
  10. package/src/durable/error.js +39 -15
  11. package/src/durable/index.js +18 -10
  12. package/src/durable/journal.js +29 -14
  13. package/src/durable/json.js +26 -9
  14. package/src/durable/lease.js +15 -5
  15. package/src/durable/persist.js +60 -22
  16. package/src/durable/run.js +103 -41
  17. package/src/durable/send.js +30 -13
  18. package/src/durable/serve.js +30 -24
  19. package/src/durable/state.js +28 -13
  20. package/src/durable/store.js +19 -10
  21. package/src/durable/watch.js +31 -11
  22. package/src/errors.js +9 -3
  23. package/src/flow/attempts.js +49 -29
  24. package/src/flow/builder.js +260 -161
  25. package/src/flow/compile.js +86 -66
  26. package/src/flow/graph.js +108 -42
  27. package/src/flow/index.js +13 -7
  28. package/src/flow/items.js +79 -46
  29. package/src/flow/nodes.js +267 -117
  30. package/src/flow/refs.js +27 -13
  31. package/src/flow/resources.js +9 -3
  32. package/src/flow/run.js +287 -114
  33. package/src/flow/streams.js +44 -19
  34. package/src/flow/subflows.js +93 -53
  35. package/src/http/config.js +11 -5
  36. package/src/http/index.js +25 -14
  37. package/src/http/refresh.js +29 -12
  38. package/src/http/request.js +246 -151
  39. package/src/http/response.js +105 -50
  40. package/src/http/retry.js +52 -27
  41. package/src/http/socket.js +220 -172
  42. package/src/http/sse.js +113 -74
  43. package/src/http/throttle.js +9 -4
  44. package/src/http/url.js +58 -35
  45. package/src/http/xhr.js +29 -24
  46. package/src/index.js +1 -0
  47. package/src/key.js +3 -5
  48. package/src/limiter.js +146 -65
  49. package/src/offload.js +116 -85
  50. package/src/offload_module.js +594 -0
  51. package/src/options.js +8 -4
  52. package/src/redial.js +129 -0
  53. package/src/signal.js +14 -4
  54. package/src/stream.js +353 -198
  55. package/types/attempt.d.ts.map +1 -1
  56. package/types/durable/index.d.ts.map +1 -1
  57. package/types/durable/state.d.ts.map +1 -1
  58. package/types/durable/store.d.ts.map +1 -1
  59. package/types/errors.d.ts.map +1 -1
  60. package/types/http/index.d.ts.map +1 -1
  61. package/types/index.d.ts +1 -0
  62. package/types/index.d.ts.map +1 -1
  63. package/types/limiter.d.ts +5 -1
  64. package/types/limiter.d.ts.map +1 -1
  65. package/types/offload.d.ts +2 -16
  66. package/types/offload.d.ts.map +1 -1
  67. package/types/redial.d.ts +28 -0
  68. package/types/redial.d.ts.map +1 -0
  69. package/types/stream.d.ts +2 -0
  70. package/types/stream.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"attempt.d.ts","sourceRoot":"","sources":["../src/attempt.js"],"names":[],"mappings":"AASA;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CALhB,CAAC,EAKgB,EAAE,EAJrB,CAAC,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,KAAK,CAIlC,EAAE,OAAO,AAHtC,CACA,EADQ,OAAO,cAAc,EAAE,cAAc,YAGF,GAFjC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CA8D/B"}
1
+ {"version":3,"file":"attempt.d.ts","sourceRoot":"","sources":["../src/attempt.js"],"names":[],"mappings":"AASA;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CALhB,CAAC,EAKgB,EAAE,EAJrB,CAAC,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,KAAK,CAIlC,EAAE,OAAO,AAHtC,CACA,EADQ,OAAO,cAAc,EAAE,cAAc,YAGF,GAFjC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAwE/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/durable/index.js"],"names":[],"mappings":"AACI,OAAQ,KAAA,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAUzG,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC3C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CAPV,CAAC,EACD,CAAC,EAMU,KAAK,EALlB,YAKkB,EAAE,EAAE,EAJtB,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,kDAAkD,GAAG,iDAAiD,CAIxN,EAAE,OAAO,AAHvC,CACA,EADQ,cAAc,YAGsB,GAFlC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CA4FlC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/durable/index.js"],"names":[],"mappings":"AACI,OAAQ,KAAA,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAUzG,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC3C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CAPV,CAAC,EACD,CAAC,EAMU,KAAK,EALlB,YAKkB,EAAE,EAAE,EAJtB,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,kDAAkD,GAAG,iDAAiD,CAIxN,EAAE,OAAO,AAHvC,CACA,EADQ,cAAc,YAGsB,GAFlC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAoGlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/durable/state.js"],"names":[],"mappings":"AAAI,OAAQ,KAAA,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAA/C,kDAAkD;AAClD;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAHjB,QAGiB,GAFf,IAAI,CAYhB;AACD;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAHhB,QAGgB,GAFd,MAAM,GAAG,SAAS,CAM9B;AACD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EANrB,QAMqB,EAAE,IAAI,EAL3B,MAK2B,EAAE,EAAE,EAJ/B,MAI+B,EAAE,KAAK,EAHtC,OAGsC,GAFpC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAO1C;AACD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAJtB,QAIsB,EAAE,KAAK,EAH7B,QAG6B,GAF3B,OAAO,CAInB;AACD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAHnB,QAGmB,GAFjB,QAAQ,CAmBpB;AACD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAJrB,QAIqB,EAAE,IAAI,EAH3B,MAG2B,GAFzB,IAAI,CAUhB;AACD;;;GAGG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAHlB,QAGkB,GAFhB,IAAI,CAMhB;AACD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAHvB,QAGuB,GAFrB,IAAI,CAShB"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/durable/state.js"],"names":[],"mappings":"AAAI,OAAQ,KAAA,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAA/C,kDAAkD;AAClD;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAHjB,QAGiB,GAFf,IAAI,CAgBhB;AACD;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAHhB,QAGgB,GAFd,MAAM,GAAG,SAAS,CAU9B;AACD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EANrB,QAMqB,EAAE,IAAI,EAL3B,MAK2B,EAAE,EAAE,EAJ/B,MAI+B,EAAE,KAAK,EAHtC,OAGsC,GAFpC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAQ1C;AACD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAJtB,QAIsB,EAAE,KAAK,EAH7B,QAG6B,GAF3B,OAAO,CAInB;AACD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAHnB,QAGmB,GAFjB,QAAQ,CAuBpB;AACD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAJrB,QAIqB,EAAE,IAAI,EAH3B,MAG2B,GAFzB,IAAI,CAYhB;AACD;;;GAGG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAHlB,QAGkB,GAFhB,IAAI,CAMhB;AACD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAHvB,QAGuB,GAFrB,IAAI,CAShB"}
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/durable/store.js"],"names":[],"mappings":"AAAI,OAAQ,KAAA,EAAE,YAAY,EAAgB,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAuB3F;;;;GAIG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAJrB,YAIqB,EAAE,GAAG,EAH1B,MAG0B,GAFxB,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAIzC;AACD;;;GAGG;AACH,wBAAgB,MAAM,IAFT,YAAY,CAgCxB;AACD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAJd,cAIc,EAAE,KAAK,AAH7B,CACA,EADQ,MAAM,YAGgC,GAFpC,YAAY,CA6CxB"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/durable/store.js"],"names":[],"mappings":"AAAI,OAAQ,KAAA,EAAE,YAAY,EAAgB,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAwB3F;;;;GAIG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAJrB,YAIqB,EAAE,GAAG,EAH1B,MAG0B,GAFxB,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAIzC;AACD;;;GAGG;AACH,wBAAgB,MAAM,IAFT,YAAY,CAsCxB;AACD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAJd,cAIc,EAAE,KAAK,AAH7B,CACA,EADQ,MAAM,YAGgC,GAFpC,YAAY,CA+CxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.js"],"names":[],"mappings":"AAkBA;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IAapC,sBAAsB;IACjB,KAAK,EADC,OAAO;IAGb,OAAO;IAfb;;;OAGG;IACH,YAAY,MAAM,EAHP,OAGO,EAAE,OAAO,AAFxB,CACF,EADU,OAAO,cAAc,EAAE,cAAc,YAErB,EAY1B;CACD;AACD;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;IASlC,sBAAsB;IACjB,KAAK,EADC,OAAO;IAGb,IAAI;IAXV;;;OAGG;IACH,YAAY,IAAI,EAHL,MAGK,EAAE,KAAK,EAFZ,OAEY,EAQtB;CACD;AACD;;;GAGG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAUlC,sBAAsB;IACjB,IAAI,EADE,OAAO;IAEb,OAAO;IAEP,OAAO;IACP,QAAQ;IACR,MAAM;IACN,UAAU;IAhBhB;;;;OAIG;IACH,YAAY,QAAQ,EAJT,QAIS,EAAE,IAAI,EAHf,OAGe,EAAE,OAAO,EAFxB,OAAO,cAAc,EAAE,cAEC,EAYlC;CACD;AACD;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IASrC,sBAAsB;IACjB,KAAK,EADC,OAAO;IAGb,OAAO;IAXb;;;OAGG;IACH,YAAY,KAAK,EAHN,OAGM,EAAE,OAAO,EAFf,OAAO,cAAc,EAAE,cAER,EAQzB;CACD;AACD;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IAU/B,IAAI;IAEJ,MAAM;IACN,OAAO;IAZb;;;;OAIG;IACH,YAAY,IAAI,EAJL,MAIK,EAAE,MAAM,EAHb,MAGa,EAAE,OAAO,EAFtB,OAAO,cAAc,EAAE,cAED,EAQhC;CACD;AACD;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IAQhC,OAAO;IACP,OAAO;IARb;;;OAGG;IACH,YAAY,OAAO,EAHR,MAGQ,EAAE,OAAO,AAFzB,CACF,EADU,OAAO,cAAc,EAAE,cAAc,YAEpB,EAK3B;CACD;AACD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAHpB,OAGoB,GAFlB,KAAK,IAAI,WAAW,CAIhC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.js"],"names":[],"mappings":"AAwBA;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IAapC,sBAAsB;IACjB,KAAK,EADC,OAAO;IAGb,OAAO;IAfb;;;OAGG;IACH,YAAY,MAAM,EAHP,OAGO,EAAE,OAAO,AAFxB,CACF,EADU,OAAO,cAAc,EAAE,cAAc,YAErB,EAY1B;CACD;AACD;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;IASlC,sBAAsB;IACjB,KAAK,EADC,OAAO;IAGb,IAAI;IAXV;;;OAGG;IACH,YAAY,IAAI,EAHL,MAGK,EAAE,KAAK,EAFZ,OAEY,EAQtB;CACD;AACD;;;GAGG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAUlC,sBAAsB;IACjB,IAAI,EADE,OAAO;IAEb,OAAO;IAEP,OAAO;IACP,QAAQ;IACR,MAAM;IACN,UAAU;IAhBhB;;;;OAIG;IACH,YAAY,QAAQ,EAJT,QAIS,EAAE,IAAI,EAHf,OAGe,EAAE,OAAO,EAFxB,OAAO,cAAc,EAAE,cAEC,EAYlC;CACD;AACD;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IASrC,sBAAsB;IACjB,KAAK,EADC,OAAO;IAGb,OAAO;IAXb;;;OAGG;IACH,YAAY,KAAK,EAHN,OAGM,EAAE,OAAO,EAFf,OAAO,cAAc,EAAE,cAER,EAQzB;CACD;AACD;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IAU/B,IAAI;IAEJ,MAAM;IACN,OAAO;IAZb;;;;OAIG;IACH,YAAY,IAAI,EAJL,MAIK,EAAE,MAAM,EAHb,MAGa,EAAE,OAAO,EAFtB,OAAO,cAAc,EAAE,cAED,EAQhC;CACD;AACD;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IAQhC,OAAO;IACP,OAAO;IARb;;;OAGG;IACH,YAAY,OAAO,EAHR,MAGQ,EAAE,OAAO,AAFzB,CACF,EADU,OAAO,cAAc,EAAE,cAAc,YAEpB,EAK3B;CACD;AACD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAHpB,OAGoB,GAFlB,KAAK,IAAI,WAAW,CAIhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/http/index.js"],"names":[],"mappings":"AAyPA,kEAAkE;wBACxC,OAAO,iBAAiB,EAAE,YAAY"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/http/index.js"],"names":[],"mappings":"AAoQA,kEAAkE;wBACxC,OAAO,iBAAiB,EAAE,YAAY"}
package/types/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export { default as flow } from "./flow/index.js";
4
4
  export { offload } from "./offload.js";
5
5
  export { attempt } from "./attempt.js";
6
6
  export { limiter } from "./limiter.js";
7
+ export { redial } from "./redial.js";
7
8
  export { buffer, channel, debounce, every, latest, merge, share, throttle, until } from "./stream.js";
8
9
  export * from "../public.js"
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,SAAS,IAAI,QAAQ,EACrB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EACN,MAAM,EACN,OAAO,EACP,QAAQ,EACR,KAAK,EACL,MAAM,EACN,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EACL,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,SAAS,IAAI,QAAQ,EACrB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EACN,MAAM,EACN,OAAO,EACP,QAAQ,EACR,KAAK,EACL,MAAM,EACN,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EACL,MAAM,aAAa,CAAA"}
@@ -1,11 +1,14 @@
1
1
  /**
2
2
  * Limits the calls that run at the same time, and the calls that start per interval, across everything that shares it:
3
3
  * a database pool, a file system, an API quota. Use it inside flow nodes to limit them across runs.
4
+ * With a `rate`, `take()` answers at once whether a start is free, e.g. for a packet limit per socket.
4
5
  * @example
5
6
  * const db = limiter({ concurrency: 10 })
6
7
  * const openai = limiter({ rate: { count: 60, per: 60000 } })
7
8
  * const user = await db(() => pool.query("select ..."))
8
- * @param {{ concurrency?: number | undefined, rate?: { count: number, per: number } | undefined }} options
9
+ * const packets = limiter({ rate: { count: 20, per: 1000, window: "fixed" } })
10
+ * const retry_after = packets.take(socket.id)
11
+ * @param {{ concurrency?: number | undefined, rate?: { count: number, per: number, window?: "fixed" | "sliding" | undefined } | undefined }} options
9
12
  * @returns {import("../public.js").Limiter}
10
13
  */
11
14
  export declare function limiter(options: {
@@ -13,6 +16,7 @@ export declare function limiter(options: {
13
16
  rate?: {
14
17
  count: number;
15
18
  per: number;
19
+ window?: "fixed" | "sliding" | undefined;
16
20
  } | undefined;
17
21
  }): import("../public.js").Limiter;
18
22
  //# sourceMappingURL=limiter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"limiter.d.ts","sourceRoot":"","sources":["../src/limiter.js"],"names":[],"mappings":"AAwFA;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAHpB;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAA;CAGjE,GAFlB,OAAO,cAAc,EAAE,OAAO,CAkD1C"}
1
+ {"version":3,"file":"limiter.d.ts","sourceRoot":"","sources":["../src/limiter.js"],"names":[],"mappings":"AAkIA;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAHpB;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,CAAA;CAG3G,GAFlB,OAAO,cAAc,EAAE,OAAO,CAkF1C"}
@@ -1,17 +1,3 @@
1
- /**
2
- * Runs a function in a Worker, or a worker thread in Node.js 20.16 or later, so that heavy work does not block the page or the server.
3
- * The function travels as its source, so it may use only its arguments and globals: an arrow function or a function expression,
4
- * not a method or a closure. Arguments and results are copied as `postMessage` copies them. `concurrency` workers run at once, 1 by default.
5
- * @example
6
- * const resize = offload(async (bytes: ArrayBuffer, width: number) => shrink(bytes, width))
7
- * const thumbnail = await resize(bytes, 200, signal) // the signal terminates the worker
8
- * @template {unknown[]} A
9
- * @template R
10
- * @param {(...args: A) => R} fn
11
- * @param {{ concurrency?: number | undefined }=} options
12
- * @returns {import("../public.js").Offloaded<A, R>}
13
- */
14
- export declare function offload<A extends unknown[], R>(fn: (...args: A) => R, options?: {
15
- concurrency?: number | undefined;
16
- } | undefined): import("../public.js").Offloaded<A, R>;
1
+ /** @type {import("../public.js").OffloadFunction} */
2
+ export declare const offload: import("../public.js").OffloadFunction;
17
3
  //# sourceMappingURL=offload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"offload.d.ts","sourceRoot":"","sources":["../src/offload.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CANE,CAAC,SAAZ,OAAO,EAAK,EACb,CAAC,EAKU,EAAE,EAJf,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,CAID,EAAE,OAAO,AAHhC,CACA,EADQ;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,YAGP,GAF3B,OAAO,cAAc,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAkNlD"}
1
+ {"version":3,"file":"offload.d.ts","sourceRoot":"","sources":["../src/offload.js"],"names":[],"mappings":"AA2BA,qDAAqD;AACrD,eAAO,MAAM,OAAO,EADT,OAAO,cAAc,EAAE,eACG,CAAA"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Keeps one connection up: calls `connect` at once and again after each close, waiting `base` milliseconds
3
+ * after a connection that opened and doubling the wait up to `most` after each one that closed without opening,
4
+ * until the `signal` aborts. The connector tells it when its connection opened and closed, so a WebSocket or a
5
+ * server stream reconnects. The result resolves once the signal has aborted and the connection in hand has closed.
6
+ * `connect` gets `{ attempt, signal, open, close }`: `attempt` counts every call from 1, so it can rotate addresses;
7
+ * `signal` of the connection aborts when the outer signal does, so close the connection on it; `open()` marks the
8
+ * connection up and resets the wait; `close()` ends it, and only its first call counts. A `connect` that throws or
9
+ * returns a promise that rejects counts as a close.
10
+ * @example
11
+ * const stop = new AbortController()
12
+ * const stopped = redial(
13
+ * ({ attempt, signal, open, close }) => {
14
+ * const socket = new WebSocket(urls[(attempt - 1) % urls.length])
15
+ * socket.onopen = open
16
+ * socket.onclose = close
17
+ * signal.addEventListener("abort", () => socket.close(), { once: true })
18
+ * },
19
+ * { signal: stop.signal, base: 1000, most: 30000 }
20
+ * )
21
+ * stop.abort()
22
+ * await stopped
23
+ * @param {(context: import("../public.js").RedialContext) => unknown} connect
24
+ * @param {import("../public.js").RedialOptions} options
25
+ * @returns {Promise<void>}
26
+ */
27
+ export declare function redial(connect: (context: import("../public.js").RedialContext) => unknown, options: import("../public.js").RedialOptions): Promise<void>;
28
+ //# sourceMappingURL=redial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redial.d.ts","sourceRoot":"","sources":["../src/redial.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAJnB,CAAC,OAAO,EAAE,OAAO,cAAc,EAAE,aAAa,KAAK,OAIhC,EAAE,OAAO,EAH5B,OAAO,cAAc,EAAE,aAGK,GAF1B,OAAO,CAAC,IAAI,CAAC,CAsGzB"}
package/types/stream.d.ts CHANGED
@@ -7,6 +7,7 @@
7
7
  * @returns {AsyncIterableIterator<T[]>}
8
8
  */
9
9
  export declare function buffer<T>(source: AsyncIterable<T>, ms: number): AsyncIterableIterator<T[]>;
10
+ /** @type {import("../public.js").ChannelFunction} */
10
11
  export declare const channel: import("../public.js").ChannelFunction;
11
12
  /**
12
13
  * Yields the last value of every quiet window of the milliseconds, like the `debounce` of a request.
@@ -31,6 +32,7 @@ export declare function every(ms: number, options?: {
31
32
  immediate?: boolean | undefined;
32
33
  signal?: AbortSignal | undefined;
33
34
  } | undefined): AsyncIterable<number>;
35
+ /** @type {import("../public.js").LatestFunction} */
34
36
  export declare const latest: import("../public.js").LatestFunction;
35
37
  export declare const merge: import("../public.js").MergeFunction;
36
38
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.js"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AACH,wBAAgB,MAAM,CALT,CAAC,EAKS,MAAM,EAJlB,aAAa,CAAC,CAAC,CAIG,EAAE,EAAE,EAHtB,MAGsB,GAFpB,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAsEtC;AAkED,eAAO,MAAM,OAAO,EAAc,OAAO,cAAc,EAAE,eAAmC,CAAA;AA+J5F;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CALX,CAAC,EAKW,MAAM,EAJpB,aAAa,CAAC,CAAC,CAIK,EAAE,EAAE,EAHxB,MAGwB,GAFtB,qBAAqB,CAAC,CAAC,CAAC,CAsEpC;AACD;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAJb,MAIa,EAAE,OAAO,AAH9B,CACA,EADQ;IAAE,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CAAE,YAG1C,GAFzB,aAAa,CAAC,MAAM,CAAC,CAoDjC;AAiID,eAAO,MAAM,MAAM,EAAc,OAAO,cAAc,EAAE,cAAiC,CAAA;AA0GzF,eAAO,MAAM,KAAK,EAAc,OAAO,cAAc,EAAE,aAAgC,CAAA;AAoDvF;;;;;;GAMG;AACH,wBAAgB,KAAK,CALR,CAAC,EAKQ,MAAM,EAJjB,aAAa,CAAC,CAAC,CAIE,EAAE,OAAO,AAHlC,CACA,EADQ;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,YAGC,GAF7B,aAAa,CAAC,CAAC,CAAC,CAY5B;AAsCD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CALX,CAAC,EAKW,MAAM,EAJpB,aAAa,CAAC,CAAC,CAIK,EAAE,EAAE,EAHxB,MAGwB,GAFtB,qBAAqB,CAAC,CAAC,CAAC,CA8EpC;AAYD;;;;;;GAMG;AACH,wBAAgB,KAAK,CALR,CAAC,EAKQ,MAAM,EAJjB,aAAa,CAAC,CAAC,CAIE,EAAE,IAAI,EAHvB,aAAa,CAAC,OAAO,CAGE,GAFrB,qBAAqB,CAAC,CAAC,CAAC,CAmDpC"}
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.js"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AACH,wBAAgB,MAAM,CALT,CAAC,EAKS,MAAM,EAJlB,aAAa,CAAC,CAAC,CAIG,EAAE,EAAE,EAHtB,MAGsB,GAFpB,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAqFtC;AA4ED,qDAAqD;AACrD,eAAO,MAAM,OAAO,EADT,OAAO,cAAc,EAAE,eACG,CAAA;AAsLrC;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CALX,CAAC,EAKW,MAAM,EAJpB,aAAa,CAAC,CAAC,CAIK,EAAE,EAAE,EAHxB,MAGwB,GAFtB,qBAAqB,CAAC,CAAC,CAAC,CAmFpC;AACD;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAJb,MAIa,EAAE,OAAO,AAH9B,CACA,EADQ;IAAE,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CAAE,YAG1C,GAFzB,aAAa,CAAC,MAAM,CAAC,CA0DjC;AA8ID,oDAAoD;AACpD,eAAO,MAAM,MAAM,EADR,OAAO,cAAc,EAAE,cACC,CAAA;AAsInC,eAAO,MAAM,KAAK,EAAc,OAAO,cAAc,EAAE,aAAgC,CAAA;AA0DvF;;;;;;GAMG;AACH,wBAAgB,KAAK,CALR,CAAC,EAKQ,MAAM,EAJjB,aAAa,CAAC,CAAC,CAIE,EAAE,OAAO,AAHlC,CACA,EADQ;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,YAGC,GAF7B,aAAa,CAAC,CAAC,CAAC,CAc5B;AA+CD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CALX,CAAC,EAKW,MAAM,EAJpB,aAAa,CAAC,CAAC,CAIK,EAAE,EAAE,EAHxB,MAGwB,GAFtB,qBAAqB,CAAC,CAAC,CAAC,CA2FpC;AAcD;;;;;;GAMG;AACH,wBAAgB,KAAK,CALR,CAAC,EAKQ,MAAM,EAJjB,aAAa,CAAC,CAAC,CAIE,EAAE,IAAI,EAHvB,aAAa,CAAC,OAAO,CAGE,GAFrB,qBAAqB,CAAC,CAAC,CAAC,CAgEpC"}