@effect/platform 0.42.6 → 0.43.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 (111) hide show
  1. package/dist/cjs/Http/Body.js.map +1 -1
  2. package/dist/cjs/Http/ClientRequest.js.map +1 -1
  3. package/dist/cjs/Http/ClientResponse.js.map +1 -1
  4. package/dist/cjs/Http/IncomingMessage.js +3 -3
  5. package/dist/cjs/Http/IncomingMessage.js.map +1 -1
  6. package/dist/cjs/Http/Multipart.js.map +1 -1
  7. package/dist/cjs/Http/Router.js.map +1 -1
  8. package/dist/cjs/Http/ServerRequest.js.map +1 -1
  9. package/dist/cjs/Http/UrlParams.js +1 -1
  10. package/dist/cjs/Http/UrlParams.js.map +1 -1
  11. package/dist/cjs/Transferable.js +13 -16
  12. package/dist/cjs/Transferable.js.map +1 -1
  13. package/dist/cjs/WorkerRunner.js.map +1 -1
  14. package/dist/cjs/internal/http/body.js.map +1 -1
  15. package/dist/cjs/internal/http/client.js +1 -0
  16. package/dist/cjs/internal/http/client.js.map +1 -1
  17. package/dist/cjs/internal/http/clientRequest.js.map +1 -1
  18. package/dist/cjs/internal/http/clientResponse.js +2 -2
  19. package/dist/cjs/internal/http/clientResponse.js.map +1 -1
  20. package/dist/cjs/internal/http/multipart.js +2 -2
  21. package/dist/cjs/internal/http/multipart.js.map +1 -1
  22. package/dist/cjs/internal/http/router.js +3 -3
  23. package/dist/cjs/internal/http/router.js.map +1 -1
  24. package/dist/cjs/internal/http/serverRequest.js.map +1 -1
  25. package/dist/cjs/internal/http/serverResponse.js.map +1 -1
  26. package/dist/cjs/internal/keyValueStore.js +1 -1
  27. package/dist/cjs/internal/keyValueStore.js.map +1 -1
  28. package/dist/cjs/internal/workerRunner.js +1 -1
  29. package/dist/cjs/internal/workerRunner.js.map +1 -1
  30. package/dist/dts/Http/Body.d.ts +1 -1
  31. package/dist/dts/Http/Body.d.ts.map +1 -1
  32. package/dist/dts/Http/Client.d.ts +2 -2
  33. package/dist/dts/Http/Client.d.ts.map +1 -1
  34. package/dist/dts/Http/ClientRequest.d.ts +11 -12
  35. package/dist/dts/Http/ClientRequest.d.ts.map +1 -1
  36. package/dist/dts/Http/ClientResponse.d.ts +6 -6
  37. package/dist/dts/Http/ClientResponse.d.ts.map +1 -1
  38. package/dist/dts/Http/IncomingMessage.d.ts +3 -3
  39. package/dist/dts/Http/IncomingMessage.d.ts.map +1 -1
  40. package/dist/dts/Http/Multipart.d.ts +5 -5
  41. package/dist/dts/Http/Multipart.d.ts.map +1 -1
  42. package/dist/dts/Http/Router.d.ts +3 -3
  43. package/dist/dts/Http/Router.d.ts.map +1 -1
  44. package/dist/dts/Http/ServerRequest.d.ts +6 -6
  45. package/dist/dts/Http/ServerRequest.d.ts.map +1 -1
  46. package/dist/dts/Http/ServerResponse.d.ts +1 -1
  47. package/dist/dts/Http/ServerResponse.d.ts.map +1 -1
  48. package/dist/dts/Http/UrlParams.d.ts +3 -3
  49. package/dist/dts/KeyValueStore.d.ts +9 -9
  50. package/dist/dts/KeyValueStore.d.ts.map +1 -1
  51. package/dist/dts/Transferable.d.ts +3 -3
  52. package/dist/dts/Transferable.d.ts.map +1 -1
  53. package/dist/dts/Worker.d.ts +5 -5
  54. package/dist/dts/Worker.d.ts.map +1 -1
  55. package/dist/dts/WorkerRunner.d.ts +3 -3
  56. package/dist/dts/WorkerRunner.d.ts.map +1 -1
  57. package/dist/dts/internal/http/router.d.ts.map +1 -1
  58. package/dist/esm/Http/Body.js.map +1 -1
  59. package/dist/esm/Http/ClientRequest.js.map +1 -1
  60. package/dist/esm/Http/ClientResponse.js.map +1 -1
  61. package/dist/esm/Http/IncomingMessage.js +3 -3
  62. package/dist/esm/Http/IncomingMessage.js.map +1 -1
  63. package/dist/esm/Http/Multipart.js.map +1 -1
  64. package/dist/esm/Http/Router.js.map +1 -1
  65. package/dist/esm/Http/ServerRequest.js.map +1 -1
  66. package/dist/esm/Http/UrlParams.js +1 -1
  67. package/dist/esm/Http/UrlParams.js.map +1 -1
  68. package/dist/esm/Transferable.js +14 -17
  69. package/dist/esm/Transferable.js.map +1 -1
  70. package/dist/esm/WorkerRunner.js.map +1 -1
  71. package/dist/esm/internal/http/body.js.map +1 -1
  72. package/dist/esm/internal/http/client.js +1 -0
  73. package/dist/esm/internal/http/client.js.map +1 -1
  74. package/dist/esm/internal/http/clientRequest.js.map +1 -1
  75. package/dist/esm/internal/http/clientResponse.js +2 -2
  76. package/dist/esm/internal/http/clientResponse.js.map +1 -1
  77. package/dist/esm/internal/http/multipart.js +2 -2
  78. package/dist/esm/internal/http/multipart.js.map +1 -1
  79. package/dist/esm/internal/http/router.js +3 -3
  80. package/dist/esm/internal/http/router.js.map +1 -1
  81. package/dist/esm/internal/http/serverRequest.js.map +1 -1
  82. package/dist/esm/internal/http/serverResponse.js.map +1 -1
  83. package/dist/esm/internal/keyValueStore.js +1 -1
  84. package/dist/esm/internal/keyValueStore.js.map +1 -1
  85. package/dist/esm/internal/workerRunner.js +1 -1
  86. package/dist/esm/internal/workerRunner.js.map +1 -1
  87. package/package.json +3 -3
  88. package/src/Http/Body.ts +3 -3
  89. package/src/Http/Client.ts +6 -6
  90. package/src/Http/ClientRequest.ts +8 -9
  91. package/src/Http/ClientResponse.ts +7 -6
  92. package/src/Http/IncomingMessage.ts +11 -9
  93. package/src/Http/Multipart.ts +8 -8
  94. package/src/Http/Router.ts +9 -9
  95. package/src/Http/ServerRequest.ts +19 -19
  96. package/src/Http/ServerResponse.ts +3 -3
  97. package/src/Http/UrlParams.ts +6 -6
  98. package/src/KeyValueStore.ts +10 -10
  99. package/src/Transferable.ts +30 -32
  100. package/src/Worker.ts +10 -10
  101. package/src/WorkerRunner.ts +55 -18
  102. package/src/internal/http/body.ts +2 -2
  103. package/src/internal/http/client.ts +8 -7
  104. package/src/internal/http/clientRequest.ts +7 -8
  105. package/src/internal/http/clientResponse.ts +8 -6
  106. package/src/internal/http/multipart.ts +11 -10
  107. package/src/internal/http/router.ts +8 -6
  108. package/src/internal/http/serverRequest.ts +13 -11
  109. package/src/internal/http/serverResponse.ts +3 -3
  110. package/src/internal/keyValueStore.ts +7 -7
  111. package/src/internal/workerRunner.ts +7 -3
