@effect/platform 0.66.2 → 0.67.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.
Files changed (178) hide show
  1. package/dist/cjs/Command.js.map +1 -1
  2. package/dist/cjs/Cookies.js.map +1 -1
  3. package/dist/cjs/Effectify.js.map +1 -1
  4. package/dist/cjs/Headers.js.map +1 -1
  5. package/dist/cjs/HttpApi.js.map +1 -1
  6. package/dist/cjs/HttpApiBuilder.js.map +1 -1
  7. package/dist/cjs/HttpApiEndpoint.js.map +1 -1
  8. package/dist/cjs/HttpApiGroup.js.map +1 -1
  9. package/dist/cjs/HttpApiSchema.js.map +1 -1
  10. package/dist/cjs/HttpApiSecurity.js.map +1 -1
  11. package/dist/cjs/HttpApp.js.map +1 -1
  12. package/dist/cjs/HttpClient.js +8 -1
  13. package/dist/cjs/HttpClient.js.map +1 -1
  14. package/dist/cjs/HttpClientError.js +8 -1
  15. package/dist/cjs/HttpClientError.js.map +1 -1
  16. package/dist/cjs/HttpClientRequest.js.map +1 -1
  17. package/dist/cjs/HttpClientResponse.js +11 -1
  18. package/dist/cjs/HttpClientResponse.js.map +1 -1
  19. package/dist/cjs/HttpIncomingMessage.js.map +1 -1
  20. package/dist/cjs/HttpMiddleware.js.map +1 -1
  21. package/dist/cjs/HttpMultiplex.js.map +1 -1
  22. package/dist/cjs/HttpRouter.js.map +1 -1
  23. package/dist/cjs/HttpServer.js.map +1 -1
  24. package/dist/cjs/HttpServerResponse.js.map +1 -1
  25. package/dist/cjs/KeyValueStore.js.map +1 -1
  26. package/dist/cjs/Multipart.js.map +1 -1
  27. package/dist/cjs/OpenApi.js.map +1 -1
  28. package/dist/cjs/PlatformLogger.js.map +1 -1
  29. package/dist/cjs/Socket.js +4 -1
  30. package/dist/cjs/Socket.js.map +1 -1
  31. package/dist/cjs/Transferable.js.map +1 -1
  32. package/dist/cjs/UrlParams.js.map +1 -1
  33. package/dist/cjs/internal/httpBody.js +3 -0
  34. package/dist/cjs/internal/httpBody.js.map +1 -1
  35. package/dist/cjs/internal/httpClient.js +12 -14
  36. package/dist/cjs/internal/httpClient.js.map +1 -1
  37. package/dist/cjs/internal/httpClientResponse.js +16 -1
  38. package/dist/cjs/internal/httpClientResponse.js.map +1 -1
  39. package/dist/cjs/internal/httpMultiplex.js +3 -0
  40. package/dist/cjs/internal/httpMultiplex.js.map +1 -1
  41. package/dist/cjs/internal/httpRouter.js +3 -0
  42. package/dist/cjs/internal/httpRouter.js.map +1 -1
  43. package/dist/cjs/internal/httpServerResponse.js +3 -0
  44. package/dist/cjs/internal/httpServerResponse.js.map +1 -1
  45. package/dist/dts/Command.d.ts +134 -0
  46. package/dist/dts/Command.d.ts.map +1 -1
  47. package/dist/dts/Cookies.d.ts +120 -0
  48. package/dist/dts/Cookies.d.ts.map +1 -1
  49. package/dist/dts/Effectify.d.ts +9 -0
  50. package/dist/dts/Effectify.d.ts.map +1 -1
  51. package/dist/dts/Headers.d.ts +56 -0
  52. package/dist/dts/Headers.d.ts.map +1 -1
  53. package/dist/dts/HttpApi.d.ts +58 -0
  54. package/dist/dts/HttpApi.d.ts.map +1 -1
  55. package/dist/dts/HttpApiBuilder.d.ts +84 -0
  56. package/dist/dts/HttpApiBuilder.d.ts.map +1 -1
  57. package/dist/dts/HttpApiEndpoint.d.ts +118 -0
  58. package/dist/dts/HttpApiEndpoint.d.ts.map +1 -1
  59. package/dist/dts/HttpApiGroup.d.ts +100 -0
  60. package/dist/dts/HttpApiGroup.d.ts.map +1 -1
  61. package/dist/dts/HttpApiSchema.d.ts +16 -0
  62. package/dist/dts/HttpApiSchema.d.ts.map +1 -1
  63. package/dist/dts/HttpApiSecurity.d.ts +16 -0
  64. package/dist/dts/HttpApiSecurity.d.ts.map +1 -1
  65. package/dist/dts/HttpApp.d.ts.map +1 -1
  66. package/dist/dts/HttpClient.d.ts +308 -0
  67. package/dist/dts/HttpClient.d.ts.map +1 -1
  68. package/dist/dts/HttpClientError.d.ts +5 -0
  69. package/dist/dts/HttpClientError.d.ts.map +1 -1
  70. package/dist/dts/HttpClientRequest.d.ts +208 -0
  71. package/dist/dts/HttpClientRequest.d.ts.map +1 -1
  72. package/dist/dts/HttpClientResponse.d.ts +30 -0
  73. package/dist/dts/HttpClientResponse.d.ts.map +1 -1
  74. package/dist/dts/HttpIncomingMessage.d.ts.map +1 -1
  75. package/dist/dts/HttpMiddleware.d.ts +24 -0
  76. package/dist/dts/HttpMiddleware.d.ts.map +1 -1
  77. package/dist/dts/HttpMultiplex.d.ts +72 -0
  78. package/dist/dts/HttpMultiplex.d.ts.map +1 -1
  79. package/dist/dts/HttpRouter.d.ts +184 -0
  80. package/dist/dts/HttpRouter.d.ts.map +1 -1
  81. package/dist/dts/HttpServer.d.ts +32 -0
  82. package/dist/dts/HttpServer.d.ts.map +1 -1
  83. package/dist/dts/HttpServerResponse.d.ts +96 -0
  84. package/dist/dts/HttpServerResponse.d.ts.map +1 -1
  85. package/dist/dts/KeyValueStore.d.ts +8 -0
  86. package/dist/dts/KeyValueStore.d.ts.map +1 -1
  87. package/dist/dts/Multipart.d.ts +32 -0
  88. package/dist/dts/Multipart.d.ts.map +1 -1
  89. package/dist/dts/OpenApi.d.ts +8 -0
  90. package/dist/dts/OpenApi.d.ts.map +1 -1
  91. package/dist/dts/PlatformLogger.d.ts +46 -0
  92. package/dist/dts/PlatformLogger.d.ts.map +1 -1
  93. package/dist/dts/Socket.d.ts +8 -0
  94. package/dist/dts/Socket.d.ts.map +1 -1
  95. package/dist/dts/Transferable.d.ts +8 -0
  96. package/dist/dts/Transferable.d.ts.map +1 -1
  97. package/dist/dts/UrlParams.d.ts +64 -0
  98. package/dist/dts/UrlParams.d.ts.map +1 -1
  99. package/dist/dts/internal/httpRouter.d.ts.map +1 -1
  100. package/dist/esm/Command.js.map +1 -1
  101. package/dist/esm/Cookies.js.map +1 -1
  102. package/dist/esm/Effectify.js.map +1 -1
  103. package/dist/esm/Headers.js.map +1 -1
  104. package/dist/esm/HttpApi.js.map +1 -1
  105. package/dist/esm/HttpApiBuilder.js.map +1 -1
  106. package/dist/esm/HttpApiEndpoint.js.map +1 -1
  107. package/dist/esm/HttpApiGroup.js.map +1 -1
  108. package/dist/esm/HttpApiSchema.js.map +1 -1
  109. package/dist/esm/HttpApiSecurity.js.map +1 -1
  110. package/dist/esm/HttpApp.js.map +1 -1
  111. package/dist/esm/HttpClient.js +7 -0
  112. package/dist/esm/HttpClient.js.map +1 -1
  113. package/dist/esm/HttpClientError.js +6 -0
  114. package/dist/esm/HttpClientError.js.map +1 -1
  115. package/dist/esm/HttpClientRequest.js.map +1 -1
  116. package/dist/esm/HttpClientResponse.js +10 -0
  117. package/dist/esm/HttpClientResponse.js.map +1 -1
  118. package/dist/esm/HttpIncomingMessage.js.map +1 -1
  119. package/dist/esm/HttpMiddleware.js.map +1 -1
  120. package/dist/esm/HttpMultiplex.js.map +1 -1
  121. package/dist/esm/HttpRouter.js.map +1 -1
  122. package/dist/esm/HttpServer.js.map +1 -1
  123. package/dist/esm/HttpServerResponse.js.map +1 -1
  124. package/dist/esm/KeyValueStore.js.map +1 -1
  125. package/dist/esm/Multipart.js.map +1 -1
  126. package/dist/esm/OpenApi.js.map +1 -1
  127. package/dist/esm/PlatformLogger.js.map +1 -1
  128. package/dist/esm/Socket.js +4 -1
  129. package/dist/esm/Socket.js.map +1 -1
  130. package/dist/esm/Transferable.js.map +1 -1
  131. package/dist/esm/UrlParams.js.map +1 -1
  132. package/dist/esm/internal/httpBody.js +3 -0
  133. package/dist/esm/internal/httpBody.js.map +1 -1
  134. package/dist/esm/internal/httpClient.js +11 -13
  135. package/dist/esm/internal/httpClient.js.map +1 -1
  136. package/dist/esm/internal/httpClientResponse.js +14 -0
  137. package/dist/esm/internal/httpClientResponse.js.map +1 -1
  138. package/dist/esm/internal/httpMultiplex.js +3 -0
  139. package/dist/esm/internal/httpMultiplex.js.map +1 -1
  140. package/dist/esm/internal/httpRouter.js +3 -0
  141. package/dist/esm/internal/httpRouter.js.map +1 -1
  142. package/dist/esm/internal/httpServerResponse.js +3 -0
  143. package/dist/esm/internal/httpServerResponse.js.map +1 -1
  144. package/package.json +3 -3
  145. package/src/Command.ts +134 -0
  146. package/src/Cookies.ts +128 -38
  147. package/src/Effectify.ts +9 -0
  148. package/src/Headers.ts +106 -7
  149. package/src/HttpApi.ts +58 -0
  150. package/src/HttpApiBuilder.ts +85 -3
  151. package/src/HttpApiEndpoint.ts +121 -9
  152. package/src/HttpApiGroup.ts +102 -7
  153. package/src/HttpApiSchema.ts +22 -4
  154. package/src/HttpApiSecurity.ts +16 -0
  155. package/src/HttpApp.ts +8 -0
  156. package/src/HttpClient.ts +315 -11
  157. package/src/HttpClientError.ts +7 -0
  158. package/src/HttpClientRequest.ts +213 -1
  159. package/src/HttpClientResponse.ts +33 -0
  160. package/src/HttpIncomingMessage.ts +8 -0
  161. package/src/HttpMiddleware.ts +24 -0
  162. package/src/HttpMultiplex.ts +72 -0
  163. package/src/HttpRouter.ts +189 -18
  164. package/src/HttpServer.ts +34 -6
  165. package/src/HttpServerResponse.ts +98 -10
  166. package/src/KeyValueStore.ts +8 -0
  167. package/src/Multipart.ts +32 -0
  168. package/src/OpenApi.ts +31 -18
  169. package/src/PlatformLogger.ts +46 -0
  170. package/src/Socket.ts +19 -13
  171. package/src/Transferable.ts +9 -3
  172. package/src/UrlParams.ts +64 -0
  173. package/src/internal/httpBody.ts +3 -0
  174. package/src/internal/httpClient.ts +41 -26
  175. package/src/internal/httpClientResponse.ts +40 -1
  176. package/src/internal/httpMultiplex.ts +3 -0
  177. package/src/internal/httpRouter.ts +3 -0
  178. package/src/internal/httpServerResponse.ts +3 -0
