@effect/platform 0.34.0 → 0.35.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 (40) hide show
  1. package/Transferable/package.json +6 -0
  2. package/dist/cjs/Transferable.js +26 -0
  3. package/dist/cjs/Transferable.js.map +1 -0
  4. package/dist/cjs/Worker.js +16 -1
  5. package/dist/cjs/Worker.js.map +1 -1
  6. package/dist/cjs/WorkerRunner.js +6 -1
  7. package/dist/cjs/WorkerRunner.js.map +1 -1
  8. package/dist/cjs/internal/worker.js +63 -1
  9. package/dist/cjs/internal/worker.js.map +1 -1
  10. package/dist/cjs/internal/workerRunner.js +42 -1
  11. package/dist/cjs/internal/workerRunner.js.map +1 -1
  12. package/dist/dts/Transferable.d.ts +21 -0
  13. package/dist/dts/Transferable.d.ts.map +1 -0
  14. package/dist/dts/Worker.d.ts +72 -0
  15. package/dist/dts/Worker.d.ts.map +1 -1
  16. package/dist/dts/WorkerRunner.d.ts +11 -0
  17. package/dist/dts/WorkerRunner.d.ts.map +1 -1
  18. package/dist/esm/Transferable.js +19 -0
  19. package/dist/esm/Transferable.js.map +1 -0
  20. package/dist/esm/Worker.js +15 -0
  21. package/dist/esm/Worker.js.map +1 -1
  22. package/dist/esm/WorkerRunner.js +5 -0
  23. package/dist/esm/WorkerRunner.js.map +1 -1
  24. package/dist/esm/internal/worker.js +59 -0
  25. package/dist/esm/internal/worker.js.map +1 -1
  26. package/dist/esm/internal/workerRunner.js +40 -0
  27. package/dist/esm/internal/workerRunner.js.map +1 -1
  28. package/package.json +10 -10
  29. package/src/Transferable.ts +28 -0
  30. package/src/Worker.ts +110 -0
  31. package/src/WorkerRunner.ts +26 -0
  32. package/src/internal/worker.ts +111 -0
  33. package/src/internal/workerRunner.ts +69 -0
  34. package/dist/cjs/index.js +0 -60
  35. package/dist/cjs/index.js.map +0 -1
  36. package/dist/dts/index.d.ts +0 -57
  37. package/dist/dts/index.d.ts.map +0 -1
  38. package/dist/esm/index.js +0 -57
  39. package/dist/esm/index.js.map +0 -1
  40. package/src/index.ts +0 -69
@@ -14,4 +14,9 @@ export const PlatformRunner = internal.PlatformRunner;
14
14
  * @category constructors
15
15
  */
16
16
  export const make = internal.make;
17
+ /**
18
+ * @since 1.0.0
19
+ * @category constructors
20
+ */
21
+ export const makeSerialized = internal.makeSerialized;
17
22
  //# sourceMappingURL=WorkerRunner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerRunner.js","names":["internal","PlatformRunnerTypeId","PlatformRunner","make"],"sources":["../../src/WorkerRunner.ts"],"sourcesContent":[null],"mappings":"AASA,OAAO,KAAKA,QAAQ,MAAM,4BAA4B;AAyBtD;;;;AAIA,OAAO,MAAMC,oBAAoB,GAAkBD,QAAQ,CAACC,oBAAoB;AAiBhF;;;;AAIA,OAAO,MAAMC,cAAc,GAAgDF,QAAQ,CAACE,cAAc;AAiBlG;;;;AAIA,OAAO,MAAMC,IAAI,GAG0DH,QAAQ,CAACG,IAAI"}
1
+ {"version":3,"file":"WorkerRunner.js","names":["internal","PlatformRunnerTypeId","PlatformRunner","make","makeSerialized"],"sources":["../../src/WorkerRunner.ts"],"sourcesContent":[null],"mappings":"AAWA,OAAO,KAAKA,QAAQ,MAAM,4BAA4B;AAyBtD;;;;AAIA,OAAO,MAAMC,oBAAoB,GAAkBD,QAAQ,CAACC,oBAAoB;AAiBhF;;;;AAIA,OAAO,MAAMC,cAAc,GAAgDF,QAAQ,CAACE,cAAc;AAiBlG;;;;AAIA,OAAO,MAAMC,IAAI,GAG0DH,QAAQ,CAACG,IAAI;AAExF;;;;AAIA,OAAO,MAAMC,cAAc,GAkBvBJ,QAAQ,CAACI,cAAc"}
@@ -1,3 +1,5 @@
1
+ import * as Schema from "@effect/schema/Schema";
2
+ import * as Serializable from "@effect/schema/Serializable";
1
3
  import * as Cause from "effect/Cause";
2
4
  import * as Channel from "effect/Channel";
3
5
  import * as Chunk from "effect/Chunk";
@@ -11,6 +13,7 @@ import * as Layer from "effect/Layer";
11
13
  import * as Pool from "effect/Pool";
12
14
  import * as Queue from "effect/Queue";
13
15
  import * as Stream from "effect/Stream";
16
+ import * as Transferable from "../Transferable.js";
14
17
  /** @internal */
