@effect/platform 0.26.2 → 0.26.4
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/Http/Client/dist/effect-platform-Http-Client.cjs.dev.js +2 -2
- package/Http/Client/dist/effect-platform-Http-Client.cjs.prod.js +2 -2
- package/Http/Client/dist/effect-platform-Http-Client.esm.js +2 -2
- package/Http/ClientResponse/dist/effect-platform-Http-ClientResponse.cjs.dev.js +2 -2
- package/Http/ClientResponse/dist/effect-platform-Http-ClientResponse.cjs.prod.js +2 -2
- package/Http/ClientResponse/dist/effect-platform-Http-ClientResponse.esm.js +2 -2
- package/HttpClient/dist/effect-platform-HttpClient.cjs.dev.js +3 -3
- package/HttpClient/dist/effect-platform-HttpClient.cjs.prod.js +3 -3
- package/HttpClient/dist/effect-platform-HttpClient.esm.js +3 -3
- package/Worker/dist/effect-platform-Worker.cjs.dev.js +24 -15
- package/Worker/dist/effect-platform-Worker.cjs.prod.js +24 -15
- package/Worker/dist/effect-platform-Worker.esm.js +23 -15
- package/dist/{Client-77da56b5.cjs.dev.js → Client-52f7a6e7.cjs.dev.js} +1 -1
- package/dist/{Client-d31ac2bf.cjs.prod.js → Client-669a8097.cjs.prod.js} +1 -1
- package/dist/{Client-ed53ec74.esm.js → Client-74166618.esm.js} +1 -1
- package/dist/{ClientResponse-fbb89e61.cjs.prod.js → ClientResponse-044a9ddf.cjs.prod.js} +1 -1
- package/dist/{ClientResponse-85010856.esm.js → ClientResponse-7b314e3d.esm.js} +1 -1
- package/dist/{ClientResponse-25eefa3b.cjs.dev.js → ClientResponse-f7c92fce.cjs.dev.js} +1 -1
- package/dist/{clientResponse-e8e1442e.esm.js → clientResponse-613ef549.esm.js} +6 -6
- package/dist/{clientResponse-84589d0a.cjs.prod.js → clientResponse-bb91e48f.cjs.prod.js} +6 -6
- package/dist/{clientResponse-b269ed37.cjs.dev.js → clientResponse-e65925b7.cjs.dev.js} +6 -6
- package/dist/declarations/src/Worker.d.ts +0 -5
- package/dist/declarations/src/Worker.d.ts.map +1 -1
- package/dist/declarations/src/WorkerRunner.d.ts +2 -2
- package/dist/declarations/src/WorkerRunner.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/Worker.ts +4 -5
- package/src/WorkerRunner.ts +2 -2
- package/src/internal/http/clientResponse.ts +9 -6
- package/src/internal/worker.ts +35 -28
- package/src/internal/workerRunner.ts +2 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var Http_Client_dist_effectPlatformHttpClient = require('../../../dist/Client-
|
|
5
|
+
var Http_Client_dist_effectPlatformHttpClient = require('../../../dist/Client-52f7a6e7.cjs.dev.js');
|
|
6
6
|
require('@effect/schema/Schema');
|
|
7
7
|
require('effect/Context');
|
|
8
8
|
require('effect/Effect');
|
|
@@ -26,7 +26,7 @@ require('../../../dist/clientRequest-07f3c216.cjs.dev.js');
|
|
|
26
26
|
require('../../../dist/Headers-f56bc667.cjs.dev.js');
|
|
27
27
|
require('effect/ReadonlyArray');
|
|
28
28
|
require('effect/ReadonlyRecord');
|
|
29
|
-
require('../../../dist/clientResponse-
|
|
29
|
+
require('../../../dist/clientResponse-e65925b7.cjs.dev.js');
|
|
30
30
|
require('../../IncomingMessage/dist/effect-platform-Http-IncomingMessage.cjs.dev.js');
|
|
31
31
|
require('@effect/schema/ParseResult');
|
|
32
32
|
require('effect/FiberRef');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var Http_Client_dist_effectPlatformHttpClient = require('../../../dist/Client-
|
|
5
|
+
var Http_Client_dist_effectPlatformHttpClient = require('../../../dist/Client-669a8097.cjs.prod.js');
|
|
6
6
|
require('@effect/schema/Schema');
|
|
7
7
|
require('effect/Context');
|
|
8
8
|
require('effect/Effect');
|
|
@@ -26,7 +26,7 @@ require('../../../dist/clientRequest-d5011790.cjs.prod.js');
|
|
|
26
26
|
require('../../../dist/Headers-122cb877.cjs.prod.js');
|
|
27
27
|
require('effect/ReadonlyArray');
|
|
28
28
|
require('effect/ReadonlyRecord');
|
|
29
|
-
require('../../../dist/clientResponse-
|
|
29
|
+
require('../../../dist/clientResponse-bb91e48f.cjs.prod.js');
|
|
30
30
|
require('../../IncomingMessage/dist/effect-platform-Http-IncomingMessage.cjs.prod.js');
|
|
31
31
|
require('@effect/schema/ParseResult');
|
|
32
32
|
require('effect/FiberRef');
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { a as Client, T as TypeId, c as catchAll, d as catchTag, e as catchTags, f as fetch, b as fetchOk, g as filterOrElse, h as filterOrFail, i as filterStatus, j as filterStatusOk, l as layer, m as make, k as makeDefault, o as map, p as mapEffect, q as mapRequest, r as mapRequestEffect, s as retry, u as schemaFunction, v as tap, w as tapRequest, t as transform, n as transformResponse } from '../../../dist/Client-
|
|
1
|
+
export { a as Client, T as TypeId, c as catchAll, d as catchTag, e as catchTags, f as fetch, b as fetchOk, g as filterOrElse, h as filterOrFail, i as filterStatus, j as filterStatusOk, l as layer, m as make, k as makeDefault, o as map, p as mapEffect, q as mapRequest, r as mapRequestEffect, s as retry, u as schemaFunction, v as tap, w as tapRequest, t as transform, n as transformResponse } from '../../../dist/Client-74166618.esm.js';
|
|
2
2
|
import '@effect/schema/Schema';
|
|
3
3
|
import 'effect/Context';
|
|
4
4
|
import 'effect/Effect';
|
|
@@ -22,7 +22,7 @@ import '../../../dist/clientRequest-24b9b51c.esm.js';
|
|
|
22
22
|
import '../../../dist/Headers-58b56a08.esm.js';
|
|
23
23
|
import 'effect/ReadonlyArray';
|
|
24
24
|
import 'effect/ReadonlyRecord';
|
|
25
|
-
import '../../../dist/clientResponse-
|
|
25
|
+
import '../../../dist/clientResponse-613ef549.esm.js';
|
|
26
26
|
import '../../IncomingMessage/dist/effect-platform-Http-IncomingMessage.esm.js';
|
|
27
27
|
import '@effect/schema/ParseResult';
|
|
28
28
|
import 'effect/FiberRef';
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
require('../../../dist/clientResponse-
|
|
5
|
+
require('../../../dist/clientResponse-e65925b7.cjs.dev.js');
|
|
6
6
|
var Http_IncomingMessage_dist_effectPlatformHttpIncomingMessage = require('../../IncomingMessage/dist/effect-platform-Http-IncomingMessage.cjs.dev.js');
|
|
7
|
-
var Http_ClientResponse_dist_effectPlatformHttpClientResponse = require('../../../dist/ClientResponse-
|
|
7
|
+
var Http_ClientResponse_dist_effectPlatformHttpClientResponse = require('../../../dist/ClientResponse-f7c92fce.cjs.dev.js');
|
|
8
8
|
require('@effect/schema/Schema');
|
|
9
9
|
require('effect/Effect');
|
|
10
10
|
require('effect/Option');
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
require('../../../dist/clientResponse-
|
|
5
|
+
require('../../../dist/clientResponse-bb91e48f.cjs.prod.js');
|
|
6
6
|
var Http_IncomingMessage_dist_effectPlatformHttpIncomingMessage = require('../../IncomingMessage/dist/effect-platform-Http-IncomingMessage.cjs.prod.js');
|
|
7
|
-
var Http_ClientResponse_dist_effectPlatformHttpClientResponse = require('../../../dist/ClientResponse-
|
|
7
|
+
var Http_ClientResponse_dist_effectPlatformHttpClientResponse = require('../../../dist/ClientResponse-044a9ddf.cjs.prod.js');
|
|
8
8
|
require('@effect/schema/Schema');
|
|
9
9
|
require('effect/Effect');
|
|
10
10
|
require('effect/Option');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import '../../../dist/clientResponse-
|
|
1
|
+
import '../../../dist/clientResponse-613ef549.esm.js';
|
|
2
2
|
export { schemaBodyJson, schemaBodyUrlParams, schemaHeaders } from '../../IncomingMessage/dist/effect-platform-Http-IncomingMessage.esm.js';
|
|
3
|
-
export { T as TypeId, f as fromWeb, s as schemaJson, a as schemaNoBody } from '../../../dist/ClientResponse-
|
|
3
|
+
export { T as TypeId, f as fromWeb, s as schemaJson, a as schemaNoBody } from '../../../dist/ClientResponse-7b314e3d.esm.js';
|
|
4
4
|
import '@effect/schema/Schema';
|
|
5
5
|
import 'effect/Effect';
|
|
6
6
|
import 'effect/Option';
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var Http_Body_dist_effectPlatformHttpBody = require('../../dist/Body-f4eb1a35.cjs.dev.js');
|
|
6
|
-
var Http_Client_dist_effectPlatformHttpClient = require('../../dist/Client-
|
|
6
|
+
var Http_Client_dist_effectPlatformHttpClient = require('../../dist/Client-52f7a6e7.cjs.dev.js');
|
|
7
7
|
var Http_ClientError_dist_effectPlatformHttpClientError = require('../../dist/ClientError-b7828377.cjs.dev.js');
|
|
8
8
|
var Http_ClientRequest_dist_effectPlatformHttpClientRequest = require('../../dist/ClientRequest-4c64deb3.cjs.dev.js');
|
|
9
|
-
var Http_ClientResponse_dist_effectPlatformHttpClientResponse = require('../../dist/ClientResponse-
|
|
9
|
+
var Http_ClientResponse_dist_effectPlatformHttpClientResponse = require('../../dist/ClientResponse-f7c92fce.cjs.dev.js');
|
|
10
10
|
var Http_Headers_dist_effectPlatformHttpHeaders = require('../../dist/Headers-f56bc667.cjs.dev.js');
|
|
11
11
|
var Http_UrlParams_dist_effectPlatformHttpUrlParams = require('../../dist/UrlParams-5e0910f1.cjs.dev.js');
|
|
12
12
|
require('../../dist/body-a150eddc.cjs.dev.js');
|
|
@@ -28,7 +28,7 @@ require('effect/Pipeable');
|
|
|
28
28
|
require('../../Http/Method/dist/effect-platform-Http-Method.cjs.dev.js');
|
|
29
29
|
require('../../dist/clientError-52d24cd8.cjs.dev.js');
|
|
30
30
|
require('../../dist/clientRequest-07f3c216.cjs.dev.js');
|
|
31
|
-
require('../../dist/clientResponse-
|
|
31
|
+
require('../../dist/clientResponse-e65925b7.cjs.dev.js');
|
|
32
32
|
require('../../Http/IncomingMessage/dist/effect-platform-Http-IncomingMessage.cjs.dev.js');
|
|
33
33
|
require('@effect/schema/ParseResult');
|
|
34
34
|
require('effect/FiberRef');
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var Http_Body_dist_effectPlatformHttpBody = require('../../dist/Body-bf109de0.cjs.prod.js');
|
|
6
|
-
var Http_Client_dist_effectPlatformHttpClient = require('../../dist/Client-
|
|
6
|
+
var Http_Client_dist_effectPlatformHttpClient = require('../../dist/Client-669a8097.cjs.prod.js');
|
|
7
7
|
var Http_ClientError_dist_effectPlatformHttpClientError = require('../../dist/ClientError-22781879.cjs.prod.js');
|
|
8
8
|
var Http_ClientRequest_dist_effectPlatformHttpClientRequest = require('../../dist/ClientRequest-71df9f94.cjs.prod.js');
|
|
9
|
-
var Http_ClientResponse_dist_effectPlatformHttpClientResponse = require('../../dist/ClientResponse-
|
|
9
|
+
var Http_ClientResponse_dist_effectPlatformHttpClientResponse = require('../../dist/ClientResponse-044a9ddf.cjs.prod.js');
|
|
10
10
|
var Http_Headers_dist_effectPlatformHttpHeaders = require('../../dist/Headers-122cb877.cjs.prod.js');
|
|
11
11
|
var Http_UrlParams_dist_effectPlatformHttpUrlParams = require('../../dist/UrlParams-1228a686.cjs.prod.js');
|
|
12
12
|
require('../../dist/body-c9112f14.cjs.prod.js');
|
|
@@ -28,7 +28,7 @@ require('effect/Pipeable');
|
|
|
28
28
|
require('../../Http/Method/dist/effect-platform-Http-Method.cjs.prod.js');
|
|
29
29
|
require('../../dist/clientError-de103d6a.cjs.prod.js');
|
|
30
30
|
require('../../dist/clientRequest-d5011790.cjs.prod.js');
|
|
31
|
-
require('../../dist/clientResponse-
|
|
31
|
+
require('../../dist/clientResponse-bb91e48f.cjs.prod.js');
|
|
32
32
|
require('../../Http/IncomingMessage/dist/effect-platform-Http-IncomingMessage.cjs.prod.js');
|
|
33
33
|
require('@effect/schema/ParseResult');
|
|
34
34
|
require('effect/FiberRef');
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { B as body } from '../../dist/Body-e69a4f4c.esm.js';
|
|
2
|
-
export { C as client } from '../../dist/Client-
|
|
2
|
+
export { C as client } from '../../dist/Client-74166618.esm.js';
|
|
3
3
|
export { C as error } from '../../dist/ClientError-98b5da8c.esm.js';
|
|
4
4
|
export { C as request } from '../../dist/ClientRequest-dc3e2234.esm.js';
|
|
5
|
-
export { C as response } from '../../dist/ClientResponse-
|
|
5
|
+
export { C as response } from '../../dist/ClientResponse-7b314e3d.esm.js';
|
|
6
6
|
export { H as headers } from '../../dist/Headers-58b56a08.esm.js';
|
|
7
7
|
export { U as urlParams } from '../../dist/UrlParams-1286c728.esm.js';
|
|
8
8
|
import '../../dist/body-752ece55.esm.js';
|
|
@@ -24,7 +24,7 @@ import 'effect/Pipeable';
|
|
|
24
24
|
import '../../Http/Method/dist/effect-platform-Http-Method.esm.js';
|
|
25
25
|
import '../../dist/clientError-c4e1466c.esm.js';
|
|
26
26
|
import '../../dist/clientRequest-24b9b51c.esm.js';
|
|
27
|
-
import '../../dist/clientResponse-
|
|
27
|
+
import '../../dist/clientResponse-613ef549.esm.js';
|
|
28
28
|
import '../../Http/IncomingMessage/dist/effect-platform-Http-IncomingMessage.esm.js';
|
|
29
29
|
import '@effect/schema/ParseResult';
|
|
30
30
|
import 'effect/FiberRef';
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var effect = require('effect');
|
|
6
|
+
var Channel = require('effect/Channel');
|
|
5
7
|
var Context = require('effect/Context');
|
|
6
8
|
var Deferred = require('effect/Deferred');
|
|
7
9
|
var Effect = require('effect/Effect');
|
|
@@ -31,6 +33,7 @@ function _interopNamespace(e) {
|
|
|
31
33
|
return Object.freeze(n);
|
|
32
34
|
}
|
|
33
35
|
|
|
36
|
+
var Channel__namespace = /*#__PURE__*/_interopNamespace(Channel);
|
|
34
37
|
var Context__namespace = /*#__PURE__*/_interopNamespace(Context);
|
|
35
38
|
var Deferred__namespace = /*#__PURE__*/_interopNamespace(Deferred);
|
|
36
39
|
var Effect__namespace = /*#__PURE__*/_interopNamespace(Effect);
|
|
@@ -75,7 +78,6 @@ const makeManager$1 = /*#__PURE__*/Effect__namespace.gen(function* (_) {
|
|
|
75
78
|
}) {
|
|
76
79
|
return Effect__namespace.gen(function* (_) {
|
|
77
80
|
const id = idCounter++;
|
|
78
|
-
const fiberId = yield* _(Effect__namespace.fiberId);
|
|
79
81
|
let requestIdCounter = 0;
|
|
80
82
|
const readyLatch = yield* _(Deferred__namespace.make());
|
|
81
83
|
const semaphore = yield* _(Effect__namespace.makeSemaphore(permits));
|
|
@@ -83,7 +85,7 @@ const makeManager$1 = /*#__PURE__*/Effect__namespace.gen(function* (_) {
|
|
|
83
85
|
const outbound = queue ?? (yield* _(defaultQueue()));
|
|
84
86
|
yield* _(Effect__namespace.addFinalizer(() => outbound.shutdown));
|
|
85
87
|
const backing = yield* _(platform.spawn(spawn(id)));
|
|
86
|
-
yield* _(Effect__namespace.addFinalizer(() => Effect__namespace.zipRight(Effect__namespace.forEach(requestMap.values(), ([queue]) => Queue__namespace.
|
|
88
|
+
yield* _(Effect__namespace.addFinalizer(() => Effect__namespace.zipRight(Effect__namespace.forEach(requestMap.values(), ([queue]) => Queue__namespace.offer(queue, Exit__namespace.failCause(effect.Cause.empty)), {
|
|
87
89
|
discard: true
|
|
88
90
|
}), Effect__namespace.sync(() => requestMap.clear()))));
|
|
89
91
|
const handleMessage = msg => Effect__namespace.suspend(() => {
|
|
@@ -106,13 +108,13 @@ const makeManager$1 = /*#__PURE__*/Effect__namespace.gen(function* (_) {
|
|
|
106
108
|
// end
|
|
107
109
|
case 1:
|
|
108
110
|
{
|
|
109
|
-
return response.length === 2 ? Queue__namespace.
|
|
111
|
+
return response.length === 2 ? Queue__namespace.offer(queue[0], Exit__namespace.failCause(effect.Cause.empty)) : Effect__namespace.zipRight(Queue__namespace.offer(queue[0], Exit__namespace.succeed(response[2])), Queue__namespace.offer(queue[0], Exit__namespace.failCause(effect.Cause.empty)));
|
|
110
112
|
}
|
|
111
113
|
// error / defect
|
|
112
114
|
case 2:
|
|
113
115
|
case 3:
|
|
114
116
|
{
|
|
115
|
-
return
|
|
117
|
+
return Queue__namespace.offer(queue[0], response[1] === 2 ? Exit__namespace.fail(response[2]) : Exit__namespace.die(response[2]));
|
|
116
118
|
}
|
|
117
119
|
}
|
|
118
120
|
}
|
|
@@ -126,18 +128,22 @@ const makeManager$1 = /*#__PURE__*/Effect__namespace.gen(function* (_) {
|
|
|
126
128
|
const release = Effect__namespace.zipRight(Deferred__namespace.complete(deferred, Effect__namespace.unit), Effect__namespace.sync(() => requestMap.delete(id)));
|
|
127
129
|
return Exit__namespace.isInterrupted(exit) ? Effect__namespace.zipRight(backing.send([id, 1]), release) : release;
|
|
128
130
|
};
|
|
129
|
-
const execute = request => Stream__namespace.flatMap(Stream__namespace.acquireRelease(executeAcquire(request), executeRelease), ([, queue]) =>
|
|
131
|
+
const execute = request => Stream__namespace.flatMap(Stream__namespace.acquireRelease(executeAcquire(request), executeRelease), ([, queue]) => {
|
|
132
|
+
const loop = Channel__namespace.flatMap(Queue__namespace.take(queue), Exit__namespace.match({
|
|
133
|
+
onFailure: cause => effect.Cause.isEmpty(cause) ? Channel__namespace.unit : Channel__namespace.failCause(cause),
|
|
134
|
+
onSuccess: value => Channel__namespace.flatMap(Channel__namespace.write(effect.Chunk.of(value)), () => loop)
|
|
135
|
+
}));
|
|
136
|
+
return Stream__namespace.fromChannel(loop);
|
|
137
|
+
});
|
|
130
138
|
const executeEffect = request => Effect__namespace.acquireUseRelease(executeAcquire(request), ([, queue]) => Effect__namespace.flatten(Queue__namespace.take(queue)), executeRelease);
|
|
131
|
-
const handleMessages = yield* _(Queue__namespace.take(backing.queue), Effect__namespace.flatMap(handleMessage), Effect__namespace.forever, Effect__namespace.
|
|
132
|
-
yield* _(Effect__namespace.addFinalizer(() => handleMessages.interruptAsFork(fiberId)));
|
|
139
|
+
const handleMessages = yield* _(Queue__namespace.take(backing.queue), Effect__namespace.flatMap(handleMessage), Effect__namespace.forever, Effect__namespace.forkScoped);
|
|
133
140
|
const postMessages = yield* _(semaphore.take(1), Effect__namespace.zipRight(outbound.take), Effect__namespace.flatMap(([id, request]) => Function.pipe(Effect__namespace.suspend(() => {
|
|
134
141
|
const result = requestMap.get(id);
|
|
135
142
|
if (!result) return Effect__namespace.unit;
|
|
136
143
|
const transferables = transfers(request);
|
|
137
144
|
const payload = encode ? encode(request) : request;
|
|
138
145
|
return Effect__namespace.zipRight(backing.send([id, 0, payload], transferables), Deferred__namespace.await(result[1]));
|
|
139
|
-
}), Effect__namespace.ensuring(semaphore.release(1)), Effect__namespace.fork)), Effect__namespace.forever, Effect__namespace.
|
|
140
|
-
yield* _(Effect__namespace.addFinalizer(() => postMessages.interruptAsFork(fiberId)));
|
|
146
|
+
}), Effect__namespace.ensuring(semaphore.release(1)), Effect__namespace.fork)), Effect__namespace.forever, Effect__namespace.forkScoped);
|
|
141
147
|
const join = Effect__namespace.race(Fiber__namespace.joinAll([handleMessages, postMessages]), backing.join);
|
|
142
148
|
return {
|
|
143
149
|
id,
|
|
@@ -156,12 +162,15 @@ const layerManager$1 = /*#__PURE__*/Layer__namespace.effect(WorkerManager$1, mak
|
|
|
156
162
|
/** @internal */
|
|
157
163
|
const makePool$1 = () => options => Effect__namespace.gen(function* (_) {
|
|
158
164
|
const manager = yield* _(WorkerManager$1);
|
|
159
|
-
const backing = yield* _(
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
+
const backing = yield* _(
|
|
166
|
+
// "timeToLive" in options ?
|
|
167
|
+
// Pool.makeWithTTL({
|
|
168
|
+
// acquire: manager.spawn<I, E, O>(options),
|
|
169
|
+
// min: options.minSize,
|
|
170
|
+
// max: options.maxSize,
|
|
171
|
+
// timeToLive: options.timeToLive
|
|
172
|
+
// }) :
|
|
173
|
+
Pool__namespace.make({
|
|
165
174
|
acquire: manager.spawn(options),
|
|
166
175
|
size: options.size
|
|
167
176
|
}));
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var effect = require('effect');
|
|
6
|
+
var Channel = require('effect/Channel');
|
|
5
7
|
var Context = require('effect/Context');
|
|
6
8
|
var Deferred = require('effect/Deferred');
|
|
7
9
|
var Effect = require('effect/Effect');
|
|
@@ -31,6 +33,7 @@ function _interopNamespace(e) {
|
|
|
31
33
|
return Object.freeze(n);
|
|
32
34
|
}
|
|
33
35
|
|
|
36
|
+
var Channel__namespace = /*#__PURE__*/_interopNamespace(Channel);
|
|
34
37
|
var Context__namespace = /*#__PURE__*/_interopNamespace(Context);
|
|
35
38
|
var Deferred__namespace = /*#__PURE__*/_interopNamespace(Deferred);
|
|
36
39
|
var Effect__namespace = /*#__PURE__*/_interopNamespace(Effect);
|
|
@@ -75,7 +78,6 @@ const makeManager$1 = /*#__PURE__*/Effect__namespace.gen(function* (_) {
|
|
|
75
78
|
}) {
|
|
76
79
|
return Effect__namespace.gen(function* (_) {
|
|
77
80
|
const id = idCounter++;
|
|
78
|
-
const fiberId = yield* _(Effect__namespace.fiberId);
|
|
79
81
|
let requestIdCounter = 0;
|
|
80
82
|
const readyLatch = yield* _(Deferred__namespace.make());
|
|
81
83
|
const semaphore = yield* _(Effect__namespace.makeSemaphore(permits));
|
|
@@ -83,7 +85,7 @@ const makeManager$1 = /*#__PURE__*/Effect__namespace.gen(function* (_) {
|
|
|
83
85
|
const outbound = queue ?? (yield* _(defaultQueue()));
|
|
84
86
|
yield* _(Effect__namespace.addFinalizer(() => outbound.shutdown));
|
|
85
87
|
const backing = yield* _(platform.spawn(spawn(id)));
|
|
86
|
-
yield* _(Effect__namespace.addFinalizer(() => Effect__namespace.zipRight(Effect__namespace.forEach(requestMap.values(), ([queue]) => Queue__namespace.
|
|
88
|
+
yield* _(Effect__namespace.addFinalizer(() => Effect__namespace.zipRight(Effect__namespace.forEach(requestMap.values(), ([queue]) => Queue__namespace.offer(queue, Exit__namespace.failCause(effect.Cause.empty)), {
|
|
87
89
|
discard: true
|
|
88
90
|
}), Effect__namespace.sync(() => requestMap.clear()))));
|
|
89
91
|
const handleMessage = msg => Effect__namespace.suspend(() => {
|
|
@@ -106,13 +108,13 @@ const makeManager$1 = /*#__PURE__*/Effect__namespace.gen(function* (_) {
|
|
|
106
108
|
// end
|
|
107
109
|
case 1:
|
|
108
110
|
{
|
|
109
|
-
return response.length === 2 ? Queue__namespace.
|
|
111
|
+
return response.length === 2 ? Queue__namespace.offer(queue[0], Exit__namespace.failCause(effect.Cause.empty)) : Effect__namespace.zipRight(Queue__namespace.offer(queue[0], Exit__namespace.succeed(response[2])), Queue__namespace.offer(queue[0], Exit__namespace.failCause(effect.Cause.empty)));
|
|
110
112
|
}
|
|
111
113
|
// error / defect
|
|
112
114
|
case 2:
|
|
113
115
|
case 3:
|
|
114
116
|
{
|
|
115
|
-
return
|
|
117
|
+
return Queue__namespace.offer(queue[0], response[1] === 2 ? Exit__namespace.fail(response[2]) : Exit__namespace.die(response[2]));
|
|
116
118
|
}
|
|
117
119
|
}
|
|
118
120
|
}
|
|
@@ -126,18 +128,22 @@ const makeManager$1 = /*#__PURE__*/Effect__namespace.gen(function* (_) {
|
|
|
126
128
|
const release = Effect__namespace.zipRight(Deferred__namespace.complete(deferred, Effect__namespace.unit), Effect__namespace.sync(() => requestMap.delete(id)));
|
|
127
129
|
return Exit__namespace.isInterrupted(exit) ? Effect__namespace.zipRight(backing.send([id, 1]), release) : release;
|
|
128
130
|
};
|
|
129
|
-
const execute = request => Stream__namespace.flatMap(Stream__namespace.acquireRelease(executeAcquire(request), executeRelease), ([, queue]) =>
|
|
131
|
+
const execute = request => Stream__namespace.flatMap(Stream__namespace.acquireRelease(executeAcquire(request), executeRelease), ([, queue]) => {
|
|
132
|
+
const loop = Channel__namespace.flatMap(Queue__namespace.take(queue), Exit__namespace.match({
|
|
133
|
+
onFailure: cause => effect.Cause.isEmpty(cause) ? Channel__namespace.unit : Channel__namespace.failCause(cause),
|
|
134
|
+
onSuccess: value => Channel__namespace.flatMap(Channel__namespace.write(effect.Chunk.of(value)), () => loop)
|
|
135
|
+
}));
|
|
136
|
+
return Stream__namespace.fromChannel(loop);
|
|
137
|
+
});
|
|
130
138
|
const executeEffect = request => Effect__namespace.acquireUseRelease(executeAcquire(request), ([, queue]) => Effect__namespace.flatten(Queue__namespace.take(queue)), executeRelease);
|
|
131
|
-
const handleMessages = yield* _(Queue__namespace.take(backing.queue), Effect__namespace.flatMap(handleMessage), Effect__namespace.forever, Effect__namespace.
|
|
132
|
-
yield* _(Effect__namespace.addFinalizer(() => handleMessages.interruptAsFork(fiberId)));
|
|
139
|
+
const handleMessages = yield* _(Queue__namespace.take(backing.queue), Effect__namespace.flatMap(handleMessage), Effect__namespace.forever, Effect__namespace.forkScoped);
|
|
133
140
|
const postMessages = yield* _(semaphore.take(1), Effect__namespace.zipRight(outbound.take), Effect__namespace.flatMap(([id, request]) => Function.pipe(Effect__namespace.suspend(() => {
|
|
134
141
|
const result = requestMap.get(id);
|
|
135
142
|
if (!result) return Effect__namespace.unit;
|
|
136
143
|
const transferables = transfers(request);
|
|
137
144
|
const payload = encode ? encode(request) : request;
|
|
138
145
|
return Effect__namespace.zipRight(backing.send([id, 0, payload], transferables), Deferred__namespace.await(result[1]));
|
|
139
|
-
}), Effect__namespace.ensuring(semaphore.release(1)), Effect__namespace.fork)), Effect__namespace.forever, Effect__namespace.
|
|
140
|
-
yield* _(Effect__namespace.addFinalizer(() => postMessages.interruptAsFork(fiberId)));
|
|
146
|
+
}), Effect__namespace.ensuring(semaphore.release(1)), Effect__namespace.fork)), Effect__namespace.forever, Effect__namespace.forkScoped);
|
|
141
147
|
const join = Effect__namespace.race(Fiber__namespace.joinAll([handleMessages, postMessages]), backing.join);
|
|
142
148
|
return {
|
|
143
149
|
id,
|
|
@@ -156,12 +162,15 @@ const layerManager$1 = /*#__PURE__*/Layer__namespace.effect(WorkerManager$1, mak
|
|
|
156
162
|
/** @internal */
|
|
157
163
|
const makePool$1 = () => options => Effect__namespace.gen(function* (_) {
|
|
158
164
|
const manager = yield* _(WorkerManager$1);
|
|
159
|
-
const backing = yield* _(
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
+
const backing = yield* _(
|
|
166
|
+
// "timeToLive" in options ?
|
|
167
|
+
// Pool.makeWithTTL({
|
|
168
|
+
// acquire: manager.spawn<I, E, O>(options),
|
|
169
|
+
// min: options.minSize,
|
|
170
|
+
// max: options.maxSize,
|
|
171
|
+
// timeToLive: options.timeToLive
|
|
172
|
+
// }) :
|
|
173
|
+
Pool__namespace.make({
|
|
165
174
|
acquire: manager.spawn(options),
|
|
166
175
|
size: options.size
|
|
167
176
|
}));
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { Cause, Chunk } from 'effect';
|
|
2
|
+
import * as Channel from 'effect/Channel';
|
|
1
3
|
import * as Context from 'effect/Context';
|
|
2
4
|
import * as Deferred from 'effect/Deferred';
|
|
3
5
|
import * as Effect from 'effect/Effect';
|
|
@@ -43,7 +45,6 @@ const makeManager$1 = /*#__PURE__*/Effect.gen(function* (_) {
|
|
|
43
45
|
}) {
|
|
44
46
|
return Effect.gen(function* (_) {
|
|
45
47
|
const id = idCounter++;
|
|
46
|
-
const fiberId = yield* _(Effect.fiberId);
|
|
47
48
|
let requestIdCounter = 0;
|
|
48
49
|
const readyLatch = yield* _(Deferred.make());
|
|
49
50
|
const semaphore = yield* _(Effect.makeSemaphore(permits));
|
|
@@ -51,7 +52,7 @@ const makeManager$1 = /*#__PURE__*/Effect.gen(function* (_) {
|
|
|
51
52
|
const outbound = queue ?? (yield* _(defaultQueue()));
|
|
52
53
|
yield* _(Effect.addFinalizer(() => outbound.shutdown));
|
|
53
54
|
const backing = yield* _(platform.spawn(spawn(id)));
|
|
54
|
-
yield* _(Effect.addFinalizer(() => Effect.zipRight(Effect.forEach(requestMap.values(), ([queue]) => Queue.
|
|
55
|
+
yield* _(Effect.addFinalizer(() => Effect.zipRight(Effect.forEach(requestMap.values(), ([queue]) => Queue.offer(queue, Exit.failCause(Cause.empty)), {
|
|
55
56
|
discard: true
|
|
56
57
|
}), Effect.sync(() => requestMap.clear()))));
|
|
57
58
|
const handleMessage = msg => Effect.suspend(() => {
|
|
@@ -74,13 +75,13 @@ const makeManager$1 = /*#__PURE__*/Effect.gen(function* (_) {
|
|
|
74
75
|
// end
|
|
75
76
|
case 1:
|
|
76
77
|
{
|
|
77
|
-
return response.length === 2 ? Queue.
|
|
78
|
+
return response.length === 2 ? Queue.offer(queue[0], Exit.failCause(Cause.empty)) : Effect.zipRight(Queue.offer(queue[0], Exit.succeed(response[2])), Queue.offer(queue[0], Exit.failCause(Cause.empty)));
|
|
78
79
|
}
|
|
79
80
|
// error / defect
|
|
80
81
|
case 2:
|
|
81
82
|
case 3:
|
|
82
83
|
{
|
|
83
|
-
return
|
|
84
|
+
return Queue.offer(queue[0], response[1] === 2 ? Exit.fail(response[2]) : Exit.die(response[2]));
|
|
84
85
|
}
|
|
85
86
|
}
|
|
86
87
|
}
|
|
@@ -94,18 +95,22 @@ const makeManager$1 = /*#__PURE__*/Effect.gen(function* (_) {
|
|
|
94
95
|
const release = Effect.zipRight(Deferred.complete(deferred, Effect.unit), Effect.sync(() => requestMap.delete(id)));
|
|
95
96
|
return Exit.isInterrupted(exit) ? Effect.zipRight(backing.send([id, 1]), release) : release;
|
|
96
97
|
};
|
|
97
|
-
const execute = request => Stream.flatMap(Stream.acquireRelease(executeAcquire(request), executeRelease), ([, queue]) =>
|
|
98
|
+
const execute = request => Stream.flatMap(Stream.acquireRelease(executeAcquire(request), executeRelease), ([, queue]) => {
|
|
99
|
+
const loop = Channel.flatMap(Queue.take(queue), Exit.match({
|
|
100
|
+
onFailure: cause => Cause.isEmpty(cause) ? Channel.unit : Channel.failCause(cause),
|
|
101
|
+
onSuccess: value => Channel.flatMap(Channel.write(Chunk.of(value)), () => loop)
|
|
102
|
+
}));
|
|
103
|
+
return Stream.fromChannel(loop);
|
|
104
|
+
});
|
|
98
105
|
const executeEffect = request => Effect.acquireUseRelease(executeAcquire(request), ([, queue]) => Effect.flatten(Queue.take(queue)), executeRelease);
|
|
99
|
-
const handleMessages = yield* _(Queue.take(backing.queue), Effect.flatMap(handleMessage), Effect.forever, Effect.
|
|
100
|
-
yield* _(Effect.addFinalizer(() => handleMessages.interruptAsFork(fiberId)));
|
|
106
|
+
const handleMessages = yield* _(Queue.take(backing.queue), Effect.flatMap(handleMessage), Effect.forever, Effect.forkScoped);
|
|
101
107
|
const postMessages = yield* _(semaphore.take(1), Effect.zipRight(outbound.take), Effect.flatMap(([id, request]) => pipe(Effect.suspend(() => {
|
|
102
108
|
const result = requestMap.get(id);
|
|
103
109
|
if (!result) return Effect.unit;
|
|
104
110
|
const transferables = transfers(request);
|
|
105
111
|
const payload = encode ? encode(request) : request;
|
|
106
112
|
return Effect.zipRight(backing.send([id, 0, payload], transferables), Deferred.await(result[1]));
|
|
107
|
-
}), Effect.ensuring(semaphore.release(1)), Effect.fork)), Effect.forever, Effect.
|
|
108
|
-
yield* _(Effect.addFinalizer(() => postMessages.interruptAsFork(fiberId)));
|
|
113
|
+
}), Effect.ensuring(semaphore.release(1)), Effect.fork)), Effect.forever, Effect.forkScoped);
|
|
109
114
|
const join = Effect.race(Fiber.joinAll([handleMessages, postMessages]), backing.join);
|
|
110
115
|
return {
|
|
111
116
|
id,
|
|
@@ -124,12 +129,15 @@ const layerManager$1 = /*#__PURE__*/Layer.effect(WorkerManager$1, makeManager$1)
|
|
|
124
129
|
/** @internal */
|
|
125
130
|
const makePool$1 = () => options => Effect.gen(function* (_) {
|
|
126
131
|
const manager = yield* _(WorkerManager$1);
|
|
127
|
-
const backing = yield* _(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
132
|
+
const backing = yield* _(
|
|
133
|
+
// "timeToLive" in options ?
|
|
134
|
+
// Pool.makeWithTTL({
|
|
135
|
+
// acquire: manager.spawn<I, E, O>(options),
|
|
136
|
+
// min: options.minSize,
|
|
137
|
+
// max: options.maxSize,
|
|
138
|
+
// timeToLive: options.timeToLive
|
|
139
|
+
// }) :
|
|
140
|
+
Pool.make({
|
|
133
141
|
acquire: manager.spawn(options),
|
|
134
142
|
size: options.size
|
|
135
143
|
}));
|
|
@@ -13,7 +13,7 @@ var Http_UrlParams_dist_effectPlatformHttpUrlParams = require('./UrlParams-5e091
|
|
|
13
13
|
var body = require('./body-a150eddc.cjs.dev.js');
|
|
14
14
|
var clientError = require('./clientError-52d24cd8.cjs.dev.js');
|
|
15
15
|
var clientRequest = require('./clientRequest-07f3c216.cjs.dev.js');
|
|
16
|
-
var clientResponse = require('./clientResponse-
|
|
16
|
+
var clientResponse = require('./clientResponse-e65925b7.cjs.dev.js');
|
|
17
17
|
|
|
18
18
|
function _interopNamespace(e) {
|
|
19
19
|
if (e && e.__esModule) return e;
|
|
@@ -13,7 +13,7 @@ var Http_UrlParams_dist_effectPlatformHttpUrlParams = require('./UrlParams-1228a
|
|
|
13
13
|
var body = require('./body-c9112f14.cjs.prod.js');
|
|
14
14
|
var clientError = require('./clientError-de103d6a.cjs.prod.js');
|
|
15
15
|
var clientRequest = require('./clientRequest-d5011790.cjs.prod.js');
|
|
16
|
-
var clientResponse = require('./clientResponse-
|
|
16
|
+
var clientResponse = require('./clientResponse-bb91e48f.cjs.prod.js');
|
|
17
17
|
|
|
18
18
|
function _interopNamespace(e) {
|
|
19
19
|
if (e && e.__esModule) return e;
|
|
@@ -11,7 +11,7 @@ import { m as makeUrl } from './UrlParams-1286c728.esm.js';
|
|
|
11
11
|
import { u as uint8Array } from './body-752ece55.esm.js';
|
|
12
12
|
import { r as requestError, a as responseError } from './clientError-c4e1466c.esm.js';
|
|
13
13
|
import { s as setBody, a as setHeader } from './clientRequest-24b9b51c.esm.js';
|
|
14
|
-
import { f as fromWeb } from './clientResponse-
|
|
14
|
+
import { f as fromWeb } from './clientResponse-613ef549.esm.js';
|
|
15
15
|
|
|
16
16
|
/** @internal */
|
|
17
17
|
const TypeId$1 = /*#__PURE__*/Symbol.for("@effect/platform/Http/Client");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var clientResponse = require('./clientResponse-
|
|
3
|
+
var clientResponse = require('./clientResponse-bb91e48f.cjs.prod.js');
|
|
4
4
|
var Http_IncomingMessage_dist_effectPlatformHttpIncomingMessage = require('../Http/IncomingMessage/dist/effect-platform-Http-IncomingMessage.cjs.prod.js');
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { T as TypeId$1, f as fromWeb$1, s as schemaJson$1, a as schemaNoBody$1 } from './clientResponse-
|
|
1
|
+
import { T as TypeId$1, f as fromWeb$1, s as schemaJson$1, a as schemaNoBody$1 } from './clientResponse-613ef549.esm.js';
|
|
2
2
|
import { schemaBodyJson, schemaBodyUrlParams, schemaHeaders } from '../Http/IncomingMessage/dist/effect-platform-Http-IncomingMessage.esm.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var clientResponse = require('./clientResponse-
|
|
3
|
+
var clientResponse = require('./clientResponse-e65925b7.cjs.dev.js');
|
|
4
4
|
var Http_IncomingMessage_dist_effectPlatformHttpIncomingMessage = require('../Http/IncomingMessage/dist/effect-platform-Http-IncomingMessage.cjs.dev.js');
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -53,7 +53,7 @@ class ClientResponseImpl {
|
|
|
53
53
|
});
|
|
54
54
|
}
|
|
55
55
|
get text() {
|
|
56
|
-
return Effect.tryPromise({
|
|
56
|
+
return this.textBody ??= Effect.tryPromise({
|
|
57
57
|
try: () => this.source.text(),
|
|
58
58
|
catch: _ => responseError({
|
|
59
59
|
request: this.request,
|
|
@@ -61,7 +61,7 @@ class ClientResponseImpl {
|
|
|
61
61
|
reason: "Decode",
|
|
62
62
|
error: _
|
|
63
63
|
})
|
|
64
|
-
});
|
|
64
|
+
}).pipe(Effect.cached, Effect.runSync);
|
|
65
65
|
}
|
|
66
66
|
get urlParamsBody() {
|
|
67
67
|
return Effect.flatMap(this.text, _ => Effect.try({
|
|
@@ -75,7 +75,7 @@ class ClientResponseImpl {
|
|
|
75
75
|
}));
|
|
76
76
|
}
|
|
77
77
|
get formData() {
|
|
78
|
-
return Effect.tryPromise({
|
|
78
|
+
return this.formDataBody ??= Effect.tryPromise({
|
|
79
79
|
try: () => this.source.formData(),
|
|
80
80
|
catch: _ => responseError({
|
|
81
81
|
request: this.request,
|
|
@@ -83,10 +83,10 @@ class ClientResponseImpl {
|
|
|
83
83
|
reason: "Decode",
|
|
84
84
|
error: _
|
|
85
85
|
})
|
|
86
|
-
});
|
|
86
|
+
}).pipe(Effect.cached, Effect.runSync);
|
|
87
87
|
}
|
|
88
88
|
get arrayBuffer() {
|
|
89
|
-
return Effect.tryPromise({
|
|
89
|
+
return this.arrayBufferBody ??= Effect.tryPromise({
|
|
90
90
|
try: () => this.source.arrayBuffer(),
|
|
91
91
|
catch: _ => responseError({
|
|
92
92
|
request: this.request,
|
|
@@ -94,7 +94,7 @@ class ClientResponseImpl {
|
|
|
94
94
|
reason: "Decode",
|
|
95
95
|
error: _
|
|
96
96
|
})
|
|
97
|
-
});
|
|
97
|
+
}).pipe(Effect.cached, Effect.runSync);
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
|
|
@@ -78,7 +78,7 @@ class ClientResponseImpl {
|
|
|
78
78
|
});
|
|
79
79
|
}
|
|
80
80
|
get text() {
|
|
81
|
-
return Effect__namespace.tryPromise({
|
|
81
|
+
return this.textBody ??= Effect__namespace.tryPromise({
|
|
82
82
|
try: () => this.source.text(),
|
|
83
83
|
catch: _ => clientError.responseError({
|
|
84
84
|
request: this.request,
|
|
@@ -86,7 +86,7 @@ class ClientResponseImpl {
|
|
|
86
86
|
reason: "Decode",
|
|
87
87
|
error: _
|
|
88
88
|
})
|
|
89
|
-
});
|
|
89
|
+
}).pipe(Effect__namespace.cached, Effect__namespace.runSync);
|
|
90
90
|
}
|
|
91
91
|
get urlParamsBody() {
|
|
92
92
|
return Effect__namespace.flatMap(this.text, _ => Effect__namespace.try({
|
|
@@ -100,7 +100,7 @@ class ClientResponseImpl {
|
|
|
100
100
|
}));
|
|
101
101
|
}
|
|
102
102
|
get formData() {
|
|
103
|
-
return Effect__namespace.tryPromise({
|
|
103
|
+
return this.formDataBody ??= Effect__namespace.tryPromise({
|
|
104
104
|
try: () => this.source.formData(),
|
|
105
105
|
catch: _ => clientError.responseError({
|
|
106
106
|
request: this.request,
|
|
@@ -108,10 +108,10 @@ class ClientResponseImpl {
|
|
|
108
108
|
reason: "Decode",
|
|
109
109
|
error: _
|
|
110
110
|
})
|
|
111
|
-
});
|
|
111
|
+
}).pipe(Effect__namespace.cached, Effect__namespace.runSync);
|
|
112
112
|
}
|
|
113
113
|
get arrayBuffer() {
|
|
114
|
-
return Effect__namespace.tryPromise({
|
|
114
|
+
return this.arrayBufferBody ??= Effect__namespace.tryPromise({
|
|
115
115
|
try: () => this.source.arrayBuffer(),
|
|
116
116
|
catch: _ => clientError.responseError({
|
|
117
117
|
request: this.request,
|
|
@@ -119,7 +119,7 @@ class ClientResponseImpl {
|
|
|
119
119
|
reason: "Decode",
|
|
120
120
|
error: _
|
|
121
121
|
})
|
|
122
|
-
});
|
|
122
|
+
}).pipe(Effect__namespace.cached, Effect__namespace.runSync);
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
|
|
@@ -78,7 +78,7 @@ class ClientResponseImpl {
|
|
|
78
78
|
});
|
|
79
79
|
}
|
|
80
80
|
get text() {
|
|
81
|
-
return Effect__namespace.tryPromise({
|
|
81
|
+
return this.textBody ??= Effect__namespace.tryPromise({
|
|
82
82
|
try: () => this.source.text(),
|
|
83
83
|
catch: _ => clientError.responseError({
|
|
84
84
|
request: this.request,
|
|
@@ -86,7 +86,7 @@ class ClientResponseImpl {
|
|
|
86
86
|
reason: "Decode",
|
|
87
87
|
error: _
|
|
88
88
|
})
|
|
89
|
-
});
|
|
89
|
+
}).pipe(Effect__namespace.cached, Effect__namespace.runSync);
|
|
90
90
|
}
|
|
91
91
|
get urlParamsBody() {
|
|
92
92
|
return Effect__namespace.flatMap(this.text, _ => Effect__namespace.try({
|
|
@@ -100,7 +100,7 @@ class ClientResponseImpl {
|
|
|
100
100
|
}));
|
|
101
101
|
}
|
|
102
102
|
get formData() {
|
|
103
|
-
return Effect__namespace.tryPromise({
|
|
103
|
+
return this.formDataBody ??= Effect__namespace.tryPromise({
|
|
104
104
|
try: () => this.source.formData(),
|
|
105
105
|
catch: _ => clientError.responseError({
|
|
106
106
|
request: this.request,
|
|
@@ -108,10 +108,10 @@ class ClientResponseImpl {
|
|
|
108
108
|
reason: "Decode",
|
|
109
109
|
error: _
|
|
110
110
|
})
|
|
111
|
-
});
|
|
111
|
+
}).pipe(Effect__namespace.cached, Effect__namespace.runSync);
|
|
112
112
|
}
|
|
113
113
|
get arrayBuffer() {
|
|
114
|
-
return Effect__namespace.tryPromise({
|
|
114
|
+
return this.arrayBufferBody ??= Effect__namespace.tryPromise({
|
|
115
115
|
try: () => this.source.arrayBuffer(),
|
|
116
116
|
catch: _ => clientError.responseError({
|
|
117
117
|
request: this.request,
|
|
@@ -119,7 +119,7 @@ class ClientResponseImpl {
|
|
|
119
119
|
reason: "Decode",
|
|
120
120
|
error: _
|
|
121
121
|
})
|
|
122
|
-
});
|
|
122
|
+
}).pipe(Effect__namespace.cached, Effect__namespace.runSync);
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { Effect } from "effect";
|
|
5
5
|
import type * as Context from "effect/Context";
|
|
6
|
-
import type * as Duration from "effect/Duration";
|
|
7
6
|
import type * as Layer from "effect/Layer";
|
|
8
7
|
import type * as Pool from "effect/Pool";
|
|
9
8
|
import type * as Queue from "effect/Queue";
|
|
@@ -110,10 +109,6 @@ export declare namespace WorkerPool {
|
|
|
110
109
|
*/
|
|
111
110
|
type Options<I, W = unknown> = Worker.Options<I, W> & ({
|
|
112
111
|
readonly size: number;
|
|
113
|
-
} | {
|
|
114
|
-
readonly minSize: number;
|
|
115
|
-
readonly maxSize: number;
|
|
116
|
-
readonly timeToLive: Duration.DurationInput;
|
|
117
112
|
});
|
|
118
113
|
}
|
|
119
114
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Worker.d.ts","sourceRoot":"../../../src","sources":["Worker.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,
|
|
1
|
+
{"version":3,"file":"Worker.d.ts","sourceRoot":"../../../src","sources":["Worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import type { WorkerError } from "./WorkerError.js";
|
|
|
13
13
|
* @category models
|
|
14
14
|
*/
|
|
15
15
|
export interface BackingRunner<I, O> {
|
|
16
|
-
readonly fiber: Fiber.Fiber<WorkerError,
|
|
16
|
+
readonly fiber: Fiber.Fiber<WorkerError, never>;
|
|
17
17
|
readonly queue: Queue.Dequeue<I>;
|
|
18
18
|
readonly send: (message: O, transfers?: ReadonlyArray<unknown>) => Effect.Effect<never, never, void>;
|
|
19
19
|
}
|
|
@@ -69,5 +69,5 @@ export declare namespace Runner {
|
|
|
69
69
|
* @since 1.0.0
|
|
70
70
|
* @category constructors
|
|
71
71
|
*/
|
|
72
|
-
export declare const make: <I, R, E, O>(process: (request: I) => Stream.Stream<R, E, O> | Effect.Effect<R, E, O>, options?: Runner.Options<O> | undefined) => Effect.Effect<Scope.Scope | R | PlatformRunner, WorkerError,
|
|
72
|
+
export declare const make: <I, R, E, O>(process: (request: I) => Stream.Stream<R, E, O> | Effect.Effect<R, E, O>, options?: Runner.Options<O> | undefined) => Effect.Effect<Scope.Scope | R | PlatformRunner, WorkerError, never>;
|
|
73
73
|
//# sourceMappingURL=WorkerRunner.d.ts.map
|
|
@@ -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,
|
|
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,KAAK,CAAC,CAAA;IAC/C,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,KAAK,CAAiB,CAAA"}
|
package/package.json
CHANGED
package/src/Worker.ts
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { Effect } from "effect"
|
|
5
5
|
import type * as Context from "effect/Context"
|
|
6
|
-
import type * as Duration from "effect/Duration"
|
|
7
6
|
import type * as Layer from "effect/Layer"
|
|
8
7
|
import type * as Pool from "effect/Pool"
|
|
9
8
|
import type * as Queue from "effect/Queue"
|
|
@@ -130,10 +129,10 @@ export declare namespace WorkerPool {
|
|
|
130
129
|
& Worker.Options<I, W>
|
|
131
130
|
& ({
|
|
132
131
|
readonly size: number
|
|
133
|
-
|
|
134
|
-
readonly minSize: number
|
|
135
|
-
readonly maxSize: number
|
|
136
|
-
readonly timeToLive: Duration.DurationInput
|
|
132
|
+
// } | {
|
|
133
|
+
// readonly minSize: number
|
|
134
|
+
// readonly maxSize: number
|
|
135
|
+
// readonly timeToLive: Duration.DurationInput
|
|
137
136
|
})
|
|
138
137
|
}
|
|
139
138
|
|
package/src/WorkerRunner.ts
CHANGED
|
@@ -15,7 +15,7 @@ import type { WorkerError } from "./WorkerError"
|
|
|
15
15
|
* @category models
|
|
16
16
|
*/
|
|
17
17
|
export interface BackingRunner<I, O> {
|
|
18
|
-
readonly fiber: Fiber.Fiber<WorkerError,
|
|
18
|
+
readonly fiber: Fiber.Fiber<WorkerError, never>
|
|
19
19
|
readonly queue: Queue.Dequeue<I>
|
|
20
20
|
readonly send: (message: O, transfers?: ReadonlyArray<unknown>) => Effect.Effect<never, never, void>
|
|
21
21
|
}
|
|
@@ -81,4 +81,4 @@ export declare namespace Runner {
|
|
|
81
81
|
export const make: <I, R, E, O>(
|
|
82
82
|
process: (request: I) => Stream.Stream<R, E, O> | Effect.Effect<R, E, O>,
|
|
83
83
|
options?: Runner.Options<O> | undefined
|
|
84
|
-
) => Effect.Effect<Scope.Scope | R | PlatformRunner, WorkerError,
|
|
84
|
+
) => Effect.Effect<Scope.Scope | R | PlatformRunner, WorkerError, never> = internal.make
|
|
@@ -74,8 +74,9 @@ class ClientResponseImpl implements ClientResponse.ClientResponse {
|
|
|
74
74
|
})
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
+
private textBody?: Effect.Effect<never, Error.ResponseError, string>
|
|
77
78
|
get text(): Effect.Effect<never, Error.ResponseError, string> {
|
|
78
|
-
return Effect.tryPromise({
|
|
79
|
+
return this.textBody ??= Effect.tryPromise({
|
|
79
80
|
try: () => this.source.text(),
|
|
80
81
|
catch: (_) =>
|
|
81
82
|
internalError.responseError({
|
|
@@ -84,7 +85,7 @@ class ClientResponseImpl implements ClientResponse.ClientResponse {
|
|
|
84
85
|
reason: "Decode",
|
|
85
86
|
error: _
|
|
86
87
|
})
|
|
87
|
-
})
|
|
88
|
+
}).pipe(Effect.cached, Effect.runSync)
|
|
88
89
|
}
|
|
89
90
|
|
|
90
91
|
get urlParamsBody(): Effect.Effect<never, Error.ResponseError, UrlParams.UrlParams> {
|
|
@@ -101,8 +102,9 @@ class ClientResponseImpl implements ClientResponse.ClientResponse {
|
|
|
101
102
|
}))
|
|
102
103
|
}
|
|
103
104
|
|
|
105
|
+
private formDataBody?: Effect.Effect<never, Error.ResponseError, FormData>
|
|
104
106
|
get formData(): Effect.Effect<never, Error.ResponseError, FormData> {
|
|
105
|
-
return Effect.tryPromise({
|
|
107
|
+
return this.formDataBody ??= Effect.tryPromise({
|
|
106
108
|
try: () => this.source.formData(),
|
|
107
109
|
catch: (_) =>
|
|
108
110
|
internalError.responseError({
|
|
@@ -111,11 +113,12 @@ class ClientResponseImpl implements ClientResponse.ClientResponse {
|
|
|
111
113
|
reason: "Decode",
|
|
112
114
|
error: _
|
|
113
115
|
})
|
|
114
|
-
})
|
|
116
|
+
}).pipe(Effect.cached, Effect.runSync)
|
|
115
117
|
}
|
|
116
118
|
|
|
119
|
+
private arrayBufferBody?: Effect.Effect<never, Error.ResponseError, ArrayBuffer>
|
|
117
120
|
get arrayBuffer(): Effect.Effect<never, Error.ResponseError, ArrayBuffer> {
|
|
118
|
-
return Effect.tryPromise({
|
|
121
|
+
return this.arrayBufferBody ??= Effect.tryPromise({
|
|
119
122
|
try: () => this.source.arrayBuffer(),
|
|
120
123
|
catch: (_) =>
|
|
121
124
|
internalError.responseError({
|
|
@@ -124,7 +127,7 @@ class ClientResponseImpl implements ClientResponse.ClientResponse {
|
|
|
124
127
|
reason: "Decode",
|
|
125
128
|
error: _
|
|
126
129
|
})
|
|
127
|
-
})
|
|
130
|
+
}).pipe(Effect.cached, Effect.runSync)
|
|
128
131
|
}
|
|
129
132
|
}
|
|
130
133
|
|
package/src/internal/worker.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { Cause, Chunk } from "effect"
|
|
2
|
+
import * as Channel from "effect/Channel"
|
|
1
3
|
import * as Context from "effect/Context"
|
|
2
4
|
import * as Deferred from "effect/Deferred"
|
|
3
5
|
import * as Effect from "effect/Effect"
|
|
@@ -51,7 +53,6 @@ export const makeManager = Effect.gen(function*(_) {
|
|
|
51
53
|
spawn<I, E, O>({ encode, permits = 1, queue, spawn, transfers = (_) => [] }: Worker.Worker.Options<I>) {
|
|
52
54
|
return Effect.gen(function*(_) {
|
|
53
55
|
const id = idCounter++
|
|
54
|
-
const fiberId = yield* _(Effect.fiberId)
|
|
55
56
|
let requestIdCounter = 0
|
|
56
57
|
const readyLatch = yield* _(Deferred.make<never, void>())
|
|
57
58
|
const semaphore = yield* _(Effect.makeSemaphore(permits))
|
|
@@ -66,7 +67,9 @@ export const makeManager = Effect.gen(function*(_) {
|
|
|
66
67
|
|
|
67
68
|
yield* _(Effect.addFinalizer(() =>
|
|
68
69
|
Effect.zipRight(
|
|
69
|
-
Effect.forEach(requestMap.values(), ([queue]) => Queue.
|
|
70
|
+
Effect.forEach(requestMap.values(), ([queue]) => Queue.offer(queue, Exit.failCause(Cause.empty)), {
|
|
71
|
+
discard: true
|
|
72
|
+
}),
|
|
70
73
|
Effect.sync(() => requestMap.clear())
|
|
71
74
|
)
|
|
72
75
|
))
|
|
@@ -90,23 +93,20 @@ export const makeManager = Effect.gen(function*(_) {
|
|
|
90
93
|
// end
|
|
91
94
|
case 1: {
|
|
92
95
|
return response.length === 2 ?
|
|
93
|
-
Queue.
|
|
96
|
+
Queue.offer(queue[0], Exit.failCause(Cause.empty)) :
|
|
94
97
|
Effect.zipRight(
|
|
95
98
|
Queue.offer(queue[0], Exit.succeed(response[2])),
|
|
96
|
-
Queue.
|
|
99
|
+
Queue.offer(queue[0], Exit.failCause(Cause.empty))
|
|
97
100
|
)
|
|
98
101
|
}
|
|
99
102
|
// error / defect
|
|
100
103
|
case 2:
|
|
101
104
|
case 3: {
|
|
102
|
-
return
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
response[
|
|
106
|
-
|
|
107
|
-
: Exit.die(response[2])
|
|
108
|
-
),
|
|
109
|
-
Queue.shutdown(queue[0])
|
|
105
|
+
return Queue.offer(
|
|
106
|
+
queue[0],
|
|
107
|
+
response[1] === 2
|
|
108
|
+
? Exit.fail(response[2])
|
|
109
|
+
: Exit.die(response[2])
|
|
110
110
|
)
|
|
111
111
|
}
|
|
112
112
|
}
|
|
@@ -150,7 +150,16 @@ export const makeManager = Effect.gen(function*(_) {
|
|
|
150
150
|
executeAcquire(request),
|
|
151
151
|
executeRelease
|
|
152
152
|
),
|
|
153
|
-
([, queue]) =>
|
|
153
|
+
([, queue]) => {
|
|
154
|
+
const loop: Channel.Channel<never, unknown, unknown, unknown, E, Chunk.Chunk<O>, void> = Channel.flatMap(
|
|
155
|
+
Queue.take(queue),
|
|
156
|
+
Exit.match({
|
|
157
|
+
onFailure: (cause) => Cause.isEmpty(cause) ? Channel.unit : Channel.failCause(cause),
|
|
158
|
+
onSuccess: (value) => Channel.flatMap(Channel.write(Chunk.of(value)), () => loop)
|
|
159
|
+
})
|
|
160
|
+
)
|
|
161
|
+
return Stream.fromChannel(loop)
|
|
162
|
+
}
|
|
154
163
|
)
|
|
155
164
|
|
|
156
165
|
const executeEffect = (request: I) =>
|
|
@@ -164,9 +173,8 @@ export const makeManager = Effect.gen(function*(_) {
|
|
|
164
173
|
Queue.take(backing.queue),
|
|
165
174
|
Effect.flatMap(handleMessage),
|
|
166
175
|
Effect.forever,
|
|
167
|
-
Effect.
|
|
176
|
+
Effect.forkScoped
|
|
168
177
|
)
|
|
169
|
-
yield* _(Effect.addFinalizer(() => handleMessages.interruptAsFork(fiberId)))
|
|
170
178
|
|
|
171
179
|
const postMessages = yield* _(
|
|
172
180
|
semaphore.take(1),
|
|
@@ -188,9 +196,8 @@ export const makeManager = Effect.gen(function*(_) {
|
|
|
188
196
|
)
|
|
189
197
|
),
|
|
190
198
|
Effect.forever,
|
|
191
|
-
Effect.
|
|
199
|
+
Effect.forkScoped
|
|
192
200
|
)
|
|
193
|
-
yield* _(Effect.addFinalizer(() => postMessages.interruptAsFork(fiberId)))
|
|
194
201
|
|
|
195
202
|
const join = Effect.race(
|
|
196
203
|
Fiber.joinAll([
|
|
@@ -217,17 +224,17 @@ export const makePool = <W>() =>
|
|
|
217
224
|
Effect.gen(function*(_) {
|
|
218
225
|
const manager = yield* _(WorkerManager)
|
|
219
226
|
const backing = yield* _(
|
|
220
|
-
"timeToLive" in options ?
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
227
|
+
// "timeToLive" in options ?
|
|
228
|
+
// Pool.makeWithTTL({
|
|
229
|
+
// acquire: manager.spawn<I, E, O>(options),
|
|
230
|
+
// min: options.minSize,
|
|
231
|
+
// max: options.maxSize,
|
|
232
|
+
// timeToLive: options.timeToLive
|
|
233
|
+
// }) :
|
|
234
|
+
Pool.make({
|
|
235
|
+
acquire: manager.spawn<I, E, O>(options),
|
|
236
|
+
size: options.size
|
|
237
|
+
})
|
|
231
238
|
)
|
|
232
239
|
const pool: Worker.WorkerPool<I, E, O> = {
|
|
233
240
|
backing,
|
|
@@ -7,6 +7,7 @@ import { pipe } from "effect/Function"
|
|
|
7
7
|
import * as Queue from "effect/Queue"
|
|
8
8
|
import * as Stream from "effect/Stream"
|
|
9
9
|
import type * as Worker from "../Worker"
|
|
10
|
+
import type * as WorkerError from "../WorkerError"
|
|
10
11
|
import type * as WorkerRunner from "../WorkerRunner"
|
|
11
12
|
|
|
12
13
|
/** @internal */
|
|
@@ -86,6 +87,6 @@ export const make = <I, R, E, O>(
|
|
|
86
87
|
Effect.all([
|
|
87
88
|
handleRequests,
|
|
88
89
|
Fiber.join(backing.fiber)
|
|
89
|
-
], { concurrency: "unbounded", discard: true })
|
|
90
|
+
], { concurrency: "unbounded", discard: true }) as Effect.Effect<R, WorkerError.WorkerError, never>
|
|
90
91
|
)
|
|
91
92
|
})
|