@effect/platform 0.48.29 → 0.49.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.
- package/README.md +12 -12
- package/dist/cjs/Http/App.js +9 -7
- package/dist/cjs/Http/App.js.map +1 -1
- package/dist/cjs/Http/Client.js +13 -3
- package/dist/cjs/Http/Client.js.map +1 -1
- package/dist/cjs/Http/ClientResponse.js +9 -9
- package/dist/cjs/Http/ClientResponse.js.map +1 -1
- package/dist/cjs/Http/Cookies.js +7 -7
- package/dist/cjs/Http/Cookies.js.map +1 -1
- package/dist/cjs/Http/Headers.js +7 -7
- package/dist/cjs/Http/Headers.js.map +1 -1
- package/dist/cjs/Http/IncomingMessage.js +7 -7
- package/dist/cjs/Http/IncomingMessage.js.map +1 -1
- package/dist/cjs/Http/Middleware.js +11 -1
- package/dist/cjs/Http/Middleware.js.map +1 -1
- package/dist/cjs/Http/Multiplex.js.map +1 -1
- package/dist/cjs/Http/Router.js.map +1 -1
- package/dist/cjs/Http/UrlParams.js +13 -13
- package/dist/cjs/Http/UrlParams.js.map +1 -1
- package/dist/cjs/PlatformConfigProvider.js +2 -2
- package/dist/cjs/PlatformConfigProvider.js.map +1 -1
- package/dist/cjs/Socket.js +6 -6
- package/dist/cjs/Socket.js.map +1 -1
- package/dist/cjs/Transferable.js +1 -1
- package/dist/cjs/Transferable.js.map +1 -1
- package/dist/cjs/WorkerRunner.js.map +1 -1
- package/dist/cjs/internal/command.js +1 -1
- package/dist/cjs/internal/command.js.map +1 -1
- package/dist/cjs/internal/fileSystem.js +2 -2
- package/dist/cjs/internal/fileSystem.js.map +1 -1
- package/dist/cjs/internal/http/client.js +19 -16
- package/dist/cjs/internal/http/client.js.map +1 -1
- package/dist/cjs/internal/http/clientResponse.js +5 -5
- package/dist/cjs/internal/http/clientResponse.js.map +1 -1
- package/dist/cjs/internal/http/middleware.js +8 -3
- package/dist/cjs/internal/http/middleware.js.map +1 -1
- package/dist/cjs/internal/http/multipart.js +4 -4
- package/dist/cjs/internal/http/multipart.js.map +1 -1
- package/dist/cjs/internal/http/multiplex.js +2 -2
- package/dist/cjs/internal/http/multiplex.js.map +1 -1
- package/dist/cjs/internal/http/router.js +2 -1
- package/dist/cjs/internal/http/router.js.map +1 -1
- package/dist/cjs/internal/worker.js +7 -7
- package/dist/cjs/internal/worker.js.map +1 -1
- package/dist/cjs/internal/workerRunner.js +14 -13
- package/dist/cjs/internal/workerRunner.js.map +1 -1
- package/dist/dts/Command.d.ts +3 -3
- package/dist/dts/Command.d.ts.map +1 -1
- package/dist/dts/Http/App.d.ts +7 -7
- package/dist/dts/Http/App.d.ts.map +1 -1
- package/dist/dts/Http/Client.d.ts +78 -65
- package/dist/dts/Http/Client.d.ts.map +1 -1
- package/dist/dts/Http/ClientResponse.d.ts +5 -5
- package/dist/dts/Http/Cookies.d.ts +3 -3
- package/dist/dts/Http/Cookies.d.ts.map +1 -1
- package/dist/dts/Http/Headers.d.ts +4 -4
- package/dist/dts/Http/Headers.d.ts.map +1 -1
- package/dist/dts/Http/IncomingMessage.d.ts +4 -3
- package/dist/dts/Http/IncomingMessage.d.ts.map +1 -1
- package/dist/dts/Http/Middleware.d.ts +22 -5
- package/dist/dts/Http/Middleware.d.ts.map +1 -1
- package/dist/dts/Http/Multiplex.d.ts +22 -22
- package/dist/dts/Http/Multiplex.d.ts.map +1 -1
- package/dist/dts/Http/Router.d.ts +80 -80
- package/dist/dts/Http/Router.d.ts.map +1 -1
- package/dist/dts/Http/Server.d.ts +11 -11
- package/dist/dts/Http/Server.d.ts.map +1 -1
- package/dist/dts/Http/ServerRequest.d.ts +1 -1
- package/dist/dts/Http/ServerRequest.d.ts.map +1 -1
- package/dist/dts/Http/TraceContext.d.ts.map +1 -1
- package/dist/dts/Http/UrlParams.d.ts.map +1 -1
- package/dist/dts/PlatformConfigProvider.d.ts.map +1 -1
- package/dist/dts/Socket.d.ts +10 -10
- package/dist/dts/Socket.d.ts.map +1 -1
- package/dist/dts/Transferable.d.ts.map +1 -1
- package/dist/dts/Worker.d.ts +6 -6
- package/dist/dts/Worker.d.ts.map +1 -1
- package/dist/dts/WorkerRunner.d.ts +5 -5
- package/dist/dts/WorkerRunner.d.ts.map +1 -1
- package/dist/dts/internal/http/router.d.ts +1 -1
- package/dist/dts/internal/http/router.d.ts.map +1 -1
- package/dist/esm/Http/App.js +9 -7
- package/dist/esm/Http/App.js.map +1 -1
- package/dist/esm/Http/Client.js +12 -2
- package/dist/esm/Http/Client.js.map +1 -1
- package/dist/esm/Http/ClientResponse.js +5 -5
- package/dist/esm/Http/ClientResponse.js.map +1 -1
- package/dist/esm/Http/Cookies.js +7 -7
- package/dist/esm/Http/Cookies.js.map +1 -1
- package/dist/esm/Http/Headers.js +7 -7
- package/dist/esm/Http/Headers.js.map +1 -1
- package/dist/esm/Http/IncomingMessage.js +3 -3
- package/dist/esm/Http/IncomingMessage.js.map +1 -1
- package/dist/esm/Http/Middleware.js +10 -0
- package/dist/esm/Http/Middleware.js.map +1 -1
- package/dist/esm/Http/Multiplex.js.map +1 -1
- package/dist/esm/Http/Router.js.map +1 -1
- package/dist/esm/Http/UrlParams.js +13 -13
- package/dist/esm/Http/UrlParams.js.map +1 -1
- package/dist/esm/PlatformConfigProvider.js +2 -2
- package/dist/esm/PlatformConfigProvider.js.map +1 -1
- package/dist/esm/Socket.js +6 -6
- package/dist/esm/Socket.js.map +1 -1
- package/dist/esm/Transferable.js +1 -1
- package/dist/esm/Transferable.js.map +1 -1
- package/dist/esm/WorkerRunner.js.map +1 -1
- package/dist/esm/internal/command.js +1 -1
- package/dist/esm/internal/command.js.map +1 -1
- package/dist/esm/internal/fileSystem.js +2 -2
- package/dist/esm/internal/fileSystem.js.map +1 -1
- package/dist/esm/internal/http/client.js +18 -13
- package/dist/esm/internal/http/client.js.map +1 -1
- package/dist/esm/internal/http/clientResponse.js +2 -2
- package/dist/esm/internal/http/clientResponse.js.map +1 -1
- package/dist/esm/internal/http/middleware.js +7 -2
- package/dist/esm/internal/http/middleware.js.map +1 -1
- package/dist/esm/internal/http/multipart.js +4 -4
- package/dist/esm/internal/http/multipart.js.map +1 -1
- package/dist/esm/internal/http/multiplex.js +2 -2
- package/dist/esm/internal/http/multiplex.js.map +1 -1
- package/dist/esm/internal/http/router.js +2 -1
- package/dist/esm/internal/http/router.js.map +1 -1
- package/dist/esm/internal/worker.js +7 -7
- package/dist/esm/internal/worker.js.map +1 -1
- package/dist/esm/internal/workerRunner.js +14 -13
- package/dist/esm/internal/workerRunner.js.map +1 -1
- package/package.json +3 -3
- package/src/Command.ts +3 -3
- package/src/Http/App.ts +21 -17
- package/src/Http/Client.ts +105 -90
- package/src/Http/ClientResponse.ts +7 -7
- package/src/Http/Cookies.ts +9 -9
- package/src/Http/Headers.ts +12 -12
- package/src/Http/IncomingMessage.ts +16 -6
- package/src/Http/Middleware.ts +30 -6
- package/src/Http/Multiplex.ts +38 -38
- package/src/Http/Router.ts +136 -134
- package/src/Http/Server.ts +16 -16
- package/src/Http/ServerRequest.ts +1 -1
- package/src/Http/UrlParams.ts +15 -15
- package/src/PlatformConfigProvider.ts +2 -2
- package/src/Socket.ts +6 -6
- package/src/Transferable.ts +1 -1
- package/src/Worker.ts +9 -9
- package/src/WorkerRunner.ts +5 -4
- package/src/internal/command.ts +12 -6
- package/src/internal/fileSystem.ts +2 -2
- package/src/internal/http/client.ts +221 -204
- package/src/internal/http/clientResponse.ts +2 -2
- package/src/internal/http/middleware.ts +24 -1
- package/src/internal/http/multipart.ts +4 -4
- package/src/internal/http/multiplex.ts +54 -54
- package/src/internal/http/router.ts +121 -104
- package/src/internal/http/server.ts +17 -17
- package/src/internal/http/serverRequest.ts +1 -1
- package/src/internal/worker.ts +14 -14
- package/src/internal/workerRunner.ts +20 -16
|
@@ -32,6 +32,8 @@ export const RouteContextTypeId: Router.RouteContextTypeId = Symbol.for(
|
|
|
32
32
|
/** @internal */
|
|
33
33
|
export const RouteContext = Context.GenericTag<Router.RouteContext>("@effect/platform/Http/Router/RouteContext")
|
|
34
34
|
|
|
35
|
+
const isRouter = (u: unknown): u is Router.Router<unknown, unknown> => Predicate.hasProperty(u, TypeId)
|
|
36
|
+
|
|
35
37
|
/** @internal */
|
|
36
38
|
export const params = Effect.map(RouteContext, (_) => _.params)
|
|
37
39
|
|
|
@@ -131,18 +133,18 @@ export const schemaSearchParams = <R, I extends Readonly<Record<string, string>>
|
|
|
131
133
|
return Effect.flatMap(RouteContext, (_) => parse(_.searchParams))
|
|
132
134
|
}
|
|
133
135
|
|
|
134
|
-
class RouterImpl<
|
|
136
|
+
class RouterImpl<E = never, R = never> extends Effectable.StructuralClass<
|
|
135
137
|
ServerResponse.ServerResponse,
|
|
136
138
|
E | Error.RouteNotFound,
|
|
137
139
|
Exclude<R, Router.RouteContext>
|
|
138
|
-
> implements Router.Router<
|
|
140
|
+
> implements Router.Router<E, R> {
|
|
139
141
|
readonly [TypeId]: Router.TypeId
|
|
140
142
|
constructor(
|
|
141
|
-
readonly routes: Chunk.Chunk<Router.Route<
|
|
143
|
+
readonly routes: Chunk.Chunk<Router.Route<E, R>>,
|
|
142
144
|
readonly mounts: Chunk.Chunk<
|
|
143
145
|
readonly [
|
|
144
146
|
prefix: string,
|
|
145
|
-
httpApp: App.Default<
|
|
147
|
+
httpApp: App.Default<E, R>,
|
|
146
148
|
options?: { readonly includePrefix?: boolean | undefined } | undefined
|
|
147
149
|
]
|
|
148
150
|
>
|
|
@@ -176,9 +178,9 @@ class RouterImpl<R, E> extends Effectable.StructuralClass<
|
|
|
176
178
|
}
|
|
177
179
|
|
|
178
180
|
const toHttpApp = <R, E>(
|
|
179
|
-
self: Router.Router<
|
|
180
|
-
): App.Default<
|
|
181
|
-
const router = FindMyWay.make<Router.Route<
|
|
181
|
+
self: Router.Router<E, R>
|
|
182
|
+
): App.Default<E | Error.RouteNotFound, R> => {
|
|
183
|
+
const router = FindMyWay.make<Router.Route<E, R>>()
|
|
182
184
|
const mounts = Chunk.toReadonlyArray(self.mounts).map(([path, app, options]) =>
|
|
183
185
|
[
|
|
184
186
|
path,
|
|
@@ -220,7 +222,7 @@ const toHttpApp = <R, E>(
|
|
|
220
222
|
context = Context.add(context, ServerRequest.ServerRequest, sliceRequestUrl(request, path))
|
|
221
223
|
}
|
|
222
224
|
return Effect.locally(
|
|
223
|
-
routeContext.route.handler as App.Default<
|
|
225
|
+
routeContext.route.handler as App.Default<E, R>,
|
|
224
226
|
FiberRef.currentContext,
|
|
225
227
|
context
|
|
226
228
|
)
|
|
@@ -259,12 +261,12 @@ function sliceRequestUrl(request: ServerRequest.ServerRequest, prefix: string) {
|
|
|
259
261
|
return request.modify({ url: request.url.length <= prefexLen ? "/" : request.url.slice(prefexLen) })
|
|
260
262
|
}
|
|
261
263
|
|
|
262
|
-
class RouteImpl<
|
|
264
|
+
class RouteImpl<E = never, R = never> extends Inspectable.Class implements Router.Route<E, R> {
|
|
263
265
|
readonly [RouteTypeId]: Router.RouteTypeId
|
|
264
266
|
constructor(
|
|
265
267
|
readonly method: Method.Method | "*",
|
|
266
268
|
readonly path: Router.PathInput,
|
|
267
|
-
readonly handler: Router.Route.Handler<
|
|
269
|
+
readonly handler: Router.Route.Handler<E, R>,
|
|
268
270
|
readonly prefix = Option.none<string>(),
|
|
269
271
|
readonly uninterruptible = false
|
|
270
272
|
) {
|
|
@@ -293,30 +295,36 @@ class RouteContextImpl implements Router.RouteContext {
|
|
|
293
295
|
}
|
|
294
296
|
|
|
295
297
|
/** @internal */
|
|
296
|
-
export const empty: Router.Router<never
|
|
298
|
+
export const empty: Router.Router<never> = new RouterImpl(Chunk.empty(), Chunk.empty())
|
|
297
299
|
|
|
298
300
|
/** @internal */
|
|
299
301
|
export const fromIterable = <R extends Router.Route<any, any>>(
|
|
300
302
|
routes: Iterable<R>
|
|
301
303
|
): Router.Router<
|
|
302
|
-
R extends Router.Route<infer
|
|
303
|
-
R extends Router.Route<infer _, infer
|
|
304
|
+
R extends Router.Route<infer E, infer _> ? E : never,
|
|
305
|
+
R extends Router.Route<infer _, infer Env> ? Env : never
|
|
304
306
|
> => new RouterImpl(Chunk.fromIterable(routes), Chunk.empty()) as any
|
|
305
307
|
|
|
306
308
|
/** @internal */
|
|
307
|
-
export const makeRoute = <
|
|
309
|
+
export const makeRoute = <E, R>(
|
|
308
310
|
method: Method.Method,
|
|
309
311
|
path: Router.PathInput,
|
|
310
|
-
handler: Router.Route.Handler<
|
|
312
|
+
handler: Router.Route.Handler<E, R>,
|
|
311
313
|
prefix: Option.Option<string> = Option.none(),
|
|
312
314
|
uninterruptible = false
|
|
313
|
-
): Router.Route<Router.Router.ExcludeProvided<R
|
|
314
|
-
new RouteImpl(
|
|
315
|
+
): Router.Route<E, Router.Router.ExcludeProvided<R>> =>
|
|
316
|
+
new RouteImpl(
|
|
317
|
+
method,
|
|
318
|
+
path,
|
|
319
|
+
handler,
|
|
320
|
+
prefix,
|
|
321
|
+
uninterruptible
|
|
322
|
+
) as any
|
|
315
323
|
|
|
316
324
|
/** @internal */
|
|
317
325
|
export const concat = dual<
|
|
318
|
-
<R1, E1>(that: Router.Router<
|
|
319
|
-
<R, E, R1, E1>(self: Router.Router<
|
|
326
|
+
<R1, E1>(that: Router.Router<E1, R1>) => <R, E>(self: Router.Router<E, R>) => Router.Router<E | E1, R | R1>,
|
|
327
|
+
<R, E, R1, E1>(self: Router.Router<E, R>, that: Router.Router<E1, R1>) => Router.Router<E | E1, R | R1>
|
|
320
328
|
>(2, (self, that) => new RouterImpl(Chunk.appendAll(self.routes, that.routes) as any, self.mounts))
|
|
321
329
|
|
|
322
330
|
const removeTrailingSlash = (
|
|
@@ -325,8 +333,8 @@ const removeTrailingSlash = (
|
|
|
325
333
|
|
|
326
334
|
/** @internal */
|
|
327
335
|
export const prefixAll = dual<
|
|
328
|
-
(prefix: Router.PathInput) => <R, E>(self: Router.Router<
|
|
329
|
-
<R, E>(self: Router.Router<
|
|
336
|
+
(prefix: Router.PathInput) => <R, E>(self: Router.Router<E, R>) => Router.Router<E, R>,
|
|
337
|
+
<R, E>(self: Router.Router<E, R>, prefix: Router.PathInput) => Router.Router<E, R>
|
|
330
338
|
>(
|
|
331
339
|
2,
|
|
332
340
|
(self, prefix) => {
|
|
@@ -352,13 +360,13 @@ export const prefixAll = dual<
|
|
|
352
360
|
export const mount = dual<
|
|
353
361
|
<R1, E1>(
|
|
354
362
|
path: `/${string}`,
|
|
355
|
-
that: Router.Router<
|
|
356
|
-
) => <R, E>(self: Router.Router<
|
|
363
|
+
that: Router.Router<E1, R1>
|
|
364
|
+
) => <R, E>(self: Router.Router<E, R>) => Router.Router<E | E1, R | R1>,
|
|
357
365
|
<R, E, R1, E1>(
|
|
358
|
-
self: Router.Router<
|
|
366
|
+
self: Router.Router<E, R>,
|
|
359
367
|
path: `/${string}`,
|
|
360
|
-
that: Router.Router<
|
|
361
|
-
) => Router.Router<
|
|
368
|
+
that: Router.Router<E1, R1>
|
|
369
|
+
) => Router.Router<E | E1, R | R1>
|
|
362
370
|
>(
|
|
363
371
|
3,
|
|
364
372
|
(self, path, that) => concat(self, prefixAll(that, path))
|
|
@@ -368,31 +376,31 @@ export const mount = dual<
|
|
|
368
376
|
export const mountApp = dual<
|
|
369
377
|
<R1, E1>(
|
|
370
378
|
path: `/${string}`,
|
|
371
|
-
that: App.Default<
|
|
379
|
+
that: App.Default<E1, R1>,
|
|
372
380
|
options?: {
|
|
373
381
|
readonly includePrefix?: boolean | undefined
|
|
374
382
|
} | undefined
|
|
375
383
|
) => <R, E>(
|
|
376
|
-
self: Router.Router<
|
|
377
|
-
) => Router.Router<R | Router.Router.ExcludeProvided<R1
|
|
384
|
+
self: Router.Router<E, R>
|
|
385
|
+
) => Router.Router<E | E1, R | Router.Router.ExcludeProvided<R1>>,
|
|
378
386
|
<R, E, R1, E1>(
|
|
379
|
-
self: Router.Router<
|
|
387
|
+
self: Router.Router<E, R>,
|
|
380
388
|
path: `/${string}`,
|
|
381
|
-
that: App.Default<
|
|
389
|
+
that: App.Default<E1, R1>,
|
|
382
390
|
options?: {
|
|
383
391
|
readonly includePrefix?: boolean | undefined
|
|
384
392
|
} | undefined
|
|
385
|
-
) => Router.Router<R | Router.Router.ExcludeProvided<R1
|
|
393
|
+
) => Router.Router<E | E1, R | Router.Router.ExcludeProvided<R1>>
|
|
386
394
|
>(
|
|
387
395
|
(args) => Predicate.hasProperty(args[0], TypeId),
|
|
388
396
|
<R, E, R1, E1>(
|
|
389
|
-
self: Router.Router<
|
|
397
|
+
self: Router.Router<E, R>,
|
|
390
398
|
path: `/${string}`,
|
|
391
|
-
that: App.Default<
|
|
399
|
+
that: App.Default<E1, R1>,
|
|
392
400
|
options?: {
|
|
393
401
|
readonly includePrefix?: boolean | undefined
|
|
394
402
|
} | undefined
|
|
395
|
-
): Router.Router<R | Router.Router.ExcludeProvided<R1
|
|
403
|
+
): Router.Router<E | E1, R | Router.Router.ExcludeProvided<R1>> =>
|
|
396
404
|
new RouterImpl<any, any>(self.routes, Chunk.append(self.mounts, [removeTrailingSlash(path), that, options])) as any
|
|
397
405
|
)
|
|
398
406
|
|
|
@@ -400,40 +408,49 @@ export const mountApp = dual<
|
|
|
400
408
|
export const route = (method: Method.Method | "*"): {
|
|
401
409
|
<R1, E1>(
|
|
402
410
|
path: Router.PathInput,
|
|
403
|
-
handler: Router.Route.Handler<
|
|
411
|
+
handler: Router.Route.Handler<E1, R1>,
|
|
404
412
|
options?: {
|
|
405
413
|
readonly uninterruptible?: boolean | undefined
|
|
406
414
|
} | undefined
|
|
407
415
|
): <R, E>(
|
|
408
|
-
self: Router.Router<
|
|
409
|
-
) => Router.Router<R | Router.Router.ExcludeProvided<R1
|
|
416
|
+
self: Router.Router<E, R>
|
|
417
|
+
) => Router.Router<E1 | E, R | Router.Router.ExcludeProvided<R1>>
|
|
410
418
|
<R, E, R1, E1>(
|
|
411
|
-
self: Router.Router<
|
|
419
|
+
self: Router.Router<E, R>,
|
|
412
420
|
path: Router.PathInput,
|
|
413
|
-
handler: Router.Route.Handler<
|
|
421
|
+
handler: Router.Route.Handler<E1, R1>,
|
|
414
422
|
options?: {
|
|
415
423
|
readonly uninterruptible?: boolean | undefined
|
|
416
424
|
} | undefined
|
|
417
|
-
): Router.Router<R | Router.Router.ExcludeProvided<R1
|
|
425
|
+
): Router.Router<E1 | E, R | Router.Router.ExcludeProvided<R1>>
|
|
418
426
|
} =>
|
|
419
427
|
dual<
|
|
420
428
|
<R1, E1>(
|
|
421
429
|
path: Router.PathInput,
|
|
422
430
|
handler: Router.Route.Handler<R1, E1>
|
|
423
431
|
) => <R, E>(
|
|
424
|
-
self: Router.Router<
|
|
425
|
-
) => Router.Router<R | Router.Router.ExcludeProvided<R1
|
|
432
|
+
self: Router.Router<E, R>
|
|
433
|
+
) => Router.Router<E | E1, R | Router.Router.ExcludeProvided<R1>>,
|
|
426
434
|
<R, E, R1, E1>(
|
|
427
|
-
self: Router.Router<
|
|
435
|
+
self: Router.Router<E, R>,
|
|
428
436
|
path: Router.PathInput,
|
|
429
|
-
handler: Router.Route.Handler<
|
|
437
|
+
handler: Router.Route.Handler<E1, R1>,
|
|
430
438
|
options?: {
|
|
431
439
|
readonly uninterruptible?: boolean | undefined
|
|
432
440
|
} | undefined
|
|
433
|
-
) => Router.Router<R | Router.Router.ExcludeProvided<R1
|
|
434
|
-
>((args) =>
|
|
441
|
+
) => Router.Router<E | E1, R | Router.Router.ExcludeProvided<R1>>
|
|
442
|
+
>((args) => isRouter(args[0]), (self, path, handler, options) =>
|
|
435
443
|
new RouterImpl<any, any>(
|
|
436
|
-
Chunk.append(
|
|
444
|
+
Chunk.append(
|
|
445
|
+
self.routes,
|
|
446
|
+
new RouteImpl(
|
|
447
|
+
method,
|
|
448
|
+
path,
|
|
449
|
+
handler,
|
|
450
|
+
Option.none(),
|
|
451
|
+
options?.uninterruptible ?? false
|
|
452
|
+
)
|
|
453
|
+
),
|
|
437
454
|
self.mounts
|
|
438
455
|
))
|
|
439
456
|
|
|
@@ -463,13 +480,13 @@ export const options = route("OPTIONS")
|
|
|
463
480
|
|
|
464
481
|
/** @internal */
|
|
465
482
|
export const use = dual<
|
|
466
|
-
<
|
|
467
|
-
f: (self: Router.Route.Handler<
|
|
468
|
-
) => (self: Router.Router<
|
|
469
|
-
<
|
|
470
|
-
self: Router.Router<
|
|
471
|
-
f: (self: Router.Route.Handler<
|
|
472
|
-
) => Router.Router<Router.Router.ExcludeProvided<R1
|
|
483
|
+
<E, R, R1, E1>(
|
|
484
|
+
f: (self: Router.Route.Handler<E, R>) => App.Default<E1, R1>
|
|
485
|
+
) => (self: Router.Router<E, R>) => Router.Router<E1, Router.Router.ExcludeProvided<R1>>,
|
|
486
|
+
<E, R, R1, E1>(
|
|
487
|
+
self: Router.Router<E, R>,
|
|
488
|
+
f: (self: Router.Route.Handler<E, R>) => App.Default<E1, R1>
|
|
489
|
+
) => Router.Router<E1, Router.Router.ExcludeProvided<R1>>
|
|
473
490
|
>(2, (self, f) =>
|
|
474
491
|
new RouterImpl<any, any>(
|
|
475
492
|
Chunk.map(
|
|
@@ -484,39 +501,39 @@ export const use = dual<
|
|
|
484
501
|
|
|
485
502
|
/** @internal */
|
|
486
503
|
export const catchAll = dual<
|
|
487
|
-
<E,
|
|
488
|
-
f: (e: E) => Router.Route.Handler<
|
|
489
|
-
) => <R>(self: Router.Router<
|
|
490
|
-
<R, E,
|
|
491
|
-
self: Router.Router<
|
|
492
|
-
f: (e: E) => Router.Route.Handler<
|
|
493
|
-
) => Router.Router<R | Router.Router.ExcludeProvided<R2
|
|
504
|
+
<E, E2, R2>(
|
|
505
|
+
f: (e: E) => Router.Route.Handler<E2, R2>
|
|
506
|
+
) => <R>(self: Router.Router<E, R>) => Router.Router<E2, R | Router.Router.ExcludeProvided<R2>>,
|
|
507
|
+
<R, E, E2, R2>(
|
|
508
|
+
self: Router.Router<E, R>,
|
|
509
|
+
f: (e: E) => Router.Route.Handler<E2, R2>
|
|
510
|
+
) => Router.Router<E2, R | Router.Router.ExcludeProvided<R2>>
|
|
494
511
|
>(2, (self, f) => use(self, Effect.catchAll(f)))
|
|
495
512
|
|
|
496
513
|
/** @internal */
|
|
497
514
|
export const catchAllCause = dual<
|
|
498
|
-
<E,
|
|
499
|
-
f: (e: Cause.Cause<E>) => Router.Route.Handler<
|
|
500
|
-
) => <R>(self: Router.Router<
|
|
501
|
-
<R, E,
|
|
502
|
-
self: Router.Router<
|
|
503
|
-
f: (e: Cause.Cause<E>) => Router.Route.Handler<
|
|
504
|
-
) => Router.Router<R | Router.Router.ExcludeProvided<R2
|
|
515
|
+
<E, E2, R2>(
|
|
516
|
+
f: (e: Cause.Cause<E>) => Router.Route.Handler<E2, R2>
|
|
517
|
+
) => <R>(self: Router.Router<E, R>) => Router.Router<E2, R | Router.Router.ExcludeProvided<R2>>,
|
|
518
|
+
<R, E, E2, R2>(
|
|
519
|
+
self: Router.Router<E, R>,
|
|
520
|
+
f: (e: Cause.Cause<E>) => Router.Route.Handler<E2, R2>
|
|
521
|
+
) => Router.Router<E2, R | Router.Router.ExcludeProvided<R2>>
|
|
505
522
|
>(2, (self, f) => use(self, Effect.catchAllCause(f)))
|
|
506
523
|
|
|
507
524
|
/** @internal */
|
|
508
525
|
export const catchTag = dual<
|
|
509
|
-
<K extends (E extends { _tag: string } ? E["_tag"] : never), E,
|
|
526
|
+
<K extends (E extends { _tag: string } ? E["_tag"] : never), E, E1, R1>(
|
|
510
527
|
k: K,
|
|
511
|
-
f: (e: Extract<E, { _tag: K }>) => Router.Route.Handler<
|
|
528
|
+
f: (e: Extract<E, { _tag: K }>) => Router.Route.Handler<E1, R1>
|
|
512
529
|
) => <R>(
|
|
513
|
-
self: Router.Router<
|
|
514
|
-
) => Router.Router<
|
|
515
|
-
<R, E, K extends (E extends { _tag: string } ? E["_tag"] : never),
|
|
516
|
-
self: Router.Router<
|
|
530
|
+
self: Router.Router<E, R>
|
|
531
|
+
) => Router.Router<Exclude<E, { _tag: K }> | E1, R | Router.Router.ExcludeProvided<R1>>,
|
|
532
|
+
<R, E, K extends (E extends { _tag: string } ? E["_tag"] : never), E1, R1>(
|
|
533
|
+
self: Router.Router<E, R>,
|
|
517
534
|
k: K,
|
|
518
|
-
f: (e: Extract<E, { _tag: K }>) => Router.Route.Handler<
|
|
519
|
-
) => Router.Router<
|
|
535
|
+
f: (e: Extract<E, { _tag: K }>) => Router.Route.Handler<E1, R1>
|
|
536
|
+
) => Router.Router<Exclude<E, { _tag: K }> | E1, R | Router.Router.ExcludeProvided<R1>>
|
|
520
537
|
>(3, (self, k, f) => use(self, Effect.catchTag(k, f)))
|
|
521
538
|
|
|
522
539
|
/** @internal */
|
|
@@ -529,17 +546,17 @@ export const catchTags: {
|
|
|
529
546
|
{})
|
|
530
547
|
>(
|
|
531
548
|
cases: Cases
|
|
532
|
-
): <R>(self: Router.Router<
|
|
549
|
+
): <R>(self: Router.Router<E, R>) => Router.Router<
|
|
550
|
+
| Exclude<E, { _tag: keyof Cases }>
|
|
551
|
+
| {
|
|
552
|
+
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, infer E, any>) ? E : never
|
|
553
|
+
}[keyof Cases],
|
|
533
554
|
| R
|
|
534
555
|
| Router.Router.ExcludeProvided<
|
|
535
556
|
{
|
|
536
557
|
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, any, infer R>) ? R : never
|
|
537
558
|
}[keyof Cases]
|
|
538
|
-
|
|
539
|
-
| Exclude<E, { _tag: keyof Cases }>
|
|
540
|
-
| {
|
|
541
|
-
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, infer E, any>) ? E : never
|
|
542
|
-
}[keyof Cases]
|
|
559
|
+
>
|
|
543
560
|
>
|
|
544
561
|
<
|
|
545
562
|
R,
|
|
@@ -549,19 +566,19 @@ export const catchTags: {
|
|
|
549
566
|
} :
|
|
550
567
|
{})
|
|
551
568
|
>(
|
|
552
|
-
self: Router.Router<
|
|
569
|
+
self: Router.Router<E, R>,
|
|
553
570
|
cases: Cases
|
|
554
571
|
): Router.Router<
|
|
572
|
+
| Exclude<E, { _tag: keyof Cases }>
|
|
573
|
+
| {
|
|
574
|
+
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, infer E, any>) ? E : never
|
|
575
|
+
}[keyof Cases],
|
|
555
576
|
| R
|
|
556
577
|
| Router.Router.ExcludeProvided<
|
|
557
578
|
{
|
|
558
579
|
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, any, infer R>) ? R : never
|
|
559
580
|
}[keyof Cases]
|
|
560
|
-
|
|
561
|
-
| Exclude<E, { _tag: keyof Cases }>
|
|
562
|
-
| {
|
|
563
|
-
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, infer E, any>) ? E : never
|
|
564
|
-
}[keyof Cases]
|
|
581
|
+
>
|
|
565
582
|
>
|
|
566
583
|
} = dual(2, (self: Router.Router<any, any>, cases: {}) => use(self, Effect.catchTags(cases)))
|
|
567
584
|
|
|
@@ -570,18 +587,18 @@ export const provideService = dual<
|
|
|
570
587
|
tag: T,
|
|
571
588
|
service: Context.Tag.Service<T>
|
|
572
589
|
) => <R, E>(
|
|
573
|
-
self: Router.Router<
|
|
574
|
-
) => Router.Router<Exclude<R, Context.Tag.Identifier<T
|
|
590
|
+
self: Router.Router<E, R>
|
|
591
|
+
) => Router.Router<E, Exclude<R, Context.Tag.Identifier<T>>>,
|
|
575
592
|
<R, E, T extends Context.Tag<any, any>>(
|
|
576
|
-
self: Router.Router<
|
|
593
|
+
self: Router.Router<E, R>,
|
|
577
594
|
tag: T,
|
|
578
595
|
service: Context.Tag.Service<T>
|
|
579
|
-
) => Router.Router<Exclude<R, Context.Tag.Identifier<T
|
|
596
|
+
) => Router.Router<E, Exclude<R, Context.Tag.Identifier<T>>>
|
|
580
597
|
>(3, <R, E, T extends Context.Tag<any, any>>(
|
|
581
|
-
self: Router.Router<
|
|
598
|
+
self: Router.Router<E, R>,
|
|
582
599
|
tag: T,
|
|
583
600
|
service: Context.Tag.Service<T>
|
|
584
|
-
): Router.Router<Exclude<R, Context.Tag.Identifier<T
|
|
601
|
+
): Router.Router<E, Exclude<R, Context.Tag.Identifier<T>>> => use(self, Effect.provideService(tag, service)))
|
|
585
602
|
|
|
586
603
|
/* @internal */
|
|
587
604
|
export const provideServiceEffect = dual<
|
|
@@ -589,33 +606,33 @@ export const provideServiceEffect = dual<
|
|
|
589
606
|
tag: T,
|
|
590
607
|
effect: Effect.Effect<Context.Tag.Service<T>, E1, R1>
|
|
591
608
|
) => <R, E>(
|
|
592
|
-
self: Router.Router<
|
|
609
|
+
self: Router.Router<E, R>
|
|
593
610
|
) => Router.Router<
|
|
611
|
+
E | E1,
|
|
594
612
|
Exclude<
|
|
595
613
|
R | Router.Router.ExcludeProvided<R1>,
|
|
596
614
|
Context.Tag.Identifier<T>
|
|
597
|
-
|
|
598
|
-
E | E1
|
|
615
|
+
>
|
|
599
616
|
>,
|
|
600
617
|
<R, E, T extends Context.Tag<any, any>, R1, E1>(
|
|
601
|
-
self: Router.Router<
|
|
618
|
+
self: Router.Router<E, R>,
|
|
602
619
|
tag: T,
|
|
603
620
|
effect: Effect.Effect<Context.Tag.Service<T>, E1, R1>
|
|
604
621
|
) => Router.Router<
|
|
622
|
+
E | E1,
|
|
605
623
|
Exclude<
|
|
606
624
|
R | Router.Router.ExcludeProvided<R1>,
|
|
607
625
|
Context.Tag.Identifier<T>
|
|
608
|
-
|
|
609
|
-
E | E1
|
|
626
|
+
>
|
|
610
627
|
>
|
|
611
628
|
>(3, <R, E, T extends Context.Tag<any, any>, R1, E1>(
|
|
612
|
-
self: Router.Router<
|
|
629
|
+
self: Router.Router<E, R>,
|
|
613
630
|
tag: T,
|
|
614
631
|
effect: Effect.Effect<Context.Tag.Service<T>, E1, R1>
|
|
615
632
|
): Router.Router<
|
|
633
|
+
E | E1,
|
|
616
634
|
Exclude<
|
|
617
635
|
R | Router.Router.ExcludeProvided<R1>,
|
|
618
636
|
Context.Tag.Identifier<T>
|
|
619
|
-
|
|
620
|
-
E | E1
|
|
637
|
+
>
|
|
621
638
|
> => use(self, Effect.provideServiceEffect(tag, effect)) as any)
|
|
@@ -25,7 +25,7 @@ export const isServer = (u: unknown): u is Server.Server => typeof u === "object
|
|
|
25
25
|
export const make = (
|
|
26
26
|
options: {
|
|
27
27
|
readonly serve: (
|
|
28
|
-
httpApp: App.Default<
|
|
28
|
+
httpApp: App.Default<unknown>,
|
|
29
29
|
middleware?: Middleware.Middleware
|
|
30
30
|
) => Effect.Effect<void, never, Scope.Scope>
|
|
31
31
|
readonly address: Server.Address
|
|
@@ -36,10 +36,10 @@ export const make = (
|
|
|
36
36
|
export const serve = dual<
|
|
37
37
|
{
|
|
38
38
|
(): <R, E>(
|
|
39
|
-
httpApp: App.Default<
|
|
39
|
+
httpApp: App.Default<E, R>
|
|
40
40
|
) => Layer.Layer<never, never, Server.Server | Exclude<R, ServerRequest.ServerRequest | Scope.Scope>>
|
|
41
|
-
<R, E, App extends App.Default<any, any>>(middleware: Middleware.Middleware.Applied<
|
|
42
|
-
httpApp: App.Default<
|
|
41
|
+
<R, E, App extends App.Default<any, any>>(middleware: Middleware.Middleware.Applied<App, E, R>): (
|
|
42
|
+
httpApp: App.Default<E, R>
|
|
43
43
|
) => Layer.Layer<
|
|
44
44
|
never,
|
|
45
45
|
never,
|
|
@@ -48,11 +48,11 @@ export const serve = dual<
|
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
50
|
<R, E>(
|
|
51
|
-
httpApp: App.Default<
|
|
51
|
+
httpApp: App.Default<E, R>
|
|
52
52
|
): Layer.Layer<never, never, Server.Server | Exclude<R, ServerRequest.ServerRequest | Scope.Scope>>
|
|
53
53
|
<R, E, App extends App.Default<any, any>>(
|
|
54
|
-
httpApp: App.Default<
|
|
55
|
-
middleware: Middleware.Middleware.Applied<
|
|
54
|
+
httpApp: App.Default<E, R>,
|
|
55
|
+
middleware: Middleware.Middleware.Applied<App, E, R>
|
|
56
56
|
): Layer.Layer<
|
|
57
57
|
never,
|
|
58
58
|
never,
|
|
@@ -62,8 +62,8 @@ export const serve = dual<
|
|
|
62
62
|
>(
|
|
63
63
|
(args) => Effect.isEffect(args[0]),
|
|
64
64
|
<R, E, App extends App.Default<any, any>>(
|
|
65
|
-
httpApp: App.Default<
|
|
66
|
-
middleware?: Middleware.Middleware.Applied<
|
|
65
|
+
httpApp: App.Default<E, R>,
|
|
66
|
+
middleware?: Middleware.Middleware.Applied<App, E, R>
|
|
67
67
|
): Layer.Layer<
|
|
68
68
|
never,
|
|
69
69
|
never,
|
|
@@ -81,14 +81,14 @@ export const serve = dual<
|
|
|
81
81
|
export const serveEffect = dual<
|
|
82
82
|
{
|
|
83
83
|
(): <R, E>(
|
|
84
|
-
httpApp: App.Default<
|
|
84
|
+
httpApp: App.Default<E, R>
|
|
85
85
|
) => Effect.Effect<
|
|
86
86
|
void,
|
|
87
87
|
never,
|
|
88
88
|
Server.Server | Scope.Scope | Exclude<R, ServerRequest.ServerRequest>
|
|
89
89
|
>
|
|
90
|
-
<R, E, App extends App.Default<any, any>>(middleware: Middleware.Middleware.Applied<
|
|
91
|
-
httpApp: App.Default<
|
|
90
|
+
<R, E, App extends App.Default<any, any>>(middleware: Middleware.Middleware.Applied<App, E, R>): (
|
|
91
|
+
httpApp: App.Default<E, R>
|
|
92
92
|
) => Effect.Effect<
|
|
93
93
|
void,
|
|
94
94
|
never,
|
|
@@ -97,11 +97,11 @@ export const serveEffect = dual<
|
|
|
97
97
|
},
|
|
98
98
|
{
|
|
99
99
|
<R, E>(
|
|
100
|
-
httpApp: App.Default<
|
|
100
|
+
httpApp: App.Default<E, R>
|
|
101
101
|
): Effect.Effect<void, never, Server.Server | Scope.Scope | Exclude<R, ServerRequest.ServerRequest>>
|
|
102
102
|
<R, E, App extends App.Default<any, any>>(
|
|
103
|
-
httpApp: App.Default<
|
|
104
|
-
middleware: Middleware.Middleware.Applied<
|
|
103
|
+
httpApp: App.Default<E, R>,
|
|
104
|
+
middleware: Middleware.Middleware.Applied<App, E, R>
|
|
105
105
|
): Effect.Effect<
|
|
106
106
|
void,
|
|
107
107
|
never,
|
|
@@ -111,8 +111,8 @@ export const serveEffect = dual<
|
|
|
111
111
|
>(
|
|
112
112
|
(args) => Effect.isEffect(args[0]),
|
|
113
113
|
(<R, E, App extends App.Default<any, any>>(
|
|
114
|
-
httpApp: App.Default<
|
|
115
|
-
middleware: Middleware.Middleware.Applied<
|
|
114
|
+
httpApp: App.Default<E, R>,
|
|
115
|
+
middleware: Middleware.Middleware.Applied<App, E, R>
|
|
116
116
|
): Effect.Effect<
|
|
117
117
|
void,
|
|
118
118
|
never,
|
|
@@ -6,7 +6,7 @@ import * as Context from "effect/Context"
|
|
|
6
6
|
import * as Effect from "effect/Effect"
|
|
7
7
|
import * as Inspectable from "effect/Inspectable"
|
|
8
8
|
import * as Option from "effect/Option"
|
|
9
|
-
import type { ReadonlyRecord } from "effect/
|
|
9
|
+
import type { ReadonlyRecord } from "effect/Record"
|
|
10
10
|
import type * as Scope from "effect/Scope"
|
|
11
11
|
import * as Stream from "effect/Stream"
|
|
12
12
|
import type * as FileSystem from "../../FileSystem.js"
|
package/src/internal/worker.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as Schema from "@effect/schema/Schema"
|
|
2
2
|
import * as Serializable from "@effect/schema/Serializable"
|
|
3
|
+
import * as Array from "effect/Array"
|
|
3
4
|
import * as Cause from "effect/Cause"
|
|
4
5
|
import * as Channel from "effect/Channel"
|
|
5
6
|
import * as Chunk from "effect/Chunk"
|
|
@@ -13,7 +14,6 @@ import * as Layer from "effect/Layer"
|
|
|
13
14
|
import * as Option from "effect/Option"
|
|
14
15
|
import * as Pool from "effect/Pool"
|
|
15
16
|
import * as Queue from "effect/Queue"
|
|
16
|
-
import * as ReadonlyArray from "effect/ReadonlyArray"
|
|
17
17
|
import * as Schedule from "effect/Schedule"
|
|
18
18
|
import type * as Scope from "effect/Scope"
|
|
19
19
|
import * as Stream from "effect/Stream"
|
|
@@ -64,7 +64,7 @@ export const makeManager = Effect.gen(function*(_) {
|
|
|
64
64
|
let idCounter = 0
|
|
65
65
|
return WorkerManager.of({
|
|
66
66
|
[WorkerManagerTypeId]: WorkerManagerTypeId,
|
|
67
|
-
spawn<I,
|
|
67
|
+
spawn<I, O, E>({
|
|
68
68
|
encode,
|
|
69
69
|
initialMessage,
|
|
70
70
|
permits = 1,
|
|
@@ -112,7 +112,7 @@ export const makeManager = Effect.gen(function*(_) {
|
|
|
112
112
|
Queue.take(backing.queue),
|
|
113
113
|
Effect.flatMap((msg) => {
|
|
114
114
|
if (msg[0] === 0) {
|
|
115
|
-
return Deferred.complete(readyLatch, Effect.
|
|
115
|
+
return Deferred.complete(readyLatch, Effect.void)
|
|
116
116
|
}
|
|
117
117
|
return handleMessage(msg[1])
|
|
118
118
|
}),
|
|
@@ -153,7 +153,7 @@ export const makeManager = Effect.gen(function*(_) {
|
|
|
153
153
|
const handleMessage = (response: Worker.Worker.Response<E, O>) =>
|
|
154
154
|
Effect.suspend(() => {
|
|
155
155
|
const queue = requestMap.get(response[0])
|
|
156
|
-
if (!queue) return Effect.
|
|
156
|
+
if (!queue) return Effect.void
|
|
157
157
|
|
|
158
158
|
switch (response[1]) {
|
|
159
159
|
// data
|
|
@@ -210,7 +210,7 @@ export const makeManager = Effect.gen(function*(_) {
|
|
|
210
210
|
exit: Exit.Exit<unknown, unknown>
|
|
211
211
|
) => {
|
|
212
212
|
const release = Effect.zipRight(
|
|
213
|
-
Deferred.complete(deferred, Effect.
|
|
213
|
+
Deferred.complete(deferred, Effect.void),
|
|
214
214
|
Effect.sync(() => requestMap.delete(id))
|
|
215
215
|
)
|
|
216
216
|
return Exit.isFailure(exit) ?
|
|
@@ -229,7 +229,7 @@ export const makeManager = Effect.gen(function*(_) {
|
|
|
229
229
|
.flatMap(
|
|
230
230
|
Queue.take(queue),
|
|
231
231
|
Exit.match({
|
|
232
|
-
onFailure: (cause) => Cause.isEmpty(cause) ? Channel.
|
|
232
|
+
onFailure: (cause) => Cause.isEmpty(cause) ? Channel.void : Channel.failCause(cause),
|
|
233
233
|
onSuccess: (value) => Channel.flatMap(Channel.write(Chunk.unsafeFromArray(value)), () => loop)
|
|
234
234
|
})
|
|
235
235
|
)
|
|
@@ -240,7 +240,7 @@ export const makeManager = Effect.gen(function*(_) {
|
|
|
240
240
|
const executeEffect = (request: I) =>
|
|
241
241
|
Effect.acquireUseRelease(
|
|
242
242
|
executeAcquire(request),
|
|
243
|
-
([, queue]) => Effect.flatMap(Queue.take(queue), Exit.map(
|
|
243
|
+
([, queue]) => Effect.flatMap(Queue.take(queue), Exit.map(Array.unsafeGet(0))),
|
|
244
244
|
executeRelease
|
|
245
245
|
)
|
|
246
246
|
|
|
@@ -251,7 +251,7 @@ export const makeManager = Effect.gen(function*(_) {
|
|
|
251
251
|
pipe(
|
|
252
252
|
Effect.suspend(() => {
|
|
253
253
|
const result = requestMap.get(id)
|
|
254
|
-
if (!result) return Effect.
|
|
254
|
+
if (!result) return Effect.void
|
|
255
255
|
const transferables = transfers(request)
|
|
256
256
|
const spanTuple = Option.getOrUndefined(
|
|
257
257
|
Option.map(span, (span) => [span.traceId, span.spanId, span.sampled] as const)
|
|
@@ -296,14 +296,14 @@ export const makeManager = Effect.gen(function*(_) {
|
|
|
296
296
|
export const layerManager = Layer.effect(WorkerManager, makeManager)
|
|
297
297
|
|
|
298
298
|
/** @internal */
|
|
299
|
-
export const makePool = <I,
|
|
299
|
+
export const makePool = <I, O, E>(
|
|
300
300
|
options: Worker.WorkerPool.Options<I>
|
|
301
301
|
) =>
|
|
302
302
|
Effect.gen(function*(_) {
|
|
303
303
|
const manager = yield* _(WorkerManager)
|
|
304
|
-
const workers = new Set<Worker.Worker<I,
|
|
304
|
+
const workers = new Set<Worker.Worker<I, O, E>>()
|
|
305
305
|
const acquire = pipe(
|
|
306
|
-
manager.spawn<I,
|
|
306
|
+
manager.spawn<I, O, E>(options),
|
|
307
307
|
Effect.tap((worker) => Effect.sync(() => workers.add(worker))),
|
|
308
308
|
Effect.tap((worker) => Effect.addFinalizer(() => Effect.sync(() => workers.delete(worker)))),
|
|
309
309
|
options.onCreate ? Effect.tap(options.onCreate) : identity
|
|
@@ -321,7 +321,7 @@ export const makePool = <I, E, O>(
|
|
|
321
321
|
size: options.size
|
|
322
322
|
})
|
|
323
323
|
)
|
|
324
|
-
const pool: Worker.WorkerPool<I,
|
|
324
|
+
const pool: Worker.WorkerPool<I, O, E> = {
|
|
325
325
|
backing,
|
|
326
326
|
broadcast: (message: I) =>
|
|
327
327
|
Effect.forEach(workers, (worker) => worker.executeEffect(message), {
|
|
@@ -346,8 +346,8 @@ export const makePool = <I, E, O>(
|
|
|
346
346
|
})
|
|
347
347
|
|
|
348
348
|
/** @internal */
|
|
349
|
-
export const makePoolLayer = <Tag, I,
|
|
350
|
-
tag: Context.Tag<Tag, Worker.WorkerPool<I,
|
|
349
|
+
export const makePoolLayer = <Tag, I, O, E>(
|
|
350
|
+
tag: Context.Tag<Tag, Worker.WorkerPool<I, O, E>>,
|
|
351
351
|
options: Worker.WorkerPool.Options<I>
|
|
352
352
|
) => Layer.scoped(tag, makePool(options))
|
|
353
353
|
|