@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.
- package/dist/cjs/Http/Body.js.map +1 -1
- package/dist/cjs/Http/ClientResponse.js.map +1 -1
- package/dist/cjs/Http/IncomingMessage.js +3 -3
- package/dist/cjs/Http/IncomingMessage.js.map +1 -1
- package/dist/cjs/Http/Multipart.js.map +1 -1
- package/dist/cjs/Http/Router.js.map +1 -1
- package/dist/cjs/Http/ServerRequest.js.map +1 -1
- package/dist/cjs/Http/UrlParams.js +1 -1
- package/dist/cjs/Http/UrlParams.js.map +1 -1
- package/dist/cjs/Transferable.js +13 -16
- package/dist/cjs/Transferable.js.map +1 -1
- package/dist/cjs/WorkerRunner.js.map +1 -1
- package/dist/cjs/internal/http/body.js.map +1 -1
- package/dist/cjs/internal/http/clientRequest.js.map +1 -1
- package/dist/cjs/internal/http/clientResponse.js +2 -2
- package/dist/cjs/internal/http/clientResponse.js.map +1 -1
- package/dist/cjs/internal/http/multipart.js +2 -2
- package/dist/cjs/internal/http/multipart.js.map +1 -1
- package/dist/cjs/internal/http/router.js +3 -3
- package/dist/cjs/internal/http/router.js.map +1 -1
- package/dist/cjs/internal/http/serverRequest.js.map +1 -1
- package/dist/cjs/internal/http/serverResponse.js.map +1 -1
- package/dist/cjs/internal/keyValueStore.js +1 -1
- package/dist/cjs/internal/keyValueStore.js.map +1 -1
- package/dist/cjs/internal/workerRunner.js +1 -1
- package/dist/cjs/internal/workerRunner.js.map +1 -1
- package/dist/dts/Http/Body.d.ts +1 -1
- package/dist/dts/Http/Body.d.ts.map +1 -1
- package/dist/dts/Http/Client.d.ts +2 -2
- package/dist/dts/Http/Client.d.ts.map +1 -1
- package/dist/dts/Http/ClientRequest.d.ts +3 -3
- package/dist/dts/Http/ClientRequest.d.ts.map +1 -1
- package/dist/dts/Http/ClientResponse.d.ts +6 -6
- package/dist/dts/Http/ClientResponse.d.ts.map +1 -1
- package/dist/dts/Http/IncomingMessage.d.ts +3 -3
- package/dist/dts/Http/IncomingMessage.d.ts.map +1 -1
- package/dist/dts/Http/Multipart.d.ts +5 -5
- package/dist/dts/Http/Multipart.d.ts.map +1 -1
- package/dist/dts/Http/Router.d.ts +3 -3
- package/dist/dts/Http/Router.d.ts.map +1 -1
- package/dist/dts/Http/ServerRequest.d.ts +6 -6
- package/dist/dts/Http/ServerRequest.d.ts.map +1 -1
- package/dist/dts/Http/ServerResponse.d.ts +1 -1
- package/dist/dts/Http/ServerResponse.d.ts.map +1 -1
- package/dist/dts/Http/UrlParams.d.ts +3 -3
- package/dist/dts/KeyValueStore.d.ts +9 -9
- package/dist/dts/KeyValueStore.d.ts.map +1 -1
- package/dist/dts/Transferable.d.ts +3 -3
- package/dist/dts/Transferable.d.ts.map +1 -1
- package/dist/dts/Worker.d.ts +5 -5
- package/dist/dts/Worker.d.ts.map +1 -1
- package/dist/dts/WorkerRunner.d.ts +3 -3
- package/dist/dts/WorkerRunner.d.ts.map +1 -1
- package/dist/dts/internal/http/router.d.ts.map +1 -1
- package/dist/esm/Http/Body.js.map +1 -1
- package/dist/esm/Http/ClientResponse.js.map +1 -1
- package/dist/esm/Http/IncomingMessage.js +3 -3
- package/dist/esm/Http/IncomingMessage.js.map +1 -1
- package/dist/esm/Http/Multipart.js.map +1 -1
- package/dist/esm/Http/Router.js.map +1 -1
- package/dist/esm/Http/ServerRequest.js.map +1 -1
- package/dist/esm/Http/UrlParams.js +1 -1
- package/dist/esm/Http/UrlParams.js.map +1 -1
- package/dist/esm/Transferable.js +14 -17
- package/dist/esm/Transferable.js.map +1 -1
- package/dist/esm/WorkerRunner.js.map +1 -1
- package/dist/esm/internal/http/body.js.map +1 -1
- package/dist/esm/internal/http/clientRequest.js.map +1 -1
- package/dist/esm/internal/http/clientResponse.js +2 -2
- package/dist/esm/internal/http/clientResponse.js.map +1 -1
- package/dist/esm/internal/http/multipart.js +2 -2
- package/dist/esm/internal/http/multipart.js.map +1 -1
- package/dist/esm/internal/http/router.js +3 -3
- package/dist/esm/internal/http/router.js.map +1 -1
- package/dist/esm/internal/http/serverRequest.js.map +1 -1
- package/dist/esm/internal/http/serverResponse.js.map +1 -1
- package/dist/esm/internal/keyValueStore.js +1 -1
- package/dist/esm/internal/keyValueStore.js.map +1 -1
- package/dist/esm/internal/workerRunner.js +1 -1
- package/dist/esm/internal/workerRunner.js.map +1 -1
- package/package.json +3 -3
- package/src/Http/Body.ts +3 -3
- package/src/Http/Client.ts +6 -6
- package/src/Http/ClientRequest.ts +4 -4
- package/src/Http/ClientResponse.ts +7 -6
- package/src/Http/IncomingMessage.ts +11 -9
- package/src/Http/Multipart.ts +8 -8
- package/src/Http/Router.ts +9 -9
- package/src/Http/ServerRequest.ts +19 -19
- package/src/Http/ServerResponse.ts +3 -3
- package/src/Http/UrlParams.ts +6 -6
- package/src/KeyValueStore.ts +10 -10
- package/src/Transferable.ts +30 -32
- package/src/Worker.ts +10 -10
- package/src/WorkerRunner.ts +55 -18
- package/src/internal/http/body.ts +2 -2
- package/src/internal/http/client.ts +6 -6
- package/src/internal/http/clientRequest.ts +5 -5
- package/src/internal/http/clientResponse.ts +8 -6
- package/src/internal/http/multipart.ts +11 -10
- package/src/internal/http/router.ts +8 -6
- package/src/internal/http/serverRequest.ts +13 -11
- package/src/internal/http/serverResponse.ts +3 -3
- package/src/internal/keyValueStore.ts +7 -7
- package/src/internal/workerRunner.ts +7 -3
package/src/WorkerRunner.ts
CHANGED
|
@@ -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: (
|
|
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?: (
|
|
76
|
-
|
|
77
|
-
|
|
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<
|
|
110
|
-
|
|
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<
|
|
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<
|
|
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<
|
|
136
|
-
Handlers
|
|
137
|
-
|
|
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<
|
|
143
|
-
Handlers
|
|
144
|
-
|
|
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<
|
|
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<
|
|
367
|
-
(self: ClientRequest.ClientRequest, body: A): Effect.Effect<
|
|
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<
|
|
374
|
-
(self: ClientRequest.ClientRequest, body: A) => Effect.Effect<
|
|
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.
|
|
144
|
-
return (self: ClientResponse.ClientResponse): Effect.Effect<
|
|
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.
|
|
165
|
-
return (self: ClientResponse.ClientResponse): Effect.Effect<
|
|
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.
|
|
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<
|
|
120
|
+
): (persisted: Multipart.Persisted) => Effect.Effect<R, ParseResult.ParseError, A>
|
|
120
121
|
(
|
|
121
122
|
persisted: Multipart.Persisted,
|
|
122
123
|
field: string
|
|
123
|
-
): Effect.Effect<
|
|
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<
|
|
132
|
+
) => Effect.Effect<R, ParseResult.ParseError, A>,
|
|
132
133
|
(
|
|
133
134
|
persisted: Multipart.Persisted,
|
|
134
135
|
field: string
|
|
135
|
-
) => Effect.Effect<
|
|
136
|
+
) => Effect.Effect<R, ParseResult.ParseError, A>
|
|
136
137
|
>(2, (persisted, field) =>
|
|
137
138
|
Effect.map(
|
|
138
|
-
Schema.
|
|
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.
|
|
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.
|
|
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>(
|
|
52
|
-
|
|
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>(
|
|
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<
|
|
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.
|
|
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.
|
|
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,
|