@effect/platform 0.69.27 → 0.69.28

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 (45) hide show
  1. package/dist/cjs/HttpApiBuilder.js +7 -5
  2. package/dist/cjs/HttpApiBuilder.js.map +1 -1
  3. package/dist/cjs/HttpApiClient.js +2 -3
  4. package/dist/cjs/HttpApiClient.js.map +1 -1
  5. package/dist/cjs/HttpApiEndpoint.js.map +1 -1
  6. package/dist/cjs/HttpClient.js +4 -1
  7. package/dist/cjs/HttpClient.js.map +1 -1
  8. package/dist/cjs/OpenApi.js +22 -5
  9. package/dist/cjs/OpenApi.js.map +1 -1
  10. package/dist/cjs/PlatformLogger.js +2 -0
  11. package/dist/cjs/PlatformLogger.js.map +1 -1
  12. package/dist/cjs/internal/httpClient.js +4 -1
  13. package/dist/cjs/internal/httpClient.js.map +1 -1
  14. package/dist/dts/HttpApiBuilder.d.ts +2 -3
  15. package/dist/dts/HttpApiBuilder.d.ts.map +1 -1
  16. package/dist/dts/HttpApiClient.d.ts.map +1 -1
  17. package/dist/dts/HttpApiEndpoint.d.ts +3 -1
  18. package/dist/dts/HttpApiEndpoint.d.ts.map +1 -1
  19. package/dist/dts/HttpClient.d.ts +15 -3
  20. package/dist/dts/HttpClient.d.ts.map +1 -1
  21. package/dist/dts/OpenApi.d.ts.map +1 -1
  22. package/dist/dts/PlatformLogger.d.ts +6 -0
  23. package/dist/dts/PlatformLogger.d.ts.map +1 -1
  24. package/dist/dts/internal/httpClient.d.ts.map +1 -1
  25. package/dist/esm/HttpApiBuilder.js +7 -5
  26. package/dist/esm/HttpApiBuilder.js.map +1 -1
  27. package/dist/esm/HttpApiClient.js +2 -3
  28. package/dist/esm/HttpApiClient.js.map +1 -1
  29. package/dist/esm/HttpApiEndpoint.js.map +1 -1
  30. package/dist/esm/HttpClient.js +4 -1
  31. package/dist/esm/HttpClient.js.map +1 -1
  32. package/dist/esm/OpenApi.js +22 -5
  33. package/dist/esm/OpenApi.js.map +1 -1
  34. package/dist/esm/PlatformLogger.js +2 -0
  35. package/dist/esm/PlatformLogger.js.map +1 -1
  36. package/dist/esm/internal/httpClient.js +4 -1
  37. package/dist/esm/internal/httpClient.js.map +1 -1
  38. package/package.json +2 -2
  39. package/src/HttpApiBuilder.ts +10 -12
  40. package/src/HttpApiClient.ts +1 -6
  41. package/src/HttpApiEndpoint.ts +2 -1
  42. package/src/HttpClient.ts +23 -9
  43. package/src/OpenApi.ts +23 -7
  44. package/src/PlatformLogger.ts +6 -0
  45. package/src/internal/httpClient.ts +16 -4
@@ -14,6 +14,7 @@ import * as internal from "./internal/platformLogger.js"
14
14
  *
15
15
  * @since 1.0.0
16
16
  * @example
17
+ * ```ts
17
18
  * import { PlatformLogger } from "@effect/platform"
18
19
  * import { NodeFileSystem, NodeRuntime } from "@effect/platform-node"
19
20
  * import { Effect, Layer, Logger } from "effect"
@@ -31,6 +32,7 @@ import * as internal from "./internal/platformLogger.js"
31
32
  * Effect.provide(LoggerLive),
32
33
  * NodeRuntime.runMain
33
34
  * )
35
+ * ```
34
36
  */
