@effect/platform 0.61.1 → 0.61.3

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 CHANGED
@@ -295,7 +295,7 @@ Here's a list of operations that can be performed using the `FileSystem` tag:
295
295
  | **makeTempFile** | `options?: MakeTempFileOptions` | `Effect<string, PlatformError>` | Create a temporary file. The directory creation is functionally equivalent to `makeTempDirectory`. The file name will be a randomly generated string. |
296
296
  | **makeTempFileScoped** | `options?: MakeTempFileOptions` | `Effect<string, PlatformError, Scope>` | Create a temporary file inside a scope. Functionally equivalent to `makeTempFile`, but the file will be automatically deleted when the scope is closed. |
297
297
  | **open** | `path: string`, `options?: OpenFileOptions` | `Effect<File, PlatformError, Scope>` | Open a file at `path` with the specified `options`. The file handle will be automatically closed when the scope is closed. |
298
- | **readDirectory** | `path: string`, `options?: ReadDirectoryOptions` | `Effect<Array<string>, PlatformError>` | List the contents of a directory. You can recursively list the contents of nested directories by setting the `recursive` option. |
298
+ | **readDirectory** | `path: string`, `options?: ReadDirectoryOptions` | `Effect<Array<string>, PlatformError>` | List the contents of a directory. You can recursively list the contents of nested directories by setting the `recursive` option. |
299
299
  | **readFile** | `path: string` | `Effect<Uint8Array, PlatformError>` | Read the contents of a file. |
300
300
  | **readFileString** | `path: string`, `encoding?: string` | `Effect<string, PlatformError>` | Read the contents of a file as a string. |
301
301
  | **readLink** | `path: string` | `Effect<string, PlatformError>` | Read the destination of a symbolic link. |
@@ -420,9 +420,269 @@ In this example:
420
420
 
421
421
  # HTTP Client
422
422
 