15
18
  export const defaultQueue = () => Effect.map(Queue.unbounded(), queue => ({
16
19
  offer: (id, item) => Queue.offer(queue, [id, item]),
@@ -147,4 +150,60 @@ export const makePool = () => options => Effect.gen(function* (_) {
147
150
  });
148
151
  /** @internal */
149
152
  export const makePoolLayer = managerLayer => (tag, options) => Layer.scoped(tag, makePool()(options)).pipe(Layer.provide(managerLayer));
153
+ /** @internal */
154
+ export const makeSerialized = options => Effect.gen(function* (_) {
155
+ const manager = yield* _(WorkerManager);
156
+ const backing = yield* _(manager.spawn({
157
+ ...options,
158
+ transfers(message) {
159
+ return Transferable.get(message);
160
+ }
161
+ }));
162
+ const execute = message => {
163
+ const parseSuccess = Schema.decode(Serializable.successSchema(message));
164
+ const parseFailure = Schema.decode(Serializable.failureSchema(message));
165
+ return pipe(Serializable.serialize(message), Stream.flatMap(message => backing.execute(message)), Stream.catchAll(error => Effect.flatMap(parseFailure(error), Effect.fail)), Stream.mapEffect(parseSuccess));
166
+ };
167
+ const executeEffect = message => {
168
+ const parseSuccess = Schema.decode(Serializable.successSchema(message));
169
+ const parseFailure = Schema.decode(Serializable.failureSchema(message));
170
+ return pipe(Serializable.serialize(message), Effect.flatMap(message => backing.executeEffect(message)), Effect.matchEffect({
171
+ onFailure: error => Effect.flatMap(parseFailure(error), Effect.fail),
172
+ onSuccess: parseSuccess
173
+ }));
174
+ };
175
+ return identity({
176
+ id: backing.id,
177
+ join: backing.join,
178
+ execute: execute,
179
+ executeEffect: executeEffect
180
+ });
181
+ });
182
+ /** @internal */
183
+ export const makePoolSerialized = () => options => Effect.gen(function* (_) {
184
+ const manager = yield* _(WorkerManager);
185
+ const workers = new Set();
186
+ const acquire = pipe(makeSerialized(options), Effect.tap(worker => Effect.sync(() => workers.add(worker))), Effect.tap(worker => Effect.addFinalizer(() => Effect.sync(() => workers.delete(worker)))), options.onCreate ? Effect.tap(options.onCreate) : identity, Effect.provideService(WorkerManager, manager));
187
+ const backing = yield* _("timeToLive" in options ? Pool.makeWithTTL({
188
+ acquire,
189
+ min: options.minSize,
190
+ max: options.maxSize,
191
+ timeToLive: options.timeToLive
192
+ }) : Pool.make({
193
+ acquire,
194
+ size: options.size
195
+ }));
196
+ const pool = {
197
+ backing,
198
+ broadcast: message => Effect.forEach(workers, worker => worker.executeEffect(message), {
199
+ concurrency: "unbounded",
200
+ discard: true
201
+ }),
202
+ execute: message => Stream.unwrap(Effect.map(Effect.scoped(backing.get), worker => worker.execute(message))),
203
+ executeEffect: message => Effect.flatMap(Effect.scoped(backing.get), worker => worker.executeEffect(message))
204
+ };
205
+ return pool;
206
+ });
207
+ /** @internal */
208
+ export const makePoolSerializedLayer = managerLayer => (tag, options) => Layer.scoped(tag, makePoolSerialized()(options)).pipe(Layer.provide(managerLayer));
150
209
  //# sourceMappingURL=worker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","names":["Cause","Channel","Chunk","Context","Deferred","Effect","Exit","Fiber","identity","pipe","Layer","Pool","Queue","Stream","defaultQueue","map","unbounded","queue","offer","id","item","take","shutdown","PlatformWorkerTypeId","Symbol","for","PlatformWorker","Tag","WorkerManagerTypeId","WorkerManager","makeManager","gen","_","platform","idCounter","of","spawn","encode","permits","transfers","requestIdCounter","readyLatch","make","semaphore","makeSemaphore","requestMap","Map","outbound","addFinalizer","backing","zipRight","forEach","values","failCause","empty","discard","sync","clear","handleMessage","msg","suspend","complete","unit","response","get","succeed","length","fail","die","executeAcquire","request","tap","all","deferred","set","executeRelease","exit","release","delete","isInterrupted","ignore","send","execute","flatMap","acquireRelease","loop","match","onFailure","cause","isEmpty","onSuccess","value","write","fromChannel","executeEffect","acquireUseRelease","flatten","handleMessages","forever","forkScoped","postMessages","result","transferables","payload","catchAllCause","await","ensuring","fork","postMessagesFiber","join","joinAll","fiber","parallelFinalizers","layerManager","effect","makePool","options","manager","workers","Set","acquire","worker","add","onCreate","makeWithTTL","min","minSize","max","maxSize","timeToLive","size","pool","broadcast","message","concurrency","unwrap","scoped","makePoolLayer","managerLayer","tag","provide"],"sources":["../../../src/internal/worker.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,IAAI,MAAM,aAAa;AACnC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,QAAQ,EAAEC,IAAI,QAAQ,iBAAiB;AAChD,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,IAAI,MAAM,aAAa;AACnC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAIvC;AACA,OAAO,MAAMC,YAAY,GAAGA,CAAA,KAC1BT,MAAM,CAACU,GAAG,CACRH,KAAK,CAACI,SAAS,EAAkC,EAChDC,KAAK,KAA6B;EACjCC,KAAK,EAAEA,CAACC,EAAE,EAAEC,IAAI,KAAKR,KAAK,CAACM,KAAK,CAACD,KAAK,EAAE,CAACE,EAAE,EAAEC,IAAI,CAAC,CAAC;EACnDC,IAAI,EAAET,KAAK,CAACS,IAAI,CAACJ,KAAK,CAAC;EACvBK,QAAQ,EAAEV,KAAK,CAACU,QAAQ,CAACL,KAAK;CAC/B,CAAC,CACH;AAEH;AACA,OAAO,MAAMM,oBAAoB,gBAAgCC,MAAM,CAACC,GAAG,CACzE,wCAAwC,CACV;AAEhC;AACA,OAAO,MAAMC,cAAc,gBAAGvB,OAAO,CAACwB,GAAG,CACvCJ,oBAAoB,CACrB;AAED;AACA,OAAO,MAAMK,mBAAmB,gBAA+BJ,MAAM,CAACC,GAAG,CACvE,uCAAuC,CACV;AAE/B;AACA,OAAO,MAAMI,aAAa,gBAAG1B,OAAO,CAACwB,GAAG,CACtCC,mBAAmB,CACpB;AAED;AACA,OAAO,MAAME,WAAW,gBAAGzB,MAAM,CAAC0B,GAAG,CAAC,WAAUC,CAAC;EAC/C,MAAMC,QAAQ,GAAG,OAAOD,CAAC,CAACN,cAAc,CAAC;EACzC,IAAIQ,SAAS,GAAG,CAAC;EACjB,OAAOL,aAAa,CAACM,EAAE,CAAC;IACtB,CAACP,mBAAmB,GAAGA,mBAAmB;IAC1CQ,KAAKA,CAAU;MAAEC,MAAM;MAAEC,OAAO,GAAG,CAAC;MAAErB,KAAK;MAAEmB,KAAK;MAAEG,SAAS,GAAIP,CAAC,IAAK;IAAE,CAA4B;MACnG,OAAO3B,MAAM,CAAC0B,GAAG,CAAC,WAAUC,CAAC;QAC3B,MAAMb,EAAE,GAAGe,SAAS,EAAE;QACtB,IAAIM,gBAAgB,GAAG,CAAC;QACxB,MAAMC,UAAU,GAAG,OAAOT,CAAC,CAAC5B,QAAQ,CAACsC,IAAI,EAAe,CAAC;QACzD,MAAMC,SAAS,GAAG,OAAOX,CAAC,CAAC3B,MAAM,CAACuC,aAAa,CAACN,OAAO,CAAC,CAAC;QACzD,MAAMO,UAAU,GAAG,IAAIC,GAAG,EAGvB;QAEH,MAAMC,QAAQ,GAAG9B,KAAK,KAAK,OAAOe,CAAC,CAAClB,YAAY,EAAK,CAAC,CAAC;QACvD,OAAOkB,CAAC,CAAC3B,MAAM,CAAC2C,YAAY,CAAC,MAAMD,QAAQ,CAACzB,QAAQ,CAAC,CAAC;QAEtD,MAAM2B,OAAO,GAAG,OAAOjB,CAAC,CACtBC,QAAQ,CAACG,KAAK,CAAsDA,KAAK,CAACjB,EAAE,CAAC,CAAC,CAC/E;QAED,OAAOa,CAAC,CAAC3B,MAAM,CAAC2C,YAAY,CAAC,MAC3B3C,MAAM,CAAC6C,QAAQ,CACb7C,MAAM,CAAC8C,OAAO,CAACN,UAAU,CAACO,MAAM,EAAE,EAAE,CAAC,CAACnC,KAAK,CAAC,KAAKL,KAAK,CAACM,KAAK,CAACD,KAAK,EAAEX,IAAI,CAAC+C,SAAS,CAACrD,KAAK,CAACsD,KAAK,CAAC,CAAC,EAAE;UAChGC,OAAO,EAAE;SACV,CAAC,EACFlD,MAAM,CAACmD,IAAI,CAAC,MAAMX,UAAU,CAACY,KAAK,EAAE,CAAC,CACtC,CACF,CAAC;QAEF,MAAMC,aAAa,GAAIC,GAA+D,IACpFtD,MAAM,CAACuD,OAAO,CAAC,MAAK;UAClB,QAAQD,GAAG,CAAC,CAAC,CAAC;YACZ,KAAK,CAAC;cAAE;gBACN,OAAOvD,QAAQ,CAACyD,QAAQ,CAACpB,UAAU,EAAEpC,MAAM,CAACyD,IAAI,CAAC;cACnD;YACA,KAAK,CAAC;cAAE;gBACN,MAAMC,QAAQ,GAAGJ,GAAG,CAAC,CAAC,CAAC;gBACvB,MAAM1C,KAAK,GAAG4B,UAAU,CAACmB,GAAG,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACzC,IAAI,CAAC9C,KAAK,EAAE,OAAOZ,MAAM,CAACyD,IAAI;gBAE9B,QAAQC,QAAQ,CAAC,CAAC,CAAC;kBACjB;kBACA,KAAK,CAAC;oBAAE;sBACN,OAAOnD,KAAK,CAACM,KAAK,CAACD,KAAK,CAAC,CAAC,CAAC,EAAEX,IAAI,CAAC2D,OAAO,CAACF,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzD;kBACA;kBACA,KAAK,CAAC;oBAAE;sBACN,OAAOA,QAAQ,CAACG,MAAM,KAAK,CAAC,GAC1BtD,KAAK,CAACM,KAAK,CAACD,KAAK,CAAC,CAAC,CAAC,EAAEX,IAAI,CAAC+C,SAAS,CAACrD,KAAK,CAACsD,KAAK,CAAC,CAAC,GAClDjD,MAAM,CAAC6C,QAAQ,CACbtC,KAAK,CAACM,KAAK,CAACD,KAAK,CAAC,CAAC,CAAC,EAAEX,IAAI,CAAC2D,OAAO,CAACF,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAChDnD,KAAK,CAACM,KAAK,CAACD,KAAK,CAAC,CAAC,CAAC,EAAEX,IAAI,CAAC+C,SAAS,CAACrD,KAAK,CAACsD,KAAK,CAAC,CAAC,CACnD;oBACL;kBACA;kBACA,KAAK,CAAC;kBACN,KAAK,CAAC;oBAAE;sBACN,OAAO1C,KAAK,CAACM,KAAK,CAChBD,KAAK,CAAC,CAAC,CAAC,EACR8C,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GACbzD,IAAI,CAAC6D,IAAI,CAACJ,QAAQ,CAAC,CAAC,CAAC,CAAC,GACtBzD,IAAI,CAAC8D,GAAG,CAACL,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC1B;oBACH;gBACF;cACF;UACF;QACF,CAAC,CAAC;QAEJ,MAAMM,cAAc,GAAIC,OAAU,IAChCjE,MAAM,CAACkE,GAAG,CACRlE,MAAM,CAACmE,GAAG,CAAC,CACTnE,MAAM,CAACmD,IAAI,CAAC,MAAMhB,gBAAgB,EAAE,CAAC,EACrC5B,KAAK,CAACI,SAAS,EAAiC,EAChDZ,QAAQ,CAACsC,IAAI,EAAe,CAC7B,CAAC,EACF,CAAC,CAACvB,EAAE,EAAEF,KAAK,EAAEwD,QAAQ,CAAC,KACpBpE,MAAM,CAACuD,OAAO,CAAC,MAAK;UAClBf,UAAU,CAAC6B,GAAG,CAACvD,EAAE,EAAE,CAACF,KAAK,EAAEwD,QAAQ,CAAC,CAAC;UACrC,OAAO1B,QAAQ,CAAC7B,KAAK,CAACC,EAAE,EAAEmD,OAAO,CAAC;QACpC,CAAC,CAAC,CACL;QAEH,MAAMK,cAAc,GAAGA,CACrB,CAACxD,EAAE,GAAIsD,QAAQ,CAAuF,EACtGG,IAAiC,KAC/B;UACF,MAAMC,OAAO,GAAGxE,MAAM,CAAC6C,QAAQ,CAC7B9C,QAAQ,CAACyD,QAAQ,CAACY,QAAQ,EAAEpE,MAAM,CAACyD,IAAI,CAAC,EACxCzD,MAAM,CAACmD,IAAI,CAAC,MAAMX,UAAU,CAACiC,MAAM,CAAC3D,EAAE,CAAC,CAAC,CACzC;UACD,OAAOb,IAAI,CAACyE,aAAa,CAACH,IAAI,CAAC,GAC7BvE,MAAM,CAAC6C,QAAQ,CACb7C,MAAM,CAAC2E,MAAM,CAAC/B,OAAO,CAACgC,IAAI,CAAC,CAAC9D,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EACpC0D,OAAO,CACR,GACDA,OAAO;QACX,CAAC;QAED,MAAMK,OAAO,GAAIZ,OAAU,IACzBzD,MAAM,CAACsE,OAAO,CACZtE,MAAM,CAACuE,cAAc,CACnBf,cAAc,CAACC,OAAO,CAAC,EACvBK,cAAc,CACf,EACD,CAAC,GAAG1D,KAAK,CAAC,KAAI;UACZ,MAAMoE,IAAI,GACRpF,OAAO,CAACkF,OAAO,CACbvE,KAAK,CAACS,IAAI,CAACJ,KAAK,CAAC,EACjBX,IAAI,CAACgF,KAAK,CAAC;YACTC,SAAS,EAAGC,KAAK,IAAKxF,KAAK,CAACyF,OAAO,CAACD,KAAK,CAAC,GAAGvF,OAAO,CAAC6D,IAAI,GAAG7D,OAAO,CAACoD,SAAS,CAACmC,KAAK,CAAC;YACpFE,SAAS,EAAGC,KAAK,IAAK1F,OAAO,CAACkF,OAAO,CAAClF,OAAO,CAAC2F,KAAK,CAAC1F,KAAK,CAACiC,EAAE,CAACwD,KAAK,CAAC,CAAC,EAAE,MAAMN,IAAI;WACjF,CAAC,CACH;UACH,OAAOxE,MAAM,CAACgF,WAAW,CAACR,IAAI,CAAC;QACjC,CAAC,CACF;QAEH,MAAMS,aAAa,GAAIxB,OAAU,IAC/BjE,MAAM,CAAC0F,iBAAiB,CACtB1B,cAAc,CAACC,OAAO,CAAC,EACvB,CAAC,GAAGrD,KAAK,CAAC,KAAKZ,MAAM,CAAC2F,OAAO,CAACpF,KAAK,CAACS,IAAI,CAACJ,KAAK,CAAC,CAAC,EAChD0D,cAAc,CACf;QAEH,MAAMsB,cAAc,GAAG,OAAOjE,CAAC,CAC7BpB,KAAK,CAACS,IAAI,CAAC4B,OAAO,CAAChC,KAAK,CAAC,EACzBZ,MAAM,CAAC8E,OAAO,CAACzB,aAAa,CAAC,EAC7BrD,MAAM,CAAC6F,OAAO,EACd7F,MAAM,CAAC8F,UAAU,CAClB;QAED,MAAMC,YAAY,GAAG3F,IAAI,CACvBkC,SAAS,CAACtB,IAAI,CAAC,CAAC,CAAC,EACjBhB,MAAM,CAAC6C,QAAQ,CAACH,QAAQ,CAAC1B,IAAI,CAAC,EAC9BhB,MAAM,CAAC8E,OAAO,CAAC,CAAC,CAAChE,EAAE,EAAEmD,OAAO,CAAC,KAC3B7D,IAAI,CACFJ,MAAM,CAACuD,OAAO,CAAC,MAAK;UAClB,MAAMyC,MAAM,GAAGxD,UAAU,CAACmB,GAAG,CAAC7C,EAAE,CAAC;UACjC,IAAI,CAACkF,MAAM,EAAE,OAAOhG,MAAM,CAACyD,IAAI;UAC/B,MAAMwC,aAAa,GAAG/D,SAAS,CAAC+B,OAAO,CAAC;UACxC,MAAMiC,OAAO,GAAGlE,MAAM,GAAGA,MAAM,CAACiC,OAAO,CAAC,GAAGA,OAAO;UAClD,OAAOjE,MAAM,CAAC6C,QAAQ,CACpB7C,MAAM,CAACmG,aAAa,CAClBvD,OAAO,CAACgC,IAAI,CAAC,CAAC9D,EAAE,EAAE,CAAC,EAAEoF,OAAO,CAAC,EAAED,aAAa,CAAC,EAC5Cd,KAAK,IAAK5E,KAAK,CAACM,KAAK,CAACmF,MAAM,CAAC,CAAC,CAAC,EAAE/F,IAAI,CAAC+C,SAAS,CAACmC,KAAK,CAAC,CAAC,CACzD,EACDpF,QAAQ,CAACqG,KAAK,CAACJ,MAAM,CAAC,CAAC,CAAC,CAAC,CAC1B;QACH,CAAC,CAAC,EACFhG,MAAM,CAACqG,QAAQ,CAAC/D,SAAS,CAACkC,OAAO,CAAC,CAAC,CAAC,CAAC,EACrCxE,MAAM,CAACsG,IAAI,CACZ,CACF,EACDtG,MAAM,CAAC6F,OAAO,CACf;QAED,MAAMU,iBAAiB,GAAG,OAAO5E,CAAC,CAChC5B,QAAQ,CAACqG,KAAK,CAAChE,UAAU,CAAC,EAC1BpC,MAAM,CAAC6C,QAAQ,CAACkD,YAAY,CAAC,EAC7B/F,MAAM,CAAC8F,UAAU,CAClB;QAED,MAAMU,IAAI,GAAGtG,KAAK,CAACuG,OAAO,CAAC,CAAC7D,OAAO,CAAC8D,KAAK,EAAEd,cAAc,EAAEW,iBAAiB,CAAC,CAI5E;QAED,OAAO;UAAEzF,EAAE;UAAE0F,IAAI;UAAE3B,OAAO;UAAEY;QAAa,CAAE;MAC7C,CAAC,CAAC,CAACrF,IAAI,CAACJ,MAAM,CAAC2G,kBAAkB,CAAC;IACpC;GACD,CAAC;AACJ,CAAC,CAAC;AAEF;AACA,OAAO,MAAMC,YAAY,gBAAGvG,KAAK,CAACwG,MAAM,CAACrF,aAAa,EAAEC,WAAW,CAAC;AAEpE;AACA,OAAO,MAAMqF,QAAQ,GAAGA,CAAA,KAEtBC,OAAwC,IAExC/G,MAAM,CAAC0B,GAAG,CAAC,WAAUC,CAAC;EACpB,MAAMqF,OAAO,GAAG,OAAOrF,CAAC,CAACH,aAAa,CAAC;EACvC,MAAMyF,OAAO,GAAG,IAAIC,GAAG,EAA0B;EACjD,MAAMC,OAAO,GAAG/G,IAAI,CAClB4G,OAAO,CAACjF,KAAK,CAAUgF,OAAO,CAAC,EAC/B/G,MAAM,CAACkE,GAAG,CAAEkD,MAAM,IAAKpH,MAAM,CAACmD,IAAI,CAAC,MAAM8D,OAAO,CAACI,GAAG,CAACD,MAAM,CAAC,CAAC,CAAC,EAC9DpH,MAAM,CAACkE,GAAG,CAAEkD,MAAM,IAAKpH,MAAM,CAAC2C,YAAY,CAAC,MAAM3C,MAAM,CAACmD,IAAI,CAAC,MAAM8D,OAAO,CAACxC,MAAM,CAAC2C,MAAM,CAAC,CAAC,CAAC,CAAC,EAC5FL,OAAO,CAACO,QAAQ,GAAGtH,MAAM,CAACkE,GAAG,CAAC6C,OAAO,CAACO,QAAQ,CAAC,GAAGnH,QAAQ,CAC3D;EACD,MAAMyC,OAAO,GAAG,OAAOjB,CAAC,CACtB,YAAY,IAAIoF,OAAO,GACrBzG,IAAI,CAACiH,WAAW,CAAC;IACfJ,OAAO;IACPK,GAAG,EAAET,OAAO,CAACU,OAAO;IACpBC,GAAG,EAAEX,OAAO,CAACY,OAAO;IACpBC,UAAU,EAAEb,OAAO,CAACa;GACrB,CAAC,GACFtH,IAAI,CAAC+B,IAAI,CAAC;IACR8E,OAAO;IACPU,IAAI,EAAEd,OAAO,CAACc;GACf,CAAC,CACL;EACD,MAAMC,IAAI,GAA+B;IACvClF,OAAO;IACPmF,SAAS,EAAGC,OAAU,IACpBhI,MAAM,CAAC8C,OAAO,CAACmE,OAAO,EAAGG,MAAM,IAAKA,MAAM,CAAC3B,aAAa,CAACuC,OAAO,CAAC,EAAE;MACjEC,WAAW,EAAE,WAAW;MACxB/E,OAAO,EAAE;KACV,CAAC;IACJ2B,OAAO,EAAGmD,OAAU,IAClBxH,MAAM,CAAC0H,MAAM,CACXlI,MAAM,CAACU,GAAG,CACRV,MAAM,CAACmI,MAAM,CAACvF,OAAO,CAACe,GAAG,CAAC,EACzByD,MAAM,IAAKA,MAAM,CAACvC,OAAO,CAACmD,OAAO,CAAC,CACpC,CACF;IACHvC,aAAa,EAAGuC,OAAU,IACxBhI,MAAM,CAAC8E,OAAO,CACZ9E,MAAM,CAACmI,MAAM,CAACvF,OAAO,CAACe,GAAG,CAAC,EACzByD,MAAM,IAAKA,MAAM,CAAC3B,aAAa,CAACuC,OAAO,CAAC;GAE9C;EAED,OAAOF,IAAI;AACb,CAAC,CAAC;AAEJ;AACA,OAAO,MAAMM,aAAa,GAAOC,YAA6D,IAC9F,CACEC,GAAiD,EACjDvB,OAAwC,KACrC1G,KAAK,CAAC8H,MAAM,CAACG,GAAG,EAAExB,QAAQ,EAAK,CAACC,OAAO,CAAC,CAAC,CAAC3G,IAAI,CAACC,KAAK,CAACkI,OAAO,CAACF,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"worker.js","names":["Schema","Serializable","Cause","Channel","Chunk","Context","Deferred","Effect","Exit","Fiber","identity","pipe","Layer","Pool","Queue","Stream","Transferable","defaultQueue","map","unbounded","queue","offer","id","item","take","shutdown","PlatformWorkerTypeId","Symbol","for","PlatformWorker","Tag","WorkerManagerTypeId","WorkerManager","makeManager","gen","_","platform","idCounter","of","spawn","encode","permits","transfers","requestIdCounter","readyLatch","make","semaphore","makeSemaphore","requestMap","Map","outbound","addFinalizer","backing","zipRight","forEach","values","failCause","empty","discard","sync","clear","handleMessage","msg","suspend","complete","unit","response","get","succeed","length","fail","die","executeAcquire","request","tap","all","deferred","set","executeRelease","exit","release","delete","isInterrupted","ignore","send","execute","flatMap","acquireRelease","loop","match","onFailure","cause","isEmpty","onSuccess","value","write","fromChannel","executeEffect","acquireUseRelease","flatten","handleMessages","forever","forkScoped","postMessages","result","transferables","payload","catchAllCause","await","ensuring","fork","postMessagesFiber","join","joinAll","fiber","parallelFinalizers","layerManager","effect","makePool","options","manager","workers","Set","acquire","worker","add","onCreate","makeWithTTL","min","minSize","max","maxSize","timeToLive","size","pool","broadcast","message","concurrency","unwrap","scoped","makePoolLayer","managerLayer","tag","provide","makeSerialized","parseSuccess","decode","successSchema","parseFailure","failureSchema","serialize","catchAll","error","mapEffect","matchEffect","makePoolSerialized","provideService","makePoolSerializedLayer"],"sources":["../../../src/internal/worker.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -1,11 +1,15 @@
1
+ import * as Schema from "@effect/schema/Schema";
2
+ import * as Serializable from "@effect/schema/Serializable";
1
3
  import * as Cause from "effect/Cause";
2
4
  import * as Context from "effect/Context";
3
5
  import * as Effect from "effect/Effect";
4
6
  import * as Either from "effect/Either";
5
7
  import * as Fiber from "effect/Fiber";
6
8
  import { pipe } from "effect/Function";
9
+ import * as Predicate from "effect/Predicate";
7
10
  import * as Queue from "effect/Queue";
8
11
  import * as Stream from "effect/Stream";
12
+ import * as Transferable from "../Transferable.js";
9
13
  /** @internal */
10
14
  export const PlatformRunnerTypeId = /*#__PURE__*/Symbol.for("@effect/platform/Runner/PlatformRunner");
11
15
  /** @internal */
@@ -51,4 +55,40 @@ export const make = (process, options) => Effect.gen(function* (_) {
51
55
  discard: true
52
56
  }));
53
57
  });
