@effect/platform 0.58.8 → 0.58.10

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.
Files changed (90) hide show
  1. package/HttpServerRespondable/package.json +6 -0
  2. package/dist/cjs/HttpApp.js +10 -3
  3. package/dist/cjs/HttpApp.js.map +1 -1
  4. package/dist/cjs/HttpClientResponse.js +11 -1
  5. package/dist/cjs/HttpClientResponse.js.map +1 -1
  6. package/dist/cjs/HttpRouter.js +7 -1
  7. package/dist/cjs/HttpRouter.js.map +1 -1
  8. package/dist/cjs/HttpServerError.js +32 -2
  9. package/dist/cjs/HttpServerError.js.map +1 -1
  10. package/dist/cjs/HttpServerRespondable.js +88 -0
  11. package/dist/cjs/HttpServerRespondable.js.map +1 -0
  12. package/dist/cjs/HttpServerResponse.js.map +1 -1
  13. package/dist/cjs/index.js +3 -1
  14. package/dist/cjs/internal/httpClientResponse.js +20 -1
  15. package/dist/cjs/internal/httpClientResponse.js.map +1 -1
  16. package/dist/cjs/internal/httpMiddleware.js +13 -14
  17. package/dist/cjs/internal/httpMiddleware.js.map +1 -1
  18. package/dist/cjs/internal/httpRouter.js +4 -2
  19. package/dist/cjs/internal/httpRouter.js.map +1 -1
  20. package/dist/cjs/internal/httpServerError.js +28 -3
  21. package/dist/cjs/internal/httpServerError.js.map +1 -1
  22. package/dist/cjs/internal/httpServerResponse.js +4 -0
  23. package/dist/cjs/internal/httpServerResponse.js.map +1 -1
  24. package/dist/cjs/internal/path.js +3 -3
  25. package/dist/cjs/internal/path.js.map +1 -1
  26. package/dist/dts/Cookies.d.ts.map +1 -1
  27. package/dist/dts/Error.d.ts.map +1 -1
  28. package/dist/dts/FileSystem.d.ts.map +1 -1
  29. package/dist/dts/Headers.d.ts.map +1 -1
  30. package/dist/dts/HttpApp.d.ts +1 -1
  31. package/dist/dts/HttpApp.d.ts.map +1 -1
  32. package/dist/dts/HttpBody.d.ts.map +1 -1
  33. package/dist/dts/HttpClientResponse.d.ts +44 -0
  34. package/dist/dts/HttpClientResponse.d.ts.map +1 -1
  35. package/dist/dts/HttpIncomingMessage.d.ts +1 -1
  36. package/dist/dts/HttpIncomingMessage.d.ts.map +1 -1
  37. package/dist/dts/HttpRouter.d.ts +13 -4
  38. package/dist/dts/HttpRouter.d.ts.map +1 -1
  39. package/dist/dts/HttpServerError.d.ts +22 -3
  40. package/dist/dts/HttpServerError.d.ts.map +1 -1
  41. package/dist/dts/HttpServerRespondable.d.ts +35 -0
  42. package/dist/dts/HttpServerRespondable.d.ts.map +1 -0
  43. package/dist/dts/HttpServerResponse.d.ts +2 -1
  44. package/dist/dts/HttpServerResponse.d.ts.map +1 -1
  45. package/dist/dts/HttpTraceContext.d.ts.map +1 -1
  46. package/dist/dts/PlatformConfigProvider.d.ts.map +1 -1
  47. package/dist/dts/Socket.d.ts.map +1 -1
  48. package/dist/dts/Transferable.d.ts.map +1 -1
  49. package/dist/dts/UrlParams.d.ts.map +1 -1
  50. package/dist/dts/WorkerError.d.ts.map +1 -1
  51. package/dist/dts/index.d.ts +4 -0
  52. package/dist/dts/index.d.ts.map +1 -1
  53. package/dist/dts/internal/httpRouter.d.ts +1 -1
  54. package/dist/dts/internal/httpRouter.d.ts.map +1 -1
  55. package/dist/esm/HttpApp.js +10 -3
  56. package/dist/esm/HttpApp.js.map +1 -1
  57. package/dist/esm/HttpClientResponse.js +10 -0
  58. package/dist/esm/HttpClientResponse.js.map +1 -1
  59. package/dist/esm/HttpRouter.js +5 -0
  60. package/dist/esm/HttpRouter.js.map +1 -1
  61. package/dist/esm/HttpServerError.js +31 -1
  62. package/dist/esm/HttpServerError.js.map +1 -1
  63. package/dist/esm/HttpServerRespondable.js +52 -0
  64. package/dist/esm/HttpServerRespondable.js.map +1 -0
  65. package/dist/esm/HttpServerResponse.js.map +1 -1
  66. package/dist/esm/index.js +4 -0
  67. package/dist/esm/index.js.map +1 -1
  68. package/dist/esm/internal/httpClientResponse.js +19 -0
  69. package/dist/esm/internal/httpClientResponse.js.map +1 -1
  70. package/dist/esm/internal/httpMiddleware.js +13 -14
  71. package/dist/esm/internal/httpMiddleware.js.map +1 -1
  72. package/dist/esm/internal/httpRouter.js +4 -2
  73. package/dist/esm/internal/httpRouter.js.map +1 -1
  74. package/dist/esm/internal/httpServerError.js +25 -1
  75. package/dist/esm/internal/httpServerError.js.map +1 -1
  76. package/dist/esm/internal/httpServerResponse.js +4 -0
  77. package/dist/esm/internal/httpServerResponse.js.map +1 -1
  78. package/package.json +11 -3
  79. package/src/HttpApp.ts +14 -3
  80. package/src/HttpClientResponse.ts +77 -0
  81. package/src/HttpRouter.ts +15 -4
  82. package/src/HttpServerError.ts +37 -5
  83. package/src/HttpServerRespondable.ts +66 -0
  84. package/src/HttpServerResponse.ts +2 -1
  85. package/src/index.ts +5 -0
  86. package/src/internal/httpClientResponse.ts +82 -0
  87. package/src/internal/httpMiddleware.ts +19 -19
  88. package/src/internal/httpRouter.ts +9 -7
  89. package/src/internal/httpServerError.ts +35 -6
  90. package/src/internal/httpServerResponse.ts +9 -0