@@ -207,18 +207,18 @@ const baseUrl = (): string | undefined => {
207
207
  * @since 1.0.0
208
208
  * @category schema
209
209
  */
210
- export const schemaJson = <I, A>(schema: Schema.Schema<I, A>): {
210
+ export const schemaJson = <R, I, A>(schema: Schema.Schema<R, I, A>): {
211
211
  (
212
212
  field: string
213
- ): (self: UrlParams) => Effect.Effect<never, ParseResult.ParseError, A>
213
+ ): (self: UrlParams) => Effect.Effect<R, ParseResult.ParseError, A>
214
214
  (
215
215
  self: UrlParams,
216
216
  field: string
217
- ): Effect.Effect<never, ParseResult.ParseError, A>
217
+ ): Effect.Effect<R, ParseResult.ParseError, A>
218
218
  } => {
219
- const parse = Schema.parse(Schema.parseJson(schema))
219
+ const parse = Schema.decodeUnknown(Schema.parseJson(schema))
220
220
  return dual<
221
- (field: string) => (self: UrlParams) => Effect.Effect<never, ParseResult.ParseError, A>,
222
- (self: UrlParams, field: string) => Effect.Effect<never, ParseResult.ParseError, A>
221
+ (field: string) => (self: UrlParams) => Effect.Effect<R, ParseResult.ParseError, A>,
222
+ (self: UrlParams, field: string) => Effect.Effect<R, ParseResult.ParseError, A>
223
223
  >(2, (self, field) => parse(Option.getOrElse(getLast(self, field), () => "")))
224
224
  }
@@ -76,7 +76,7 @@ export interface KeyValueStore {
76
76
  /**
77
77
  * Create a SchemaStore for the specified schema.
78
78
  */
79
- readonly forSchema: <I, A>(schema: Schema.Schema<I, A>) => SchemaStore<A>
79
+ readonly forSchema: <R, I, A>(schema: Schema.Schema<R, I, A>) => SchemaStore<R, A>
80
80
  }
81
81
 
82
82
  /**
@@ -86,7 +86,7 @@ export declare namespace KeyValueStore {
86
86
  /**
87
87
  * @since 1.0.0
88
88
  */