423
- ## Retrieving Data (GET)
423
+ ## Overview
424
+
425
+ An `HttpClient` is a function that takes a request and produces a certain value `A` in an effectful way (possibly resulting in an error `E` and depending on some requirement `R`).
426
+
427
+ ```ts
428
+ type HttpClient<A, E, R> = (request: HttpClientRequest): Effect<A, E, R>
429
+ ```
430
+
431
+ Generally, you'll deal with a specialization called `Default` where `A`, `E`, and `R` are predefined:
432
+
433
+ ```ts
434
+ type Default = (request: HttpClientRequest): Effect<HttpClientResponse, RequestError | ResponseError, Scope>
435
+ ```
436
+
437
+ The goal of `Default` is straightforward: transform a `HttpClientRequest` into a `HttpClientResponse`.
438
+
439
+ ### A First Example: Retrieving JSON Data (GET)
440
+
441
+ Here's a simple example demonstrating how to retrieve JSON data using `HttpClient` from `@effect/platform`.
442
+
443
+ ```ts
444
+ import {
445
+ HttpClient,
446
+ HttpClientRequest,
447
+ HttpClientResponse
448
+ } from "@effect/platform"
449
+ import { Effect } from "effect"
450
+
451
+ const req = HttpClientRequest.get(
452
+ "https://jsonplaceholder.typicode.com/posts/1"
453
+ )
454
+
455
+ // HttpClient.fetch is a Default
456
+ const res = HttpClient.fetch(req)
457
+
458
+ const json = HttpClientResponse.json(res)
459
+
460
+ Effect.runPromise(json).then(console.log)
461
+ /*
462
+ Output:
463
+ {
464
+ userId: 1,
465
+ id: 1,
466
+ title: 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit',
467
+ body: 'quia et suscipit\n' +
468
+ 'suscipit recusandae consequuntur expedita et cum\n' +
469
+ 'reprehenderit molestiae ut ut quas totam\n' +
470
+ 'nostrum rerum est autem sunt rem eveniet architecto'
471
+ }
472
+ */
473
+ ```
474
+
475
+ In this example:
476
+
477
+ - `HttpClientRequest.get` creates a GET request to the specified URL.
478
+ - `HttpClient.fetch` executes the request.
479
+ - `HttpClientResponse.json` converts the response to JSON.
480
+ - `Effect.runPromise` runs the effect and logs the result.
481
+
482
+ ### Built-in Defaults
483
+
484
+ | Default | Description |
485
+ | -------------------- | ------------------------------------------------------------------------- |
486
+ | `HttpClient.fetch` | Execute the request using the global `fetch` function |
487
+ | `HttpClient.fetchOk` | Same as `fetch` but ensures only `2xx` responses are treated as successes |
488
+
489
+ ### Custom Default
490
+
491
+ You can create your own `Default` using the `HttpClient.makeDefault` constructor.
492
+
493
+ ```ts
494
+ import { HttpClient, HttpClientResponse } from "@effect/platform"
495
+ import { Effect } from "effect"
496
+
497
+ const myClient = HttpClient.makeDefault((req) =>
498
+ Effect.succeed(
499
+ HttpClientResponse.fromWeb(
500
+ req,
501
+ // Simulate a response from a server
502
+ new Response(
503
+ JSON.stringify({ userId: 1, id: 1, title: "title...", body: "body..." })
504
+ )
505
+ )
506
+ )
507
+ )
508
+ ```
509
+
510
+ ## Tapping
511
+
512
+ ```ts
513
+ import {
514
+ HttpClient,
515
+ HttpClientRequest,
516
+ HttpClientResponse
517
+ } from "@effect/platform"
518
+ import { Console, Effect } from "effect"
519
+
520
+ const req = HttpClientRequest.get(
521
+ "https://jsonplaceholder.typicode.com/posts/1"
522
+ )
523
+
524
+ // Log the request before fetching
525
+ const tapFetch: HttpClient.HttpClient.Default = HttpClient.fetch.pipe(
526
+ HttpClient.tapRequest(Console.log)
527
+ )
528
+
529
+ const res = tapFetch(req)
530
+
531
+ const json = HttpClientResponse.json(res)
532
+
533
+ Effect.runPromise(json).then(console.log)
534
+ /*
535
+ Output:
536
+ {
537
+ _id: '@effect/platform/HttpClientRequest',
538
+ method: 'GET',
539
+ url: 'https://jsonplaceholder.typicode.com/posts/1',
540
+ urlParams: [],
541
+ hash: { _id: 'Option', _tag: 'None' },
542
+ headers: Object <[Object: null prototype]> {},
543
+ body: { _id: '@effect/platform/HttpBody', _tag: 'Empty' }
544
+ }
545
+ {
546
+ userId: 1,
547
+ id: 1,
548
+ title: 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit',
549
+ body: 'quia et suscipit\n' +
550
+ 'suscipit recusandae consequuntur expedita et cum\n' +
551
+ 'reprehenderit molestiae ut ut quas totam\n' +
552
+ 'nostrum rerum est autem sunt rem eveniet architecto'
553
+ }
554
+ */
555
+ ```
556
+
557
+ ## HttpClientRequest
558
+
559
+ ### Overview
560
+
561
+ You can create a `HttpClientRequest` using the following provided constructors:
562
+
563
+ | Constructor | Description |
564
+ | --------------------------- | ------------------------- |
565
+ | `HttpClientRequest.get` | Create a GET request |
566
+ | `HttpClientRequest.post` | Create a POST request |
567
+ | `HttpClientRequest.patch` | Create a PATCH request |
568
+ | `HttpClientRequest.put` | Create a PUT request |
569
+ | `HttpClientRequest.del` | Create a DELETE request |
570
+ | `HttpClientRequest.head` | Create a HEAD request |
571
+ | `HttpClientRequest.options` | Create an OPTIONS request |
424
572
 