@@ -1,9 +1,12 @@
1
1
  import * as Cause from "effect/Cause"
2
+ import type * as Exit from "effect/Exit"
2
3
  import * as FiberId from "effect/FiberId"
3
4
  import { globalValue } from "effect/GlobalValue"
4
5
  import * as Option from "effect/Option"
5
6
  import * as Predicate from "effect/Predicate"
6
7
  import type * as Error from "../HttpServerError.js"
8
+ import type { HttpServerResponse } from "../HttpServerResponse.js"
9
+ import * as internalServerResponse from "./httpServerResponse.js"
7
10
 
8
11
  /** @internal */
9
12
  export const TypeId: Error.TypeId = Symbol.for(
@@ -28,10 +31,36 @@ export const isClientAbortCause = <E>(cause: Cause.Cause<E>): boolean =>
28
31
  )
29
32
 
30
33
  /** @internal */
34
+ export const causeStatusStripped = <E>(
35
+ cause: Cause.Cause<E>
36
+ ): readonly [status: number, cause: Option.Option<Cause.Cause<E>>] => {
37
+ if (Cause.isInterruptedOnly(cause)) {
38
+ return [isClientAbortCause(cause) ? 499 : 503, Option.some(cause)]
39
+ }
40
+ let response: HttpServerResponse | undefined
41
+ const stripped = Cause.stripSomeDefects(cause, (defect) => {
42
+ if (internalServerResponse.isServerResponse(defect)) {
43
+ response = defect
44
+ return Option.some(Cause.die(defect))
45
+ }
46
+ return Option.none()
47
+ })
48
+ return [response?.status ?? 500, stripped]
49
+ }
31
50
 
32
- export const causeStatusCode = <E>(cause: Cause.Cause<E>): number =>
33
- Cause.isInterruptedOnly(cause) ?
34
- isClientAbortCause(cause) ?
35
- 499 :
36
- 503 :
37
- 500
51
+ const internalServerError = internalServerResponse.empty({ status: 500 })
52
+
53
+ /** @internal */
54
+ export const exitResponse = <E>(exit: Exit.Exit<HttpServerResponse, E>): HttpServerResponse => {
55
+ if (exit._tag === "Success") {
56
+ return exit.value
57
+ }
58
+ return Cause.reduce(
59
+ exit.cause,
60
+ internalServerError,
61
+ (_, cause) =>
62
+ cause._tag === "Die" && internalServerResponse.isServerResponse(cause.defect)
63
+ ? Option.some(cause.defect)
64
+ : Option.none()
65
+ )
66
+ }
@@ -11,6 +11,7 @@ import type * as FileSystem from "../FileSystem.js"
11
11
  import * as Headers from "../Headers.js"
12
12
  import type * as Body from "../HttpBody.js"
13
13
  import * as Platform from "../HttpPlatform.js"
14
+ import type * as Respondable from "../HttpServerRespondable.js"
14
15
  import type * as ServerResponse from "../HttpServerResponse.js"
15
16
  import * as Template from "../Template.js"
16
17
  import * as UrlParams from "../UrlParams.js"
@@ -19,6 +20,10 @@ import * as internalBody from "./httpBody.js"
19
20
  /** @internal */
20
21
  export const TypeId: ServerResponse.TypeId = Symbol.for("@effect/platform/HttpServerResponse") as ServerResponse.TypeId
21
22
 
23
+ const respondableSymbol: typeof Respondable.symbol = Symbol.for(
24
+ "@effect/platform/HttpServerRespondable"
25
+ ) as typeof Respondable.symbol
26
+
22
27
  class ServerResponseImpl extends Effectable.StructuralClass<ServerResponse.HttpServerResponse>
23
28
  implements ServerResponse.HttpServerResponse
24
29
  {
@@ -51,6 +56,10 @@ class ServerResponseImpl extends Effectable.StructuralClass<ServerResponse.HttpS
51
56
  return Effect.succeed(this)
52
57
  }
53
58
 
59
+ [respondableSymbol](): Effect.Effect<ServerResponse.HttpServerResponse, unknown> {
60
+ return Effect.succeed(this)
61
+ }
62
+
54
63
  [Inspectable.NodeInspectSymbol]() {
55
64
  return this.toJSON()
56
65
  }