@@ -12,7 +12,7 @@ import * as Layer from "effect/Layer"
12
12
  import { pipeArguments } from "effect/Pipeable"
13
13
  import * as Predicate from "effect/Predicate"
14
14
  import * as Ref from "effect/Ref"
15
- import type * as Schedule from "effect/Schedule"
15
+ import * as Schedule from "effect/Schedule"
16
16
  import * as Scope from "effect/Scope"
17
17
  import * as Cookies from "../Cookies.js"
18
18
  import * as Headers from "../Headers.js"
@@ -24,6 +24,7 @@ import * as TraceContext from "../HttpTraceContext.js"
24
24
  import * as UrlParams from "../UrlParams.js"
25
25
  import * as internalBody from "./httpBody.js"
26
26
  import * as internalRequest from "./httpClientRequest.js"
27
+ import * as internalResponse from "./httpClientResponse.js"
27
28
 
28
29
  /** @internal */
29
30
  export const TypeId: Client.TypeId = Symbol.for(
@@ -235,36 +236,13 @@ export const filterStatus = dual<
235
236
  self: Client.HttpClient.WithResponse<E, R>,
236
237
  f: (status: number) => boolean
237
238
  ) => Client.HttpClient.WithResponse<E | Error.ResponseError, R>
238
- >(2, (self, f) =>
239
- transform(self, (effect, request) =>
240
- Effect.filterOrFail(
241
- effect,
242
- (response) => f(response.status),
243
- (response) =>
244
- new Error.ResponseError({
245
- request,
246
- response,
247
- reason: "StatusCode",
248
- description: "invalid status code"
249
- })
250
- )))
239
+ >(2, (self, f) => transformResponse(self, Effect.flatMap(internalResponse.filterStatus(f))))
251
240
 