89
- export type AnyStore = KeyValueStore | SchemaStore<any>
89
+ export type AnyStore = KeyValueStore | SchemaStore<any, any>
90
90
  }
91
91
 
92
92
  /**
@@ -143,14 +143,14 @@ export type SchemaStoreTypeId = typeof SchemaStoreTypeId
143
143
  * @since 1.0.0
144
144
  * @category models
145
145
  */
146
- export interface SchemaStore<A> {
146
+ export interface SchemaStore<R, A> {
147
147
  readonly [SchemaStoreTypeId]: SchemaStoreTypeId
148
148
  /**
149
149
  * Returns the value of the specified key if it exists.
150
150
  */
151
151
  readonly get: (
152
152
  key: string
153
- ) => Effect.Effect<never, PlatformError.PlatformError | ParseResult.ParseError, Option.Option<A>>
153
+ ) => Effect.Effect<R, PlatformError.PlatformError | ParseResult.ParseError, Option.Option<A>>
154
154
 
155
155
  /**
156
156
  * Sets the value of the specified key.
@@ -158,7 +158,7 @@ export interface SchemaStore<A> {
158
158
  readonly set: (
159
159
  key: string,
160
160
  value: A
161
- ) => Effect.Effect<never, PlatformError.PlatformError | ParseResult.ParseError, void>
161
+ ) => Effect.Effect<R, PlatformError.PlatformError | ParseResult.ParseError, void>
162
162
 
163
163
  /**
164
164
  * Removes the specified key.
@@ -181,7 +181,7 @@ export interface SchemaStore<A> {
181
181
  readonly modify: (
182
182
  key: string,
183
183
  f: (value: A) => A
184
- ) => Effect.Effect<never, PlatformError.PlatformError | ParseResult.ParseError, Option.Option<A>>
184
+ ) => Effect.Effect<R, PlatformError.PlatformError | ParseResult.ParseError, Option.Option<A>>
185
185
 
186
186
  /**
187
187
  * Returns true if the KeyValueStore contains the specified key.
@@ -198,10 +198,10 @@ export interface SchemaStore<A> {
198
198
  * @since 1.0.0
199
199
  * @category layers
200
200
  */
201
- export const layerSchema: <I, A>(
202
- schema: Schema.Schema<I, A>,
201
+ export const layerSchema: <R, I, A>(
202
+ schema: Schema.Schema<R, I, A>,
203
203
  tagIdentifier?: unknown
204
204
  ) => {
205
- readonly tag: Context.Tag<SchemaStore<A>, SchemaStore<A>>
206
- readonly layer: Layer.Layer<KeyValueStore, never, SchemaStore<A>>
205
+ readonly tag: Context.Tag<SchemaStore<R, A>, SchemaStore<R, A>>
206
+ readonly layer: Layer.Layer<KeyValueStore, never, SchemaStore<R, A>>
207
207
  } = internal.layerSchema
@@ -2,10 +2,9 @@
2
2
  * @since 1.0.0
3
3
  */
4
4
 
5
- import * as AST from "@effect/schema/AST"
6
5
  import * as ParseResult from "@effect/schema/ParseResult"
7
6
  import * as Schema from "@effect/schema/Schema"
8
- import { dual } from "effect/Function"
7
+ import { dual, identity } from "effect/Function"
9
8
 
10
9
  /**
11
10
  * @since 1.0.0
@@ -43,18 +42,20 @@ export const get = (u: unknown): ReadonlyArray<globalThis.Transferable> => {
43
42
  * @category schema
44
43
  */
45
44
  export const schema: {
46
- <A>(f: (_: A) => ReadonlyArray<globalThis.Transferable>): <I>(self: Schema.Schema<I, A>) => Schema.Schema<I, A>
47
- <I, A>(self: Schema.Schema<I, A>, f: (_: A) => ReadonlyArray<globalThis.Transferable>): Schema.Schema<I, A>
45
+ <A>(
46
+ f: (_: A) => ReadonlyArray<globalThis.Transferable>
47
+ ): <R, I>(self: Schema.Schema<R, I, A>) => Schema.Schema<R, I, A>
48
+ <R, I, A>(self: Schema.Schema<R, I, A>, f: (_: A) => ReadonlyArray<globalThis.Transferable>): Schema.Schema<R, I, A>
48
49
  } = dual<
49
50
  <A>(
50
51
  f: (_: A) => ReadonlyArray<globalThis.Transferable>
51
- ) => <I>(self: Schema.Schema<I, A>) => Schema.Schema<I, A>,
52
- <I, A>(
53
- self: Schema.Schema<I, A>,
52
+ ) => <R, I>(self: Schema.Schema<R, I, A>) => Schema.Schema<R, I, A>,
53
+ <R, I, A>(
54
+ self: Schema.Schema<R, I, A>,
54
55
  f: (_: A) => ReadonlyArray<globalThis.Transferable>
55
- ) => Schema.Schema<I, A>
56
- >(2, <I, A>(
57
- self: Schema.Schema<I, A>,
56
+ ) => Schema.Schema<R, I, A>
57
+ >(2, <R, I, A>(
58
+ self: Schema.Schema<R, I, A>,
58
59
  f: (_: A) => ReadonlyArray<globalThis.Transferable>
59
60
  ) =>
60
61
  Schema.transform(
@@ -67,35 +68,32 @@ export const schema: {
67
68
  return f(this as any)
68
69
  }
69
70
  }) as A,
70
- (output) => output as A
71
+ identity
71
72
  ))
72
73
 
74
+ const schemaParse =
75
+ <R, A>(parse: ParseResult.DecodeUnknown<R, A>): ParseResult.DeclarationDecodeUnknown<R, A> => (u, options, ast) => {
76
+ if (!isTransferable(u)) {
77
+ return ParseResult.fail(ParseResult.type(ast, u))
78
+ }
79
+ const proto = {
80
+ __proto__: Object.getPrototypeOf(u),
81
+ [symbol]: u[symbol]
82
+ }
83
+ return ParseResult.map(parse(u, options), (a): A => Object.setPrototypeOf(a, proto))
84
+ }
85
+
73
86
  /**
74
87
  * @since 1.0.0
75
88
  * @category schema
76
89
  */
77
- export const schemaFromSelf = <I, A>(
78
- item: Schema.Schema<I, A>
79
- ): Schema.Schema<I, A> => {
90
+ export const schemaFromSelf = <R, I, A>(
91
+ item: Schema.Schema<R, I, A>
92
+ ): Schema.Schema<R, I, A> => {
80
93
  return Schema.declare(
81
94
  [item],
82
- item,
83
- (isDecoding, item) => {
84
- const parse = isDecoding ? Schema.parse(item) : Schema.encode(item)
85
- return (u, options, ast) => {
86
- if (!isTransferable(u)) {
87
- return ParseResult.fail(ParseResult.type(ast, u))
88
- }
89
- const proto = {
90
- __proto__: Object.getPrototypeOf(u),
91
- [symbol]: u[symbol]
92
- }
93
- return ParseResult.map(
94
- parse(u, options),
95
- (a) => Object.setPrototypeOf(a, proto)
96
- )
97
- }
98
- },
99
- { [AST.IdentifierAnnotationId]: "Transferable" }
95
+ (item) => schemaParse(ParseResult.decodeUnknown(item)),
96
+ (item) => schemaParse(ParseResult.encodeUnknown(item)),
97
+ { identifier: "Transferable" }
100
98
  )
101
99
  }
package/src/Worker.ts CHANGED
@@ -233,13 +233,13 @@ export interface SerializedWorker<I extends Schema.TaggedRequest.Any> {
233
233
  readonly id: number
234
234
  readonly execute: <Req extends I>(
235
235
  message: Req
236
- ) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
237
- ? Stream.Stream<never, E | WorkerError | ParseResult.ParseError, A>
236
+ ) => Req extends Serializable.WithResult<infer R, infer _IE, infer E, infer _IA, infer A>
237
+ ? Stream.Stream<R, E | WorkerError | ParseResult.ParseError, A>
238
238
  : never
239
239
  readonly executeEffect: <Req extends I>(
240
240
  message: Req
241
- ) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
242
- ? Effect.Effect<never, E | WorkerError | ParseResult.ParseError, A>
241
+ ) => Req extends Serializable.WithResult<infer R, infer _IE, infer E, infer _IA, infer A>
242
+ ? Effect.Effect<R, E | WorkerError | ParseResult.ParseError, A>
243
243
  : never
244
244
  }
