@effect/platform 0.48.28 → 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 +13 -11
- 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 +1 -6
- 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 +11 -11
- 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 +98 -66
- 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 +13 -11
- 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 +0 -5
- 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 +10 -9
- 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 +44 -41
- 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 +156 -141
- 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 +146 -116
- 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,
|
|
@@ -187,7 +189,8 @@ const toHttpApp = <R, E>(
|
|
|
187
189
|
"*",
|
|
188
190
|
options?.includePrefix ? `${path}/*` as Router.PathInput : "/*",
|
|
189
191
|
app,
|
|
190
|
-
options?.includePrefix ? Option.none() : Option.some(path)
|
|
192
|
+
options?.includePrefix ? Option.none() : Option.some(path),
|
|
193
|
+
false
|
|
191
194
|
),
|
|
192
195
|
{},
|
|
193
196
|
{}
|
|
@@ -219,7 +222,7 @@ const toHttpApp = <R, E>(
|
|
|
219
222
|
context = Context.add(context, ServerRequest.ServerRequest, sliceRequestUrl(request, path))
|
|
220
223
|
}
|
|
221
224
|
return Effect.locally(
|
|
222
|
-
routeContext.route.handler as App.Default<
|
|
225
|
+
routeContext.route.handler as App.Default<E, R>,
|
|
223
226
|
FiberRef.currentContext,
|
|
224
227
|
context
|
|
225
228
|
)
|
|
@@ -240,7 +243,13 @@ const toHttpApp = <R, E>(
|
|
|
240
243
|
}
|
|
241
244
|
context = Context.add(context, RouteContext, new RouteContextImpl(route, result.params, result.searchParams))
|
|
242
245
|
return Effect.locally(
|
|
243
|
-
route.
|
|
246
|
+
(route.uninterruptible ?
|
|
247
|
+
route.handler :
|
|
248
|
+
Effect.interruptible(route.handler)) as Effect.Effect<
|
|
249
|
+
ServerResponse.ServerResponse,
|
|
250
|
+
E,
|
|
251
|
+
Router.Router.ExcludeProvided<R>
|
|
252
|
+
>,
|
|
244
253
|
FiberRef.currentContext,
|
|
245
254
|
context
|
|
246
255
|
)
|
|
@@ -252,13 +261,14 @@ function sliceRequestUrl(request: ServerRequest.ServerRequest, prefix: string) {
|
|
|
252
261
|
return request.modify({ url: request.url.length <= prefexLen ? "/" : request.url.slice(prefexLen) })
|
|
253
262
|
}
|
|
254
263
|
|
|
255
|
-
class RouteImpl<
|
|
264
|
+
class RouteImpl<E = never, R = never> extends Inspectable.Class implements Router.Route<E, R> {
|
|
256
265
|
readonly [RouteTypeId]: Router.RouteTypeId
|
|
257
266
|
constructor(
|
|
258
267
|
readonly method: Method.Method | "*",
|
|
259
268
|
readonly path: Router.PathInput,
|
|
260
|
-
readonly handler: Router.Route.Handler<
|
|
261
|
-
readonly prefix = Option.none<string>()
|
|
269
|
+
readonly handler: Router.Route.Handler<E, R>,
|
|
270
|
+
readonly prefix = Option.none<string>(),
|
|
271
|
+
readonly uninterruptible = false
|
|
262
272
|
) {
|
|
263
273
|
super()
|
|
264
274
|
this[RouteTypeId] = RouteTypeId
|
|
@@ -285,28 +295,36 @@ class RouteContextImpl implements Router.RouteContext {
|
|
|
285
295
|
}
|
|
286
296
|
|
|
287
297
|
/** @internal */
|
|
288
|
-
export const empty: Router.Router<never
|
|
298
|
+
export const empty: Router.Router<never> = new RouterImpl(Chunk.empty(), Chunk.empty())
|
|
289
299
|
|
|
290
300
|
/** @internal */
|
|
291
301
|
export const fromIterable = <R extends Router.Route<any, any>>(
|
|
292
302
|
routes: Iterable<R>
|
|
293
303
|
): Router.Router<
|
|
294
|
-
R extends Router.Route<infer
|
|
295
|
-
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
|
|
296
306
|
> => new RouterImpl(Chunk.fromIterable(routes), Chunk.empty()) as any
|
|
297
307
|
|
|
298
308
|
/** @internal */
|
|
299
|
-
export const makeRoute = <
|
|
309
|
+
export const makeRoute = <E, R>(
|
|
300
310
|
method: Method.Method,
|
|
301
311
|
path: Router.PathInput,
|
|
302
|
-
handler: Router.Route.Handler<
|
|
303
|
-
prefix: Option.Option<string> = Option.none()
|
|
304
|
-
|
|
312
|
+
handler: Router.Route.Handler<E, R>,
|
|
313
|
+
prefix: Option.Option<string> = Option.none(),
|
|
314
|
+
uninterruptible = false
|
|
315
|
+
): Router.Route<E, Router.Router.ExcludeProvided<R>> =>
|
|
316
|
+
new RouteImpl(
|
|
317
|
+
method,
|
|
318
|
+
path,
|
|
319
|
+
handler,
|
|
320
|
+
prefix,
|
|
321
|
+
uninterruptible
|
|
322
|
+
) as any
|
|
305
323
|
|
|
306
324
|
/** @internal */
|
|
307
325
|
export const concat = dual<
|
|
308
|
-
<R1, E1>(that: Router.Router<
|
|
309
|
-
<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>
|
|
310
328
|
>(2, (self, that) => new RouterImpl(Chunk.appendAll(self.routes, that.routes) as any, self.mounts))
|
|
311
329
|
|
|
312
330
|
const removeTrailingSlash = (
|
|
@@ -315,8 +333,8 @@ const removeTrailingSlash = (
|
|
|
315
333
|
|
|
316
334
|
/** @internal */
|
|
317
335
|
export const prefixAll = dual<
|
|
318
|
-
(prefix: Router.PathInput) => <R, E>(self: Router.Router<
|
|
319
|
-
<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>
|
|
320
338
|
>(
|
|
321
339
|
2,
|
|
322
340
|
(self, prefix) => {
|
|
@@ -330,7 +348,8 @@ export const prefixAll = dual<
|
|
|
330
348
|
Option.orElse(
|
|
331
349
|
Option.map(route.prefix, (_) => prefix + _),
|
|
332
350
|
() => Option.some(prefix)
|
|
333
|
-
)
|
|
351
|
+
),
|
|
352
|
+
route.uninterruptible
|
|
334
353
|
)),
|
|
335
354
|
Chunk.map(self.mounts, ([path, app]) => [path === "/" ? prefix : prefix + path, app])
|
|
336
355
|
)
|
|
@@ -341,13 +360,13 @@ export const prefixAll = dual<
|
|
|
341
360
|
export const mount = dual<
|
|
342
361
|
<R1, E1>(
|
|
343
362
|
path: `/${string}`,
|
|
344
|
-
that: Router.Router<
|
|
345
|
-
) => <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>,
|
|
346
365
|
<R, E, R1, E1>(
|
|
347
|
-
self: Router.Router<
|
|
366
|
+
self: Router.Router<E, R>,
|
|
348
367
|
path: `/${string}`,
|
|
349
|
-
that: Router.Router<
|
|
350
|
-
) => Router.Router<
|
|
368
|
+
that: Router.Router<E1, R1>
|
|
369
|
+
) => Router.Router<E | E1, R | R1>
|
|
351
370
|
>(
|
|
352
371
|
3,
|
|
353
372
|
(self, path, that) => concat(self, prefixAll(that, path))
|
|
@@ -357,31 +376,31 @@ export const mount = dual<
|
|
|
357
376
|
export const mountApp = dual<
|
|
358
377
|
<R1, E1>(
|
|
359
378
|
path: `/${string}`,
|
|
360
|
-
that: App.Default<
|
|
379
|
+
that: App.Default<E1, R1>,
|
|
361
380
|
options?: {
|
|
362
381
|
readonly includePrefix?: boolean | undefined
|
|
363
382
|
} | undefined
|
|
364
383
|
) => <R, E>(
|
|
365
|
-
self: Router.Router<
|
|
366
|
-
) => Router.Router<R | Router.Router.ExcludeProvided<R1
|
|
384
|
+
self: Router.Router<E, R>
|
|
385
|
+
) => Router.Router<E | E1, R | Router.Router.ExcludeProvided<R1>>,
|
|
367
386
|
<R, E, R1, E1>(
|
|
368
|
-
self: Router.Router<
|
|
387
|
+
self: Router.Router<E, R>,
|
|
369
388
|
path: `/${string}`,
|
|
370
|
-
that: App.Default<
|
|
389
|
+
that: App.Default<E1, R1>,
|
|
371
390
|
options?: {
|
|
372
391
|
readonly includePrefix?: boolean | undefined
|
|
373
392
|
} | undefined
|
|
374
|
-
) => Router.Router<R | Router.Router.ExcludeProvided<R1
|
|
393
|
+
) => Router.Router<E | E1, R | Router.Router.ExcludeProvided<R1>>
|
|
375
394
|
>(
|
|
376
395
|
(args) => Predicate.hasProperty(args[0], TypeId),
|
|
377
396
|
<R, E, R1, E1>(
|
|
378
|
-
self: Router.Router<
|
|
397
|
+
self: Router.Router<E, R>,
|
|
379
398
|
path: `/${string}`,
|
|
380
|
-
that: App.Default<
|
|
399
|
+
that: App.Default<E1, R1>,
|
|
381
400
|
options?: {
|
|
382
401
|
readonly includePrefix?: boolean | undefined
|
|
383
402
|
} | undefined
|
|
384
|
-
): Router.Router<R | Router.Router.ExcludeProvided<R1
|
|
403
|
+
): Router.Router<E | E1, R | Router.Router.ExcludeProvided<R1>> =>
|
|
385
404
|
new RouterImpl<any, any>(self.routes, Chunk.append(self.mounts, [removeTrailingSlash(path), that, options])) as any
|
|
386
405
|
)
|
|
387
406
|
|
|
@@ -389,31 +408,49 @@ export const mountApp = dual<
|
|
|
389
408
|
export const route = (method: Method.Method | "*"): {
|
|
390
409
|
<R1, E1>(
|
|
391
410
|
path: Router.PathInput,
|
|
392
|
-
handler: Router.Route.Handler<
|
|
411
|
+
handler: Router.Route.Handler<E1, R1>,
|
|
412
|
+
options?: {
|
|
413
|
+
readonly uninterruptible?: boolean | undefined
|
|
414
|
+
} | undefined
|
|
393
415
|
): <R, E>(
|
|
394
|
-
self: Router.Router<
|
|
395
|
-
) => Router.Router<R | Router.Router.ExcludeProvided<R1
|
|
416
|
+
self: Router.Router<E, R>
|
|
417
|
+
) => Router.Router<E1 | E, R | Router.Router.ExcludeProvided<R1>>
|
|
396
418
|
<R, E, R1, E1>(
|
|
397
|
-
self: Router.Router<
|
|
419
|
+
self: Router.Router<E, R>,
|
|
398
420
|
path: Router.PathInput,
|
|
399
|
-
handler: Router.Route.Handler<
|
|
400
|
-
|
|
421
|
+
handler: Router.Route.Handler<E1, R1>,
|
|
422
|
+
options?: {
|
|
423
|
+
readonly uninterruptible?: boolean | undefined
|
|
424
|
+
} | undefined
|
|
425
|
+
): Router.Router<E1 | E, R | Router.Router.ExcludeProvided<R1>>
|
|
401
426
|
} =>
|
|
402
427
|
dual<
|
|
403
428
|
<R1, E1>(
|
|
404
429
|
path: Router.PathInput,
|
|
405
430
|
handler: Router.Route.Handler<R1, E1>
|
|
406
431
|
) => <R, E>(
|
|
407
|
-
self: Router.Router<
|
|
408
|
-
) => Router.Router<R | Router.Router.ExcludeProvided<R1
|
|
432
|
+
self: Router.Router<E, R>
|
|
433
|
+
) => Router.Router<E | E1, R | Router.Router.ExcludeProvided<R1>>,
|
|
409
434
|
<R, E, R1, E1>(
|
|
410
|
-
self: Router.Router<
|
|
435
|
+
self: Router.Router<E, R>,
|
|
411
436
|
path: Router.PathInput,
|
|
412
|
-
handler: Router.Route.Handler<
|
|
413
|
-
|
|
414
|
-
|
|
437
|
+
handler: Router.Route.Handler<E1, R1>,
|
|
438
|
+
options?: {
|
|
439
|
+
readonly uninterruptible?: boolean | undefined
|
|
440
|
+
} | undefined
|
|
441
|
+
) => Router.Router<E | E1, R | Router.Router.ExcludeProvided<R1>>
|
|
442
|
+
>((args) => isRouter(args[0]), (self, path, handler, options) =>
|
|
415
443
|
new RouterImpl<any, any>(
|
|
416
|
-
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
|
+
),
|
|
417
454
|
self.mounts
|
|
418
455
|
))
|
|
419
456
|
|
|
@@ -443,18 +480,18 @@ export const options = route("OPTIONS")
|
|
|
443
480
|
|
|
444
481
|
/** @internal */
|
|
445
482
|
export const use = dual<
|
|
446
|
-
<
|
|
447
|
-
f: (self: Router.Route.Handler<
|
|
448
|
-
) => (self: Router.Router<
|
|
449
|
-
<
|
|
450
|
-
self: Router.Router<
|
|
451
|
-
f: (self: Router.Route.Handler<
|
|
452
|
-
) => 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>>
|
|
453
490
|
>(2, (self, f) =>
|
|
454
491
|
new RouterImpl<any, any>(
|
|
455
492
|
Chunk.map(
|
|
456
493
|
self.routes,
|
|
457
|
-
(route) => new RouteImpl(route.method, route.path, f(route.handler) as any, route.prefix)
|
|
494
|
+
(route) => new RouteImpl(route.method, route.path, f(route.handler) as any, route.prefix, route.uninterruptible)
|
|
458
495
|
),
|
|
459
496
|
Chunk.map(
|
|
460
497
|
self.mounts,
|
|
@@ -464,39 +501,39 @@ export const use = dual<
|
|
|
464
501
|
|
|
465
502
|
/** @internal */
|
|
466
503
|
export const catchAll = dual<
|
|
467
|
-
<E,
|
|
468
|
-
f: (e: E) => Router.Route.Handler<
|
|
469
|
-
) => <R>(self: Router.Router<
|
|
470
|
-
<R, E,
|
|
471
|
-
self: Router.Router<
|
|
472
|
-
f: (e: E) => Router.Route.Handler<
|
|
473
|
-
) => 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>>
|
|
474
511
|
>(2, (self, f) => use(self, Effect.catchAll(f)))
|
|
475
512
|
|
|
476
513
|
/** @internal */
|
|
477
514
|
export const catchAllCause = dual<
|
|
478
|
-
<E,
|
|
479
|
-
f: (e: Cause.Cause<E>) => Router.Route.Handler<
|
|
480
|
-
) => <R>(self: Router.Router<
|
|
481
|
-
<R, E,
|
|
482
|
-
self: Router.Router<
|
|
483
|
-
f: (e: Cause.Cause<E>) => Router.Route.Handler<
|
|
484
|
-
) => 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>>
|
|
485
522
|
>(2, (self, f) => use(self, Effect.catchAllCause(f)))
|
|
486
523
|
|
|
487
524
|
/** @internal */
|
|
488
525
|
export const catchTag = dual<
|
|
489
|
-
<K extends (E extends { _tag: string } ? E["_tag"] : never), E,
|
|
526
|
+
<K extends (E extends { _tag: string } ? E["_tag"] : never), E, E1, R1>(
|
|
490
527
|
k: K,
|
|
491
|
-
f: (e: Extract<E, { _tag: K }>) => Router.Route.Handler<
|
|
528
|
+
f: (e: Extract<E, { _tag: K }>) => Router.Route.Handler<E1, R1>
|
|
492
529
|
) => <R>(
|
|
493
|
-
self: Router.Router<
|
|
494
|
-
) => Router.Router<
|
|
495
|
-
<R, E, K extends (E extends { _tag: string } ? E["_tag"] : never),
|
|
496
|
-
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>,
|
|
497
534
|
k: K,
|
|
498
|
-
f: (e: Extract<E, { _tag: K }>) => Router.Route.Handler<
|
|
499
|
-
) => 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>>
|
|
500
537
|
>(3, (self, k, f) => use(self, Effect.catchTag(k, f)))
|
|
501
538
|
|
|
502
539
|
/** @internal */
|
|
@@ -509,17 +546,17 @@ export const catchTags: {
|
|
|
509
546
|
{})
|
|
510
547
|
>(
|
|
511
548
|
cases: Cases
|
|
512
|
-
): <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],
|
|
513
554
|
| R
|
|
514
555
|
| Router.Router.ExcludeProvided<
|
|
515
556
|
{
|
|
516
557
|
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, any, infer R>) ? R : never
|
|
517
558
|
}[keyof Cases]
|
|
518
|
-
|
|
519
|
-
| Exclude<E, { _tag: keyof Cases }>
|
|
520
|
-
| {
|
|
521
|
-
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, infer E, any>) ? E : never
|
|
522
|
-
}[keyof Cases]
|
|
559
|
+
>
|
|
523
560
|
>
|
|
524
561
|
<
|
|
525
562
|
R,
|
|
@@ -529,19 +566,19 @@ export const catchTags: {
|
|
|
529
566
|
} :
|
|
530
567
|
{})
|
|
531
568
|
>(
|
|
532
|
-
self: Router.Router<
|
|
569
|
+
self: Router.Router<E, R>,
|
|
533
570
|
cases: Cases
|
|
534
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],
|
|
535
576
|
| R
|
|
536
577
|
| Router.Router.ExcludeProvided<
|
|
537
578
|
{
|
|
538
579
|
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, any, infer R>) ? R : never
|
|
539
580
|
}[keyof Cases]
|
|
540
|
-
|
|
541
|
-
| Exclude<E, { _tag: keyof Cases }>
|
|
542
|
-
| {
|
|
543
|
-
[K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, infer E, any>) ? E : never
|
|
544
|
-
}[keyof Cases]
|
|
581
|
+
>
|
|
545
582
|
>
|
|
546
583
|
} = dual(2, (self: Router.Router<any, any>, cases: {}) => use(self, Effect.catchTags(cases)))
|
|
547
584
|
|
|
@@ -550,18 +587,18 @@ export const provideService = dual<
|
|
|
550
587
|
tag: T,
|
|
551
588
|
service: Context.Tag.Service<T>
|
|
552
589
|
) => <R, E>(
|
|
553
|
-
self: Router.Router<
|
|
554
|
-
) => Router.Router<Exclude<R, Context.Tag.Identifier<T
|
|
590
|
+
self: Router.Router<E, R>
|
|
591
|
+
) => Router.Router<E, Exclude<R, Context.Tag.Identifier<T>>>,
|
|
555
592
|
<R, E, T extends Context.Tag<any, any>>(
|
|
556
|
-
self: Router.Router<
|
|
593
|
+
self: Router.Router<E, R>,
|
|
557
594
|
tag: T,
|
|
558
595
|
service: Context.Tag.Service<T>
|
|
559
|
-
) => Router.Router<Exclude<R, Context.Tag.Identifier<T
|
|
596
|
+
) => Router.Router<E, Exclude<R, Context.Tag.Identifier<T>>>
|
|
560
597
|
>(3, <R, E, T extends Context.Tag<any, any>>(
|
|
561
|
-
self: Router.Router<
|
|
598
|
+
self: Router.Router<E, R>,
|
|
562
599
|
tag: T,
|
|
563
600
|
service: Context.Tag.Service<T>
|
|
564
|
-
): Router.Router<Exclude<R, Context.Tag.Identifier<T
|
|
601
|
+
): Router.Router<E, Exclude<R, Context.Tag.Identifier<T>>> => use(self, Effect.provideService(tag, service)))
|
|
565
602
|
|
|
566
603
|
/* @internal */
|
|
567
604
|
export const provideServiceEffect = dual<
|
|
@@ -569,40 +606,33 @@ export const provideServiceEffect = dual<
|
|
|
569
606
|
tag: T,
|
|
570
607
|
effect: Effect.Effect<Context.Tag.Service<T>, E1, R1>
|
|
571
608
|
) => <R, E>(
|
|
572
|
-
self: Router.Router<
|
|
609
|
+
self: Router.Router<E, R>
|
|
573
610
|
) => Router.Router<
|
|
611
|
+
E | E1,
|
|
574
612
|
Exclude<
|
|
575
613
|
R | Router.Router.ExcludeProvided<R1>,
|
|
576
614
|
Context.Tag.Identifier<T>
|
|
577
|
-
|
|
578
|
-
E | E1
|
|
615
|
+
>
|
|
579
616
|
>,
|
|
580
617
|
<R, E, T extends Context.Tag<any, any>, R1, E1>(
|
|
581
|
-
self: Router.Router<
|
|
618
|
+
self: Router.Router<E, R>,
|
|
582
619
|
tag: T,
|
|
583
620
|
effect: Effect.Effect<Context.Tag.Service<T>, E1, R1>
|
|
584
621
|
) => Router.Router<
|
|
622
|
+
E | E1,
|
|
585
623
|
Exclude<
|
|
586
624
|
R | Router.Router.ExcludeProvided<R1>,
|
|
587
625
|
Context.Tag.Identifier<T>
|
|
588
|
-
|
|
589
|
-
E | E1
|
|
626
|
+
>
|
|
590
627
|
>
|
|
591
628
|
>(3, <R, E, T extends Context.Tag<any, any>, R1, E1>(
|
|
592
|
-
self: Router.Router<
|
|
629
|
+
self: Router.Router<E, R>,
|
|
593
630
|
tag: T,
|
|
594
631
|
effect: Effect.Effect<Context.Tag.Service<T>, E1, R1>
|
|
595
632
|
): Router.Router<
|
|
633
|
+
E | E1,
|
|
596
634
|
Exclude<
|
|
597
635
|
R | Router.Router.ExcludeProvided<R1>,
|
|
598
636
|
Context.Tag.Identifier<T>
|
|
599
|
-
|
|
600
|
-
E | E1
|
|
637
|
+
>
|
|
601
638
|
> => use(self, Effect.provideServiceEffect(tag, effect)) as any)
|
|
602
|
-
|
|
603
|
-
/* @internal */
|
|
604
|
-
export const uninterruptible = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
|
|
605
|
-
Effect.uninterruptible(Effect.flatMap(
|
|
606
|
-
effect,
|
|
607
|
-
Effect.die
|
|
608
|
-
))
|
|
@@ -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"
|