252
241
  /** @internal */
253
242
  export const filterStatusOk = <E, R>(
254
243
  self: Client.HttpClient.WithResponse<E, R>
255
244
  ): Client.HttpClient.WithResponse<E | Error.ResponseError, R> =>
256
- transform(self, (effect, request) =>
257
- Effect.filterOrFail(
258
- effect,
259
- (response) => response.status >= 200 && response.status < 300,
260
- (response) =>
261
- new Error.ResponseError({
262
- request,
263
- response,
264
- reason: "StatusCode",
265
- description: "non 2xx status code"
266
- })
267
- ))
245
+ transformResponse(self, Effect.flatMap(internalResponse.filterStatusOk))
268
246
 
269
247
  /** @internal */
270
248
  export const transformResponse = dual<
@@ -653,6 +631,43 @@ export const retry: {
653
631
  ): Client.HttpClient<A, E, R | R1> => transformResponse(self, Effect.retry(policy))
654
632
  )
655
633
 
634
+ /** @internal */
635
+ export const retryTransient: {
636
+ <B, E, R1 = never>(
637
+ options: {
638
+ readonly schedule?: Schedule.Schedule<B, NoInfer<E>, R1>
639
+ readonly times?: number
640
+ } | Schedule.Schedule<B, NoInfer<E>, R1>
641
+ ): <A, R>(self: Client.HttpClient<A, E, R>) => Client.HttpClient<A, E, R1 | R>
642
+ <A, E, R, B, R1 = never>(
643
+ self: Client.HttpClient<A, E, R>,
644
+ options: {
645
+ readonly schedule?: Schedule.Schedule<B, NoInfer<E>, R1>
646
+ readonly times?: number
647
+ } | Schedule.Schedule<B, NoInfer<E>, R1>
648
+ ): Client.HttpClient<A, E, R1 | R>
649
+ } = dual(
650
+ 2,
651
+ <A, E extends E0, E0, R, B, R1 = never>(
652
+ self: Client.HttpClient<A, E, R>,
653
+ options: {
654
+ readonly schedule?: Schedule.Schedule<B, NoInfer<E>, R1>
655
+ readonly times?: number
656
+ } | Schedule.Schedule<B, NoInfer<E>, R1>
657
+ ): Client.HttpClient<A, E, R | R1> =>
658
+ transformResponse(
659
+ self,
660
+ Effect.retry({
661
+ while: (error) =>
662
+ Error.isHttpClientError(error) &&
663
+ ((error._tag === "RequestError" && error.reason === "Transport") ||
664
+ (error._tag === "ResponseError" && error.response.status >= 429)),
665
+ schedule: Schedule.ScheduleTypeId in options ? options : options.schedule,
666
+ times: Schedule.ScheduleTypeId in options ? undefined : options.times
667
+ })
668
+ )
669
+ )
670
+
656
671
  /** @internal */