245
245
 
@@ -279,18 +279,18 @@ export interface SerializedWorkerPool<I extends Schema.TaggedRequest.Any> {
279
279
  readonly backing: Pool.Pool<WorkerError, SerializedWorker<I>>
280
280
  readonly broadcast: <Req extends I>(
281
281
  message: Req
282
- ) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer _A>
283
- ? Effect.Effect<never, E | WorkerError | ParseResult.ParseError, void>
282
+ ) => Req extends Serializable.WithResult<infer R, infer _IE, infer E, infer _IA, infer _A>
283
+ ? Effect.Effect<R, E | WorkerError | ParseResult.ParseError, void>
284
284
  : never
285
285
  readonly execute: <Req extends I>(
286
286
  message: Req
287
- ) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
288
- ? Stream.Stream<never, E | WorkerError | ParseResult.ParseError, A>
287
+ ) => Req extends Serializable.WithResult<infer R, infer _IE, infer E, infer _IA, infer A>
288
+ ? Stream.Stream<R, E | WorkerError | ParseResult.ParseError, A>
289
289
  : never
290
290
  readonly executeEffect: <Req extends I>(
291
291
  message: Req
292
- ) => Req extends Serializable.WithResult<infer _IE, infer E, infer _IA, infer A>
293
- ? Effect.Effect<never, E | WorkerError | ParseResult.ParseError, A>
292
+ ) => Req extends Serializable.WithResult<infer R, infer _IE, infer E, infer _IA, infer A>
293
+ ? Effect.Effect<R, E | WorkerError | ParseResult.ParseError, A>
294
294
  : never
