@typed/fx 1.11.8 → 1.11.10

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 (111) hide show
  1. package/dist/RefSubject.d.ts.map +1 -1
  2. package/dist/RefSubject.js +13 -3
  3. package/dist/RefSubject.js.map +1 -1
  4. package/dist/_internal.d.ts +7 -2
  5. package/dist/_internal.d.ts.map +1 -1
  6. package/dist/_internal.js +34 -3
  7. package/dist/_internal.js.map +1 -1
  8. package/dist/catchAllCause.d.ts.map +1 -1
  9. package/dist/catchAllCause.js +3 -22
  10. package/dist/catchAllCause.js.map +1 -1
  11. package/dist/cjs/RefSubject.d.ts.map +1 -1
  12. package/dist/cjs/RefSubject.js +13 -3
  13. package/dist/cjs/RefSubject.js.map +1 -1
  14. package/dist/cjs/catchAllCause.d.ts.map +1 -1
  15. package/dist/cjs/catchAllCause.js +2 -21
  16. package/dist/cjs/catchAllCause.js.map +1 -1
  17. package/dist/cjs/combineAll.d.ts.map +1 -1
  18. package/dist/cjs/combineAll.js +1 -3
  19. package/dist/cjs/combineAll.js.map +1 -1
  20. package/dist/cjs/exhaustMap.d.ts.map +1 -1
  21. package/dist/cjs/exhaustMap.js +2 -21
  22. package/dist/cjs/exhaustMap.js.map +1 -1
  23. package/dist/cjs/exhaustMapCause.d.ts.map +1 -1
  24. package/dist/cjs/exhaustMapCause.js +2 -19
  25. package/dist/cjs/exhaustMapCause.js.map +1 -1
  26. package/dist/cjs/exhaustMapLatest.d.ts.map +1 -1
  27. package/dist/cjs/exhaustMapLatest.js +2 -71
  28. package/dist/cjs/exhaustMapLatest.js.map +1 -1
  29. package/dist/cjs/exhaustMapLatestCause.d.ts.map +1 -1
  30. package/dist/cjs/exhaustMapLatestCause.js +2 -69
  31. package/dist/cjs/exhaustMapLatestCause.js.map +1 -1
  32. package/dist/cjs/flatMap.d.ts.map +1 -1
  33. package/dist/cjs/flatMap.js +2 -20
  34. package/dist/cjs/flatMap.js.map +1 -1
  35. package/dist/cjs/helpers.d.ts +10 -0
  36. package/dist/cjs/helpers.d.ts.map +1 -0
  37. package/dist/cjs/helpers.js +103 -0
  38. package/dist/cjs/helpers.js.map +1 -0
  39. package/dist/cjs/multicast.d.ts +2 -3
  40. package/dist/cjs/multicast.d.ts.map +1 -1
  41. package/dist/cjs/multicast.js +15 -13
  42. package/dist/cjs/multicast.js.map +1 -1
  43. package/dist/cjs/switchMap.d.ts.map +1 -1
  44. package/dist/cjs/switchMap.js +2 -20
  45. package/dist/cjs/switchMap.js.map +1 -1
  46. package/dist/cjs/switchMapCause.d.ts.map +1 -1
  47. package/dist/cjs/switchMapCause.js +3 -13
  48. package/dist/cjs/switchMapCause.js.map +1 -1
  49. package/dist/cjs/switchMatch.d.ts.map +1 -1
  50. package/dist/cjs/switchMatch.js +2 -12
  51. package/dist/cjs/switchMatch.js.map +1 -1
  52. package/dist/cjs/throttle.d.ts.map +1 -1
  53. package/dist/cjs/throttle.js +2 -19
  54. package/dist/cjs/throttle.js.map +1 -1
  55. package/dist/combineAll.d.ts.map +1 -1
  56. package/dist/combineAll.js +1 -3
  57. package/dist/combineAll.js.map +1 -1
  58. package/dist/exhaustMap.d.ts.map +1 -1
  59. package/dist/exhaustMap.js +2 -21
  60. package/dist/exhaustMap.js.map +1 -1
  61. package/dist/exhaustMapCause.d.ts.map +1 -1
  62. package/dist/exhaustMapCause.js +3 -20
  63. package/dist/exhaustMapCause.js.map +1 -1
  64. package/dist/exhaustMapLatest.d.ts.map +1 -1
  65. package/dist/exhaustMapLatest.js +2 -48
  66. package/dist/exhaustMapLatest.js.map +1 -1
  67. package/dist/exhaustMapLatestCause.d.ts.map +1 -1
  68. package/dist/exhaustMapLatestCause.js +3 -47
  69. package/dist/exhaustMapLatestCause.js.map +1 -1
  70. package/dist/flatMap.d.ts.map +1 -1
  71. package/dist/flatMap.js +2 -20
  72. package/dist/flatMap.js.map +1 -1
  73. package/dist/helpers.d.ts +10 -0
  74. package/dist/helpers.d.ts.map +1 -0
  75. package/dist/helpers.js +95 -0
  76. package/dist/helpers.js.map +1 -0
  77. package/dist/multicast.d.ts +2 -3
  78. package/dist/multicast.d.ts.map +1 -1
  79. package/dist/multicast.js +16 -14
  80. package/dist/multicast.js.map +1 -1
  81. package/dist/switchMap.d.ts.map +1 -1
  82. package/dist/switchMap.js +2 -20
  83. package/dist/switchMap.js.map +1 -1
  84. package/dist/switchMapCause.d.ts.map +1 -1
  85. package/dist/switchMapCause.js +4 -14
  86. package/dist/switchMapCause.js.map +1 -1
  87. package/dist/switchMatch.d.ts.map +1 -1
  88. package/dist/switchMatch.js +3 -13
  89. package/dist/switchMatch.js.map +1 -1
  90. package/dist/throttle.d.ts.map +1 -1
  91. package/dist/throttle.js +3 -20
  92. package/dist/throttle.js.map +1 -1
  93. package/dist/tsconfig.cjs.build.tsbuildinfo +1 -1
  94. package/package.json +2 -2
  95. package/src/RefSubject.test.ts +3 -1
  96. package/src/RefSubject.ts +32 -17
  97. package/src/catchAllCause.ts +5 -44
  98. package/src/combineAll.ts +1 -3
  99. package/src/exhaustMap.ts +3 -41
  100. package/src/exhaustMapCause.ts +3 -39
  101. package/src/exhaustMapLatest.ts +3 -72
  102. package/src/exhaustMapLatestCause.ts +3 -70
  103. package/src/flatMap.ts +3 -46
  104. package/src/helpers.ts +171 -0
  105. package/src/multicast.test.ts +25 -0
  106. package/src/multicast.ts +29 -31
  107. package/src/switchMap.ts +3 -36
  108. package/src/switchMapCause.ts +5 -40
  109. package/src/switchMatch.ts +9 -42
  110. package/src/throttle.ts +5 -33
  111. package/tsconfig.build.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"switchMapCause.js","sourceRoot":"","sources":["../../src/switchMapCause.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"switchMapCause.js","sourceRoot":"","sources":["../../src/switchMapCause.ts"],"names":[],"mappings":";;;AAAA,oDAA4C;AAG5C,iDAAsD;AACtD,iDAA0C;AAC1C,mDAA4C;AAC5C,6CAAsC;AACtC,qDAAmD;AAEnD,SAAgB,cAAc,CAC5B,EAAe,EACf,CAA2C;IAE3C,OAAO,IAAA,iCAAgB,EAAC,EAAE,EAAE,CAAC,EAAE,oBAAO,CAAC,CAAA;AACzC,CAAC;AALD,wCAKC;AAED,SAAgB,oBAAoB,CAClC,EAAe,EACf,CAAsD;IAEtD,OAAO,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACpD,CAAC;AALD,oDAKC;AAED,SAAgB,cAAc,CAC5B,EAAe,EACf,CAA0B;IAE1B,OAAO,cAAc,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAClC,IAAA,eAAI,EAAC,KAAK,EAAE,oBAAK,CAAC,cAAc,EAAE,qBAAM,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAS,CAAC,CAAC,CAC9D,CAAA;AACH,CAAC;AAPD,wCAOC;AAED,SAAgB,oBAAoB,CAClC,EAAe,EACf,CAAyC;IAEzC,OAAO,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACpD,CAAC;AALD,oDAKC"}
@@ -1 +1 @@
1
- {"version":3,"file":"switchMatch.d.ts","sourceRoot":"","sources":["../../src/switchMatch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAgC,MAAM,gBAAgB,CAAA;AAI5E,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC5D,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAC3C,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CA6CjC;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACvD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAMjC;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAClE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EACtD,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACpC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAMjC;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC7D,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EACzC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACpC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAMjC"}
1
+ {"version":3,"file":"switchMatch.d.ts","sourceRoot":"","sources":["../../src/switchMatch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAU,MAAM,gBAAgB,CAAA;AAKtD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC5D,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAC3C,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAWjC;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACvD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAC9B,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAMjC;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAClE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EACtD,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACpC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAMjC;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC7D,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EACzC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACpC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAMjC"}
@@ -6,19 +6,9 @@ const Fx_js_1 = require("./Fx.js");
6
6
  const externals_js_1 = require("./externals.js");
7
7
  const failCause_js_1 = require("./failCause.js");
8
8
  const fromEffect_js_1 = require("./fromEffect.js");
9
+ const helpers_js_1 = require("./helpers.js");
9
10
  function switchMatchCause(fx, f, g) {
10
- return (0, Fx_js_1.Fx)((sink) => externals_js_1.Effect.gen(function* ($) {
11
- const runFork = externals_js_1.Runtime.runFork(yield* $(externals_js_1.Effect.runtime()));
12
- const ref = yield* $(externals_js_1.RefS.make(null));
13
- const reset = externals_js_1.RefS.set(ref, null);
14
- const switchWith = (f) => externals_js_1.RefS.updateEffect(ref, (currentFiber) => (0, Function_1.pipe)(currentFiber ? externals_js_1.Fiber.interruptFork(currentFiber) : externals_js_1.Effect.unit(), externals_js_1.Effect.map(() => (0, Function_1.pipe)(f().run((0, Fx_js_1.Sink)(sink.event, (cause) => externals_js_1.Cause.isInterruptedOnly(cause) ? externals_js_1.Effect.unit() : sink.error(cause))), externals_js_1.Effect.zipLeft(reset), externals_js_1.Effect.catchAllCause((cause) => externals_js_1.Cause.isInterruptedOnly(cause) ? externals_js_1.Effect.unit() : sink.error(cause)), runFork))));
15
- yield* $(fx.run((0, Fx_js_1.Sink)((a) => switchWith(() => g(a)), (cause) => switchWith(() => f(cause)))));
16
- // Wait for the last fiber to finish
17
- const fiber = yield* $(externals_js_1.RefS.get(ref));
18
- if (fiber) {
19
- yield* $(externals_js_1.Fiber.join(fiber));
20
- }
21
- }));
11
+ return (0, Fx_js_1.Fx)((sink) => (0, helpers_js_1.withSwitch)((fork) => fx.run((0, Fx_js_1.Sink)((a) => fork(g(a).run(sink)), (cause) => fork(f(cause).run(sink))))));
22
12
  }
23
13
  exports.switchMatchCause = switchMatchCause;
24
14
  function switchMatch(fx, f, g) {
@@ -1 +1 @@
1
- {"version":3,"file":"switchMatch.js","sourceRoot":"","sources":["../../src/switchMatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"switchMatch.js","sourceRoot":"","sources":["../../src/switchMatch.ts"],"names":[],"mappings":";;;AAAA,oDAA4C;AAE5C,mCAAkC;AAClC,iDAAsD;AACtD,iDAA0C;AAC1C,mDAA4C;AAC5C,6CAAyC;AAEzC,SAAgB,gBAAgB,CAC9B,EAAe,EACf,CAA2C,EAC3C,CAA0B;IAE1B,OAAO,IAAA,UAAE,EAAC,CAAK,IAA8B,EAAE,EAAE,CAC/C,IAAA,uBAAU,EAAC,CAAC,IAAI,EAAE,EAAE,CAClB,EAAE,CAAC,GAAG,CACJ,IAAA,YAAI,EACF,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAC3B,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CACpC,CACF,CACF,CACF,CAAA;AACH,CAAC;AAfD,4CAeC;AAED,SAAgB,WAAW,CACzB,EAAe,EACf,CAA8B,EAC9B,CAA0B;IAE1B,OAAO,gBAAgB,CACrB,EAAE,EACF,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,eAAI,EAAC,KAAK,EAAE,oBAAK,CAAC,cAAc,EAAE,qBAAM,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAS,CAAC,CAAC,EACxE,CAAC,CACF,CAAA;AACH,CAAC;AAVD,kCAUC;AAED,SAAgB,sBAAsB,CACpC,EAAe,EACf,CAAsD,EACtD,CAAqC;IAErC,OAAO,gBAAgB,CACrB,EAAE,EACF,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACxB,CAAA;AACH,CAAC;AAVD,wDAUC;AAED,SAAgB,iBAAiB,CAC/B,EAAe,EACf,CAAyC,EACzC,CAAqC;IAErC,OAAO,WAAW,CAChB,EAAE,EACF,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,0BAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACxB,CAAA;AACH,CAAC;AAVD,8CAUC"}
@@ -1 +1 @@
1
- {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../src/throttle.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,QAAQ,EAA+B,MAAM,gBAAgB,CAAA;AAEtE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAiC3F"}
1
+ {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../src/throttle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAU,MAAM,gBAAgB,CAAA;AAGjD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAM3F"}
@@ -1,28 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.throttle = void 0;
4
- const Function_1 = require("@effect/data/Function");
5
4
  const Fx_js_1 = require("./Fx.js");
6
5
  const externals_js_1 = require("./externals.js");
6
+ const helpers_js_1 = require("./helpers.js");
7
7
  function throttle(fx, duration) {
8
- return (0, Fx_js_1.Fx)((sink) => externals_js_1.Effect.gen(function* ($) {
9
- const runFork = externals_js_1.Runtime.runFork(yield* $(externals_js_1.Effect.runtime()));
10
- const ref = yield* $(externals_js_1.Ref.make(void 0));
11
- const reset = externals_js_1.Ref.set(ref, void 0);
12
- const throttleEvent = (a) => externals_js_1.Effect.gen(function* ($) {
13
- const currentFiber = yield* $(externals_js_1.Ref.get(ref));
14
- if (currentFiber) {
15
- return;
16
- }
17
- yield* $(externals_js_1.Ref.set(ref, (0, Function_1.pipe)(sink.event(a), externals_js_1.Effect.zipLeft(externals_js_1.Effect.delay(reset, duration)), runFork)));
18
- });
19
- yield* $(fx.run((0, Fx_js_1.Sink)(throttleEvent, sink.error)));
20
- // Wait for the last fiber to finish
21
- const fiber = yield* $(externals_js_1.Ref.get(ref));
22
- if (fiber) {
23
- yield* $(externals_js_1.Fiber.join(fiber));
24
- }
25
- }));
8
+ return (0, Fx_js_1.Fx)((sink) => (0, helpers_js_1.withExhaust)((fork) => fx.run((0, Fx_js_1.Sink)((a) => fork(externals_js_1.Effect.zipLeft(sink.event(a), externals_js_1.Effect.sleep(duration))), sink.error))));
26
9
  }
27
10
  exports.throttle = throttle;
28
11
  //# sourceMappingURL=throttle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../src/throttle.ts"],"names":[],"mappings":";;;AAAA,oDAA4C;AAE5C,mCAAkC;AAClC,iDAAsE;AAEtE,SAAgB,QAAQ,CAAU,EAAe,EAAE,QAA2B;IAC5E,OAAO,IAAA,UAAE,EAAC,CAAK,IAAoB,EAAE,EAAE,CACrC,qBAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,sBAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAM,CAAC,OAAO,EAAU,CAAC,CAAC,CAAA;QACnE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAG,CAAC,IAAI,CAAyC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC9E,MAAM,KAAK,GAAG,kBAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;QAElC,MAAM,aAAa,GAAG,CAAC,CAAI,EAAE,EAAE,CAC7B,qBAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAE3C,IAAI,YAAY,EAAE;gBAChB,OAAM;aACP;YAED,KAAK,CAAC,CAAC,CAAC,CACN,kBAAG,CAAC,GAAG,CACL,GAAG,EACH,IAAA,eAAI,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,qBAAM,CAAC,OAAO,CAAC,qBAAM,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAC5E,CACF,CAAA;QACH,CAAC,CAAC,CAAA;QAEJ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAA,YAAI,EAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAEjD,oCAAoC;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QAEpC,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;SAC5B;IACH,CAAC,CAAC,CACH,CAAA;AACH,CAAC;AAjCD,4BAiCC"}
1
+ {"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../src/throttle.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAClC,iDAAiD;AACjD,6CAA0C;AAE1C,SAAgB,QAAQ,CAAU,EAAe,EAAE,QAA2B;IAC5E,OAAO,IAAA,UAAE,EAAC,CAAK,IAAoB,EAAE,EAAE,CACrC,IAAA,wBAAW,EAAC,CAAC,IAAI,EAAE,EAAE,CACnB,EAAE,CAAC,GAAG,CAAC,IAAA,YAAI,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,qBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAC7F,CACF,CAAA;AACH,CAAC;AAND,4BAMC"}
@@ -1 +1 @@
1
- {"version":3,"file":"combineAll.d.ts","sourceRoot":"","sources":["../src/combineAll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAKlC,wBAAgB,UAAU,CAAC,EAAE,SAAS,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EACpE,GAAG,EAAE,EAAE,EAAE,GACR,EAAE,CACH,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAC1B,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EACvB;KACG,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACpC,CACF,CA0CA;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACxC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACnB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAErC"}
1
+ {"version":3,"file":"combineAll.d.ts","sourceRoot":"","sources":["../src/combineAll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAKlC,wBAAgB,UAAU,CAAC,EAAE,SAAS,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EACpE,GAAG,EAAE,EAAE,EAAE,GACR,EAAE,CACH,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAC1B,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EACvB;KACG,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACpC,CACF,CAwCA;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACxC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACnB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAErC"}
@@ -13,9 +13,7 @@ export function combineAll(...fx) {
13
13
  const length = fx.length;
14
14
  const values = new Map();
15
15
  const emitIfReady = Effect.suspend(() => values.size === length
16
- ? sink.event(Array.from(values)
17
- .sort((a, b) => (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0))
18
- .map((x) => x[1]))
16
+ ? sink.event(Array.from({ length }, (_, i) => values.get(i)))
19
17
  : Effect.unit());
20
18
  yield* $(Effect.forEachParWithIndex(fx, (f, i) => f.run(Sink((a) => Effect.suspend(() => {
21
19
  values.set(i, a);
@@ -1 +1 @@
1
- {"version":3,"file":"combineAll.js","sourceRoot":"","sources":["../src/combineAll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,UAAU,UAAU,CACxB,GAAG,EAAM;IAQT,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;QACnB,OAAO,OAAO,CAAC,EAAE,CAAQ,CAAA;KAC1B;IAED,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;QACnB,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAQ,CAAA;KACrC;IAED,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAA;QACxB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAA;QAErC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CACtC,MAAM,CAAC,IAAI,KAAK,MAAM;YACpB,CAAC,CAAC,IAAI,CAAC,KAAK,CACR,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;iBACf,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACxD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAEjB,CACF;YACH,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAClB,CAAA;QAED,KAAK,CAAC,CAAC,CAAC,CACN,MAAM,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACtC,CAAC,CAAC,GAAG,CACH,IAAI,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;YAClB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAChB,OAAO,WAAW,CAAA;QACpB,CAAC,CAAC,EACJ,IAAI,CAAC,KAAK,CACX,CACF,CACF,CACF,CAAA;IACH,CAAC,CAAC,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,EAAe,EACf,KAAoB;IAEpB,OAAO,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;AAC9B,CAAC"}
1
+ {"version":3,"file":"combineAll.js","sourceRoot":"","sources":["../src/combineAll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,UAAU,UAAU,CACxB,GAAG,EAAM;IAQT,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;QACnB,OAAO,OAAO,CAAC,EAAE,CAAQ,CAAA;KAC1B;IAED,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;QACnB,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAQ,CAAA;KACrC;IAED,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAA;QACxB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAA;QAErC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CACtC,MAAM,CAAC,IAAI,KAAK,MAAM;YACpB,CAAC,CAAC,IAAI,CAAC,KAAK,CACR,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAE7C,CACF;YACH,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAClB,CAAA;QAED,KAAK,CAAC,CAAC,CAAC,CACN,MAAM,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACtC,CAAC,CAAC,GAAG,CACH,IAAI,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;YAClB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAChB,OAAO,WAAW,CAAA;QACpB,CAAC,CAAC,EACJ,IAAI,CAAC,KAAK,CACX,CACF,CACF,CACF,CAAA;IACH,CAAC,CAAC,CACH,CAAA;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,EAAe,EACf,KAAoB;IAEpB,OAAO,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;AAC9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"exhaustMap.d.ts","sourceRoot":"","sources":["../src/exhaustMap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAS,MAAM,EAAuB,MAAM,gBAAgB,CAAA;AAGnE,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC3C,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAyCvB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACjD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACpC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAE3F;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC3C,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GACrC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB"}
1
+ {"version":3,"file":"exhaustMap.d.ts","sourceRoot":"","sources":["../src/exhaustMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAIvC,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC3C,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAIvB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACjD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACpC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAE3F;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC3C,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GACrC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB"}
@@ -1,27 +1,8 @@
1
- import { pipe } from '@effect/data/Function';
2
1
  import { Fx, Sink } from './Fx.js';
3
- import { Cause, Effect, Fiber, Ref, Runtime } from './externals.js';
4
2
  import { fromEffect } from './fromEffect.js';
3
+ import { withExhaust } from './helpers.js';
5
4
  export function exhaustMap(fx, f) {
6
- return Fx((sink) => Effect.gen(function* ($) {
7
- const runFork = Runtime.runFork(yield* $(Effect.runtime()));
8
- const ref = yield* $(Ref.make(void 0));
9
- const reset = Ref.set(ref, void 0);
10
- const exhaustMapEvent = (a) => Effect.gen(function* ($) {
11
- const currentFiber = yield* $(Ref.get(ref));
12
- if (currentFiber) {
13
- return;
14
- }
15
- const fiber = pipe(f(a).run(Sink(sink.event, (cause) => Cause.isInterruptedOnly(cause) ? Effect.unit() : sink.error(cause))), Effect.zipLeft(reset), Effect.catchAllCause((cause) => Cause.isInterruptedOnly(cause) ? Effect.unit() : sink.error(cause)), runFork);
16
- yield* $(Ref.set(ref, fiber));
17
- });
18
- yield* $(fx.run(Sink(exhaustMapEvent, sink.error)));
19
- // Wait for the last fiber to finish
20
- const fiber = yield* $(Ref.get(ref));
21
- if (fiber) {
22
- yield* $(Fiber.join(fiber));
23
- }
24
- }));
5
+ return Fx((sink) => withExhaust((fork) => fx.run(Sink((a) => fork(f(a).run(sink)), sink.error))));
25
6
  }
26
7
  export function exhaustMapEffect(fx, f) {
27
8
  return exhaustMap(fx, (a) => fromEffect(f(a)));
@@ -1 +1 @@
1
- {"version":3,"file":"exhaustMap.js","sourceRoot":"","sources":["../src/exhaustMap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exhaustMap.js","sourceRoot":"","sources":["../src/exhaustMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,UAAU,UAAU,CACxB,EAAe,EACf,CAA0B;IAE1B,OAAO,EAAE,CAAC,CAAK,IAAyB,EAAE,EAAE,CAC1C,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAC7E,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,EAAe,EACf,CAAqC;IAErC,OAAO,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,OAAO,CAAkB,EAA2B;IAClE,OAAO,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,EAAsC;IAEtC,OAAO,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AACvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"exhaustMapCause.d.ts","sourceRoot":"","sources":["../src/exhaustMapCause.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,EAA+B,MAAM,gBAAgB,CAAA;AAI3E,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAChD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAC1C,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAyCvB;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACtD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACrD,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAE3B;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAChD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAIvB;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACtD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACxC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAEvB"}
1
+ {"version":3,"file":"exhaustMapCause.d.ts","sourceRoot":"","sources":["../src/exhaustMapCause.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAU,MAAM,gBAAgB,CAAA;AAKtD,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAChD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAC1C,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAIvB;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACtD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACrD,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAE3B;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAChD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAIvB;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACtD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACxC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAEvB"}
@@ -1,28 +1,11 @@
1
1
  import { pipe } from '@effect/data/Function';
2
2
  import { Fx, Sink } from './Fx.js';
3
- import { Cause, Effect, Either, Fiber, Ref, Runtime } from './externals.js';
3
+ import { Cause, Either } from './externals.js';
4
4
  import { failCause } from './failCause.js';
5
5
  import { fromEffect } from './fromEffect.js';
6
+ import { withExhaust } from './helpers.js';
6
7
  export function exhaustMapCause(fx, f) {
7
- return Fx((sink) => Effect.gen(function* ($) {
8
- const runFork = Runtime.runFork(yield* $(Effect.runtime()));
9
- const ref = yield* $(Ref.make(void 0));
10
- const reset = Ref.set(ref, void 0);
11
- const exhaustMapError = (cause) => Effect.gen(function* ($) {
12
- const currentFiber = yield* $(Ref.get(ref));
13
- if (currentFiber) {
14
- return;
15
- }
16
- const fiber = pipe(f(cause).run(Sink(sink.event, (cause) => Cause.isInterruptedOnly(cause) ? Effect.unit() : sink.error(cause))), Effect.zipLeft(reset), Effect.catchAllCause((cause) => Cause.isInterruptedOnly(cause) ? Effect.unit() : sink.error(cause)), runFork);
17
- yield* $(Ref.set(ref, fiber));
18
- });
19
- yield* $(fx.run(Sink(sink.event, exhaustMapError)));
20
- // Wait for the last fiber to finish
21
- const fiber = yield* $(Ref.get(ref));
22
- if (fiber) {
23
- yield* $(Fiber.join(fiber));
24
- }
25
- }));
8
+ return Fx((sink) => withExhaust((fork) => fx.run(Sink(sink.event, (cause) => fork(f(cause).run(sink))))));
26
9
  }
27
10
  export function exhaustMapCauseEffect(fx, f) {
28
11
  return exhaustMapCause(fx, (a) => fromEffect(f(a)));
@@ -1 +1 @@
1
- {"version":3,"file":"exhaustMapCause.js","sourceRoot":"","sources":["../src/exhaustMapCause.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exhaustMapCause.js","sourceRoot":"","sources":["../src/exhaustMapCause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAE5C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,KAAK,EAAU,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,UAAU,eAAe,CAC7B,EAAe,EACf,CAA2C;IAE3C,OAAO,EAAE,CAAC,CAAK,IAAyB,EAAE,EAAE,CAC1C,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACrF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,EAAe,EACf,CAAsD;IAEtD,OAAO,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,EAAe,EACf,CAA0B;IAE1B,OAAO,eAAe,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CACnC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAC9D,CAAA;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,EAAe,EACf,CAAyC;IAEzC,OAAO,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACrD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"exhaustMapLatest.d.ts","sourceRoot":"","sources":["../src/exhaustMapLatest.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAS,MAAM,EAAuB,MAAM,gBAAgB,CAAA;AAGnE,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACjD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAuEvB;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACvD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACpC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEjG;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACjD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GACrC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB"}
1
+ {"version":3,"file":"exhaustMapLatest.d.ts","sourceRoot":"","sources":["../src/exhaustMapLatest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAIvC,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACjD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAIvB;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACvD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACpC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEjG;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACjD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GACrC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB"}
@@ -1,54 +1,8 @@
1
- import { pipe } from '@effect/data/Function';
2
- import * as Option from '@effect/data/Option';
3
1
  import { Fx, Sink } from './Fx.js';
4
- import { Cause, Effect, Fiber, Ref, Runtime } from './externals.js';
5
2
  import { fromEffect } from './fromEffect.js';
3
+ import { withExhaustLatest } from './helpers.js';
6
4
  export function exhaustMapLatest(fx, f) {
7
- return Fx((sink) => Effect.gen(function* ($) {
8
- const runFork = Runtime.runFork(yield* $(Effect.runtime()));
9
- const ref = yield* $(Ref.make(void 0));
10
- const nextValue = yield* $(Ref.make(Option.none()));
11
- const reset = Ref.set(ref, void 0);
12
- // Wait for the current fiber to finish
13
- const awaitNext = Effect.gen(function* ($) {
14
- // Wait for the last fiber to finish
15
- const fiber = yield* $(Ref.get(ref));
16
- if (fiber) {
17
- // Wait for the fiber to end to check to see if we need to run another
18
- yield* $(Fiber.join(fiber));
19
- }
20
- });
21
- // Run the next value that's be saved for replay if it exists
22
- const runNext = Effect.gen(function* ($) {
23
- const next = yield* $(Ref.get(nextValue));
24
- if (Option.isSome(next)) {
25
- // Clear the next A to be replayed
26
- yield* $(Ref.set(nextValue, Option.none()));
27
- // Replay the next A
28
- yield* $(exhaustMapLatestEvent(next.value));
29
- // Ensure we don't close the scope until the last fiber completes
30
- yield* $(awaitNext);
31
- }
32
- });
33
- const exhaustMapLatestEvent = (a) => Effect.gen(function* ($) {
34
- const currentFiber = yield* $(Ref.get(ref));
35
- // Always allow the current fiber to continue
36
- if (currentFiber) {
37
- // Track the latest A to be replayed layer
38
- return yield* $(Ref.set(nextValue, Option.some(a)));
39
- }
40
- // Run our Fx with the current value
41
- const fiber = pipe(f(a).run(Sink(sink.event, (cause) => Cause.isInterruptedOnly(cause) ? Effect.unit() : sink.error(cause))),
42
- // Clear the current fiber when finished
43
- Effect.zipRight(reset),
44
- // See if there's another value to replay
45
- Effect.zipRight(runNext), Effect.catchAllCause((cause) => Cause.isInterruptedOnly(cause) ? Effect.unit() : sink.error(cause)), runFork);
46
- yield* $(Ref.set(ref, fiber));
47
- });
48
- yield* $(fx.run(Sink(exhaustMapLatestEvent, sink.error)));
49
- // Wait for the last fiber to finish
50
- yield* $(awaitNext);
51
- }));
5
+ return Fx((sink) => withExhaustLatest((fork) => fx.run(Sink((a) => fork(f(a).run(sink)), sink.error))));
52
6
  }
53
7
  export function exhaustMapLatestEffect(fx, f) {
54
8
  return exhaustMapLatest(fx, (a) => fromEffect(f(a)));
@@ -1 +1 @@
1
- {"version":3,"file":"exhaustMapLatest.js","sourceRoot":"","sources":["../src/exhaustMapLatest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exhaustMapLatest.js","sourceRoot":"","sources":["../src/exhaustMapLatest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhD,MAAM,UAAU,gBAAgB,CAC9B,EAAe,EACf,CAA0B;IAE1B,OAAO,EAAE,CAAC,CAAK,IAAyB,EAAE,EAAE,CAC1C,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACnF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,EAAe,EACf,CAAqC;IAErC,OAAO,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,aAAa,CAAkB,EAA2B;IACxE,OAAO,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,EAAsC;IAEtC,OAAO,sBAAsB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AAC7C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"exhaustMapLatestCause.d.ts","sourceRoot":"","sources":["../src/exhaustMapLatestCause.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,EAA+B,MAAM,gBAAgB,CAAA;AAI3E,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACtD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAC1C,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAuEvB;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC5D,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACrD,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAE3B;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACtD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAIvB;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC5D,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACxC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAEvB"}
1
+ {"version":3,"file":"exhaustMapLatestCause.d.ts","sourceRoot":"","sources":["../src/exhaustMapLatestCause.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAU,MAAM,gBAAgB,CAAA;AAKtD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACtD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAC1C,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAIvB;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC5D,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACrD,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAE3B;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACtD,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAIvB;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC5D,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACxC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAEvB"}
@@ -1,55 +1,11 @@
1
1
  import { pipe } from '@effect/data/Function';
2
- import * as Option from '@effect/data/Option';
3
2
  import { Fx, Sink } from './Fx.js';
4
- import { Cause, Effect, Either, Fiber, Ref, Runtime } from './externals.js';
3
+ import { Cause, Either } from './externals.js';
5
4
  import { failCause } from './failCause.js';
6
5
  import { fromEffect } from './fromEffect.js';
6
+ import { withExhaustLatest } from './helpers.js';
7
7
  export function exhaustMapLatestCause(fx, f) {
8
- return Fx((sink) => Effect.gen(function* ($) {
9
- const runFork = Runtime.runFork(yield* $(Effect.runtime()));
10
- const ref = yield* $(Ref.make(void 0));
11
- const nextValue = yield* $(Ref.make(Option.none()));
12
- const reset = Ref.set(ref, void 0);
13
- // Wait for the current fiber to finish
14
- const awaitNext = Effect.gen(function* ($) {
15
- // Wait for the last fiber to finish
16
- const fiber = yield* $(Ref.get(ref));
17
- if (fiber) {
18
- // Wait for the fiber to end to check to see if we need to run another
19
- yield* $(Fiber.join(fiber));
20
- }
21
- });
22
- // Run the next value that's be saved for replay if it exists
23
- const runNext = Effect.gen(function* ($) {
24
- const next = yield* $(Ref.get(nextValue));
25
- if (Option.isSome(next)) {
26
- // Clear the next A to be replayed
27
- yield* $(Ref.set(nextValue, Option.none()));
28
- // Replay the next A
29
- yield* $(exhaustMapLatestError(next.value));
30
- // Ensure we don't close the scope until the last fiber completes
31
- yield* $(awaitNext);
32
- }
33
- });
34
- const exhaustMapLatestError = (cause) => Effect.gen(function* ($) {
35
- const currentFiber = yield* $(Ref.get(ref));
36
- // Always allow the current fiber to continue
37
- if (currentFiber) {
38
- // Track the latest A to be replayed layer
39
- return yield* $(Ref.set(nextValue, Option.some(cause)));
40
- }
41
- // Run our Fx with the current value
42
- const fiber = pipe(f(cause).run(Sink(sink.event, (cause) => Cause.isInterruptedOnly(cause) ? Effect.unit() : sink.error(cause))),
43
- // Clear the current fiber when finished
44
- Effect.zipRight(reset),
45
- // See if there's another value to replay
46
- Effect.zipRight(runNext), Effect.catchAllCause((cause) => Cause.isInterruptedOnly(cause) ? Effect.unit() : sink.error(cause)), runFork);
47
- yield* $(Ref.set(ref, fiber));
48
- });
49
- yield* $(fx.run(Sink(sink.event, exhaustMapLatestError)));
50
- // Wait for the last fiber to finish
51
- yield* $(awaitNext);
52
- }));
8
+ return Fx((sink) => withExhaustLatest((fork) => fx.run(Sink(sink.event, (cause) => fork(f(cause).run(sink))))));
53
9
  }
54
10
  export function exhaustMapLatestCauseEffect(fx, f) {
55
11
  return exhaustMapLatestCause(fx, (a) => fromEffect(f(a)));
@@ -1 +1 @@
1
- {"version":3,"file":"exhaustMapLatestCause.js","sourceRoot":"","sources":["../src/exhaustMapLatestCause.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exhaustMapLatestCause.js","sourceRoot":"","sources":["../src/exhaustMapLatestCause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAE5C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,KAAK,EAAU,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhD,MAAM,UAAU,qBAAqB,CACnC,EAAe,EACf,CAA2C;IAE3C,OAAO,EAAE,CAAC,CAAK,IAAyB,EAAE,EAAE,CAC1C,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3F,CAAA;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,EAAe,EACf,CAAsD;IAEtD,OAAO,qBAAqB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3D,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,EAAe,EACf,CAA0B;IAE1B,OAAO,qBAAqB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CACzC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAC9D,CAAA;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,EAAe,EACf,CAAyC;IAEzC,OAAO,qBAAqB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"flatMap.d.ts","sourceRoot":"","sources":["../src/flatMap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAS,MAAM,EAAuB,MAAM,gBAAgB,CAAA;AAGnE,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACxC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CA8CvB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC9C,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACpC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAE3F;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC3C,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GACrC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB"}
1
+ {"version":3,"file":"flatMap.d.ts","sourceRoot":"","sources":["../src/flatMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAQ,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAIvC,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACxC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACzB,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAIvB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC9C,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GACpC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAE3F;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC3C,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GACrC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAEvB"}
package/dist/flatMap.js CHANGED
@@ -1,26 +1,8 @@
1
- import { pipe } from '@effect/data/Function';
2
1
  import { Fx, Sink } from './Fx.js';
3
- import { Cause, Effect, Fiber, Ref, Runtime } from './externals.js';
4
2
  import { fromEffect } from './fromEffect.js';
3
+ import { withUnboundedConcurrency } from './helpers.js';
5
4
  export function flatMap(fx, f) {
6
- return Fx((sink) => Effect.gen(function* ($) {
7
- const runFork = Runtime.runFork(yield* $(Effect.runtime()));
8
- const ref = yield* $(Ref.make(new Set()));
9
- yield* $(fx.run(Sink((a) => Effect.gen(function* ($) {
10
- const fiber = runFork(f(a).run(Sink(sink.event, (cause) => Cause.isInterruptedOnly(cause) ? Effect.unit() : sink.error(cause))));
11
- // Add Fiber to fibers
12
- yield* $(Ref.update(ref, (fs) => fs.add(fiber)));
13
- // When the fiber ends, we need to remove it from the list of fibers
14
- pipe(Fiber.join(fiber), Effect.flatMap(() => Ref.update(ref, (fs) => (fs.delete(fiber), fs))), Effect.catchAllCause((cause) => Cause.isInterruptedOnly(cause) ? Effect.unit() : sink.error(cause)),
15
- // but don't allow this to be blocking
16
- runFork);
17
- }), sink.error)));
18
- // Wait for the last fibers to finish
19
- const fibers = yield* $(Ref.get(ref));
20
- if (fibers.size > 0) {
21
- yield* $(Fiber.joinAll(fibers));
22
- }
23
- }));
5
+ return Fx((sink) => withUnboundedConcurrency((fork) => fx.run(Sink((a) => fork(f(a).run(sink)), sink.error))));
24
6
  }
25
7
  export function flatMapEffect(fx, f) {
26
8
  return flatMap(fx, (a) => fromEffect(f(a)));
@@ -1 +1 @@
1
- {"version":3,"file":"flatMap.js","sourceRoot":"","sources":["../src/flatMap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flatMap.js","sourceRoot":"","sources":["../src/flatMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AAEvD,MAAM,UAAU,OAAO,CACrB,EAAe,EACf,CAA0B;IAE1B,OAAO,EAAE,CAAC,CAAK,IAAyB,EAAE,EAAE,CAC1C,wBAAwB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAC1F,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,EAAe,EACf,CAAqC;IAErC,OAAO,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,OAAO,CAAkB,EAA2B;IAClE,OAAO,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,EAAsC;IAEtC,OAAO,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AACpC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Effect, Fiber } from './externals.js';
2
+ export type ScopedFork = <R2, E2, B>(effect: Effect.Effect<R2, E2, B>) => Effect.Effect<R2, never, Fiber.RuntimeFiber<E2, B>>;
3
+ export declare function withScopedFork<R, E, A>(f: (fork: ScopedFork) => Effect.Effect<R, E, A>): Effect.Effect<R, E, A>;
4
+ export type ForkFxFiber = <R2>(effect: Effect.Effect<R2, never, void>) => Effect.Effect<R2, never, Fiber.RuntimeFiber<never, void>>;
5
+ export declare function withUnboundedConcurrency<R, E, A>(f: (fork: ForkFxFiber) => Effect.Effect<R, E, A>): Effect.Effect<R, E, void>;
6
+ export type ForkFx = <R2>(eff: Effect.Effect<R2, never, void>) => Effect.Effect<R2, never, void>;
7
+ export declare function withSwitch<R, E, A>(f: (switchFork: ForkFx) => Effect.Effect<R, E, A>): Effect.Effect<R, E, void>;
8
+ export declare function withExhaust<R, E, A>(f: (exhaustFork: ForkFx) => Effect.Effect<R, E, A>): Effect.Effect<R, E, void>;
9
+ export declare function withExhaustLatest<R, E, A>(f: (exhaustLatestFork: ForkFx) => Effect.Effect<R, E, A>): Effect.Effect<R, E, void>;
10
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,KAAK,EAA4B,MAAM,gBAAgB,CAAA;AAExE,MAAM,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EACjC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAC7B,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AAExD,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,0BAMtF;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,EAAE,EAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KACnC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AAE9D,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9C,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,6BAgCjD;AAED,MAAM,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;AAEhG,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,6BAuBpF;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,6BA6BtF;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACvC,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,6BAwDzD"}
@@ -0,0 +1,95 @@
1
+ import { pipe } from '@effect/data/Function';
2
+ import { Effect, Fiber, Option, Ref, RefS, Scope } from './externals.js';
3
+ export function withScopedFork(f) {
4
+ return Effect.acquireUseRelease(Scope.make(), (scope) => f(Effect.forkIn(scope)), (scope, exit) => Scope.close(scope, exit));
5
+ }
6
+ export function withUnboundedConcurrency(f) {
7
+ return withScopedFork((fork) => Effect.gen(function* ($) {
8
+ const fibers = new Set();
9
+ yield* $(f((effect) => Effect.gen(function* ($) {
10
+ const fiber = yield* $(fork(effect));
11
+ fibers.add(fiber);
12
+ // Ensure that the fiber is removed from the set when it finishes
13
+ yield* $(Fiber.join(fiber), Effect.ensuring(Effect.sync(() => fibers.delete(fiber))),
14
+ // but don't allow this to be blocking
15
+ fork);
16
+ return fiber;
17
+ })));
18
+ // Wait for all fibers to complete
19
+ if (fibers.size > 0) {
20
+ yield* $(Fiber.joinAll(fibers));
21
+ }
22
+ }));
23
+ }
24
+ export function withSwitch(f) {
25
+ return withScopedFork((fork) => Effect.gen(function* ($) {
26
+ const ref = yield* $(RefS.make(Fiber.unit()));
27
+ const switchFork = (eff) => RefS.updateEffect(ref, (currentFiber) => pipe(Fiber.interruptFork(currentFiber), Effect.flatMap(() => fork(eff))));
28
+ yield* $(f(switchFork));
29
+ const fiber = yield* $(RefS.get(ref));
30
+ // Wait for last fiber to complete
31
+ if (fiber) {
32
+ yield* $(Fiber.join(fiber));
33
+ }
34
+ }));
35
+ }
36
+ export function withExhaust(f) {
37
+ return withScopedFork((fork) => Effect.gen(function* ($) {
38
+ const ref = yield* $(Ref.make(undefined));
39
+ const reset = Ref.set(ref, undefined);
40
+ const exhaustFork = (eff) => Effect.gen(function* ($) {
41
+ const currentFiber = yield* $(Ref.get(ref));
42
+ if (currentFiber) {
43
+ return;
44
+ }
45
+ const fiber = yield* $(eff, Effect.ensuring(reset), fork);
46
+ yield* $(Ref.set(ref, fiber));
47
+ });
48
+ yield* $(f(exhaustFork));
49
+ const fiber = yield* $(Ref.get(ref));
50
+ // Wait for last fiber to complete
51
+ if (fiber) {
52
+ yield* $(Fiber.join(fiber));
53
+ }
54
+ }));
55
+ }
56
+ export function withExhaustLatest(f) {
57
+ return withScopedFork((fork) => Effect.gen(function* ($) {
58
+ const ref = yield* $(Ref.make(undefined));
59
+ const nextEffect = yield* $(Ref.make(Option.none()));
60
+ const reset = Ref.set(ref, undefined);
61
+ // Wait for the current fiber to finish
62
+ const awaitNext = Effect.gen(function* ($) {
63
+ // Wait for the last fiber to finish
64
+ const fiber = yield* $(Ref.get(ref));
65
+ if (fiber) {
66
+ // Wait for the fiber to end to check to see if we need to run another
67
+ yield* $(Fiber.join(fiber));
68
+ }
69
+ });
70
+ // Run the next value that's be saved for replay if it exists
71
+ const runNext = Effect.gen(function* ($) {
72
+ const next = yield* $(Ref.get(nextEffect));
73
+ if (Option.isSome(next)) {
74
+ // Clear the next A to be replayed
75
+ yield* $(Ref.set(nextEffect, Option.none()));
76
+ // Replay the next A
77
+ yield* $(exhaustLatestFork(next.value));
78
+ // Ensure we don't close the scope until the last fiber completes
79
+ yield* $(awaitNext);
80
+ }
81
+ });
82
+ const exhaustLatestFork = (eff) => Effect.gen(function* ($) {
83
+ const currentFiber = yield* $(Ref.get(ref));
84
+ if (currentFiber) {
85
+ return yield* $(Ref.set(nextEffect, Option.some(eff)));
86
+ }
87
+ const fiber = yield* $(eff, Effect.ensuring(Effect.zip(reset, runNext)), fork);
88
+ yield* $(RefS.set(ref, fiber));
89
+ });
90
+ yield* $(f(exhaustLatestFork));
91
+ // Wait for last fibers to complete
92
+ yield* $(awaitNext);
93
+ }));
94
+ }
95
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}