@effect/platform 0.37.7 → 0.38.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/dist/cjs/Http/App.js +20 -4
- package/dist/cjs/Http/App.js.map +1 -1
- package/dist/cjs/Http/ClientResponse.js.map +1 -1
- package/dist/cjs/Http/Router.js.map +1 -1
- package/dist/cjs/Http/Server.js.map +1 -1
- package/dist/cjs/Http/ServerError.js +14 -1
- package/dist/cjs/Http/ServerError.js.map +1 -1
- package/dist/cjs/Http/ServerRequest.js.map +1 -1
- package/dist/cjs/internal/http/middleware.js +5 -4
- package/dist/cjs/internal/http/middleware.js.map +1 -1
- package/dist/cjs/internal/http/router.js.map +1 -1
- package/dist/cjs/internal/http/serverError.js +14 -1
- package/dist/cjs/internal/http/serverError.js.map +1 -1
- package/dist/dts/Http/App.d.ts +5 -7
- package/dist/dts/Http/App.d.ts.map +1 -1
- package/dist/dts/Http/ClientResponse.d.ts +2 -3
- package/dist/dts/Http/ClientResponse.d.ts.map +1 -1
- package/dist/dts/Http/Router.d.ts +45 -40
- package/dist/dts/Http/Router.d.ts.map +1 -1
- package/dist/dts/Http/Server.d.ts +4 -4
- package/dist/dts/Http/Server.d.ts.map +1 -1
- package/dist/dts/Http/ServerError.d.ts +15 -0
- package/dist/dts/Http/ServerError.d.ts.map +1 -1
- package/dist/dts/Http/ServerRequest.d.ts +1 -0
- package/dist/dts/Http/ServerRequest.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 +20 -4
- package/dist/esm/Http/App.js.map +1 -1
- package/dist/esm/Http/ClientResponse.js.map +1 -1
- package/dist/esm/Http/Router.js.map +1 -1
- package/dist/esm/Http/Server.js.map +1 -1
- package/dist/esm/Http/ServerError.js +13 -0
- package/dist/esm/Http/ServerError.js.map +1 -1
- package/dist/esm/Http/ServerRequest.js.map +1 -1
- package/dist/esm/internal/http/middleware.js +5 -4
- package/dist/esm/internal/http/middleware.js.map +1 -1
- package/dist/esm/internal/http/router.js.map +1 -1
- package/dist/esm/internal/http/serverError.js +11 -0
- package/dist/esm/internal/http/serverError.js.map +1 -1
- package/package.json +4 -4
- package/src/Http/App.ts +26 -12
- package/src/Http/ClientResponse.ts +1 -2
- package/src/Http/Router.ts +79 -43
- package/src/Http/Server.ts +12 -4
- package/src/Http/ServerError.ts +18 -0
- package/src/Http/ServerRequest.ts +1 -0
- package/src/internal/http/middleware.ts +9 -4
- package/src/internal/http/router.ts +1 -1
- package/src/internal/http/server.ts +5 -5
- package/src/internal/http/serverError.ts +22 -0
package/src/Http/Router.ts
CHANGED
|
@@ -8,6 +8,7 @@ import type * as Chunk from "effect/Chunk"
|
|
|
8
8
|
import type * as Context from "effect/Context"
|
|
9
9
|
import type * as Effect from "effect/Effect"
|
|
10
10
|
import type * as Option from "effect/Option"
|
|
11
|
+
import type * as Scope from "effect/Scope"
|
|
11
12
|
import * as internal from "../internal/http/router.js"
|
|
12
13
|
import type * as App from "./App.js"
|
|
13
14
|
import type * as Method from "./Method.js"
|
|
@@ -44,7 +45,7 @@ export declare namespace Router {
|
|
|
44
45
|
/**
|
|
45
46
|
* @since 1.0.0
|
|
46
47
|
*/
|
|
47
|
-
export type ExcludeProvided<A> = Exclude<A, RouteContext | ServerRequest.ServerRequest>
|
|
48
|
+
export type ExcludeProvided<A> = Exclude<A, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
/**
|
|
@@ -186,7 +187,7 @@ export const makeRoute: <R, E>(
|
|
|
186
187
|
path: PathInput,
|
|
187
188
|
handler: Route.Handler<R, E>,
|
|
188
189
|
prefix?: Option.Option<string>
|
|
189
|
-
) => Route<R, E> = internal.makeRoute
|
|
190
|
+
) => Route<Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E> = internal.makeRoute
|
|
190
191
|
|
|
191
192
|
/**
|
|
192
193
|
* @since 1.0.0
|
|
@@ -231,7 +232,8 @@ export const mountApp: {
|
|
|
231
232
|
): <R, E>(
|
|
232
233
|
self: Router<R, E>
|
|
233
234
|
) => Router<
|
|
234
|
-
Exclude<R1, RouteContext | ServerRequest.ServerRequest
|
|
235
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
236
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
235
237
|
E1 | E
|
|
236
238
|
>
|
|
237
239
|
<R, E, R1, E1>(
|
|
@@ -239,7 +241,8 @@ export const mountApp: {
|
|
|
239
241
|
path: `/${string}`,
|
|
240
242
|
that: App.Default<R1, E1>
|
|
241
243
|
): Router<
|
|
242
|
-
Exclude<R, RouteContext | ServerRequest.ServerRequest
|
|
244
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
245
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
243
246
|
E | E1
|
|
244
247
|
>
|
|
245
248
|
} = internal.mountApp
|
|
@@ -257,7 +260,8 @@ export const route: (
|
|
|
257
260
|
): <R, E>(
|
|
258
261
|
self: Router<R, E>
|
|
259
262
|
) => Router<
|
|
260
|
-
Exclude<R1, RouteContext | ServerRequest.ServerRequest
|
|
263
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
264
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
261
265
|
E1 | E
|
|
262
266
|
>
|
|
263
267
|
<R, E, R1, E1>(
|
|
@@ -265,7 +269,8 @@ export const route: (
|
|
|
265
269
|
path: PathInput,
|
|
266
270
|
handler: Route.Handler<R1, E1>
|
|
267
271
|
): Router<
|
|
268
|
-
Exclude<R, RouteContext | ServerRequest.ServerRequest
|
|
272
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
273
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
269
274
|
E | E1
|
|
270
275
|
>
|
|
271
276
|
} = internal.route
|
|
@@ -281,7 +286,8 @@ export const all: {
|
|
|
281
286
|
): <R, E>(
|
|
282
287
|
self: Router<R, E>
|
|
283
288
|
) => Router<
|
|
284
|
-
Exclude<R1, RouteContext | ServerRequest.ServerRequest
|
|
289
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
290
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
285
291
|
E1 | E
|
|
286
292
|
>
|
|
287
293
|
<R, E, R1, E1>(
|
|
@@ -289,7 +295,8 @@ export const all: {
|
|
|
289
295
|
path: PathInput,
|
|
290
296
|
handler: Route.Handler<R1, E1>
|
|
291
297
|
): Router<
|
|
292
|
-
Exclude<R, RouteContext | ServerRequest.ServerRequest
|
|
298
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
299
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
293
300
|
E | E1
|
|
294
301
|
>
|
|
295
302
|
} = internal.all
|
|
@@ -305,7 +312,8 @@ export const get: {
|
|
|
305
312
|
): <R, E>(
|
|
306
313
|
self: Router<R, E>
|
|
307
314
|
) => Router<
|
|
308
|
-
Exclude<R1, RouteContext | ServerRequest.ServerRequest
|
|
315
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
316
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
309
317
|
E1 | E
|
|
310
318
|
>
|
|
311
319
|
<R, E, R1, E1>(
|
|
@@ -313,7 +321,8 @@ export const get: {
|
|
|
313
321
|
path: PathInput,
|
|
314
322
|
handler: Route.Handler<R1, E1>
|
|
315
323
|
): Router<
|
|
316
|
-
Exclude<R, RouteContext | ServerRequest.ServerRequest
|
|
324
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
325
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
317
326
|
E | E1
|
|
318
327
|
>
|
|
319
328
|
} = internal.get
|
|
@@ -329,7 +338,8 @@ export const post: {
|
|
|
329
338
|
): <R, E>(
|
|
330
339
|
self: Router<R, E>
|
|
331
340
|
) => Router<
|
|
332
|
-
Exclude<R1, RouteContext | ServerRequest.ServerRequest
|
|
341
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
342
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
333
343
|
E1 | E
|
|
334
344
|
>
|
|
335
345
|
<R, E, R1, E1>(
|
|
@@ -337,7 +347,8 @@ export const post: {
|
|
|
337
347
|
path: PathInput,
|
|
338
348
|
handler: Route.Handler<R1, E1>
|
|
339
349
|
): Router<
|
|
340
|
-
Exclude<R, RouteContext | ServerRequest.ServerRequest
|
|
350
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
351
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
341
352
|
E | E1
|
|
342
353
|
>
|
|
343
354
|
} = internal.post
|
|
@@ -353,7 +364,8 @@ export const patch: {
|
|
|
353
364
|
): <R, E>(
|
|
354
365
|
self: Router<R, E>
|
|
355
366
|
) => Router<
|
|
356
|
-
Exclude<R1, RouteContext | ServerRequest.ServerRequest
|
|
367
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
368
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
357
369
|
E1 | E
|
|
358
370
|
>
|
|
359
371
|
<R, E, R1, E1>(
|
|
@@ -361,7 +373,8 @@ export const patch: {
|
|
|
361
373
|
path: PathInput,
|
|
362
374
|
handler: Route.Handler<R1, E1>
|
|
363
375
|
): Router<
|
|
364
|
-
Exclude<R, RouteContext | ServerRequest.ServerRequest
|
|
376
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
377
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
365
378
|
E | E1
|
|
366
379
|
>
|
|
367
380
|
} = internal.patch
|
|
@@ -377,7 +390,8 @@ export const put: {
|
|
|
377
390
|
): <R, E>(
|
|
378
391
|
self: Router<R, E>
|
|
379
392
|
) => Router<
|
|
380
|
-
Exclude<R1, RouteContext | ServerRequest.ServerRequest
|
|
393
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
394
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
381
395
|
E1 | E
|
|
382
396
|
>
|
|
383
397
|
<R, E, R1, E1>(
|
|
@@ -385,7 +399,8 @@ export const put: {
|
|
|
385
399
|
path: PathInput,
|
|
386
400
|
handler: Route.Handler<R1, E1>
|
|
387
401
|
): Router<
|
|
388
|
-
Exclude<R, RouteContext | ServerRequest.ServerRequest
|
|
402
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
403
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
389
404
|
E | E1
|
|
390
405
|
>
|
|
391
406
|
} = internal.put
|
|
@@ -401,7 +416,8 @@ export const del: {
|
|
|
401
416
|
): <R, E>(
|
|
402
417
|
self: Router<R, E>
|
|
403
418
|
) => Router<
|
|
404
|
-
Exclude<R1, RouteContext | ServerRequest.ServerRequest
|
|
419
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
420
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
405
421
|
E1 | E
|
|
406
422
|
>
|
|
407
423
|
<R, E, R1, E1>(
|
|
@@ -409,7 +425,8 @@ export const del: {
|
|
|
409
425
|
path: PathInput,
|
|
410
426
|
handler: Route.Handler<R1, E1>
|
|
411
427
|
): Router<
|
|
412
|
-
Exclude<R, RouteContext | ServerRequest.ServerRequest
|
|
428
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
429
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
413
430
|
E | E1
|
|
414
431
|
>
|
|
415
432
|
} = internal.del
|
|
@@ -425,7 +442,8 @@ export const head: {
|
|
|
425
442
|
): <R, E>(
|
|
426
443
|
self: Router<R, E>
|
|
427
444
|
) => Router<
|
|
428
|
-
Exclude<R1, RouteContext | ServerRequest.ServerRequest
|
|
445
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
446
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
429
447
|
E1 | E
|
|
430
448
|
>
|
|
431
449
|
<R, E, R1, E1>(
|
|
@@ -433,7 +451,8 @@ export const head: {
|
|
|
433
451
|
path: PathInput,
|
|
434
452
|
handler: Route.Handler<R1, E1>
|
|
435
453
|
): Router<
|
|
436
|
-
Exclude<R, RouteContext | ServerRequest.ServerRequest
|
|
454
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
455
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
437
456
|
E | E1
|
|
438
457
|
>
|
|
439
458
|
} = internal.head
|
|
@@ -449,7 +468,8 @@ export const options: {
|
|
|
449
468
|
): <R, E>(
|
|
450
469
|
self: Router<R, E>
|
|
451
470
|
) => Router<
|
|
452
|
-
Exclude<R1, RouteContext | ServerRequest.ServerRequest
|
|
471
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
472
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
453
473
|
E1 | E
|
|
454
474
|
>
|
|
455
475
|
<R, E, R1, E1>(
|
|
@@ -457,7 +477,8 @@ export const options: {
|
|
|
457
477
|
path: PathInput,
|
|
458
478
|
handler: Route.Handler<R1, E1>
|
|
459
479
|
): Router<
|
|
460
|
-
Exclude<R, RouteContext | ServerRequest.ServerRequest
|
|
480
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
481
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
461
482
|
E | E1
|
|
462
483
|
>
|
|
463
484
|
} = internal.options
|
|
@@ -469,11 +490,11 @@ export const options: {
|
|
|
469
490
|
export const use: {
|
|
470
491
|
<R, E, R1, E1>(
|
|
471
492
|
f: (self: Route.Handler<R, E>) => App.Default<R1, E1>
|
|
472
|
-
): (self: Router<R, E>) => Router<Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E1>
|
|
493
|
+
): (self: Router<R, E>) => Router<Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1>
|
|
473
494
|
<R, E, R1, E1>(
|
|
474
495
|
self: Router<R, E>,
|
|
475
496
|
f: (self: Route.Handler<R, E>) => App.Default<R1, E1>
|
|
476
|
-
): Router<Exclude<R1, RouteContext | ServerRequest.ServerRequest>, E1>
|
|
497
|
+
): Router<Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1>
|
|
477
498
|
} = internal.use
|
|
478
499
|
|
|
479
500
|
/**
|
|
@@ -486,14 +507,16 @@ export const catchAll: {
|
|
|
486
507
|
): <R>(
|
|
487
508
|
self: Router<R, E>
|
|
488
509
|
) => Router<
|
|
489
|
-
Exclude<R2, RouteContext | ServerRequest.ServerRequest
|
|
510
|
+
| Exclude<R2, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
511
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
490
512
|
E2
|
|
491
513
|
>
|
|
492
514
|
<R, E, R2, E2>(
|
|
493
515
|
self: Router<R, E>,
|
|
494
516
|
f: (e: E) => Route.Handler<R2, E2>
|
|
495
517
|
): Router<
|
|
496
|
-
Exclude<R, RouteContext | ServerRequest.ServerRequest
|
|
518
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
519
|
+
| Exclude<R2, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
497
520
|
E2
|
|
498
521
|
>
|
|
499
522
|
} = internal.catchAll
|
|
@@ -508,14 +531,16 @@ export const catchAllCause: {
|
|
|
508
531
|
): <R>(
|
|
509
532
|
self: Router<R, E>
|
|
510
533
|
) => Router<
|
|
511
|
-
Exclude<R2, RouteContext | ServerRequest.ServerRequest
|
|
534
|
+
| Exclude<R2, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
535
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
512
536
|
E2
|
|
513
537
|
>
|
|
514
538
|
<R, E, R2, E2>(
|
|
515
539
|
self: Router<R, E>,
|
|
516
540
|
f: (e: Cause.Cause<E>) => Route.Handler<R2, E2>
|
|
517
541
|
): Router<
|
|
518
|
-
Exclude<R, RouteContext | ServerRequest.ServerRequest
|
|
542
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
543
|
+
| Exclude<R2, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
519
544
|
E2
|
|
520
545
|
>
|
|
521
546
|
} = internal.catchAllCause
|
|
@@ -531,7 +556,8 @@ export const catchTag: {
|
|
|
531
556
|
): <R>(
|
|
532
557
|
self: Router<R, E>
|
|
533
558
|
) => Router<
|
|
534
|
-
Exclude<R1, RouteContext | ServerRequest.ServerRequest
|
|
559
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
560
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
535
561
|
E1 | Exclude<E, { _tag: K }>
|
|
536
562
|
>
|
|
537
563
|
<R, E, K extends E extends { _tag: string } ? E["_tag"] : never, R1, E1>(
|
|
@@ -539,7 +565,8 @@ export const catchTag: {
|
|
|
539
565
|
k: K,
|
|
540
566
|
f: (e: Extract<E, { _tag: K }>) => Route.Handler<R1, E1>
|
|
541
567
|
): Router<
|
|
542
|
-
Exclude<R, RouteContext | ServerRequest.ServerRequest
|
|
568
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
569
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
543
570
|
E1 | Exclude<E, { _tag: K }>
|
|
544
571
|
>
|
|
545
572
|
} = internal.catchTag
|
|
@@ -552,21 +579,27 @@ export const catchTags: {
|
|
|
552
579
|
<
|
|
553
580
|
E,
|
|
554
581
|
Cases extends E extends { _tag: string }
|
|
555
|
-
? { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Route.Handler<any, any>) }
|
|
582
|
+
? { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Route.Handler<any, any>) | undefined }
|
|
556
583
|
: {}
|
|
557
584
|
>(
|
|
558
585
|
cases: Cases
|
|
559
586
|
): <R>(
|
|
560
587
|
self: Router<R, E>
|
|
561
588
|
) => Router<
|
|
562
|
-
| Exclude<R, RouteContext | ServerRequest.ServerRequest>
|
|
589
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
563
590
|
| Exclude<
|
|
564
591
|
{
|
|
565
592
|
[K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<infer R, any, any> ? R : never
|
|
566
593
|
}[keyof Cases],
|
|
567
|
-
RouteContext | ServerRequest.ServerRequest
|
|
594
|
+
RouteContext | ServerRequest.ServerRequest | Scope.Scope
|
|
568
595
|
>,
|
|
569
|
-
| Exclude<E, {
|
|
596
|
+
| Exclude<E, {
|
|
597
|
+
/**
|
|
598
|
+
* @since 1.0.0
|
|
599
|
+
* @category combinators
|
|
600
|
+
*/
|
|
601
|
+
_tag: keyof Cases
|
|
602
|
+
}>
|
|
570
603
|
| {
|
|
571
604
|
[K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, infer E, any> ? E : never
|
|
572
605
|
}[keyof Cases]
|
|
@@ -575,18 +608,18 @@ export const catchTags: {
|
|
|
575
608
|
R,
|
|
576
609
|
E,
|
|
577
610
|
Cases extends E extends { _tag: string }
|
|
578
|
-
? { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Route.Handler<any, any>) } :
|
|
611
|
+
? { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Route.Handler<any, any>) | undefined } :
|
|
579
612
|
{}
|
|
580
613
|
>(
|
|
581
614
|
self: Router<R, E>,
|
|
582
615
|
cases: Cases
|
|
583
616
|
): Router<
|
|
584
|
-
| Exclude<R, RouteContext | ServerRequest.ServerRequest>
|
|
617
|
+
| Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
585
618
|
| Exclude<
|
|
586
619
|
{
|
|
587
620
|
[K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<infer R, any, any> ? R : never
|
|
588
621
|
}[keyof Cases],
|
|
589
|
-
RouteContext | ServerRequest.ServerRequest
|
|
622
|
+
RouteContext | ServerRequest.ServerRequest | Scope.Scope
|
|
590
623
|
>,
|
|
591
624
|
| Exclude<E, { _tag: keyof Cases }>
|
|
592
625
|
| {
|
|
@@ -605,12 +638,15 @@ export const provideService: {
|
|
|
605
638
|
service: Context.Tag.Service<T>
|
|
606
639
|
): <R, E>(
|
|
607
640
|
self: Router<R, E>
|
|
608
|
-
) => Router<
|
|
641
|
+
) => Router<
|
|
642
|
+
Exclude<Exclude<R, Context.Tag.Identifier<T>>, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
643
|
+
E
|
|
644
|
+
>
|
|
609
645
|
<R, E, T extends Context.Tag<any, any>>(
|
|
610
646
|
self: Router<R, E>,
|
|
611
647
|
tag: T,
|
|
612
648
|
service: Context.Tag.Service<T>
|
|
613
|
-
): Router<Exclude<Exclude<R, Context.Tag.Identifier<T>>, RouteContext | ServerRequest.ServerRequest>, E>
|
|
649
|
+
): Router<Exclude<Exclude<R, Context.Tag.Identifier<T>>, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E>
|
|
614
650
|
} = internal.provideService
|
|
615
651
|
|
|
616
652
|
/**
|
|
@@ -624,8 +660,8 @@ export const provideServiceEffect: {
|
|
|
624
660
|
): <R, E>(
|
|
625
661
|
self: Router<R, E>
|
|
626
662
|
) => Router<
|
|
627
|
-
| Exclude<R1, RouteContext | ServerRequest.ServerRequest>
|
|
628
|
-
| Exclude<Exclude<R, Context.Tag.Identifier<T>>, RouteContext | ServerRequest.ServerRequest>,
|
|
663
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
664
|
+
| Exclude<Exclude<R, Context.Tag.Identifier<T>>, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
629
665
|
E1 | E
|
|
630
666
|
>
|
|
631
667
|
<R, E, T extends Context.Tag<any, any>, R1, E1>(
|
|
@@ -633,8 +669,8 @@ export const provideServiceEffect: {
|
|
|
633
669
|
tag: T,
|
|
634
670
|
effect: Effect.Effect<R1, E1, Context.Tag.Service<T>>
|
|
635
671
|
): Router<
|
|
636
|
-
| Exclude<R1, RouteContext | ServerRequest.ServerRequest>
|
|
637
|
-
| Exclude<Exclude<R, Context.Tag.Identifier<T>>, RouteContext | ServerRequest.ServerRequest>,
|
|
672
|
+
| Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>
|
|
673
|
+
| Exclude<Exclude<R, Context.Tag.Identifier<T>>, RouteContext | ServerRequest.ServerRequest | Scope.Scope>,
|
|
638
674
|
E | E1
|
|
639
675
|
>
|
|
640
676
|
} = internal.provideServiceEffect
|
package/src/Http/Server.ts
CHANGED
|
@@ -104,17 +104,25 @@ export const make: (
|
|
|
104
104
|
* @category accessors
|
|
105
105
|
*/
|
|
106
106
|
export const serve: {
|
|
107
|
-
(): <R, E>(
|
|
107
|
+
(): <R, E>(
|
|
108
|
+
httpApp: App.Default<R, E>
|
|
109
|
+
) => Layer.Layer<Server | Exclude<R, ServerRequest.ServerRequest | Scope.Scope>, never, never>
|
|
108
110
|
<R, E, App extends App.Default<any, any>>(
|
|
109
111
|
middleware: Middleware.Middleware.Applied<R, E, App>
|
|
110
112
|
): (
|
|
111
113
|
httpApp: App.Default<R, E>
|
|
112
|
-
) => Layer.Layer<
|
|
113
|
-
|
|
114
|
+
) => Layer.Layer<
|
|
115
|
+
Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest | Scope.Scope>,
|
|
116
|
+
never,
|
|
117
|
+
never
|
|
118
|
+
>
|
|
119
|
+
<R, E>(
|
|
120
|
+
httpApp: App.Default<R, E>
|
|
121
|
+
): Layer.Layer<Server | Exclude<R, ServerRequest.ServerRequest | Scope.Scope>, never, never>
|
|
114
122
|
<R, E, App extends App.Default<any, any>>(
|
|
115
123
|
httpApp: App.Default<R, E>,
|
|
116
124
|
middleware: Middleware.Middleware.Applied<R, E, App>
|
|
117
|
-
): Layer.Layer<Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest>, never, never>
|
|
125
|
+
): Layer.Layer<Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest | Scope.Scope>, never, never>
|
|
118
126
|
} = internal.serve
|
|
119
127
|
|
|
120
128
|
/**
|
package/src/Http/ServerError.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
+
import type * as Cause from "effect/Cause"
|
|
4
5
|
import type * as Data from "effect/Data"
|
|
6
|
+
import type * as FiberId from "effect/FiberId"
|
|
5
7
|
import * as internal from "../internal/http/serverError.js"
|
|
6
8
|
import type * as ServerRequest from "./ServerRequest.js"
|
|
7
9
|
import type * as ServerResponse from "./ServerResponse.js"
|
|
@@ -54,6 +56,12 @@ export interface RequestError extends HttpError.Proto {
|
|
|
54
56
|
readonly error: unknown
|
|
55
57
|
}
|
|
56
58
|
|
|
59
|
+
/**
|
|
60
|
+
* @since 1.0.0
|
|
61
|
+
* @category predicates
|
|
62
|
+
*/
|
|
63
|
+
export const isServerError: (u: unknown) => u is HttpServerError = internal.isServerError
|
|
64
|
+
|
|
57
65
|
/**
|
|
58
66
|
* @since 1.0.0
|
|
59
67
|
* @category error
|
|
@@ -109,3 +117,13 @@ export interface ServeError extends HttpError.Proto {
|
|
|
109
117
|
* @category error
|
|
110
118
|
*/
|
|
111
119
|
export const ServeError: (props: Omit<ServeError, HttpError.ProvidedFields>) => ServeError = internal.serveError
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* @since 1.0.0
|
|
123
|
+
*/
|
|
124
|
+
export const clientAbortFiberId: FiberId.FiberId = internal.clientAbortFiberId
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* @since 1.0.0
|
|
128
|
+
*/
|
|
129
|
+
export const isClientAbortCause: <E>(cause: Cause.Cause<E>) => boolean = internal.isClientAbortCause
|
|
@@ -42,6 +42,7 @@ export type TypeId = typeof TypeId
|
|
|
42
42
|
*/
|
|
43
43
|
export interface ServerRequest extends IncomingMessage.IncomingMessage<Error.RequestError> {
|
|
44
44
|
readonly [TypeId]: TypeId
|
|
45
|
+
readonly source: unknown
|
|
45
46
|
readonly url: string
|
|
46
47
|
readonly originalUrl: string
|
|
47
48
|
readonly method: Method
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import * as Cause from "effect/Cause"
|
|
2
2
|
import * as Effect from "effect/Effect"
|
|
3
3
|
import * as FiberRef from "effect/FiberRef"
|
|
4
|
-
import
|
|
4
|
+
import { constFalse, dual } from "effect/Function"
|
|
5
5
|
import { globalValue } from "effect/GlobalValue"
|
|
6
6
|
import type * as Predicate from "effect/Predicate"
|
|
7
7
|
import * as Headers from "../../Http/Headers.js"
|
|
8
8
|
import * as IncomingMessage from "../../Http/IncomingMessage.js"
|
|
9
9
|
import type * as Middleware from "../../Http/Middleware.js"
|
|
10
|
+
import * as ServerError from "../../Http/ServerError.js"
|
|
10
11
|
import * as ServerRequest from "../../Http/ServerRequest.js"
|
|
11
12
|
|
|
12
13
|
/** @internal */
|
|
@@ -28,11 +29,11 @@ export const withLoggerDisabled = <R, E, A>(self: Effect.Effect<R, E, A>): Effec
|
|
|
28
29
|
/** @internal */
|
|
29
30
|
export const currentTracerDisabledWhen = globalValue(
|
|
30
31
|
Symbol.for("@effect/platform/Http/Middleware/tracerDisabledWhen"),
|
|
31
|
-
() => FiberRef.unsafeMake<Predicate.Predicate<ServerRequest.ServerRequest>>(
|
|
32
|
+
() => FiberRef.unsafeMake<Predicate.Predicate<ServerRequest.ServerRequest>>(constFalse)
|
|
32
33
|
)
|
|
33
34
|
|
|
34
35
|
/** @internal */
|
|
35
|
-
export const withTracerDisabledWhen =
|
|
36
|
+
export const withTracerDisabledWhen = dual<
|
|
36
37
|
(
|
|
37
38
|
predicate: Predicate.Predicate<ServerRequest.ServerRequest>
|
|
38
39
|
) => <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>,
|
|
@@ -60,7 +61,11 @@ export const logger = make((httpApp) => {
|
|
|
60
61
|
Effect.annotateLogs(Effect.log(exit.cause), {
|
|
61
62
|
"http.method": request.method,
|
|
62
63
|
"http.url": request.url,
|
|
63
|
-
"http.status": Cause.isInterruptedOnly(exit.cause)
|
|
64
|
+
"http.status": Cause.isInterruptedOnly(exit.cause)
|
|
65
|
+
? ServerError.isClientAbortCause(exit.cause)
|
|
66
|
+
? 499
|
|
67
|
+
: 503
|
|
68
|
+
: 500
|
|
64
69
|
}) :
|
|
65
70
|
Effect.annotateLogs(Effect.log(""), {
|
|
66
71
|
"http.method": request.method,
|
|
@@ -185,7 +185,7 @@ export const makeRoute = <R, E>(
|
|
|
185
185
|
path: Router.PathInput,
|
|
186
186
|
handler: Router.Route.Handler<R, E>,
|
|
187
187
|
prefix: Option.Option<string> = Option.none()
|
|
188
|
-
): Router.Route<R
|
|
188
|
+
): Router.Route<Router.Router.ExcludeProvided<R>, E> => new RouteImpl(method, path, handler, prefix) as any
|
|
189
189
|
|
|
190
190
|
/** @internal */
|
|
191
191
|
export const concat = dual<
|
|
@@ -38,14 +38,14 @@ export const serve = dual<
|
|
|
38
38
|
(): <R, E>(
|
|
39
39
|
httpApp: App.Default<R, E>
|
|
40
40
|
) => Layer.Layer<
|
|
41
|
-
Server.Server | Exclude<R, ServerRequest.ServerRequest>,
|
|
41
|
+
Server.Server | Exclude<R, ServerRequest.ServerRequest | Scope.Scope>,
|
|
42
42
|
never,
|
|
43
43
|
never
|
|
44
44
|
>
|
|
45
45
|
<R, E, App extends App.Default<any, any>>(middleware: Middleware.Middleware.Applied<R, E, App>): (
|
|
46
46
|
httpApp: App.Default<R, E>
|
|
47
47
|
) => Layer.Layer<
|
|
48
|
-
Server.Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest>,
|
|
48
|
+
Server.Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest | Scope.Scope>,
|
|
49
49
|
never,
|
|
50
50
|
never
|
|
51
51
|
>
|
|
@@ -53,12 +53,12 @@ export const serve = dual<
|
|
|
53
53
|
{
|
|
54
54
|
<R, E>(
|
|
55
55
|
httpApp: App.Default<R, E>
|
|
56
|
-
): Layer.Layer<Server.Server | Exclude<R, ServerRequest.ServerRequest>, never, never>
|
|
56
|
+
): Layer.Layer<Server.Server | Exclude<R, ServerRequest.ServerRequest | Scope.Scope>, never, never>
|
|
57
57
|
<R, E, App extends App.Default<any, any>>(
|
|
58
58
|
httpApp: App.Default<R, E>,
|
|
59
59
|
middleware: Middleware.Middleware.Applied<R, E, App>
|
|
60
60
|
): Layer.Layer<
|
|
61
|
-
Server.Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest>,
|
|
61
|
+
Server.Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest | Scope.Scope>,
|
|
62
62
|
never,
|
|
63
63
|
never
|
|
64
64
|
>
|
|
@@ -69,7 +69,7 @@ export const serve = dual<
|
|
|
69
69
|
httpApp: App.Default<R, E>,
|
|
70
70
|
middleware?: Middleware.Middleware.Applied<R, E, App>
|
|
71
71
|
): Layer.Layer<
|
|
72
|
-
Server.Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest>,
|
|
72
|
+
Server.Server | Exclude<Effect.Effect.Context<App>, ServerRequest.ServerRequest | Scope.Scope>,
|
|
73
73
|
never,
|
|
74
74
|
never
|
|
75
75
|
> =>
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
+
import * as Cause from "effect/Cause"
|
|
1
2
|
import * as Data from "effect/Data"
|
|
3
|
+
import * as FiberId from "effect/FiberId"
|
|
4
|
+
import { globalValue } from "effect/GlobalValue"
|
|
5
|
+
import * as Option from "effect/Option"
|
|
6
|
+
import * as Predicate from "effect/Predicate"
|
|
2
7
|
import type * as Error from "../../Http/ServerError.js"
|
|
3
8
|
|
|
4
9
|
/** @internal */
|
|
@@ -13,6 +18,9 @@ const make = <A extends Error.HttpServerError>(tag: A["_tag"]) => (props: Omit<A
|
|
|
13
18
|
...props
|
|
14
19
|
} as A)
|
|
15
20
|
|
|
21
|
+
/** @internal */
|
|
22
|
+
export const isServerError = (u: unknown): u is Error.HttpServerError => Predicate.hasProperty(u, TypeId)
|
|
23
|
+
|
|
16
24
|
/** @internal */
|
|
17
25
|
export const requestError = make<Error.RequestError>("RequestError")
|
|
18
26
|
|
|
@@ -24,3 +32,17 @@ export const routeNotFound = make<Error.RouteNotFound>("RouteNotFound")
|
|
|
24
32
|
|
|
25
33
|
/** @internal */
|
|
26
34
|
export const serveError = make<Error.ServeError>("ServeError")
|
|
35
|
+
|
|
36
|
+
/** @internal */
|
|
37
|
+
export const clientAbortFiberId = globalValue(
|
|
38
|
+
"@effect/platform/Http/ServerError/clientAbortFiberId",
|
|
39
|
+
() => FiberId.runtime(-499, 0)
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
/** @internal */
|
|
43
|
+
export const isClientAbortCause = <E>(cause: Cause.Cause<E>): boolean =>
|
|
44
|
+
Cause.reduce(
|
|
45
|
+
cause,
|
|
46
|
+
false,
|
|
47
|
+
(_, cause) => cause._tag === "Interrupt" && cause.fiberId === clientAbortFiberId ? Option.some(true) : Option.none()
|
|
48
|
+
)
|