@effect/platform 0.22.0 → 0.23.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 (50) hide show
  1. package/Worker/dist/effect-platform-Worker.cjs.d.mts +2 -0
  2. package/Worker/dist/effect-platform-Worker.cjs.d.mts.map +1 -0
  3. package/Worker/dist/effect-platform-Worker.cjs.d.ts +2 -0
  4. package/Worker/dist/effect-platform-Worker.cjs.d.ts.map +1 -0
  5. package/Worker/dist/effect-platform-Worker.cjs.dev.js +291 -0
  6. package/Worker/dist/effect-platform-Worker.cjs.js +7 -0
  7. package/Worker/dist/effect-platform-Worker.cjs.mjs +10 -0
  8. package/Worker/dist/effect-platform-Worker.cjs.prod.js +291 -0
  9. package/Worker/dist/effect-platform-Worker.esm.js +252 -0
  10. package/Worker/package.json +4 -0
  11. package/WorkerError/dist/effect-platform-WorkerError.cjs.d.mts +2 -0
  12. package/WorkerError/dist/effect-platform-WorkerError.cjs.d.mts.map +1 -0
  13. package/WorkerError/dist/effect-platform-WorkerError.cjs.d.ts +2 -0
  14. package/WorkerError/dist/effect-platform-WorkerError.cjs.d.ts.map +1 -0
  15. package/WorkerError/dist/effect-platform-WorkerError.cjs.dev.js +65 -0
  16. package/WorkerError/dist/effect-platform-WorkerError.cjs.js +7 -0
  17. package/WorkerError/dist/effect-platform-WorkerError.cjs.mjs +4 -0
  18. package/WorkerError/dist/effect-platform-WorkerError.cjs.prod.js +65 -0
  19. package/WorkerError/dist/effect-platform-WorkerError.esm.js +40 -0
  20. package/WorkerError/package.json +4 -0
  21. package/WorkerRunner/dist/effect-platform-WorkerRunner.cjs.d.mts +2 -0
  22. package/WorkerRunner/dist/effect-platform-WorkerRunner.cjs.d.mts.map +1 -0
  23. package/WorkerRunner/dist/effect-platform-WorkerRunner.cjs.d.ts +2 -0
  24. package/WorkerRunner/dist/effect-platform-WorkerRunner.cjs.d.ts.map +1 -0
  25. package/WorkerRunner/dist/effect-platform-WorkerRunner.cjs.dev.js +129 -0
  26. package/WorkerRunner/dist/effect-platform-WorkerRunner.cjs.js +7 -0
  27. package/WorkerRunner/dist/effect-platform-WorkerRunner.cjs.mjs +5 -0
  28. package/WorkerRunner/dist/effect-platform-WorkerRunner.cjs.prod.js +129 -0
  29. package/WorkerRunner/dist/effect-platform-WorkerRunner.esm.js +97 -0
  30. package/WorkerRunner/package.json +4 -0
  31. package/dist/declarations/src/Worker.d.ts +170 -0
  32. package/dist/declarations/src/Worker.d.ts.map +1 -0
  33. package/dist/declarations/src/WorkerError.d.ts +30 -0
  34. package/dist/declarations/src/WorkerError.d.ts.map +1 -0
  35. package/dist/declarations/src/WorkerRunner.d.ts +72 -0
  36. package/dist/declarations/src/WorkerRunner.d.ts.map +1 -0
  37. package/dist/declarations/src/index.d.ts +12 -0
  38. package/dist/declarations/src/index.d.ts.map +1 -1
  39. package/dist/effect-platform.cjs.dev.js +9 -0
  40. package/dist/effect-platform.cjs.mjs +4 -1
  41. package/dist/effect-platform.cjs.prod.js +9 -0
  42. package/dist/effect-platform.esm.js +6 -0
  43. package/package.json +27 -6
  44. package/src/Worker.ts +207 -0
  45. package/src/WorkerError.ts +34 -0
  46. package/src/WorkerRunner.ts +83 -0
  47. package/src/index.ts +15 -0
  48. package/src/internal/worker.ts +262 -0
  49. package/src/internal/workerError.ts +16 -0
  50. package/src/internal/workerRunner.ts +83 -0
