brass-runtime 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +88 -311
  2. package/dist/examples/canceler.d.ts +2 -0
  3. package/dist/examples/canceler.d.ts.map +1 -0
  4. package/dist/examples/{test-canceler.js → canceler.js} +1 -0
  5. package/dist/examples/canceler.js.map +1 -0
  6. package/dist/examples/demo.d.ts +3 -0
  7. package/dist/examples/demo.d.ts.map +1 -0
  8. package/dist/examples/demo.js +38 -28
  9. package/dist/examples/demo.js.map +1 -0
  10. package/dist/examples/fiberFinalizer.d.ts +2 -0
  11. package/dist/examples/fiberFinalizer.d.ts.map +1 -0
  12. package/dist/examples/fiberFinalizer.js +1 -0
  13. package/dist/examples/fiberFinalizer.js.map +1 -0
  14. package/dist/examples/fromPromise.d.ts +3 -0
  15. package/dist/examples/fromPromise.d.ts.map +1 -0
  16. package/dist/examples/fromPromise.js +44 -0
  17. package/dist/examples/fromPromise.js.map +1 -0
  18. package/dist/examples/index.d.ts +7 -0
  19. package/dist/examples/index.d.ts.map +1 -0
  20. package/dist/examples/index.js +4 -1
  21. package/dist/examples/index.js.map +1 -0
  22. package/dist/examples/resourceExample.d.ts +2 -0
  23. package/dist/examples/resourceExample.d.ts.map +1 -0
  24. package/dist/examples/resourceExample.js +1 -0
  25. package/dist/examples/resourceExample.js.map +1 -0
  26. package/dist/examples/toPromise.d.ts +2 -0
  27. package/dist/examples/toPromise.d.ts.map +1 -0
  28. package/dist/examples/toPromise.js +13 -0
  29. package/dist/examples/toPromise.js.map +1 -0
  30. package/dist/fibers/fiber.d.ts +24 -0
  31. package/dist/fibers/fiber.d.ts.map +1 -0
  32. package/dist/fibers/fiber.js +16 -6
  33. package/dist/fibers/fiber.js.map +1 -0
  34. package/dist/{index.js → index.cjs} +1 -0
  35. package/dist/index.d.ts +9 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/scheduler/scheduler.d.ts +11 -0
  39. package/dist/scheduler/scheduler.d.ts.map +1 -0
  40. package/dist/scheduler/scheduler.js +1 -0
  41. package/dist/scheduler/scheduler.js.map +1 -0
  42. package/dist/scheduler/scope.d.ts +28 -0
  43. package/dist/scheduler/scope.d.ts.map +1 -0
  44. package/dist/scheduler/scope.js +1 -0
  45. package/dist/scheduler/scope.js.map +1 -0
  46. package/dist/stream/buffer.d.ts +3 -0
  47. package/dist/stream/buffer.d.ts.map +1 -0
  48. package/dist/stream/buffer.js +78 -47
  49. package/dist/stream/buffer.js.map +1 -0
  50. package/dist/stream/queue.d.ts +9 -0
  51. package/dist/stream/queue.d.ts.map +1 -0
  52. package/dist/stream/queue.js +98 -0
  53. package/dist/stream/queue.js.map +1 -0
  54. package/dist/stream/stream.d.ts +37 -0
  55. package/dist/stream/stream.d.ts.map +1 -0
  56. package/dist/stream/stream.js +70 -37
  57. package/dist/stream/stream.js.map +1 -0
  58. package/dist/stream/structuredConcurrency.d.ts +25 -0
  59. package/dist/stream/structuredConcurrency.d.ts.map +1 -0
  60. package/dist/stream/structuredConcurrency.js +1 -0
  61. package/dist/stream/structuredConcurrency.js.map +1 -0
  62. package/dist/types/asyncEffect.d.ts +44 -0
  63. package/dist/types/asyncEffect.d.ts.map +1 -0
  64. package/dist/types/asyncEffect.js +30 -13
  65. package/dist/types/asyncEffect.js.map +1 -0
  66. package/dist/types/cancel.d.ts +21 -0
  67. package/dist/types/cancel.d.ts.map +1 -0
  68. package/dist/types/cancel.js +1 -0
  69. package/dist/types/cancel.js.map +1 -0
  70. package/dist/types/effect.d.ts +20 -0
  71. package/dist/types/effect.d.ts.map +1 -0
  72. package/dist/types/effect.js +19 -123
  73. package/dist/types/effect.js.map +1 -0
  74. package/dist/types/option.d.ts +11 -0
  75. package/dist/types/option.d.ts.map +1 -0
  76. package/dist/types/option.js +1 -0
  77. package/dist/types/option.js.map +1 -0
  78. package/package.json +19 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fromPromise.js","sourceRoot":"","sources":["../../src/examples/fromPromise.ts"],"names":[],"mappings":";;AAgBA,oDAuBC;AAvCD,sDAA4G;AAC5G,4CAAuC;AACvC,6CAAkE;AAClE,6CAAwC;AAExC,6BAA6B;AAC7B,SAAS,cAAc,CAAC,EAAU,EAAE,MAAmB;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5B,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC9B,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAClC,YAAY,CAAC,CAAC,CAAC,CAAC;YAChB,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAgB,oBAAoB,CAChC,KAAa,EACb,GAAW,EACX,SAAiB;IAEjB,MAAM,EAAE,GAAG,CAAC,CAAS,EAAmC,EAAE,CACtD,IAAA,iBAAQ,EACJ,CAAC,GAAG,GAAG;QACH,CAAC,CAAC,IAAA,uBAAS,EAAC,aAAI,CAAC;QACjB,CAAC,CAAC,IAAA,0BAAY,EACV,IAAA,kCAAoB,EAChB,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;YACnB,MAAM,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACxC,OAAO,CAAC,CAAC;QACb,CAAC;QACD,iEAAiE;QACjE,GAAG,EAAE,CAAE,SAAmB,CAC7B,EACD,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,0BAAY,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAA8C,CAAC,CACnF,CACR,CAAC;IAEN,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC;AAGD,KAAK,UAAU,uBAAuB;IAClC,MAAM,CAAC,GAAG,oBAAoB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,IAAA,eAAM,EAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;IAExC,MAAM,GAAG,GAAG,MAAM,IAAA,uBAAS,EAAC,IAAA,sBAAa,EAAC,EAAE,CAAC,EAAE,SAAgB,CAAC,CAAC;IAEjE,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AACD,KAAK,UAAU,sBAAsB;IACjC,MAAM,CAAC,GAAG,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzC,MAAM,GAAG,GAAG,MAAM,IAAA,uBAAS,EAAC,IAAA,sBAAa,EAAC,CAAC,CAAC,EAAE,SAAgB,CAAC,CAAC;IAEhE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1B,wBAAwB;AAC5B,CAAC;AAED,sBAAsB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAE9C,uBAAuB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import "./demo";
