@typed/fx 0.0.27 → 0.0.30

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 (61) hide show
  1. package/.eslintcache +1 -1
  2. package/cjs/_internal.d.ts.map +1 -1
  3. package/cjs/_internal.js +9 -2
  4. package/cjs/_internal.js.map +1 -1
  5. package/cjs/fromDequeue.d.ts +4 -0
  6. package/cjs/fromDequeue.d.ts.map +1 -0
  7. package/cjs/fromDequeue.js +39 -0
  8. package/cjs/fromDequeue.js.map +1 -0
  9. package/cjs/fromHub.d.ts +4 -0
  10. package/cjs/fromHub.d.ts.map +1 -0
  11. package/cjs/fromHub.js +36 -0
  12. package/cjs/fromHub.js.map +1 -0
  13. package/cjs/index.d.ts +4 -0
  14. package/cjs/index.d.ts.map +1 -1
  15. package/cjs/index.js +4 -0
  16. package/cjs/index.js.map +1 -1
  17. package/cjs/toEnqueue.d.ts +5 -0
  18. package/cjs/toEnqueue.d.ts.map +1 -0
  19. package/cjs/toEnqueue.js +9 -0
  20. package/cjs/toEnqueue.js.map +1 -0
  21. package/cjs/toStream.d.ts +8 -0
  22. package/cjs/toStream.d.ts.map +1 -0
  23. package/cjs/toStream.js +64 -0
  24. package/cjs/toStream.js.map +1 -0
  25. package/cjs/transform.d.ts +1 -1
  26. package/cjs/transform.d.ts.map +1 -1
  27. package/cjs/transform.js.map +1 -1
  28. package/esm/_internal.d.ts.map +1 -1
  29. package/esm/_internal.js +9 -2
  30. package/esm/_internal.js.map +1 -1
  31. package/esm/fromDequeue.d.ts +4 -0
  32. package/esm/fromDequeue.d.ts.map +1 -0
  33. package/esm/fromDequeue.js +12 -0
  34. package/esm/fromDequeue.js.map +1 -0
  35. package/esm/fromHub.d.ts +4 -0
  36. package/esm/fromHub.d.ts.map +1 -0
  37. package/esm/fromHub.js +9 -0
  38. package/esm/fromHub.js.map +1 -0
  39. package/esm/index.d.ts +4 -0
  40. package/esm/index.d.ts.map +1 -1
  41. package/esm/index.js +4 -0
  42. package/esm/index.js.map +1 -1
  43. package/esm/toEnqueue.d.ts +5 -0
  44. package/esm/toEnqueue.d.ts.map +1 -0
  45. package/esm/toEnqueue.js +5 -0
  46. package/esm/toEnqueue.js.map +1 -0
  47. package/esm/toStream.d.ts +8 -0
  48. package/esm/toStream.d.ts.map +1 -0
  49. package/esm/toStream.js +37 -0
  50. package/esm/toStream.js.map +1 -0
  51. package/esm/transform.d.ts +1 -1
  52. package/esm/transform.d.ts.map +1 -1
  53. package/esm/transform.js.map +1 -1
  54. package/package.json +42 -2
  55. package/src/_internal.ts +11 -13
  56. package/src/fromDequeue.ts +17 -0
  57. package/src/fromHub.ts +12 -0
  58. package/src/index.ts +4 -0
  59. package/src/toEnqueue.ts +9 -0
  60. package/src/toStream.ts +81 -0
  61. package/src/transform.ts +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+DAAgD;AAIhD,wEAAyD;AAEzD,mCAA4B;AAE5B,SAAgB,SAAS,CACvB,CAA2E;IAE3E,OAAO,CAAU,EAAe,EAAoB,EAAE,CAAC,IAAA,UAAE,EAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAC5F,CAAC;AAJD,8BAIC;AAED,SAAgB,eAAe,CAAC,WAAmB;IACjD,OAAO,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAA;AACvD,CAAC;AAFD,0CAEC;AAEY,QAAA,wBAAwB,GAAG,SAAS,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAA;AAE3E,MAAM,aAAa,GAAG,CAAQ,SAAsC,EAAE,EAAE,CAC7E,SAAS,CAAa,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;AAD3C,QAAA,aAAa,iBAC8B;AAEjD,MAAM,iBAAiB,GAAG,CAC/B,SAAkE,EAClE,EAAE,CAAC,SAAS,CAAa,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAA;AAFlD,QAAA,iBAAiB,qBAEiC;AAExD,MAAM,gBAAgB,GAAG,CAAC,OAA0B,EAAE,EAAE,CAC7D,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAA;AADhC,QAAA,gBAAgB,oBACgB;AAEhC,QAAA,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAEvC,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;AAAhE,QAAA,SAAS,aAAuD;AAEhE,QAAA,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;AACnD,QAAA,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;AAErD,MAAM,UAAU,GAAG,CAAC,IAA2B,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;AAApF,QAAA,UAAU,cAA0E;AAE1F,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC,IAA2B,EAAE,EAAE,CAC9E,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AADrC,QAAA,WAAW,eAC0B"}
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,+DAAgD;AAIhD,wEAAyD;AAEzD,mCAA4B;AAE5B,SAAgB,SAAS,CACvB,CAA2E;IAE3E,OAAO,CAAU,EAAe,EAAoB,EAAE,CAAC,IAAA,UAAE,EAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAC5F,CAAC;AAJD,8BAIC;AAED,SAAgB,eAAe,CAAC,WAAmB;IACjD,OAAO,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAA;AACvD,CAAC;AAFD,0CAEC;AAEY,QAAA,wBAAwB,GAAG,SAAS,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAA;AAE3E,MAAM,aAAa,GAAG,CAAQ,SAAsC,EAAE,EAAE,CAC7E,SAAS,CAAa,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;AAD3C,QAAA,aAAa,iBAC8B;AAEjD,MAAM,iBAAiB,GAAG,CAC/B,SAAkE,EAClE,EAAE,CAAC,SAAS,CAAa,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAA;AAFlD,QAAA,iBAAiB,qBAEiC;AAExD,MAAM,gBAAgB,GAAG,CAAC,OAA0B,EAAE,EAAE,CAC7D,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAA;AADhC,QAAA,gBAAgB,oBACgB;AAEhC,QAAA,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAEb,CAAA;AAEzB,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;AAAhE,QAAA,SAAS,aAAuD;AAEhE,QAAA,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;AACnD,QAAA,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;AAErD,MAAM,UAAU,GAAG,CAAC,IAA2B,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;AAApF,QAAA,UAAU,cAA0E;AAE1F,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC,IAA2B,EAAE,EAAE,CAC9E,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AADrC,QAAA,WAAW,eAC0B"}
@@ -1 +1 @@
1
- {"version":3,"file":"_internal.d.ts","sourceRoot":"","sources":["../src/_internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEf,MAAM,mDAAmD,CAAA;AAG1D,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAKhD,eAAO,MAAM,kBAAkB,eAA6B,CAAA;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,OAAO,kBAAkB,CAAA;CACxC;AACD,eAAO,MAAM,gBAAgB,EAAE,gBAA8C,CAAA;AAE7E,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,gBAAgB,CAEpE;AAED,eAAO,MAAM,SAAS,oCAA+B,CAAA;AAErD,eAAO,MAAM,kBAAkB,qIAiB1B,CAAA;AAEL;;;GAGG;AACH,oBAAY,qBAAqB,GAAG;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IACrD,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAA;CAC/B,CAAA;AAED,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,GACnB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAQpD;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC1D,YAAY,EAAE,MAAM,EACpB,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC3D,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAMlC"}
1
+ {"version":3,"file":"_internal.d.ts","sourceRoot":"","sources":["../src/_internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEf,MAAM,mDAAmD,CAAA;AAG1D,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAIhD,eAAO,MAAM,kBAAkB,eAA6B,CAAA;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,OAAO,kBAAkB,CAAA;CACxC;AACD,eAAO,MAAM,gBAAgB,EAAE,gBAA8C,CAAA;AAE7E,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,gBAAgB,CAEpE;AAED,eAAO,MAAM,SAAS,oCAA+B,CAAA;AAErD,eAAO,MAAM,kBAAkB,qIAgB1B,CAAA;AAEL;;;GAGG;AACH,oBAAY,qBAAqB,GAAG;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IACrD,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAA;CAC/B,CAAA;AAED,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,GACnB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAQpD;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC1D,YAAY,EAAE,MAAM,EACpB,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC3D,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAMlC"}
package/esm/_internal.js CHANGED
@@ -4,14 +4,21 @@ import * as Deferred from '@effect/core/io/Deferred';
4
4
  import * as Effect from '@effect/core/io/Effect';
5
5
  import * as Ref from '@effect/core/io/Ref';
6
6
  import { pipe } from '@fp-ts/data/Function';
7
- import * as Maybe from '@tsplus/stdlib/data/Maybe';
8
7
  export const EARLY_EXIT_FAILURE = Symbol('EarlyExitFailure');
9
8
  export const EarlyExitFailure = { sym: EARLY_EXIT_FAILURE };
10
9
  export function isEarlyExitFailure(u) {
11
10
  return typeof u === 'object' && u !== null && u.sym === EARLY_EXIT_FAILURE;
12
11
  }
13
12
  export const exitEarly = Effect.die(EarlyExitFailure);
14
- export const onEarlyExitFailure = (handler) => (effect) => pipe(effect, Effect.foldCauseEffect((e) => pipe(e, Cause.dieMaybe, Maybe.fold(() => Effect.failCause(e), (d) => (isEarlyExitFailure(d) ? handler : Effect.failCause(e)))), Effect.succeed));
13
+ export const onEarlyExitFailure = (handler) => (effect) => pipe(effect, Effect.foldCauseEffect((e) => {
14
+ const defects = Cause.defects(e);
15
+ for (const defect of defects) {
16
+ if (isEarlyExitFailure(defect)) {
17
+ return handler;
18
+ }
19
+ }
20
+ return Effect.failCause(e);
21
+ }, Effect.succeed));
15
22
  export function makeDynamicCountdownLatch(initialCount) {
16
23
  return pipe(Ref.makeRef(() => initialCount), Effect.zipWith(Deferred.make(), (ref, deferred) => ({
17
24
  increment: ref.update((x) => x + 1),
@@ -1 +1 @@
1
- {"version":3,"file":"_internal.js","sourceRoot":"","sources":["../src/_internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,GACvB,MAAM,mDAAmD,CAAA;AAC1D,OAAO,KAAK,KAAK,MAAM,uBAAuB,CAAA;AAC9C,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAChD,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,2BAA2B,CAAA;AAElD,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;AAI5D,MAAM,CAAC,MAAM,gBAAgB,GAAqB,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAA;AAE7E,MAAM,UAAU,kBAAkB,CAAC,CAAU;IAC3C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAK,CAAS,CAAC,GAAG,KAAK,kBAAkB,CAAA;AACrF,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAErD,MAAM,CAAC,MAAM,kBAAkB,GAC7B,CAAY,OAAiC,EAAE,EAAE,CACjD,CAAU,MAA8B,EAAwC,EAAE,CAChF,IAAI,CACF,MAAM,EACN,MAAM,CAAC,eAAe,CACpB,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,CACF,CAAC,EACD,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,IAAI,CACR,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EACzB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAC/D,CACF,EACH,MAAM,CAAC,OAAO,CACf,CACF,CAAA;AAWL,MAAM,UAAU,yBAAyB,CACvC,YAAoB;IAEpB,OAAO,IAAI,CACT,GAAG,CAAC,OAAO,CAAS,GAAG,EAAE,CAAC,YAAY,CAAC,EACvC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAe,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/D,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACnC,KAAK,EAAE,IAAI,sBAAsB,CAAC,GAAG,EAAE,QAAQ,CAAC;KACjD,CAAC,CAAC,CACJ,CAAA;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,YAAoB,EACpB,CAA2D,EAC3D,KAA+B;IAE/B,OAAO,IAAI,CACT,yBAAyB,CAAC,YAAY,CAAC,EACvC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EACb,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CACzE,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"_internal.js","sourceRoot":"","sources":["../src/_internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,GACvB,MAAM,mDAAmD,CAAA;AAC1D,OAAO,KAAK,KAAK,MAAM,uBAAuB,CAAA;AAC9C,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAChD,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAE3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;AAI5D,MAAM,CAAC,MAAM,gBAAgB,GAAqB,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAA;AAE7E,MAAM,UAAU,kBAAkB,CAAC,CAAU;IAC3C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAK,CAAS,CAAC,GAAG,KAAK,kBAAkB,CAAA;AACrF,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAErD,MAAM,CAAC,MAAM,kBAAkB,GAC7B,CAAY,OAAiC,EAAE,EAAE,CACjD,CAAU,MAA8B,EAAwC,EAAE,CAChF,IAAI,CACF,MAAM,EACN,MAAM,CAAC,eAAe,CAAqD,CAAC,CAAC,EAAE,EAAE;IAC/E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAEhC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE;YAC9B,OAAO,OAAO,CAAA;SACf;KACF;IAED,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AAC5B,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CACnB,CAAA;AAWL,MAAM,UAAU,yBAAyB,CACvC,YAAoB;IAEpB,OAAO,IAAI,CACT,GAAG,CAAC,OAAO,CAAS,GAAG,EAAE,CAAC,YAAY,CAAC,EACvC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAe,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/D,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACnC,KAAK,EAAE,IAAI,sBAAsB,CAAC,GAAG,EAAE,QAAQ,CAAC;KACjD,CAAC,CAAC,CACJ,CAAA;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,YAAoB,EACpB,CAA2D,EAC3D,KAA+B;IAE/B,OAAO,IAAI,CACT,yBAAyB,CAAC,YAAY,CAAC,EACvC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EACb,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CACzE,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import * as Q from '@effect/core/io/Queue';
2
+ import { Fx } from './Fx.js';
3
+ export declare function fromDequeue<A>(dequeue: Q.Dequeue<A>): Fx<never, never, A>;
4
+ //# sourceMappingURL=fromDequeue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fromDequeue.d.ts","sourceRoot":"","sources":["../src/fromDequeue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,uBAAuB,CAAA;AAE1C,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAWzE"}
@@ -0,0 +1,12 @@
1
+ import * as Effect from '@effect/core/io/Effect';
2
+ import { Fx } from './Fx.js';
3
+ export function fromDequeue(dequeue) {
4
+ return Fx((emitter) => Effect.gen(function* ($) {
5
+ while (!(yield* $(dequeue.isShutdown))) {
6
+ const a = yield* $(dequeue.take);
7
+ yield* $(emitter.emit(a));
8
+ }
9
+ yield* $(emitter.end);
10
+ }));
11
+ }
12
+ //# sourceMappingURL=fromDequeue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fromDequeue.js","sourceRoot":"","sources":["../src/fromDequeue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAGhD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,MAAM,UAAU,WAAW,CAAI,OAAqB;IAClD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CACpB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE;YACtC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAChC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;SAC1B;QAED,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC,CAAC,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import * as Hub from '@effect/core/io/Hub';
2
+ import { Fx } from './Fx.js';
3
+ export declare function fromHub<A>(hub: Hub.Hub<A>): Fx<never, never, A>;
4
+ //# sourceMappingURL=fromHub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fromHub.d.ts","sourceRoot":"","sources":["../src/fromHub.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAA;AAG1C,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAK5B,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAE/D"}
package/esm/fromHub.js ADDED
@@ -0,0 +1,9 @@
1
+ import * as Effect from '@effect/core/io/Effect';
2
+ import { pipe } from '@fp-ts/data/Function';
3
+ import { fromDequeue } from './fromDequeue.js';
4
+ import { fromFxEffect } from './fromFxEffect.js';
5
+ import { scoped } from './transform.js';
6
+ export function fromHub(hub) {
7
+ return pipe(hub.subscribe, Effect.map(fromDequeue), fromFxEffect, scoped);
8
+ }
9
+ //# sourceMappingURL=fromHub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fromHub.js","sourceRoot":"","sources":["../src/fromHub.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAEhD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEvC,MAAM,UAAU,OAAO,CAAI,GAAe;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;AAC3E,CAAC"}
package/esm/index.d.ts CHANGED
@@ -10,8 +10,10 @@ export * from './filterLoop.js';
10
10
  export * from './filterMap.js';
11
11
  export * from './flatMap.js';
12
12
  export * from './flatMapConcurrently.js';
13
+ export * from './fromDequeue.js';
13
14
  export * from './fromEffect.js';
14
15
  export * from './fromFxEffect.js';
16
+ export * from './fromHub.js';
15
17
  export * from './fromIterable.js';
16
18
  export * from './Fx.js';
17
19
  export * from './hold.js';
@@ -41,6 +43,8 @@ export * from './switchMap.js';
41
43
  export * from './takeWhile.js';
42
44
  export * from './tapEffect.js';
43
45
  export * from './throttle.js';
46
+ export * from './toEnqueue.js';
47
+ export * from './toStream.js';
44
48
  export * from './transform.js';
45
49
  export * from './until.js';
46
50
  export * from './withEmitter.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,0BAA0B,CAAA;AACxC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,UAAU,CAAA;AACxB,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,UAAU,CAAA;AACxB,cAAc,kBAAkB,CAAA"}
package/esm/index.js CHANGED
@@ -10,8 +10,10 @@ export * from './filterLoop.js';
10
10
  export * from './filterMap.js';
11
11
  export * from './flatMap.js';
12
12
  export * from './flatMapConcurrently.js';
13
+ export * from './fromDequeue.js';
13
14
  export * from './fromEffect.js';
14
15
  export * from './fromFxEffect.js';
16
+ export * from './fromHub.js';
15
17
  export * from './fromIterable.js';
16
18
  export * from './Fx.js';
17
19
  export * from './hold.js';
@@ -41,6 +43,8 @@ export * from './switchMap.js';
41
43
  export * from './takeWhile.js';
42
44
  export * from './tapEffect.js';
43
45
  export * from './throttle.js';
46
+ export * from './toEnqueue.js';
47
+ export * from './toStream.js';
44
48
  export * from './transform.js';
45
49
  export * from './until.js';
46
50
  export * from './withEmitter.js';
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,0BAA0B,CAAA;AACxC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,UAAU,CAAA;AACxB,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,UAAU,CAAA;AACxB,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { Effect } from '@effect/core/io/Effect';
2
+ import { Enqueue } from '@effect/core/io/Queue';
3
+ import { Fx } from './Fx.js';
4
+ export declare function toEnqueue<A>(enqueue: Enqueue<A>): <R, E>(fx: Fx<R, E, A>) => Effect<R, E, void>;
5
+ //# sourceMappingURL=toEnqueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toEnqueue.d.ts","sourceRoot":"","sources":["../src/toEnqueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE/C,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAG5B,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAE/F"}
@@ -0,0 +1,5 @@
1
+ import { runObserve } from './runObserve.js';
2
+ export function toEnqueue(enqueue) {
3
+ return runObserve(enqueue.offer);
4
+ }
5
+ //# sourceMappingURL=toEnqueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toEnqueue.js","sourceRoot":"","sources":["../src/toEnqueue.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,MAAM,UAAU,SAAS,CAAI,OAAmB;IAC9C,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAClC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import * as Stream from '@effect/core/stream/Stream';
2
+ import { Fx } from './Fx.js';
3
+ /**
4
+ * Converts an Fx into a Stream that utilizes a bufferSize for the underlying
5
+ * Queue that the Stream utilizes to pull from.
6
+ */
7
+ export declare const toStream: (bufferSize?: number) => <R, E, A>(fx: Fx<R, E, A>) => Stream.Stream<R, E, A>;
8
+ //# sourceMappingURL=toStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toStream.d.ts","sourceRoot":"","sources":["../src/toStream.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAA;AAKpD,OAAO,EAAW,EAAE,EAAE,MAAM,SAAS,CAAA;AAErC;;;GAGG;AACH,eAAO,MAAM,QAAQ,+EA2BlB,CAAA"}
@@ -0,0 +1,37 @@
1
+ import * as Effect from '@effect/core/io/Effect';
2
+ import * as Exit from '@effect/core/io/Exit';
3
+ import * as Queue from '@effect/core/io/Queue';
4
+ import * as Channel from '@effect/core/stream/Channel';
5
+ import * as Stream from '@effect/core/stream/Stream';
6
+ import { pipe } from '@fp-ts/data/Function';
7
+ import * as Chunk from '@tsplus/stdlib/collections/Chunk';
8
+ import * as Maybe from '@tsplus/stdlib/data/Maybe';
9
+ import { Emitter } from './Fx.js';
10
+ /**
11
+ * Converts an Fx into a Stream that utilizes a bufferSize for the underlying
12
+ * Queue that the Stream utilizes to pull from.
13
+ */
14
+ export const toStream = (bufferSize = 1024) => (fx) => {
15
+ return Stream.unwrapScoped(Effect.gen(function* ($) {
16
+ const queue = yield* $(Effect.acquireRelease(Queue.bounded(bufferSize), (q) => q.shutdown));
17
+ yield* $(Effect.forkScoped(fx.run(Emitter((a) => queue.offer(Maybe.some(Exit.succeed(a))), (c) => queue.offer(Maybe.some(Exit.failCause(c))), queue.offer(Maybe.none)))));
18
+ return Stream.fromChannel(loop(queue, bufferSize));
19
+ }));
20
+ };
21
+ function loop(queue, bufferSize) {
22
+ return Channel.unwrap(pipe(queue.takeBetween(1, bufferSize), Effect.map((chunk) => {
23
+ const elements = [];
24
+ for (const element of chunk) {
25
+ if (Maybe.isNone(element)) {
26
+ return pipe(Channel.write(Chunk.from(elements)), Channel.flatMap(() => Channel.succeed(void 0)));
27
+ }
28
+ if (Exit.isFailure(element.value)) {
29
+ const cause = element.value.cause;
30
+ return pipe(Channel.write(Chunk.from(elements)), Channel.flatMap(() => Channel.failCause(cause)));
31
+ }
32
+ elements.push(element.value.value);
33
+ }
34
+ return pipe(Channel.write(Chunk.from(elements)), Channel.flatMap(() => loop(queue, bufferSize)));
35
+ })));
36
+ }
37
+ //# sourceMappingURL=toStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toStream.js","sourceRoot":"","sources":["../src/toStream.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ export declare const withParallelismUnbounded: <R, E, A>(fx: Fx<R, E, A>) => Fx<
11
11
  export declare const withFinalizer: <R2, X>(finalizer: Effect.Effect<R2, never, X>) => <R, E, A>(fx: Fx<R, E, A>) => Fx<Scope | R2 | R, E, A>;
12
12
  export declare const withFinalizerExit: <R2, X>(finalizer: <E, A>(exit: Exit<E, A>) => Effect.Effect<R2, never, X>) => <R, E_1, A_1>(fx: Fx<R, E_1, A_1>) => Fx<Scope | R2 | R, E_1, A_1>;
13
13
  export declare const withRuntimeFlags: (updated: RuntimeFlagsPatch) => <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>;
14
- export declare const scoped: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>;
14
+ export declare const scoped: <R, E, A>(fx: Fx<R, E, A>) => Fx<Exclude<R, Scope>, E, A>;
15
15
  export declare const withClock: (clock: Clock) => <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>;
16
16
  export declare const uninterruptible: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>;
17
17
  export declare const interruptible: <R, E, A>(fx: Fx<R, E, A>) => Fx<R, E, A>;
@@ -1 +1 @@
1
- {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AAEzD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,wBAAgB,SAAS,CAAC,EAAE,GAAG,KAAK,EAClC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,kDAG5E;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,6CAElD;AAED,eAAO,MAAM,wBAAwB,2CAA6C,CAAA;AAElF,eAAO,MAAM,aAAa,2GAC8B,CAAA;AAExD,eAAO,MAAM,iBAAiB,mJAEiC,CAAA;AAE/D,eAAO,MAAM,gBAAgB,YAAa,iBAAiB,8CACd,CAAA;AAE7C,eAAO,MAAM,MAAM,2CAA2B,CAAA;AAE9C,eAAO,MAAM,SAAS,UAAW,KAAK,8CAAuC,CAAA;AAE7E,eAAO,MAAM,eAAe,2CAAoC,CAAA;AAChE,eAAO,MAAM,aAAa,2CAAkC,CAAA;AAE5D,eAAO,MAAM,UAAU,SAAU,qBAAqB,8CAA2C,CAAA;AAEjG,eAAO,MAAM,WAAW,YAAa,MAAM,YAAY,qBAAqB,8CAC1B,CAAA"}
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AAEzD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,wBAAgB,SAAS,CAAC,EAAE,GAAG,KAAK,EAClC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,kDAG5E;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,6CAElD;AAED,eAAO,MAAM,wBAAwB,2CAA6C,CAAA;AAElF,eAAO,MAAM,aAAa,2GAC8B,CAAA;AAExD,eAAO,MAAM,iBAAiB,mJAEiC,CAAA;AAE/D,eAAO,MAAM,gBAAgB,YAAa,iBAAiB,8CACd,CAAA;AAE7C,eAAO,MAAM,MAAM,2DAEa,CAAA;AAEhC,eAAO,MAAM,SAAS,UAAW,KAAK,8CAAuC,CAAA;AAE7E,eAAO,MAAM,eAAe,2CAAoC,CAAA;AAChE,eAAO,MAAM,aAAa,2CAAkC,CAAA;AAE5D,eAAO,MAAM,UAAU,SAAU,qBAAqB,8CAA2C,CAAA;AAEjG,eAAO,MAAM,WAAW,YAAa,MAAM,YAAY,qBAAqB,8CAC1B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAIhD,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AAEzD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,MAAM,UAAU,SAAS,CACvB,CAA2E;IAE3E,OAAO,CAAU,EAAe,EAAoB,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAC5F,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,OAAO,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAA;AACvD,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,SAAS,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAA;AAElF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAQ,SAAsC,EAAE,EAAE,CAC7E,SAAS,CAAa,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;AAExD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,SAAkE,EAClE,EAAE,CAAC,SAAS,CAAa,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAA;AAE/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAA0B,EAAE,EAAE,CAC7D,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAA;AAE7C,MAAM,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAE9C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;AAE7E,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;AAChE,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;AAE5D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAA2B,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;AAEjG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC,IAA2B,EAAE,EAAE,CAC9E,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAIhD,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AAEzD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,MAAM,UAAU,SAAS,CACvB,CAA2E;IAE3E,OAAO,CAAU,EAAe,EAAoB,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAC5F,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,OAAO,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAA;AACvD,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,SAAS,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAA;AAElF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAQ,SAAsC,EAAE,EAAE,CAC7E,SAAS,CAAa,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;AAExD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,SAAkE,EAClE,EAAE,CAAC,SAAS,CAAa,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAA;AAE/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAA0B,EAAE,EAAE,CAC7D,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAA;AAE7C,MAAM,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAEb,CAAA;AAEhC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;AAE7E,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;AAChE,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;AAE5D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAA2B,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;AAEjG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC,IAA2B,EAAE,EAAE,CAC9E,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typed/fx",
3
- "version": "0.0.27",
3
+ "version": "0.0.30",
4
4
  "description": "High-performance Asynchronous Effects",
5
5
  "type": "module",
6
6
  "main": "esm/index.js",
@@ -10,7 +10,7 @@
10
10
  "scripts": {
11
11
  "build:cjs": "rm -rf cjs && tsc -p ./tsconfig.build.cjs.json",
12
12
  "build:esm": "rm -rf esm && tsc -p ./tsconfig.build.esm.json",
13
- "build:package-exports": "tsx ./tools/generatePackageExports.ts && git add package.json && git commit -m 'chore: generate package exports'",
13
+ "build:package-exports": "tsx ./tools/generatePackageExports.ts",
14
14
  "build": "concurrently npm:build:esm npm:build:cjs && npm run build:package-exports",
15
15
  "eslint": "NODE_OPTIONS=--max-old-space-size=4096 eslint --ext .ts,.js,.json,.yaml --fix --cache src",
16
16
  "mocha": "mocha 'src/**/*.test.ts'",
@@ -246,6 +246,16 @@
246
246
  "types": "./esm/flatMapConcurrently.d.ts"
247
247
  }
248
248
  },
249
+ "./fromDequeue": {
250
+ "require": {
251
+ "default": "./cjs/fromDequeue.js",
252
+ "types": "./cjs/fromDequeue.d.ts"
253
+ },
254
+ "import": {
255
+ "default": "./esm/fromDequeue.js",
256
+ "types": "./esm/fromDequeue.d.ts"
257
+ }
258
+ },
249
259
  "./fromEffect": {
250
260
  "require": {
251
261
  "default": "./cjs/fromEffect.js",
@@ -266,6 +276,16 @@
266
276
  "types": "./esm/fromFxEffect.d.ts"
267
277
  }
268
278
  },
279
+ "./fromHub": {
280
+ "require": {
281
+ "default": "./cjs/fromHub.js",
282
+ "types": "./cjs/fromHub.d.ts"
283
+ },
284
+ "import": {
285
+ "default": "./esm/fromHub.js",
286
+ "types": "./esm/fromHub.d.ts"
287
+ }
288
+ },
269
289
  "./fromIterable": {
270
290
  "require": {
271
291
  "default": "./cjs/fromIterable.js",
@@ -536,6 +556,26 @@
536
556
  "types": "./esm/throttle.d.ts"
537
557
  }
538
558
  },
559
+ "./toEnqueue": {
560
+ "require": {
561
+ "default": "./cjs/toEnqueue.js",
562
+ "types": "./cjs/toEnqueue.d.ts"
563
+ },
564
+ "import": {
565
+ "default": "./esm/toEnqueue.js",
566
+ "types": "./esm/toEnqueue.d.ts"
567
+ }
568
+ },
569
+ "./toStream": {
570
+ "require": {
571
+ "default": "./cjs/toStream.js",
572
+ "types": "./cjs/toStream.d.ts"
573
+ },
574
+ "import": {
575
+ "default": "./esm/toStream.js",
576
+ "types": "./esm/toStream.d.ts"
577
+ }
578
+ },
539
579
  "./transform": {
540
580
  "require": {
541
581
  "default": "./cjs/transform.js",
package/src/_internal.ts CHANGED
@@ -7,7 +7,6 @@ import * as Deferred from '@effect/core/io/Deferred'
7
7
  import * as Effect from '@effect/core/io/Effect'
8
8
  import * as Ref from '@effect/core/io/Ref'
9
9
  import { pipe } from '@fp-ts/data/Function'
10
- import * as Maybe from '@tsplus/stdlib/data/Maybe'
11
10
 
12
11
  export const EARLY_EXIT_FAILURE = Symbol('EarlyExitFailure')
13
12
  export interface EarlyExitFailure {
@@ -26,18 +25,17 @@ export const onEarlyExitFailure =
26
25
  <R, E, A>(effect: Effect.Effect<R, E, A>): Effect.Effect<R | R2, E | E2, A | B> =>
27
26
  pipe(
28
27
  effect,
29
- Effect.foldCauseEffect<E, A, R | R2, E | E2, A | B, R | R2, E | E2, A | B>(
30
- (e) =>
31
- pipe(
32
- e,
33
- Cause.dieMaybe,
34
- Maybe.fold(
35
- () => Effect.failCause(e),
36
- (d) => (isEarlyExitFailure(d) ? handler : Effect.failCause(e)),
37
- ),
38
- ),
39
- Effect.succeed,
40
- ),
28
+ Effect.foldCauseEffect<E, A, R | R2, E | E2, A | B, R | R2, E | E2, A | B>((e) => {
29
+ const defects = Cause.defects(e)
30
+
31
+ for (const defect of defects) {
32
+ if (isEarlyExitFailure(defect)) {
33
+ return handler
34
+ }
35
+ }
36
+
37
+ return Effect.failCause(e)
38
+ }, Effect.succeed),
41
39
  )
42
40
 
43
41
  /**
@@ -0,0 +1,17 @@
1
+ import * as Effect from '@effect/core/io/Effect'
2
+ import * as Q from '@effect/core/io/Queue'
3
+
4
+ import { Fx } from './Fx.js'
5
+
6
+ export function fromDequeue<A>(dequeue: Q.Dequeue<A>): Fx<never, never, A> {
7
+ return Fx((emitter) =>
8
+ Effect.gen(function* ($) {
9
+ while (!(yield* $(dequeue.isShutdown))) {
10
+ const a = yield* $(dequeue.take)
11
+ yield* $(emitter.emit(a))
12
+ }
13
+
14
+ yield* $(emitter.end)
15
+ }),
16
+ )
17
+ }
package/src/fromHub.ts ADDED
@@ -0,0 +1,12 @@
1
+ import * as Effect from '@effect/core/io/Effect'
2
+ import * as Hub from '@effect/core/io/Hub'
3
+ import { pipe } from '@fp-ts/data/Function'
4
+
5
+ import { Fx } from './Fx.js'
6
+ import { fromDequeue } from './fromDequeue.js'
7
+ import { fromFxEffect } from './fromFxEffect.js'
8
+ import { scoped } from './transform.js'
9
+
10
+ export function fromHub<A>(hub: Hub.Hub<A>): Fx<never, never, A> {
11
+ return pipe(hub.subscribe, Effect.map(fromDequeue), fromFxEffect, scoped)
12
+ }
package/src/index.ts CHANGED
@@ -10,8 +10,10 @@ export * from './filterLoop.js'
10
10
  export * from './filterMap.js'
11
11
  export * from './flatMap.js'
12
12
  export * from './flatMapConcurrently.js'
13
+ export * from './fromDequeue.js'
13
14
  export * from './fromEffect.js'
14
15
  export * from './fromFxEffect.js'
16
+ export * from './fromHub.js'
15
17
  export * from './fromIterable.js'
16
18
  export * from './Fx.js'
17
19
  export * from './hold.js'
@@ -41,6 +43,8 @@ export * from './switchMap.js'
41
43
  export * from './takeWhile.js'
42
44
  export * from './tapEffect.js'
43
45
  export * from './throttle.js'
46
+ export * from './toEnqueue.js'
47
+ export * from './toStream.js'
44
48
  export * from './transform.js'
45
49
  export * from './until.js'
46
50
  export * from './withEmitter.js'
@@ -0,0 +1,9 @@
1
+ import { Effect } from '@effect/core/io/Effect'
2
+ import { Enqueue } from '@effect/core/io/Queue'
3
+
4
+ import { Fx } from './Fx.js'
5
+ import { runObserve } from './runObserve.js'
6
+
7
+ export function toEnqueue<A>(enqueue: Enqueue<A>): <R, E>(fx: Fx<R, E, A>) => Effect<R, E, void> {
8
+ return runObserve(enqueue.offer)
9
+ }
@@ -0,0 +1,81 @@
1
+ import * as Effect from '@effect/core/io/Effect'
2
+ import * as Exit from '@effect/core/io/Exit'
3
+ import * as Queue from '@effect/core/io/Queue'
4
+ import * as Channel from '@effect/core/stream/Channel'
5
+ import * as Stream from '@effect/core/stream/Stream'
6
+ import { pipe } from '@fp-ts/data/Function'
7
+ import * as Chunk from '@tsplus/stdlib/collections/Chunk'
8
+ import * as Maybe from '@tsplus/stdlib/data/Maybe'
9
+
10
+ import { Emitter, Fx } from './Fx.js'
11
+
12
+ /**
13
+ * Converts an Fx into a Stream that utilizes a bufferSize for the underlying
14
+ * Queue that the Stream utilizes to pull from.
15
+ */
16
+ export const toStream =
17
+ (bufferSize = 1024) =>
18
+ <R, E, A>(fx: Fx<R, E, A>): Stream.Stream<R, E, A> => {
19
+ return Stream.unwrapScoped(
20
+ Effect.gen(function* ($) {
21
+ const queue = yield* $(
22
+ Effect.acquireRelease(
23
+ Queue.bounded<Maybe.Maybe<Exit.Exit<E, A>>>(bufferSize),
24
+ (q) => q.shutdown,
25
+ ),
26
+ )
27
+
28
+ yield* $(
29
+ Effect.forkScoped(
30
+ fx.run(
31
+ Emitter(
32
+ (a) => queue.offer(Maybe.some(Exit.succeed(a))),
33
+ (c) => queue.offer(Maybe.some(Exit.failCause(c))),
34
+ queue.offer(Maybe.none),
35
+ ),
36
+ ),
37
+ ),
38
+ )
39
+
40
+ return Stream.fromChannel(loop(queue, bufferSize))
41
+ }),
42
+ )
43
+ }
44
+
45
+ function loop<E, A>(
46
+ queue: Queue.Queue<Maybe.Maybe<Exit.Exit<E, A>>>,
47
+ bufferSize: number,
48
+ ): Channel.Channel<never, unknown, unknown, unknown, E, Chunk.Chunk<A>, unknown> {
49
+ return Channel.unwrap(
50
+ pipe(
51
+ queue.takeBetween(1, bufferSize),
52
+ Effect.map((chunk) => {
53
+ const elements: Array<A> = []
54
+
55
+ for (const element of chunk) {
56
+ if (Maybe.isNone(element)) {
57
+ return pipe(
58
+ Channel.write(Chunk.from(elements)),
59
+ Channel.flatMap(() => Channel.succeed(void 0)),
60
+ )
61
+ }
62
+
63
+ if (Exit.isFailure(element.value)) {
64
+ const cause = element.value.cause
65
+ return pipe(
66
+ Channel.write(Chunk.from(elements)),
67
+ Channel.flatMap(() => Channel.failCause(cause)),
68
+ )
69
+ }
70
+
71
+ elements.push(element.value.value)
72
+ }
73
+
74
+ return pipe(
75
+ Channel.write(Chunk.from(elements)),
76
+ Channel.flatMap(() => loop(queue, bufferSize)),
77
+ )
78
+ }),
79
+ ),
80
+ )
81
+ }
package/src/transform.ts CHANGED
@@ -29,7 +29,9 @@ export const withFinalizerExit = <R2, X>(
29
29
  export const withRuntimeFlags = (updated: RuntimeFlagsPatch) =>
30
30
  transform(Effect.withRuntimeFlags(updated))
31
31
 
32
- export const scoped = transform(Effect.scoped)
32
+ export const scoped = transform(Effect.scoped) as <R, E, A>(
33
+ fx: Fx<R, E, A>,
34
+ ) => Fx<Exclude<R, Scope>, E, A>
33
35
 
34
36
  export const withClock = (clock: Clock) => transform(Effect.withClock(clock))
35
37