35
37
  export const toFile: {
36
38
  /**
@@ -38,6 +40,7 @@ export const toFile: {
38
40
  *
39
41
  * @since 1.0.0
40
42
  * @example
43
+ * ```ts
41
44
  * import { PlatformLogger } from "@effect/platform"
42
45
  * import { NodeFileSystem, NodeRuntime } from "@effect/platform-node"
43
46
  * import { Effect, Layer, Logger } from "effect"
@@ -55,6 +58,7 @@ export const toFile: {
55
58
  * Effect.provide(LoggerLive),
56
59
  * NodeRuntime.runMain
57
60
  * )
61
+ * ```
58
62
  */
59
63
  (
60
64
  path: string,
@@ -73,6 +77,7 @@ export const toFile: {
73
77
  *
74
78
  * @since 1.0.0
75
79
  * @example
80
+ * ```ts
76
81
  * import { PlatformLogger } from "@effect/platform"
77
82
  * import { NodeFileSystem, NodeRuntime } from "@effect/platform-node"
78
83
  * import { Effect, Layer, Logger } from "effect"
@@ -90,6 +95,7 @@ export const toFile: {
90
95
  * Effect.provide(LoggerLive),
91
96
  * NodeRuntime.runMain
92
97
  * )
98
+ * ```
93
99
  */
94
100
  <Message>(
95
101
  self: Logger.Logger<Message, string>,
@@ -1,3 +1,4 @@
1
+ import * as Cause from "effect/Cause"
1
2
  import * as Context from "effect/Context"
2
3
  import * as Effect from "effect/Effect"
3
4
  import type * as Fiber from "effect/Fiber"
@@ -11,6 +12,7 @@ import * as Predicate from "effect/Predicate"
11
12
  import * as Ref from "effect/Ref"
12
13
  import * as Schedule from "effect/Schedule"
13
14
  import * as Scope from "effect/Scope"
15
+ import type { NoInfer } from "effect/Types"
14
16
  import * as Cookies from "../Cookies.js"
15
17
  import * as Headers from "../Headers.js"
16
18
  import type * as Client from "../HttpClient.js"
@@ -565,6 +567,7 @@ export const retry: {
565
567
  export const retryTransient: {
566
568
  <B, E, R1 = never>(
567
569
  options: {
570
+ readonly while?: Predicate.Predicate<NoInfer<E>>
568
571
  readonly schedule?: Schedule.Schedule<B, NoInfer<E>, R1>
569
572
  readonly times?: number
570
573
  } | Schedule.Schedule<B, NoInfer<E>, R1>
@@ -572,6 +575,7 @@ export const retryTransient: {
572
575
  <E, R, B, R1 = never>(
573
576
  self: Client.HttpClient<E, R>,
574
577
  options: {
578
+ readonly while?: Predicate.Predicate<NoInfer<E>>
575
579
  readonly schedule?: Schedule.Schedule<B, NoInfer<E>, R1>
576
580
  readonly times?: number
577
581
  } | Schedule.Schedule<B, NoInfer<E>, R1>
@@ -581,6 +585,7 @@ export const retryTransient: {
581
585
  <E extends E0, E0, R, B, R1 = never>(
582
586
  self: Client.HttpClient<E, R>,
583
587
  options: {
588
+ readonly while?: Predicate.Predicate<NoInfer<E>>
584
589
  readonly schedule?: Schedule.Schedule<B, NoInfer<E>, R1>
585
590
  readonly times?: number
586
591
  } | Schedule.Schedule<B, NoInfer<E>, R1>
@@ -588,16 +593,23 @@ export const retryTransient: {
588
593
  transformResponse(
589
594
  self,
590
595
  Effect.retry({
591
- while: (error) =>
592
- Error.isHttpClientError(error) &&
593
- ((error._tag === "RequestError" && error.reason === "Transport") ||
594
- (error._tag === "ResponseError" && error.response.status >= 429)),
596
+ while: Schedule.ScheduleTypeId in options || options.while === undefined
597
+ ? isTransientError
598
+ : Predicate.or(isTransientError, options.while),
595
599
  schedule: Schedule.ScheduleTypeId in options ? options : options.schedule,
596
600
  times: Schedule.ScheduleTypeId in options ? undefined : options.times
597
601
  })
598
602
  )
599
603
  )
600
604
 
605
+ const isTransientError = (error: unknown) =>
606
+ Predicate.hasProperty(error, Cause.TimeoutExceptionTypeId) || isTransientHttpError(error)
607
+
608
+ const isTransientHttpError = (error: unknown) =>
609
+ Error.isHttpClientError(error) &&
610
+ ((error._tag === "RequestError" && error.reason === "Transport") ||
611
+ (error._tag === "ResponseError" && error.response.status >= 429))
612
+
601
613
  /** @internal */
602
614
  export const tap = dual<
603
615
  <_, E2, R2>(