@effect/platform 0.48.27 → 0.48.29
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/README.md +51 -0
- package/dist/cjs/Http/App.js +50 -32
- package/dist/cjs/Http/App.js.map +1 -1
- package/dist/cjs/Http/Headers.js +4 -1
- package/dist/cjs/Http/Headers.js.map +1 -1
- package/dist/cjs/Http/Router.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 +6 -3
- package/dist/cjs/Transferable.js.map +1 -1
- package/dist/cjs/WorkerError.js +9 -6
- package/dist/cjs/WorkerError.js.map +1 -1
- package/dist/cjs/internal/http/middleware.js +14 -16
- package/dist/cjs/internal/http/middleware.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 +21 -11
- package/dist/cjs/internal/http/router.js.map +1 -1
- package/dist/dts/Http/App.d.ts +5 -7
- package/dist/dts/Http/App.d.ts.map +1 -1
- package/dist/dts/Http/Headers.d.ts.map +1 -1
- package/dist/dts/Http/Router.d.ts +57 -20
- package/dist/dts/Http/Router.d.ts.map +1 -1
- package/dist/dts/Transferable.d.ts.map +1 -1
- package/dist/dts/WorkerError.d.ts +2 -2
- package/dist/dts/WorkerError.d.ts.map +1 -1
- package/dist/dts/internal/http/router.d.ts.map +1 -1
- package/dist/esm/Http/App.js +48 -30
- package/dist/esm/Http/App.js.map +1 -1
- package/dist/esm/Http/Headers.js +4 -1
- package/dist/esm/Http/Headers.js.map +1 -1
- package/dist/esm/Http/Router.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 +6 -3
- package/dist/esm/Transferable.js.map +1 -1
- package/dist/esm/WorkerError.js +9 -6
- package/dist/esm/WorkerError.js.map +1 -1
- package/dist/esm/internal/http/middleware.js +14 -16
- package/dist/esm/internal/http/middleware.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 +21 -11
- package/dist/esm/internal/http/router.js.map +1 -1
- package/package.json +3 -3
- package/src/Http/App.ts +70 -46
- package/src/Http/Headers.ts +2 -3
- package/src/Http/Router.ts +42 -22
- package/src/Http/UrlParams.ts +2 -2
- package/src/Transferable.ts +3 -4
- package/src/WorkerError.ts +11 -9
- package/src/internal/http/middleware.ts +7 -7
- package/src/internal/http/multipart.ts +2 -2
- package/src/internal/http/router.ts +69 -50
|
@@ -3,6 +3,7 @@ import * as Chunk from "effect/Chunk";
|
|
|
3
3
|
import * as Context from "effect/Context";
|
|
4
4
|
import * as Effect from "effect/Effect";
|
|
5
5
|
import * as Effectable from "effect/Effectable";
|
|
6
|
+
import * as FiberRef from "effect/FiberRef";
|
|
6
7
|
import { dual } from "effect/Function";
|
|
7
8
|
import * as Inspectable from "effect/Inspectable";
|
|
8
9
|
import * as Option from "effect/Option";
|
|
@@ -97,7 +98,7 @@ class RouterImpl extends Effectable.StructuralClass {
|
|
|
97
98
|
}
|
|
98
99
|
const toHttpApp = self => {
|
|
99
100
|
const router = FindMyWay.make();
|
|
100
|
-
const mounts = Chunk.toReadonlyArray(self.mounts).map(([path, app, options]) => [path, new RouteContextImpl(new RouteImpl("*", options?.includePrefix ? `${path}/*` : "/*", app, options?.includePrefix ? Option.none() : Option.some(path)), {}, {}), options]);
|
|
101
|
+
const mounts = Chunk.toReadonlyArray(self.mounts).map(([path, app, options]) => [path, new RouteContextImpl(new RouteImpl("*", options?.includePrefix ? `${path}/*` : "/*", app, options?.includePrefix ? Option.none() : Option.some(path), false), {}, {}), options]);
|
|
101
102
|
const mountsLen = mounts.length;
|
|
102
103
|
Chunk.forEach(self.routes, route => {
|
|
103
104
|
if (route.method === "*") {
|
|
@@ -106,12 +107,18 @@ const toHttpApp = self => {
|
|
|
106
107
|
router.on(route.method, route.path, route);
|
|
107
108
|
}
|
|
108
109
|
});
|
|
109
|
-
return Effect.
|
|
110
|
+
return Effect.withFiberRuntime(fiber => {
|
|
111
|
+
let context = fiber.getFiberRef(FiberRef.currentContext);
|
|
112
|
+
const request = Context.unsafeGet(context, ServerRequest.ServerRequest);
|
|
110
113
|
if (mountsLen > 0) {
|
|
111
114
|
for (let i = 0; i < mountsLen; i++) {
|
|
112
|
-
const [path,
|
|
115
|
+
const [path, routeContext, options] = mounts[i];
|
|
113
116
|
if (request.url.startsWith(path)) {
|
|
114
|
-
|
|
117
|
+
context = Context.add(context, RouteContext, routeContext);
|
|
118
|
+
if (options?.includePrefix !== true) {
|
|
119
|
+
context = Context.add(context, ServerRequest.ServerRequest, sliceRequestUrl(request, path));
|
|
120
|
+
}
|
|
121
|
+
return Effect.locally(routeContext.route.handler, FiberRef.currentContext, context);
|
|
115
122
|
}
|
|
116
123
|
}
|
|
117
124
|
}
|
|
@@ -126,9 +133,10 @@ const toHttpApp = self => {
|
|
|
126
133
|
}
|
|
127
134
|
const route = result.handler;
|
|
128
135
|
if (route.prefix._tag === "Some") {
|
|
129
|
-
|
|
136
|
+
context = Context.add(context, ServerRequest.ServerRequest, sliceRequestUrl(request, route.prefix.value));
|
|
130
137
|
}
|
|
131
|
-
|
|
138
|
+
context = Context.add(context, RouteContext, new RouteContextImpl(route, result.params, result.searchParams));
|
|
139
|
+
return Effect.locally(route.uninterruptible ? route.handler : Effect.interruptible(route.handler), FiberRef.currentContext, context);
|
|
132
140
|
});
|
|
133
141
|
};
|
|
134
142
|
function sliceRequestUrl(request, prefix) {
|
|
@@ -142,13 +150,15 @@ class RouteImpl extends Inspectable.Class {
|
|
|
142
150
|
path;
|
|
143
151
|
handler;
|
|
144
152
|
prefix;
|
|
153
|
+
uninterruptible;
|
|
145
154
|
[RouteTypeId];
|
|
146
|
-
constructor(method, path, handler, prefix = Option.none()) {
|
|
155
|
+
constructor(method, path, handler, prefix = Option.none(), uninterruptible = false) {
|
|
147
156
|
super();
|
|
148
157
|
this.method = method;
|
|
149
158
|
this.path = path;
|
|
150
159
|
this.handler = handler;
|
|
151
160
|
this.prefix = prefix;
|
|
161
|
+
this.uninterruptible = uninterruptible;
|
|
152
162
|
this[RouteTypeId] = RouteTypeId;
|
|
153
163
|
}
|
|
154
164
|
toJSON() {
|
|
@@ -177,21 +187,21 @@ export const empty = /*#__PURE__*/new RouterImpl( /*#__PURE__*/Chunk.empty(), /*
|
|
|
177
187
|
/** @internal */
|
|
178
188
|
export const fromIterable = routes => new RouterImpl(Chunk.fromIterable(routes), Chunk.empty());
|
|
179
189
|
/** @internal */
|
|
180
|
-
export const makeRoute = (method, path, handler, prefix = Option.none()) => new RouteImpl(method, path, handler, prefix);
|
|
190
|
+
export const makeRoute = (method, path, handler, prefix = Option.none(), uninterruptible = false) => new RouteImpl(method, path, handler, prefix, uninterruptible);
|
|
181
191
|
/** @internal */
|
|
182
192
|
export const concat = /*#__PURE__*/dual(2, (self, that) => new RouterImpl(Chunk.appendAll(self.routes, that.routes), self.mounts));
|
|
183
193
|
const removeTrailingSlash = path => path.endsWith("/") ? path.slice(0, -1) : path;
|
|
184
194
|
/** @internal */
|
|
185
195
|
export const prefixAll = /*#__PURE__*/dual(2, (self, prefix) => {
|
|
186
196
|
prefix = removeTrailingSlash(prefix);
|
|
187
|
-
return new RouterImpl(Chunk.map(self.routes, route => new RouteImpl(route.method, route.path === "/" ? prefix : prefix + route.path, route.handler, Option.orElse(Option.map(route.prefix, _ => prefix + _), () => Option.some(prefix)))), Chunk.map(self.mounts, ([path, app]) => [path === "/" ? prefix : prefix + path, app]));
|
|
197
|
+
return new RouterImpl(Chunk.map(self.routes, route => new RouteImpl(route.method, route.path === "/" ? prefix : prefix + route.path, route.handler, Option.orElse(Option.map(route.prefix, _ => prefix + _), () => Option.some(prefix)), route.uninterruptible)), Chunk.map(self.mounts, ([path, app]) => [path === "/" ? prefix : prefix + path, app]));
|
|
188
198
|
});
|
|
189
199
|
/** @internal */
|
|
190
200
|
export const mount = /*#__PURE__*/dual(3, (self, path, that) => concat(self, prefixAll(that, path)));
|
|
191
201
|
/** @internal */
|
|
192
202
|
export const mountApp = /*#__PURE__*/dual(args => Predicate.hasProperty(args[0], TypeId), (self, path, that, options) => new RouterImpl(self.routes, Chunk.append(self.mounts, [removeTrailingSlash(path), that, options])));
|
|
193
203
|
/** @internal */
|
|
194
|
-
export const route = method => dual(
|
|
204
|
+
export const route = method => dual(args => Predicate.hasProperty(args[0], TypeId), (self, path, handler, options) => new RouterImpl(Chunk.append(self.routes, new RouteImpl(method, path, handler, Option.none(), options?.uninterruptible ?? false)), self.mounts));
|
|
195
205
|
/** @internal */
|
|
196
206
|
export const all = /*#__PURE__*/route("*");
|
|
197
207
|
/** @internal */
|
|
@@ -209,7 +219,7 @@ export const head = /*#__PURE__*/route("HEAD");
|
|
|
209
219
|
/** @internal */
|
|
210
220
|
export const options = /*#__PURE__*/route("OPTIONS");
|
|
211
221
|
/** @internal */
|
|
212
|
-
export const use = /*#__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)])));
|
|
222
|
+
export const use = /*#__PURE__*/dual(2, (self, f) => new RouterImpl(Chunk.map(self.routes, route => new RouteImpl(route.method, route.path, f(route.handler), route.prefix, route.uninterruptible)), Chunk.map(self.mounts, ([path, app]) => [path, f(app)])));
|
|
213
223
|
/** @internal */
|
|
214
224
|
export const catchAll = /*#__PURE__*/dual(2, (self, f) => use(self, Effect.catchAll(f)));
|
|
215
225
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","names":["Schema","Chunk","Context","Effect","Effectable","dual","Inspectable","Option","Predicate","FindMyWay","Error","ServerRequest","TypeId","Symbol","for","RouteTypeId","RouteContextTypeId","RouteContext","GenericTag","params","map","_","searchParams","schemaJson","schema","options","parse","decodeUnknown","flatMap","request","zip","json","body","context","method","url","headers","cookies","pathParams","schemaNoBody","schemaParams","schemaPathParams","schemaSearchParams","RouterImpl","StructuralClass","routes","mounts","constructor","httpApp","toHttpApp","commit","toJSON","_id","toString","format","NodeInspectSymbol","self","router","make","toReadonlyArray","path","app","RouteContextImpl","RouteImpl","includePrefix","none","some","mountsLen","length","forEach","route","all","on","i","startsWith","provideService","handler","sliceRequestUrl","result","find","undefined","fail","RouteNotFound","prefix","_tag","value","mapInputContext","add","prefexLen","modify","slice","Class","empty","fromIterable","makeRoute","concat","that","appendAll","removeTrailingSlash","endsWith","prefixAll","orElse","mount","mountApp","args","hasProperty","append","get","post","put","patch","del","head","use","f","catchAll","catchAllCause","catchTag","k","catchTags","cases","tag","service","provideServiceEffect","effect"],"sources":["../../../../src/internal/http/router.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"router.js","names":["Schema","Chunk","Context","Effect","Effectable","FiberRef","dual","Inspectable","Option","Predicate","FindMyWay","Error","ServerRequest","TypeId","Symbol","for","RouteTypeId","RouteContextTypeId","RouteContext","GenericTag","params","map","_","searchParams","schemaJson","schema","options","parse","decodeUnknown","flatMap","request","zip","json","body","context","method","url","headers","cookies","pathParams","schemaNoBody","schemaParams","schemaPathParams","schemaSearchParams","RouterImpl","StructuralClass","routes","mounts","constructor","httpApp","toHttpApp","commit","toJSON","_id","toString","format","NodeInspectSymbol","self","router","make","toReadonlyArray","path","app","RouteContextImpl","RouteImpl","includePrefix","none","some","mountsLen","length","forEach","route","all","on","withFiberRuntime","fiber","getFiberRef","currentContext","unsafeGet","i","routeContext","startsWith","add","sliceRequestUrl","locally","handler","result","find","undefined","fail","RouteNotFound","prefix","_tag","value","uninterruptible","interruptible","prefexLen","modify","slice","Class","empty","fromIterable","makeRoute","concat","that","appendAll","removeTrailingSlash","endsWith","prefixAll","orElse","mount","mountApp","args","hasProperty","append","get","post","put","patch","del","head","use","f","catchAll","catchAllCause","catchTag","k","catchTags","cases","provideService","tag","service","provideServiceEffect","effect"],"sources":["../../../../src/internal/http/router.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/platform",
|
|
3
|
-
"version": "0.48.
|
|
3
|
+
"version": "0.48.29",
|
|
4
4
|
"description": "Unified interfaces for common platform-specific services",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"path-browserify": "^1.0.1"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"@effect/schema": "^0.
|
|
20
|
-
"effect": "^2.4.
|
|
19
|
+
"@effect/schema": "^0.65.0",
|
|
20
|
+
"effect": "^2.4.19"
|
|
21
21
|
},
|
|
22
22
|
"main": "./dist/cjs/index.js",
|
|
23
23
|
"module": "./dist/esm/index.js",
|
package/src/Http/App.ts
CHANGED
|
@@ -2,16 +2,18 @@
|
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
4
|
import * as Cause from "effect/Cause"
|
|
5
|
+
import * as Context from "effect/Context"
|
|
5
6
|
import * as Effect from "effect/Effect"
|
|
6
7
|
import * as Exit from "effect/Exit"
|
|
7
8
|
import * as FiberRef from "effect/FiberRef"
|
|
8
9
|
import { dual } from "effect/Function"
|
|
9
10
|
import { globalValue } from "effect/GlobalValue"
|
|
10
11
|
import * as Layer from "effect/Layer"
|
|
11
|
-
import * as
|
|
12
|
+
import * as Option from "effect/Option"
|
|
12
13
|
import * as Runtime from "effect/Runtime"
|
|
13
14
|
import * as Scope from "effect/Scope"
|
|
14
15
|
import * as internalMiddleware from "../internal/http/middleware.js"
|
|
16
|
+
import type { Middleware } from "./Middleware.js"
|
|
15
17
|
import * as ServerError from "./ServerError.js"
|
|
16
18
|
import * as ServerRequest from "./ServerRequest.js"
|
|
17
19
|
import * as ServerResponse from "./ServerResponse.js"
|
|
@@ -32,9 +34,40 @@ export type Default<R, E> = HttpApp<R, E, ServerResponse.ServerResponse>
|
|
|
32
34
|
* @since 1.0.0
|
|
33
35
|
* @category combinators
|
|
34
36
|
*/
|
|
35
|
-
export const
|
|
36
|
-
self: Default<R, E
|
|
37
|
-
|
|
37
|
+
export const toHandled = <R, E, _, RH>(
|
|
38
|
+
self: Default<R, E>,
|
|
39
|
+
handleResponse: (
|
|
40
|
+
request: ServerRequest.ServerRequest,
|
|
41
|
+
exit: Exit.Exit<ServerResponse.ServerResponse, E | ServerError.ResponseError>
|
|
42
|
+
) => Effect.Effect<_, never, RH>,
|
|
43
|
+
middleware?: Middleware | undefined
|
|
44
|
+
): Default<Exclude<R | RH, Scope.Scope>, E | ServerError.ResponseError> => {
|
|
45
|
+
const withTracer = internalMiddleware.tracer(self)
|
|
46
|
+
const responded = Effect.withFiberRuntime<
|
|
47
|
+
ServerResponse.ServerResponse,
|
|
48
|
+
E | ServerError.ResponseError,
|
|
49
|
+
R | RH | ServerRequest.ServerRequest
|
|
50
|
+
>((fiber) => {
|
|
51
|
+
const request = Context.unsafeGet(fiber.getFiberRef(FiberRef.currentContext), ServerRequest.ServerRequest)
|
|
52
|
+
const handler = fiber.getFiberRef(currentPreResponseHandlers)
|
|
53
|
+
const preHandled = handler._tag === "Some"
|
|
54
|
+
? Effect.flatMap(withTracer, (response) => handler.value(request, response))
|
|
55
|
+
: withTracer
|
|
56
|
+
return Effect.flatMap(
|
|
57
|
+
Effect.exit(preHandled),
|
|
58
|
+
(exit) => {
|
|
59
|
+
if (exit._tag === "Failure") {
|
|
60
|
+
const dieOption = Cause.dieOption(exit.cause)
|
|
61
|
+
if (dieOption._tag === "Some" && ServerResponse.isServerResponse(dieOption.value)) {
|
|
62
|
+
exit = Exit.succeed(dieOption.value)
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return Effect.zipRight(handleResponse(request, exit), exit)
|
|
66
|
+
}
|
|
67
|
+
)
|
|
68
|
+
})
|
|
69
|
+
return Effect.uninterruptible(Effect.scoped(middleware === undefined ? responded : middleware(responded)))
|
|
70
|
+
}
|
|
38
71
|
|
|
39
72
|
/**
|
|
40
73
|
* @since 1.0.0
|
|
@@ -49,32 +82,9 @@ export type PreResponseHandler = (
|
|
|
49
82
|
* @since 1.0.0
|
|
50
83
|
* @category fiber refs
|
|
51
84
|
*/
|
|
52
|
-
export const currentPreResponseHandlers: FiberRef.FiberRef<
|
|
85
|
+
export const currentPreResponseHandlers: FiberRef.FiberRef<Option.Option<PreResponseHandler>> = globalValue(
|
|
53
86
|
Symbol.for("@effect/platform/Http/App/preResponseHandlers"),
|
|
54
|
-
() => FiberRef.unsafeMake<
|
|
55
|
-
)
|
|
56
|
-
|
|
57
|
-
function noopHandler(_request: ServerRequest.ServerRequest, response: ServerResponse.ServerResponse) {
|
|
58
|
-
return Effect.succeed(response)
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* @since 1.0.0
|
|
63
|
-
* @category fiber refs
|
|
64
|
-
*/
|
|
65
|
-
export const preResponseHandler: Effect.Effect<PreResponseHandler> = Effect.map(
|
|
66
|
-
FiberRef.get(currentPreResponseHandlers),
|
|
67
|
-
(handlers): PreResponseHandler =>
|
|
68
|
-
handlers.length === 0 ?
|
|
69
|
-
noopHandler :
|
|
70
|
-
handlers.reduce((acc, handler) => (function(request, response) {
|
|
71
|
-
return Effect.flatMap(
|
|
72
|
-
acc(request, response),
|
|
73
|
-
function(response) {
|
|
74
|
-
return handler(request, response)
|
|
75
|
-
}
|
|
76
|
-
)
|
|
77
|
-
}))
|
|
87
|
+
() => FiberRef.unsafeMake<Option.Option<PreResponseHandler>>(Option.none())
|
|
78
88
|
)
|
|
79
89
|
|
|
80
90
|
/**
|
|
@@ -86,7 +96,13 @@ export const appendPreResponseHandler: (handler: PreResponseHandler) => Effect.E
|
|
|
86
96
|
) =>
|
|
87
97
|
FiberRef.update(
|
|
88
98
|
currentPreResponseHandlers,
|
|
89
|
-
|
|
99
|
+
Option.match({
|
|
100
|
+
onNone: () => Option.some(handler),
|
|
101
|
+
onSome: (prev) =>
|
|
102
|
+
Option.some((request, response) =>
|
|
103
|
+
Effect.flatMap(prev(request, response), (response) => handler(request, response))
|
|
104
|
+
)
|
|
105
|
+
})
|
|
90
106
|
)
|
|
91
107
|
|
|
92
108
|
/**
|
|
@@ -100,7 +116,13 @@ export const withPreResponseHandler = dual<
|
|
|
100
116
|
Effect.locallyWith(
|
|
101
117
|
self,
|
|
102
118
|
currentPreResponseHandlers,
|
|
103
|
-
|
|
119
|
+
Option.match({
|
|
120
|
+
onNone: () => Option.some(handler),
|
|
121
|
+
onSome: (prev) =>
|
|
122
|
+
Option.some((request, response) =>
|
|
123
|
+
Effect.flatMap(prev(request, response), (response) => handler(request, response))
|
|
124
|
+
)
|
|
125
|
+
})
|
|
104
126
|
))
|
|
105
127
|
|
|
106
128
|
/**
|
|
@@ -110,25 +132,27 @@ export const withPreResponseHandler = dual<
|
|
|
110
132
|
export const toWebHandlerRuntime = <R>(runtime: Runtime.Runtime<R>) => {
|
|
111
133
|
const run = Runtime.runFork(runtime)
|
|
112
134
|
return <E>(self: Default<R | Scope.Scope, E>) => {
|
|
113
|
-
|
|
135
|
+
const handled = Effect.scoped(toHandled(self, (request, exit) => {
|
|
136
|
+
const webRequest = request.source as Request
|
|
137
|
+
if (Exit.isSuccess(exit)) {
|
|
138
|
+
;(request as any)._resolve(ServerResponse.toWeb(exit.value, request.method === "HEAD"))
|
|
139
|
+
} else if (Cause.isInterruptedOnly(exit.cause)) {
|
|
140
|
+
;(request as any)._resolve(new Response(null, { status: webRequest.signal.aborted ? 499 : 503 }))
|
|
141
|
+
} else {
|
|
142
|
+
;(request as any)._reject(Cause.pretty(exit.cause))
|
|
143
|
+
}
|
|
144
|
+
return Effect.unit
|
|
145
|
+
}))
|
|
114
146
|
return (request: Request): Promise<Response> =>
|
|
115
147
|
new Promise((resolve, reject) => {
|
|
116
148
|
const req = ServerRequest.fromWeb(request)
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
149
|
+
;(req as any)._resolve = resolve
|
|
150
|
+
;(req as any)._reject = reject
|
|
151
|
+
const fiber = run(
|
|
152
|
+
Effect.provideService(handled, ServerRequest.ServerRequest, req)
|
|
153
|
+
)
|
|
121
154
|
request.signal.addEventListener("abort", () => {
|
|
122
|
-
|
|
123
|
-
})
|
|
124
|
-
fiber.addObserver((exit) => {
|
|
125
|
-
if (Exit.isSuccess(exit)) {
|
|
126
|
-
resolve(exit.value)
|
|
127
|
-
} else if (Cause.isInterruptedOnly(exit.cause)) {
|
|
128
|
-
resolve(new Response(null, { status: request.signal.aborted ? 499 : 503 }))
|
|
129
|
-
} else {
|
|
130
|
-
reject(Cause.pretty(exit.cause))
|
|
131
|
-
}
|
|
155
|
+
fiber.unsafeInterruptAsFork(ServerError.clientAbortFiberId)
|
|
132
156
|
})
|
|
133
157
|
})
|
|
134
158
|
}
|
package/src/Http/Headers.ts
CHANGED
|
@@ -52,10 +52,9 @@ export const schemaFromSelf: Schema.Schema<Headers> = Schema.declare(isHeaders,
|
|
|
52
52
|
*/
|
|
53
53
|
export const schema: Schema.Schema<Headers, ReadonlyRecord.ReadonlyRecord<string, string | ReadonlyArray<string>>> =
|
|
54
54
|
Schema.transform(
|
|
55
|
-
Schema.
|
|
55
|
+
Schema.Record(Schema.String, Schema.Union(Schema.String, Schema.Array(Schema.String))),
|
|
56
56
|
schemaFromSelf,
|
|
57
|
-
(record) => fromInput(record),
|
|
58
|
-
identity
|
|
57
|
+
{ decode: (record) => fromInput(record), encode: identity }
|
|
59
58
|
)
|
|
60
59
|
|
|
61
60
|
/**
|
package/src/Http/Router.ts
CHANGED
|
@@ -84,6 +84,7 @@ export interface Route<R, E> extends Inspectable {
|
|
|
84
84
|
readonly path: PathInput
|
|
85
85
|
readonly handler: Route.Handler<R, E>
|
|
86
86
|
readonly prefix: Option.Option<string>
|
|
87
|
+
readonly uninterruptible: boolean
|
|
87
88
|
}
|
|
88
89
|
|
|
89
90
|
/**
|
|
@@ -243,7 +244,8 @@ export const makeRoute: <R, E>(
|
|
|
243
244
|
method: Method.Method,
|
|
244
245
|
path: PathInput,
|
|
245
246
|
handler: Route.Handler<R, E>,
|
|
246
|
-
prefix?: Option.Option<string
|
|
247
|
+
prefix?: Option.Option<string>,
|
|
248
|
+
uninterruptible?: boolean
|
|
247
249
|
) => Route<Exclude<R, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E> = internal.makeRoute
|
|
248
250
|
|
|
249
251
|
/**
|
|
@@ -311,19 +313,21 @@ export const mountApp: {
|
|
|
311
313
|
* @category routing
|
|
312
314
|
*/
|
|
313
315
|
export const route: (
|
|
314
|
-
method: Method.Method
|
|
316
|
+
method: "*" | Method.Method
|
|
315
317
|
) => {
|
|
316
318
|
<R1, E1>(
|
|
317
319
|
path: PathInput,
|
|
318
|
-
handler: Route.Handler<R1, E1
|
|
320
|
+
handler: Route.Handler<R1, E1>,
|
|
321
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
319
322
|
): <R, E>(
|
|
320
323
|
self: Router<R, E>
|
|
321
|
-
) => Router<R | Exclude<R1, ServerRequest.ServerRequest |
|
|
324
|
+
) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | E>
|
|
322
325
|
<R, E, R1, E1>(
|
|
323
326
|
self: Router<R, E>,
|
|
324
327
|
path: PathInput,
|
|
325
|
-
handler: Route.Handler<R1, E1
|
|
326
|
-
|
|
328
|
+
handler: Route.Handler<R1, E1>,
|
|
329
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
330
|
+
): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E | E1>
|
|
327
331
|
} = internal.route
|
|
328
332
|
|
|
329
333
|
/**
|
|
@@ -333,14 +337,16 @@ export const route: (
|
|
|
333
337
|
export const all: {
|
|
334
338
|
<R1, E1>(
|
|
335
339
|
path: PathInput,
|
|
336
|
-
handler: Route.Handler<R1, E1
|
|
340
|
+
handler: Route.Handler<R1, E1>,
|
|
341
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
337
342
|
): <R, E>(
|
|
338
343
|
self: Router<R, E>
|
|
339
344
|
) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | E>
|
|
340
345
|
<R, E, R1, E1>(
|
|
341
346
|
self: Router<R, E>,
|
|
342
347
|
path: PathInput,
|
|
343
|
-
handler: Route.Handler<R1, E1
|
|
348
|
+
handler: Route.Handler<R1, E1>,
|
|
349
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
344
350
|
): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E | E1>
|
|
345
351
|
} = internal.all
|
|
346
352
|
|
|
@@ -351,14 +357,16 @@ export const all: {
|
|
|
351
357
|
export const get: {
|
|
352
358
|
<R1, E1>(
|
|
353
359
|
path: PathInput,
|
|
354
|
-
handler: Route.Handler<R1, E1
|
|
360
|
+
handler: Route.Handler<R1, E1>,
|
|
361
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
355
362
|
): <R, E>(
|
|
356
363
|
self: Router<R, E>
|
|
357
364
|
) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | E>
|
|
358
365
|
<R, E, R1, E1>(
|
|
359
366
|
self: Router<R, E>,
|
|
360
367
|
path: PathInput,
|
|
361
|
-
handler: Route.Handler<R1, E1
|
|
368
|
+
handler: Route.Handler<R1, E1>,
|
|
369
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
362
370
|
): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E | E1>
|
|
363
371
|
} = internal.get
|
|
364
372
|
|
|
@@ -369,14 +377,16 @@ export const get: {
|
|
|
369
377
|
export const post: {
|
|
370
378
|
<R1, E1>(
|
|
371
379
|
path: PathInput,
|
|
372
|
-
handler: Route.Handler<R1, E1
|
|
380
|
+
handler: Route.Handler<R1, E1>,
|
|
381
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
373
382
|
): <R, E>(
|
|
374
383
|
self: Router<R, E>
|
|
375
384
|
) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | E>
|
|
376
385
|
<R, E, R1, E1>(
|
|
377
386
|
self: Router<R, E>,
|
|
378
387
|
path: PathInput,
|
|
379
|
-
handler: Route.Handler<R1, E1
|
|
388
|
+
handler: Route.Handler<R1, E1>,
|
|
389
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
380
390
|
): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E | E1>
|
|
381
391
|
} = internal.post
|
|
382
392
|
|
|
@@ -387,14 +397,16 @@ export const post: {
|
|
|
387
397
|
export const patch: {
|
|
388
398
|
<R1, E1>(
|
|
389
399
|
path: PathInput,
|
|
390
|
-
handler: Route.Handler<R1, E1
|
|
400
|
+
handler: Route.Handler<R1, E1>,
|
|
401
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
391
402
|
): <R, E>(
|
|
392
403
|
self: Router<R, E>
|
|
393
404
|
) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | E>
|
|
394
405
|
<R, E, R1, E1>(
|
|
395
406
|
self: Router<R, E>,
|
|
396
407
|
path: PathInput,
|
|
397
|
-
handler: Route.Handler<R1, E1
|
|
408
|
+
handler: Route.Handler<R1, E1>,
|
|
409
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
398
410
|
): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E | E1>
|
|
399
411
|
} = internal.patch
|
|
400
412
|
|
|
@@ -405,14 +417,16 @@ export const patch: {
|
|
|
405
417
|
export const put: {
|
|
406
418
|
<R1, E1>(
|
|
407
419
|
path: PathInput,
|
|
408
|
-
handler: Route.Handler<R1, E1
|
|
420
|
+
handler: Route.Handler<R1, E1>,
|
|
421
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
409
422
|
): <R, E>(
|
|
410
423
|
self: Router<R, E>
|
|
411
424
|
) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | E>
|
|
412
425
|
<R, E, R1, E1>(
|
|
413
426
|
self: Router<R, E>,
|
|
414
427
|
path: PathInput,
|
|
415
|
-
handler: Route.Handler<R1, E1
|
|
428
|
+
handler: Route.Handler<R1, E1>,
|
|
429
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
416
430
|
): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E | E1>
|
|
417
431
|
} = internal.put
|
|
418
432
|
|
|
@@ -423,14 +437,16 @@ export const put: {
|
|
|
423
437
|
export const del: {
|
|
424
438
|
<R1, E1>(
|
|
425
439
|
path: PathInput,
|
|
426
|
-
handler: Route.Handler<R1, E1
|
|
440
|
+
handler: Route.Handler<R1, E1>,
|
|
441
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
427
442
|
): <R, E>(
|
|
428
443
|
self: Router<R, E>
|
|
429
444
|
) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | E>
|
|
430
445
|
<R, E, R1, E1>(
|
|
431
446
|
self: Router<R, E>,
|
|
432
447
|
path: PathInput,
|
|
433
|
-
handler: Route.Handler<R1, E1
|
|
448
|
+
handler: Route.Handler<R1, E1>,
|
|
449
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
434
450
|
): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E | E1>
|
|
435
451
|
} = internal.del
|
|
436
452
|
|
|
@@ -441,14 +457,16 @@ export const del: {
|
|
|
441
457
|
export const head: {
|
|
442
458
|
<R1, E1>(
|
|
443
459
|
path: PathInput,
|
|
444
|
-
handler: Route.Handler<R1, E1
|
|
460
|
+
handler: Route.Handler<R1, E1>,
|
|
461
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
445
462
|
): <R, E>(
|
|
446
463
|
self: Router<R, E>
|
|
447
464
|
) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | E>
|
|
448
465
|
<R, E, R1, E1>(
|
|
449
466
|
self: Router<R, E>,
|
|
450
467
|
path: PathInput,
|
|
451
|
-
handler: Route.Handler<R1, E1
|
|
468
|
+
handler: Route.Handler<R1, E1>,
|
|
469
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
452
470
|
): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E | E1>
|
|
453
471
|
} = internal.head
|
|
454
472
|
|
|
@@ -459,14 +477,16 @@ export const head: {
|
|
|
459
477
|
export const options: {
|
|
460
478
|
<R1, E1>(
|
|
461
479
|
path: PathInput,
|
|
462
|
-
handler: Route.Handler<R1, E1
|
|
480
|
+
handler: Route.Handler<R1, E1>,
|
|
481
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
463
482
|
): <R, E>(
|
|
464
483
|
self: Router<R, E>
|
|
465
484
|
) => Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E1 | E>
|
|
466
485
|
<R, E, R1, E1>(
|
|
467
486
|
self: Router<R, E>,
|
|
468
487
|
path: PathInput,
|
|
469
|
-
handler: Route.Handler<R1, E1
|
|
488
|
+
handler: Route.Handler<R1, E1>,
|
|
489
|
+
options?: { readonly uninterruptible?: boolean | undefined } | undefined
|
|
470
490
|
): Router<R | Exclude<R1, RouteContext | ServerRequest.ServerRequest | Scope.Scope>, E | E1>
|
|
471
491
|
} = internal.options
|
|
472
492
|
|
package/src/Http/UrlParams.ts
CHANGED
|
@@ -36,8 +36,8 @@ export const fromInput = (input: Input): UrlParams => {
|
|
|
36
36
|
* @since 1.0.0
|
|
37
37
|
* @category schemas
|
|
38
38
|
*/
|
|
39
|
-
export const schema: Schema.Schema<UrlParams, ReadonlyArray<readonly [string, string]>> = Schema.
|
|
40
|
-
Schema.
|
|
39
|
+
export const schema: Schema.Schema<UrlParams, ReadonlyArray<readonly [string, string]>> = Schema.Array(
|
|
40
|
+
Schema.Tuple(Schema.String, Schema.String)
|
|
41
41
|
).pipe(
|
|
42
42
|
Schema.identifier("UrlParams")
|
|
43
43
|
)
|
package/src/Transferable.ts
CHANGED
|
@@ -93,8 +93,7 @@ export const schema: {
|
|
|
93
93
|
Schema.transformOrFail(
|
|
94
94
|
Schema.encodedSchema(self),
|
|
95
95
|
self,
|
|
96
|
-
ParseResult.succeed,
|
|
97
|
-
(i) => Effect.as(addAll(f(i)), i)
|
|
96
|
+
{ decode: ParseResult.succeed, encode: (i) => Effect.as(addAll(f(i)), i) }
|
|
98
97
|
))
|
|
99
98
|
|
|
100
99
|
/**
|
|
@@ -102,7 +101,7 @@ export const schema: {
|
|
|
102
101
|
* @category schema
|
|
103
102
|
*/
|
|
104
103
|
export const ImageData: Schema.Schema<ImageData> = schema(
|
|
105
|
-
Schema.
|
|
104
|
+
Schema.Any,
|
|
106
105
|
(_) => [(_ as ImageData).data.buffer]
|
|
107
106
|
)
|
|
108
107
|
|
|
@@ -111,7 +110,7 @@ export const ImageData: Schema.Schema<ImageData> = schema(
|
|
|
111
110
|
* @category schema
|
|
112
111
|
*/
|
|
113
112
|
export const MessagePort: Schema.Schema<MessagePort> = schema(
|
|
114
|
-
Schema.
|
|
113
|
+
Schema.Any,
|
|
115
114
|
(_) => [_ as MessagePort]
|
|
116
115
|
)
|
|
117
116
|
|
package/src/WorkerError.ts
CHANGED
|
@@ -26,14 +26,16 @@ export type WorkerErrorTypeId = typeof WorkerErrorTypeId
|
|
|
26
26
|
export const isWorkerError = (u: unknown): u is WorkerError => Predicate.hasProperty(u, WorkerErrorTypeId)
|
|
27
27
|
|
|
28
28
|
const causeDefectPretty: Schema.Schema<unknown> = Schema.transform(
|
|
29
|
-
Schema.
|
|
30
|
-
Schema.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
Schema.Unknown,
|
|
30
|
+
Schema.Unknown,
|
|
31
|
+
{
|
|
32
|
+
decode: identity,
|
|
33
|
+
encode: (defect) => {
|
|
34
|
+
if (Predicate.isObject(defect)) {
|
|
35
|
+
return Cause.pretty(Cause.die(defect))
|
|
36
|
+
}
|
|
37
|
+
return String(defect)
|
|
35
38
|
}
|
|
36
|
-
return String(defect)
|
|
37
39
|
}
|
|
38
40
|
)
|
|
39
41
|
|
|
@@ -42,7 +44,7 @@ const causeDefectPretty: Schema.Schema<unknown> = Schema.transform(
|
|
|
42
44
|
* @category errors
|
|
43
45
|
*/
|
|
44
46
|
export class WorkerError extends Schema.TaggedError<WorkerError>()("WorkerError", {
|
|
45
|
-
reason: Schema.
|
|
47
|
+
reason: Schema.Literal("spawn", "decode", "send", "unknown", "encode"),
|
|
46
48
|
error: causeDefectPretty
|
|
47
49
|
}) {
|
|
48
50
|
/**
|
|
@@ -56,7 +58,7 @@ export class WorkerError extends Schema.TaggedError<WorkerError>()("WorkerError"
|
|
|
56
58
|
static readonly Cause: Schema.Schema<
|
|
57
59
|
Cause.Cause<WorkerError>,
|
|
58
60
|
Schema.CauseEncoded<WorkerErrorFrom>
|
|
59
|
-
> = Schema.
|
|
61
|
+
> = Schema.Cause({ defect: causeDefectPretty, error: this })
|
|
60
62
|
|
|
61
63
|
/**
|
|
62
64
|
* @since 1.0.0
|