2
+ import "./fiberFinalizer";
3
+ import "./resourceExample";
4
+ import "./canceler";
5
+ import "./toPromise";
6
+ import "./fromPromise";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC;AAChB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,mBAAmB,CAAC;AAC3B,OAAO,YAAY,CAAC;AACpB,OAAO,aAAa,CAAA;AACpB,OAAO,eAAe,CAAA"}
@@ -3,4 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  require("./demo");
4
4
  require("./fiberFinalizer");
5
5
  require("./resourceExample");
6
- require("./test-canceler");
6
+ require("./canceler");
7
+ require("./toPromise");
8
+ require("./fromPromise");
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":";;AAAA,kBAAgB;AAChB,4BAA0B;AAC1B,6BAA2B;AAC3B,sBAAoB;AACpB,uBAAoB;AACpB,yBAAsB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=resourceExample.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceExample.d.ts","sourceRoot":"","sources":["../../src/examples/resourceExample.ts"],"names":[],"mappings":""}
@@ -38,3 +38,4 @@ function sleep(ms) {
38
38
  });
39
39
  }
40
40
  main();
41
+ //# sourceMappingURL=resourceExample.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceExample.js","sourceRoot":"","sources":["../../src/examples/resourceExample.ts"],"names":[],"mappings":";AAAA,yBAAyB;;AAEzB,8CAA6C;AAC7C,sDAA0G;AAS1G,SAAS,QAAQ,CAAC,IAAY;IAC1B,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAChC,OAAO;QACH,IAAI;QACJ,MAAM,EAAE,KAAK;QACb,KAAK;YACD,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACvB,CAAC;KACJ,CAAC;AACN,CAAC;AAED,SAAS,IAAI;IACT,IAAA,iBAAS,EAAC,KAAK,CAAC,EAAE;QACd,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,MAAM,OAAO,GACT,IAAA,4BAAc,EACV,IAAA,wBAAU,EAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EACtC,CAAC,IAAI,EAAE,IAAoB,EAAE,EAAE,CAC3B,IAAA,wBAAU,EAAC,GAAG,EAAE;YACZ,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC,CAAC,EACN,KAAK,CACR,CAAC;QAEN,mBAAmB;QACnB,KAAK,CAAC,IAAI,CACN,IAAA,0BAAY,EAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CACzB,IAAA,0BAAY,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAC3B,IAAA,0BAAY,EAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,CACnC,CACJ,EACD,GAAG,CACN,CAAC;QAEF,8CAA8C;QAC9C,UAAU,CAAC,GAAG,EAAE;YACZ,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,KAAK,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC,EAAE,GAAG,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;AACP,CAAC;AACD,SAAS,KAAK,CAAC,EAAU;IACrB,OAAO,IAAA,mBAAK,EAAC,CAAC,CAAC,EAAE,EAAqC,EAAE,EAAE;QACtD,UAAU,CAAC,GAAG,EAAE;YACZ,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9C,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACP,CAAC;AACD,IAAI,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=toPromise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toPromise.d.ts","sourceRoot":"","sources":["../../src/examples/toPromise.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const buffer_1 = require("../stream/buffer");
4
+ const stream_1 = require("../stream/stream");
5
+ const asyncEffect_1 = require("../types/asyncEffect");
6
+ async function testBuffer() {
7
+ const s = (0, stream_1.rangeStream)(1, 10);
8
+ const sb = (0, buffer_1.buffer)(s, 4, "backpressure");
9
+ const out = await (0, asyncEffect_1.toPromise)((0, stream_1.collectStream)(sb), undefined);
10
+ console.log(out);
11
+ }
12
+ testBuffer().catch(console.error);
13
+ //# sourceMappingURL=toPromise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toPromise.js","sourceRoot":"","sources":["../../src/examples/toPromise.ts"],"names":[],"mappings":";;AAAA,6CAAwC;AACxC,6CAA4D;AAC5D,sDAA+C;AAG/C,KAAK,UAAU,UAAU;IACrB,MAAM,CAAC,GAAG,IAAA,oBAAW,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,IAAA,eAAM,EAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;IAExC,MAAM,GAAG,GAAG,MAAM,IAAA,uBAAS,EAAC,IAAA,sBAAa,EAAC,EAAE,CAAC,EAAE,SAAgB,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,UAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { Exit } from "../types/effect";
2
+ import { Async } from "../types/asyncEffect";
3
+ import { Scheduler } from "../scheduler/scheduler";
4
+ export type FiberId = number;
5
+ export type FiberStatus = "Running" | "Done" | "Interrupted";
6
+ export type Interrupted = {
7
+ readonly _tag: "Interrupted";
8
+ };
9
+ export type Fiber<E, A> = {
10
+ readonly id: FiberId;
11
+ readonly status: () => FiberStatus;
12
+ readonly join: (cb: (exit: Exit<E | Interrupted, A>) => void) => void;
13
+ readonly interrupt: () => void;
14
+ readonly addFinalizer: (f: (exit: Exit<E | Interrupted, A>) => void) => void;
15
+ };
16
+ export type BrassError = {
17
+ _tag: "Abort";
18
+ } | {
19
+ _tag: "PromiseRejected";
20
+ reason: unknown;
21
+ };
22
+ export declare function fork<R, E, A>(effect: Async<R, E, A>, env: R, scheduler?: Scheduler): Fiber<E, A>;
23
+ export declare function unsafeRunAsync<R, E, A>(effect: Async<R, E, A>, env: R, cb: (exit: Exit<E | Interrupted, A>) => void): void;
24
+ //# sourceMappingURL=fiber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fiber.d.ts","sourceRoot":"","sources":["../../src/fibers/fiber.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAC,KAAK,EAAY,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAkB,SAAS,EAAC,MAAM,wBAAwB,CAAC;AAGlE,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAC7B,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,aAAa,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAE3D,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI;IACtB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,WAAW,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,WAAW,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC;IACtE,QAAQ,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,WAAW,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC;CAChF,CAAC;AAMF,MAAM,MAAM,UAAU,GAChB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AA4NnD,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACxB,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACtB,GAAG,EAAE,CAAC,EACN,SAAS,GAAE,SAA2B,GACvC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAIb;AAID,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAClC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACtB,GAAG,EAAE,CAAC,EACN,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,WAAW,EAAE,CAAC,CAAC,KAAK,IAAI,GAC7C,IAAI,CAGN"}
@@ -83,15 +83,21 @@ class RuntimeFiber {
83
83
  this.joiners.length = 0;
84
84
  }