295
295
  }
296
296
 
@@ -18,7 +18,10 @@ import type { WorkerError } from "./WorkerError.js"
18
18
  */
19
19
  export interface BackingRunner<I, O> {
20
20
  readonly queue: Queue.Dequeue<I>
21
- readonly send: (message: O, transfers?: ReadonlyArray<unknown>) => Effect.Effect<never, never, void>
21
+ readonly send: (
22
+ message: O,
23
+ transfers?: ReadonlyArray<unknown>
24
+ ) => Effect.Effect<never, never, void>
22
25
  }
23
26
 
24
27
  /**
@@ -72,9 +75,17 @@ export declare namespace Runner {
72
75
  * @category models
73
76
  */
74
77
  export interface Options<I, E, O> {
75
- readonly decode?: (message: unknown) => Effect.Effect<never, WorkerError, I>
76
- readonly encodeOutput?: (request: I, message: O) => Effect.Effect<never, WorkerError, unknown>
77
- readonly encodeError?: (request: I, error: E) => Effect.Effect<never, WorkerError, unknown>
78
+ readonly decode?: (
79
+ message: unknown
80
+ ) => Effect.Effect<never, WorkerError, I>
81
+ readonly encodeOutput?: (
82
+ request: I,
83
+ message: O
84
+ ) => Effect.Effect<never, WorkerError, unknown>
85
+ readonly encodeError?: (
86
+ request: I,
87
+ error: E
88
+ ) => Effect.Effect<never, WorkerError, unknown>
78
89
  readonly transfers?: (message: O | E) => ReadonlyArray<unknown>
79
90
  }
80
91
  }
