@effect/platform 0.42.7 → 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 (105) hide show
  1. package/dist/cjs/Http/Body.js.map +1 -1
  2. package/dist/cjs/Http/ClientResponse.js.map +1 -1
  3. package/dist/cjs/Http/IncomingMessage.js +3 -3
  4. package/dist/cjs/Http/IncomingMessage.js.map +1 -1
  5. package/dist/cjs/Http/Multipart.js.map +1 -1
  6. package/dist/cjs/Http/Router.js.map +1 -1
  7. package/dist/cjs/Http/ServerRequest.js.map +1 -1
  8. package/dist/cjs/Http/UrlParams.js +1 -1
  9. package/dist/cjs/Http/UrlParams.js.map +1 -1
  10. package/dist/cjs/Transferable.js +13 -16
  11. package/dist/cjs/Transferable.js.map +1 -1
  12. package/dist/cjs/WorkerRunner.js.map +1 -1
  13. package/dist/cjs/internal/http/body.js.map +1 -1
  14. package/dist/cjs/internal/http/clientRequest.js.map +1 -1
  15. package/dist/cjs/internal/http/clientResponse.js +2 -2
  16. package/dist/cjs/internal/http/clientResponse.js.map +1 -1
  17. package/dist/cjs/internal/http/multipart.js +2 -2
  18. package/dist/cjs/internal/http/multipart.js.map +1 -1
  19. package/dist/cjs/internal/http/router.js +3 -3
  20. package/dist/cjs/internal/http/router.js.map +1 -1
  21. package/dist/cjs/internal/http/serverRequest.js.map +1 -1
  22. package/dist/cjs/internal/http/serverResponse.js.map +1 -1
  23. package/dist/cjs/internal/keyValueStore.js +1 -1
  24. package/dist/cjs/internal/keyValueStore.js.map +1 -1
  25. package/dist/cjs/internal/workerRunner.js +1 -1
  26. package/dist/cjs/internal/workerRunner.js.map +1 -1
  27. package/dist/dts/Http/Body.d.ts +1 -1
  28. package/dist/dts/Http/Body.d.ts.map +1 -1
  29. package/dist/dts/Http/Client.d.ts +2 -2
  30. package/dist/dts/Http/Client.d.ts.map +1 -1
  31. package/dist/dts/Http/ClientRequest.d.ts +3 -3
  32. package/dist/dts/Http/ClientRequest.d.ts.map +1 -1
  33. package/dist/dts/Http/ClientResponse.d.ts +6 -6
  34. package/dist/dts/Http/ClientResponse.d.ts.map +1 -1
  35. package/dist/dts/Http/IncomingMessage.d.ts +3 -3
  36. package/dist/dts/Http/IncomingMessage.d.ts.map +1 -1
  37. package/dist/dts/Http/Multipart.d.ts +5 -5
  38. package/dist/dts/Http/Multipart.d.ts.map +1 -1
  39. package/dist/dts/Http/Router.d.ts +3 -3
  40. package/dist/dts/Http/Router.d.ts.map +1 -1
  41. package/dist/dts/Http/ServerRequest.d.ts +6 -6
  42. package/dist/dts/Http/ServerRequest.d.ts.map +1 -1
  43. package/dist/dts/Http/ServerResponse.d.ts +1 -1
  44. package/dist/dts/Http/ServerResponse.d.ts.map +1 -1
  45. package/dist/dts/Http/UrlParams.d.ts +3 -3
  46. package/dist/dts/KeyValueStore.d.ts +9 -9
  47. package/dist/dts/KeyValueStore.d.ts.map +1 -1
  48. package/dist/dts/Transferable.d.ts +3 -3
  49. package/dist/dts/Transferable.d.ts.map +1 -1
  50. package/dist/dts/Worker.d.ts +5 -5
  51. package/dist/dts/Worker.d.ts.map +1 -1
  52. package/dist/dts/WorkerRunner.d.ts +3 -3
  53. package/dist/dts/WorkerRunner.d.ts.map +1 -1
  54. package/dist/dts/internal/http/router.d.ts.map +1 -1
  55. package/dist/esm/Http/Body.js.map +1 -1
  56. package/dist/esm/Http/ClientResponse.js.map +1 -1
  57. package/dist/esm/Http/IncomingMessage.js +3 -3
  58. package/dist/esm/Http/IncomingMessage.js.map +1 -1
  59. package/dist/esm/Http/Multipart.js.map +1 -1
  60. package/dist/esm/Http/Router.js.map +1 -1
  61. package/dist/esm/Http/ServerRequest.js.map +1 -1
  62. package/dist/esm/Http/UrlParams.js +1 -1
  63. package/dist/esm/Http/UrlParams.js.map +1 -1
  64. package/dist/esm/Transferable.js +14 -17
  65. package/dist/esm/Transferable.js.map +1 -1
  66. package/dist/esm/WorkerRunner.js.map +1 -1
  67. package/dist/esm/internal/http/body.js.map +1 -1
  68. package/dist/esm/internal/http/clientRequest.js.map +1 -1
  69. package/dist/esm/internal/http/clientResponse.js +2 -2
  70. package/dist/esm/internal/http/clientResponse.js.map +1 -1
  71. package/dist/esm/internal/http/multipart.js +2 -2
  72. package/dist/esm/internal/http/multipart.js.map +1 -1
  73. package/dist/esm/internal/http/router.js +3 -3
  74. package/dist/esm/internal/http/router.js.map +1 -1
  75. package/dist/esm/internal/http/serverRequest.js.map +1 -1
  76. package/dist/esm/internal/http/serverResponse.js.map +1 -1
  77. package/dist/esm/internal/keyValueStore.js +1 -1
  78. package/dist/esm/internal/keyValueStore.js.map +1 -1
  79. package/dist/esm/internal/workerRunner.js +1 -1
  80. package/dist/esm/internal/workerRunner.js.map +1 -1
  81. package/package.json +3 -3
  82. package/src/Http/Body.ts +3 -3
  83. package/src/Http/Client.ts +6 -6
  84. package/src/Http/ClientRequest.ts +4 -4
  85. package/src/Http/ClientResponse.ts +7 -6
  86. package/src/Http/IncomingMessage.ts +11 -9
  87. package/src/Http/Multipart.ts +8 -8
  88. package/src/Http/Router.ts +9 -9
  89. package/src/Http/ServerRequest.ts +19 -19
  90. package/src/Http/ServerResponse.ts +3 -3
  91. package/src/Http/UrlParams.ts +6 -6
  92. package/src/KeyValueStore.ts +10 -10
  93. package/src/Transferable.ts +30 -32
  94. package/src/Worker.ts +10 -10
  95. package/src/WorkerRunner.ts +55 -18
  96. package/src/internal/http/body.ts +2 -2
  97. package/src/internal/http/client.ts +6 -6
  98. package/src/internal/http/clientRequest.ts +5 -5
  99. package/src/internal/http/clientResponse.ts +8 -6
  100. package/src/internal/http/multipart.ts +11 -10
  101. package/src/internal/http/router.ts +8 -6
  102. package/src/internal/http/serverRequest.ts +13 -11
  103. package/src/internal/http/serverResponse.ts +3 -3
  104. package/src/internal/keyValueStore.ts +7 -7
  105. package/src/internal/workerRunner.ts +7 -3