@@ -0,0 +1,252 @@
1
+ import * as Context from 'effect/Context';
2
+ import * as Deferred from 'effect/Deferred';
3
+ import * as Effect from 'effect/Effect';
4
+ import * as Exit from 'effect/Exit';
5
+ import * as Fiber from 'effect/Fiber';
6
+ import { pipe } from 'effect/Function';
7
+ import * as Layer from 'effect/Layer';
8
+ import * as Pool from 'effect/Pool';
9
+ import * as Queue from 'effect/Queue';
10
+ import * as Stream from 'effect/Stream';
11
+
12
+ /** @internal */
13
+ const defaultQueue = () => Effect.map(Queue.unbounded(), queue => ({
14
+ offer: (id, item) => Queue.offer(queue, [id, item]),
15
+ take: Queue.take(queue),
16
+ shutdown: Queue.shutdown(queue)
17
+ }));
18
+
19
+ /** @internal */
20
+ const PlatformWorkerTypeId$1 = /*#__PURE__*/Symbol.for("@effect/platform/Worker/PlatformWorker");
21
+
22
+ /** @internal */
23
+ const PlatformWorker$1 = /*#__PURE__*/Context.Tag(PlatformWorkerTypeId$1);
24
+
25
+ /** @internal */
26
+ const WorkerManagerTypeId$1 = /*#__PURE__*/Symbol.for("@effect/platform/Worker/WorkerManager");
27
+
28
+ /** @internal */
29
+ const WorkerManager$1 = /*#__PURE__*/Context.Tag(WorkerManagerTypeId$1);
30
+
31
+ /** @internal */
32
+ const makeManager$1 = /*#__PURE__*/Effect.gen(function* (_) {
33
+ const platform = yield* _(PlatformWorker$1);
34
+ let idCounter = 0;
35
+ return WorkerManager$1.of({
36
+ [WorkerManagerTypeId$1]: WorkerManagerTypeId$1,
37
+ spawn({
38
+ permits = 1,
39
+ queue,
40
+ spawn,
41
+ transfers = _ => []
42
+ }) {
43
+ return Effect.gen(function* (_) {
44
+ const id = idCounter++;
45
+ const fiberId = yield* _(Effect.fiberId);
46
+ let requestIdCounter = 0;
47
+ const readyLatch = yield* _(Deferred.make());
48
+ const semaphore = yield* _(Effect.makeSemaphore(permits));
49
+ const requestMap = new Map();
50
+ const outbound = queue ?? (yield* _(defaultQueue()));
51
+ yield* _(Effect.addFinalizer(() => outbound.shutdown));
52
+ const backing = yield* _(platform.spawn(spawn(id)));
53
+ yield* _(Effect.addFinalizer(() => Effect.zipRight(Effect.forEach(requestMap.values(), ([queue]) => Queue.shutdown(queue), {
54
+ discard: true
55
+ }), Effect.sync(() => requestMap.clear()))));
56
+ const handleMessage = msg => Effect.suspend(() => {
57
+ switch (msg[0]) {
58
+ case 0:
59
+ {
60
+ return Deferred.complete(readyLatch, Effect.unit);
61
+ }
62
+ case 1:
63
+ {
64
+ const response = msg[1];
65
+ const queue = requestMap.get(response[0]);
66
+ if (!queue) return Effect.unit;
67
+ switch (response[1]) {
68
+ // data
69
+ case 0:
70
+ {
71
+ return Queue.offer(queue[0], Exit.succeed(response[2]));
72
+ }
73
+ // end
74
+ case 1:
75
+ {
76
+ return response.length === 2 ? Queue.shutdown(queue[0]) : Effect.zipRight(Queue.offer(queue[0], Exit.succeed(response[2])), Queue.shutdown(queue[0]));
77
+ }
78
+ // error / defect
79
+ case 2:
80
+ case 3:
81
+ {
82
+ return Effect.zipRight(Queue.offer(queue[0], response[1] === 2 ? Exit.fail(response[2]) : Exit.die(response[2])), Queue.shutdown(queue[0]));
83
+ }
84
+ }
85
+ }
86
+ }
87
+ });
88
+ const executeAcquire = request => Effect.tap(Effect.all([Effect.sync(() => requestIdCounter++), Queue.unbounded(), Deferred.make()]), ([id, queue, deferred]) => Effect.suspend(() => {
89
+ requestMap.set(id, [queue, deferred]);
90
+ return outbound.offer(id, request);
91
+ }));
92
+ const executeRelease = ([id,, deferred], exit) => {
93
+ const release = Effect.zipRight(Deferred.complete(deferred, Effect.unit), Effect.sync(() => requestMap.delete(id)));
94
+ return Exit.isInterrupted(exit) ? Effect.zipRight(backing.send([id, 1]), release) : release;
95
+ };
96
+ const execute = request => Stream.flatMap(Stream.acquireRelease(executeAcquire(request), executeRelease), ([, queue]) => Stream.flatten(Stream.fromQueue(queue)));
97
+ const executeEffect = request => Effect.acquireUseRelease(executeAcquire(request), ([, queue]) => Effect.flatten(Queue.take(queue)), executeRelease);
98
+ const handleMessages = yield* _(Queue.take(backing.queue), Effect.flatMap(handleMessage), Effect.forever, Effect.forkDaemon);
99
+ yield* _(Effect.addFinalizer(() => handleMessages.interruptAsFork(fiberId)));
100
+ const postMessages = yield* _(semaphore.take(1), Effect.zipRight(outbound.take), Effect.flatMap(([id, request]) => pipe(Effect.suspend(() => {
101
+ const result = requestMap.get(id);
102
+ if (!result) return Effect.unit;
103
+ const transferables = transfers(request);
104
+ return Effect.zipRight(backing.send([id, 0, request], transferables), Deferred.await(result[1]));
105
+ }), Effect.ensuring(semaphore.release(1)), Effect.fork)), Effect.forever, Effect.forkDaemon);
106
+ yield* _(Effect.addFinalizer(() => postMessages.interruptAsFork(fiberId)));
107
+ const join = Effect.race(Fiber.joinAll([handleMessages, postMessages]), backing.join);
108
+ return {
109
+ id,
110
+ join,
111
+ execute,
112
+ executeEffect
113
+ };
114
+ });
115
+ }
116
+ });
117
+ });
118
+
119
+ /** @internal */
120
+ const layerManager$1 = /*#__PURE__*/Layer.effect(WorkerManager$1, makeManager$1);
121
+
122
+ /** @internal */
123
+ const makePool$1 = () => options => Effect.gen(function* (_) {
124
+ const manager = yield* _(WorkerManager$1);
125
+ const backing = yield* _("timeToLive" in options ? Pool.makeWithTTL({
126
+ acquire: manager.spawn(options),
127
+ min: options.minSize,
128
+ max: options.maxSize,
129
+ timeToLive: options.timeToLive
130
+ }) : Pool.make({
131
+ acquire: manager.spawn(options),
132
+ size: options.size
133
+ }));
134
+ const pool = {
135
+ backing,
136
+ execute: message => Stream.unwrap(Effect.map(Effect.scoped(backing.get()), worker => worker.execute(message))),
137
+ executeEffect: message => Effect.flatMap(Effect.scoped(backing.get()), worker => worker.executeEffect(message))
138
+ };
139
+ return pool;
140
+ });
141
+
142
+ /** @internal */
143
+ const makePoolLayer$1 = managerLayer => (tag, options) => Layer.provide(managerLayer, Layer.scoped(tag, makePool$1()(options)));
144
+
145
+ /**
146
+ * @since 1.0.0
147
+ */
148
+
149
+ /**
150
+ * @since 1.0.0
151
+ * @category models
152
+ */
153
+
154
+ /**
155
+ * @since 1.0.0
156
+ * @category models
157
+ */
158
+
159
+ /**
160
+ * @since 1.0.0
161
+ * @category type ids
162
+ */
163
+ const PlatformWorkerTypeId = PlatformWorkerTypeId$1;
164
+
165
+ /**
166
+ * @since 1.0.0
167
+ * @category type ids
168
+ */
169
+
170
+ /**
171
+ * @since 1.0.0
172
+ * @category models
173
+ */
174
+
175
+ /**
176
+ * @since 1.0.0
177
+ * @category tags
178
+ */
179
+ const PlatformWorker = PlatformWorker$1;
180
+
181
+ /**
182
+ * @since 1.0.0
183
+ * @category models
184
+ */
185
+
186
+ /**
187
+ * @since 1.0.0
188
+ * @category models
189
+ */
190
+
191
+ /**
192
+ * @since 1.0.0
193
+ * @category models
194
+ */
195
+
196
+ /**
197
+ * @since 1.0.0
198
+ * @category models
199
+ */
200
+
201
+ /**
202
+ * @category models
203
+ * @since 1.0.0
204
+ */
205
+
206
+ /**
207
+ * @since 1.0.0
208
+ * @category type ids
209
+ */
210
+ const WorkerManagerTypeId = WorkerManagerTypeId$1;
211
+
212
+ /**
213
+ * @since 1.0.0
214
+ * @category type ids
215
+ */
216
+
217
+ /**
218
+ * @since 1.0.0
219
+ * @category models
220
+ */
221
+
222
+ /**
223
+ * @since 1.0.0
224
+ * @category tags
225
+ */
226
+ const WorkerManager = WorkerManager$1;
227
+
228
+ /**
229
+ * @since 1.0.0
230
+ * @category constructors
231
+ */
232
+ const makeManager = makeManager$1;
233
+
234
+ /**
235
+ * @since 1.0.0
236
+ * @category layers
237
+ */
238
+ const layerManager = layerManager$1;
239
+
240
+ /**
241
+ * @since 1.0.0
242
+ * @category constructors
243
+ */
244
+ const makePool = makePool$1;
245
+
246
+ /**
247
+ * @since 1.0.0
248
+ * @category constructors
249
+ */
250
+ const makePoolLayer = makePoolLayer$1;
251
+
252
+ export { PlatformWorker, PlatformWorkerTypeId, WorkerManager, WorkerManagerTypeId, layerManager, makeManager, makePool, makePoolLayer };
@@ -0,0 +1,4 @@
1
+ {
2
+ "main": "dist/effect-platform-Worker.cjs.js",
3
+ "module": "dist/effect-platform-Worker.esm.js"
4
+ }
@@ -0,0 +1,2 @@
1
+ export * from "../../dist/declarations/src/WorkerError.js";
2
+ //# sourceMappingURL=effect-platform-WorkerError.cjs.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-platform-WorkerError.cjs.d.mts","sourceRoot":"","sources":["../../dist/declarations/src/WorkerError.d.ts"],"names":[],"mappings":"AAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "../../dist/declarations/src/WorkerError";
2
+ //# sourceMappingURL=effect-platform-WorkerError.cjs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-platform-WorkerError.cjs.d.ts","sourceRoot":"","sources":["../../dist/declarations/src/WorkerError.d.ts"],"names":[],"mappings":"AAAA"}
@@ -0,0 +1,65 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var Data = require('effect/Data');
6
+
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n["default"] = e;
22
+ return Object.freeze(n);
23
+ }
24
+
25
+ var Data__namespace = /*#__PURE__*/_interopNamespace(Data);
26
+
27
+ /** @internal */
28
+ const WorkerErrorTypeId$1 = /*#__PURE__*/Symbol.for("@effect-ts/platform/Worker/WorkerError");
29
+
30
+ /** @internal */
31
+ const WorkerError$1 = (reason, error) => Data__namespace.struct({
32
+ [WorkerErrorTypeId$1]: WorkerErrorTypeId$1,
33
+ _tag: "WorkerError",
34
+ reason,
35
+ error
36
+ });
37
+
38
+ /**
39
+ * @since 1.0.0
40
+ */
41
+
42
+ /**
43
+ * @since 1.0.0
44
+ * @category type ids
45
+ */
46
+ const WorkerErrorTypeId = WorkerErrorTypeId$1;
47
+
48
+ /**
49
+ * @since 1.0.0
50
+ * @category type ids
51
+ */
52
+
53
+ /**
54
+ * @since 1.0.0
55
+ * @category errors
56
+ */
57
+
58
+ /**
59
+ * @since 1.0.0
60
+ * @category errors
61
+ */
62
+ const WorkerError = WorkerError$1;
63
+
64
+ exports.WorkerError = WorkerError;
65
+ exports.WorkerErrorTypeId = WorkerErrorTypeId;
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ if (process.env.NODE_ENV === "production") {
4
+ module.exports = require("./effect-platform-WorkerError.cjs.prod.js");
5
+ } else {
6
+ module.exports = require("./effect-platform-WorkerError.cjs.dev.js");
7
+ }
@@ -0,0 +1,4 @@
1
+ export {
2
+ WorkerError,
3
+ WorkerErrorTypeId
4
+ } from "./effect-platform-WorkerError.cjs.js";
@@ -0,0 +1,65 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var Data = require('effect/Data');
6
+
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n["default"] = e;
22
+ return Object.freeze(n);
23
+ }
24
+
25
+ var Data__namespace = /*#__PURE__*/_interopNamespace(Data);
26
+
27
+ /** @internal */
28
+ const WorkerErrorTypeId$1 = /*#__PURE__*/Symbol.for("@effect-ts/platform/Worker/WorkerError");
29
+
30
+ /** @internal */
31
+ const WorkerError$1 = (reason, error) => Data__namespace.struct({
32
+ [WorkerErrorTypeId$1]: WorkerErrorTypeId$1,
33
+ _tag: "WorkerError",
34
+ reason,
35
+ error
36
+ });
37
+
38
+ /**
39
+ * @since 1.0.0
40
+ */
41
+
42
+ /**
43
+ * @since 1.0.0
44
+ * @category type ids
45
+ */
46
+ const WorkerErrorTypeId = WorkerErrorTypeId$1;
47
+
48
+ /**
49
+ * @since 1.0.0
50
+ * @category type ids
51
+ */
52
+
53
+ /**
54
+ * @since 1.0.0
55
+ * @category errors
56
+ */
57
+
58
+ /**
59
+ * @since 1.0.0
60
+ * @category errors
61
+ */
62
+ const WorkerError = WorkerError$1;
63
+
64
+ exports.WorkerError = WorkerError;
65
+ exports.WorkerErrorTypeId = WorkerErrorTypeId;
@@ -0,0 +1,40 @@
1
+ import * as Data from 'effect/Data';
2
+
3
+ /** @internal */
4
+ const WorkerErrorTypeId$1 = /*#__PURE__*/Symbol.for("@effect-ts/platform/Worker/WorkerError");
5
+
6
+ /** @internal */
7
+ const WorkerError$1 = (reason, error) => Data.struct({
8
+ [WorkerErrorTypeId$1]: WorkerErrorTypeId$1,
9
+ _tag: "WorkerError",
10
+ reason,
11
+ error
12
+ });
13
+
14
+ /**
15
+ * @since 1.0.0
16
+ */
17
+
18
+ /**
19
+ * @since 1.0.0
20
+ * @category type ids
21
+ */
22
+ const WorkerErrorTypeId = WorkerErrorTypeId$1;
23
+
24
+ /**
25
+ * @since 1.0.0
26
+ * @category type ids
27
+ */
28
+
29
+ /**
30
+ * @since 1.0.0
31
+ * @category errors
32
+ */
33
+
34
+ /**
35
+ * @since 1.0.0
36
+ * @category errors
37
+ */
38
+ const WorkerError = WorkerError$1;
39
+
40
+ export { WorkerError, WorkerErrorTypeId };
@@ -0,0 +1,4 @@
1
+ {
2
+ "main": "dist/effect-platform-WorkerError.cjs.js",
3
+ "module": "dist/effect-platform-WorkerError.esm.js"
4
+ }
@@ -0,0 +1,2 @@
1
+ export * from "../../dist/declarations/src/WorkerRunner.js";
2
+ //# sourceMappingURL=effect-platform-WorkerRunner.cjs.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-platform-WorkerRunner.cjs.d.mts","sourceRoot":"","sources":["../../dist/declarations/src/WorkerRunner.d.ts"],"names":[],"mappings":"AAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "../../dist/declarations/src/WorkerRunner";
2
+ //# sourceMappingURL=effect-platform-WorkerRunner.cjs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-platform-WorkerRunner.cjs.d.ts","sourceRoot":"","sources":["../../dist/declarations/src/WorkerRunner.d.ts"],"names":[],"mappings":"AAAA"}
@@ -0,0 +1,129 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var Cause = require('effect/Cause');
6
+ var Context = require('effect/Context');
7
+ var Effect = require('effect/Effect');
8
+ var Either = require('effect/Either');
9
+ var Fiber = require('effect/Fiber');
10
+ var Function = require('effect/Function');
11
+ var Queue = require('effect/Queue');
12
+ var Stream = require('effect/Stream');
13
+
14
+ function _interopNamespace(e) {
15
+ if (e && e.__esModule) return e;
16
+ var n = Object.create(null);
17
+ if (e) {
18
+ Object.keys(e).forEach(function (k) {
19
+ if (k !== 'default') {
20
+ var d = Object.getOwnPropertyDescriptor(e, k);
21
+ Object.defineProperty(n, k, d.get ? d : {
22
+ enumerable: true,
23
+ get: function () { return e[k]; }
24
+ });
25
+ }
26
+ });
27
+ }
28
+ n["default"] = e;
29
+ return Object.freeze(n);
30
+ }
31
+
32
+ var Cause__namespace = /*#__PURE__*/_interopNamespace(Cause);
33
+ var Context__namespace = /*#__PURE__*/_interopNamespace(Context);
34
+ var Effect__namespace = /*#__PURE__*/_interopNamespace(Effect);
35
+ var Either__namespace = /*#__PURE__*/_interopNamespace(Either);
36
+ var Fiber__namespace = /*#__PURE__*/_interopNamespace(Fiber);
37
+ var Queue__namespace = /*#__PURE__*/_interopNamespace(Queue);
38
+ var Stream__namespace = /*#__PURE__*/_interopNamespace(Stream);
39
+
40
+ /** @internal */
41
+ const PlatformRunnerTypeId$1 = /*#__PURE__*/Symbol.for("@effect/platform/Runner/PlatformRunner");
42
+
43
+ /** @internal */
44
+ const PlatformRunner$1 = /*#__PURE__*/Context__namespace.Tag(PlatformRunnerTypeId$1);
45
+
46
+ /** @internal */
47
+ const make$1 = (process, options) => Effect__namespace.gen(function* (_) {
48
+ const platform = yield* _(PlatformRunner$1);
49
+ const backing = yield* _(platform.start());
50
+ const fiberMap = new Map();
51
+ const handleRequests = Function.pipe(Queue__namespace.take(backing.queue), Effect__namespace.tap(req => {
52
+ const id = req[0];
53
+ if (req[1] === 1) {
54
+ const fiber = fiberMap.get(id);
55
+ if (!fiber) return Effect__namespace.unit;
56
+ return Fiber__namespace.interrupt(fiber);
57
+ }
58
+ const stream = process(req[2]);
59
+ const effect = Effect__namespace.isEffect(stream) ? Effect__namespace.matchCauseEffect(stream, {
60
+ onFailure: cause => Either__namespace.match(Cause__namespace.failureOrCause(cause), {
61
+ onLeft: error => backing.send([id, 2, error]),
62
+ onRight: cause => backing.send([id, 3, Cause__namespace.squash(cause)])
63
+ }),
64
+ onSuccess: data => backing.send([id, 1, data])
65
+ }) : Function.pipe(stream, Stream__namespace.tap(item => backing.send([id, 0, item], options?.transfers ? options.transfers(item) : undefined)), Stream__namespace.runDrain, Effect__namespace.matchCauseEffect({
66
+ onFailure: cause => Either__namespace.match(Cause__namespace.failureOrCause(cause), {
67
+ onLeft: error => backing.send([id, 2, error]),
68
+ onRight: cause => backing.send([id, 3, Cause__namespace.squash(cause)])
69
+ }),
70
+ onSuccess: () => backing.send([id, 1])
71
+ }));
72
+ return Function.pipe(effect, Effect__namespace.ensuring(Effect__namespace.sync(() => fiberMap.delete(id))), Effect__namespace.fork, Effect__namespace.tap(fiber => Effect__namespace.sync(() => fiberMap.set(id, fiber))));
73
+ }), Effect__namespace.forever);
74
+ return yield* _(Effect__namespace.all([handleRequests, Fiber__namespace.join(backing.fiber)], {
75
+ concurrency: "unbounded",
76
+ discard: true
77
+ }));
78
+ });
79
+
80
+ /**
81
+ * @since 1.0.0
82
+ */
83
+
84
+ /**
85
+ * @since 1.0.0
86
+ * @category models
87
+ */
88
+
89
+ /**
90
+ * @since 1.0.0
91
+ * @category models
92
+ */
93
+
94
+ /**
95
+ * @since 1.0.0
96
+ * @category type ids
97
+ */
98
+ const PlatformRunnerTypeId = PlatformRunnerTypeId$1;
99
+
100
+ /**
101
+ * @since 1.0.0
102
+ * @category type ids
103
+ */
104
+
105
+ /**
106
+ * @since 1.0.0
107
+ * @category models
108
+ */
109
+
110
+ /**
111
+ * @since 1.0.0
112
+ * @category tags
113
+ */
114
+ const PlatformRunner = PlatformRunner$1;
115
+
116
+ /**
117
+ * @since 1.0.0
118
+ * @category models
119
+ */
120
+
121
+ /**
122
+ * @since 1.0.0
123
+ * @category constructors
124
+ */
125
+ const make = make$1;
126
+
127
+ exports.PlatformRunner = PlatformRunner;
128
+ exports.PlatformRunnerTypeId = PlatformRunnerTypeId;
129
+ exports.make = make;
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ if (process.env.NODE_ENV === "production") {
4
+ module.exports = require("./effect-platform-WorkerRunner.cjs.prod.js");
5
+ } else {
6
+ module.exports = require("./effect-platform-WorkerRunner.cjs.dev.js");
7
+ }
@@ -0,0 +1,5 @@
1
+ export {
2
+ PlatformRunner,
3
+ PlatformRunnerTypeId,
4
+ make
5
+ } from "./effect-platform-WorkerRunner.cjs.js";