85
85
  onSuccess(value) {
86
- const cont = this.stack.pop();
87
- if (!cont) {
86
+ const frame = this.stack.pop();
87
+ if (!frame) {
88
88
  this.notify({ _tag: "Success", value });
89
89
  return;
90
90
  }
91
- this.current = cont(value);
92
- //this.schedule("onSuccess-step");
91
+ this.current = frame._tag === "SuccessCont" ? frame.k(value) : frame.onSuccess(value);
93
92
  }
94
93
  onFailure(error) {
94
+ while (this.stack.length > 0) {
95
+ const frame = this.stack.pop();
96
+ if (frame._tag === "FoldCont") {
97
+ this.current = frame.onFailure(error);
98
+ return;
99
+ }
100
+ }
95
101
  this.notify({ _tag: "Failure", error });
96
102
  }
97
103
  step() {
@@ -121,9 +127,12 @@ class RuntimeFiber {
121
127
  }
122
128
  return;
123
129
  case "FlatMap":
124
- this.stack.push(current.andThen);
130
+ this.stack.push({ _tag: "SuccessCont", k: current.andThen });
131
+ this.current = current.first;
132
+ return;
133
+ case "Fold":
134
+ this.stack.push({ _tag: "FoldCont", onFailure: current.onFailure, onSuccess: current.onSuccess });
125
135
  this.current = current.first;
126
- //this.schedule("flatMap-step");
127
136
  return;
128
137
  case "Async": {
129
138
  if (this.finishing)
@@ -181,3 +190,4 @@ function unsafeRunAsync(effect, env, cb) {
181
190
  const fiber = fork(effect, env);
182
191
  fiber.join(cb);
183
192
  }
193
+ //# sourceMappingURL=fiber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fiber.js","sourceRoot":"","sources":["../../src/fibers/fiber.ts"],"names":[],"mappings":"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"}
@@ -22,3 +22,4 @@ __exportStar(require("./types/effect"), exports);
22
22
  __exportStar(require("./scheduler/scope"), exports);
23
23
  __exportStar(require("./scheduler/scheduler"), exports);
24
24
  __exportStar(require("./types/cancel"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,9 @@
1
+ export * from "./types/effect";
2
+ export * from "./types/asyncEffect";
3
+ export * from "./stream/stream";
4
+ export * from "./types/option";
5
+ export * from "./types/effect";
6
+ export * from "./scheduler/scope";
7
+ export * from "./scheduler/scheduler";
8
+ export * from "./types/cancel";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAE/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,sDAAoC;AACpC,kDAAgC;AAChC,iDAA+B;AAC/B,iDAA+B;AAE/B,oDAAkC;AAClC,wDAAsC;AACtC,iDAA+B"}
@@ -0,0 +1,11 @@
1
+ export type Task = () => void;
2
+ export declare class Scheduler {
3
+ private queue;
4
+ private flushing;
5
+ private requested;
6
+ schedule(task: Task, tag?: string): void;
7
+ private requestFlush;
8
+ private flush;
9
+ }
10
+ export declare const globalScheduler: Scheduler;
11
+ //# sourceMappingURL=scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/scheduler/scheduler.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;AAO9B,qBAAa,SAAS;IAClB,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAG1B,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,GAAE,MAAoB,GAAG,IAAI;IAarD,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,KAAK;CAehB;AAED,eAAO,MAAM,eAAe,WAAkB,CAAC"}
@@ -49,3 +49,4 @@ class Scheduler {
49
49
  }
50
50
  exports.Scheduler = Scheduler;
51
51
  exports.globalScheduler = new Scheduler();
52
+ //# sourceMappingURL=scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/scheduler/scheduler.ts"],"names":[],"mappings":";;;AAOA,MAAa,SAAS;IAAtB;QACY,UAAK,GAAiB,EAAE,CAAC;QACzB,aAAQ,GAAG,KAAK,CAAC;QACjB,cAAS,GAAG,KAAK,CAAC;IAsC9B,CAAC;IApCG,iBAAiB;IACjB,QAAQ,CAAC,IAAU,EAAE,MAAc,WAAW;;QAC1C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,qCAAqC;QACrC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACpB,IAAI,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,0CAAE,GAAG;YACxB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;SAC/C,CAAC,CAAC;IACP,CAAC;IAEO,YAAY;QAChB,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACvC,CAAC;IAEO,KAAK;QACT,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC;gBACrC,IAAI,CAAC;oBAAC,IAAI,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YAC5B,CAAC;QACL,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QACnD,CAAC;IACL,CAAC;CACJ;AAzCD,8BAyCC;AAEY,QAAA,eAAe,GAAG,IAAI,SAAS,EAAE,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { Fiber, Interrupted } from "../fibers/fiber";
2
+ import { Exit } from "../types/effect";
3
+ import { Async } from "../types/asyncEffect";
4
+ export type ScopeId = number;
5
+ export declare class Scope<R> {
6
+ private readonly env;
7
+ readonly id: ScopeId;
8
+ private closed;
9
+ private readonly children;
10
+ private readonly subScopes;
11
+ private readonly finalizers;
12
+ constructor(env: R);
13
+ /** registra un finalizer (LIFO) */
14
+ addFinalizer(f: (exit: Exit<any, any>) => Async<R, any, any>): void;
15
+ /** crea un sub scope */
16
+ subScope(): Scope<R>;
17
+ /** fork en este scope */
18
+ fork<E, A>(eff: Async<R, E, A>, env: R): Fiber<E | Interrupted, A>;
19
+ /** Cierre estructurado */
20
+ close(exit?: Exit<any, any>): void;
21
+ isClosed(): boolean;
22
+ }
23
+ /**
24
+ * Ejecuta una función dentro de un scope estructurado.
25
+ * Al final (éxito o error), se cierra el scope garantizando cleanup.
26
+ */
27
+ export declare function withScope<R, A>(body: (scope: Scope<R>) => A): A;
28
+ //# sourceMappingURL=scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/scheduler/scope.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,EAAE,WAAW,EAAM,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAC,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAC,KAAK,EAAC,MAAM,sBAAsB,CAAC;AAE3C,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAI7B,qBAAa,KAAK,CAAC,CAAC;IASJ,OAAO,CAAC,QAAQ,CAAC,GAAG;IARhC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IAErB,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2D;gBAEzD,GAAG,EAAE,CAAC;IAInC,mCAAmC;IACnC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;IAOnE,wBAAwB;IACxB,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC;IAOpB,yBAAyB;IACzB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,WAAW,EAAE,CAAC,CAAC;IAalE,0BAA0B;IAC1B,KAAK,CAAC,IAAI,GAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAyC,GAAG,IAAI;IAyBzE,QAAQ,IAAI,OAAO;CAGtB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAC1B,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAC7B,CAAC,CAOH"}
@@ -80,3 +80,4 @@ function withScope(body) {
80
80
  scope.close();
81
81
  }
82
82
  }
83
+ //# sourceMappingURL=scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/scheduler/scope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { ZStream } from "./stream";
2
+ export declare function buffer<R, E, A>(stream: ZStream<{} & R, E, A>, capacity: number, strategy?: "backpressure" | "dropping" | "sliding"): ZStream<{} & R, E, A>;
3
+ //# sourceMappingURL=buffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../../src/stream/buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAC,MAAM,UAAU,CAAC;AAe3C,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC1B,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC7B,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,cAAc,GAAG,UAAU,GAAG,SAA0B,GACnE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CA8FvB"}
@@ -1,50 +1,81 @@
1
1
  "use strict";
2
- /*
3
- import {ZStream} from "./stream";
4
-
5
- type Signal<E, A> =
6
- | { _tag: "Elem"; value: A }
7
- | { _tag: "End" }
8
- | { _tag: "Fail"; error: E }
9
- function buffer<R, E, A>(
10
- stream: ZStream<R, E, A>,
11
- capacity: number,
12
- strategy: "backpressure" | "dropping" | "sliding" = "backpressure",
13
- ): ZStream<R, E, A> {
14
- return new ZStream((scope) =>
15
- Async.gen(function* (_) {
16
- const pullUp = yield* _(stream.open(scope))
17
- const q = yield* _(Queue.bounded<Signal<E, A>>(capacity, strategy))
18
-
19
- // Producer fiber: llena la cola
20
- const producer = yield* _(Async.forkScoped(scope, // importante: scoped para que se interrumpa al cerrar
21
- Async.forever(
22
- pullUp.foldCauseAsync(
23
- // upstream terminó/falló
24
- (cause) =>
25
- cause.match({
26
- end: () => q.offer({ _tag: "End" }).unit(),
27
- fail: (e) => q.offer({ _tag: "Fail", error: e }).unit(),
28
- }),
29
- // got elem
30
- (a) => q.offer({ _tag: "Elem", value: a }).unit(),
31
- )
32
- )
33
- ))
34
-
35
- // Downstream Pull
36
- const pullDown: Pull<R, E, A> = q.take().flatMap((sig) => {
37
- switch (sig._tag) {
38
- case "Elem": return Async.succeed(sig.value)
39
- case "End": return Async.fail(None) // fin del stream
40
- case "Fail": return Async.fail(Some(sig.error))
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buffer = buffer;
4
+ const stream_1 = require("./stream");
5
+ const stream_2 = require("./stream");
6
+ const asyncEffect_1 = require("../types/asyncEffect");
7
+ const asyncEffect_2 = require("../types/asyncEffect");
8
+ const option_1 = require("../types/option");
9
+ const fiber_1 = require("../fibers/fiber");
10
+ const queue_1 = require("./queue");
11
+ function buffer(stream, capacity, strategy = "backpressure") {
12
+ let started = false;
13
+ let q = null;
14
+ let producer = null;
15
+ // vamos actualizando el upstream a medida que consumimos
16
+ let upstream = stream;
17
+ /**
18
+ * Convierte `uncons(upstream)` (que falla con Option<E>) en una Signal que NO falla:
19
+ * - Success => Elem(a) y actualiza upstream
20
+ * - Failure(None) => End
21
+ * - Failure(Some(e)) => Fail(e)
22
+ */
23
+ const nextSignal = () => (0, asyncEffect_1.asyncFold)((0, stream_2.uncons)(upstream), (opt) => (0, asyncEffect_2.asyncSucceed)(opt._tag === "None"
24
+ ? { _tag: "End" }
25
+ : { _tag: "Fail", error: opt.value }), ([a, tail]) => (0, asyncEffect_2.asyncSync)(() => {
26
+ upstream = tail;
27
+ return { _tag: "Elem", value: a };
28
+ }));
29
+ const start = (env) => (0, asyncEffect_2.asyncFlatMap)((0, queue_1.bounded)(capacity, strategy), (_q) => {
30
+ q = _q;
31
+ const loop = () => (0, asyncEffect_2.asyncFlatMap)(nextSignal(), (sig) => (0, asyncEffect_2.asyncFlatMap)(q.offer(sig), () => {
32
+ // si llega End/Fail, cortamos el productor
33
+ if (sig._tag === "End" || sig._tag === "Fail") {
34
+ return (0, asyncEffect_2.asyncSucceed)(undefined);
35
+ }
36
+ return loop();
37
+ }));
38
+ producer = (0, fiber_1.fork)(loop(), env);
39
+ started = true;
40
+ return (0, asyncEffect_2.asyncSucceed)(undefined);
41
+ });
42
+ const pullDown = {
43
+ _tag: "Async",
44
+ register: (env, cb) => {
45
+ const go = () => {
46
+ if (!started) {
47
+ (0, fiber_1.fork)(start(env), env).join(() => {
48
+ pullFromQueue(env, cb);
49
+ });
50
+ return;
41
51
  }
42
- })
43
-
44
- // Importante: si el consumidor termina antes,
45
- // el scope debería interrumpir producer automáticamente.
46
- return pullDown
47
- })
48
- )
52
+ pullFromQueue(env, cb);
53
+ };
54
+ go();
55
+ },
56
+ };
57
+ function pullFromQueue(env, cb) {
58
+ const takeEff = q.take();
59
+ (0, fiber_1.fork)(takeEff, env).join((ex) => {
60
+ var _a, _b;
61
+ if (ex._tag !== "Success")
62
+ return; // take no debería fallar
63
+ const sig = ex.value;
64
+ switch (sig._tag) {
65
+ case "Elem":
66
+ cb({ _tag: "Success", value: [sig.value, (0, stream_1.fromPull)(pullDown)] });
67
+ return;
68
+ case "End":
69
+ (_a = producer === null || producer === void 0 ? void 0 : producer.interrupt) === null || _a === void 0 ? void 0 : _a.call(producer);
70
+ cb({ _tag: "Failure", error: option_1.none });
71
+ return;
72
+ case "Fail":
73
+ (_b = producer === null || producer === void 0 ? void 0 : producer.interrupt) === null || _b === void 0 ? void 0 : _b.call(producer);
74
+ cb({ _tag: "Failure", error: (0, option_1.some)(sig.error) });
75
+ return;
76
+ }
77
+ });
78
+ }
79
+ return (0, stream_1.fromPull)(pullDown);
49
80
  }