58
+ /** @internal */
59
+ export const makeSerialized = (schema, handlers) => {
60
+ const parseRequest = Schema.decode(schema);
61
+ const effectTags = new Set();
62
+ return make(request => {
63
+ if (Predicate.hasProperty(request, "_tag") && effectTags.has(request._tag)) {
64
+ return Effect.flatMap(parseRequest(request), request => {
65
+ const handler = handlers[request._tag];
66
+ if (!handler) {
67
+ return Effect.dieMessage(`No handler for ${request._tag}`);
68
+ }
69
+ const encodeSuccess = Schema.encode(Serializable.successSchema(request));
70
+ return pipe(Effect.matchEffect(handler(request), {
71
+ onFailure: error => Effect.flatMap(Serializable.serializeFailure(request, error), Effect.fail),
72
+ onSuccess: encodeSuccess
73
+ }));
74
+ });
75
+ }
76
+ return Stream.flatMap(parseRequest(request), request => {
77
+ const handler = handlers[request._tag];
78
+ if (!handler) {
79
+ return Stream.dieMessage(`No handler for ${request._tag}`);
80
+ }
81
+ const encodeSuccess = Schema.encode(Serializable.successSchema(request));
82
+ const stream = handler(request);
83
+ if (Effect.isEffect(stream)) {
84
+ effectTags.add(request._tag);
85
+ }
86
+ return pipe(stream, Stream.catchAll(error => Effect.flatMap(Serializable.serializeFailure(request, error), Effect.fail)), Stream.mapEffect(encodeSuccess));
87
+ });
88
+ }, {
89
+ transfers(message) {
90
+ return Transferable.get(message);
91
+ }
92
+ });
93
+ };
54
94
  //# sourceMappingURL=workerRunner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workerRunner.js","names":["Cause","Context","Effect","Either","Fiber","pipe","Queue","Stream","PlatformRunnerTypeId","Symbol","for","PlatformRunner","Tag","make","process","options","gen","_","platform","backing","start","fiberMap","Map","handleRequests","take","queue","tap","req","id","fiber","get","unit","interrupt","stream","effect","isEffect","matchCauseEffect","onFailure","cause","match","failureOrCause","onLeft","error","send","onRight","squash","onSuccess","data","transfers","undefined","payload","encode","item","runDrain","ensuring","sync","delete","fork","set","forever","all","join","concurrency","discard"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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"}