@@ -106,8 +117,19 @@ export declare namespace SerializedRunner {
106
117
  * @since 1.0.0
107
118
  */
108
119
  export type Handlers<A extends Schema.TaggedRequest.Any> = {
109
- readonly [K in A["_tag"]]: Extract<A, { readonly _tag: K }> extends
110
- Serializable.SerializableWithResult<infer _IS, infer S, infer _IE, infer E, infer _IO, infer O> ? (
120
+ readonly [K in A["_tag"]]: Extract<
121
+ A,
122
+ { readonly _tag: K }
123
+ > extends Serializable.SerializableWithResult<
124
+ infer _RS,
125
+ infer _IS,
126
+ infer S,
127
+ infer _RR,
128
+ infer _IE,
129
+ infer E,
130
+ infer _IO,
131
+ infer O
132
+ > ? (
111
133
  _: S
112
134
  ) =>
113
135
  | Stream.Stream<any, E, O>
@@ -120,10 +142,17 @@ export declare namespace SerializedRunner {
120
142
  /**
121
143
  * @since 1.0.0
122
144
  */
123
- export type HandlersContext<Handlers extends Record<string, (...args: ReadonlyArray<any>) => any>> =
145
+ export type HandlersContext<
146
+ Handlers extends Record<string, (...args: ReadonlyArray<any>) => any>
147
+ > =
124
148
  | Exclude<
125
149
  {
126
- [K in keyof Handlers]: ReturnType<Handlers[K]> extends Stream.Stream<infer R, infer _E, infer _A> ? R : never
150
+ [K in keyof Handlers]: ReturnType<Handlers[K]> extends Stream.Stream<
151
+ infer R,
152
+ infer _E,
153
+ infer _A
154
+ > ? R
155
+ : never
127
156
  }[keyof Handlers],
128
157
  InitialContext<Handlers>
129
158
  >
@@ -132,16 +161,22 @@ export declare namespace SerializedRunner {
132
161
  /**
133
162
  * @since 1.0.0
134
163
  */
135
- type InitialContext<Handlers extends Record<string, (...args: ReadonlyArray<any>) => any>> =
136
- Handlers["InitialMessage"] extends (...args: ReadonlyArray<any>) => Layer.Layer<infer _R, infer _E, infer A> ? A
137
- : never
164
+ type InitialContext<
165
+ Handlers extends Record<string, (...args: ReadonlyArray<any>) => any>
166
+ > = Handlers["InitialMessage"] extends (
167
+ ...args: ReadonlyArray<any>
168
+ ) => Layer.Layer<infer _R, infer _E, infer A> ? A
169
+ : never
138
170
 
139
171
  /**
140
172
  * @since 1.0.0
141
173
  */
142
- type InitialEnv<Handlers extends Record<string, (...args: ReadonlyArray<any>) => any>> =
143
- Handlers["InitialMessage"] extends (...args: ReadonlyArray<any>) => Layer.Layer<infer R, infer _E, infer _A> ? R
144
- : never
174
+ type InitialEnv<
175
+ Handlers extends Record<string, (...args: ReadonlyArray<any>) => any>
176
+ > = Handlers["InitialMessage"] extends (
177
+ ...args: ReadonlyArray<any>
178
+ ) => Layer.Layer<infer R, infer _E, infer _A> ? R
179
+ : never
145
180
  }
146
181
 
147
182
  /**
@@ -149,13 +184,14 @@ export declare namespace SerializedRunner {
149
184
  * @category constructors
150
185
  */
151
186
  export const makeSerialized: <
187
+ R,
152
188
  I,
153
189
  A extends Schema.TaggedRequest.Any,
154
190
  const Handlers extends SerializedRunner.Handlers<A>
155
191
  >(
156
- schema: Schema.Schema<I, A>,
192
+ schema: Schema.Schema<R, I, A>,
157
193
  handlers: Handlers
158
- ) => Effect.Effect<PlatformRunner | Scope.Scope | SerializedRunner.HandlersContext<Handlers>, WorkerError, void> =
194
+ ) => Effect.Effect<PlatformRunner | Scope.Scope | R | SerializedRunner.HandlersContext<Handlers>, WorkerError, void> =
159
195
  internal.makeSerialized
160
196
 
161
197
  /**
@@ -163,11 +199,12 @@ export const makeSerialized: <
163
199
  * @category layers
164
200
  */
165
201
  export const layerSerialized: <
202
+ R,
166
203
  I,
167
204
  A extends Schema.TaggedRequest.Any,
168
205
  const Handlers extends SerializedRunner.Handlers<A>
169
206
  >(
170
- schema: Schema.Schema<I, A>,
207
+ schema: Schema.Schema<R, I, A>,
171
208
  handlers: Handlers
172
- ) => Layer.Layer<PlatformRunner | SerializedRunner.HandlersContext<Handlers>, WorkerError, never> =
209
+ ) => Layer.Layer<PlatformRunner | R | SerializedRunner.HandlersContext<Handlers>, WorkerError, never> =
173
210
  internal.layerSerialized
@@ -90,9 +90,9 @@ export const urlParams = (urlParams: UrlParams.UrlParams): Body.Uint8Array =>
90
90
  text(UrlParams.toString(urlParams), "application/x-www-form-urlencoded")
91
91
 
92
92
  /** @internal */
93
- export const jsonSchema = <I, A>(schema: Schema.Schema<I, A>) => {
93
+ export const jsonSchema = <R, I, A>(schema: Schema.Schema<R, I, A>) => {
94
94
  const encode = Schema.encode(schema)
95
- return (body: A): Effect.Effect<never, Body.BodyError, Body.Uint8Array> =>
95
+ return (body: A): Effect.Effect<R, Body.BodyError, Body.Uint8Array> =>
96
96
  Effect.flatMap(
97
97
  Effect.mapError(encode(body), (error) => BodyError({ _tag: "SchemaError", error })),
98
98
  json
@@ -103,8 +103,9 @@ export const fetch = (options?: RequestInit): Client.Client.Default =>
103
103
  method: request.method,
104
104
  headers,
105
105
  body,
106
+ duplex: request.body._tag === "Stream" ? "half" : undefined,
106
107
  signal
107
- }),
108
+ } as any),
108
109
  catch: (_) =>
109
110
  internalError.requestError({
110
111
  request,
@@ -527,23 +528,23 @@ export const retry: {
527
528
 
528
529
  /** @internal */
529
530
  export const schemaFunction = dual<
530
- <SI, SA>(
531
- schema: Schema.Schema<SI, SA>
531
+ <SR, SI, SA>(
532
+ schema: Schema.Schema<SR, SI, SA>
532
533
  ) => <R, E, A>(
533
534
  self: Client.Client<R, E, A>
534
535
  ) => (
535
536
  request: ClientRequest.ClientRequest
536
537
  ) => (
537
538
  a: SA
538
- ) => Effect.Effect<R, E | ParseResult.ParseError | Error.RequestError, A>,
539
- <R, E, A, SI, SA>(
539
+ ) => Effect.Effect<R | SR, E | ParseResult.ParseError | Error.RequestError, A>,
540
+ <R, E, A, SR, SI, SA>(
540
541
  self: Client.Client<R, E, A>,
541
- schema: Schema.Schema<SI, SA>
542
+ schema: Schema.Schema<SR, SI, SA>
542
543
  ) => (
543
544
  request: ClientRequest.ClientRequest
544
545
  ) => (
545
546
  a: SA
546
- ) => Effect.Effect<R, E | ParseResult.ParseError | Error.RequestError, A>
547
+ ) => Effect.Effect<R | SR, E | ParseResult.ParseError | Error.RequestError, A>
547
548
  >(2, (self, schema) => {
548
549
  const encode = Schema.encode(schema)
549
550
  return (request) => (a) =>
@@ -6,7 +6,6 @@ import type * as Stream from "effect/Stream"
6
6
  import type * as PlatformError from "../../Error.js"
7
7
  import type * as FileSystem from "../../FileSystem.js"
8
8
  import type * as Body from "../../Http/Body.js"
9
- import type * as Error from "../../Http/ClientError.js"
10
9
  import type * as ClientRequest from "../../Http/ClientRequest.js"
11
10
  import * as Headers from "../../Http/Headers.js"
12
11
  import type { Method } from "../../Http/Method.js"
@@ -363,16 +362,16 @@ export const fileWebBody = dual<
363
362
  >(2, (self, file) => setBody(self, internalBody.fileWeb(file)))
364
363
 
365
364
  /** @internal */
366
- export const schemaBody = <I, A>(schema: Schema.Schema<I, A>): {
367
- (body: A): (self: ClientRequest.ClientRequest) => Effect.Effect<never, Body.BodyError, ClientRequest.ClientRequest>
368
- (self: ClientRequest.ClientRequest, body: A): Effect.Effect<never, Body.BodyError, ClientRequest.ClientRequest>
365
+ export const schemaBody = <R, I, A>(schema: Schema.Schema<R, I, A>): {
366
+ (body: A): (self: ClientRequest.ClientRequest) => Effect.Effect<R, Body.BodyError, ClientRequest.ClientRequest>
367
+ (self: ClientRequest.ClientRequest, body: A): Effect.Effect<R, Body.BodyError, ClientRequest.ClientRequest>
369
368
  } => {
370
369
  const encode = internalBody.jsonSchema(schema)
371
370
  return dual<
372
371
  (
373
372
  body: A
374
- ) => (self: ClientRequest.ClientRequest) => Effect.Effect<never, Body.BodyError, ClientRequest.ClientRequest>,
375
- (self: ClientRequest.ClientRequest, body: A) => Effect.Effect<never, Body.BodyError, ClientRequest.ClientRequest>
373
+ ) => (self: ClientRequest.ClientRequest) => Effect.Effect<R, Body.BodyError, ClientRequest.ClientRequest>,
374
+ (self: ClientRequest.ClientRequest, body: A) => Effect.Effect<R, Body.BodyError, ClientRequest.ClientRequest>
376
375
  >(2, (self, body) => Effect.map(encode(body), (body) => setBody(self, body)))
377
376
  }
378
377
 
@@ -398,7 +397,7 @@ export const formDataBody = dual<
398
397
  /** @internal */
399
398
  export const streamBody = dual<
400
399
  (
401
- body: Stream.Stream<never, Error.RequestError, Uint8Array>,
400
+ body: Stream.Stream<never, unknown, Uint8Array>,
402
401
  options?: {
403
402
  readonly contentType?: string
404
403
  readonly contentLength?: number
@@ -406,7 +405,7 @@ export const streamBody = dual<
406
405
  ) => (self: ClientRequest.ClientRequest) => ClientRequest.ClientRequest,
407
406
  (
408
407
  self: ClientRequest.ClientRequest,
409
- body: Stream.Stream<never, Error.RequestError, Uint8Array>,
408
+ body: Stream.Stream<never, unknown, Uint8Array>,
410
409
  options?: {
411
410
  readonly contentType?: string
412
411
  readonly contentLength?: number
@@ -133,15 +133,16 @@ class ClientResponseImpl implements ClientResponse.ClientResponse {
133
133
 
134
134
  /** @internal */
135
135
  export const schemaJson = <
136
+ R,
136
137
  I extends {
137
138
  readonly status?: number
138
139
  readonly headers?: Readonly<Record<string, string>>
139
140
  readonly body?: unknown
140
141
  },
141
142
  A
142
- >(schema: Schema.Schema<I, A>) => {
143
- const parse = Schema.parse(schema)
144
- return (self: ClientResponse.ClientResponse): Effect.Effect<never, Error.ResponseError | ParseResult.ParseError, A> =>
143
+ >(schema: Schema.Schema<R, I, A>) => {
144
+ const parse = Schema.decodeUnknown(schema)
145
+ return (self: ClientResponse.ClientResponse): Effect.Effect<R, Error.ResponseError | ParseResult.ParseError, A> =>
145
146
  Effect.flatMap(
146
147
  self.json,
147
148
  (body) =>
@@ -155,14 +156,15 @@ export const schemaJson = <
155
156
 
156
157
  /** @internal */
157
158
  export const schemaNoBody = <
159
+ R,
158
160
  I extends {
159
161
  readonly status?: number
160
162
  readonly headers?: Readonly<Record<string, string>>
161
163
  },
162
164
  A
163
- >(schema: Schema.Schema<I, A>) => {
164
- const parse = Schema.parse(schema)
165
- return (self: ClientResponse.ClientResponse): Effect.Effect<never, ParseResult.ParseError, A> =>
165
+ >(schema: Schema.Schema<R, I, A>) => {
166
+ const parse = Schema.decodeUnknown(schema)
167
+ return (self: ClientResponse.ClientResponse): Effect.Effect<R, ParseResult.ParseError, A> =>
166
168
  parse({
167
169
  status: self.status,
168
170
  headers: self.headers
@@ -89,7 +89,7 @@ export const withFieldMimeTypes = dual<
89
89
  <R, E, A>(effect: Effect.Effect<R, E, A>, mimeTypes: ReadonlyArray<string>) => Effect.Effect<R, E, A>
90
90
  >(2, (effect, mimeTypes) => Effect.locally(effect, fieldMimeTypes, Chunk.fromIterable(mimeTypes)))
91
91
 
92
- const fileSchema: Schema.Schema<Multipart.PersistedFile, Multipart.PersistedFile> = Schema.struct({
92
+ const fileSchema: Schema.Schema<never, Multipart.PersistedFile, Multipart.PersistedFile> = Schema.struct({
93
93
  [TypeId]: Schema.uniqueSymbol(TypeId),
94
94
  _tag: Schema.literal("PersistedFile"),
95
95
  key: Schema.string,
@@ -100,27 +100,28 @@ const fileSchema: Schema.Schema<Multipart.PersistedFile, Multipart.PersistedFile
100
100
 
101
101
  /** @internal */
102
102
  export const filesSchema: Schema.Schema<
103
+ never,
103
104
  ReadonlyArray<Multipart.PersistedFile>,
104
105
  ReadonlyArray<Multipart.PersistedFile>
105
106
  > = Schema.array(fileSchema)
106
107
 
107
108
  /** @internal */
108
- export const schemaPersisted = <I extends Multipart.Persisted, A>(
109
- schema: Schema.Schema<I, A>
109
+ export const schemaPersisted = <R, I extends Multipart.Persisted, A>(
110
+ schema: Schema.Schema<R, I, A>
110
111
  ) => {
111
- const parse = Schema.parse(schema)
112
+ const parse = Schema.decodeUnknown(schema)
112
113
  return (persisted: Multipart.Persisted) => parse(persisted)
113
114
  }
114
115
 
115
116
  /** @internal */
116
- export const schemaJson = <I, A>(schema: Schema.Schema<I, A>): {
117
+ export const schemaJson = <R, I, A>(schema: Schema.Schema<R, I, A>): {
117
118
  (
118
119
  field: string
119
- ): (persisted: Multipart.Persisted) => Effect.Effect<never, ParseResult.ParseError, A>
120
+ ): (persisted: Multipart.Persisted) => Effect.Effect<R, ParseResult.ParseError, A>
120
121
  (
121
122
  persisted: Multipart.Persisted,
122
123
  field: string
123
- ): Effect.Effect<never, ParseResult.ParseError, A>
124
+ ): Effect.Effect<R, ParseResult.ParseError, A>
124
125
  } => {
125
126
  const fromJson = Schema.parseJson(schema)
126
127
  return dual<
@@ -128,14 +129,14 @@ export const schemaJson = <I, A>(schema: Schema.Schema<I, A>): {
128
129
  field: string
129
130
  ) => (
130
131
  persisted: Multipart.Persisted
131
- ) => Effect.Effect<never, ParseResult.ParseError, A>,
132
+ ) => Effect.Effect<R, ParseResult.ParseError, A>,
132
133
  (
133
134
  persisted: Multipart.Persisted,
134
135
  field: string
135
- ) => Effect.Effect<never, ParseResult.ParseError, A>
136
+ ) => Effect.Effect<R, ParseResult.ParseError, A>
136
137
  >(2, (persisted, field) =>
137
138
  Effect.map(
138
- Schema.parse(
139
+ Schema.decodeUnknown(
139
140
  Schema.struct({
140
141
  [field]: fromJson
141
142
  })
@@ -36,20 +36,22 @@ export const params = Effect.map(RouteContext, (_) => _.params)
36
36
  export const searchParams = Effect.map(RouteContext, (_) => _.searchParams)
37
37
 
38
38
  /** @internal */
39
- export const schemaParams = <I extends Readonly<Record<string, string>>, A>(schema: Schema.Schema<I, A>) => {
40
- const parse = Schema.parse(schema)
39
+ export const schemaParams = <R, I extends Readonly<Record<string, string>>, A>(schema: Schema.Schema<R, I, A>) => {
40
+ const parse = Schema.decodeUnknown(schema)
41
41
  return Effect.flatMap(RouteContext, (_) => parse({ ..._.searchParams, ..._.params }))
42
42
  }
43
43
 
44
44
  /** @internal */
45
- export const schemaPathParams = <I extends Readonly<Record<string, string>>, A>(schema: Schema.Schema<I, A>) => {
46
- const parse = Schema.parse(schema)
45
+ export const schemaPathParams = <R, I extends Readonly<Record<string, string>>, A>(schema: Schema.Schema<R, I, A>) => {
46
+ const parse = Schema.decodeUnknown(schema)
47
47
  return Effect.flatMap(RouteContext, (_) => parse(_.params))
48
48
  }
49
49
 
50
50
  /** @internal */
51
- export const schemaSearchParams = <I extends Readonly<Record<string, string>>, A>(schema: Schema.Schema<I, A>) => {
52
- const parse = Schema.parse(schema)
51
+ export const schemaSearchParams = <R, I extends Readonly<Record<string, string>>, A>(
52
+ schema: Schema.Schema<R, I, A>
53
+ ) => {
54
+ const parse = Schema.decodeUnknown(schema)
53
55
  return Effect.flatMap(RouteContext, (_) => parse(_.searchParams))
54
56
  }
55
57