657
672
  export const schemaFunction = dual<
658
673
  <SA, SI, SR>(
@@ -29,7 +29,7 @@ class ClientResponseImpl extends Inspectable.Class implements ClientResponse.Htt
29
29
  readonly [TypeId]: ClientResponse.TypeId
30
30
 
31
31
  constructor(
32
- private readonly request: ClientRequest.HttpClientRequest,
32
+ readonly request: ClientRequest.HttpClientRequest,
33
33
  private readonly source: globalThis.Response
34
34
  ) {
35
35
  super()
@@ -240,3 +240,42 @@ export const matchStatus = dual<
240
240
  }
241
241
  return cases.orElse(self)
242
242
  })
243
+
244
+ /** @internal */
245
+ export const filterStatus = dual<
246
+ (
247
+ f: (status: number) => boolean
248
+ ) => (
249
+ self: ClientResponse.HttpClientResponse
250
+ ) => Effect.Effect<ClientResponse.HttpClientResponse, Error.ResponseError>,
251
+ (
252
+ self: ClientResponse.HttpClientResponse,
253
+ f: (status: number) => boolean
254
+ ) => Effect.Effect<ClientResponse.HttpClientResponse, Error.ResponseError>
255
+ >(
256
+ 2,
257
+ (self, f) =>
258
+ Effect.suspend(() =>
259
+ f(self.status) ? Effect.succeed(self) : Effect.fail(
260
+ new Error.ResponseError({
261
+ response: self,
262
+ request: self.request,
263
+ reason: "StatusCode",
264
+ description: "invalid status code"
265
+ })
266
+ )
267
+ )
268
+ )
269
+
270
+ /** @internal */
271
+ export const filterStatusOk = (
272
+ self: ClientResponse.HttpClientResponse
273
+ ): Effect.Effect<ClientResponse.HttpClientResponse, Error.ResponseError> =>
274
+ self.status >= 200 && self.status < 300 ? Effect.succeed(self) : Effect.fail(
275
+ new Error.ResponseError({
276
+ response: self,
277
+ request: self.request,
278
+ reason: "StatusCode",
279
+ description: "non 2xx status code"
280
+ })
281
+ )
@@ -52,6 +52,9 @@ class MultiplexImpl<E = never, R = never> extends Effectable.Class<
52
52
  return this.execute
53
53
  }
54
54
 
55
+ [Inspectable.DenoInspectSymbol]() {
56
+ return Inspectable.toJSON(this)
57
+ }
55
58
  [Inspectable.NodeInspectSymbol]() {
56
59
  return Inspectable.toJSON(this)
57
60
  }
@@ -200,6 +200,9 @@ class RouterImpl<E = never, R = never> extends Effectable.StructuralClass<
200
200
  toString() {
201
201
  return Inspectable.format(this)
202
202
  }
203
+ [Inspectable.DenoInspectSymbol]() {
204
+ return this.toJSON()
205
+ }
203
206
  [Inspectable.NodeInspectSymbol]() {
204
207
  return this.toJSON()
205
208
  }
@@ -62,6 +62,9 @@ class ServerResponseImpl extends Effectable.StructuralClass<ServerResponse.HttpS
62
62
  return Effect.succeed(this)
63
63
  }
64
64
 
65
+ [Inspectable.DenoInspectSymbol]() {
66
+ return this.toJSON()
67
+ }
65
68
  [Inspectable.NodeInspectSymbol]() {
66
69
  return this.toJSON()
67
70
  }