1
+ {"version":3,"file":"workerRunner.js","names":["Schema","Serializable","Cause","Context","Effect","Either","Fiber","pipe","Predicate","Queue","Stream","Transferable","PlatformRunnerTypeId","Symbol","for","PlatformRunner","Tag","make","process","options","gen","_","platform","backing","start","fiberMap","Map","handleRequests","take","queue","tap","req","id","fiber","get","unit","interrupt","stream","effect","isEffect","matchCauseEffect","onFailure","cause","match","failureOrCause","onLeft","error","send","onRight","squash","onSuccess","data","transfers","undefined","payload","encode","item","runDrain","ensuring","sync","delete","fork","set","forever","all","join","concurrency","discard","makeSerialized","schema","handlers","parseRequest","decode","effectTags","Set","request","hasProperty","has","_tag","flatMap","handler","dieMessage","encodeSuccess","successSchema","matchEffect","serializeFailure","fail","add","catchAll","mapEffect","message"],"sources":["../../../src/internal/workerRunner.ts"],"sourcesContent":[null],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/platform",
3
- "version": "0.34.0",
3
+ "version": "0.35.0",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -15,19 +15,11 @@
15
15
  "path-browserify": "^1.0.1"
16
16
  },
17
17
  "peerDependencies": {
18
- "@effect/schema": "^0.53.0",
18
+ "@effect/schema": "^0.53.1",
19
19
  "effect": "2.0.0-next.60"
20
20
  },