425
- In this section, we'll explore how to retrieve data using the `HttpClient` module from `@effect/platform`.
573
+ ### Setting Headers
574
+
575
+ When making HTTP requests, sometimes you need to include additional information in the request headers. You can set headers using the `setHeader` function for a single header or `setHeaders` for multiple headers simultaneously.
576
+
577
+ ```ts
578
+ import { HttpClientRequest } from "@effect/platform"
579
+
580
+ const req = HttpClientRequest.get("https://api.example.com/data").pipe(
581
+ // Setting a single header
582
+ HttpClientRequest.setHeader("Authorization", "Bearer your_token_here"),
583
+ // Setting multiple headers
584
+ HttpClientRequest.setHeaders({
585
+ "Content-Type": "application/json; charset=UTF-8",
586
+ "Custom-Header": "CustomValue"
587
+ })
588
+ )
589
+
590
+ console.log(JSON.stringify(req.headers, null, 2))
591
+ /*
592
+ Output:
593
+ {
594
+ "authorization": "Bearer your_token_here",
595
+ "content-type": "application/json; charset=UTF-8",
596
+ "custom-header": "CustomValue"
597
+ }
598
+ */
599
+ ```
600
+
601
+ ### basicAuth
602
+
603
+ To include basic authentication in your HTTP request, you can use the `basicAuth` method provided by `HttpClientRequest`.
604
+
605
+ ```ts
606
+ import { HttpClientRequest } from "@effect/platform"
607
+
608
+ const req = HttpClientRequest.get("https://api.example.com/data").pipe(
609
+ HttpClientRequest.basicAuth("your_username", "your_password")
610
+ )
611
+
612
+ console.log(JSON.stringify(req.headers, null, 2))
613
+ /*
614
+ Output:
615
+ {
616
+ "authorization": "Basic eW91cl91c2VybmFtZTp5b3VyX3Bhc3N3b3Jk"
617
+ }
618
+ */
619
+ ```
620
+
621
+ ### bearerToken
622
+
623
+ To include a Bearer token in your HTTP request, use the `bearerToken` method provided by `HttpClientRequest`.
624
+
625
+ ```ts
626
+ import { HttpClientRequest } from "@effect/platform"
627
+
628
+ const req = HttpClientRequest.get("https://api.example.com/data").pipe(
629
+ HttpClientRequest.bearerToken("your_token")
630
+ )
631
+
632
+ console.log(JSON.stringify(req.headers, null, 2))
633
+ /*
634
+ Output:
635
+ {
636
+ "authorization": "Bearer your_token"
637
+ }
638
+ */
639
+ ```
640
+
641
+ ### accept
642
+
643
+ To specify the media types that are acceptable for the response, use the `accept` method provided by `HttpClientRequest`.
644
+
645
+ ```ts
646
+ import { HttpClientRequest } from "@effect/platform"
647
+
648
+ const req = HttpClientRequest.get("https://api.example.com/data").pipe(
649
+ HttpClientRequest.accept("application/xml")
650
+ )
651
+
652
+ console.log(JSON.stringify(req.headers, null, 2))
653
+ /*
654
+ Output:
655
+ {
656
+ "accept": "application/xml"
657
+ }
658
+ */
659
+ ```
660
+
661
+ ### acceptJson
662
+
663
+ To indicate that the client accepts JSON responses, use the `acceptJson` method provided by `HttpClientRequest`.
664
+
665
+ ```ts
666
+ import { HttpClientRequest } from "@effect/platform"
667
+
668
+ const req = HttpClientRequest.get("https://api.example.com/data").pipe(
669
+ HttpClientRequest.acceptJson
670
+ )
671
+
672
+ console.log(JSON.stringify(req.headers, null, 2))
673
+ /*
674
+ Output:
675
+ {
676
+ "accept": "application/json"
677
+ }
678
+ */
679
+ ```
680
+
681
+ ## GET
682
+
683
+ ### Converting to JSON
684
+
685
+ To convert a GET response to JSON:
426
686
 
427
687
  ```ts
428
688
  import {
@@ -454,9 +714,9 @@ object {
454
714
  */
455
715
  ```
456
716
 
457
- If you want a response in a different format other than JSON, you can utilize other APIs provided by `HttpClientResponse`.
717
+ ### Converting to Text
458
718
 
459
- In the following example, we fetch the post as text:
719
+ To convert a GET response to text:
460
720
 
461
721
  ```ts
462
722
  import {
@@ -488,9 +748,11 @@ string {
488
748
  */
489
749
  ```
490
750
 
751
+ ### More on Converting the Response
752
+
491
753
  Here are some APIs you can use to convert the response:
492
754
 
493
- | **API** | **Description** |
755
+ | API | Description |
494
756
  | ---------------------------------- | ------------------------------------- |
495
757
  | `HttpClientResponse.arrayBuffer` | Convert to `ArrayBuffer` |
496
758
  | `HttpClientResponse.formData` | Convert to `FormData` |
