@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.
- package/dist/cjs/Http/Body.js.map +1 -1
- package/dist/cjs/Http/ClientRequest.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/client.js +1 -0
- package/dist/cjs/internal/http/client.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 +11 -12
- 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/ClientRequest.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/client.js +1 -0
- package/dist/esm/internal/http/client.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 +8 -9
- 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 +8 -7
- package/src/internal/http/clientRequest.ts +7 -8
- 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/Http/UrlParams.ts
CHANGED
|
@@ -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<
|
|
213
|
+
): (self: UrlParams) => Effect.Effect<R, ParseResult.ParseError, A>
|
|
214
214
|
(
|
|
215
215
|
self: UrlParams,
|
|
216
216
|
field: string
|
|
217
|
-
): Effect.Effect<
|
|
217
|
+
): Effect.Effect<R, ParseResult.ParseError, A>
|
|
218
218
|
} => {
|
|
219
|
-
const parse = Schema.
|
|
219
|
+
const parse = Schema.decodeUnknown(Schema.parseJson(schema))
|
|
220
220
|
return dual<
|
|
221
|
-
(field: string) => (self: UrlParams) => Effect.Effect<
|
|
222
|
-
(self: UrlParams, field: string) => Effect.Effect<
|
|
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
|
}
|
package/src/KeyValueStore.ts
CHANGED
|
@@ -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<
|
|
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<
|
|
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<
|
|
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
|
package/src/Transferable.ts
CHANGED
|
@@ -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>(
|
|
47
|
-
|
|
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
|
-
|
|
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
|
-
(
|
|
84
|
-
|
|
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<
|
|
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<
|
|
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<
|
|
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<
|
|
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<
|
|
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
|
|
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
|
|
@@ -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<
|
|
368
|
-
(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>
|
|
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<
|
|
375
|
-
(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>
|
|
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,
|
|
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,
|
|
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.
|
|
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
|
|