@effect/platform 0.26.0 → 0.26.1
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.
- package/Worker/dist/effect-platform-Worker.cjs.dev.js +3 -1
- package/Worker/dist/effect-platform-Worker.cjs.prod.js +3 -1
- package/Worker/dist/effect-platform-Worker.esm.js +3 -1
- package/WorkerRunner/dist/effect-platform-WorkerRunner.cjs.dev.js +5 -1
- package/WorkerRunner/dist/effect-platform-WorkerRunner.cjs.prod.js +5 -1
- package/WorkerRunner/dist/effect-platform-WorkerRunner.esm.js +5 -1
- package/dist/declarations/src/Worker.d.ts +3 -2
- package/dist/declarations/src/Worker.d.ts.map +1 -1
- package/dist/declarations/src/WorkerRunner.d.ts +1 -0
- package/dist/declarations/src/WorkerRunner.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/Worker.ts +3 -2
- package/src/WorkerRunner.ts +1 -0
- package/src/internal/worker.ts +4 -3
- package/src/internal/workerRunner.ts +6 -2
|
@@ -67,6 +67,7 @@ const makeManager$1 = /*#__PURE__*/Effect__namespace.gen(function* (_) {
|
|
|
67
67
|
return WorkerManager$1.of({
|
|
68
68
|
[WorkerManagerTypeId$1]: WorkerManagerTypeId$1,
|
|
69
69
|
spawn({
|
|
70
|
+
encode,
|
|
70
71
|
permits = 1,
|
|
71
72
|
queue,
|
|
72
73
|
spawn,
|
|
@@ -133,7 +134,8 @@ const makeManager$1 = /*#__PURE__*/Effect__namespace.gen(function* (_) {
|
|
|
133
134
|
const result = requestMap.get(id);
|
|
134
135
|
if (!result) return Effect__namespace.unit;
|
|
135
136
|
const transferables = transfers(request);
|
|
136
|
-
|
|
137
|
+
const payload = encode ? encode(request) : request;
|
|
138
|
+
return Effect__namespace.zipRight(backing.send([id, 0, payload], transferables), Deferred__namespace.await(result[1]));
|
|
137
139
|
}), Effect__namespace.ensuring(semaphore.release(1)), Effect__namespace.fork)), Effect__namespace.forever, Effect__namespace.forkDaemon);
|
|
138
140
|
yield* _(Effect__namespace.addFinalizer(() => postMessages.interruptAsFork(fiberId)));
|
|
139
141
|
const join = Effect__namespace.race(Fiber__namespace.joinAll([handleMessages, postMessages]), backing.join);
|
|
@@ -67,6 +67,7 @@ const makeManager$1 = /*#__PURE__*/Effect__namespace.gen(function* (_) {
|
|
|
67
67
|
return WorkerManager$1.of({
|
|
68
68
|
[WorkerManagerTypeId$1]: WorkerManagerTypeId$1,
|
|
69
69
|
spawn({
|
|
70
|
+
encode,
|
|
70
71
|
permits = 1,
|
|
71
72
|
queue,
|
|
72
73
|
spawn,
|
|
@@ -133,7 +134,8 @@ const makeManager$1 = /*#__PURE__*/Effect__namespace.gen(function* (_) {
|
|
|
133
134
|
const result = requestMap.get(id);
|
|
134
135
|
if (!result) return Effect__namespace.unit;
|
|
135
136
|
const transferables = transfers(request);
|
|
136
|
-
|
|
137
|
+
const payload = encode ? encode(request) : request;
|
|
138
|
+
return Effect__namespace.zipRight(backing.send([id, 0, payload], transferables), Deferred__namespace.await(result[1]));
|
|
137
139
|
}), Effect__namespace.ensuring(semaphore.release(1)), Effect__namespace.fork)), Effect__namespace.forever, Effect__namespace.forkDaemon);
|
|
138
140
|
yield* _(Effect__namespace.addFinalizer(() => postMessages.interruptAsFork(fiberId)));
|
|
139
141
|
const join = Effect__namespace.race(Fiber__namespace.joinAll([handleMessages, postMessages]), backing.join);
|
|
@@ -35,6 +35,7 @@ const makeManager$1 = /*#__PURE__*/Effect.gen(function* (_) {
|
|
|
35
35
|
return WorkerManager$1.of({
|
|
36
36
|
[WorkerManagerTypeId$1]: WorkerManagerTypeId$1,
|
|
37
37
|
spawn({
|
|
38
|
+
encode,
|
|
38
39
|
permits = 1,
|
|
39
40
|
queue,
|
|
40
41
|
spawn,
|
|
@@ -101,7 +102,8 @@ const makeManager$1 = /*#__PURE__*/Effect.gen(function* (_) {
|
|
|
101
102
|
const result = requestMap.get(id);
|
|
102
103
|
if (!result) return Effect.unit;
|
|
103
104
|
const transferables = transfers(request);
|
|
104
|
-
|
|
105
|
+
const payload = encode ? encode(request) : request;
|
|
106
|
+
return Effect.zipRight(backing.send([id, 0, payload], transferables), Deferred.await(result[1]));
|
|
105
107
|
}), Effect.ensuring(semaphore.release(1)), Effect.fork)), Effect.forever, Effect.forkDaemon);
|
|
106
108
|
yield* _(Effect.addFinalizer(() => postMessages.interruptAsFork(fiberId)));
|
|
107
109
|
const join = Effect.race(Fiber.joinAll([handleMessages, postMessages]), backing.join);
|
|
@@ -62,7 +62,11 @@ const make$1 = (process, options) => Effect__namespace.gen(function* (_) {
|
|
|
62
62
|
onRight: cause => backing.send([id, 3, Cause__namespace.squash(cause)])
|
|
63
63
|
}),
|
|
64
64
|
onSuccess: data => backing.send([id, 1, data])
|
|
65
|
-
}) : Function.pipe(stream, Stream__namespace.tap(item =>
|
|
65
|
+
}) : Function.pipe(stream, Stream__namespace.tap(item => {
|
|
66
|
+
const transfers = options?.transfers ? options.transfers(item) : undefined;
|
|
67
|
+
const payload = options?.encode ? options.encode(item) : item;
|
|
68
|
+
return backing.send([id, 0, payload], transfers);
|
|
69
|
+
}), Stream__namespace.runDrain, Effect__namespace.matchCauseEffect({
|
|
66
70
|
onFailure: cause => Either__namespace.match(Cause__namespace.failureOrCause(cause), {
|
|
67
71
|
onLeft: error => backing.send([id, 2, error]),
|
|
68
72
|
onRight: cause => backing.send([id, 3, Cause__namespace.squash(cause)])
|
|
@@ -62,7 +62,11 @@ const make$1 = (process, options) => Effect__namespace.gen(function* (_) {
|
|
|
62
62
|
onRight: cause => backing.send([id, 3, Cause__namespace.squash(cause)])
|
|
63
63
|
}),
|
|
64
64
|
onSuccess: data => backing.send([id, 1, data])
|
|
65
|
-
}) : Function.pipe(stream, Stream__namespace.tap(item =>
|
|
65
|
+
}) : Function.pipe(stream, Stream__namespace.tap(item => {
|
|
66
|
+
const transfers = options?.transfers ? options.transfers(item) : undefined;
|
|
67
|
+
const payload = options?.encode ? options.encode(item) : item;
|
|
68
|
+
return backing.send([id, 0, payload], transfers);
|
|
69
|
+
}), Stream__namespace.runDrain, Effect__namespace.matchCauseEffect({
|
|
66
70
|
onFailure: cause => Either__namespace.match(Cause__namespace.failureOrCause(cause), {
|
|
67
71
|
onLeft: error => backing.send([id, 2, error]),
|
|
68
72
|
onRight: cause => backing.send([id, 3, Cause__namespace.squash(cause)])
|
|
@@ -32,7 +32,11 @@ const make$1 = (process, options) => Effect.gen(function* (_) {
|
|
|
32
32
|
onRight: cause => backing.send([id, 3, Cause.squash(cause)])
|
|
33
33
|
}),
|
|
34
34
|
onSuccess: data => backing.send([id, 1, data])
|
|
35
|
-
}) : pipe(stream, Stream.tap(item =>
|
|
35
|
+
}) : pipe(stream, Stream.tap(item => {
|
|
36
|
+
const transfers = options?.transfers ? options.transfers(item) : undefined;
|
|
37
|
+
const payload = options?.encode ? options.encode(item) : item;
|
|
38
|
+
return backing.send([id, 0, payload], transfers);
|
|
39
|
+
}), Stream.runDrain, Effect.matchCauseEffect({
|
|
36
40
|
onFailure: cause => Either.match(Cause.failureOrCause(cause), {
|
|
37
41
|
onLeft: error => backing.send([id, 2, error]),
|
|
38
42
|
onRight: cause => backing.send([id, 3, Cause.squash(cause)])
|
|
@@ -74,6 +74,7 @@ export declare namespace Worker {
|
|
|
74
74
|
*/
|
|
75
75
|
interface Options<I, W = unknown> {
|
|
76
76
|
readonly spawn: (id: number) => W;
|
|
77
|
+
readonly encode?: (message: I) => unknown;
|
|
77
78
|
readonly transfers?: (message: I) => ReadonlyArray<unknown>;
|
|
78
79
|
readonly permits?: number;
|
|
79
80
|
readonly queue?: WorkerQueue<I>;
|
|
@@ -82,12 +83,12 @@ export declare namespace Worker {
|
|
|
82
83
|
* @since 1.0.0
|
|
83
84
|
* @category models
|
|
84
85
|
*/
|
|
85
|
-
type Request<I> = readonly [id: number, data: 0, I] | readonly [id: number, interrupt: 1];
|
|
86
|
+
type Request<I = unknown> = readonly [id: number, data: 0, I] | readonly [id: number, interrupt: 1];
|
|
86
87
|
/**
|
|
87
88
|
* @since 1.0.0
|
|
88
89
|
* @category models
|
|
89
90
|
*/
|
|
90
|
-
type Response<E, O> = readonly [id: number, data: 0, O] | readonly [id: number, end: 1] | readonly [id: number, end: 1, O] | readonly [id: number, error: 2, E] | readonly [id: number, defect: 3, unknown];
|
|
91
|
+
type Response<E, O = unknown> = readonly [id: number, data: 0, O] | readonly [id: number, end: 1] | readonly [id: number, end: 1, O] | readonly [id: number, error: 2, E] | readonly [id: number, defect: 3, unknown];
|
|
91
92
|
}
|
|
92
93
|
/**
|
|
93
94
|
* @since 1.0.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Worker.d.ts","sourceRoot":"../../../src","sources":["Worker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Worker.d.ts","sourceRoot":"../../../src","sources":["Worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerRunner.d.ts","sourceRoot":"../../../src","sources":["WorkerRunner.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,yBAAqB;AAEhD;;;GAGG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,EAAE,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAC9C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAChC,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;CACrG;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,WAAW,aAAa,CAAC;IACrC;;;OAGG;IACH,KAAY,OAAO,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;CACxE;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,MAAsC,CAAA;AAEhF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAA;AAE9D;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IACrD,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;CACzF;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,CAA2B,CAAA;AAElG;;;GAGG;AACH,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B;;;OAGG;IACH,UAAiB,OAAO,CAAC,CAAC;QACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,aAAa,CAAC,OAAO,CAAC,CAAA;KAC5D;CACF;AAED;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5B,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACxE,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,KACpC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,cAAc,EAAE,WAAW,EAAE,IAAI,CAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"WorkerRunner.d.ts","sourceRoot":"../../../src","sources":["WorkerRunner.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,yBAAqB;AAEhD;;;GAGG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,EAAE,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAC9C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAChC,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;CACrG;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,WAAW,aAAa,CAAC;IACrC;;;OAGG;IACH,KAAY,OAAO,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;CACxE;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,MAAsC,CAAA;AAEhF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAA;AAE9D;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IACrD,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;CACzF;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,CAA2B,CAAA;AAElG;;;GAGG;AACH,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B;;;OAGG;IACH,UAAiB,OAAO,CAAC,CAAC;QACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,CAAA;QACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,aAAa,CAAC,OAAO,CAAC,CAAA;KAC5D;CACF;AAED;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5B,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACxE,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,KACpC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,cAAc,EAAE,WAAW,EAAE,IAAI,CAAiB,CAAA"}
|
package/package.json
CHANGED
package/src/Worker.ts
CHANGED
|
@@ -83,6 +83,7 @@ export declare namespace Worker {
|
|
|
83
83
|
*/
|
|
84
84
|
export interface Options<I, W = unknown> {
|
|
85
85
|
readonly spawn: (id: number) => W
|
|
86
|
+
readonly encode?: (message: I) => unknown
|
|
86
87
|
readonly transfers?: (message: I) => ReadonlyArray<unknown>
|
|
87
88
|
readonly permits?: number
|
|
88
89
|
readonly queue?: WorkerQueue<I>
|
|
@@ -92,13 +93,13 @@ export declare namespace Worker {
|
|
|
92
93
|
* @since 1.0.0
|
|
93
94
|
* @category models
|
|
94
95
|
*/
|
|
95
|
-
export type Request<I> = readonly [id: number, data: 0, I] | readonly [id: number, interrupt: 1]
|
|
96
|
+
export type Request<I = unknown> = readonly [id: number, data: 0, I] | readonly [id: number, interrupt: 1]
|
|
96
97
|
|
|
97
98
|
/**
|
|
98
99
|
* @since 1.0.0
|
|
99
100
|
* @category models
|
|
100
101
|
*/
|
|
101
|
-
export type Response<E, O> =
|
|
102
|
+
export type Response<E, O = unknown> =
|
|
102
103
|
| readonly [id: number, data: 0, O]
|
|
103
104
|
| readonly [id: number, end: 1]
|
|
104
105
|
| readonly [id: number, end: 1, O]
|
package/src/WorkerRunner.ts
CHANGED
package/src/internal/worker.ts
CHANGED
|
@@ -48,7 +48,7 @@ export const makeManager = Effect.gen(function*(_) {
|
|
|
48
48
|
let idCounter = 0
|
|
49
49
|
return WorkerManager.of({
|
|
50
50
|
[WorkerManagerTypeId]: WorkerManagerTypeId,
|
|
51
|
-
spawn<I, E, O>({ permits = 1, queue, spawn, transfers = (_) => [] }: Worker.Worker.Options<I>) {
|
|
51
|
+
spawn<I, E, O>({ encode, permits = 1, queue, spawn, transfers = (_) => [] }: Worker.Worker.Options<I>) {
|
|
52
52
|
return Effect.gen(function*(_) {
|
|
53
53
|
const id = idCounter++
|
|
54
54
|
const fiberId = yield* _(Effect.fiberId)
|
|
@@ -61,7 +61,7 @@ export const makeManager = Effect.gen(function*(_) {
|
|
|
61
61
|
yield* _(Effect.addFinalizer(() => outbound.shutdown))
|
|
62
62
|
|
|
63
63
|
const backing = yield* _(
|
|
64
|
-
platform.spawn<Worker.Worker.Request
|
|
64
|
+
platform.spawn<Worker.Worker.Request, Worker.Worker.Response<E, O>>(spawn(id))
|
|
65
65
|
)
|
|
66
66
|
|
|
67
67
|
yield* _(Effect.addFinalizer(() =>
|
|
@@ -177,8 +177,9 @@ export const makeManager = Effect.gen(function*(_) {
|
|
|
177
177
|
const result = requestMap.get(id)
|
|
178
178
|
if (!result) return Effect.unit
|
|
179
179
|
const transferables = transfers(request)
|
|
180
|
+
const payload = encode ? encode(request) : request
|
|
180
181
|
return Effect.zipRight(
|
|
181
|
-
backing.send([id, 0,
|
|
182
|
+
backing.send([id, 0, payload], transferables),
|
|
182
183
|
Deferred.await(result[1])
|
|
183
184
|
)
|
|
184
185
|
}),
|
|
@@ -26,7 +26,7 @@ export const make = <I, R, E, O>(
|
|
|
26
26
|
) =>
|
|
27
27
|
Effect.gen(function*(_) {
|
|
28
28
|
const platform = yield* _(PlatformRunner)
|
|
29
|
-
const backing = yield* _(platform.start<Worker.Worker.Request<I>, Worker.Worker.Response<E
|
|
29
|
+
const backing = yield* _(platform.start<Worker.Worker.Request<I>, Worker.Worker.Response<E>>())
|
|
30
30
|
const fiberMap = new Map<number, Fiber.Fiber<never, void>>()
|
|
31
31
|
|
|
32
32
|
const handleRequests = pipe(
|
|
@@ -52,7 +52,11 @@ export const make = <I, R, E, O>(
|
|
|
52
52
|
}) :
|
|
53
53
|
pipe(
|
|
54
54
|
stream,
|
|
55
|
-
Stream.tap((item) =>
|
|
55
|
+
Stream.tap((item) => {
|
|
56
|
+
const transfers = options?.transfers ? options.transfers(item) : undefined
|
|
57
|
+
const payload = options?.encode ? options.encode(item) : item
|
|
58
|
+
return backing.send([id, 0, payload], transfers)
|
|
59
|
+
}),
|
|
56
60
|
Stream.runDrain,
|
|
57
61
|
Effect.matchCauseEffect({
|
|
58
62
|
onFailure: (cause) =>
|