50
- */
81
+ //# sourceMappingURL=buffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../src/stream/buffer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { Async } from "../types/asyncEffect";
2
+ export type Strategy = "backpressure" | "dropping" | "sliding";
3
+ export type Queue<A> = {
4
+ offer: (a: A) => Async<unknown, never, boolean>;
5
+ take: () => Async<unknown, never, A>;
6
+ size: () => number;
7
+ };
8
+ export declare function bounded<A>(capacity: number, strategy?: Strategy): Async<unknown, unknown, Queue<A>>;
9
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/stream/queue.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,EAAY,MAAM,sBAAsB,CAAC;AAI7D,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/D,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IACnB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,EAAE,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACrC,IAAI,EAAE,MAAM,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,OAAO,CAAC,CAAC,EACrB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,QAAyB,GACpC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAEnC"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bounded = bounded;
4
+ // src/queue.ts
5
+ const asyncEffect_1 = require("../types/asyncEffect");
6
+ function bounded(capacity, strategy = "backpressure") {
7
+ return (0, asyncEffect_1.asyncSync)(() => makeQueue(capacity, strategy));
8
+ }
9
+ function makeQueue(capacity, strategy) {
10
+ const items = [];
11
+ const takers = [];
12
+ const offerWaiters = [];
13
+ const removeTaker = (cb) => {
14
+ const i = takers.indexOf(cb);
15
+ if (i >= 0)
16
+ takers.splice(i, 1);
17
+ };
18
+ const removeOfferWaiter = (w) => {
19
+ const i = offerWaiters.indexOf(w);
20
+ if (i >= 0)
21
+ offerWaiters.splice(i, 1);
22
+ };
23
+ const flush = () => {
24
+ // casar items -> takers
25
+ while (takers.length > 0 && items.length > 0) {
26
+ const t = takers.shift();
27
+ const a = items.shift();
28
+ t(a);
29
+ }
30
+ // si hay espacio, liberar offerWaiters (backpressure)
31
+ while (offerWaiters.length > 0 && items.length < capacity && takers.length === 0) {
32
+ const w = offerWaiters.shift();
33
+ items.push(w.a);
34
+ w.cb(true);
35
+ }
36
+ // casar directo offerWaiters -> takers
37
+ while (takers.length > 0 && offerWaiters.length > 0) {
38
+ const t = takers.shift();
39
+ const w = offerWaiters.shift();
40
+ t(w.a);
41
+ w.cb(true);
42
+ }
43
+ };
44
+ return {
45
+ size: () => items.length,
46
+ offer: (a) => (0, asyncEffect_1.async)((_env, cb) => {
47
+ // entregar directo si hay taker esperando
48
+ if (takers.length > 0) {
49
+ const t = takers.shift();
50
+ t(a);
51
+ cb({ _tag: "Success", value: true });
52
+ return;
53
+ }
54
+ // hay espacio -> encolar
55
+ if (items.length < capacity) {
56
+ items.push(a);
57
+ cb({ _tag: "Success", value: true });
58
+ return;
59
+ }
60
+ // lleno -> estrategia
61
+ if (strategy === "dropping") {
62
+ cb({ _tag: "Success", value: false });
63
+ return;
64
+ }
65
+ if (strategy === "sliding") {
66
+ items.shift();
67
+ items.push(a);
68
+ cb({ _tag: "Success", value: true });
69
+ return;
70
+ }
71
+ // backpressure: suspender
72
+ const waiter = { a, cb: (ok) => cb({ _tag: "Success", value: ok }) };
73
+ offerWaiters.push(waiter);
74
+ // canceler: saca al waiter si se interrumpe
75
+ return () => removeOfferWaiter(waiter);
76
+ }),
77
+ take: () => (0, asyncEffect_1.async)((_env, cb) => {
78
+ if (items.length > 0) {
79
+ const a = items.shift();
80
+ cb({ _tag: "Success", value: a });
81
+ flush();
82
+ return;
83
+ }
84
+ // si hay offerWaiter esperando, casar directo
85
+ if (offerWaiters.length > 0) {
86
+ const w = offerWaiters.shift();
87
+ w.cb(true);
88
+ cb({ _tag: "Success", value: w.a });
89
+ return;
90
+ }
91
+ const taker = (a) => cb({ _tag: "Success", value: a });
92
+ takers.push(taker);
93
+ // canceler: saca al taker si se interrumpe
94
+ return () => removeTaker(taker);
95
+ }),
96
+ };
97
+ }
98
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/stream/queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { ZIO } from "../types/effect.js";
2
+ import { Option } from "../types/option.js";
3
+ import { Async } from "../types/asyncEffect";
4
+ export type Empty<R, E, A> = {
5
+ readonly _tag: "Empty";
6
+ };
7
+ export type Emit<R, E, A> = {
8
+ readonly _tag: "Emit";
9
+ readonly value: ZIO<R, E, A>;
10
+ };
11
+ export type Concat<R, E, A> = {
12
+ readonly _tag: "Concat";
13
+ readonly left: ZStream<R, E, A>;
14
+ readonly right: ZStream<R, E, A>;
15
+ };
16
+ export type Flatten<R, E, A> = {
17
+ readonly _tag: "Flatten";
18
+ readonly stream: ZStream<R, E, ZStream<R, E, A>>;
19
+ };
20
+ export type FromPull<R, E, A> = {
21
+ readonly _tag: "FromPull";
22
+ readonly pull: ZIO<R, Option<E>, [A, ZStream<R, E, A>]>;
23
+ };
24
+ export type ZStream<R, E, A> = Empty<R, E, A> | Emit<R, E, A> | Concat<R, E, A> | FromPull<R, E, A> | Flatten<R, E, A>;
25
+ export declare const fromPull: <R, E, A>(pull: ZIO<R, Option<E>, [A, ZStream<R, E, A>]>) => ZStream<R, E, A>;
26
+ export declare const emptyStream: <R, E, A>() => ZStream<R, E, A>;
27
+ export declare const emitStream: <R, E, A>(value: ZIO<R, E, A>) => ZStream<R, E, A>;
28
+ export declare const concatStream: <R, E, A>(left: ZStream<R, E, A>, right: ZStream<R, E, A>) => ZStream<R, E, A>;
29
+ export declare const flattenStream: <R, E, A>(stream: ZStream<R, E, ZStream<R, E, A>>) => ZStream<R, E, A>;
30
+ export declare function uncons<R, E, A>(self: ZStream<R, E, A>): ZIO<R, Option<E>, [A, ZStream<R, E, A>]>;
31
+ export declare function mapStream<R, E, A, B>(self: ZStream<R, E, A>, f: (a: A) => B): ZStream<R, E, B>;
32
+ export declare function rangeStream(start: number, end: number): ZStream<unknown, never, number>;
33
+ export declare function zip<R, E1, A, E2, B>(left: ZStream<R, E1, A>, right: ZStream<R, E2, B>): ZStream<R, E1 | E2, [A, B]>;
34
+ export declare function foreachStream<R, E, A, R2, E2>(stream: ZStream<R, E, A>, f: (a: A) => Async<R2, E2, void>): Async<R & R2, E | E2, void>;
35
+ export declare function fromArray<A>(values: readonly A[]): ZStream<unknown, never, A>;
36
+ export declare function collectStream<R, E, A>(stream: ZStream<R, E, A>): ZIO<R, E, A[]>;
37
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream/stream.ts"],"names":[],"mappings":"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"}