@@ -499,30 +761,6 @@ Here are some APIs you can use to convert the response:
499
761
  | `HttpClientResponse.text` | Convert to text |
500
762
  | `HttpClientResponse.urlParamsBody` | Convert to `Http.urlParams.UrlParams` |
501
763
 
502
- ### Setting Headers
503
-
504
- When making HTTP requests, sometimes you need to include additional information in the request headers. You can set headers using the `setHeader` function for a single header or `setHeaders` for multiple headers simultaneously.
505
-
506
- ```ts
507
- import { HttpClient, HttpClientRequest } from "@effect/platform"
508
-
509
- const getPost = HttpClientRequest.get(
510
- "https://jsonplaceholder.typicode.com/posts/1"
511
- ).pipe(
512
- // Setting a single header
513
- HttpClientRequest.setHeader(
514
- "Content-type",
515
- "application/json; charset=UTF-8"
516
- ),
517
- // Setting multiple headers
518
- HttpClientRequest.setHeaders({
519
- "Content-type": "application/json; charset=UTF-8",
520
- Foo: "Bar"
521
- }),
522
- HttpClient.fetch
523
- )
524
- ```
525
-
526
764
  ### Decoding Data with Schemas
527
765
 
528
766
  A common use case when fetching data is to validate the received format. For this purpose, the `HttpClient` module is integrated with `@effect/schema`.
@@ -30,18 +30,39 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
30
30
  */