21
- "main": "./dist/cjs/index.js",
22
- "module": "./dist/esm/index.js",
23
- "types": "./dist/dts/index.d.ts",
24
21
  "exports": {
25
22
  "./package.json": "./package.json",
26
- ".": {
27
- "types": "./dist/dts/index.d.ts",
28
- "import": "./dist/esm/index.js",
29
- "default": "./dist/cjs/index.js"
30
- },
31
23
  "./Command": {
32
24
  "types": "./dist/dts/Command.d.ts",
33
25
  "import": "./dist/esm/Command.js",
@@ -178,6 +170,11 @@
178
170
  "import": "./dist/esm/Terminal.js",
179
171
  "default": "./dist/cjs/Terminal.js"
180
172
  },
173
+ "./Transferable": {
174
+ "types": "./dist/dts/Transferable.d.ts",
175
+ "import": "./dist/esm/Transferable.js",
176
+ "default": "./dist/cjs/Transferable.js"
177
+ },
181
178
  "./Worker": {
182
179
  "types": "./dist/dts/Worker.d.ts",
183
180
  "import": "./dist/esm/Worker.js",
@@ -286,6 +283,9 @@
286
283
  "Terminal": [
287
284
  "./dist/dts/Terminal.d.ts"
288
285
  ],
286
+ "Transferable": [
287
+ "./dist/dts/Transferable.d.ts"
288
+ ],
289
289
  "Worker": [
290
290
  "./dist/dts/Worker.d.ts"
291
291
  ],
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+
5
+ /**
6
+ * @since 1.0.0
7
+ * @category symbols
8
+ */
9
+ export const symbol = Symbol.for("@effect/platform/Transferable")
10
+
11
+ /**
12
+ * @since 1.0.0
13
+ * @category models
14
+ */
15
+ export interface Transferable {
16
+ readonly [symbol]: () => ReadonlyArray<globalThis.Transferable>
17
+ }
18
+
19
+ /**
20
+ * @since 1.0.0
21
+ * @category accessors
22
+ */
23
+ export const get = (u: unknown): ReadonlyArray<globalThis.Transferable> => {
24
+ if (typeof u === "object" && u !== null && symbol in u) {
25
+ return (u as Transferable)[symbol]()
26
+ }
27
+ return []
28
+ }
package/src/Worker.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
+ import type * as ParseResult from "@effect/schema/ParseResult"
5
+ import type * as Schema from "@effect/schema/Schema"
6
+ import type * as Serializable from "@effect/schema/Serializable"
4
7
  import type * as Context from "effect/Context"
5
8
  import type * as Duration from "effect/Duration"
6
9
  import type * as Effect from "effect/Effect"
@@ -210,3 +213,110 @@ export const makePoolLayer: <W>(
210
213
  tag: Context.Tag<Tag, WorkerPool<I, E, O>>,
211
214
  options: WorkerPool.Options<I, W>
212
215
  ) => Layer.Layer<never, never, Tag> = internal.makePoolLayer
216
+
217
+ /**
218
+ * @since 1.0.0
219
+ * @category models
220
+ */
221
+ export interface SerializedWorker<I extends Schema.TaggedRequest.Any> {
222
+ readonly id: number
223
+ readonly join: Effect.Effect<never, WorkerError, never>
224
+ readonly execute: <Req extends I>(
225
+ message: Req
226
+ ) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
227
+ ? Stream.Stream<never, E | WorkerError | ParseResult.ParseError, A>
228
+ : never
229
+ readonly executeEffect: <Req extends I>(
230
+ message: Req
231
+ ) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
232
+ ? Effect.Effect<never, E | WorkerError | ParseResult.ParseError, A>
233
+ : never
234
+ }
235
+
236
+ /**
237
+ * @since 1.0.0
238
+ * @category models
239
+ */
240
+ export declare namespace SerializedWorker {
241
+ /**
242
+ * @since 1.0.0
243
+ * @category models
244
+ */
245
+ export interface Options<I, W = unknown> {
246
+ readonly spawn: (id: number) => W
247
+ readonly permits?: number
248
+ readonly queue?: WorkerQueue<I>
249
+ }
250
+ }
251
+
252
+ /**
253
+ * @since 1.0.0
254
+ * @category models
255
+ */
256
+ export interface SerializedWorkerPool<I extends Schema.TaggedRequest.Any> {
257
+ readonly backing: Pool.Pool<WorkerError, SerializedWorker<I>>
258
+ readonly broadcast: <Req extends I>(
259
+ message: Req
260
+ ) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer _A>
261
+ ? Effect.Effect<never, E | WorkerError | ParseResult.ParseError, void>
262
+ : never
263
+ readonly execute: <Req extends I>(
264
+ message: Req
265
+ ) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
266
+ ? Stream.Stream<never, E | WorkerError | ParseResult.ParseError, A>
267
+ : never
268
+ readonly executeEffect: <Req extends I>(
269
+ message: Req
270
+ ) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
271
+ ? Effect.Effect<never, E | WorkerError | ParseResult.ParseError, A>
272
+ : never
273
+ }
274
+
275
+ /**
276
+ * @since 1.0.0
277
+ * @category models
278
+ */
279
+ export declare namespace SerializedWorkerPool {
280
+ /**
281
+ * @since 1.0.0
282
+ * @category models
283
+ */
284
+ export type Options<I, W = unknown> =
285
+ & SerializedWorker.Options<I, W>
286
+ & ({
287
+ readonly onCreate?: (worker: Worker<I, unknown, unknown>) => Effect.Effect<never, WorkerError, void>
288
+ readonly size: number
289
+ } | {
290
+ readonly onCreate?: (worker: Worker<I, unknown, unknown>) => Effect.Effect<never, WorkerError, void>
291
+ readonly minSize: number
292
+ readonly maxSize: number
293
+ readonly timeToLive: Duration.DurationInput
294
+ })
295
+ }
296
+
297
+ /**
298
+ * @since 1.0.0
299
+ * @category constructors
300
+ */
301
+ export const makeSerialized: <I extends Schema.TaggedRequest.Any, W = unknown>(
302
+ options: SerializedWorker.Options<I, W>
303
+ ) => Effect.Effect<WorkerManager | Scope.Scope, WorkerError, SerializedWorker<I>> = internal.makeSerialized
304
+
305
+ /**
306
+ * @since 1.0.0
307
+ * @category constructors
308
+ */
309
+ export const makePoolSerialized: <W>() => <I extends Schema.TaggedRequest.Any>(
310
+ options: SerializedWorkerPool.Options<I, W>
311
+ ) => Effect.Effect<WorkerManager | Scope.Scope, never, SerializedWorkerPool<I>> = internal.makePoolSerialized
312
+
313
+ /**
314
+ * @since 1.0.0
315
+ * @category layers
316
+ */
317
+ export const makePoolSerializedLayer: <W>(
318
+ managerLayer: Layer.Layer<never, never, WorkerManager>
319
+ ) => <Tag, I extends Schema.TaggedRequest.Any>(
320
+ tag: Context.Tag<Tag, SerializedWorkerPool<I>>,
321
+ options: SerializedWorkerPool.Options<I, W>
322
+ ) => Layer.Layer<never, never, Tag> = internal.makePoolSerializedLayer
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
+ import type * as Schema from "@effect/schema/Schema"
5
+ import type * as Serializable from "@effect/schema/Serializable"
4
6
  import type * as Context from "effect/Context"
5
7
  import type * as Effect from "effect/Effect"
6
8
  import type * as Fiber from "effect/Fiber"
@@ -82,3 +84,27 @@ export const make: <I, R, E, O>(
82
84
  process: (request: I) => Stream.Stream<R, E, O> | Effect.Effect<R, E, O>,
83
85
  options?: Runner.Options<O> | undefined
84
86
  ) => Effect.Effect<Scope.Scope | R | PlatformRunner, WorkerError, never> = internal.make
87
+
88
+ /**
89
+ * @since 1.0.0
90
+ * @category constructors
91
+ */
92
+ export const makeSerialized: <
93
+ I,
94
+ A extends Schema.TaggedRequest.Any,
95
+ Handlers extends {
96
+ readonly [K in A["_tag"]]: Extract<A, { readonly _tag: K }> extends
97
+ Serializable.SerializableWithResult<infer _IS, infer S, infer _IE, infer E, infer _IO, infer O>
98
+ ? (_: S) => Stream.Stream<any, E, O> | Effect.Effect<any, E, O> :
99
+ never
100
+ }
101
+ >(
102
+ schema: Schema.Schema<I, A>,
103
+ handlers: Handlers
104
+ ) => Effect.Effect<
105
+ | PlatformRunner
106
+ | Scope.Scope
107
+ | (ReturnType<Handlers[keyof Handlers]> extends Stream.Stream<infer R, infer _E, infer _A> ? R : never),
108
+ WorkerError,
109
+ never
110
+ > = internal.makeSerialized
@@ -1,3 +1,5 @@
1
+ import * as Schema from "@effect/schema/Schema"
2
+ import * as Serializable from "@effect/schema/Serializable"
1
3
  import * as Cause from "effect/Cause"
2
4
  import * as Channel from "effect/Channel"
3
5
  import * as Chunk from "effect/Chunk"
@@ -10,7 +12,9 @@ import { identity, pipe } from "effect/Function"
10
12
  import * as Layer from "effect/Layer"
11
13
  import * as Pool from "effect/Pool"
12
14
  import * as Queue from "effect/Queue"
15
+ import type * as Scope from "effect/Scope"
13
16
  import * as Stream from "effect/Stream"
17
+ import * as Transferable from "../Transferable.js"
14
18
  import type * as Worker from "../Worker.js"
15
19
  import type { WorkerError } from "../WorkerError.js"
16
20
 
@@ -284,3 +288,110 @@ export const makePoolLayer = <W>(managerLayer: Layer.Layer<never, never, Worker.
284
288
  tag: Context.Tag<Tag, Worker.WorkerPool<I, E, O>>,
285
289
  options: Worker.WorkerPool.Options<I, W>
286
290
  ) => Layer.scoped(tag, makePool<W>()(options)).pipe(Layer.provide(managerLayer))
291
+
292
+ /** @internal */
293
+ export const makeSerialized = <
294
+ I extends Schema.TaggedRequest.Any,
295
+ W = unknown
296
+ >(
297
+ options: Worker.SerializedWorker.Options<I, W>
298
+ ): Effect.Effect<Worker.WorkerManager | Scope.Scope, WorkerError, Worker.SerializedWorker<I>> =>
299
+ Effect.gen(function*(_) {
300
+ const manager = yield* _(WorkerManager)
301
+ const backing = yield* _(
302
+ manager.spawn({
303
+ ...options,
304
+ transfers(message) {
305
+ return Transferable.get(message)
306
+ }
307
+ })
308
+ )
309
+ const execute = <Req extends I>(message: Req) => {
310
+ const parseSuccess = Schema.decode(Serializable.successSchema(message as any))
311
+ const parseFailure = Schema.decode(Serializable.failureSchema(message as any))
312
+ return pipe(
313
+ Serializable.serialize(message),
314
+ Stream.flatMap((message) => backing.execute(message)),
315
+ Stream.catchAll((error) => Effect.flatMap(parseFailure(error), Effect.fail)),
316
+ Stream.mapEffect(parseSuccess)
317
+ )
318
+ }
319
+ const executeEffect = <Req extends I>(message: Req) => {
320
+ const parseSuccess = Schema.decode(Serializable.successSchema(message as any))
321
+ const parseFailure = Schema.decode(Serializable.failureSchema(message as any))
322
+ return pipe(
323
+ Serializable.serialize(message),
324
+ Effect.flatMap((message) => backing.executeEffect(message)),
325
+ Effect.matchEffect({
326
+ onFailure: (error) => Effect.flatMap(parseFailure(error), Effect.fail),
327
+ onSuccess: parseSuccess
328
+ })
329
+ )
330
+ }
331
+ return identity<Worker.SerializedWorker<I>>({
332
+ id: backing.id,
333
+ join: backing.join,
334
+ execute: execute as any,
335
+ executeEffect: executeEffect as any
336
+ })
337
+ })
338
+
339
+ /** @internal */
340
+ export const makePoolSerialized = <W>() =>
341
+ <I extends Schema.TaggedRequest.Any>(
342
+ options: Worker.SerializedWorkerPool.Options<I, W>
343
+ ) =>
344
+ Effect.gen(function*(_) {
345
+ const manager = yield* _(WorkerManager)
346
+ const workers = new Set<Worker.SerializedWorker<I>>()
347
+ const acquire = pipe(
348
+ makeSerialized<I, W>(options),
349
+ Effect.tap((worker) => Effect.sync(() => workers.add(worker))),
350
+ Effect.tap((worker) => Effect.addFinalizer(() => Effect.sync(() => workers.delete(worker)))),
351
+ options.onCreate ? Effect.tap(options.onCreate) : identity,
352
+ Effect.provideService(WorkerManager, manager)
353
+ )
354
+ const backing = yield* _(
355
+ "timeToLive" in options ?
356
+ Pool.makeWithTTL({
357
+ acquire,
358
+ min: options.minSize,
359
+ max: options.maxSize,
360
+ timeToLive: options.timeToLive
361
+ }) :
362
+ Pool.make({
363
+ acquire,
364
+ size: options.size
365
+ })
366
+ )
367
+ const pool: Worker.SerializedWorkerPool<I> = {
368
+ backing,
369
+ broadcast: <Req extends I>(message: Req) =>
370
+ Effect.forEach(workers, (worker) => worker.executeEffect(message), {
371
+ concurrency: "unbounded",
372
+ discard: true
373
+ }) as any,
374
+ execute: <Req extends I>(message: Req) =>
375
+ Stream.unwrap(
376
+ Effect.map(
377
+ Effect.scoped(backing.get),
378
+ (worker) => worker.execute(message)
379
+ )
380
+ ) as any,
381
+ executeEffect: <Req extends I>(message: Req) =>
382
+ Effect.flatMap(
383
+ Effect.scoped(backing.get),
384
+ (worker) => worker.executeEffect(message)
385
+ ) as any
386
+ }
387
+
388
+ return pool
389
+ })
390
+
391
+ /** @internal */
392
+ export const makePoolSerializedLayer =
393
+ <W>(managerLayer: Layer.Layer<never, never, Worker.WorkerManager>) =>
394
+ <Tag, I extends Schema.TaggedRequest.Any>(
395
+ tag: Context.Tag<Tag, Worker.SerializedWorkerPool<I>>,
396
+ options: Worker.SerializedWorkerPool.Options<I, W>
397
+ ) => Layer.scoped(tag, makePoolSerialized<W>()(options)).pipe(Layer.provide(managerLayer))