@@ -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
@@ -528,23 +528,23 @@ export const retry: {
528
528
 
529
529
  /** @internal */
530
530
  export const schemaFunction = dual<
531
- <SI, SA>(
532
- schema: Schema.Schema<SI, SA>
531
+ <SR, SI, SA>(
532
+ schema: Schema.Schema<SR, SI, SA>
533
533
  ) => <R, E, A>(
534
534
  self: Client.Client<R, E, A>
535
535
  ) => (
536
536
  request: ClientRequest.ClientRequest
537
537
  ) => (
538
538
  a: SA
539
- ) => Effect.Effect<R, E | ParseResult.ParseError | Error.RequestError, A>,
540
- <R, E, A, SI, SA>(
539
+ ) => Effect.Effect<R | SR, E | ParseResult.ParseError | Error.RequestError, A>,
540
+ <R, E, A, SR, SI, SA>(
541
541
  self: Client.Client<R, E, A>,
542
- schema: Schema.Schema<SI, SA>
542
+ schema: Schema.Schema<SR, SI, SA>
543
543
  ) => (
544
544
  request: ClientRequest.ClientRequest
545
545
  ) => (
546
546
  a: SA
547
- ) => Effect.Effect<R, E | ParseResult.ParseError | Error.RequestError, A>
547
+ ) => Effect.Effect<R | SR, E | ParseResult.ParseError | Error.RequestError, A>
548
548
  >(2, (self, schema) => {
549
549
  const encode = Schema.encode(schema)
550
550
  return (request) => (a) =>
@@ -362,16 +362,16 @@ export const fileWebBody = dual<
362
362
  >(2, (self, file) => setBody(self, internalBody.fileWeb(file)))
363
363
 
364
364
  /** @internal */
365
- export const schemaBody = <I, A>(schema: Schema.Schema<I, A>): {
366
- (body: A): (self: ClientRequest.ClientRequest) => Effect.Effect<never, Body.BodyError, ClientRequest.ClientRequest>
367
- (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>
368
368
  } => {
369
369
  const encode = internalBody.jsonSchema(schema)
370
370
  return dual<
371
371
  (
372
372
  body: A
373
- ) => (self: ClientRequest.ClientRequest) => Effect.Effect<never, Body.BodyError, ClientRequest.ClientRequest>,
374
- (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>
375
375
  >(2, (self, body) => Effect.map(encode(body), (body) => setBody(self, body)))
376
376
  }
377
377
 
@@ -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
 
@@ -25,13 +25,13 @@ export const serverRequestTag = Context.Tag<ServerRequest.ServerRequest>(TypeId)
25
25
  export const multipartPersisted = Effect.flatMap(serverRequestTag, (request) => request.multipart)
26
26
 
27
27
  /** @internal */
28
- export const schemaHeaders = <I extends Readonly<Record<string, string>>, A>(schema: Schema.Schema<I, A>) => {
28
+ export const schemaHeaders = <R, I extends Readonly<Record<string, string>>, A>(schema: Schema.Schema<R, I, A>) => {
29
29
  const parse = IncomingMessage.schemaHeaders(schema)
30
30
  return Effect.flatMap(serverRequestTag, parse)
31
31
  }
32
32
 
33
33
  /** @internal */
34
- export const schemaBodyJson = <I, A>(schema: Schema.Schema<I, A>) => {
34
+ export const schemaBodyJson = <R, I, A>(schema: Schema.Schema<R, I, A>) => {
35
35
  const parse = IncomingMessage.schemaBodyJson(schema)
36
36
  return Effect.flatMap(serverRequestTag, parse)
37
37
  }
@@ -40,13 +40,13 @@ const isMultipart = (request: ServerRequest.ServerRequest) =>
40
40
  request.headers["content-type"]?.toLowerCase().includes("multipart/form-data")
41
41
 
42
42
  /** @internal */
43
- export const schemaBodyForm = <I extends Multipart.Persisted, A>(
44
- schema: Schema.Schema<I, A>
43
+ export const schemaBodyForm = <R, I extends Multipart.Persisted, A>(
44
+ schema: Schema.Schema<R, I, A>
45
45
  ) => {
46
46
  const parseMultipart = Multipart.schemaPersisted(schema)
47
- const parseUrlParams = IncomingMessage.schemaBodyUrlParams(schema as Schema.Schema<any, A>)
47
+ const parseUrlParams = IncomingMessage.schemaBodyUrlParams(schema as Schema.Schema<R, any, A>)
48
48
  return Effect.flatMap(serverRequestTag, (request): Effect.Effect<
49
- ServerRequest.ServerRequest | Scope.Scope | FileSystem.FileSystem | Path.Path,
49
+ R | ServerRequest.ServerRequest | Scope.Scope | FileSystem.FileSystem | Path.Path,
50
50
  Multipart.MultipartError | ParseResult.ParseError | Error.RequestError,
51
51
  A
52
52
  > => {
@@ -58,21 +58,23 @@ export const schemaBodyForm = <I extends Multipart.Persisted, A>(
58
58
  }
59
59
 
60
60
  /** @internal */
61
- export const schemaBodyUrlParams = <I extends Readonly<Record<string, string>>, A>(schema: Schema.Schema<I, A>) => {
61
+ export const schemaBodyUrlParams = <R, I extends Readonly<Record<string, string>>, A>(
62
+ schema: Schema.Schema<R, I, A>
63
+ ) => {
62
64
  const parse = IncomingMessage.schemaBodyUrlParams(schema)
63
65
  return Effect.flatMap(serverRequestTag, parse)
64
66
  }
65
67
 
66
68
  /** @internal */
67
- export const schemaBodyMultipart = <I extends Multipart.Persisted, A>(
68
- schema: Schema.Schema<I, A>
69
+ export const schemaBodyMultipart = <R, I extends Multipart.Persisted, A>(
70
+ schema: Schema.Schema<R, I, A>
69
71
  ) => {
70
72
  const parse = Multipart.schemaPersisted(schema)
71
73
  return Effect.flatMap(multipartPersisted, parse)
72
74
  }
73
75
 
74
76
  /** @internal */
75
- export const schemaBodyFormJson = <I, A>(schema: Schema.Schema<I, A>) => {
77
+ export const schemaBodyFormJson = <R, I, A>(schema: Schema.Schema<R, I, A>) => {
76
78
  const parseMultipart = Multipart.schemaJson(schema)
77
79
  const parseUrlParams = UrlParams.schemaJson(schema)
78
80
  return (field: string) =>
@@ -81,7 +83,7 @@ export const schemaBodyFormJson = <I, A>(schema: Schema.Schema<I, A>) => {
81
83
  (
82
84
  request
83
85
  ): Effect.Effect<
84
- FileSystem.FileSystem | Path.Path | Scope.Scope | ServerRequest.ServerRequest,
86
+ R | FileSystem.FileSystem | Path.Path | Scope.Scope | ServerRequest.ServerRequest,
85
87
  ParseResult.ParseError | Error.RequestError,
86
88
  A
87
89
  > => {
@@ -117,14 +117,14 @@ export const unsafeJson = (
117
117
  )
118
118
 
119
119
  /** @internal */
120
- export const schemaJson = <I, A>(
121
- schema: Schema.Schema<I, A>
120
+ export const schemaJson = <R, I, A>(
121
+ schema: Schema.Schema<R, I, A>
122
122
  ) => {
123
123
  const encode = internalBody.jsonSchema(schema)
124
124
  return (
125
125
  body: A,
126
126
  options?: ServerResponse.Options.WithContent
127
- ): Effect.Effect<never, Body.BodyError, ServerResponse.ServerResponse> =>
127
+ ): Effect.Effect<R, Body.BodyError, ServerResponse.ServerResponse> =>
128
128
  Effect.map(encode(body), (body) =>
129
129
  new ServerResponseImpl(
130
130
  options?.status ?? 200,
@@ -68,12 +68,12 @@ export const SchemaStoreTypeId: KeyValueStore.SchemaStoreTypeId = Symbol.for(
68
68
  ) as KeyValueStore.SchemaStoreTypeId
69
69
 
70
70
  /** @internal */
71
- const makeSchemaStore = <I, A>(
71
+ const makeSchemaStore = <R, I, A>(
72
72
  store: KeyValueStore.KeyValueStore,
73
- schema: Schema.Schema<I, A>
74
- ): KeyValueStore.SchemaStore<A> => {
73
+ schema: Schema.Schema<R, I, A>
74
+ ): KeyValueStore.SchemaStore<R, A> => {
75
75
  const jsonSchema = Schema.parseJson(schema)
76
- const parse = Schema.parse(jsonSchema)
76
+ const parse = Schema.decodeUnknown(jsonSchema)
77
77
  const encode = Schema.encode(jsonSchema)
78
78
 
79
79
  const get = (key: string) =>
@@ -166,11 +166,11 @@ export const layerFileSystem = (directory: string) =>
166
166
  )
167
167
 
168
168
  /** @internal */
169
- export const layerSchema = <I, A>(
170
- schema: Schema.Schema<I, A>,
169
+ export const layerSchema = <R, I, A>(
170
+ schema: Schema.Schema<R, I, A>,
171
171
  tagIdentifier?: unknown
172
172
  ) => {
173
- const tag = Context.Tag<KeyValueStore.SchemaStore<A>>(tagIdentifier)
173
+ const tag = Context.Tag<KeyValueStore.SchemaStore<R, A>>(tagIdentifier)
174
174
  const layer = Layer.effect(tag, Effect.map(keyValueStoreTag, (store) => store.forSchema(schema)))
175
175
  return { tag, layer } as const
176
176
  }
@@ -163,13 +163,15 @@ export const layer = <I, R, E, O>(
163
163
 
164
164
  /** @internal */
165
165
  export const makeSerialized = <
166
+ R,
166
167
  I,
167
168
  A extends Schema.TaggedRequest.Any,
168
169
  const Handlers extends WorkerRunner.SerializedRunner.Handlers<A>
169
170
  >(
170
- schema: Schema.Schema<I, A>,
171
+ schema: Schema.Schema<R, I, A>,
171
172
  handlers: Handlers
172
173
  ): Effect.Effect<
174
+ | R
173
175
  | WorkerRunner.PlatformRunner
174
176
  | Scope.Scope
175
177
  | WorkerRunner.SerializedRunner.HandlersContext<Handlers>,
@@ -179,7 +181,7 @@ export const makeSerialized = <
179
181
  Effect.gen(function*(_) {
180
182
  const scope = yield* _(Effect.scope)
181
183
  let context = Context.empty() as Context.Context<any>
182
- const parseRequest = Schema.parse(schema)
184
+ const parseRequest = Schema.decodeUnknown(schema) as (_: unknown) => Effect.Effect<never, never, A>
183
185
 
184
186
  return yield* _(make((request: A) => {
185
187
  const result = (handlers as any)[request._tag](request)
@@ -219,13 +221,15 @@ export const makeSerialized = <
219
221
 
220
222
  /** @internal */
221
223
  export const layerSerialized = <
224
+ R,
222
225
  I,
223
226
  A extends Schema.TaggedRequest.Any,
224
227
  const Handlers extends WorkerRunner.SerializedRunner.Handlers<A>
225
228
  >(
226
- schema: Schema.Schema<I, A>,
229
+ schema: Schema.Schema<R, I, A>,
227
230
  handlers: Handlers
228
231
  ): Layer.Layer<
232
+ | R
229
233
  | WorkerRunner.PlatformRunner
230
234
  | WorkerRunner.SerializedRunner.HandlersContext<Handlers>,
231
235
  WorkerError.WorkerError,