@effect/platform 0.13.1 → 0.13.3
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/Http/Headers.d.ts +3 -3
- package/Http/Headers.d.ts.map +1 -1
- package/Http/Headers.js +16 -11
- package/Http/Headers.js.map +1 -1
- package/Http/IncomingMessage.d.ts.map +1 -1
- package/Http/IncomingMessage.js +1 -1
- package/Http/IncomingMessage.js.map +1 -1
- package/Http/Middleware.d.ts +0 -8
- package/Http/Middleware.d.ts.map +1 -1
- package/Http/Middleware.js +2 -8
- package/Http/Middleware.js.map +1 -1
- package/Http/Router.d.ts +90 -0
- package/Http/Router.d.ts.map +1 -1
- package/Http/Router.js +43 -1
- package/Http/Router.js.map +1 -1
- package/internal/http/client.js +1 -1
- package/internal/http/client.js.map +1 -1
- package/internal/http/middleware.js +9 -11
- package/internal/http/middleware.js.map +1 -1
- package/internal/http/router.d.ts +3 -1
- package/internal/http/router.d.ts.map +1 -1
- package/internal/http/router.js +38 -17
- package/internal/http/router.js.map +1 -1
- package/internal/http/serverResponse.js +15 -12
- package/internal/http/serverResponse.js.map +1 -1
- package/mjs/Http/Headers.mjs +16 -11
- package/mjs/Http/Headers.mjs.map +1 -1
- package/mjs/Http/IncomingMessage.mjs +1 -1
- package/mjs/Http/IncomingMessage.mjs.map +1 -1
- package/mjs/Http/Middleware.mjs +0 -5
- package/mjs/Http/Middleware.mjs.map +1 -1
- package/mjs/Http/Router.mjs +35 -0
- package/mjs/Http/Router.mjs.map +1 -1
- package/mjs/internal/http/client.mjs +1 -1
- package/mjs/internal/http/client.mjs.map +1 -1
- package/mjs/internal/http/middleware.mjs +9 -10
- package/mjs/internal/http/middleware.mjs.map +1 -1
- package/mjs/internal/http/router.mjs +30 -16
- package/mjs/internal/http/router.mjs.map +1 -1
- package/mjs/internal/http/serverResponse.mjs +15 -12
- package/mjs/internal/http/serverResponse.mjs.map +1 -1
- package/package.json +4 -4
- package/src/Http/Headers.ts +23 -17
- package/src/Http/IncomingMessage.ts +1 -2
- package/src/Http/Middleware.ts +0 -14
- package/src/Http/Router.ts +118 -0
- package/src/internal/http/client.ts +18 -21
- package/src/internal/http/middleware.ts +23 -31
- package/src/internal/http/router.ts +158 -24
- package/src/internal/http/serverResponse.ts +15 -13
|
@@ -63,15 +63,12 @@ class RouterImpl {
|
|
|
63
63
|
}
|
|
64
64
|
const toHttpApp = self => {
|
|
65
65
|
const router = FindMyWay();
|
|
66
|
-
Chunk.
|
|
67
|
-
|
|
68
|
-
fn.handler = Effect.updateService(app, ServerRequest.ServerRequest, request => sliceRequestUrl(request, path));
|
|
69
|
-
router.all(path, fn);
|
|
70
|
-
router.all(path + "/*", fn);
|
|
71
|
-
});
|
|
66
|
+
const mounts = Chunk.toReadonlyArray(self.mounts);
|
|
67
|
+
const mountsLen = mounts.length;
|
|
72
68
|
Chunk.forEach(self.routes, route => {
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
function fn() {
|
|
70
|
+
return route;
|
|
71
|
+
}
|
|
75
72
|
if (route.method === "*") {
|
|
76
73
|
router.all(route.path, fn);
|
|
77
74
|
} else {
|
|
@@ -79,21 +76,25 @@ const toHttpApp = self => {
|
|
|
79
76
|
}
|
|
80
77
|
});
|
|
81
78
|
return Effect.flatMap(ServerRequest.ServerRequest, request => {
|
|
79
|
+
if (mountsLen > 0) {
|
|
80
|
+
for (let i = 0; i < mountsLen; i++) {
|
|
81
|
+
const [path, app] = mounts[i];
|
|
82
|
+
if (request.url.startsWith(path)) {
|
|
83
|
+
return Effect.provideService(app, ServerRequest.ServerRequest, sliceRequestUrl(request, path));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
82
87
|
const result = router.find(request.method, request.url);
|
|
83
88
|
if (result === null) {
|
|
84
89
|
return Effect.fail(Error.RouteNotFound({
|
|
85
90
|
request
|
|
86
91
|
}));
|
|
87
92
|
}
|
|
88
|
-
const
|
|
89
|
-
if (
|
|
90
|
-
|
|
91
|
-
if (route.prefix._tag === "Some") {
|
|
92
|
-
request = sliceRequestUrl(request, route.prefix.value);
|
|
93
|
-
}
|
|
94
|
-
return Effect.mapInputContext(route.handler, context => Context.add(Context.add(context, ServerRequest.ServerRequest, request), RouteContext, new RouteContextImpl(result.params, result.searchParams)));
|
|
93
|
+
const route = result.handler();
|
|
94
|
+
if (route.prefix._tag === "Some") {
|
|
95
|
+
request = sliceRequestUrl(request, route.prefix.value);
|
|
95
96
|
}
|
|
96
|
-
return handler;
|
|
97
|
+
return Effect.mapInputContext(route.handler, context => Context.add(Context.add(context, ServerRequest.ServerRequest, request), RouteContext, new RouteContextImpl(result.params, result.searchParams)));
|
|
97
98
|
});
|
|
98
99
|
};
|
|
99
100
|
function sliceRequestUrl(request, prefix) {
|
|
@@ -152,4 +153,17 @@ export const del = /*#__PURE__*/route("DELETE");
|
|
|
152
153
|
export const head = /*#__PURE__*/route("HEAD");
|
|
153
154
|
/** @internal */
|
|
154
155
|
export const options = /*#__PURE__*/route("OPTIONS");
|
|
156
|
+
/** @internal */
|
|
157
|
+
export const transform = /*#__PURE__*/dual(2, (self, f) => new RouterImpl(Chunk.map(self.routes, route => new RouteImpl(route.method, route.path, f(route.handler), route.prefix)), Chunk.map(self.mounts, ([path, app]) => [path, f(app)])));
|
|
158
|
+
/** @internal */
|
|
159
|
+
export const catchAll = /*#__PURE__*/dual(2, (self, f) => transform(self, Effect.catchAll(f)));
|
|
160
|
+
/** @internal */
|
|
161
|
+
export const catchAllCause = /*#__PURE__*/dual(2, (self, f) => transform(self, Effect.catchAllCause(f)));
|
|
162
|
+
/** @internal */
|
|
163
|
+
export const catchTag = /*#__PURE__*/dual(3, (self, k, f) => transform(self, Effect.catchTag(k, f)));
|
|
164
|
+
/** @internal */
|
|
165
|
+
export const catchTags = /*#__PURE__*/dual(2, (self, cases) => transform(self, Effect.catchTags(cases)));
|
|
166
|
+
export const provideService = /*#__PURE__*/dual(3, (self, tag, service) => transform(self, Effect.provideService(tag, service)));
|
|
167
|
+
/* @internal */
|
|
168
|
+
export const provideServiceEffect = /*#__PURE__*/dual(3, (self, tag, effect) => transform(self, Effect.provideServiceEffect(tag, effect)));
|
|
155
169
|
//# sourceMappingURL=router.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.mjs","names":["Chunk","Context","Equal","dual","Hash","Option","pipeArguments","Effect","Error","ServerRequest","Schema","Channel","Sink","Stream","FindMyWay","TypeId","Symbol","for","RouteTypeId","RouteContextTypeId","RouteContext","Tag","params","map","_","searchParams","schemaParams","schema","parse","flatMap","RouterImpl","constructor","routes","mounts","_tag","EffectTypeId","undefined","StreamTypeId","SinkTypeId","ChannelTypeId","pipe","arguments","commit","httpApp","toHttpApp","symbol","that","random","self","router","
|
|
1
|
+
{"version":3,"file":"router.mjs","names":["Chunk","Context","Equal","dual","Hash","Option","pipeArguments","Effect","Error","ServerRequest","Schema","Channel","Sink","Stream","FindMyWay","TypeId","Symbol","for","RouteTypeId","RouteContextTypeId","RouteContext","Tag","params","map","_","searchParams","schemaParams","schema","parse","flatMap","RouterImpl","constructor","routes","mounts","_tag","EffectTypeId","undefined","StreamTypeId","SinkTypeId","ChannelTypeId","pipe","arguments","commit","httpApp","toHttpApp","symbol","that","random","self","router","toReadonlyArray","mountsLen","length","forEach","route","fn","method","all","path","on","request","i","app","url","startsWith","provideService","sliceRequestUrl","result","find","fail","RouteNotFound","handler","prefix","value","mapInputContext","context","add","RouteContextImpl","prefexLen","setUrl","slice","RouteImpl","none","empty","fromIterable","makeRoute","concat","appendAll","removeTrailingSlash","endsWith","prefixAll","orElse","some","mount","mountApp","append","get","post","put","patch","del","head","options","transform","f","catchAll","catchAllCause","catchTag","k","catchTags","cases","tag","service","provideServiceEffect","effect"],"sources":["../../../src/internal/http/router.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { dual } from "@effect/data/Function";
|
|
2
|
-
import * as Option from "@effect/data/Option";
|
|
3
2
|
import { pipeArguments } from "@effect/data/Pipeable";
|
|
4
3
|
import * as Effect from "@effect/io/Effect";
|
|
5
4
|
import * as Headers from "@effect/platform/Http/Headers";
|
|
@@ -13,9 +12,22 @@ class ServerResponseImpl {
|
|
|
13
12
|
constructor(status, statusText, headers, body) {
|
|
14
13
|
this.status = status;
|
|
15
14
|
this.statusText = statusText;
|
|
16
|
-
this.headers = headers;
|
|
17
15
|
this.body = body;
|
|
18
16
|
this[TypeId] = TypeId;
|
|
17
|
+
if (body.contentType || body.contentLength) {
|
|
18
|
+
const newHeaders = {
|
|
19
|
+
...headers
|
|
20
|
+
};
|
|
21
|
+
if (body.contentType) {
|
|
22
|
+
newHeaders["content-type"] = body.contentType;
|
|
23
|
+
}
|
|
24
|
+
if (body.contentLength) {
|
|
25
|
+
newHeaders["content-length"] = body.contentLength.toString();
|
|
26
|
+
}
|
|
27
|
+
this.headers = newHeaders;
|
|
28
|
+
} else {
|
|
29
|
+
this.headers = headers;
|
|
30
|
+
}
|
|
19
31
|
}
|
|
20
32
|
pipe() {
|
|
21
33
|
return pipeArguments(this, arguments);
|
|
@@ -62,7 +74,7 @@ export const getContentType = options => {
|
|
|
62
74
|
if (options?.contentType) {
|
|
63
75
|
return options.contentType;
|
|
64
76
|
} else if (options?.headers) {
|
|
65
|
-
return
|
|
77
|
+
return options.headers["content-type"];
|
|
66
78
|
} else {
|
|
67
79
|
return;
|
|
68
80
|
}
|
|
@@ -78,15 +90,6 @@ export const setBody = /*#__PURE__*/dual(2, (self, body) => {
|
|
|
78
90
|
let headers = self.headers;
|
|
79
91
|
if (body._tag === "Empty") {
|
|
80
92
|
headers = Headers.remove(Headers.remove(headers, "Content-Type"), "Content-length");
|
|
81
|
-
} else {
|
|
82
|
-
const contentType = body.contentType;
|
|
83
|
-
if (contentType) {
|
|
84
|
-
headers = Headers.set(headers, "content-type", contentType);
|
|
85
|
-
}
|
|
86
|
-
const contentLength = body.contentLength;
|
|
87
|
-
if (contentLength) {
|
|
88
|
-
headers = Headers.set(headers, "content-length", contentLength.toString());
|
|
89
|
-
}
|
|
90
93
|
}
|
|
91
94
|
return new ServerResponseImpl(self.status, self.statusText, headers, body);
|
|
92
95
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverResponse.mjs","names":["dual","
|
|
1
|
+
{"version":3,"file":"serverResponse.mjs","names":["dual","pipeArguments","Effect","Headers","ServerRequest","UrlParams","internalBody","internalError","TypeId","Symbol","for","ServerResponseImpl","constructor","status","statusText","headers","body","contentType","contentLength","newHeaders","toString","pipe","arguments","isServerResponse","u","toNonEffectBody","self","_tag","map","catchAll","effect","error","flatMap","request","fail","responseError","reason","response","setBody","succeed","empty","options","uint8Array","getContentType","text","json","unsafeJson","schemaJson","schema","encode","jsonSchema","file","path","urlParams","fromInput","raw","formData","stream","setHeader","key","value","set","setHeaders","input","setAll","setStatus","args","remove"],"sources":["../../../src/internal/http/serverResponse.ts"],"sourcesContent":[null],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/platform",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.3",
|
|
4
4
|
"description": "Unified interfaces for common platform-specific services",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"path-browserify": "^1.0.1"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
|
-
"@effect/data": "^0.17.
|
|
33
|
-
"@effect/io": "^0.38.
|
|
34
|
-
"@effect/schema": "^0.33.
|
|
32
|
+
"@effect/data": "^0.17.5",
|
|
33
|
+
"@effect/io": "^0.38.2",
|
|
34
|
+
"@effect/schema": "^0.33.1",
|
|
35
35
|
"@effect/stream": "^0.34.0"
|
|
36
36
|
}
|
|
37
37
|
}
|
package/src/Http/Headers.ts
CHANGED
|
@@ -2,26 +2,27 @@
|
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
4
|
import { dual } from "@effect/data/Function"
|
|
5
|
-
import * as HashMap from "@effect/data/HashMap"
|
|
6
5
|
import type * as Option from "@effect/data/Option"
|
|
6
|
+
import * as ReadonlyArray from "@effect/data/ReadonlyArray"
|
|
7
|
+
import * as ReadonlyRecord from "@effect/data/ReadonlyRecord"
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* @since 1.0.0
|
|
10
11
|
* @category models
|
|
11
12
|
*/
|
|
12
|
-
export interface Headers extends
|
|
13
|
+
export interface Headers extends ReadonlyRecord.ReadonlyRecord<string> {}
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* @since 1.0.0
|
|
16
17
|
* @category models
|
|
17
18
|
*/
|
|
18
|
-
export type Input = Headers |
|
|
19
|
+
export type Input = Headers | Iterable<readonly [string, string]>
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* @since 1.0.0
|
|
22
23
|
* @category constructors
|
|
23
24
|
*/
|
|
24
|
-
export const empty: Headers =
|
|
25
|
+
export const empty: Headers = ReadonlyRecord.empty()
|
|
25
26
|
|
|
26
27
|
/**
|
|
27
28
|
* @since 1.0.0
|
|
@@ -30,12 +31,15 @@ export const empty: Headers = HashMap.empty()
|
|
|
30
31
|
export const fromInput: (input?: Input) => Headers = (input) => {
|
|
31
32
|
if (input === undefined) {
|
|
32
33
|
return empty
|
|
33
|
-
} else if (HashMap.isHashMap(input)) {
|
|
34
|
-
return input
|
|
35
34
|
} else if (Symbol.iterator in input) {
|
|
36
|
-
return
|
|
35
|
+
return ReadonlyRecord.fromEntries(ReadonlyArray.map(
|
|
36
|
+
ReadonlyArray.fromIterable(input),
|
|
37
|
+
([k, v]) => [k.toLowerCase(), v] as const
|
|
38
|
+
))
|
|
37
39
|
}
|
|
38
|
-
return
|
|
40
|
+
return ReadonlyRecord.fromEntries(
|
|
41
|
+
Object.entries(input).map(([k, v]) => [k.toLowerCase(), v])
|
|
42
|
+
)
|
|
39
43
|
}
|
|
40
44
|
|
|
41
45
|
/**
|
|
@@ -48,7 +52,7 @@ export const has: {
|
|
|
48
52
|
} = dual<
|
|
49
53
|
(key: string) => (self: Headers) => boolean,
|
|
50
54
|
(self: Headers, key: string) => boolean
|
|
51
|
-
>(2, (self, key) =>
|
|
55
|
+
>(2, (self, key) => ReadonlyRecord.has(self, key.toLowerCase()))
|
|
52
56
|
|
|
53
57
|
/**
|
|
54
58
|
* @since 1.0.0
|
|
@@ -60,7 +64,7 @@ export const get: {
|
|
|
60
64
|
} = dual<
|
|
61
65
|
(key: string) => (self: Headers) => Option.Option<string>,
|
|
62
66
|
(self: Headers, key: string) => Option.Option<string>
|
|
63
|
-
>(2, (self, key) =>
|
|
67
|
+
>(2, (self, key) => ReadonlyRecord.get(self, key.toLowerCase()))
|
|
64
68
|
|
|
65
69
|
/**
|
|
66
70
|
* @since 1.0.0
|
|
@@ -72,7 +76,10 @@ export const set: {
|
|
|
72
76
|
} = dual<
|
|
73
77
|
(key: string, value: string) => (self: Headers) => Headers,
|
|
74
78
|
(self: Headers, key: string, value: string) => Headers
|
|
75
|
-
>(3, (self, key, value) =>
|
|
79
|
+
>(3, (self, key, value) => ({
|
|
80
|
+
...self,
|
|
81
|
+
[key.toLowerCase()]: value
|
|
82
|
+
}))
|
|
76
83
|
|
|
77
84
|
/**
|
|
78
85
|
* @since 1.0.0
|
|
@@ -84,11 +91,10 @@ export const setAll: {
|
|
|
84
91
|
} = dual<
|
|
85
92
|
(headers: Input) => (self: Headers) => Headers,
|
|
86
93
|
(self: Headers, headers: Input) => Headers
|
|
87
|
-
>(2, (self, headers) =>
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
))
|
|
94
|
+
>(2, (self, headers) => ({
|
|
95
|
+
...self,
|
|
96
|
+
...fromInput(headers)
|
|
97
|
+
}))
|
|
92
98
|
|
|
93
99
|
/**
|
|
94
100
|
* @since 1.0.0
|
|
@@ -100,4 +106,4 @@ export const remove: {
|
|
|
100
106
|
} = dual<
|
|
101
107
|
(key: string) => (self: Headers) => Headers,
|
|
102
108
|
(self: Headers, key: string) => Headers
|
|
103
|
-
>(2, (self, key) =>
|
|
109
|
+
>(2, (self, key) => ReadonlyRecord.remove(self, key.toLowerCase()))
|
|
@@ -65,8 +65,7 @@ export const schemaBodyUrlParams = <I extends Readonly<Record<string, string>>,
|
|
|
65
65
|
*/
|
|
66
66
|
export const schemaHeaders = <I extends Readonly<Record<string, string>>, A>(schema: Schema.Schema<I, A>) => {
|
|
67
67
|
const parse = Schema.parse(schema)
|
|
68
|
-
return <E>(self: IncomingMessage<E>): Effect.Effect<never, ParseResult.ParseError, A> =>
|
|
69
|
-
parse(Object.fromEntries(self.headers))
|
|
68
|
+
return <E>(self: IncomingMessage<E>): Effect.Effect<never, ParseResult.ParseError, A> => parse(self.headers)
|
|
70
69
|
}
|
|
71
70
|
|
|
72
71
|
/**
|
package/src/Http/Middleware.ts
CHANGED
|
@@ -30,20 +30,6 @@ export namespace Middleware {
|
|
|
30
30
|
*/
|
|
31
31
|
export const make: <M extends Middleware>(middleware: M) => M = internal.make
|
|
32
32
|
|
|
33
|
-
/**
|
|
34
|
-
* @since 1.0.0
|
|
35
|
-
* @category combinators
|
|
36
|
-
*/
|
|
37
|
-
export const compose: {
|
|
38
|
-
<B extends App.Default<any, any>, C extends App.Default<any, any>>(
|
|
39
|
-
that: (b: B) => C
|
|
40
|
-
): <A extends App.Default<any, any>>(self: (a: A) => B) => (a: A) => C
|
|
41
|
-
<A extends App.Default<any, any>, B extends App.Default<any, any>, C extends App.Default<any, any>>(
|
|
42
|
-
self: (a: A) => B,
|
|
43
|
-
that: (b: B) => C
|
|
44
|
-
): (a: A) => C
|
|
45
|
-
} = internal.compose
|
|
46
|
-
|
|
47
33
|
/**
|
|
48
34
|
* @since 1.0.0
|
|
49
35
|
* @category constructors
|
package/src/Http/Router.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import type * as Chunk from "@effect/data/Chunk"
|
|
5
5
|
import type * as Context from "@effect/data/Context"
|
|
6
6
|
import type * as Option from "@effect/data/Option"
|
|
7
|
+
import type * as Cause from "@effect/io/Cause"
|
|
7
8
|
import type * as Effect from "@effect/io/Effect"
|
|
8
9
|
import type * as App from "@effect/platform/Http/App"
|
|
9
10
|
import type * as Method from "@effect/platform/Http/Method"
|
|
@@ -340,3 +341,120 @@ export const options: {
|
|
|
340
341
|
handler: Route.Handler<R1, E1>
|
|
341
342
|
): Router<R | Exclude<R1, RouteContext>, E | E1>
|
|
342
343
|
} = internal.options
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* @since 1.0.0
|
|
347
|
+
* @category combinators
|
|
348
|
+
*/
|
|
349
|
+
export const transform = internal.transform
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* @since 1.0.0
|
|
353
|
+
* @category combinators
|
|
354
|
+
*/
|
|
355
|
+
export const catchAll: {
|
|
356
|
+
<E, R2, E2>(f: (e: E) => Route.Handler<R2, E2>): <R>(self: Router<R, E>) => Router<R2 | R, E2>
|
|
357
|
+
<R, E, R2, E2>(self: Router<R, E>, f: (e: E) => Route.Handler<R2, E2>): Router<R | R2, E2>
|
|
358
|
+
} = internal.catchAll
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* @since 1.0.0
|
|
362
|
+
* @category combinators
|
|
363
|
+
*/
|
|
364
|
+
export const catchAllCause: {
|
|
365
|
+
<E, R2, E2>(f: (e: Cause.Cause<E>) => Route.Handler<R2, E2>): <R>(self: Router<R, E>) => Router<R2 | R, E2>
|
|
366
|
+
<R, E, R2, E2>(self: Router<R, E>, f: (e: Cause.Cause<E>) => Route.Handler<R2, E2>): Router<R | R2, E2>
|
|
367
|
+
} = internal.catchAllCause
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* @since 1.0.0
|
|
371
|
+
* @category combinators
|
|
372
|
+
*/
|
|
373
|
+
export const catchTag: {
|
|
374
|
+
<K extends E extends { _tag: string } ? E["_tag"] : never, E, R1, E1>(
|
|
375
|
+
k: K,
|
|
376
|
+
f: (e: Extract<E, { _tag: K }>) => Route.Handler<R1, E1>
|
|
377
|
+
): <R>(self: Router<R, E>) => Router<R1 | R, E1 | Exclude<E, { _tag: K }>>
|
|
378
|
+
<R, E, K extends E extends { _tag: string } ? E["_tag"] : never, R1, E1>(
|
|
379
|
+
self: Router<R, E>,
|
|
380
|
+
k: K,
|
|
381
|
+
f: (e: Extract<E, { _tag: K }>) => Route.Handler<R1, E1>
|
|
382
|
+
): Router<R | R1, E1 | Exclude<E, { _tag: K }>>
|
|
383
|
+
} = internal.catchTag
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* @since 1.0.0
|
|
387
|
+
* @category combinators
|
|
388
|
+
*/
|
|
389
|
+
export const catchTags: {
|
|
390
|
+
<
|
|
391
|
+
E,
|
|
392
|
+
Cases extends E extends { _tag: string }
|
|
393
|
+
? { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Route.Handler<any, any>) | undefined }
|
|
394
|
+
: {}
|
|
395
|
+
>(
|
|
396
|
+
cases: Cases
|
|
397
|
+
): <R>(
|
|
398
|
+
self: Router<R, E>
|
|
399
|
+
) => Router<
|
|
400
|
+
| R
|
|
401
|
+
| {
|
|
402
|
+
[K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<infer R, any, any> ? R : never
|
|
403
|
+
}[keyof Cases],
|
|
404
|
+
| Exclude<E, { _tag: keyof Cases }>
|
|
405
|
+
| {
|
|
406
|
+
[K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, infer E, any> ? E : never
|
|
407
|
+
}[keyof Cases]
|
|
408
|
+
>
|
|
409
|
+
<
|
|
410
|
+
R,
|
|
411
|
+
E,
|
|
412
|
+
Cases extends E extends { _tag: string }
|
|
413
|
+
? { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Route.Handler<any, any>) | undefined } :
|
|
414
|
+
{}
|
|
415
|
+
>(
|
|
416
|
+
self: Router<R, E>,
|
|
417
|
+
cases: Cases
|
|
418
|
+
): Router<
|
|
419
|
+
| R
|
|
420
|
+
| {
|
|
421
|
+
[K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<infer R, any, any> ? R : never
|
|
422
|
+
}[keyof Cases],
|
|
423
|
+
| Exclude<E, { _tag: keyof Cases }>
|
|
424
|
+
| {
|
|
425
|
+
[K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, infer E, any> ? E : never
|
|
426
|
+
}[keyof Cases]
|
|
427
|
+
>
|
|
428
|
+
} = internal.catchTags
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* @since 1.0.0
|
|
432
|
+
* @category combinators
|
|
433
|
+
*/
|
|
434
|
+
export const provideService: {
|
|
435
|
+
<T extends Context.Tag<any, any>>(
|
|
436
|
+
tag: T,
|
|
437
|
+
service: Context.Tag.Service<T>
|
|
438
|
+
): <R, E>(self: Router<R, E>) => Router<Exclude<R, Context.Tag.Identifier<T>>, E>
|
|
439
|
+
<R, E, T extends Context.Tag<any, any>>(
|
|
440
|
+
self: Router<R, E>,
|
|
441
|
+
tag: T,
|
|
442
|
+
service: Context.Tag.Service<T>
|
|
443
|
+
): Router<Exclude<R, Context.Tag.Identifier<T>>, E>
|
|
444
|
+
} = internal.provideService
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* @since 1.0.0
|
|
448
|
+
* @category combinators
|
|
449
|
+
*/
|
|
450
|
+
export const provideServiceEffect: {
|
|
451
|
+
<T extends Context.Tag<any, any>, R1, E1>(
|
|
452
|
+
tag: T,
|
|
453
|
+
effect: Effect.Effect<R1, E1, Context.Tag.Service<T>>
|
|
454
|
+
): <R, E>(self: Router<R, E>) => Router<R1 | Exclude<R, Context.Tag.Identifier<T>>, E1 | E>
|
|
455
|
+
<R, E, T extends Context.Tag<any, any>, R1, E1>(
|
|
456
|
+
self: Router<R, E>,
|
|
457
|
+
tag: T,
|
|
458
|
+
effect: Effect.Effect<R1, E1, Context.Tag.Service<T>>
|
|
459
|
+
): Router<R1 | Exclude<R, Context.Tag.Identifier<T>>, E | E1>
|
|
460
|
+
} = internal.provideServiceEffect
|
|
@@ -30,7 +30,7 @@ const clientProto = {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
const setProto = <R, E, A>(
|
|
33
|
-
f: (request: ClientRequest.ClientRequest
|
|
33
|
+
f: (request: ClientRequest.ClientRequest) => Effect.Effect<R, E, A>
|
|
34
34
|
) => {
|
|
35
35
|
Object.setPrototypeOf(f, clientProto)
|
|
36
36
|
return f as Client.Client<R, E, A>
|
|
@@ -65,7 +65,7 @@ export const fetch = (
|
|
|
65
65
|
})),
|
|
66
66
|
(url) =>
|
|
67
67
|
Effect.suspend(() => {
|
|
68
|
-
const headers = new Headers(
|
|
68
|
+
const headers = new Headers(request.headers)
|
|
69
69
|
const send = (body: BodyInit | undefined) =>
|
|
70
70
|
Effect.map(
|
|
71
71
|
Effect.tryPromise({
|
|
@@ -118,20 +118,20 @@ export const layer = Layer.succeed(tag, fetch())
|
|
|
118
118
|
|
|
119
119
|
/** @internal */
|
|
120
120
|
export const catchTag: {
|
|
121
|
-
<E extends { _tag: string }
|
|
121
|
+
<K extends (E extends { _tag: string } ? E["_tag"] : never), E, R1, E1, A1>(
|
|
122
122
|
tag: K,
|
|
123
123
|
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<R1, E1, A1>
|
|
124
124
|
): <R, A>(
|
|
125
125
|
self: Client.Client<R, E, A>
|
|
126
126
|
) => Client.Client<R1 | R, E1 | Exclude<E, { _tag: K }>, A1 | A>
|
|
127
|
-
<R, E extends { _tag: string }
|
|
127
|
+
<R, E, A, K extends (E extends { _tag: string } ? E["_tag"] : never), R1, E1, A1>(
|
|
128
128
|
self: Client.Client<R, E, A>,
|
|
129
129
|
tag: K,
|
|
130
130
|
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<R1, E1, A1>
|
|
131
131
|
): Client.Client<R1 | R, E1 | Exclude<E, { _tag: K }>, A1 | A>
|
|
132
132
|
} = dual(
|
|
133
133
|
3,
|
|
134
|
-
<R, E extends { _tag: string }
|
|
134
|
+
<R, E, A, K extends (E extends { _tag: string } ? E["_tag"] : never), R1, E1, A1>(
|
|
135
135
|
self: Client.Client<R, E, A>,
|
|
136
136
|
tag: K,
|
|
137
137
|
f: (e: Extract<E, { _tag: K }>) => Effect.Effect<R1, E1, A1>
|
|
@@ -142,12 +142,11 @@ export const catchTag: {
|
|
|
142
142
|
/** @internal */
|
|
143
143
|
export const catchTags: {
|
|
144
144
|
<
|
|
145
|
-
E
|
|
146
|
-
Cases
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
}
|
|
145
|
+
E,
|
|
146
|
+
Cases
|
|
147
|
+
extends (E extends { _tag: string }
|
|
148
|
+
? { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Effect.Effect<any, any, any>) }
|
|
149
|
+
: {})
|
|
151
150
|
>(
|
|
152
151
|
cases: Cases
|
|
153
152
|
): <R, A>(
|
|
@@ -179,11 +178,10 @@ export const catchTags: {
|
|
|
179
178
|
R,
|
|
180
179
|
E extends { _tag: string },
|
|
181
180
|
A,
|
|
182
|
-
Cases
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
181
|
+
Cases
|
|
182
|
+
extends (E extends { _tag: string }
|
|
183
|
+
? { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Effect.Effect<any, any, any>) }
|
|
184
|
+
: {})
|
|
187
185
|
>(
|
|
188
186
|
self: Client.Client<R, E, A>,
|
|
189
187
|
cases: Cases
|
|
@@ -216,11 +214,10 @@ export const catchTags: {
|
|
|
216
214
|
R,
|
|
217
215
|
E extends { _tag: string },
|
|
218
216
|
A,
|
|
219
|
-
Cases
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}
|
|
217
|
+
Cases
|
|
218
|
+
extends (E extends { _tag: string }
|
|
219
|
+
? { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Effect.Effect<any, any, any>) }
|
|
220
|
+
: {})
|
|
224
221
|
>(
|
|
225
222
|
self: Client.Client<R, E, A>,
|
|
226
223
|
cases: Cases
|