31
31
  const toHandled = (self, handleResponse, middleware) => {
32
32
  const responded = Effect.withFiberRuntime(fiber => {
33
+ let handled = false;
33
34
  const request = Context.unsafeGet(fiber.getFiberRef(FiberRef.currentContext), ServerRequest.HttpServerRequest);
34
35
  const preprocessResponse = response => {
35
36
  const handler = fiber.getFiberRef(currentPreResponseHandlers);
36
37
  return handler._tag === "Some" ? handler.value(request, response) : Effect.succeed(response);
37
38
  };
38
- return Effect.matchCauseEffect(self, {
39
- onFailure: cause => Effect.flatMap(ServerError.causeResponse(cause), ([response, cause]) => preprocessResponse(response).pipe(Effect.flatMap(response => handleResponse(request, response)), Effect.zipRight(Effect.failCause(cause)))),
40
- onSuccess: response => Effect.tap(preprocessResponse(response), response => handleResponse(request, response))
39
+ const responded = Effect.matchCauseEffect(self, {
40
+ onFailure: cause => Effect.flatMap(ServerError.causeResponse(cause), ([response, cause]) => preprocessResponse(response).pipe(Effect.flatMap(response => {
41
+ handled = true;
42
+ return handleResponse(request, response);
43
+ }), Effect.zipRight(Effect.failCause(cause)))),
44
+ onSuccess: response => Effect.tap(preprocessResponse(response), response => {
45
+ handled = true;
46
+ return handleResponse(request, response);
47
+ })
48
+ });
49
+ const withTracer = internalMiddleware.tracer(responded);
50
+ if (middleware === undefined) {
51
+ return withTracer;
52
+ }
53
+ return Effect.catchAllCause(middleware(withTracer), cause => {
54
+ if (handled) {
55
+ return Effect.void;
56
+ }
57
+ return Effect.matchCauseEffect(ServerError.causeResponse(cause), {
58
+ onFailure: _cause => handleResponse(request, ServerResponse.empty({
59
+ status: 500
60
+ })),
61
+ onSuccess: ([response]) => handleResponse(request, response)
62
+ });
41
63
  });
42
64
  });
43
- const withTracer = internalMiddleware.tracer(responded);
44
- return Effect.uninterruptible(Effect.catchAllCause(Effect.scoped(middleware === undefined ? withTracer : middleware(withTracer)), _ => Effect.void));
65
+ return Effect.uninterruptible(Effect.scoped(responded));
45
66
  };
46
67
  /**
47
68
  * @since 1.0.0
@@ -1 +1 @@
1
- {"version":3,"file":"HttpApp.js","names":["Context","_interopRequireWildcard","require","Effect","Exit","FiberRef","_Function","_GlobalValue","Layer","Option","Runtime","Scope","ServerError","ServerRequest","ServerResponse","internalMiddleware","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","toHandled","self","handleResponse","middleware","responded","withFiberRuntime","fiber","request","unsafeGet","getFiberRef","currentContext","HttpServerRequest","preprocessResponse","response","handler","currentPreResponseHandlers","_tag","value","succeed","matchCauseEffect","onFailure","cause","flatMap","causeResponse","pipe","zipRight","failCause","onSuccess","tap","withTracer","tracer","uninterruptible","catchAllCause","scoped","undefined","_","void","exports","globalValue","Symbol","for","unsafeMake","none","appendPreResponseHandler","update","match","onNone","some","onSome","prev","withPreResponseHandler","dual","locallyWith","toWebHandlerRuntime","runtime","run","runFork","Promise","resolve","provideService","toWeb","withoutBody","method","fromWeb","signal","addEventListener","unsafeInterruptAsFork","clientAbortFiberId","once","toWebHandler","defaultRuntime","toWebHandlerLayer","layer","scope","runSync","make","close","runPromise","build","map","toRuntime","runner","extend","then"],"sources":["../../src/HttpApp.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"HttpApp.js","names":["Context","_interopRequireWildcard","require","Effect","Exit","FiberRef","_Function","_GlobalValue","Layer","Option","Runtime","Scope","ServerError","ServerRequest","ServerResponse","internalMiddleware","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","toHandled","self","handleResponse","middleware","responded","withFiberRuntime","fiber","handled","request","unsafeGet","getFiberRef","currentContext","HttpServerRequest","preprocessResponse","response","handler","currentPreResponseHandlers","_tag","value","succeed","matchCauseEffect","onFailure","cause","flatMap","causeResponse","pipe","zipRight","failCause","onSuccess","tap","withTracer","tracer","undefined","catchAllCause","void","_cause","empty","status","uninterruptible","scoped","exports","globalValue","Symbol","for","unsafeMake","none","appendPreResponseHandler","update","match","onNone","some","onSome","prev","withPreResponseHandler","dual","locallyWith","toWebHandlerRuntime","runtime","run","runFork","Promise","resolve","provideService","toWeb","withoutBody","method","fromWeb","signal","addEventListener","unsafeInterruptAsFork","clientAbortFiberId","once","toWebHandler","defaultRuntime","toWebHandlerLayer","layer","scope","runSync","make","close","runPromise","build","map","toRuntime","_","runner","extend","then"],"sources":["../../src/HttpApp.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -22,7 +22,7 @@ export type Default<E = never, R = never> = HttpApp<ServerResponse.HttpServerRes
22
22
  * @since 1.0.0
23
23
  * @category combinators
24
24
  */
25
- export declare const toHandled: <E, R, _, EH, RH>(self: Default<E, R>, handleResponse: (request: ServerRequest.HttpServerRequest, response: ServerResponse.HttpServerResponse) => Effect.Effect<_, EH, RH>, middleware?: HttpMiddleware | undefined) => Effect.Effect<void, never, Exclude<R | RH, Scope.Scope>>;
25
+ export declare const toHandled: <E, R, _, EH, RH>(self: Default<E, R>, handleResponse: (request: ServerRequest.HttpServerRequest, response: ServerResponse.HttpServerResponse) => Effect.Effect<_, EH, RH>, middleware?: HttpMiddleware | undefined) => Effect.Effect<void, never, Exclude<R | RH | ServerRequest.HttpServerRequest, Scope.Scope>>;
26
26
  /**
27
27
  * @since 1.0.0
28
28
  * @category models
@@ -1 +1 @@
1
- {"version":3,"file":"HttpApp.d.ts","sourceRoot":"","sources":["../../src/HttpApp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HttpApp.d.ts","sourceRoot":"","sources":["../../src/HttpApp.ts"],"names":[],"mappings":"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"}
@@ -21,18 +21,39 @@ import * as internalMiddleware from "./internal/httpMiddleware.js";
21
21
  */
22
22
  export const toHandled = (self, handleResponse, middleware) => {
23
23
  const responded = Effect.withFiberRuntime(fiber => {
24
+ let handled = false;
24
25
  const request = Context.unsafeGet(fiber.getFiberRef(FiberRef.currentContext), ServerRequest.HttpServerRequest);
25
26
  const preprocessResponse = response => {
26
27
  const handler = fiber.getFiberRef(currentPreResponseHandlers);
27
28
  return handler._tag === "Some" ? handler.value(request, response) : Effect.succeed(response);
28
29
  };
29
- return Effect.matchCauseEffect(self, {
30
- onFailure: cause => Effect.flatMap(ServerError.causeResponse(cause), ([response, cause]) => preprocessResponse(response).pipe(Effect.flatMap(response => handleResponse(request, response)), Effect.zipRight(Effect.failCause(cause)))),
31
- onSuccess: response => Effect.tap(preprocessResponse(response), response => handleResponse(request, response))
30
+ const responded = Effect.matchCauseEffect(self, {
31
+ onFailure: cause => Effect.flatMap(ServerError.causeResponse(cause), ([response, cause]) => preprocessResponse(response).pipe(Effect.flatMap(response => {
32
+ handled = true;
33
+ return handleResponse(request, response);
34
+ }), Effect.zipRight(Effect.failCause(cause)))),
35
+ onSuccess: response => Effect.tap(preprocessResponse(response), response => {
36
+ handled = true;
37
+ return handleResponse(request, response);
38
+ })
39
+ });
40
+ const withTracer = internalMiddleware.tracer(responded);
41
+ if (middleware === undefined) {
42
+ return withTracer;
43
+ }
44
+ return Effect.catchAllCause(middleware(withTracer), cause => {
45
+ if (handled) {
46
+ return Effect.void;
47
+ }
48
+ return Effect.matchCauseEffect(ServerError.causeResponse(cause), {
49
+ onFailure: _cause => handleResponse(request, ServerResponse.empty({
50
+ status: 500
51
+ })),
52
+ onSuccess: ([response]) => handleResponse(request, response)
53
+ });
32
54
  });
33
55
  });
34
- const withTracer = internalMiddleware.tracer(responded);
35
- return Effect.uninterruptible(Effect.catchAllCause(Effect.scoped(middleware === undefined ? withTracer : middleware(withTracer)), _ => Effect.void));
56
+ return Effect.uninterruptible(Effect.scoped(responded));
36
57
  };
37
58
  /**
38
59
  * @since 1.0.0
@@ -1 +1 @@
1
- {"version":3,"file":"HttpApp.js","names":["Context","Effect","Exit","FiberRef","dual","globalValue","Layer","Option","Runtime","Scope","ServerError","ServerRequest","ServerResponse","internalMiddleware","toHandled","self","handleResponse","middleware","responded","withFiberRuntime","fiber","request","unsafeGet","getFiberRef","currentContext","HttpServerRequest","preprocessResponse","response","handler","currentPreResponseHandlers","_tag","value","succeed","matchCauseEffect","onFailure","cause","flatMap","causeResponse","pipe","zipRight","failCause","onSuccess","tap","withTracer","tracer","uninterruptible","catchAllCause","scoped","undefined","_","void","Symbol","for","unsafeMake","none","appendPreResponseHandler","update","match","onNone","some","onSome","prev","withPreResponseHandler","locallyWith","toWebHandlerRuntime","runtime","run","runFork","Promise","resolve","provideService","toWeb","withoutBody","method","fromWeb","signal","addEventListener","unsafeInterruptAsFork","clientAbortFiberId","once","toWebHandler","defaultRuntime","toWebHandlerLayer","layer","scope","runSync","make","close","runPromise","build","map","toRuntime","runner","extend","then"],"sources":["../../src/HttpApp.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"HttpApp.js","names":["Context","Effect","Exit","FiberRef","dual","globalValue","Layer","Option","Runtime","Scope","ServerError","ServerRequest","ServerResponse","internalMiddleware","toHandled","self","handleResponse","middleware","responded","withFiberRuntime","fiber","handled","request","unsafeGet","getFiberRef","currentContext","HttpServerRequest","preprocessResponse","response","handler","currentPreResponseHandlers","_tag","value","succeed","matchCauseEffect","onFailure","cause","flatMap","causeResponse","pipe","zipRight","failCause","onSuccess","tap","withTracer","tracer","undefined","catchAllCause","void","_cause","empty","status","uninterruptible","scoped","Symbol","for","unsafeMake","none","appendPreResponseHandler","update","match","onNone","some","onSome","prev","withPreResponseHandler","locallyWith","toWebHandlerRuntime","runtime","run","runFork","Promise","resolve","provideService","toWeb","withoutBody","method","fromWeb","signal","addEventListener","unsafeInterruptAsFork","clientAbortFiberId","once","toWebHandler","defaultRuntime","toWebHandlerLayer","layer","scope","runSync","make","close","runPromise","build","map","toRuntime","_","runner","extend","then"],"sources":["../../src/HttpApp.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/platform",
3
- "version": "0.61.1",
3
+ "version": "0.61.3",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -14,8 +14,8 @@
14
14
  "multipasta": "^0.2.2"
15
15
  },
16
16
  "peerDependencies": {
17
- "@effect/schema": "^0.70.0",
18
- "effect": "^3.6.0"
17
+ "@effect/schema": "^0.70.2",
18
+ "effect": "^3.6.1"
19
19
  },
20
20
  "publishConfig": {
21
21
  "provenance": true
package/src/HttpApp.ts CHANGED
@@ -44,38 +44,52 @@ export const toHandled = <E, R, _, EH, RH>(
44
44
  response: ServerResponse.HttpServerResponse
45
45
  ) => Effect.Effect<_, EH, RH>,
46
46
  middleware?: HttpMiddleware | undefined
47
- ): Effect.Effect<void, never, Exclude<R | RH, Scope.Scope>> => {
47
+ ): Effect.Effect<void, never, Exclude<R | RH | ServerRequest.HttpServerRequest, Scope.Scope>> => {
48
48
  const responded = Effect.withFiberRuntime<
49
- ServerResponse.HttpServerResponse,
50
- E | EH | ServerError.ResponseError,
49
+ void,
50
+ never,
51
51
  R | RH | ServerRequest.HttpServerRequest
52
52
  >((fiber) => {
53
+ let handled = false
53
54
  const request = Context.unsafeGet(fiber.getFiberRef(FiberRef.currentContext), ServerRequest.HttpServerRequest)
54
55
  const preprocessResponse = (response: ServerResponse.HttpServerResponse) => {
55
56
  const handler = fiber.getFiberRef(currentPreResponseHandlers)
56
57
  return handler._tag === "Some" ? handler.value(request, response) : Effect.succeed(response)
57
58
  }
58
- return Effect.matchCauseEffect(self, {
59
+ const responded = Effect.matchCauseEffect(self, {
59
60
  onFailure: (cause) =>
60
61
  Effect.flatMap(ServerError.causeResponse(cause), ([response, cause]) =>
61
62
  preprocessResponse(response).pipe(
62
- Effect.flatMap((response) => handleResponse(request, response)),
63
+ Effect.flatMap((response) => {
64
+ handled = true
65
+ return handleResponse(request, response)
66
+ }),
63
67
  Effect.zipRight(Effect.failCause(cause))
64
68
  )),
65
69
  onSuccess: (response) =>
66
70
  Effect.tap(
67
71
  preprocessResponse(response),
68
- (response) => handleResponse(request, response)
72
+ (response) => {
73
+ handled = true
74
+ return handleResponse(request, response)
75
+ }
69
76
  )
70
77
  })
78
+ const withTracer = internalMiddleware.tracer(responded)
79
+ if (middleware === undefined) {
80
+ return withTracer as any
81
+ }
82
+ return Effect.catchAllCause(middleware(withTracer), (cause): Effect.Effect<void, EH, RH> => {
83
+ if (handled) {
84
+ return Effect.void
85
+ }
86
+ return Effect.matchCauseEffect(ServerError.causeResponse(cause), {
87
+ onFailure: (_cause) => handleResponse(request, ServerResponse.empty({ status: 500 })),
88
+ onSuccess: ([response]) => handleResponse(request, response)
89
+ })
90
+ })
71
91
  })
72
- const withTracer = internalMiddleware.tracer(responded)
73
- return Effect.uninterruptible(
74
- Effect.catchAllCause(
75
- Effect.scoped(middleware === undefined ? withTracer : middleware(withTracer)),
76
- (_) => Effect.void
77
- )
78
- )
92
+ return Effect.uninterruptible(Effect.scoped(responded))
79
93
  }
80
94
 
81
95
  /**